From fd89c3c8335399e344e038f1141ea0657653a591 Mon Sep 17 00:00:00 2001 From: Alexander Brevig Date: Fri, 8 Mar 2024 02:54:17 +0100 Subject: [PATCH] fix: close #9771 fix comments with `(` and `)` (#9800) * fix: close #9771 update OCaml * fix: no longer match on ( ) as the underlying grammar handles these * fix: implement excellent corrections from review * fix: module -> namespace to match theme scopes --- languages.toml | 4 +- runtime/queries/comment/highlights.scm | 5 - runtime/queries/ocaml/highlights.scm | 141 ++++++++++++------------- 3 files changed, 67 insertions(+), 83 deletions(-) diff --git a/languages.toml b/languages.toml index 70953b990..e96f06183 100644 --- a/languages.toml +++ b/languages.toml @@ -1095,7 +1095,7 @@ indent = { tab-width = 2, unit = " " } [[grammar]] name = "ocaml" -source = { git = "https://github.com/tree-sitter/tree-sitter-ocaml", rev = "23d419ba45789c5a47d31448061557716b02750a", subpath = "ocaml" } +source = { git = "https://github.com/tree-sitter/tree-sitter-ocaml", rev = "9965d208337d88bbf1a38ad0b0fe49e5f5ec9677", subpath = "ocaml" } [[language]] name = "ocaml-interface" @@ -1115,7 +1115,7 @@ indent = { tab-width = 2, unit = " " } [[grammar]] name = "ocaml-interface" -source = { git = "https://github.com/tree-sitter/tree-sitter-ocaml", rev = "23d419ba45789c5a47d31448061557716b02750a", subpath = "interface" } +source = { git = "https://github.com/tree-sitter/tree-sitter-ocaml", rev = "9965d208337d88bbf1a38ad0b0fe49e5f5ec9677", subpath = "interface" } [[language]] name = "lua" diff --git a/runtime/queries/comment/highlights.scm b/runtime/queries/comment/highlights.scm index 4cefcdf74..ba26ca0bf 100644 --- a/runtime/queries/comment/highlights.scm +++ b/runtime/queries/comment/highlights.scm @@ -1,8 +1,3 @@ -[ - "(" - ")" -] @punctuation.bracket - ":" @punctuation.delimiter ; Hint level tags diff --git a/runtime/queries/ocaml/highlights.scm b/runtime/queries/ocaml/highlights.scm index 9d3bf4c8b..f2a4f0a4c 100644 --- a/runtime/queries/ocaml/highlights.scm +++ b/runtime/queries/ocaml/highlights.scm @@ -6,9 +6,12 @@ ; Types ;------ -[(class_name) (class_type_name) (type_constructor)] @type +( + (type_constructor) @type.builtin + (#match? @type.builtin "^(int|char|bytes|string|float|bool|unit|exn|array|list|option|int32|int64|nativeint|format6|lazy_t)$") +) -(type_variable) @type.parameter +[(class_name) (class_type_name) (type_constructor)] @type [(constructor_name) (tag)] @constructor @@ -29,27 +32,34 @@ (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) - (infix_operator) @operator + operator: (concat_operator) @operator (#eq? @operator "@@")) (infix_expression - (infix_operator) @operator + operator: (rel_operator) @operator right: (value_path (value_name) @function) (#eq? @operator "|>")) (application_expression function: (value_path (value_name) @function)) +; Variables +;---------- + +[(value_name) (type_variable)] @variable + +(value_pattern) @variable.parameter + ; Properties ;----------- @@ -58,55 +68,68 @@ ; Constants ;---------- -[(boolean) (unit)] @constant - -[(number) (signed_number)] @constant.numeric.integer +(boolean) @constant.builtin.boolean -(character) @constant.character +[(number) (signed_number)] @constant.numeric -(string) @string +[(string) (character)] @string (quoted_string "{" @string "}" @string) @string (escape_sequence) @constant.character.escape +(conversion_specification) @string.special + +; Operators +;---------- + +(match_expression (match_operator) @keyword) + +(value_definition [(let_operator) (let_and_operator)] @keyword) + [ - (conversion_specification) - (pretty_printing_indication) -] @punctuation.special + (prefix_operator) + (sign_operator) + (pow_operator) + (mult_operator) + (add_operator) + (concat_operator) + (rel_operator) + (and_operator) + (or_operator) + (assign_operator) + (hash_operator) + (indexing_operator) + (let_operator) + (let_and_operator) + (match_operator) +] @operator + +["*" "#" "::" "<-"] @operator ; 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" + "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 -["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 +; Punctuation +;------------ -; Macros -;------- +(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) -(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.special ["(" ")" "[" "]" "{" "}" "[|" "|]" "[<" "[>"] @punctuation.bracket @@ -117,46 +140,12 @@ "->" ";;" ":>" "+=" ":=" ".." ] @punctuation.delimiter -; Operators -;---------- - -[ - (prefix_operator) - (sign_operator) - (infix_operator) - (hash_operator) - (indexing_operator) - (let_operator) - (and_operator) - (match_operator) -] @operator - -(match_expression (match_operator) @keyword) - -(value_definition [(let_operator) (and_operator)] @keyword) - -;; TODO: this is an error now -;(prefix_operator "!" @operator) - -(infix_operator ["&" "+" "-" "=" ">" "|" "%"] @operator) - -(signed_number ["+" "-"] @operator) - -["*" "#" "::" "<-"] @operator - ; Attributes ;----------- -(attribute_id) @variable.other.member +(attribute_id) @tag ; Comments ;--------- [(comment) (line_number_directive) (directive) (shebang)] @comment - -(ERROR) @error - -; Blanket highlights -; ------------------ - -[(value_name) (type_variable)] @variable