Compare commits

...

4 Commits

Author SHA1 Message Date
Jonas Köhnen 0ca01a9649
feat(themes): add gruvbox-material (#13311) 2025-04-15 18:19:02 -05:00
VuiMuich 8f30f39c6a
update serika themes (#13341) 2025-04-15 18:17:04 -05:00
Carter Watson 31cc2110ec
add: ui.text.focus to gruvbox configs (#13315) 2025-04-15 18:09:07 -05:00
icefoxen bce166290a
Basic language support for Fennel. Might even work. (#13260)
Co-authored-by: uncenter <uncenter@uncenter.dev>
Co-authored-by: Simon Heath <simon.heath@nearearth.aero>
2025-04-15 18:05:44 -05:00
7 changed files with 420 additions and 48 deletions

View File

@ -58,6 +58,7 @@
| erb | ✓ | | | |
| erlang | ✓ | ✓ | | `erlang_ls`, `elp` |
| esdl | ✓ | | | |
| fennel | ✓ | | | `fennel-ls` |
| fga | ✓ | ✓ | ✓ | |
| fidl | ✓ | | | |
| fish | ✓ | ✓ | ✓ | `fish-lsp` |

View File

@ -39,6 +39,7 @@ elm-language-server = { command = "elm-language-server" }
elp = { command = "elp", args = ["server"] }
elvish = { command = "elvish", args = ["-lsp"] }
erlang-ls = { command = "erlang_ls" }
fennel-ls = { command = "fennel-ls" }
fish-lsp = { command = "fish-lsp", args = ["start"], environment = { fish_lsp_show_client_popups = "false" } }
forc = { command = "forc", args = ["lsp"] }
forth-lsp = { command = "forth-lsp" }
@ -397,6 +398,20 @@ indent = { tab-width = 2, unit = " " }
name = "elixir"
source = { git = "https://github.com/elixir-lang/tree-sitter-elixir", rev = "02a6f7fd4be28dd94ee4dd2ca19cb777053ea74e" }
[[language]]
name = "fennel"
scope = "source.fennel"
file-types = ["fnl", "fnlm"]
shebangs = ["fennel"]
comment-token = ";"
language-servers = ["fennel-ls"]
formatter = { command = "fnlfmt", args = ["-"]}
indent = { tab-width = 2, unit = " " }
[[grammar]]
name = "fennel"
source = { git = "https://github.com/alexmozaidze/tree-sitter-fennel", rev = "cfbfa478dc2dbef267ee94ae4323d9c886f45e94" }
[[language]]
name = "fish"
scope = "source.fish"

View File

@ -0,0 +1,193 @@
; Most primitive nodes
(shebang) @keyword.directive
(comment) @comment
(fn_form
name: [
(symbol) @function
(multi_symbol
member: (symbol_fragment) @function .)
])
(lambda_form
name: [
(symbol) @function
(multi_symbol
member: (symbol_fragment) @function .)
])
((symbol) @operator
(#any-of? @operator
; arithmetic
"+" "-" "*" "/" "//" "%" "^"
; comparison
">" "<" ">=" "<=" "=" "~="
; other
"#" "." "?." ".."))
((symbol) @keyword.operator
(#any-of? @keyword.operator
; comparison
"not="
; boolean
"and" "or" "not"
; bitwise
"lshift" "rshift" "band" "bor" "bxor" "bnot"
; other
"length"))
(case_guard
call: (_) @keyword.control.conditional)
(case_guard_or_special
call: (_) @keyword.control.conditional)
(case_catch
call: (symbol) @keyword)
(import_macros_form
imports: (table_binding
(table_binding_pair
value: (symbol_binding) @function.macro)))
((symbol) @keyword.function
(#any-of? @keyword.function "fn" "lambda" "λ" "hashfn"))
((symbol) @keyword.control.repeat
(#any-of? @keyword.control.repeat "for" "each" "while"))
((symbol) @keyword.control.conditional
(#any-of? @keyword.control.conditional "if" "when" "match" "case" "match-try" "case-try"))
((symbol) @keyword
(#any-of? @keyword
"global" "local" "let" "set" "var" "comment" "do" "doc" "eval-compiler" "lua" "macros" "unquote"
"quote" "tset" "values" "tail!"))
((symbol) @keyword.control.import
(#any-of? @keyword.control.import "require" "require-macros" "import-macros" "include"))
((symbol) @function.macro
(#any-of? @function.macro
"collect" "icollect" "fcollect" "accumulate" "faccumulate" "->" "->>" "-?>" "-?>>" "?." "doto"
"macro" "macrodebug" "partial" "pick-args" "pick-values" "with-open"))
((symbol) @variable.builtin
(#eq? @variable.builtin "..."))
((symbol) @constant.builtin
(#eq? @constant.builtin "_VERSION"))
((symbol) @function.builtin
(#any-of? @function.builtin
"assert" "collectgarbage" "dofile" "error" "getmetatable" "ipairs" "load" "loadfile" "next"
"pairs" "pcall" "print" "rawequal" "rawget" "rawlen" "rawset" "require" "select" "setmetatable"
"tonumber" "tostring" "type" "warn" "xpcall" "module" "setfenv" "loadstring" "unpack"))
; TODO: Highlight builtin methods (`table.unpack`, etc) as @function.builtin
([
(symbol) @variable.builtin
(multi_symbol
base: (symbol_fragment) @variable.builtin)
]
(#any-of? @variable.builtin
"vim" "_G" "_ENV" "debug" "io" "jit" "math" "os" "package" "string" "table" "utf8"))
([
(symbol) @variable.builtin
(multi_symbol
.
(symbol_fragment) @variable.builtin)
]
(#eq? @variable.builtin "arg"))
(symbol_option) @keyword.directive
(escape_sequence) @constant.character.escape
(multi_symbol
"." @punctuation.delimiter
member: (symbol_fragment) @variable.other.member)
(list
call: (symbol) @function)
(list
call: (multi_symbol
member: (symbol_fragment) @function .))
(multi_symbol_method
":" @punctuation.delimiter
method: (symbol_fragment) @function.method)
(quasi_quote_reader_macro
macro: _ @punctuation.special)
(quote_reader_macro
macro: _ @punctuation.special)
(unquote_reader_macro
macro: _ @punctuation.special)
(hashfn_reader_macro
macro: _ @keyword.function)
(docstring) @comment.block.documentation
; NOTE: The macro name is highlighted as @variable because it
; gives a nicer contrast instead of everything being the same
; color. Rust queries use this workaround too for `macro_rules!`.
(macro_form
name: [
(symbol) @variable
(multi_symbol
member: (symbol_fragment) @variable .)
])
[
"("
")"
"{"
"}"
"["
"]"
] @punctuation.bracket
(sequence_arguments
(symbol_binding) @variable.parameter)
(sequence_arguments
(rest_binding
rhs: (symbol_binding) @variable.parameter))
((symbol) @variable.parameter
(#any-of? @variable.parameter "$" "$..."))
((symbol) @variable.parameter
(#any-of? @variable.parameter "$1" "$2" "$3" "$4" "$5" "$6" "$7" "$8" "$9"))
[
(nil)
(nil_binding)
] @constant.builtin
[
(boolean)
(boolean_binding)
] @constant.builtin.boolean
[
(number)
(number_binding)
] @constant.numeric
[
(string)
(string_binding)
] @string
[
(symbol)
(symbol_binding)
] @variable

View File

@ -0,0 +1,128 @@
# Gruvbox Material for Helix
# Original Author: @sainnhe (https://github.com/sainnhe/gruvbox-material)
# Ported by: @satoqz
# License: MIT
"attribute" = "green"
"comment" = { fg = "grey1", modifiers = ["italic"] }
"constant" = "fg0"
"constant.builtin" = "purple"
"constant.character.escape" = "green"
"constant.numeric" = "purple"
"constructor" = "green"
"function" = "green"
"keyword" = "red"
"keyword.directive" = "purple"
"keyword.operator" = "orange"
"label" = "red"
"namespace" = "yellow"
"operator" = "orange"
"punctuation" = "grey1"
"punctuation.bracket" = "fg0"
"punctuation.delimiter" = "grey1"
"punctuation.special" = "blue"
"special" = "green"
"string" = "aqua"
"string.regexp" = "green"
"string.special.path" = "yellow"
"string.special.symbol" = "fg0"
"string.special.url" = { fg = "fg0", modifiers = ["underlined"] }
"tag" = "orange"
"type" = "yellow"
"type.enum.variant" = "purple"
"variable" = "fg0"
"variable.builtin" = "purple"
"variable.other.member" = "blue"
"variable.parameter" = "fg0"
"markup.heading.1" = "red"
"markup.heading.2" = "orange"
"markup.heading.3" = "yellow"
"markup.heading.4" = "green"
"markup.heading.5" = "blue"
"markup.heading.6" = "purple"
"markup.bold" = { fg = "fg0", modifiers = ["bold"] }
"markup.italic" = { fg = "fg0", modifiers = ["italic"] }
"markup.strikethrough" = { fg = "fg0", modifiers = ["crossed_out"] }
"markup.link.label" = "blue"
"markup.link.text" = "yellow"
"markup.link.url" = { fg = "blue", modifiers = ["underlined"] }
"markup.list" = "blue"
"markup.list.checked" = "green"
"markup.list.unchecked" = "grey1"
"markup.quote" = "grey1"
"markup.raw" = "green"
"diff.delta" = "blue"
"diff.minus" = "red"
"diff.plus" = "green"
"diagnostic.error" = { underline = { color = "red", style = "curl" } }
"diagnostic.hint" = { underline = { color = "green", style = "curl" } }
"diagnostic.info" = { underline = { color = "blue", style = "curl" } }
"diagnostic.unnecessary" = { modifiers = ["dim"] }
"diagnostic.warning" = { underline = { color = "yellow", style = "curl" } }
error = "red"
hint = "green"
info = "blue"
warning = "yellow"
"ui.background" = { fg = "fg0", bg = "bg0" }
"ui.bufferline" = { fg = "fg1", bg = "bg4" }
"ui.bufferline.active" = { fg = "bg0", bg = "grey2" }
"ui.bufferline.background" = { bg = "bg1" }
"ui.cursor" = { fg = "bg0", bg = "grey1" }
"ui.cursor.primary" = { fg = "bg0", bg = "fg0" }
"ui.cursor.match" = { bg = "bg2" }
"ui.cursorline.primary" = { bg = "bg1" }
"ui.help" = { fg = "grey1", bg = "bg0" }
"ui.highlight" = { bg = "bg2" }
"ui.linenr" = "bg3"
"ui.linenr.selected" = "grey1"
"ui.menu" = { fg = "fg1", bg = "bg2" }
"ui.menu.scroll" = { fg = "grey0", bg = "bg1" }
"ui.menu.selected" = { fg = "bg2", bg = "grey2" }
"ui.popup" = { fg = "fg1", bg = "bg2" }
"ui.popup.info" = { "fg" = "grey1", bg = "bg0" }
"ui.selection" = { bg = "bg2" }
"ui.statusline" = { fg = "fg1", bg = "bg1" }
"ui.statusline.inactive" = { fg = "grey1", bg = "bg1" }
"ui.statusline.insert" = { fg = "bg0", bg = "green" }
"ui.statusline.normal" = { fg = "bg0", bg = "grey2" }
"ui.statusline.select" = { fg = "bg0", bg = "red" }
"ui.text" = "fg0"
"ui.text.directory" = { fg = "blue" }
"ui.text.focus" = { bg = "bg2" }
"ui.text.inactive" = { fg = "grey1" }
"ui.text.info" = "grey1"
"ui.virtual" = "grey0"
"ui.virtual.indent-guide" = "bg3"
"ui.virtual.inlay-hint" = "grey0"
"ui.virtual.jump-label" = "grey2"
"ui.virtual.ruler" = { bg = "bg1" }
"ui.window" = { fg = "bg3" }
[palette]
fg0 = "#d4be98"
fg1 = "#ddc7a1"
bg0 = "#282828"
bg1 = "#32302f"
bg2 = "#45403d"
bg3 = "#5a524c"
bg4 = "#504945"
grey0 = "#7c6f64"
grey1 = "#928374"
grey2 = "#a89984"
aqua = "#89b482"
blue = "#7daea3"
green = "#a9b665"
orange = "#e78a4e"
purple = "#d3869b"
red = "#ea6962"
yellow = "#d8a657"

View File

@ -106,6 +106,7 @@
"ui.statusline.select" = { fg = "bg1", bg = "orange1", modifiers = ["bold"] }
"ui.text" = { fg = "fg1" }
"ui.text.focus" = { fg = "green1" }
"ui.text.directory" = { fg = "blue1" }
"ui.virtual.inlay-hint" = { fg = "gray" }
"ui.virtual.jump-label" = { fg = "purple0", modifiers = ["bold"] }

View File

@ -11,7 +11,7 @@
"constant" = "purple"
"number" = "purple"
"string" = "fg"
"comment" = "grey2"
"comment" = { fg = "grey2", modifiers = [ "italic" ] }
"variable" = "yellow"
"variable.builtin" = "blue"
"variable.parameter" = "yellow"
@ -33,33 +33,49 @@
"special" = "orange"
"ui.background" = { bg = "bg0" }
"ui.cursor" = { fg = "bg0", bg = "fg" }
"ui.cursor.match" = { fg = "grey0", bg = "grey2" }
"ui.cursor.insert" = { fg = "bg0", bg = "bg_yellow" }
"ui.cursor.select" = { fg = "bg0", bg = "bg_yellow" }
"ui.linenr" = "yellow"
"ui.linenr.selected" = { fg = "fg", modifiers = ["bold", "underlined"] }
"ui.background.separator" = { fg = "bg2" }
"ui.bufferline" = { fg = "grey1" }
"ui.bufferline.active" = { fg = "yellow" }
"ui.bufferline.background" = { bg = "bg2" }
"ui.cursor" = { fg = "fg", bg = "dark-red" }
"ui.cursor.match" = { fg = "grey2", bg = "pale-yellow" }
"ui.cursor.insert" = { fg = "bg0", bg = "pale-yellow" }
"ui.cursor.select" = { fg = "bg0", bg = "bg-yellow" }
"ui.cursor.primary" = { fg = "dark-red", bg = "fg" }
"ui.cursor.primary.match" = { fg = "pale-yellow", bg = "grey2" }
"ui.cursor.primary.insert" = { fg = "dark-red", bg = "bg-yellow" }
"ui.cursor.primary.select" = { fg = "yellow", bg = "nasty-red" }
"ui.linenr" = { fg = "yellow", modifiers = ["dim"] }
"ui.linenr.selected" = { fg = "fg", modifiers = ["dim"], underline.style = "line" }
"ui.cursorline" = { fg = "grey1", bg = "bg2" }
"ui.statusline" = { fg = "grey1", bg = "bg2" }
"ui.statusline.inactive" = { fg = "grey2", bg = "bg1" }
"ui.statusline.inactive" = { fg = "bg5", bg = "bg1" }
"ui.statusline.insert" = { fg = "blue" }
"ui.statusline.select" = { fg = "pale-yellow" }
"ui.popup" = { fg = "grey2", bg = "bg1" }
"ui.window" = { fg = "grey2", bg = "bg1" }
"ui.picker.header" = { fg = "bg2", underline.style = "dashed" }
"ui.window" = { fg = "bg1", bg = "bg1" }
"ui.help" = { fg = "fg", bg = "bg1" }
"ui.text" = "fg"
"ui.text.focus" = "yellow"
"ui.text.inactive" = { fg = "fg", modifiers = [ "dim" ] }
"ui.text.directory" = "grey0"
"ui.menu" = { fg = "fg", bg = "bg2" }
"ui.menu.selected" = { fg = "bg0", bg = "bg_yellow" }
"ui.selection" = { bg = "bg3" }
"ui.virtual.whitespace" = "bg2"
"ui.virtual.ruler" = { bg = "grey2" }
"ui.menu.selected" = { fg = "bg0", bg = "bg-yellow" }
"ui.selection" = { bg = "yellow", modifiers = [ "dim" ] }
"ui.selection.prime" = { underline.style = "line" }
"ui.virtual.inlay-hint" = { fg = "grey2", modifiers = ["italic"] }
"ui.virtual.jump-label" = { fg = "nasty-red", modifiers = ["bold"] }
"ui.virtual.ruler" = { bg = "bg1" }
"ui.virtual.whitespace" = { fg = "grey2", modifiers = [ "italic" ] }
"ui.virtual.wrap" = { fg = "grey2", modifiers = [ "italic" ] }
"hint" = "blue"
"info" = "aqua"
"warning" = "yellow"
"error" = "nasty-red"
"diagnostic" = { underline = { style = "curl", color = "purple" } }
"diagnostic.hint" = { underline = { style = "curl", color = "blue" } }
"diagnostic.info" = { underline = { style = "curl", color = "aqua" } }
"diagnostic.warning" = { underline = { style = "curl", color = "yellow" } }
@ -89,22 +105,23 @@ bg2 = "#55585e"
bg3 = "#61656b"
bg4 = "#6d7278"
bg5 = "#797e86"
bg_visual = "#646669"
bg_red = "#7e2a33"
bg_green = "#86b365"
bg_blue = "#6a89af"
bg_yellow = "#e2b714"
bg-visual = "#646669"
bg-red = "#7e2a33"
bg-green = "#86b365"
bg-blue = "#6a89af"
bg-yellow = "#e2b714"
fg = "#d1d0c5"
red = "#f9ebed"
red = "#e29da7"
nasty-red = "#ca4754"
dark-red = "#7e2a33"
orange = "#dd8a3c"
yellow = "#e2b714"
green = "#e5eae1"
pale-yellow = "#f3e0a1"
green = "#bcd5a8"
aqua = "#b9c2c6"
blue = "#bdcadb"
purple = "#d0c4d4"
blue = "#adc9db"
purple = "#be9ec9"
grey0 = "#aaaeb3"
grey1 = "#e1e1e3"
grey2 = "#646669"

View File

@ -11,7 +11,7 @@
"constant" = "purple"
"number" = "purple"
"string" = "fg"
"comment" = "grey2"
"comment" = { fg = "grey2", modifiers = [ "italic" ] }
"variable" = "yellow"
"variable.builtin" = "blue"
"variable.parameter" = "yellow"
@ -21,7 +21,7 @@
"punctuation.delimiter" = "grey2"
"punctuation.bracket" = "fg"
"keyword" = "red"
"operator" = "grey0"
"operator" = "grey2"
"function" = "green"
"function.builtin" = "blue"
"function.macro" = "aqua"
@ -33,32 +33,49 @@
"special" = "orange"
"ui.background" = { bg = "bg0" }
"ui.cursor" = { fg = "bg0", bg = "fg" }
"ui.cursor.match" = { fg = "grey1", bg = "grey2" }
"ui.cursor.insert" = { fg = "bg0", bg = "bg_yellow" }
"ui.cursor.select" = { fg = "bg0", bg = "bg_yellow" }
"ui.linenr" = "yellow"
"ui.linenr.selected" = { fg = "fg", modifiers = ["bold", "underlined"] }
"ui.cursorline" = { bg = "bg01" }
"ui.background.separator" = { fg = "bg5" }
"ui.bufferline" = { fg = "grey1" }
"ui.bufferline.active" = { fg = "pale-yellow" }
"ui.bufferline.background" = { bg = "bg5" }
"ui.cursor" = { fg = "bg0", bg = "dark-red" }
"ui.cursor.match" = { fg = "pale-yellow", bg = "bg5" }
"ui.cursor.insert" = { fg = "fg", bg = "pale-yellow" }
"ui.cursor.select" = { fg = "fg", bg = "bg-yellow" }
"ui.cursor.primary" = { fg = "nasty-red", bg = "grey0" }
"ui.cursor.primary.match" = { fg = "grey2", bg = "pale-yellow" }
"ui.cursor.primary.insert" = { fg = "dark-red", bg = "yellow" }
"ui.cursor.primary.select" = { fg = "yellow", bg = "dark-red" }
"ui.linenr" = { fg = "yellow", modifiers = ["dim"] }
"ui.linenr.selected" = { fg = "fg", modifiers = ["dim"], underline.style = "line" }
"ui.cursorline" = { bg = "bg0", modifiers = ["dim"] }
"ui.statusline" = { fg = "grey1", bg = "bg5" }
"ui.statusline.inactive" = { fg = "grey2", bg = "bg1" }
"ui.statusline.inactive" = { fg = "grey1", bg = "bg3" }
"ui.statusline.insert" = { fg = "blue" }
"ui.statusline.select" = { fg = "pale-yellow" }
"ui.popup" = { fg = "bg0", bg = "bg5" }
"ui.window" = { fg = "bg0", bg = "bg5" }
"ui.picker.header" = { fg = "bg2", underline.style = "dashed" }
"ui.window" = { fg = "bg5", bg = "bg5" }
"ui.help" = { fg = "bg0", bg = "bg5" }
"ui.text" = "fg"
"ui.text.focus" = "yellow"
"ui.text.inactive" = { fg = "fg", modifiers = [ "dim" ] }
"ui.text.directory" = "grey2"
"ui.menu" = { fg = "bg0", bg = "bg3" }
"ui.menu.selected" = { fg = "bg0", bg = "bg_yellow" }
"ui.selection" = { fg = "bg0", bg = "bg3" }
"ui.virtual.whitespace" = { fg = "bg2" }
"ui.virtual.ruler" = { bg = "bg01" }
"ui.menu.selected" = { fg = "bg0", bg = "bg-yellow" }
"ui.selection" = { bg = "grey0", modifiers = [ "dim" ] }
"ui.selection.prime" = { underline.style = "line" }
"ui.virtual.inlay-hint" = { fg = "grey2", modifiers = ["italic"] }
"ui.virtual.jump-label" = { fg = "nasty-red", modifiers = ["bold"] }
"ui.virtual.ruler" = { bg = "bg0", modifiers = ["dim"] }
"ui.virtual.whitespace" = { fg = "grey2", modifiers = [ "italic" ] }
"ui.virtual.wrap" = { fg = "grey2", modifiers = [ "italic" ] }
"hint" = "blue"
"info" = "aqua"
"warning" = "yellow"
"error" = "nasty-red"
"diagnostic" = { underline = { style = "curl", color = "purple" } }
"diagnostic.hint" = { underline = { style = "curl", color = "blue" } }
"diagnostic.info" = { underline = { style = "curl", color = "aqua" } }
"diagnostic.warning" = { underline = { style = "curl", color = "yellow" } }
@ -66,8 +83,8 @@
"diagnostic.unnecessary" = { modifiers = ["dim"] }
"diagnostic.deprecated" = { modifiers = ["crossed_out"] }
"diff.plus" = { fg = "bg_green" }
"diff.delta" = { fg = "bg_blue" }
"diff.plus" = { fg = "bg-green" }
"diff.delta" = { fg = "bg-blue" }
"diff.minus" = { fg = "nasty-red" }
"markup.heading" = { fg = "purple", modifiers = ["bold"] }
@ -82,18 +99,17 @@
[palette]
bg0 = "#e1e1e3"
bg01 = "#eaeaec"
bg0 = "#d1d0c5"
bg1 = "#494c50"
bg2 = "#55585e"
bg3 = "#61656b"
bg4 = "#6d7278"
bg5 = "#797e86"
bg_visual = "#646669"
bg_red = "#7e2a33"
bg_green = "#86b365"
bg_blue = "#6a89af"
bg_yellow = "#e2b714"
bg-visual = "#646669"
bg-red = "#7e2a33"
bg-green = "#86b365"
bg-blue = "#6a89af"
bg-yellow = "#e2b714"
fg = "#323437"
red = "#621d28"
@ -101,10 +117,11 @@ nasty-red = "#da3333"
dark-red = "#791717"
orange = "#57320f"
yellow = "#9a7d0e"
green = "#3f4b34"
pale-yellow = "#e2b714"
green = "#3d5128"
aqua = "#455054"
blue = "#3f5673"
purple = "#534059"
purple = "#5a4066"
grey0 = "#aaaeb3"
grey1 = "#e1e1e3"
grey2 = "#646669"