Adding dynamic_title property to configuration (#819)

This logic is applied in Term's ansi::Handler implementation
to avoid unnecessary allocations.
This commit is contained in:
Wesley Gahr 2017-12-24 19:24:28 +01:00 committed by Joe Wilm
parent 4fb2109497
commit ed91eb365e
4 changed files with 21 additions and 1 deletions

View File

@ -204,6 +204,8 @@ mouse:
selection:
semantic_escape_chars: ",│`|:\"' ()[]{}<>"
dynamic_title: true
hide_cursor_when_typing: false
# Style of the cursor

View File

@ -185,6 +185,8 @@ mouse:
selection:
semantic_escape_chars: ",│`|:\"' ()[]{}<>"
dynamic_title: true
hide_cursor_when_typing: false
# Style of the cursor

View File

@ -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<P: Into<PathBuf>>(path: P) -> Result<Config> {
let path = path.into();
let raw = Config::read_file(path.as_path())?;

View File

@ -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