From 319ab779ee6bc8954e7beb2ae34c43d9f327322e Mon Sep 17 00:00:00 2001 From: sharkdp Date: Wed, 22 Apr 2020 08:56:07 +0200 Subject: [PATCH] Use 4-bit ANSI codes for base16 theme closes #865 --- assets/themes.bin | Bin 16785 -> 16882 bytes assets/themes/base16.tmTheme | 118 +++++++++++++++++------------------ src/terminal.rs | 26 +++++++- 3 files changed, 83 insertions(+), 61 deletions(-) diff --git a/assets/themes.bin b/assets/themes.bin index 484b3fbc03cac8f680b6c95aaa59fcd8b0c76ad1..1186d8b9741bb34ff654cc739d84b8bb813526f2 100644 GIT binary patch literal 16882 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 YgitNQjgy0TS!v7}M+lsM0~L}AvES{Fb^rhX diff --git a/assets/themes/base16.tmTheme b/assets/themes/base16.tmTheme index eff2eba4..bb8e6a80 100644 --- a/assets/themes/base16.tmTheme +++ b/assets/themes/base16.tmTheme @@ -3,8 +3,8 @@ author @@ -19,21 +19,21 @@ settings background - #00000000 + #0000000f caret - #07000000 + #0700000f foreground - #07000000 + #0700000f invisibles - #08000000 + #0800000f lineHighlight - #08000000 + #0800000f selection - #0b000000 + #0b00000f gutter - #0a000000 + #0a00000f gutterForeground - #08000000 + #0800000f @@ -44,7 +44,7 @@ settings foreground - #07000000 + #0700000f @@ -55,7 +55,7 @@ settings foreground - #08000000 + #0800000f @@ -66,7 +66,7 @@ settings foreground - #07000000 + #0700000f @@ -77,7 +77,7 @@ settings foreground - #07000000 + #0700000f @@ -88,7 +88,7 @@ settings foreground - #07000000 + #0700000f @@ -99,7 +99,7 @@ settings foreground - #05000000 + #0500000f @@ -110,7 +110,7 @@ settings foreground - #07000000 + #0700000f @@ -121,7 +121,7 @@ settings foreground - #04000000 + #0400000f @@ -132,7 +132,7 @@ settings foreground - #0e000000 + #0e00000f @@ -143,7 +143,7 @@ settings foreground - #03000000 + #0300000f @@ -154,7 +154,7 @@ settings foreground - #0f000000 + #0f00000f @@ -165,7 +165,7 @@ settings foreground - #04000000 + #0400000f @@ -176,7 +176,7 @@ settings foreground - #05000000 + #0500000f @@ -187,7 +187,7 @@ settings foreground - #06000000 + #0600000f @@ -198,7 +198,7 @@ settings foreground - #02000000 + #0200000f @@ -209,7 +209,7 @@ settings foreground - #09000000 + #0900000f @@ -220,7 +220,7 @@ settings foreground - #09000000 + #0900000f @@ -231,7 +231,7 @@ settings foreground - #09000000 + #0900000f @@ -242,7 +242,7 @@ settings foreground - #09000000 + #0900000f @@ -253,7 +253,7 @@ settings foreground - #01000000 + #0100000f @@ -264,7 +264,7 @@ settings foreground - #09000000 + #0900000f @@ -275,7 +275,7 @@ settings foreground - #04000000 + #0400000f @@ -286,7 +286,7 @@ settings foreground - #05000000 + #0500000f @@ -297,7 +297,7 @@ settings foreground - #09000000 + #0900000f @@ -310,7 +310,7 @@ fontStyle foreground - #04000000 + #0400000f @@ -321,7 +321,7 @@ settings foreground - #09000000 + #0900000f @@ -334,7 +334,7 @@ fontStyle bold foreground - #03000000 + #0300000f @@ -347,7 +347,7 @@ fontStyle italic foreground - #05000000 + #0500000f @@ -358,7 +358,7 @@ settings foreground - #02000000 + #0200000f @@ -369,7 +369,7 @@ settings foreground - #01000000 + #0100000f @@ -380,7 +380,7 @@ settings foreground - #09000000 + #0900000f @@ -391,7 +391,7 @@ settings foreground - #09000000 + #0900000f @@ -402,9 +402,9 @@ settings background - #0b000000 + #0b00000f foreground - #07000000 + #0700000f @@ -415,7 +415,7 @@ settings foreground - #02000000 + #0200000f @@ -426,7 +426,7 @@ settings foreground - #01000000 + #0100000f @@ -437,7 +437,7 @@ settings foreground - #05000000 + #0500000f @@ -448,7 +448,7 @@ settings foreground - #06000000 + #0600000f @@ -459,7 +459,7 @@ settings foreground - #06000000 + #0600000f @@ -470,7 +470,7 @@ settings foreground - #06000000 + #0600000f @@ -481,7 +481,7 @@ settings foreground - #05000000 + #0500000f @@ -492,9 +492,9 @@ settings background - #01000000 + #0100000f foreground - #0f000000 + #0f00000f @@ -505,9 +505,9 @@ settings background - #09000000 + #0900000f foreground - #00000000 + #0000000f @@ -518,9 +518,9 @@ settings background - #0e000000 + #0e00000f foreground - #0f000000 + #0f00000f @@ -531,9 +531,9 @@ settings background - #08000000 + #0800000f foreground - #0f000000 + #0f00000f diff --git a/src/terminal.rs b/src/terminal.rs index 981bf3b2..9f2c4dd1 100644 --- a/src/terminal.rs +++ b/src/terminal.rs @@ -1,15 +1,37 @@ -use ansi_term::Colour::{Fixed, RGB}; +use ansi_term::Color::{self, Fixed, RGB}; use ansi_term::{self, Style}; use syntect::highlighting::{self, FontStyle}; -pub fn to_ansi_color(color: highlighting::Color, true_color: bool) -> ansi_term::Colour { +pub fn to_ansi_color(color: highlighting::Color, true_color: bool) -> ansi_term::Color { if color.a == 0 { // Themes can specify one of the user-configurable terminal colors by // encoding them as #RRGGBBAA with AA set to 00 (transparent) and RR set // to the color palette number. The built-in themes ansi-light, // ansi-dark, and base16 use this. Fixed(color.r) + } else if color.a == 0x0f { + match color.r { + 0x00 => Color::Black, + 0x01 => Color::Red, + 0x02 => Color::Green, + 0x03 => Color::Yellow, + 0x04 => Color::Blue, + 0x05 => Color::Purple, + 0x06 => Color::Cyan, + 0x07 => Color::White, + // TODO: the following should be high-intensity variants of + // these colors ("bright black", "bright red", ...). + 0x08 => Color::Black, + 0x09 => Color::Red, + 0x0a => Color::Green, + 0x0b => Color::Yellow, + 0x0c => Color::Blue, + 0x0d => Color::Purple, + 0x0e => Color::Cyan, + 0x0f => Color::White, + _ => unreachable!("The 0x0f color encoding does not allow for codes higher than 0x0f") + } } else if true_color { RGB(color.r, color.g, color.b) } else {