diff options
author | Ethan P <eth-p+git@hidden.email> | 2023-04-16 20:18:40 -0700 |
---|---|---|
committer | Ethan P. <eth-p+git@hidden.email> | 2024-02-09 22:09:39 -0800 |
commit | 054421268fff33003b892eb7bcef1a831c6c308d (patch) | |
tree | aa4a4f09b57b7a1831f3b53fef7da205f08e1f35 /src/printer.rs | |
parent | 414403b062ac644ee2b569870f66de49999f9dd3 (diff) |
Strip OSC sequences before printing
This commit strips OSC (Operating System Command) sequences before
printing lines. Eventually when time permits, I want to add back
support for printing OSC sequences (and improve it to treat hyperlinks
like an attribute).
Until then, this should help prevent garbled output :)
Diffstat (limited to 'src/printer.rs')
-rw-r--r-- | src/printer.rs | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/printer.rs b/src/printer.rs index 257cc766..45fd5336 100644 --- a/src/printer.rs +++ b/src/printer.rs @@ -33,7 +33,7 @@ use crate::line_range::RangeCheckResult; use crate::preprocessor::{expand_tabs, replace_nonprintable}; use crate::style::StyleComponent; use crate::terminal::{as_terminal_escaped, to_ansi_color}; -use crate::vscreen::AnsiStyle; +use crate::vscreen::{strip_problematic_sequences, AnsiStyle}; use crate::wrapping::WrappingMode; pub enum OutputHandle<'a> { @@ -581,7 +581,8 @@ impl<'a> Printer for InteractivePrinter<'a> { let italics = self.config.use_italic_text; for &(style, region) in ®ions { - let ansi_iterator = AnsiCodeIterator::new(region); + let text = strip_problematic_sequences(region); + let ansi_iterator = AnsiCodeIterator::new(&text); for chunk in ansi_iterator { match chunk { // ANSI escape passthrough. @@ -634,7 +635,8 @@ impl<'a> Printer for InteractivePrinter<'a> { } } else { for &(style, region) in ®ions { - let ansi_iterator = AnsiCodeIterator::new(region); + let text = strip_problematic_sequences(region); + let ansi_iterator = AnsiCodeIterator::new(&text); for chunk in ansi_iterator { match chunk { // ANSI escape passthrough. |