From 30efb09f933b9c71b82807fd8cde2620894698d2 Mon Sep 17 00:00:00 2001 From: Sergio Ribera Date: Sun, 24 Apr 2022 22:09:26 -0400 Subject: [PATCH] automatic add -p parametter to nvim args if tabs enabled --- src/bridge/mod.rs | 6 ------ src/cmd_line.rs | 39 +++++++++++++++++++++++++-------------- 2 files changed, 25 insertions(+), 20 deletions(-) diff --git a/src/bridge/mod.rs b/src/bridge/mod.rs index 7c2cfca..2944479 100644 --- a/src/bridge/mod.rs +++ b/src/bridge/mod.rs @@ -86,12 +86,6 @@ async fn start_neovim_runtime() { start_ui_command_handler(nvim.clone()); - // Open the files into new tabs - for file in settings.target_files.iter().skip(1) { - nvim.command(format!("tabnew {}", file).as_str()) - .await - .unwrap_or_explained_panic("Could not create new tab"); - } SETTINGS.read_initial_values(&nvim).await; SETTINGS.setup_changed_listeners(&nvim).await; diff --git a/src/cmd_line.rs b/src/cmd_line.rs index 7cfd79d..211d9aa 100644 --- a/src/cmd_line.rs +++ b/src/cmd_line.rs @@ -22,8 +22,8 @@ pub struct CmdLineSettings { pub neovim_bin: Option, pub wayland_app_id: String, pub x11_wm_class: String, - // Command-line arguments with multiple files - pub target_files: Vec, + // Disable open multiple files as tabs + pub no_tabs: bool, } impl Default for CmdLineSettings { @@ -47,8 +47,8 @@ impl Default for CmdLineSettings { neovim_bin: None, wayland_app_id: String::new(), x11_wm_class: String::new(), - // Command-line arguments with multiple files - target_files: vec![], + // Disable open multiple files as tabs + no_tabs: false, } } } @@ -89,6 +89,11 @@ pub fn handle_command_line_arguments(args: Vec) -> Result<(), String> { .long("nofork") .help("Do not detach process from terminal"), ) + .arg( + Arg::with_name("no_tabs") + .long("notabs") + .help("Disable open multiple files as tabs"), + ) .arg( Arg::with_name("remote_tcp") .long("remote-tcp") @@ -152,12 +157,20 @@ pub fn handle_command_line_arguments(args: Vec) -> Result<(), String> { .values_of("neovim_args") .map(|opt| opt.map(|v| v.to_owned()).collect()) .unwrap_or_default(); - neovim_args.extend::>( - matches - .values_of("files_to_open") - .map(|opt| opt.map(|v| v.to_owned()).collect()) - .unwrap_or_default(), - ); + + let files_to_open: Vec = matches + .values_of("files_to_open") + .map(|opt| opt.map(|v| v.to_owned()).collect()) + .unwrap_or_default(); + + if files_to_open.len() > 1 + && !files_to_open.contains(&String::from("-p")) + && !matches.is_present("no_tabs") + { + neovim_args.push("-p".to_owned()); + } + + neovim_args.extend::>(files_to_open); /* * Integrate Environment Variables as Defaults to the command-line ones. @@ -201,10 +214,8 @@ pub fn handle_command_line_arguments(args: Vec) -> Result<(), String> { .map(|v| v.to_owned()) .or_else(|| std::env::var("NEOVIDE_X11_WM_CLASS").ok()) .unwrap_or_else(|| "neovide".to_owned()), - target_files: matches - .values_of("files_to_open") - .map(|opt| opt.map(|v| v.to_owned()).collect()) - .unwrap_or_default(), + // Disable open multiple files as tabs + no_tabs: matches.is_present("no_tabs") || std::env::var("NEOVIDE_NO_TABS").is_ok(), }); Ok(()) }