From 1ae9b0e4558fe7868f8cda2db65239cfb14836d0 Mon Sep 17 00:00:00 2001 From: Christian Clason Date: Sun, 24 Dec 2023 10:00:20 +0100 Subject: feat!: align standard captures with upstream Problem: Sharing highlight queries with upstream tree-sitter and Helix is difficult. Solution: Where reasonable, use capture names in tree-sitter's standard list or Helix's Atom-style hierarchy. Specifically: * tree-sitter "standard capture names" (https://github.com/tree-sitter/tree-sitter/blob/3f44b896852eb7daaa6df4fb778c9bb52c70c815/highlight/src/lib.rs#L20-L72): - `@parameter` -> `@variable.parameter` - `@field` -> `@variable.member` - `@namespace` -> `@module` - `@float` -> `@number.float` - `@symbol` -> `@string.special.symbol` - `@string.regex` -> `@string.regexp` - `@text.*` -> `@markup.*` (`strong`, `italic`, `link`, `strikethrough`; with exceptions; see below) - `@text.title` -> `@markup.heading` - `@text.literal` -> `@markup.raw` - `@text.reference` -> `@markup.link` - `@text.uri` -> `@markup.link.url` (in markup links) - `@string.special` -> `@markup.link.label` (non-url links) - `@punctuation.special` -> `@markup.list` (markdown lists only; move subitems from `@text.todo`) * Helix captures (https://docs.helix-editor.com/master/themes.html#syntax-highlighting): - `@method` -> `@function.method` - `@method.call` -> `@function.method.call` - `@text.{todo,warning,note,danger}` -> `@comment.{error,warning,hint,info,todo}` - `@text.diff.{add,delete,}` -> `@diff.{plus,minus,delta}` - `@text.uri` -> `@string.special.url` (outside markup) - `@preproc` -> `@keyword.directive` - `@define` -> `@keyword.directive`(`.define`?) - `@storageclass` -> `@keyword.storage` - `@conditional` -> `@keyword.conditional` - `@debug` -> `@keyword.debug` - `@exception` -> `@keyword.exception` - `@include` -> `@keyword.import` - `@repeat` -> `@keyword.repeat` * cleanup - remove some redundant `@conceal` (but still allow it for conceal-only patterns) - remove obsolete `@error` (syntax linting is out of scope for this repo) - sort, cleanup capture list in `CONTRIBUTING.md` --- queries/clojure/highlights.scm | 62 +++++++++++++++++++++--------------------- 1 file changed, 31 insertions(+), 31 deletions(-) (limited to 'queries/clojure') diff --git a/queries/clojure/highlights.scm b/queries/clojure/highlights.scm index 2d3922adf..d0b0bf0cb 100644 --- a/queries/clojure/highlights.scm +++ b/queries/clojure/highlights.scm @@ -17,14 +17,14 @@ (dis_expr) @comment (#set! "priority" 105) ; Higher priority to mark the whole sexpr as a comment ) -(kwd_lit) @symbol +(kwd_lit) @string.special.symbol (str_lit) @string (num_lit) @number (char_lit) @character (bool_lit) @boolean (nil_lit) @constant.builtin (comment) @comment @spell -(regex_lit) @string.regex +(regex_lit) @string.regexp ["'" "`"] @string.escape @@ -49,13 +49,13 @@ ; Quoted symbols (quoting_lit - (sym_lit) @symbol) + (sym_lit) @string.special.symbol) (syn_quoting_lit - (sym_lit) @symbol) + (sym_lit) @string.special.symbol) ; Used in destructure pattern -((sym_lit) @parameter - (#lua-match? @parameter "^[&]")) +((sym_lit) @variable.parameter + (#lua-match? @variable.parameter "^[&]")) ; Inline function variables ((sym_lit) @variable.builtin @@ -102,19 +102,19 @@ ; Interop ; (.instanceMember instance args*) ; (.instanceMember Classname args*) -((sym_lit) @method - (#lua-match? @method "^%.[^-]")) +((sym_lit) @function.method + (#lua-match? @function.method "^%.[^-]")) ; (.-instanceField instance) -((sym_lit) @field - (#lua-match? @field "^%.%-.*")) +((sym_lit) @variable.member + (#lua-match? @variable.member "^%.%-.*")) ; Classname/staticField -((sym_lit) @field - (#lua-match? @field "^[%u].*/.+")) +((sym_lit) @variable.member + (#lua-match? @variable.member "^[%u].*/.+")) ; (Classname/staticMethod args*) (list_lit . - (sym_lit) @method - (#lua-match? @method "^[%u].*/.+")) + (sym_lit) @function.method + (#lua-match? @function.method "^[%u].*/.+")) ;; TODO: Special casing for the `.` macro ; Operators @@ -145,29 +145,29 @@ (#any-of? @comment "comment")) ; Conditionals -((sym_lit) @conditional - (#any-of? @conditional +((sym_lit) @keyword.conditional + (#any-of? @keyword.conditional "case" "cond" "cond->" "cond->>" "condp")) -((sym_lit) @conditional - (#any-of? @conditional +((sym_lit) @keyword.conditional + (#any-of? @keyword.conditional "if" "if-let" "if-not" "if-some")) -((sym_lit) @conditional - (#any-of? @conditional +((sym_lit) @keyword.conditional + (#any-of? @keyword.conditional "when" "when-first" "when-let" "when-not" "when-some")) ; Repeats -((sym_lit) @repeat - (#any-of? @repeat +((sym_lit) @keyword.repeat + (#any-of? @keyword.repeat "doseq" "dotimes" "for" "loop" "recur" "while")) ; Exception -((sym_lit) @exception - (#any-of? @exception +((sym_lit) @keyword.exception + (#any-of? @keyword.exception "throw" "try" "catch" "finally")) ; Includes -((sym_lit) @include - (#any-of? @include "ns" "import" "require" "use")) +((sym_lit) @keyword.import + (#any-of? @keyword.import "ns" "import" "require" "use")) ; Builtin macros ;; TODO: Do all these items belong here? @@ -350,18 +350,18 @@ ;; TODO: Reproduce bug and file ticket ;. ;[(vec_lit - ; (sym_lit)* @parameter) + ; (sym_lit)* @variable.parameter) ; (list_lit ; (vec_lit - ; (sym_lit)* @parameter))]) + ; (sym_lit)* @variable.parameter))]) ;[((list_lit ; (vec_lit -; (sym_lit) @parameter) +; (sym_lit) @variable.parameter) ; (_) ; + ; ((vec_lit -; (sym_lit) @parameter) +; (sym_lit) @variable.parameter) ; (_))) @@ -378,4 +378,4 @@ (sym_lit) @_include (#eq? @_include "ns") . - (sym_lit) @namespace) + (sym_lit) @module) -- cgit v1.2.3-70-g09d2