aboutsummaryrefslogtreecommitdiff
path: root/alacritty/src/cli.rs
diff options
context:
space:
mode:
authorDustin <dustin1114@gmail.com>2019-10-14 13:50:58 -0400
committerChristian Duerr <contact@christianduerr.com>2019-10-14 19:50:58 +0200
commit401c2aab964b60e8c3b072e5098ba8e366d04944 (patch)
tree8b8fb2f11a93ebb3e59dedb41e01a89f30791455 /alacritty/src/cli.rs
parent3475e449870b382cda4ea6d48f980577cd8c929e (diff)
downloadr-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.rs12
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());