Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'runtime/queries/ocaml/highlights.scm')
| -rw-r--r-- | runtime/queries/ocaml/highlights.scm | 145 |
1 files changed, 78 insertions, 67 deletions
diff --git a/runtime/queries/ocaml/highlights.scm b/runtime/queries/ocaml/highlights.scm index 4be4bb94..9d3bf4c8 100644 --- a/runtime/queries/ocaml/highlights.scm +++ b/runtime/queries/ocaml/highlights.scm @@ -1,25 +1,3 @@ -; Punctuation -;------------ - -"%" @punctuation.special - -["(" ")" "[" "]" "{" "}" "[|" "|]" "[<" "[>"] @punctuation.bracket - -[ - "," "." ";" ":" "=" "|" "~" "?" "+" "-" "!" ">" "&" - "->" ";;" ":>" "+=" ":=" ".." -] @punctuation.delimiter - -(object_type ["<" ">"] @punctuation.bracket) - -(attribute ["[@" "]"] @punctuation.special) -(item_attribute ["[@@" "]"] @punctuation.special) -(floating_attribute ["[@@@" "]"] @punctuation.special) -(extension ["[%" "]"] @punctuation.special) -(item_extension ["[%%" "]"] @punctuation.special) -(quoted_extension ["{%" "}"] @punctuation.special) -(quoted_item_extension ["{%%" "}"] @punctuation.special) - ; Modules ;-------- @@ -28,21 +6,11 @@ ; Types ;------ -( - (type_constructor) @type.builtin - (#match? @type.builtin "^(int|char|bytes|string|float|bool|unit|exn|array|list|option|int32|int64|nativeint|format6|lazy_t)$") -) - [(class_name) (class_type_name) (type_constructor)] @type -[(constructor_name) (tag)] @constructor - -; Variables -;---------- - -[(value_name) (type_variable)] @variable +(type_variable) @type.parameter -(value_pattern) @variable.parameter +[(constructor_name) (tag)] @constructor ; Functions ;---------- @@ -61,21 +29,21 @@ (method_name) @function.method +; Variables +;---------- + +(value_pattern) @variable.parameter + ; Application ;------------ -( - (value_name) @function.builtin - (#match? @function.builtin "^(raise(_notrace)?|failwith|invalid_arg)$") -) - (infix_expression left: (value_path (value_name) @function) - operator: (concat_operator) @operator + (infix_operator) @operator (#eq? @operator "@@")) (infix_expression - operator: (rel_operator) @operator + (infix_operator) @operator right: (value_path (value_name) @function) (#eq? @operator "|>")) @@ -90,62 +58,105 @@ ; Constants ;---------- -(boolean) @constant.builtin.boolean +[(boolean) (unit)] @constant -[(number) (signed_number)] @constant.numeric +[(number) (signed_number)] @constant.numeric.integer -[(string) (character)] @string +(character) @constant.character + +(string) @string (quoted_string "{" @string "}" @string) @string (escape_sequence) @constant.character.escape -(conversion_specification) @string.special +[ + (conversion_specification) + (pretty_printing_indication) +] @punctuation.special + +; Keywords +;--------- + +[ + "and" "as" "assert" "begin" "class" "constraint" + "end" "external" "in" + "inherit" "initializer" "lazy" "let" "match" "method" "module" + "mutable" "new" "nonrec" "object" "of" "private" "rec" "sig" "struct" + "type" "val" "virtual" "when" "with" +] @keyword + +["fun" "function" "functor"] @keyword.function + +["if" "then" "else"] @keyword.control.conditional + +["exception" "try"] @keyword.control.exception + +["include" "open"] @keyword.control.import + +["for" "to" "downto" "while" "do" "done"] @keyword.control.repeat + +; Macros +;------- + +(attribute ["[@" "]"] @attribute) +(item_attribute ["[@@" "]"] @attribute) +(floating_attribute ["[@@@" "]"] @attribute) +(extension ["[%" "]"] @function.macro) +(item_extension ["[%%" "]"] @function.macro) +(quoted_extension ["{%" "}"] @function.macro) +(quoted_item_extension ["{%%" "}"] @function.macro) +"%" @function.macro + +["(" ")" "[" "]" "{" "}" "[|" "|]" "[<" "[>"] @punctuation.bracket + +(object_type ["<" ">"] @punctuation.bracket) + +[ + "," "." ";" ":" "=" "|" "~" "?" "+" "-" "!" ">" "&" + "->" ";;" ":>" "+=" ":=" ".." +] @punctuation.delimiter ; Operators ;---------- -["*" "#" "::" "<-"] @operator - [ (prefix_operator) (sign_operator) - (pow_operator) - (mult_operator) - (add_operator) - (concat_operator) - (rel_operator) - (and_operator) - (or_operator) - (assign_operator) + (infix_operator) (hash_operator) (indexing_operator) (let_operator) - (let_and_operator) + (and_operator) (match_operator) ] @operator (match_expression (match_operator) @keyword) -(value_definition [(let_operator) (let_and_operator)] @keyword) +(value_definition [(let_operator) (and_operator)] @keyword) -; Keywords -;--------- +;; TODO: this is an error now +;(prefix_operator "!" @operator) -[ - "and" "as" "assert" "begin" "class" "constraint" "do" "done" "downto" "else" - "end" "exception" "external" "for" "fun" "function" "functor" "if" "in" - "include" "inherit" "initializer" "lazy" "let" "match" "method" "module" - "mutable" "new" "nonrec" "object" "of" "open" "private" "rec" "sig" "struct" - "then" "to" "try" "type" "val" "virtual" "when" "while" "with" -] @keyword +(infix_operator ["&" "+" "-" "=" ">" "|" "%"] @operator) + +(signed_number ["+" "-"] @operator) + +["*" "#" "::" "<-"] @operator ; Attributes ;----------- -(attribute_id) @tag +(attribute_id) @variable.other.member ; Comments ;--------- [(comment) (line_number_directive) (directive) (shebang)] @comment + +(ERROR) @error + +; Blanket highlights +; ------------------ + +[(value_name) (type_variable)] @variable |