diff options
| author | Christian Clason <c.clason@uni-graz.at> | 2023-12-24 10:00:20 +0100 |
|---|---|---|
| committer | Christian Clason <c.clason@uni-graz.at> | 2024-01-19 16:58:37 +0100 |
| commit | 1ae9b0e4558fe7868f8cda2db65239cfb14836d0 (patch) | |
| tree | 4eea14b40b8b81d9388fb35cbc9e35b341a75c98 /queries/haskell | |
| parent | chore(tests): consistent captures (diff) | |
| download | nvim-treesitter-1ae9b0e4558fe7868f8cda2db65239cfb14836d0.tar nvim-treesitter-1ae9b0e4558fe7868f8cda2db65239cfb14836d0.tar.gz nvim-treesitter-1ae9b0e4558fe7868f8cda2db65239cfb14836d0.tar.bz2 nvim-treesitter-1ae9b0e4558fe7868f8cda2db65239cfb14836d0.tar.lz nvim-treesitter-1ae9b0e4558fe7868f8cda2db65239cfb14836d0.tar.xz nvim-treesitter-1ae9b0e4558fe7868f8cda2db65239cfb14836d0.tar.zst nvim-treesitter-1ae9b0e4558fe7868f8cda2db65239cfb14836d0.zip | |
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`
Diffstat (limited to 'queries/haskell')
| -rw-r--r-- | queries/haskell/highlights.scm | 50 |
1 files changed, 25 insertions, 25 deletions
diff --git a/queries/haskell/highlights.scm b/queries/haskell/highlights.scm index 2c2189c38..92b36434d 100644 --- a/queries/haskell/highlights.scm +++ b/queries/haskell/highlights.scm @@ -8,27 +8,27 @@ (pat_wildcard) @variable (function - patterns: (patterns (_) @parameter)) + patterns: (patterns (_) @variable.parameter)) -(exp_lambda (_)+ @parameter "->") +(exp_lambda (_)+ @variable.parameter "->") (function infix: (infix - lhs: (_) @parameter)) + lhs: (_) @variable.parameter)) (function infix: (infix - rhs: (_) @parameter)) + rhs: (_) @variable.parameter)) ;; ---------------------------------------------------------------------------- ;; Literals and comments (integer) @number (exp_negation) @number -(exp_literal (float)) @float +(exp_literal (float)) @number.float (char) @character (string) @string -(con_unit) @symbol ; unit, as in () +(con_unit) @string.special.symbol ; unit, as in () (comment) @comment @@ -82,9 +82,9 @@ [ "forall" "∀" -] @repeat +] @keyword.repeat -(pragma) @preproc +(pragma) @keyword.directive [ "if" @@ -92,13 +92,13 @@ "else" "case" "of" -] @conditional +] @keyword.conditional [ "import" "qualified" "module" -] @include +] @keyword.import [ (operator) @@ -124,12 +124,12 @@ ] @operator -(module) @namespace +(module) @module ((qualified_module (module) @constructor) . (module)) -(qualified_type (module) @namespace) -(qualified_variable (module) @namespace) -(import (module) @namespace) +(qualified_type (module) @module) +(qualified_variable (module) @module) +(import (module) @module) (import (module) @constructor . (module)) [ @@ -250,7 +250,7 @@ [ ((variable) @function.call) (qualified_variable ( - (module) @namespace + (module) @module (variable) @function.call)) ]) . (operator)) @@ -391,7 +391,7 @@ ;; namespaced quasi-quoter (quasiquote (_ - (module) @namespace + (module) @module . (variable) @function.call )) @@ -400,8 +400,8 @@ ;; ---------------------------------------------------------------------------- ;; Exceptions/error handling -((variable) @exception - (#any-of? @exception +((variable) @keyword.exception + (#any-of? @keyword.exception "error" "undefined" "try" @@ -431,8 +431,8 @@ ;; ---------------------------------------------------------------------------- ;; Debugging -((variable) @debug - (#any-of? @debug +((variable) @keyword.debug + (#any-of? @keyword.debug "trace" "traceId" "traceShow" @@ -453,11 +453,11 @@ ;; ---------------------------------------------------------------------------- ;; Fields -(field (variable) @field) -(pat_field (variable) @field) -(exp_projection field: (variable) @field) -(import_item (type) . (import_con_names (variable) @field)) -(exp_field field: [((variable) @field) (qualified_variable (variable) @field)]) +(field (variable) @variable.member) +(pat_field (variable) @variable.member) +(exp_projection field: (variable) @variable.member) +(import_item (type) . (import_con_names (variable) @variable.member)) +(exp_field field: [((variable) @variable.member) (qualified_variable (variable) @variable.member)]) ;; ---------------------------------------------------------------------------- |
