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.rs37
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))
-}