diff options
author | Bjorn Ove Hay Andersen | 2023-10-12 08:35:43 +0000 |
---|---|---|
committer | GitHub | 2023-10-12 08:35:43 +0000 |
commit | 07a006d1d5270e81c57bbc0e712614741d3b31a7 (patch) | |
tree | 24b1f853408a4d5c1bf4be8bdb224774a0ed18ac | |
parent | 1852292451d984de33ea526b3b7dc7f51c6130eb (diff) |
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>
-rw-r--r-- | helix-term/src/args.rs | 14 | ||||
-rw-r--r-- | helix-term/src/main.rs | 1 |
2 files changed, 15 insertions, 0 deletions
diff --git a/helix-term/src/args.rs b/helix-term/src/args.rs index f782539c..6a49889b 100644 --- a/helix-term/src/args.rs +++ b/helix-term/src/args.rs @@ -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) } } diff --git a/helix-term/src/main.rs b/helix-term/src/main.rs index ed3478ac..8db5f310 100644 --- a/helix-term/src/main.rs +++ b/helix-term/src/main.rs @@ -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, |