A simple CPU rendered GUI IDE experience.
Diffstat (limited to 'src/text/semantic_tokens/theme.rs')
| -rw-r--r-- | src/text/semantic_tokens/theme.rs | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/src/text/semantic_tokens/theme.rs b/src/text/semantic_tokens/theme.rs new file mode 100644 index 0000000..6be578c --- /dev/null +++ b/src/text/semantic_tokens/theme.rs @@ -0,0 +1,95 @@ +use dsb::cell::Style; + +macro_rules! theme { + ($($x:literal $color:literal $($style:expr)?),+ $(,)?) => { + #[rustfmt::skip] + pub const NAMES: [&str; [$($x),+].len()] = [$($x),+]; + #[rustfmt::skip] + pub const COLORS: [[u8; 3]; NAMES.len()] = car::map!([$($color),+], |x| crate::text::color(x)); + pub const STYLES: [u8; NAMES.len()] = [$( + ($($style, )? 0, ).0 + ),+]; + }; +} + +macro_rules! modified { + ($count:literal $($x:literal . $mod:literal $color:literal $($style:expr)?,)+ $(,)?) => { + pub const MODIFIED: [(&str, &str); $count] = [ + $(($x, $mod),)+ + ]; + pub const MCOLORS: [[u8;3]; MODIFIED.len()] = car::map!([$($color),+], |x| crate::text::color(x)); + pub const MSTYLE: [u8; MODIFIED.len()] = [$(($($style, )? 0, ).0 ,)+]; + } +} +pub(crate) use theme; +theme! { +"constructor" b"#FFAD66", +"field" b"#cccac2", + +"comment" b"#5c6773" Style::ITALIC, +// "decorator" b"#cccac2", +"function" b"#FFD173" Style::ITALIC, +"interface" b"#5CCFE6", +"keyword" b"#FFAD66" Style::ITALIC | Style::BOLD, +"macro" b"#fbc351" Style::BOLD, +"method" b"#FFD173" Style::ITALIC, +// "namespace" b"#cccac2", +"number" b"#dfbfff", +"operator" b"#F29E74", +// "property" b"#cccac2", +"string" b"#D5FF80", +// "struct" b"#cccac2", +// "typeParameter" b"#cccac2", +"class" b"#73b9ff", +"enumMember" b"#73b9ff", +"enum" b"#73b9ff" Style::ITALIC | Style::BOLD, +"builtinType" b"#73d0ff" Style::ITALIC, +// "type" b"#73d0ff" Style::ITALIC | Style::BOLD, +"typeAlias" b"#69caed" Style::ITALIC | Style::BOLD, +"struct" b"#73d0ff" Style::ITALIC | Style::BOLD, +"variable" b"#cccac2", +// "angle" b"#cccac2", +// "arithmetic" b"#cccac2", +// "attributeBracket" b"#cccac2", +"parameter" b"#DFBFFF", +"namespace" b"#73d0ff", +// "attributeBracket" b"#cccac2", +// "attribute" b"#cccac2", +// "bitwise" b"#cccac2", +// "boolean" b"#cccac2", +// "brace" b"#cccac2", +// "bracket" b"#cccac2", +// "builtinAttribute" b"#cccac2", +// "character" b"#cccac2", +// "colon" b"#cccac2", +// "comma" b"#cccac2", +// "comparison" b"#cccac2", +// "constParameter" b"#cccac2", +"const" b"#DFBFFF", +// "deriveHelper" b"#cccac2", +// "derive" b"#cccac2", +// "dot" b"#cccac2", +// "escapeSequence" b"#cccac2", +// "formatSpecifier" b"#cccac2", +// "generic" b"#cccac2", +// "invalidEscapeSequence" b"#cccac2", +// "label" b"#cccac2", +// "lifetime" b"#cccac2", +// "logical" b"#cccac2", +"macroBang" b"#f28f74", +// "parenthesis" b"#cccac2", +// "procMacro" b"#cccac2", +// "punctuation" b"#cccac2", +"selfKeyword" b"#FFAD66" Style::ITALIC | Style::BOLD, +"selfTypeKeyword" b"#FFAD66" Style::ITALIC | Style::BOLD, +// "semicolon" b"#cccac2", +// "static" b"#cccac2", +// "toolModule" b"#cccac2", +// "union" b"#cccac2", +// "unresolvedReference" b"#cccac2", +} + +modified! { 2 + "function" . "unsafe" b"#F28779", + "variable" . "mutable" b"#e6dab6", +} |