summaryrefslogtreecommitdiff
path: root/src/widgets/luaeditor/theme.rs
diff options
context:
space:
mode:
authorNathan Reiner <nathan@nathanreiner.xyz>2024-07-25 16:39:49 +0200
committerNathan Reiner <nathan@nathanreiner.xyz>2024-07-25 16:39:49 +0200
commit9722d01b078dbf554431a3af3767012fce341b95 (patch)
tree81c2bb129bd81923bbf0767e62720882a31a1f56 /src/widgets/luaeditor/theme.rs
parent21c8643173e87691b47ae9860c6cb095a6ea68b2 (diff)
editor add syntax highlighting using treesitter
Diffstat (limited to 'src/widgets/luaeditor/theme.rs')
-rw-r--r--src/widgets/luaeditor/theme.rs43
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
+ }
+}