Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'helix-term/src/args.rs')
| -rw-r--r-- | helix-term/src/args.rs | 37 |
1 files changed, 2 insertions, 35 deletions
diff --git a/helix-term/src/args.rs b/helix-term/src/args.rs index b99c7d1a..e1f0d9a7 100644 --- a/helix-term/src/args.rs +++ b/helix-term/src/args.rs @@ -1,6 +1,7 @@ use anyhow::Result; use helix_core::Position; -use std::path::{Path, PathBuf}; +use helix_view::args::parse_file; +use std::path::PathBuf; #[derive(Default)] pub struct Args { @@ -65,37 +66,3 @@ impl Args { Ok(args) } } - -/// Parse arg into [`PathBuf`] and position. -pub(crate) fn parse_file(s: &str) -> (PathBuf, Position) { - let def = || (PathBuf::from(s), Position::default()); - if Path::new(s).exists() { - return def(); - } - split_path_row_col(s) - .or_else(|| split_path_row(s)) - .unwrap_or_else(def) -} - -/// Split file.rs:10:2 into [`PathBuf`], row and col. -/// -/// Does not validate if file.rs is a file or directory. -fn split_path_row_col(s: &str) -> Option<(PathBuf, Position)> { - let mut s = s.rsplitn(3, ':'); - let col: usize = s.next()?.parse().ok()?; - let row: usize = s.next()?.parse().ok()?; - let path = s.next()?.into(); - let pos = Position::new(row.saturating_sub(1), col.saturating_sub(1)); - Some((path, pos)) -} - -/// Split file.rs:10 into [`PathBuf`] and row. -/// -/// Does not validate if file.rs is a file or directory. -fn split_path_row(s: &str) -> Option<(PathBuf, Position)> { - let (path, row) = s.rsplit_once(':')?; - let row: usize = row.parse().ok()?; - let path = path.into(); - let pos = Position::new(row.saturating_sub(1), 0); - Some((path, pos)) -} |