From ed91eb365e8e24b0ef64351235ab3f8022a8e7b3 Mon Sep 17 00:00:00 2001 From: Wesley Gahr Date: Sun, 24 Dec 2017 19:24:28 +0100 Subject: [PATCH] Adding dynamic_title property to configuration (#819) This logic is applied in Term's ansi::Handler implementation to avoid unnecessary allocations. --- alacritty.yml | 2 ++ alacritty_macos.yml | 2 ++ src/config.rs | 10 ++++++++++ src/term/mod.rs | 8 +++++++- 4 files changed, 21 insertions(+), 1 deletion(-) diff --git a/alacritty.yml b/alacritty.yml index ed4e83fa..bf9451c7 100644 --- a/alacritty.yml +++ b/alacritty.yml @@ -204,6 +204,8 @@ mouse: selection: semantic_escape_chars: ",│`|:\"' ()[]{}<>" +dynamic_title: true + hide_cursor_when_typing: false # Style of the cursor diff --git a/alacritty_macos.yml b/alacritty_macos.yml index 0c988a3e..b2b76781 100644 --- a/alacritty_macos.yml +++ b/alacritty_macos.yml @@ -185,6 +185,8 @@ mouse: selection: semantic_escape_chars: ",│`|:\"' ()[]{}<>" +dynamic_title: true + hide_cursor_when_typing: false # Style of the cursor diff --git a/src/config.rs b/src/config.rs index 7d3fa16f..b941c882 100644 --- a/src/config.rs +++ b/src/config.rs @@ -307,6 +307,10 @@ pub struct Config { #[serde(default)] visual_bell: VisualBellConfig, + /// Use dynamic title + #[serde(default="true_bool")] + dynamic_title: bool, + /// Hide cursor when typing #[serde(default)] hide_cursor_when_typing: bool, @@ -371,6 +375,7 @@ impl Default for Config { env: Default::default(), hide_cursor_when_typing: Default::default(), cursor_style: Default::default(), + dynamic_title: Default::default(), live_config_reload: true, window: Default::default(), } @@ -1240,6 +1245,11 @@ impl Config { self.live_config_reload } + #[inline] + pub fn dynamic_title(&self) -> bool { + self.dynamic_title + } + pub fn load_from>(path: P) -> Result { let path = path.into(); let raw = Config::read_file(path.as_path())?; diff --git a/src/term/mod.rs b/src/term/mod.rs index 571686c1..98e08e6c 100644 --- a/src/term/mod.rs +++ b/src/term/mod.rs @@ -703,6 +703,8 @@ pub struct Term { /// Default style for resetting the cursor default_cursor_style: CursorStyle, + + dynamic_title: bool, } /// Terminal size info @@ -806,6 +808,7 @@ impl Term { semantic_escape_chars: config.selection().semantic_escape_chars.clone(), cursor_style: None, default_cursor_style: config.cursor_style(), + dynamic_title: config.dynamic_title(), } } @@ -831,6 +834,7 @@ impl Term { } self.visual_bell.update_config(config); self.default_cursor_style = config.cursor_style(); + self.dynamic_title = config.dynamic_title(); } #[inline] @@ -1159,7 +1163,9 @@ impl ansi::Handler for Term { /// Set the window title #[inline] fn set_title(&mut self, title: &str) { - self.next_title = Some(title.to_owned()); + if self.dynamic_title { + self.next_title = Some(title.to_owned()); + } } /// A character to be displayed