diff --git a/helix-term/src/args.rs b/helix-term/src/args.rs index 0b1c9cde0..b0f9edff2 100644 --- a/helix-term/src/args.rs +++ b/helix-term/src/args.rs @@ -95,13 +95,23 @@ pub fn parse_args() -> Result { _ => args.files.push(parse_file(arg)), }; } - arg => args.files.push(parse_file(arg)), + arg => { + let file = parse_file(arg); + + if is_proper_file(&file) { + args.files.push(file) + } + } } } // push the remaining args, if any to the files for arg in argv { - args.files.push(parse_file(&arg)); + let file = parse_file(&arg); + + if is_proper_file(&file) { + args.files.push(file); + } } if let Some(file) = args.files.first_mut() { @@ -125,6 +135,11 @@ pub(crate) fn parse_file(s: &str) -> (PathBuf, Position) { .unwrap_or_else(def) } +/// Ensure file is not a pipe or random +fn is_proper_file(f: &(PathBuf, Position)) -> bool { + f.0.is_file() || f.0.is_symlink() +} + /// Split file.rs:10:2 into [`PathBuf`], row and col. /// /// Does not validate if file.rs is a file or directory.