mirror of https://github.com/helix-editor/helix
Compare commits
24 Commits
0706818795
...
9f37f75868
Author | SHA1 | Date |
---|---|---|
|
9f37f75868 | |
|
395a71bf53 | |
|
1e4bf6704a | |
|
b01fbb4a22 | |
|
f75a26cb9b | |
|
21ae1c98fb | |
|
7b8a4b7a51 | |
|
715d4ae2d5 | |
|
22b184b570 | |
|
665ee4da22 | |
|
ecd18e3eb2 | |
|
e7f95ca6b2 | |
|
a2f219968a | |
|
e610e7dd80 | |
|
b273b89249 | |
|
963475d7bf | |
|
df1ea8cba3 | |
|
db15411f63 | |
|
6ddadd3fa7 | |
|
36c4fa6ab4 | |
|
9de1c7213b | |
|
b5a07f9974 | |
|
42db29a32d | |
|
fd11bd26cb |
|
@ -112,8 +112,8 @@
|
|||
| iex | ✓ | | | | |
|
||||
| ini | ✓ | | | | |
|
||||
| ink | ✓ | | | | |
|
||||
| inko | ✓ | ✓ | ✓ | | |
|
||||
| janet | ✓ | | | | |
|
||||
| inko | ✓ | ✓ | ✓ | ✓ | |
|
||||
| janet | ✓ | | ✓ | | |
|
||||
| java | ✓ | ✓ | ✓ | | `jdtls` |
|
||||
| javascript | ✓ | ✓ | ✓ | ✓ | `typescript-language-server` |
|
||||
| jinja | ✓ | | | | |
|
||||
|
|
|
@ -179,6 +179,7 @@ We use a similar set of scopes as
|
|||
- `variable` - Variables
|
||||
- `builtin` - Reserved language variables (`self`, `this`, `super`, etc.)
|
||||
- `parameter` - Function parameters
|
||||
- `mutable` - Mutable variables (e.g. marked with `mut` in Rust)
|
||||
- `other`
|
||||
- `member` - Fields of composite data types (e.g. structs, unions)
|
||||
- `private` - Private fields that use a unique syntax (currently just ECMAScript-based languages)
|
||||
|
|
|
@ -356,7 +356,7 @@ fn directory_content(path: &Path) -> Result<Vec<(PathBuf, bool)>, std::io::Error
|
|||
.map(|entry| {
|
||||
(
|
||||
entry.path(),
|
||||
entry.file_type().is_ok_and(|file_type| file_type.is_dir()),
|
||||
std::fs::metadata(entry.path()).is_ok_and(|metadata| metadata.is_dir()),
|
||||
)
|
||||
})
|
||||
.collect();
|
||||
|
|
|
@ -65,6 +65,7 @@ julia = { command = "julia", timeout = 60, args = [ "--startup-file=no", "--hist
|
|||
just-lsp = { command = "just-lsp" }
|
||||
koka = { command = "koka", args = ["--language-server", "--lsstdio"] }
|
||||
koto-ls = { command = "koto-ls" }
|
||||
kotlin-lsp = { command = "kotlin-lsp", args = ["--stdio"] }
|
||||
kotlin-language-server = { command = "kotlin-language-server" }
|
||||
lean = { command = "lean", args = [ "--server", "--memory=1024" ] }
|
||||
ltex-ls = { command = "ltex-ls" }
|
||||
|
@ -1021,6 +1022,7 @@ shebangs = []
|
|||
comment-token = "#"
|
||||
language-servers = [ "nil", "nixd" ]
|
||||
indent = { tab-width = 2, unit = " " }
|
||||
formatter = { command = "nixfmt" }
|
||||
|
||||
[[grammar]]
|
||||
name = "nix"
|
||||
|
@ -3068,7 +3070,7 @@ formatter = { command = "inko", args = ["fmt", "-"] }
|
|||
|
||||
[[grammar]]
|
||||
name = "inko"
|
||||
source = { git = "https://github.com/inko-lang/tree-sitter-inko", rev = "7860637ce1b43f5f79cfb7cc3311bf3234e9479f" }
|
||||
source = { git = "https://github.com/inko-lang/tree-sitter-inko", rev = "f58a87ac4dc6a7955c64c9e4408fbd693e804686" }
|
||||
|
||||
[[language]]
|
||||
name = "bicep"
|
||||
|
@ -3422,7 +3424,7 @@ language-servers = ["just-lsp"]
|
|||
|
||||
[[grammar]]
|
||||
name = "just"
|
||||
source = { git = "https://github.com/poliorcetics/tree-sitter-just", rev = "8d03cfdd7ab89ff76d935827de1b93450fa0ec0a" }
|
||||
source = { git = "https://github.com/poliorcetics/tree-sitter-just", rev = "0f84211c637813bcf1eb32c9e35847cdaea8760d" }
|
||||
|
||||
[[language]]
|
||||
name = "gn"
|
||||
|
@ -4242,10 +4244,11 @@ comment-token = "#"
|
|||
block-comment-tokens = ["#-", "-#"]
|
||||
indent = { tab-width = 2, unit = " " }
|
||||
language-servers = ["koto-ls"]
|
||||
formatter = {command = "koto", args = ["--format"]}
|
||||
|
||||
[[grammar]]
|
||||
name = "koto"
|
||||
source = { git = "https://github.com/koto-lang/tree-sitter-koto", rev = "b420f7922d0d74905fd0d771e5b83be9ee8a8a9a" }
|
||||
source = { git = "https://github.com/koto-lang/tree-sitter-koto", rev = "2ffc77c14f0ac1674384ff629bfc207b9c57ed89" }
|
||||
|
||||
[[language]]
|
||||
name = "gpr"
|
||||
|
|
|
@ -78,7 +78,7 @@
|
|||
] @keyword.operator
|
||||
|
||||
[
|
||||
"class"
|
||||
"type"
|
||||
"trait"
|
||||
] @keyword.storage.type
|
||||
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
(class
|
||||
name: _ @definition.struct)
|
||||
|
||||
(trait
|
||||
name: _ @definition.interface)
|
||||
|
||||
(external_function
|
||||
name: _ @definition.function)
|
||||
|
||||
(method
|
||||
name: _ @definition.function)
|
||||
|
||||
(define_constant
|
||||
name: _ @definition.constant)
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,28 @@
|
|||
; aligns forms to the second position if there's two in a line:
|
||||
; (-> 10
|
||||
; (* 2)
|
||||
; (print))
|
||||
(par_tup_lit . (sym_lit) @first . (_) @anchor
|
||||
(#set! "scope" "tail")
|
||||
(#same-line? @first @anchor)
|
||||
; anything that doesn't match should be indented normally
|
||||
; from https://github.com/janet-lang/spork/blob/5601dc883535473bca28351cc6df04ed6c656c65/spork/fmt.janet#L87C12-L93C38
|
||||
(#not-match? @first "^(fn|match|with|with-dyns|def|def-|var|var-|defn|defn-|varfn|defmacro|defmacro-|defer|edefer|loop|seq|tabseq|catseq|generate|coro|for|each|eachp|eachk|case|cond|do|defglobal|varglobal|if|when|when-let|when-with|while|with-syms|with-vars|if-let|if-not|if-with|let|short-fn|try|unless|default|forever|upscope|repeat|forv|compwhen|compif|ev/spawn|ev/do-thread|ev/spawn-thread|ev/with-deadline|label|prompt|forever)$")) @align
|
||||
|
||||
; everything else should be indented normally:
|
||||
;
|
||||
; (let [foo 10]
|
||||
; (print foo))
|
||||
;
|
||||
; (foo
|
||||
; bar)
|
||||
(par_tup_lit . (sym_lit)) @indent
|
||||
|
||||
; for `{}` and `[]`:
|
||||
; {:foo 10
|
||||
; :bar 20}
|
||||
(struct_lit . (_) @anchor) @align
|
||||
|
||||
; [foo
|
||||
; bar]
|
||||
(sqr_tup_lit . (_) @anchor) @align
|
|
@ -0,0 +1,2 @@
|
|||
((comment) @injection.content
|
||||
(#set! injection.language "comment"))
|
|
@ -61,6 +61,9 @@
|
|||
(mod
|
||||
name: (identifier) @namespace)
|
||||
|
||||
(module_path
|
||||
name: (identifier) @namespace)
|
||||
|
||||
; Paths
|
||||
|
||||
(mod
|
||||
|
|
|
@ -30,6 +30,9 @@
|
|||
(function_call
|
||||
name: (identifier) @local.reference)
|
||||
|
||||
(module_path
|
||||
name: (identifier) @local.reference)
|
||||
|
||||
(recipe_dependency
|
||||
name: (identifier) @local.reference)
|
||||
|
||||
|
|
|
@ -5,11 +5,13 @@
|
|||
"*"
|
||||
"/"
|
||||
"%"
|
||||
"^"
|
||||
"+="
|
||||
"-="
|
||||
"*="
|
||||
"/="
|
||||
"%="
|
||||
"^="
|
||||
"=="
|
||||
"!="
|
||||
"<"
|
||||
|
@ -99,12 +101,18 @@
|
|||
(export
|
||||
(identifier) @namespace)
|
||||
|
||||
(call
|
||||
function: (identifier) @function.method)
|
||||
(chain
|
||||
start: (identifier) @function)
|
||||
|
||||
(chain
|
||||
lookup: (identifier) @variable.other.member)
|
||||
|
||||
(call
|
||||
function: (identifier)) @function
|
||||
|
||||
(call_arg
|
||||
(identifier) @variable.other.member)
|
||||
|
||||
[
|
||||
(true)
|
||||
(false)
|
||||
|
@ -139,13 +147,10 @@
|
|||
|
||||
(self) @variable.builtin
|
||||
|
||||
(variable
|
||||
type: (identifier) @type)
|
||||
(type
|
||||
_ @type)
|
||||
|
||||
(arg
|
||||
(_ (identifier) @variable.parameter))
|
||||
|
||||
(ellipsis) @variable.parameter
|
||||
|
||||
(function
|
||||
output_type: (identifier) @type)
|
||||
|
|
|
@ -11,10 +11,6 @@
|
|||
(call_args
|
||||
((call_arg) @parameter.inside . ","? @parameter.around) @parameter.around)
|
||||
|
||||
(chain
|
||||
call: (tuple
|
||||
((element) @parameter.inside . ","? @parameter.around) @parameter.around))
|
||||
|
||||
(map
|
||||
((entry_inline) @entry.inside . ","? @entry.around) @entry.around)
|
||||
|
||||
|
|
|
@ -88,9 +88,14 @@
|
|||
((type_arguments (type_identifier) @constant)
|
||||
(#match? @constant "^[A-Z_]+$"))
|
||||
(type_arguments (type_identifier) @type)
|
||||
; `_` in `(_, _)`
|
||||
(tuple_struct_pattern "_" @comment.unused)
|
||||
; `_` in `Vec<_>`
|
||||
((type_arguments (type_identifier) @comment.unused)
|
||||
(#eq? @comment.unused "_"))
|
||||
; `_` in `Rc<[_]>`
|
||||
((array_type (type_identifier) @comment.unused)
|
||||
(#eq? @comment.unused "_"))
|
||||
|
||||
; ---
|
||||
; Primitives
|
||||
|
@ -201,11 +206,6 @@
|
|||
value: (identifier)? @variable
|
||||
field: (field_identifier) @variable.other.member))
|
||||
|
||||
(parameter
|
||||
pattern: (identifier) @variable.parameter)
|
||||
(closure_parameters
|
||||
(identifier) @variable.parameter)
|
||||
|
||||
; -------
|
||||
; Keywords
|
||||
; -------
|
||||
|
@ -289,8 +289,6 @@
|
|||
"dyn"
|
||||
] @keyword.storage.modifier
|
||||
|
||||
; TODO: variable.mut to highlight mutable identifiers via locals.scm
|
||||
|
||||
; ---
|
||||
; Remaining Paths
|
||||
; ---
|
||||
|
@ -305,6 +303,146 @@
|
|||
; Functions
|
||||
; -------
|
||||
|
||||
; highlight `baz` in `any_function(foo::bar::baz)` as function
|
||||
; This generically works for an unlimited number of path segments:
|
||||
;
|
||||
; - `f(foo::bar)`
|
||||
; - `f(foo::bar::baz)`
|
||||
; - `f(foo::bar::baz::quux)`
|
||||
;
|
||||
; We know that in the above examples, the last component of each path is a function
|
||||
; as the only other valid thing (following Rust naming conventions) would be a module at
|
||||
; that position, however you cannot pass modules as arguments
|
||||
(call_expression
|
||||
function: _
|
||||
arguments: (arguments
|
||||
(scoped_identifier
|
||||
path: _
|
||||
name: (identifier) @function)))
|
||||
|
||||
; Special handling for point-free functions that are not part of a path
|
||||
; but are just passed as variables to some "well-known"
|
||||
; methods, which are known to take a closure as the first argument
|
||||
;
|
||||
; For example, `foo` in `a.map(foo)` is a @function
|
||||
(call_expression
|
||||
function: (field_expression
|
||||
value: _
|
||||
field: (field_identifier) @_method_name)
|
||||
arguments:
|
||||
; first argument is `@function`
|
||||
(arguments
|
||||
.
|
||||
(identifier) @function)
|
||||
(#any-of? @_method_name
|
||||
; methods on `core::iter::Iterator`
|
||||
"map" "map_while" "filter_map" "flat_map" "map_windows"
|
||||
"try_for_each" "for_each"
|
||||
"is_sorted_by" "is_sorted_by_key"
|
||||
"all" "any" "reduce" "try_reduce"
|
||||
"find" "find_map" "try_find" "position" "rposition"
|
||||
"max_by" "max_by_key" "min_by" "min_by_key"
|
||||
"filter" "inspect" "intersperse_with"
|
||||
"partition" "partition_in_place" "is_partitioned"
|
||||
"skip_while" "take_while"
|
||||
|
||||
; methods on `Option`
|
||||
"and_then" "is_some_and" "is_none_or" "unwrap_or_else"
|
||||
"ok_or_else" "or_else" "get_or_insert_with" "take_if"
|
||||
"map_or_else" ; NOTE: both arguments are closures, so it is here and also in the block to
|
||||
; highlight the 2nd argument
|
||||
|
||||
; methods on `Result
|
||||
"map_err" "inspect_err"
|
||||
|
||||
; methods on `Entry`
|
||||
"or_insert_with" "or_insert_with_key" "and_modify"
|
||||
|
||||
; method on `bool
|
||||
"then"
|
||||
|
||||
; method on `Vec`
|
||||
"chunk_by_mut" "split" "split_mut" "split_inclusive" "split_inclusive_mut"
|
||||
"rsplit" "rsplit_mut" "binary_search_by"
|
||||
"sort_unstable_by" "sort_unstable_by_key" "partition_dedup_by"
|
||||
"partition_dedup_by_key" "fill_with" "partition_point" "sort_by"
|
||||
"sort_by_key"
|
||||
|
||||
; methods on `HashMap`
|
||||
"extract_if" "retain"
|
||||
|
||||
; methods on `itertools::Itertools`
|
||||
"batching" "chunk_by" "group_by" "map_ok"
|
||||
"filter_ok" "filter_map_ok" "process_results"
|
||||
"kmerge_by" "coalesce" "dedup_by" "dedup_by_with_count"
|
||||
"duplicates_by" "unique_by" "peeking_take_while"
|
||||
"take_while_ref" "take_while_inclusive" "positions"
|
||||
"update" "find_position" "find_or_last" "find_or_first"
|
||||
"fold1" "tree_reduce" "tree_fold1" "partition_map"
|
||||
"into_group_map_by" "into_grouping_map_by"
|
||||
"min_set_by" "min_set_by_key" "max_set_by" "max_set_by_key"
|
||||
"minmax_by_key" "minmax_by" "position_max_by_key"
|
||||
"position_max_by" "position_min_by_key" "position_min_by"
|
||||
"position_minmax_by_key" "position_minmax_by"
|
||||
"sorted_unstable_by" "sorted_unstable_by_key" "sorted_by"
|
||||
"sorted_by_key" "sorted_by_cached_key"
|
||||
|
||||
; method on `core::iter::Peekable`
|
||||
"next_if"
|
||||
|
||||
; methods on `rayon::ParallelIterator`
|
||||
;
|
||||
; note: some of these methods are also
|
||||
; present in the 2nd argument highlights, because
|
||||
; those methods take a closure both as a 1st and 2nd arg
|
||||
"for_each_init" "try_for_each_init" "map_init"
|
||||
"update"
|
||||
"flat_map_iter" "reduce_with" "try_reduce"
|
||||
"try_reduce_with" "fold_with" "try_fold_with"
|
||||
"find_any" "find_first" "find_last" "find_map_any"
|
||||
"find_map_first" "find_map_last"
|
||||
"take_any_while" "skip_any_while"
|
||||
|
||||
; method on `tap::Pipe`
|
||||
"pipe" "pipe_ref" "pipe_ref_mut" "pipe_borrow" "pipe_deref_mut"
|
||||
"pipe_borrow_mut" "pipe_as_ref" "pipe_as_mut" "pipe_deref"))
|
||||
|
||||
; Here, we do something similar to the above except for
|
||||
; methods that take a closure as a 2nd argument instead of the first
|
||||
(call_expression
|
||||
function: (field_expression
|
||||
value: _
|
||||
field: (field_identifier) @_method_name)
|
||||
arguments:
|
||||
; handles `a.map_or_else(..., foo)`
|
||||
(arguments
|
||||
; first argument is ignored
|
||||
.
|
||||
; second argument is @function
|
||||
(_)
|
||||
.
|
||||
(identifier) @function)
|
||||
(#any-of? @_method_name
|
||||
; methods on `Option`
|
||||
"map_or_else" "zip_with"
|
||||
|
||||
; methods on `Iterator`
|
||||
"try_fold" "scan" "fold" "cmp_by" "partial_cmp_by" "eq_by"
|
||||
|
||||
; methods on `rayon::ParallelIterator`
|
||||
"for_each_with" "for_each_init" "try_for_each_with" "try_for_each_init"
|
||||
"map_with" "map_init" "try_reduce" "fold_with" "try_fold_with"
|
||||
|
||||
; methods on `Vec`
|
||||
"splitn" "splitn_mut" "rsplitn" "rsplitn_mut" "split_once"
|
||||
"rsplit_once" "binary_search_by_key" "select_nth_unstable_by"
|
||||
"select_nth_unstable_by_key"
|
||||
; methods on `Itertools`
|
||||
"k_largest_by" "k_largest_by_key" "k_largest_relaxed_by"
|
||||
"k_largest_relaxed_by_key"
|
||||
"k_smallest_by" "k_smallest_by_key" "k_smallest_relaxed_by" "k_smallest_relaxed_by_key"
|
||||
"fold_while" "fold_ok" "fold_options" "merge_by" "merge_join_by" "pad_using" "format_with"))
|
||||
|
||||
(call_expression
|
||||
function: [
|
||||
((identifier) @function)
|
||||
|
|
|
@ -150,31 +150,11 @@
|
|||
|
||||
; std
|
||||
"assert_eq" "debug_assert_eq" "assert_ne" "debug_assert_ne"
|
||||
|
||||
; Dioxus's rsx! macro accepts string interpolation
|
||||
; in all strings, across the entire token tree
|
||||
"rsx"
|
||||
)
|
||||
(#set! injection.language "rust-format-args-macro")
|
||||
(#set! injection.include-children)
|
||||
)
|
||||
|
||||
; Dioxus' "rsx!" macro relies heavily on string interpolation as well. The strings can be nested very deeply
|
||||
(
|
||||
(macro_invocation
|
||||
macro: [
|
||||
(scoped_identifier
|
||||
name: (_) @_macro_name)
|
||||
(identifier) @_macro_name
|
||||
]
|
||||
; TODO: This only captures 1 level of string literals. But in dioxus you can have
|
||||
; nested string literals. For instance:
|
||||
;
|
||||
; rsx! { "{hello} world" }:
|
||||
; -> (token_tree (string_literal))
|
||||
; rsx! { div { "{hello} world" } }
|
||||
; -> (token_tree (token_tree (string_literal)))
|
||||
; rsx! { div { div { "{hello} world" } } }
|
||||
; -> (token_tree (token_tree (token_tree (string_literal))))
|
||||
(token_tree (string_literal) @injection.content)
|
||||
)
|
||||
(#eq? @_macro_name "rsx")
|
||||
(#set! injection.language "rust-format-args")
|
||||
(#set! injection.include-children)
|
||||
)
|
||||
|
|
|
@ -12,14 +12,46 @@
|
|||
(block)
|
||||
] @local.scope
|
||||
|
||||
; Definitions
|
||||
; Parameters
|
||||
|
||||
(function_item
|
||||
(parameters
|
||||
(parameter
|
||||
pattern: (identifier) @local.definition.variable.parameter)))
|
||||
(parameter
|
||||
pattern: [
|
||||
; `foo` in `fn x(foo: !) {}`
|
||||
(identifier) @local.definition.variable.parameter @variable.parameter
|
||||
; `foo` and `bar` in `fn x((foo, bar): !) {}`
|
||||
(tuple_pattern (identifier)* (identifier) @local.definition.variable.parameter @variable.parameter)
|
||||
; `foo` and `bar` in `fn x(Struct { foo, bar }: !) {}`
|
||||
(struct_pattern
|
||||
(field_pattern)*
|
||||
(field_pattern
|
||||
name: (shorthand_field_identifier) @local.definition.variable.parameter @variable.parameter)
|
||||
)
|
||||
; `foo` and `bar` in `fn x(TupleStruct(foo, bar): !) {}`
|
||||
(tuple_struct_pattern
|
||||
type: _
|
||||
(identifier)*
|
||||
(identifier) @local.definition.variable.parameter @variable.parameter
|
||||
)
|
||||
; `foo` and `bar` in `fn x([foo, bar]: !) {}`
|
||||
(slice_pattern
|
||||
(identifier)*
|
||||
(identifier) @local.definition.variable.parameter @variable.parameter
|
||||
)
|
||||
])
|
||||
|
||||
(closure_parameters (identifier) @local.definition.variable.parameter)
|
||||
; Mutable variables
|
||||
|
||||
[
|
||||
(let_declaration
|
||||
(mutable_specifier)
|
||||
pattern: (identifier) @local.definition.variable.mutable @variable.mutable)
|
||||
(parameter
|
||||
(mutable_specifier)
|
||||
pattern: (identifier) @local.definition.variable.mutable @variable.mutable)
|
||||
(mut_pattern
|
||||
(mutable_specifier)
|
||||
(identifier) @local.definition.variable.mutable @variable.mutable)
|
||||
]
|
||||
|
||||
; References
|
||||
(identifier) @local.reference
|
||||
|
|
|
@ -3,126 +3,4 @@
|
|||
# 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"
|
||||
inherits = "gruvbox_material_dark_medium"
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
# Gruvbox Material Dark Hard for Helix
|
||||
# Original Author: @sainnhe (https://github.com/sainnhe/gruvbox-material)
|
||||
# Base theme ported by: @satoqz
|
||||
# Palette ported by: @ivan-shymkiv
|
||||
# License: MIT
|
||||
|
||||
inherits = "gruvbox_material_dark_medium"
|
||||
|
||||
[palette]
|
||||
bg0 = "#1d2021"
|
||||
bg1 = "#282828"
|
||||
bg2 = "#3c3836"
|
||||
bg3 = "#504945"
|
|
@ -0,0 +1,128 @@
|
|||
# Gruvbox Material Dark Medium 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"
|
|
@ -0,0 +1,14 @@
|
|||
# Gruvbox Material Dark Soft for Helix
|
||||
# Original Author: @sainnhe (https://github.com/sainnhe/gruvbox-material)
|
||||
# Base theme ported by: @satoqz
|
||||
# Palette ported by: @ivan-shymkiv
|
||||
# License: MIT
|
||||
|
||||
inherits = "gruvbox_material_dark_medium"
|
||||
|
||||
[palette]
|
||||
bg0 = "#32302f"
|
||||
bg1 = "#3c3836"
|
||||
bg2 = "#504945"
|
||||
bg3 = "#665c54"
|
||||
bg4 = "#5b534d"
|
|
@ -0,0 +1,14 @@
|
|||
# Gruvbox Material Light Hard for Helix
|
||||
# Original Author: @sainnhe (https://github.com/sainnhe/gruvbox-material)
|
||||
# Base theme ported by: @satoqz
|
||||
# Palette ported by: @ivan-shymkiv
|
||||
# License: MIT
|
||||
|
||||
inherits = "gruvbox_material_light_medium"
|
||||
|
||||
[palette]
|
||||
bg0 = "#f9f5d7"
|
||||
bg1 = "#f5edca"
|
||||
bg2 = "#f2e5bc"
|
||||
bg3 = "#ebdbb2"
|
||||
bg4 = "#eee0b7"
|
|
@ -0,0 +1,129 @@
|
|||
# Gruvbox Material Light Medium for Helix
|
||||
# Original Author: @sainnhe (https://github.com/sainnhe/gruvbox-material)
|
||||
# Base theme ported by: @satoqz
|
||||
# Palette ported by: @ivan-shymkiv
|
||||
# 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 = "#654735"
|
||||
fg1 = "#4f3829"
|
||||
|
||||
bg0 = "#fbf1c7"
|
||||
bg1 = "#f4e8be"
|
||||
bg2 = "#eee0b7"
|
||||
bg3 = "#ddccab"
|
||||
bg4 = "#e5d5ad"
|
||||
|
||||
grey0 = "#a89984"
|
||||
grey1 = "#928374"
|
||||
grey2 = "#7c6f64"
|
||||
|
||||
aqua = "#4c7a5d"
|
||||
blue = "#45707a"
|
||||
green = "#6c782e"
|
||||
orange = "#c35e0a"
|
||||
purple = "#945e80"
|
||||
red = "#c14a4a"
|
||||
yellow = "#b47109"
|
|
@ -0,0 +1,14 @@
|
|||
# Gruvbox Material Light Soft for Helix
|
||||
# Original Author: @sainnhe (https://github.com/sainnhe/gruvbox-material)
|
||||
# Base theme ported by: @satoqz
|
||||
# Palette ported by: @ivan-shymkiv
|
||||
# License: MIT
|
||||
|
||||
inherits = "gruvbox_material_light_medium"
|
||||
|
||||
[palette]
|
||||
bg0 = "#f2e5bc"
|
||||
bg1 = "#eddeb5"
|
||||
bg2 = "#e6d5ae"
|
||||
bg3 = "#d5c4a1"
|
||||
bg4 = "#dac9a5"
|
Loading…
Reference in New Issue