2024-01-06 15:05:50 +09:00
|
|
|
; >> Explanation
|
|
|
|
|
; Parsers for lisps are a bit weird in that they just return the raw forms.
|
|
|
|
|
; This means we have to do a bit of extra work in the queries to get things
|
|
|
|
|
; highlighted as they should be.
|
|
|
|
|
;
|
|
|
|
|
; For the most part this means that some things have to be assigned multiple
|
|
|
|
|
; groups.
|
|
|
|
|
; By doing this we can add a basic capture and then later refine it with more
|
|
|
|
|
; specialized captures.
|
|
|
|
|
; This can mean that sometimes things are highlighted weirdly because they
|
|
|
|
|
; have multiple highlight groups applied to them.
|
|
|
|
|
; >> Literals
|
|
|
|
|
((dis_expr) @comment
|
|
|
|
|
(#set! "priority" 105)
|
|
|
|
|
; Higher priority to mark the whole sexpr as a comment
|
|
|
|
|
)
|
|
|
|
|
|
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`
2023-12-24 10:00:20 +01:00
|
|
|
(kwd_lit) @string.special.symbol
|
2024-01-06 15:05:50 +09:00
|
|
|
|
2023-08-07 15:20:09 +02:00
|
|
|
(str_lit) @string
|
2020-10-29 22:59:36 +09:00
|
|
|
|
2024-01-06 15:05:50 +09:00
|
|
|
(num_lit) @number
|
2021-06-04 23:54:46 +01:00
|
|
|
|
2024-01-06 15:05:50 +09:00
|
|
|
(char_lit) @character
|
2021-06-04 23:54:46 +01:00
|
|
|
|
2024-01-06 15:05:50 +09:00
|
|
|
(bool_lit) @boolean
|
2021-06-04 23:54:46 +01:00
|
|
|
|
2024-01-06 15:05:50 +09:00
|
|
|
(nil_lit) @constant.builtin
|
2021-06-04 23:54:46 +01:00
|
|
|
|
2024-01-06 15:05:50 +09:00
|
|
|
(comment) @comment @spell
|
2021-06-04 23:54:46 +01:00
|
|
|
|
2024-01-06 15:05:50 +09:00
|
|
|
(regex_lit) @string.regexp
|
2021-06-04 23:54:46 +01:00
|
|
|
|
2024-01-06 15:05:50 +09:00
|
|
|
[
|
|
|
|
|
"'"
|
|
|
|
|
"`"
|
|
|
|
|
] @string.escape
|
|
|
|
|
|
|
|
|
|
[
|
|
|
|
|
"~"
|
|
|
|
|
"~@"
|
|
|
|
|
"#"
|
|
|
|
|
] @punctuation.special
|
|
|
|
|
|
|
|
|
|
[
|
|
|
|
|
"{"
|
|
|
|
|
"}"
|
|
|
|
|
"["
|
|
|
|
|
"]"
|
|
|
|
|
"("
|
|
|
|
|
")"
|
|
|
|
|
] @punctuation.bracket
|
|
|
|
|
|
|
|
|
|
; >> Symbols
|
2021-06-06 13:19:04 +01:00
|
|
|
; General symbol highlighting
|
|
|
|
|
(sym_lit) @variable
|
|
|
|
|
|
|
|
|
|
; General function calls
|
|
|
|
|
(list_lit
|
2024-01-06 15:05:50 +09:00
|
|
|
.
|
|
|
|
|
(sym_lit) @function.call)
|
|
|
|
|
|
2021-06-13 23:19:55 +01:00
|
|
|
(anon_fn_lit
|
2024-01-06 15:05:50 +09:00
|
|
|
.
|
|
|
|
|
(sym_lit) @function.call)
|
2021-06-06 13:19:04 +01:00
|
|
|
|
|
|
|
|
; Quoted symbols
|
|
|
|
|
(quoting_lit
|
2024-01-06 15:05:50 +09:00
|
|
|
(sym_lit) @string.special.symbol)
|
|
|
|
|
|
2021-06-06 13:19:04 +01:00
|
|
|
(syn_quoting_lit
|
2024-01-06 15:05:50 +09:00
|
|
|
(sym_lit) @string.special.symbol)
|
2021-06-06 13:19:04 +01:00
|
|
|
|
|
|
|
|
; Used in destructure pattern
|
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`
2023-12-24 10:00:20 +01:00
|
|
|
((sym_lit) @variable.parameter
|
2024-01-06 15:05:50 +09:00
|
|
|
(#lua-match? @variable.parameter "^[&]"))
|
2021-06-04 23:56:35 +01:00
|
|
|
|
2021-06-06 13:19:04 +01:00
|
|
|
; Inline function variables
|
2021-06-05 01:06:44 +01:00
|
|
|
((sym_lit) @variable.builtin
|
2024-03-19 17:10:41 -04:00
|
|
|
(#lua-match? @variable.builtin "^%%%d*$"))
|
|
|
|
|
|
|
|
|
|
((sym_lit) @variable.builtin
|
|
|
|
|
(#eq? @variable.builtin "%&"))
|
2021-06-05 01:06:44 +01:00
|
|
|
|
2021-06-06 13:19:04 +01:00
|
|
|
; Constructor
|
|
|
|
|
((sym_lit) @constructor
|
2024-01-06 15:05:50 +09:00
|
|
|
(#lua-match? @constructor "^-%>[^>].*"))
|
2021-04-04 09:45:45 +02:00
|
|
|
|
refactor: update Clojure queries
Instead of relying on regex for matching (which matches custom symbols),
explicitly list each of the variations in `@variable.builtin, `@conditional`,
`@function.macro`.
Add `@variable.builtin` for the builtin repl variables `*1`, `*2`, `*3`, and
`*e`, which are occasionally used in tests and comments.
Move `ex-info`, `ex-cause`, `ex-data`, and `ex-message` to `@functions.builtin`.
Add missing `clojure.core` functions to `@functions.builtin` at the bottom to
minimize diff. Includes functions from 1.12-alpha2 release as well.
2023-05-26 18:15:22 -04:00
|
|
|
; Builtin dynamic variables
|
2020-10-29 22:59:36 +09:00
|
|
|
((sym_lit) @variable.builtin
|
2024-01-05 03:19:54 +09:00
|
|
|
(#any-of? @variable.builtin
|
2024-02-23 17:42:01 +09:00
|
|
|
"*agent*" "*allow-unresolved-vars*" "*assert*" "*clojure-version*" "*command-line-args*"
|
|
|
|
|
"*compile-files*" "*compile-path*" "*compiler-options*" "*data-readers*"
|
|
|
|
|
"*default-data-reader-fn*" "*err*" "*file*" "*flush-on-newline*" "*fn-loader*" "*in*"
|
|
|
|
|
"*math-context*" "*ns*" "*out*" "*print-dup*" "*print-length*" "*print-level*" "*print-meta*"
|
|
|
|
|
"*print-namespace-maps*" "*print-readably*" "*read-eval*" "*reader-resolver*" "*source-path*"
|
|
|
|
|
"*suppress-read*" "*unchecked-math*" "*use-context-classloader*" "*verbose-defrecords*"
|
|
|
|
|
"*warn-on-reflection*"))
|
refactor: update Clojure queries
Instead of relying on regex for matching (which matches custom symbols),
explicitly list each of the variations in `@variable.builtin, `@conditional`,
`@function.macro`.
Add `@variable.builtin` for the builtin repl variables `*1`, `*2`, `*3`, and
`*e`, which are occasionally used in tests and comments.
Move `ex-info`, `ex-cause`, `ex-data`, and `ex-message` to `@functions.builtin`.
Add missing `clojure.core` functions to `@functions.builtin` at the bottom to
minimize diff. Includes functions from 1.12-alpha2 release as well.
2023-05-26 18:15:22 -04:00
|
|
|
|
|
|
|
|
; Builtin repl variables
|
|
|
|
|
((sym_lit) @variable.builtin
|
2024-01-06 15:05:50 +09:00
|
|
|
(#any-of? @variable.builtin "*1" "*2" "*3" "*e"))
|
2020-10-29 22:59:36 +09:00
|
|
|
|
2021-06-06 13:19:04 +01:00
|
|
|
; Types
|
2024-03-19 17:10:41 -04:00
|
|
|
(sym_lit
|
|
|
|
|
name: (sym_name) @_name
|
|
|
|
|
(#lua-match? @_name "^[%u][^/%s]*$")) @type
|
2024-01-06 15:05:50 +09:00
|
|
|
|
|
|
|
|
; Symbols with `.` but not `/`
|
2024-03-19 17:10:41 -04:00
|
|
|
(sym_lit
|
|
|
|
|
!namespace
|
|
|
|
|
name: (sym_name) @_name
|
|
|
|
|
(#lua-match? @_name "^[^.]+[.]")) @type
|
2020-10-29 22:59:36 +09:00
|
|
|
|
2021-06-06 13:19:04 +01:00
|
|
|
; Interop
|
2023-08-27 03:25:43 -04:00
|
|
|
; (.instanceMember instance args*)
|
|
|
|
|
; (.instanceMember Classname args*)
|
2024-03-19 17:10:41 -04:00
|
|
|
((sym_lit
|
|
|
|
|
name: (sym_name) @_name) @function.method
|
|
|
|
|
(#lua-match? @_name "^%.[^-]"))
|
2024-01-06 15:05:50 +09:00
|
|
|
|
2023-08-27 03:25:43 -04:00
|
|
|
; (.-instanceField instance)
|
2024-03-19 17:10:41 -04:00
|
|
|
((sym_name) @variable.member
|
|
|
|
|
(#lua-match? @variable.member "^%.%-%S*"))
|
2024-01-06 15:05:50 +09:00
|
|
|
|
2023-08-27 03:25:43 -04:00
|
|
|
; Classname/staticField
|
2024-03-19 17:10:41 -04:00
|
|
|
(sym_lit
|
|
|
|
|
namespace: (sym_ns) @_namespace
|
|
|
|
|
(#lua-match? @_namespace "^[%u]%S*$")) @variable.member
|
2024-01-06 15:05:50 +09:00
|
|
|
|
2023-08-27 03:25:43 -04:00
|
|
|
; (Classname/staticMethod args*)
|
2021-06-05 01:36:20 +01:00
|
|
|
(list_lit
|
2024-01-06 15:05:50 +09:00
|
|
|
.
|
2024-03-19 17:10:41 -04:00
|
|
|
(sym_lit
|
|
|
|
|
namespace: (sym_ns) @_namespace
|
|
|
|
|
(#lua-match? @_namespace "^%u")) @function.method)
|
2021-06-06 13:19:04 +01:00
|
|
|
|
2024-01-06 15:05:50 +09:00
|
|
|
; TODO: Special casing for the `.` macro
|
2021-06-06 13:19:04 +01:00
|
|
|
; Operators
|
2021-06-04 23:56:35 +01:00
|
|
|
((sym_lit) @operator
|
2024-01-06 15:05:50 +09:00
|
|
|
(#any-of? @operator "*" "*'" "+" "+'" "-" "-'" "/" "<" "<=" ">" ">=" "=" "=="))
|
|
|
|
|
|
2021-06-06 13:19:04 +01:00
|
|
|
((sym_lit) @keyword.operator
|
2024-01-06 15:05:50 +09:00
|
|
|
(#any-of? @keyword.operator "not" "not=" "and" "or"))
|
2021-06-04 23:56:35 +01:00
|
|
|
|
2021-06-06 13:19:04 +01:00
|
|
|
; Definition functions
|
|
|
|
|
((sym_lit) @keyword
|
2024-02-23 17:42:01 +09:00
|
|
|
(#any-of? @keyword
|
|
|
|
|
"def" "defonce" "defrecord" "defmacro" "definline" "definterface" "defmulti" "defmethod"
|
|
|
|
|
"defstruct" "defprotocol" "deftype"))
|
2024-01-06 15:05:50 +09:00
|
|
|
|
2021-06-06 13:19:04 +01:00
|
|
|
((sym_lit) @keyword
|
2024-01-06 15:05:50 +09:00
|
|
|
(#eq? @keyword "declare"))
|
|
|
|
|
|
2023-02-24 06:37:45 -05:00
|
|
|
((sym_name) @keyword.coroutine
|
2024-02-23 17:42:01 +09:00
|
|
|
(#any-of? @keyword.coroutine
|
|
|
|
|
"alts!" "alts!!" "await" "await-for" "await1" "chan" "close!" "future" "go" "sync" "thread"
|
|
|
|
|
"timeout" "<!" "<!!" ">!" ">!!"))
|
2024-01-06 15:05:50 +09:00
|
|
|
|
2024-03-19 17:10:41 -04:00
|
|
|
((sym_lit
|
|
|
|
|
name: (sym_name) @_keyword.function.name) @keyword.function
|
|
|
|
|
(#any-of? @_keyword.function.name "defn" "defn-" "fn" "fn*"))
|
2021-06-05 01:36:55 +01:00
|
|
|
|
2021-06-06 13:19:04 +01:00
|
|
|
; Comment
|
|
|
|
|
((sym_lit) @comment
|
2024-03-19 17:10:41 -04:00
|
|
|
(#eq? @comment "comment"))
|
2021-06-04 23:56:35 +01:00
|
|
|
|
2021-06-06 13:19:04 +01:00
|
|
|
; Conditionals
|
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`
2023-12-24 10:00:20 +01:00
|
|
|
((sym_lit) @keyword.conditional
|
2024-01-06 15:05:50 +09:00
|
|
|
(#any-of? @keyword.conditional "case" "cond" "cond->" "cond->>" "condp"))
|
|
|
|
|
|
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`
2023-12-24 10:00:20 +01:00
|
|
|
((sym_lit) @keyword.conditional
|
2024-01-06 15:05:50 +09:00
|
|
|
(#any-of? @keyword.conditional "if" "if-let" "if-not" "if-some"))
|
|
|
|
|
|
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`
2023-12-24 10:00:20 +01:00
|
|
|
((sym_lit) @keyword.conditional
|
2024-01-06 15:05:50 +09:00
|
|
|
(#any-of? @keyword.conditional "when" "when-first" "when-let" "when-not" "when-some"))
|
2021-06-06 13:19:04 +01:00
|
|
|
|
|
|
|
|
; Repeats
|
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`
2023-12-24 10:00:20 +01:00
|
|
|
((sym_lit) @keyword.repeat
|
2024-01-06 15:05:50 +09:00
|
|
|
(#any-of? @keyword.repeat "doseq" "dotimes" "for" "loop" "recur" "while"))
|
2020-10-29 22:59:36 +09:00
|
|
|
|
2021-06-06 13:19:04 +01:00
|
|
|
; Exception
|
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`
2023-12-24 10:00:20 +01:00
|
|
|
((sym_lit) @keyword.exception
|
2024-01-06 15:05:50 +09:00
|
|
|
(#any-of? @keyword.exception "throw" "try" "catch" "finally"))
|
2021-06-06 13:19:04 +01:00
|
|
|
|
|
|
|
|
; Includes
|
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`
2023-12-24 10:00:20 +01:00
|
|
|
((sym_lit) @keyword.import
|
2024-01-06 15:05:50 +09:00
|
|
|
(#any-of? @keyword.import "ns" "import" "require" "use"))
|
2021-06-06 13:19:04 +01:00
|
|
|
|
|
|
|
|
; Builtin macros
|
2024-01-06 15:05:50 +09:00
|
|
|
; TODO: Do all these items belong here?
|
2024-03-19 17:10:41 -04:00
|
|
|
((sym_lit
|
|
|
|
|
name: (sym_name) @function.macro)
|
2024-01-05 03:19:54 +09:00
|
|
|
(#any-of? @function.macro
|
2024-02-23 17:42:01 +09:00
|
|
|
"." ".." "->" "->>" "amap" "areduce" "as->" "assert" "binding" "bound-fn" "delay" "do" "dosync"
|
|
|
|
|
"doto" "extend-protocol" "extend-type" "gen-class" "gen-interface" "io!" "lazy-cat" "lazy-seq"
|
|
|
|
|
"let" "letfn" "locking" "memfn" "monitor-enter" "monitor-exit" "proxy" "proxy-super" "pvalues"
|
|
|
|
|
"refer-clojure" "reify" "set!" "some->" "some->>" "time" "unquote" "unquote-splicing" "var"
|
|
|
|
|
"vswap!" "with-bindings" "with-in-str" "with-loading-context" "with-local-vars" "with-open"
|
|
|
|
|
"with-out-str" "with-precision" "with-redefs"))
|
2020-10-29 22:59:36 +09:00
|
|
|
|
2021-06-06 13:19:04 +01:00
|
|
|
; All builtin functions
|
|
|
|
|
; (->> (ns-publics *ns*)
|
|
|
|
|
; (keep (fn [[s v]] (when-not (:macro (meta v)) s)))
|
|
|
|
|
; sort
|
refactor: update Clojure queries
Instead of relying on regex for matching (which matches custom symbols),
explicitly list each of the variations in `@variable.builtin, `@conditional`,
`@function.macro`.
Add `@variable.builtin` for the builtin repl variables `*1`, `*2`, `*3`, and
`*e`, which are occasionally used in tests and comments.
Move `ex-info`, `ex-cause`, `ex-data`, and `ex-message` to `@functions.builtin`.
Add missing `clojure.core` functions to `@functions.builtin` at the bottom to
minimize diff. Includes functions from 1.12-alpha2 release as well.
2023-05-26 18:15:22 -04:00
|
|
|
; clojure.pprint/pprint))
|
2024-01-06 15:05:50 +09:00
|
|
|
; ...and then lots of manual filtering...
|
2024-03-19 17:10:41 -04:00
|
|
|
((sym_lit
|
|
|
|
|
name: (sym_name) @function.builtin)
|
2024-01-05 03:19:54 +09:00
|
|
|
(#any-of? @function.builtin
|
2024-02-23 17:42:01 +09:00
|
|
|
"->ArrayChunk" "->Eduction" "->Vec" "->VecNode" "->VecSeq" "-cache-protocol-fn" "-reset-methods"
|
|
|
|
|
"PrintWriter-on" "StackTraceElement->vec" "Throwable->map" "accessor" "aclone" "add-classpath"
|
|
|
|
|
"add-tap" "add-watch" "agent" "agent-error" "agent-errors" "aget" "alength" "alias" "all-ns"
|
|
|
|
|
"alter" "alter-meta!" "alter-var-root" "ancestors" "any?" "apply" "array-map" "aset"
|
|
|
|
|
"aset-boolean" "aset-byte" "aset-char" "aset-double" "aset-float" "aset-int" "aset-long"
|
|
|
|
|
"aset-short" "assoc" "assoc!" "assoc-in" "associative?" "atom" "bases" "bean" "bigdec" "bigint"
|
|
|
|
|
"biginteger" "bit-and" "bit-and-not" "bit-clear" "bit-flip" "bit-not" "bit-or" "bit-set"
|
|
|
|
|
"bit-shift-left" "bit-shift-right" "bit-test" "bit-xor" "boolean" "boolean-array" "boolean?"
|
|
|
|
|
"booleans" "bound-fn*" "bound?" "bounded-count" "butlast" "byte" "byte-array" "bytes" "bytes?"
|
|
|
|
|
"cast" "cat" "char" "char-array" "char-escape-string" "char-name-string" "char?" "chars" "chunk"
|
|
|
|
|
"chunk-append" "chunk-buffer" "chunk-cons" "chunk-first" "chunk-next" "chunk-rest"
|
|
|
|
|
"chunked-seq?" "class" "class?" "clear-agent-errors" "clojure-version" "coll?" "commute" "comp"
|
|
|
|
|
"comparator" "compare" "compare-and-set!" "compile" "complement" "completing" "concat" "conj"
|
|
|
|
|
"conj!" "cons" "constantly" "construct-proxy" "contains?" "count" "counted?" "create-ns"
|
|
|
|
|
"create-struct" "cycle" "dec" "dec'" "decimal?" "dedupe" "default-data-readers" "delay?"
|
|
|
|
|
"deliver" "denominator" "deref" "derive" "descendants" "destructure" "disj" "disj!" "dissoc"
|
|
|
|
|
"dissoc!" "distinct" "distinct?" "doall" "dorun" "double" "double-array" "eduction" "empty"
|
|
|
|
|
"empty?" "ensure" "ensure-reduced" "enumeration-seq" "error-handler" "error-mode" "eval" "even?"
|
|
|
|
|
"every-pred" "every?" "extend" "extenders" "extends?" "false?" "ffirst" "file-seq" "filter"
|
|
|
|
|
"filterv" "find" "find-keyword" "find-ns" "find-protocol-impl" "find-protocol-method" "find-var"
|
|
|
|
|
"first" "flatten" "float" "float-array" "float?" "floats" "flush" "fn?" "fnext" "fnil" "force"
|
|
|
|
|
"format" "frequencies" "future-call" "future-cancel" "future-cancelled?" "future-done?"
|
|
|
|
|
"future?" "gensym" "get" "get-in" "get-method" "get-proxy-class" "get-thread-bindings"
|
|
|
|
|
"get-validator" "group-by" "halt-when" "hash" "hash-combine" "hash-map" "hash-ordered-coll"
|
|
|
|
|
"hash-set" "hash-unordered-coll" "ident?" "identical?" "identity" "ifn?" "in-ns" "inc" "inc'"
|
|
|
|
|
"indexed?" "init-proxy" "inst-ms" "inst-ms*" "inst?" "instance?" "int" "int-array" "int?"
|
|
|
|
|
"integer?" "interleave" "intern" "interpose" "into" "into-array" "ints" "isa?" "iterate"
|
|
|
|
|
"iterator-seq" "juxt" "keep" "keep-indexed" "key" "keys" "keyword" "keyword?" "last" "line-seq"
|
|
|
|
|
"list" "list*" "list?" "load" "load-file" "load-reader" "load-string" "loaded-libs" "long"
|
|
|
|
|
"long-array" "longs" "macroexpand" "macroexpand-1" "make-array" "make-hierarchy" "map"
|
|
|
|
|
"map-entry?" "map-indexed" "map?" "mapcat" "mapv" "max" "max-key" "memoize" "merge" "merge-with"
|
|
|
|
|
"meta" "method-sig" "methods" "min" "min-key" "mix-collection-hash" "mod" "munge" "name"
|
|
|
|
|
"namespace" "namespace-munge" "nat-int?" "neg-int?" "neg?" "newline" "next" "nfirst" "nil?"
|
|
|
|
|
"nnext" "not-any?" "not-empty" "not-every?" "ns-aliases" "ns-imports" "ns-interns" "ns-map"
|
|
|
|
|
"ns-name" "ns-publics" "ns-refers" "ns-resolve" "ns-unalias" "ns-unmap" "nth" "nthnext"
|
|
|
|
|
"nthrest" "num" "number?" "numerator" "object-array" "odd?" "parents" "partial" "partition"
|
|
|
|
|
"partition-all" "partition-by" "pcalls" "peek" "persistent!" "pmap" "pop" "pop!"
|
|
|
|
|
"pop-thread-bindings" "pos-int?" "pos?" "pr" "pr-str" "prefer-method" "prefers"
|
|
|
|
|
"primitives-classnames" "print" "print-ctor" "print-dup" "print-method" "print-simple"
|
|
|
|
|
"print-str" "printf" "println" "println-str" "prn" "prn-str" "promise" "proxy-call-with-super"
|
|
|
|
|
"proxy-mappings" "proxy-name" "push-thread-bindings" "qualified-ident?" "qualified-keyword?"
|
|
|
|
|
"qualified-symbol?" "quot" "rand" "rand-int" "rand-nth" "random-sample" "range" "ratio?"
|
|
|
|
|
"rational?" "rationalize" "re-find" "re-groups" "re-matcher" "re-matches" "re-pattern" "re-seq"
|
|
|
|
|
"read" "read+string" "read-line" "read-string" "reader-conditional" "reader-conditional?"
|
|
|
|
|
"realized?" "record?" "reduce" "reduce-kv" "reduced" "reduced?" "reductions" "ref"
|
|
|
|
|
"ref-history-count" "ref-max-history" "ref-min-history" "ref-set" "refer"
|
|
|
|
|
"release-pending-sends" "rem" "remove" "remove-all-methods" "remove-method" "remove-ns"
|
|
|
|
|
"remove-tap" "remove-watch" "repeat" "repeatedly" "replace" "replicate" "requiring-resolve"
|
|
|
|
|
"reset!" "reset-meta!" "reset-vals!" "resolve" "rest" "restart-agent" "resultset-seq" "reverse"
|
|
|
|
|
"reversible?" "rseq" "rsubseq" "run!" "satisfies?" "second" "select-keys" "send" "send-off"
|
|
|
|
|
"send-via" "seq" "seq?" "seqable?" "seque" "sequence" "sequential?" "set"
|
|
|
|
|
"set-agent-send-executor!" "set-agent-send-off-executor!" "set-error-handler!" "set-error-mode!"
|
|
|
|
|
"set-validator!" "set?" "short" "short-array" "shorts" "shuffle" "shutdown-agents"
|
|
|
|
|
"simple-ident?" "simple-keyword?" "simple-symbol?" "slurp" "some" "some-fn" "some?" "sort"
|
|
|
|
|
"sort-by" "sorted-map" "sorted-map-by" "sorted-set" "sorted-set-by" "sorted?" "special-symbol?"
|
|
|
|
|
"spit" "split-at" "split-with" "str" "string?" "struct" "struct-map" "subs" "subseq" "subvec"
|
|
|
|
|
"supers" "swap!" "swap-vals!" "symbol" "symbol?" "tagged-literal" "tagged-literal?" "take"
|
|
|
|
|
"take-last" "take-nth" "take-while" "tap>" "test" "the-ns" "thread-bound?" "to-array"
|
|
|
|
|
"to-array-2d" "trampoline" "transduce" "transient" "tree-seq" "true?" "type" "unchecked-add"
|
|
|
|
|
"unchecked-add-int" "unchecked-byte" "unchecked-char" "unchecked-dec" "unchecked-dec-int"
|
|
|
|
|
"unchecked-divide-int" "unchecked-double" "unchecked-float" "unchecked-inc" "unchecked-inc-int"
|
|
|
|
|
"unchecked-int" "unchecked-long" "unchecked-multiply" "unchecked-multiply-int"
|
|
|
|
|
"unchecked-negate" "unchecked-negate-int" "unchecked-remainder-int" "unchecked-short"
|
|
|
|
|
"unchecked-subtract" "unchecked-subtract-int" "underive" "unquote" "unquote-splicing"
|
|
|
|
|
"unreduced" "unsigned-bit-shift-right" "update" "update-in" "update-proxy" "uri?" "uuid?" "val"
|
|
|
|
|
"vals" "var-get" "var-set" "var?" "vary-meta" "vec" "vector" "vector-of" "vector?" "volatile!"
|
|
|
|
|
"volatile?" "vreset!" "with-bindings*" "with-meta" "with-redefs-fn" "xml-seq" "zero?" "zipmap"
|
|
|
|
|
; earlier
|
|
|
|
|
"drop" "drop-last" "drop-while" "double?" "doubles" "ex-data" "ex-info"
|
|
|
|
|
; 1.10
|
2024-01-05 03:19:54 +09:00
|
|
|
"ex-cause" "ex-message"
|
2024-02-23 17:42:01 +09:00
|
|
|
; 1.11
|
|
|
|
|
"NaN?" "abs" "infinite?" "iteration" "random-uuid" "parse-boolean" "parse-double" "parse-long"
|
|
|
|
|
"parse-uuid" "seq-to-map-for-destructuring" "update-keys" "update-vals"
|
|
|
|
|
; 1.12
|
2024-01-05 03:19:54 +09:00
|
|
|
"partitionv" "partitionv-all" "splitv-at"))
|
2024-01-20 18:47:56 +09:00
|
|
|
|
2024-01-06 15:05:50 +09:00
|
|
|
; >> Context based highlighting
|
|
|
|
|
; def-likes
|
|
|
|
|
; Correctly highlight docstrings
|
2022-08-29 23:36:28 +02:00
|
|
|
;(list_lit
|
2024-01-06 15:05:50 +09:00
|
|
|
;.
|
|
|
|
|
;(sym_lit) @_keyword ; Don't really want to highlight twice
|
|
|
|
|
;(#any-of? @_keyword
|
|
|
|
|
;"def" "defonce" "defrecord" "defmacro" "definline"
|
|
|
|
|
;"defmulti" "defmethod" "defstruct" "defprotocol"
|
|
|
|
|
;"deftype")
|
|
|
|
|
;.
|
|
|
|
|
;(sym_lit)
|
|
|
|
|
;.
|
|
|
|
|
; TODO: Add @comment highlight
|
|
|
|
|
;(str_lit)?
|
|
|
|
|
;.
|
|
|
|
|
;(_))
|
2021-11-01 22:35:31 +01:00
|
|
|
; Function definitions
|
2021-06-06 13:19:18 +01:00
|
|
|
(list_lit
|
2024-01-06 15:05:50 +09:00
|
|
|
.
|
2024-03-19 17:10:41 -04:00
|
|
|
((sym_lit
|
|
|
|
|
name: (sym_name) @_keyword.function.name)
|
|
|
|
|
(#any-of? @_keyword.function.name "defn" "defn-" "fn" "fn*"))
|
2024-01-06 15:05:50 +09:00
|
|
|
.
|
|
|
|
|
(sym_lit)? @function
|
|
|
|
|
.
|
|
|
|
|
; TODO: Add @comment highlight
|
|
|
|
|
(str_lit)?)
|
|
|
|
|
|
|
|
|
|
; TODO: Fix parameter highlighting
|
|
|
|
|
; I think there's a bug here in nvim-treesitter
|
|
|
|
|
; TODO: Reproduce bug and file ticket
|
|
|
|
|
;.
|
|
|
|
|
;[(vec_lit
|
|
|
|
|
; (sym_lit)* @variable.parameter)
|
|
|
|
|
; (list_lit
|
|
|
|
|
; (vec_lit
|
|
|
|
|
; (sym_lit)* @variable.parameter))])
|
2021-06-06 13:19:18 +01:00
|
|
|
;[((list_lit
|
|
|
|
|
; (vec_lit
|
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`
2023-12-24 10:00:20 +01:00
|
|
|
; (sym_lit) @variable.parameter)
|
2021-06-06 13:19:18 +01:00
|
|
|
; (_)
|
|
|
|
|
; +
|
|
|
|
|
; ((vec_lit
|
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`
2023-12-24 10:00:20 +01:00
|
|
|
; (sym_lit) @variable.parameter)
|
2021-06-06 13:19:18 +01:00
|
|
|
; (_)))
|
2021-06-06 13:18:03 +01:00
|
|
|
; Meta punctuation
|
2024-01-06 15:05:50 +09:00
|
|
|
; NOTE: When the above `Function definitions` query captures the
|
|
|
|
|
; the @function it also captures the child meta_lit
|
|
|
|
|
; We capture the meta_lit symbol (^) after so that the later
|
|
|
|
|
; highlighting overrides the former
|
2021-06-06 13:18:03 +01:00
|
|
|
"^" @punctuation.special
|
2021-06-06 13:19:18 +01:00
|
|
|
|
2024-01-06 15:05:50 +09:00
|
|
|
; namespaces
|
2021-06-06 13:19:18 +01:00
|
|
|
(list_lit
|
2024-01-06 15:05:50 +09:00
|
|
|
.
|
|
|
|
|
(sym_lit) @_include
|
|
|
|
|
(#eq? @_include "ns")
|
|
|
|
|
.
|
|
|
|
|
(sym_lit) @module)
|