Add +N CLI argument to jump to first file's line number (#8521)

* Accept +num flag for opening at line number

* Update +N argument feature according to feedback in original PR #5603

* Only override the line number of the first file if +N is specified

---------

Co-authored-by: Nachum Barcohen <38861757+nabaco@users.noreply.github.com>
This commit is contained in:
Bjorn Ove Hay Andersen 2023-10-12 10:35:43 +02:00 committed by GitHub
parent 1852292451
commit 07a006d1d5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 15 additions and 0 deletions

View file

@ -24,6 +24,7 @@ impl Args {
pub fn parse_args() -> Result<Args> {
let mut args = Args::default();
let mut argv = std::env::args().peekable();
let mut line_number = 0;
argv.next(); // skip the program, we don't care about that
@ -88,6 +89,13 @@ impl Args {
}
}
}
arg if arg.starts_with('+') => {
let arg = &arg[1..];
line_number = match arg.parse::<usize>() {
Ok(n) => n.saturating_sub(1),
_ => anyhow::bail!("bad line number after +"),
};
}
arg => args.files.push(parse_file(arg)),
}
}
@ -97,6 +105,12 @@ impl Args {
args.files.push(parse_file(&arg));
}
if let Some(file) = args.files.first_mut() {
if line_number != 0 {
file.1.row = line_number;
}
}
Ok(args)
}
}

View file

@ -67,6 +67,7 @@ FLAGS:
--vsplit Splits all given files vertically into different windows
--hsplit Splits all given files horizontally into different windows
-w, --working-dir <path> Specify an initial working directory
+N Open the first given file at line number N
",
env!("CARGO_PKG_NAME"),
VERSION_AND_GIT_HASH,