aboutsummaryrefslogtreecommitdiff
path: root/alacritty
diff options
context:
space:
mode:
authorRohan Poojary <rohanrp23@gmail.com>2020-09-06 21:08:49 +0530
committerGitHub <noreply@github.com>2020-09-06 15:38:49 +0000
commit1bf40a8cc77d9082dfb76e028e0f66af88d79958 (patch)
treece749ba8df89e8645b6184ee16827c3a0bd4b797 /alacritty
parent5ee7ae8a274fcc58754aa5a91a14b1dedbb87583 (diff)
downloadr-alacritty-1bf40a8cc77d9082dfb76e028e0f66af88d79958.tar.gz
r-alacritty-1bf40a8cc77d9082dfb76e028e0f66af88d79958.tar.bz2
r-alacritty-1bf40a8cc77d9082dfb76e028e0f66af88d79958.zip
Pass existing CLI parameters to SpawnNewInstance
Co-authored-by: Christian Duerr <contact@christianduerr.com>
Diffstat (limited to 'alacritty')
-rw-r--r--alacritty/src/event.rs22
1 files changed, 19 insertions, 3 deletions
diff --git a/alacritty/src/event.rs b/alacritty/src/event.rs
index c3e1b6c8..e81dc0f9 100644
--- a/alacritty/src/event.rs
+++ b/alacritty/src/event.rs
@@ -299,10 +299,11 @@ impl<'a, N: Notify + 'a, T: EventListener> input::ActionContext<T> for ActionCon
}
fn spawn_new_instance(&mut self) {
- let alacritty = env::args().next().unwrap();
+ let mut env_args = env::args();
+ let alacritty = env_args.next().unwrap();
#[cfg(unix)]
- let args = {
+ let mut args = {
// Use working directory of controlling process, or fallback to initial shell.
let mut pid = unsafe { libc::tcgetpgrp(tty::master_fd()) };
if pid < 0 {
@@ -314,12 +315,27 @@ impl<'a, N: Notify + 'a, T: EventListener> input::ActionContext<T> for ActionCon
#[cfg(target_os = "freebsd")]
let link_path = format!("/compat/linux/proc/{}/cwd", pid);
+ // Add the current working directory as parameter.
fs::read_link(link_path)
.map(|path| vec!["--working-directory".into(), path])
.unwrap_or_default()
};
+
#[cfg(not(unix))]
- let args: Vec<String> = Vec::new();
+ let mut args: Vec<PathBuf> = Vec::new();
+
+ let working_directory_set = !args.is_empty();
+
+ // Reuse the arguments passed to Alacritty for the new instance.
+ while let Some(arg) = env_args.next() {
+ // Drop working directory from existing parameters.
+ if working_directory_set && arg == "--working-directory" {
+ let _ = env_args.next();
+ continue;
+ }
+
+ args.push(arg.into());
+ }
start_daemon(&alacritty, &args);
}