diff options
| author | Nathan Reiner <nathan@nathanreiner.xyz> | 2024-07-25 16:39:49 +0200 |
|---|---|---|
| committer | Nathan Reiner <nathan@nathanreiner.xyz> | 2024-07-25 16:39:49 +0200 |
| commit | 9722d01b078dbf554431a3af3767012fce341b95 (patch) | |
| tree | 81c2bb129bd81923bbf0767e62720882a31a1f56 /src/widgets/luaeditor/theme.rs | |
| parent | 21c8643173e87691b47ae9860c6cb095a6ea68b2 (diff) | |
editor add syntax highlighting using treesitter
Diffstat (limited to 'src/widgets/luaeditor/theme.rs')
| -rw-r--r-- | src/widgets/luaeditor/theme.rs | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/src/widgets/luaeditor/theme.rs b/src/widgets/luaeditor/theme.rs new file mode 100644 index 0000000..2af8534 --- /dev/null +++ b/src/widgets/luaeditor/theme.rs @@ -0,0 +1,43 @@ +use ratatui::{style::{Color, Stylize}, text::Span}; +use tree_sitter_highlight::Highlight; + + +static HIGHLIGHT_THEME: [Color; 29] = [ + Color::White, // attribute + Color::White, // boolean + Color::DarkGray, // comment + Color::LightYellow, // conditional + Color::White, // constant + Color::White, // constant.builtin + Color::White, // constructor + Color::White, // field + Color::White, // function + Color::White, // function.builtin + Color::White, // function.call + Color::Yellow, // keyword + Color::LightYellow, // keyword.function + Color::White, // keyword.operator + Color::LightYellow, // keyword.return + Color::White, // label + Color::White, // method + Color::White, // method.call + Color::Blue, // number + Color::Gray, // operator + Color::White, // parameter + Color::White, // preproc + Color::Gray, // punctuation.bracket + Color::Gray, // punctuation.delimiter + Color::LightYellow, // repeat + Color::LightGreen, // string + Color::Yellow, // string.escape + Color::Gray, // variable + Color::White, // variable.builtin +]; + +pub fn theme_highlight_group(hl: Option<Highlight>, span: Span) -> Span { + if let Some(hl) = hl { + span.fg(HIGHLIGHT_THEME[hl.0]) + } else { + span + } +} |