aboutsummaryrefslogtreecommitdiff
path: root/runtime/queries/ohm/highlights.scm
diff options
context:
space:
mode:
authorNovus Nota2024-03-24 22:30:59 +0000
committerGitHub2024-03-24 22:30:59 +0000
commit2d9e336f640cccdd347e35289c3e4c0371777a3f (patch)
tree4c0459834ad0796de350b169aa9e6d1da4996e27 /runtime/queries/ohm/highlights.scm
parent47995bfb0cf3b0bc232a87340c7a01ff26d45bbc (diff)
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>
Diffstat (limited to 'runtime/queries/ohm/highlights.scm')
-rw-r--r--runtime/queries/ohm/highlights.scm122
1 files changed, 122 insertions, 0 deletions
diff --git a/runtime/queries/ohm/highlights.scm b/runtime/queries/ohm/highlights.scm
new file mode 100644
index 00000000..68477aac
--- /dev/null
+++ b/runtime/queries/ohm/highlights.scm
@@ -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)