enable starting hx with a working directory (#8223)
* added working path arg to cli and help menu * improve working path cli arg handling * enable hx to set the working path * applied cargo formatting * improved code from cargo clippy suggestion * improved code from follow up review * fix for -w <path> is set but args.files is empty * improved formatting of --help output
This commit is contained in:
parent
1756ba4436
commit
75c0a5ceb3
3 changed files with 19 additions and 0 deletions
|
@ -156,6 +156,9 @@ impl Application {
|
|||
let editor_view = Box::new(ui::EditorView::new(Keymaps::new(keys)));
|
||||
compositor.push(editor_view);
|
||||
|
||||
if let Some(path) = args.working_directory {
|
||||
helix_loader::set_current_working_dir(path)?
|
||||
}
|
||||
if args.load_tutor {
|
||||
let path = helix_loader::runtime_file(Path::new("tutor"));
|
||||
editor.open(&path, Action::VerticalSplit)?;
|
||||
|
|
|
@ -17,6 +17,7 @@ pub struct Args {
|
|||
pub log_file: Option<PathBuf>,
|
||||
pub config_file: Option<PathBuf>,
|
||||
pub files: Vec<(PathBuf, Position)>,
|
||||
pub working_directory: Option<PathBuf>,
|
||||
}
|
||||
|
||||
impl Args {
|
||||
|
@ -59,6 +60,20 @@ impl Args {
|
|||
Some(path) => args.log_file = Some(path.into()),
|
||||
None => anyhow::bail!("--log must specify a path to write"),
|
||||
},
|
||||
"-w" | "--working-dir" => match argv.next().as_deref() {
|
||||
Some(path) => {
|
||||
args.working_directory = if Path::new(path).is_dir() {
|
||||
Some(PathBuf::from(path))
|
||||
} else {
|
||||
anyhow::bail!(
|
||||
"--working-dir specified does not exist or is not a directory"
|
||||
)
|
||||
}
|
||||
}
|
||||
None => {
|
||||
anyhow::bail!("--working-dir must specify an initial working directory")
|
||||
}
|
||||
},
|
||||
arg if arg.starts_with("--") => {
|
||||
anyhow::bail!("unexpected double dash argument: {}", arg)
|
||||
}
|
||||
|
|
|
@ -66,6 +66,7 @@ FLAGS:
|
|||
-V, --version Prints version information
|
||||
--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
|
||||
",
|
||||
env!("CARGO_PKG_NAME"),
|
||||
VERSION_AND_GIT_HASH,
|
||||
|
|
Loading…
Reference in a new issue