diff options
author | Dustin <dustin1114@gmail.com> | 2019-10-14 13:50:58 -0400 |
---|---|---|
committer | Christian Duerr <contact@christianduerr.com> | 2019-10-14 19:50:58 +0200 |
commit | 401c2aab964b60e8c3b072e5098ba8e366d04944 (patch) | |
tree | 8b8fb2f11a93ebb3e59dedb41e01a89f30791455 /alacritty/src/cli.rs | |
parent | 3475e449870b382cda4ea6d48f980577cd8c929e (diff) | |
download | r-alacritty-401c2aab964b60e8c3b072e5098ba8e366d04944.tar.gz r-alacritty-401c2aab964b60e8c3b072e5098ba8e366d04944.tar.bz2 r-alacritty-401c2aab964b60e8c3b072e5098ba8e366d04944.zip |
Add support for title stack escape sequences
This commit adds the concept of a "title stack" to the terminal. Some programs
(e.g. vim) send control sequences `CSI 22 ; 0` (push title) and `CSI 23 ; 0`
(pop title).
The title stack is just a history of previous titles. Applications can push
the current title onto the stack, and pop it back off (setting the window title
in the process).
Fixes #2840.
Diffstat (limited to 'alacritty/src/cli.rs')
-rw-r--r-- | alacritty/src/cli.rs | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/alacritty/src/cli.rs b/alacritty/src/cli.rs index 99387a61..b0e3cc94 100644 --- a/alacritty/src/cli.rs +++ b/alacritty/src/cli.rs @@ -266,9 +266,12 @@ impl Options { config.window.dimensions = self.dimensions.unwrap_or(config.window.dimensions); config.window.position = self.position.or(config.window.position); - config.window.title = self.title.or(config.window.title); config.window.embed = self.embed.and_then(|embed| embed.parse().ok()); + if let Some(title) = self.title { + config.window.title = title.clone(); + } + if let Some(class) = self.class { let parts: Vec<_> = class.split(',').collect(); config.window.class.instance = parts[0].into(); @@ -277,7 +280,7 @@ impl Options { } } - config.set_dynamic_title(config.dynamic_title() && config.window.title.is_none()); + config.set_dynamic_title(config.dynamic_title() && config.window.title == DEFAULT_NAME); config.debug.print_events = self.print_events || config.debug.print_events; config.debug.log_level = max(config.debug.log_level, self.log_level); @@ -298,7 +301,8 @@ mod test { #[test] fn dynamic_title_ignoring_options_by_default() { - let config = Config::default(); + let mut config = Config::default(); + config.window.title = "Alacritty".to_string(); let old_dynamic_title = config.dynamic_title(); let config = Options::default().into_config(config); @@ -321,7 +325,7 @@ mod test { fn dynamic_title_overridden_by_config() { let mut config = Config::default(); - config.window.title = Some("foo".to_owned()); + config.window.title = "foo".to_owned(); let config = Options::default().into_config(config); assert!(!config.dynamic_title()); |