Add Nickel language (#2173)
This commit is contained in:
parent
5247d3ae2d
commit
9616477197
4 changed files with 100 additions and 0 deletions
|
@ -46,6 +46,7 @@
|
|||
| make | ✓ | | | |
|
||||
| markdown | ✓ | | | |
|
||||
| mint | | | | `mint` |
|
||||
| nickel | ✓ | | ✓ | `nls` |
|
||||
| nix | ✓ | | ✓ | `rnix-lsp` |
|
||||
| ocaml | ✓ | | ✓ | `ocamllsp` |
|
||||
| ocaml-interface | ✓ | | | `ocamllsp` |
|
||||
|
|
|
@ -380,6 +380,21 @@ indent = { tab-width = 4, unit = " " }
|
|||
name = "python"
|
||||
source = { git = "https://github.com/tree-sitter/tree-sitter-python", rev = "d6210ceab11e8d812d4ab59c07c81458ec6e5184" }
|
||||
|
||||
[[language]]
|
||||
name = "nickel"
|
||||
scope = "source.nickel"
|
||||
injection-regex = "nickel"
|
||||
file-types = ["ncl"]
|
||||
shebangs = []
|
||||
roots = []
|
||||
comment-token = "#"
|
||||
language-server = { command = "nls" }
|
||||
indent = { tab-width = 2, unit = " " }
|
||||
|
||||
[[grammar]]
|
||||
name = "nickel"
|
||||
source = { git = "https://github.com/nickel-lang/tree-sitter-nickel", rev = "85348774ccf7624fac72703b2264d18b6f572be6" }
|
||||
|
||||
[[language]]
|
||||
name = "nix"
|
||||
scope = "source.nix"
|
||||
|
|
67
runtime/queries/nickel/highlights.scm
Normal file
67
runtime/queries/nickel/highlights.scm
Normal file
|
@ -0,0 +1,67 @@
|
|||
(types) @type
|
||||
(type_builtin) @type.builtin
|
||||
"Array" @type.builtin
|
||||
|
||||
(enum_tag) @constructor
|
||||
|
||||
"null" @constant.builtin
|
||||
(bool) @constant.builtin.boolean
|
||||
(str_esc_char) @constant.character.escape
|
||||
(num_literal) @constant.numeric
|
||||
|
||||
(str_chunks) @string
|
||||
|
||||
; NOTE: Nickel has no block comments
|
||||
(comment) @comment.line
|
||||
; Nickel doesn't use comments for documentation, ideally this would be
|
||||
; `@documentation` or something similar
|
||||
(annot_atom
|
||||
doc: (static_string) @comment.block.documentation
|
||||
)
|
||||
|
||||
(record_operand (atom (ident) @variable))
|
||||
(let_expr
|
||||
"let" @keyword
|
||||
pat: (pattern
|
||||
(ident) @variable
|
||||
)
|
||||
"in" @keyword
|
||||
)
|
||||
(fun_expr
|
||||
"fun" @keyword.function
|
||||
pats:
|
||||
(pattern
|
||||
id: (ident) @variable.parameter
|
||||
)+
|
||||
"=>" @operator
|
||||
)
|
||||
(record_field) @variable.other.member
|
||||
|
||||
[
|
||||
"."
|
||||
] @punctuation.delimiter
|
||||
[
|
||||
"{" "}"
|
||||
"(" ")"
|
||||
"[|" "|]"
|
||||
"[" "]"
|
||||
] @punctuation.bracket
|
||||
(multstr_start) @punctuation.bracket
|
||||
(multstr_end) @punctuation.bracket
|
||||
(interpolation_start) @punctuation.bracket
|
||||
(interpolation_end) @punctuation.bracket
|
||||
|
||||
["forall" "default" "doc"] @keyword
|
||||
["if" "then" "else" "switch"] @keyword.control.conditional
|
||||
"import" @keyword.control.import
|
||||
|
||||
(infix_expr
|
||||
op: (_) @operator
|
||||
)
|
||||
|
||||
(applicative
|
||||
t1: (applicative
|
||||
(record_operand) @function
|
||||
)
|
||||
)
|
||||
(builtin) @function.builtin
|
17
runtime/queries/nickel/indents.scm
Normal file
17
runtime/queries/nickel/indents.scm
Normal file
|
@ -0,0 +1,17 @@
|
|||
[
|
||||
(fun_expr)
|
||||
(let_expr)
|
||||
(switch_expr)
|
||||
(ite_expr)
|
||||
|
||||
(uni_record)
|
||||
(str_chunks_multi)
|
||||
"["
|
||||
"[|"
|
||||
] @indent
|
||||
|
||||
[
|
||||
"}"
|
||||
"]"
|
||||
"|]"
|
||||
] @outdent
|
Loading…
Reference in a new issue