Skip syntax parsing when color output disabled

This commit is contained in:
Ethan P. 2024-02-11 22:29:25 -08:00
parent c94cf4e14e
commit 25b5a41189
No known key found for this signature in database
GPG Key ID: 1BA2A0CC7C22B854
2 changed files with 23 additions and 3 deletions

View File

@ -22,6 +22,7 @@
- Pull in fix for unsafe-libyaml security advisory, see #2812 (@dtolnay) - Pull in fix for unsafe-libyaml security advisory, see #2812 (@dtolnay)
- Update git-version dependency to use Syn v2, see #2816 (@dtolnay) - Update git-version dependency to use Syn v2, see #2816 (@dtolnay)
- Update git2 dependency to v0.18.2, see #2852 (@eth-p) - Update git2 dependency to v0.18.2, see #2852 (@eth-p)
- Improve performance when color output disabled, see #2397 and #2857 (@eth-p)
## Syntaxes ## Syntaxes

View File

@ -9,6 +9,7 @@ use bytesize::ByteSize;
use syntect::easy::HighlightLines; use syntect::easy::HighlightLines;
use syntect::highlighting::Color; use syntect::highlighting::Color;
use syntect::highlighting::FontStyle;
use syntect::highlighting::Theme; use syntect::highlighting::Theme;
use syntect::parsing::SyntaxSet; use syntect::parsing::SyntaxSet;
@ -48,6 +49,22 @@ const ANSI_UNDERLINE_DISABLE: EscapeSequence = EscapeSequence::CSI {
final_byte: "m", final_byte: "m",
}; };
const EMPTY_SYNTECT_STYLE: syntect::highlighting::Style = syntect::highlighting::Style {
foreground: Color {
r: 127,
g: 127,
b: 127,
a: 255,
},
background: Color {
r: 127,
g: 127,
b: 127,
a: 255,
},
font_style: FontStyle::empty(),
};
pub enum OutputHandle<'a> { pub enum OutputHandle<'a> {
IoWrite(&'a mut dyn io::Write), IoWrite(&'a mut dyn io::Write),
FmtWrite(&'a mut dyn fmt::Write), FmtWrite(&'a mut dyn fmt::Write),
@ -222,11 +239,13 @@ impl<'a> InteractivePrinter<'a> {
panel_width = 0; panel_width = 0;
} }
let highlighter_from_set = if input // Get the highlighter for the output.
let is_printing_binary = input
.reader .reader
.content_type .content_type
.map_or(false, |c| c.is_binary() && !config.show_nonprintable) .map_or(false, |c| c.is_binary() && !config.show_nonprintable);
{
let highlighter_from_set = if is_printing_binary || config.colored_output == false {
None None
} else { } else {
// Determine the type of syntax for highlighting // Determine the type of syntax for highlighting