summaryrefslogtreecommitdiffstats
path: root/src/printer.rs
diff options
context:
space:
mode:
authorEthan P <eth-p+git@hidden.email>2023-04-16 20:18:40 -0700
committerEthan P. <eth-p+git@hidden.email>2024-02-09 22:09:39 -0800
commit054421268fff33003b892eb7bcef1a831c6c308d (patch)
treeaa4a4f09b57b7a1831f3b53fef7da205f08e1f35 /src/printer.rs
parent414403b062ac644ee2b569870f66de49999f9dd3 (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.rs8
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 &regions {
- 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 &regions {
- 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.