mirror of https://github.com/helix-editor/helix
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 outputpull/8473/head
parent
1756ba4436
commit
75c0a5ceb3
|
@ -156,6 +156,9 @@ impl Application {
|
||||||
let editor_view = Box::new(ui::EditorView::new(Keymaps::new(keys)));
|
let editor_view = Box::new(ui::EditorView::new(Keymaps::new(keys)));
|
||||||
compositor.push(editor_view);
|
compositor.push(editor_view);
|
||||||
|
|
||||||
|
if let Some(path) = args.working_directory {
|
||||||
|
helix_loader::set_current_working_dir(path)?
|
||||||
|
}
|
||||||
if args.load_tutor {
|
if args.load_tutor {
|
||||||
let path = helix_loader::runtime_file(Path::new("tutor"));
|
let path = helix_loader::runtime_file(Path::new("tutor"));
|
||||||
editor.open(&path, Action::VerticalSplit)?;
|
editor.open(&path, Action::VerticalSplit)?;
|
||||||
|
|
|
@ -17,6 +17,7 @@ pub struct Args {
|
||||||
pub log_file: Option<PathBuf>,
|
pub log_file: Option<PathBuf>,
|
||||||
pub config_file: Option<PathBuf>,
|
pub config_file: Option<PathBuf>,
|
||||||
pub files: Vec<(PathBuf, Position)>,
|
pub files: Vec<(PathBuf, Position)>,
|
||||||
|
pub working_directory: Option<PathBuf>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Args {
|
impl Args {
|
||||||
|
@ -59,6 +60,20 @@ impl Args {
|
||||||
Some(path) => args.log_file = Some(path.into()),
|
Some(path) => args.log_file = Some(path.into()),
|
||||||
None => anyhow::bail!("--log must specify a path to write"),
|
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("--") => {
|
arg if arg.starts_with("--") => {
|
||||||
anyhow::bail!("unexpected double dash argument: {}", arg)
|
anyhow::bail!("unexpected double dash argument: {}", arg)
|
||||||
}
|
}
|
||||||
|
|
|
@ -66,6 +66,7 @@ FLAGS:
|
||||||
-V, --version Prints version information
|
-V, --version Prints version information
|
||||||
--vsplit Splits all given files vertically into different windows
|
--vsplit Splits all given files vertically into different windows
|
||||||
--hsplit Splits all given files horizontally 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"),
|
env!("CARGO_PKG_NAME"),
|
||||||
VERSION_AND_GIT_HASH,
|
VERSION_AND_GIT_HASH,
|
||||||
|
|
Loading…
Reference in New Issue