mirror of
https://github.com/helix-editor/helix.git
synced 2024-11-25 10:56:19 +04:00
2e90868a37
The repository reference used here was a fork from the actual repository, which has now been moved under ionide organization, where it is in active maintenance and development. The commit SHA is the currently latest commit from main branch. The injections.scm is copied as is from the fsharp treesitter repo [queries](https://github.com/ionide/tree-sitter-fsharp/blame/main/queries). The locals.scm is copied from the repo and the capture names are to follow the standard names: - Replace @local.definition.var @local.definition.function, and @local.definition.parameter with @local.definition - Remove (#set! "definition.function.scope" "parent") The highlights.scm is copied as well from the fsharp treesitter repo, but modified here to match helix highlight scopes based on my best guesstimates. The changes made: - Remove @spell scopes - Split @comment into @comment.line and @comment.block - Replace @comment.documentation with @comment.block.documentation - Replace @character.special with @special - Replace @variable.member with @variable.other.member - Replace @type.definition with @type - Replace @function.member with @function.method - Replace @module with @namespace - Replace @constant.macro with @function.macro - Replace @property with @variable.other.member - Replace @variable.member with @variable.other.member - Replace @variable.parameter.builtin with @variable.builtin - Replace @function.call with @function - Replace @number with @constant.numeric.integer and @constant.numeric.float - Replace @boolean with @constant.builtin.boolean - Replace @keyword.conditional with @keyword.control.conditional - Replace @keyword.return with @keyword.control.return - Replace @keyword.repeate with @keyword.control.repeat - Replace @keyword.import with @keyword.control.import - Replace @keyword.modifier with @keyword.storage.modifier - Replace @keyword.type with @keyword.storage.type - Replace @keyword.exception with @keyword.control.exception - Replace @module.builtin with @namespace
351 lines
5.0 KiB
Scheme
351 lines
5.0 KiB
Scheme
;; ----------------------------------------------------------------------------
|
|
;; Literals and comments
|
|
|
|
(line_comment) @comment.line
|
|
|
|
(block_comment) @comment.block
|
|
|
|
(xml_doc) @comment.block.documentation
|
|
|
|
(const
|
|
[
|
|
(_) @constant
|
|
(unit) @constant.builtin
|
|
])
|
|
|
|
(primary_constr_args (_) @variable.parameter)
|
|
|
|
((identifier_pattern (long_identifier (identifier) @special))
|
|
(#match? @special "^\_.*"))
|
|
|
|
((long_identifier
|
|
(identifier)+
|
|
.
|
|
(identifier) @variable.other.member))
|
|
|
|
;; ----------------------------------------------------------------------------
|
|
;; Punctuation
|
|
|
|
(wildcard_pattern) @string.special
|
|
|
|
(type_name type_name: (_) @type)
|
|
|
|
[
|
|
(type)
|
|
(atomic_type)
|
|
] @type
|
|
|
|
(member_signature
|
|
.
|
|
(identifier) @function.method
|
|
(curried_spec
|
|
(arguments_spec
|
|
"*"* @operator
|
|
(argument_spec
|
|
(argument_name_spec
|
|
"?"? @special
|
|
name: (_) @variable.parameter)))))
|
|
|
|
(union_type_case) @constant
|
|
|
|
(rules
|
|
(rule
|
|
pattern: (_) @constant
|
|
block: (_)))
|
|
|
|
(identifier_pattern
|
|
.
|
|
(_) @constant
|
|
.
|
|
(_) @variable)
|
|
|
|
(fsi_directive_decl . (string) @namespace)
|
|
|
|
(import_decl . (_) @namespace)
|
|
(named_module
|
|
name: (_) @namespace)
|
|
(namespace
|
|
name: (_) @namespace)
|
|
(module_defn
|
|
.
|
|
(_) @namespace)
|
|
|
|
(ce_expression
|
|
.
|
|
(_) @function.macro)
|
|
|
|
(field_initializer
|
|
field: (_) @variable.other.member)
|
|
|
|
(record_fields
|
|
(record_field
|
|
.
|
|
(identifier) @variable.other.member))
|
|
|
|
(dot_expression
|
|
base: (_) @namespace
|
|
field: (_) @variable.other.member)
|
|
|
|
(value_declaration_left . (_) @variable)
|
|
|
|
(function_declaration_left
|
|
. (_) @function
|
|
[
|
|
(argument_patterns)
|
|
(argument_patterns (long_identifier (identifier)))
|
|
] @variable.parameter)
|
|
|
|
(member_defn
|
|
(method_or_prop_defn
|
|
[
|
|
(property_or_ident) @function
|
|
(property_or_ident
|
|
instance: (identifier) @variable.builtin
|
|
method: (identifier) @function.method)
|
|
]
|
|
args: (_)* @variable.parameter))
|
|
|
|
(application_expression
|
|
.
|
|
[
|
|
(long_identifier_or_op [
|
|
(long_identifier (identifier)* (identifier) @function)
|
|
(identifier) @function
|
|
])
|
|
(typed_expression . (long_identifier_or_op (long_identifier (identifier)* . (identifier) @function.call)))
|
|
(dot_expression base: (_) @variable.other.member field: (_) @function)
|
|
] @function)
|
|
|
|
((infix_expression
|
|
.
|
|
(_)
|
|
.
|
|
(infix_op) @operator
|
|
.
|
|
(_) @function
|
|
)
|
|
(#eq? @operator "|>")
|
|
)
|
|
|
|
((infix_expression
|
|
.
|
|
(_) @function
|
|
.
|
|
(infix_op) @operator
|
|
.
|
|
(_)
|
|
)
|
|
(#eq? @operator "<|")
|
|
)
|
|
|
|
[
|
|
(xint)
|
|
(int)
|
|
(int16)
|
|
(uint16)
|
|
(int32)
|
|
(uint32)
|
|
(int64)
|
|
(uint64)
|
|
(nativeint)
|
|
(unativeint)
|
|
] @constant.numeric.integer
|
|
|
|
[
|
|
(ieee32)
|
|
(ieee64)
|
|
(float)
|
|
(decimal)
|
|
] @constant.numeric.float
|
|
|
|
(bool) @constant.builtin.boolean
|
|
|
|
([
|
|
(string)
|
|
(triple_quoted_string)
|
|
(verbatim_string)
|
|
(char)
|
|
] @string)
|
|
|
|
(compiler_directive_decl) @keyword.directive
|
|
|
|
(attribute) @attribute
|
|
|
|
[
|
|
"("
|
|
")"
|
|
"{"
|
|
"}"
|
|
"["
|
|
"]"
|
|
"[|"
|
|
"|]"
|
|
"{|"
|
|
"|}"
|
|
"[<"
|
|
">]"
|
|
] @punctuation.bracket
|
|
|
|
(format_string_eval
|
|
[
|
|
"{"
|
|
"}"
|
|
] @punctuation.special)
|
|
|
|
[
|
|
","
|
|
";"
|
|
] @punctuation.delimiter
|
|
|
|
[
|
|
"|"
|
|
"="
|
|
">"
|
|
"<"
|
|
"-"
|
|
"~"
|
|
"->"
|
|
"<-"
|
|
"&&"
|
|
"||"
|
|
":>"
|
|
":?>"
|
|
(infix_op)
|
|
(prefix_op)
|
|
] @operator
|
|
|
|
[
|
|
"if"
|
|
"then"
|
|
"else"
|
|
"elif"
|
|
"when"
|
|
"match"
|
|
"match!"
|
|
] @keyword.control.conditional
|
|
|
|
[
|
|
"and"
|
|
"or"
|
|
"not"
|
|
"upcast"
|
|
"downcast"
|
|
] @keyword.operator
|
|
|
|
[
|
|
"return"
|
|
"return!"
|
|
"yield"
|
|
"yield!"
|
|
] @keyword.control.return
|
|
|
|
[
|
|
"for"
|
|
"while"
|
|
"downto"
|
|
"to"
|
|
] @keyword.control.repeat
|
|
|
|
|
|
[
|
|
"open"
|
|
"#r"
|
|
"#load"
|
|
] @keyword.control.import
|
|
|
|
[
|
|
"abstract"
|
|
"delegate"
|
|
"static"
|
|
"inline"
|
|
"mutable"
|
|
"override"
|
|
"rec"
|
|
"global"
|
|
(access_modifier)
|
|
] @keyword.storage.modifier
|
|
|
|
[
|
|
"let"
|
|
"let!"
|
|
"use"
|
|
"use!"
|
|
"member"
|
|
] @keyword.function
|
|
|
|
[
|
|
"enum"
|
|
"type"
|
|
"inherit"
|
|
"interface"
|
|
] @keyword.storage.type
|
|
|
|
(try_expression
|
|
[
|
|
"try"
|
|
"with"
|
|
"finally"
|
|
] @keyword.control.exception)
|
|
|
|
((identifier) @keyword.control.exception
|
|
(#any-of? @keyword.control.exception "failwith" "failwithf" "raise" "reraise"))
|
|
|
|
[
|
|
"as"
|
|
"assert"
|
|
"begin"
|
|
"end"
|
|
"done"
|
|
"default"
|
|
"in"
|
|
"do"
|
|
"do!"
|
|
"event"
|
|
"field"
|
|
"fun"
|
|
"function"
|
|
"get"
|
|
"set"
|
|
"lazy"
|
|
"new"
|
|
"of"
|
|
"param"
|
|
"property"
|
|
"struct"
|
|
"val"
|
|
"module"
|
|
"namespace"
|
|
"with"
|
|
] @keyword
|
|
|
|
[
|
|
"null"
|
|
] @constant.builtin
|
|
|
|
(match_expression "with" @keyword.control.conditional)
|
|
|
|
((type
|
|
(long_identifier (identifier) @type.builtin))
|
|
(#any-of? @type.builtin "bool" "byte" "sbyte" "int16" "uint16" "int" "uint" "int64" "uint64" "nativeint" "unativeint" "decimal" "float" "double" "float32" "single" "char" "string" "unit"))
|
|
|
|
(preproc_if
|
|
[
|
|
"#if" @keyword.directive
|
|
"#endif" @keyword.directive
|
|
]
|
|
condition: (_)? @keyword.directive)
|
|
|
|
(preproc_else
|
|
"#else" @keyword.directive)
|
|
|
|
((long_identifier
|
|
(identifier)+ @namespace
|
|
.
|
|
(identifier)))
|
|
|
|
(long_identifier_or_op
|
|
(op_identifier) @operator)
|
|
|
|
((identifier) @namespace
|
|
(#any-of? @namespace "Array" "Async" "Directory" "File" "List" "Option" "Path" "Map" "Set" "Lazy" "Seq" "Task" "String" "Result" ))
|