aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAram Drevekenin <aram@poor.dev>2020-11-09 18:53:22 +0100
committerGitHub <noreply@github.com>2020-11-09 18:53:22 +0100
commitb876843adfd5338c412a1a6178084bd488642961 (patch)
tree2d4897f240066acfefab9318867ff0d9a4077238 /src
parentfix(compatibility): do not break starship multiline prompt (#30) (diff)
downloadsl0ppij-b876843adfd5338c412a1a6178084bd488642961.tar.gz
sl0ppij-b876843adfd5338c412a1a6178084bd488642961.tar.xz
sl0ppij-b876843adfd5338c412a1a6178084bd488642961.zip
fix(colors): send full style reset in diff (#32)
Diffstat (limited to 'src')
-rw-r--r--src/terminal_pane/terminal_character.rs26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/terminal_pane/terminal_character.rs b/src/terminal_pane/terminal_character.rs
index dd45a7af..53418306 100644
--- a/src/terminal_pane/terminal_character.rs
+++ b/src/terminal_pane/terminal_character.rs
@@ -153,6 +153,32 @@ impl CharacterStyles {
}
pub fn update_and_return_diff(&mut self, new_styles: &CharacterStyles) -> Option<CharacterStyles> {
let mut diff: Option<CharacterStyles> = None;
+
+ if new_styles.foreground == Some(AnsiCode::Reset) &&
+ new_styles.background == Some(AnsiCode::Reset) &&
+ new_styles.strike == Some(AnsiCode::Reset) &&
+ new_styles.hidden == Some(AnsiCode::Reset) &&
+ new_styles.reverse == Some(AnsiCode::Reset) &&
+ new_styles.fast_blink == Some(AnsiCode::Reset) &&
+ new_styles.slow_blink == Some(AnsiCode::Reset) &&
+ new_styles.underline == Some(AnsiCode::Reset) &&
+ new_styles.bold == Some(AnsiCode::Reset) &&
+ new_styles.dim == Some(AnsiCode::Reset) &&
+ new_styles.italic == Some(AnsiCode::Reset) {
+ self.foreground = Some(AnsiCode::Reset);
+ self.background = Some(AnsiCode::Reset);
+ self.strike = Some(AnsiCode::Reset);
+ self.hidden = Some(AnsiCode::Reset);
+ self.reverse = Some(AnsiCode::Reset);
+ self.fast_blink = Some(AnsiCode::Reset);
+ self.slow_blink = Some(AnsiCode::Reset);
+ self.underline = Some(AnsiCode::Reset);
+ self.bold = Some(AnsiCode::Reset);
+ self.dim = Some(AnsiCode::Reset);
+ self.italic = Some(AnsiCode::Reset);
+ return Some(*new_styles)
+ };
+
if self.foreground != new_styles.foreground {
if let Some(new_diff) = diff.as_mut() {
diff = Some(new_diff.foreground(new_styles.foreground));