Fixed issue when the first file specified as an argument was a relative directory (#8520)
This commit is contained in:
parent
fc16449efe
commit
e6d2835b09
4 changed files with 17 additions and 5 deletions
|
@ -162,8 +162,7 @@ impl Application {
|
|||
// Unset path to prevent accidentally saving to the original tutor file.
|
||||
doc_mut!(editor).set_path(None);
|
||||
} else if !args.files.is_empty() {
|
||||
let first = &args.files[0].0; // we know it's not empty
|
||||
if first.is_dir() {
|
||||
if args.open_cwd {
|
||||
// NOTE: The working directory is already set to args.files[0] in main()
|
||||
editor.new_file(Action::VerticalSplit);
|
||||
let picker = ui::file_picker(".".into(), &config.load().editor);
|
||||
|
|
|
@ -17,6 +17,7 @@ pub struct Args {
|
|||
pub log_file: Option<PathBuf>,
|
||||
pub config_file: Option<PathBuf>,
|
||||
pub files: Vec<(PathBuf, Position)>,
|
||||
pub open_cwd: bool,
|
||||
pub working_directory: Option<PathBuf>,
|
||||
}
|
||||
|
||||
|
|
|
@ -76,7 +76,7 @@ FLAGS:
|
|||
helix_loader::default_log_file().display(),
|
||||
);
|
||||
|
||||
let args = Args::parse_args().context("could not parse arguments")?;
|
||||
let mut args = Args::parse_args().context("could not parse arguments")?;
|
||||
|
||||
helix_loader::initialize_config_file(args.config_file.clone());
|
||||
helix_loader::initialize_log_file(args.log_file.clone());
|
||||
|
@ -118,10 +118,14 @@ FLAGS:
|
|||
|
||||
// NOTE: Set the working directory early so the correct configuration is loaded. Be aware that
|
||||
// Application::new() depends on this logic so it must be updated if this changes.
|
||||
if let Some((path, true)) = args.files.first().map(|(path, _)| (path, path.is_dir())) {
|
||||
if let Some(path) = &args.working_directory {
|
||||
helix_loader::set_current_working_dir(path)?;
|
||||
} else if let Some(path) = &args.working_directory {
|
||||
}
|
||||
|
||||
// If the first file is a directory, it will be the working directory and a file picker will be opened
|
||||
if let Some((path, _)) = args.files.first().filter(|p| p.0.is_dir()) {
|
||||
helix_loader::set_current_working_dir(path)?;
|
||||
args.open_cwd = true; // Signal Application that we want to open the picker on "."
|
||||
}
|
||||
|
||||
let config = match Config::load_default() {
|
||||
|
|
|
@ -320,6 +320,14 @@ impl AppBuilder {
|
|||
}
|
||||
|
||||
pub fn build(self) -> anyhow::Result<Application> {
|
||||
if let Some(path) = &self.args.working_directory {
|
||||
bail!("Changing the working directory to {path:?} is not yet supported for integration tests");
|
||||
}
|
||||
|
||||
if let Some((path, _)) = self.args.files.first().filter(|p| p.0.is_dir()) {
|
||||
bail!("Having the directory {path:?} in args.files[0] is not yet supported for integration tests");
|
||||
}
|
||||
|
||||
let mut app = Application::new(self.args, self.config, self.syn_conf)?;
|
||||
|
||||
if let Some((text, selection)) = self.input {
|
||||
|
|
Loading…
Add table
Reference in a new issue