mirror of https://github.com/helix-editor/helix
feat: Add `Ohm` language support (#9991)
* feat: Add `Ohm` language support Hope this commit makes it into release :) * Update runtime/queries/ohm/highlights.scm Co-authored-by: Michael Davis <mcarsondavis@gmail.com> * chore: final newline --------- Co-authored-by: Michael Davis <mcarsondavis@gmail.com>pull/10000/head
parent
47995bfb0c
commit
2d9e336f64
@ -0,0 +1,122 @@
|
||||
; See: https://docs.helix-editor.com/master/themes.html#syntax-highlighting
|
||||
|
||||
; attribute
|
||||
; ---------
|
||||
|
||||
(case_name) @attribute
|
||||
|
||||
; comment.line
|
||||
; ------------
|
||||
|
||||
[
|
||||
(singleline_comment)
|
||||
(rule_descr)
|
||||
] @comment.line
|
||||
|
||||
; comment.block
|
||||
; -------------
|
||||
|
||||
(multiline_comment) @comment.block
|
||||
|
||||
; function.method
|
||||
; ---------------
|
||||
|
||||
(rule
|
||||
name: (identifier) @function.method)
|
||||
|
||||
; function.builtin
|
||||
; ----------------
|
||||
|
||||
; Lexical
|
||||
((identifier) @function.builtin
|
||||
(#any-of? @function.builtin
|
||||
"any"
|
||||
"alnum"
|
||||
"end"
|
||||
"digit" "hexDigit"
|
||||
"letter"
|
||||
"space"
|
||||
"lower" "upper" "caseInsensitive"
|
||||
"listOf" "nonemptyListOf" "emptyListOf"
|
||||
"applySyntactic")
|
||||
(#is-not? local))
|
||||
|
||||
; Syntactic
|
||||
((identifier) @function.builtin
|
||||
(#any-of? @function.builtin "ListOf" "NonemptyListOf" "EmptyListOf")
|
||||
(#is-not? local))
|
||||
|
||||
; function.method (continuing)
|
||||
; ---------------
|
||||
|
||||
(term
|
||||
base: (identifier) @function.method)
|
||||
|
||||
; string.special
|
||||
; --------------
|
||||
|
||||
(escape_char) @constant.character.escape
|
||||
|
||||
; string
|
||||
; ------
|
||||
|
||||
[
|
||||
(terminal_string)
|
||||
(one_char_terminal)
|
||||
] @string
|
||||
|
||||
; type
|
||||
; ----
|
||||
|
||||
(super_grammar
|
||||
name: (identifier) @type)
|
||||
|
||||
(grammar
|
||||
name: (identifier) @type)
|
||||
|
||||
; operator
|
||||
; --------
|
||||
|
||||
[
|
||||
; "=" ":=" "+="
|
||||
(define) (override) (extend)
|
||||
|
||||
; "&" "~"
|
||||
(lookahead) (negative_lookahead)
|
||||
|
||||
; "#"
|
||||
(lexification)
|
||||
|
||||
; "*" "+" "?"
|
||||
(zero_or_more) (one_or_more) (zero_or_one)
|
||||
|
||||
; "..."
|
||||
(super_splice)
|
||||
|
||||
"<:" ".." "|"
|
||||
] @operator
|
||||
|
||||
; punctuation.bracket
|
||||
; -------------------
|
||||
|
||||
[
|
||||
"<"
|
||||
">"
|
||||
"{"
|
||||
"}"
|
||||
] @punctuation.bracket
|
||||
|
||||
(alt
|
||||
"(" @punctuation.bracket
|
||||
")" @punctuation.bracket)
|
||||
|
||||
; punctuation.delimiter
|
||||
; ---------------------
|
||||
|
||||
"," @punctuation.delimiter
|
||||
|
||||
; variable.parameter
|
||||
; ------------------
|
||||
|
||||
(formals
|
||||
(identifier) @variable.parameter)
|
@ -0,0 +1,37 @@
|
||||
; See: https://docs.helix-editor.com/guides/indent.html
|
||||
|
||||
; indent
|
||||
; ------
|
||||
|
||||
[
|
||||
; <..., ...>
|
||||
(formals)
|
||||
(params)
|
||||
|
||||
; (...| ...)
|
||||
(alt)
|
||||
] @indent
|
||||
|
||||
; outdent
|
||||
; -------
|
||||
|
||||
[
|
||||
"}"
|
||||
")"
|
||||
">"
|
||||
] @outdent
|
||||
|
||||
; align
|
||||
; -----
|
||||
|
||||
; | ... | ...
|
||||
(rule_body
|
||||
. (top_level_term) @anchor
|
||||
(#set! "scope" "tail")) @align
|
||||
|
||||
; N/A or unused:
|
||||
; --------------
|
||||
; indent.always
|
||||
; outdent.always
|
||||
; extend
|
||||
; extend.prevent-once
|
@ -0,0 +1,7 @@
|
||||
; See: https://docs.helix-editor.com/guides/injection.html
|
||||
|
||||
((singleline_comment) @injection.content
|
||||
(#set! injection.language "comment"))
|
||||
|
||||
((multiline_comment) @injection.content
|
||||
(#set! injection.language "comment"))
|
@ -0,0 +1,40 @@
|
||||
; See: https://docs.helix-editor.com/guides/textobject.html
|
||||
|
||||
; function.inside & around
|
||||
; ------------------------
|
||||
|
||||
(rule
|
||||
body: (_) @function.inside) @function.around
|
||||
|
||||
; class.inside & around
|
||||
; ---------------------
|
||||
|
||||
(grammar
|
||||
body: (_) @class.inside) @class.around
|
||||
|
||||
; parameter.inside & around
|
||||
; -------------------------
|
||||
|
||||
(formals
|
||||
((_) @parameter.inside . ","? @parameter.around) @parameter.around)
|
||||
|
||||
(rule_body
|
||||
((_) @parameter.inside . "|"? @parameter.around) @parameter.around)
|
||||
|
||||
(params
|
||||
((_) @parameter.inside . ","? @parameter.around) @parameter.around)
|
||||
|
||||
(alt
|
||||
((_) @parameter.inside . "|"? @parameter.around) @parameter.around)
|
||||
|
||||
; comment.inside
|
||||
; --------------
|
||||
|
||||
(multiline_comment)+ @comment.inside
|
||||
(singleline_comment)+ @comment.inside
|
||||
|
||||
; comment.around
|
||||
; --------------
|
||||
|
||||
(multiline_comment)+ @comment.around
|
||||
(singleline_comment)+ @comment.around
|
Loading…
Reference in New Issue