nvim-treesitter/runtime/queries/perl/highlights.scm

347 lines
5.5 KiB
Scheme
Raw Normal View History

2024-01-06 15:05:50 +09:00
((source_file
.
(comment) @keyword.directive @nospell)
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
(#lua-match? @keyword.directive "^#!/"))
2024-01-06 15:05:50 +09:00
[
"use"
"no"
"require"
] @keyword.import
2024-01-06 15:05:50 +09:00
[
"if"
"elsif"
"unless"
"else"
] @keyword.conditional
(conditional_expression
[
"?"
":"
] @keyword.conditional.ternary)
2024-01-06 15:05:50 +09:00
[
"while"
"until"
"for"
"foreach"
] @keyword.repeat
2024-01-20 20:05:29 +00:00
("continue" @keyword.repeat
(block))
[
"try"
"catch"
"finally"
] @keyword.exception
"return" @keyword.return
[
"sub"
"method"
] @keyword.function
2024-09-22 21:15:38 +03:00
[
"async"
"await"
] @keyword.coroutine
2024-01-06 15:05:50 +09:00
[
"map"
"grep"
"sort"
] @function.builtin
[
"package"
"class"
2024-09-22 21:15:38 +03:00
"role"
] @keyword.import
[
"defer"
"do"
"eval"
2024-01-06 15:05:50 +09:00
"my"
"our"
"local"
2024-09-22 21:15:38 +03:00
"dynamically"
2024-01-06 15:05:50 +09:00
"state"
"field"
2024-01-06 15:05:50 +09:00
"last"
"next"
"redo"
"goto"
"undef"
] @keyword
2024-01-06 15:05:50 +09:00
(_
operator: _ @operator)
"\\" @operator
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
(yadayada) @keyword.exception
2024-01-06 15:05:50 +09:00
(phaser_statement
phase: _ @keyword)
2024-09-22 21:15:38 +03:00
(class_phaser_statement
phase: _ @keyword)
[
2024-01-06 15:05:50 +09:00
"or"
2024-09-22 21:15:38 +03:00
"xor"
2024-01-06 15:05:50 +09:00
"and"
"eq"
2024-09-22 21:15:38 +03:00
"equ"
"eqr"
2024-01-06 15:05:50 +09:00
"ne"
"cmp"
"lt"
"le"
"ge"
"gt"
"isa"
] @keyword.operator
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
(eof_marker) @keyword.directive
2024-01-06 15:05:50 +09:00
(data_section) @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
(pod) @none
2023-08-03 13:49:22 +03:00
[
(number)
(version)
] @number
2024-09-22 21:15:38 +03:00
(boolean) @boolean
[
2024-01-06 15:05:50 +09:00
(string_literal)
(interpolated_string_literal)
(quoted_word_list)
(command_string)
(heredoc_content)
(replacement)
(transliteration_content)
] @string
[
(heredoc_token)
(command_heredoc_token)
(heredoc_end)
] @label
2024-01-06 15:05:50 +09:00
[
(escape_sequence)
(escaped_delimiter)
] @string.escape
(_
modifiers: _ @character.special)
2024-01-06 15:05:50 +09:00
[
(quoted_regexp)
(match_regexp)
(regexp_content)
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
] @string.regexp
2023-10-23 21:40:18 +03:00
(autoquoted_bareword) @string.special
2024-01-06 15:05:50 +09:00
(use_statement
(package) @type)
(package_statement
(package) @type)
(class_statement
(package) @type)
2024-01-06 15:05:50 +09:00
(require_expression
(bareword) @type)
(subroutine_declaration_statement
name: (bareword) @function)
(method_declaration_statement
name: (bareword) @function)
(attribute_name) @attribute
2024-01-06 15:05:50 +09:00
(attribute_value) @string
(label) @label
2023-08-03 13:49:22 +03:00
2024-01-06 15:05:50 +09:00
(statement_label
label: _ @label)
(relational_expression
operator: "isa"
right: (bareword) @type)
(function_call_expression
(function) @function.call)
2023-08-03 13:49:22 +03:00
2024-01-06 15:05:50 +09:00
(method_call_expression
(method) @function.method.call)
2024-01-06 15:05:50 +09:00
(method_call_expression
invocant: (bareword) @type)
2024-01-06 15:05:50 +09:00
(func0op_call_expression
function: _ @function.builtin)
(func1op_call_expression
function: _ @function.builtin)
2023-11-02 19:58:38 +00:00
; this was a regex for the CLI
2024-01-06 15:05:50 +09:00
([
(function)
(expression_statement
(bareword))
] @function.builtin
(#any-of? @function.builtin
"accept" "atan2" "bind" "binmode" "bless" "crypt" "chmod" "chown" "connect" "die" "dbmopen"
"exec" "fcntl" "flock" "formline" "getpriority" "getprotobynumber" "gethostbyaddr"
"getnetbyaddr" "getservbyname" "getservbyport" "getsockopt" "glob" "index" "ioctl" "join" "kill"
"link" "listen" "mkdir" "msgctl" "msgget" "msgrcv" "msgsend" "open" "opendir" "print" "printf"
"push" "pack" "pipe" "return" "rename" "rindex" "read" "recv" "reverse" "say" "select" "seek"
"semctl" "semget" "semop" "send" "setpgrp" "setpriority" "seekdir" "setsockopt" "shmctl"
"shmread" "shmwrite" "shutdown" "socket" "socketpair" "split" "sprintf" "splice" "substr"
"system" "symlink" "syscall" "sysopen" "sysseek" "sysread" "syswrite" "tie" "truncate" "unlink"
"unpack" "utime" "unshift" "vec" "warn" "waitpid"))
2023-08-03 13:49:22 +03:00
(function) @function
(_
"{" @punctuation.special
(varname)
"}" @punctuation.special)
2024-01-06 15:05:50 +09:00
(varname
(block
2024-01-06 15:05:50 +09:00
"{" @punctuation.special
"}" @punctuation.special))
2024-01-06 15:05:50 +09:00
([
(varname)
(filehandle)
] @variable.builtin
(#any-of? @variable.builtin
"ENV" "ARGV" "INC" "ARGVOUT" "SIG" "STDIN" "STDOUT" "STDERR" "a" "b" "_"))
2024-01-06 15:05:50 +09:00
2023-11-02 19:58:38 +00:00
((varname) @variable.builtin
; highlights all the reserved ^ vars like ${^THINGS}
(#lua-match? @variable.builtin "%^"))
2024-01-06 15:05:50 +09:00
2023-11-02 19:58:38 +00:00
((varname) @variable.builtin
; highlights punc vars and also numeric only like $11
(#lua-match? @variable.builtin "^%A+$"))
2024-01-06 15:05:50 +09:00
[
(scalar)
2024-01-06 15:05:50 +09:00
(array)
(hash)
(glob)
; arraylen's sigil is kinda special b/c it's not a data type
(arraylen
"$#" @operator)
] @variable
2024-01-06 15:05:50 +09:00
; all post deref sigils highlighted as operators, and the unrolly star is a special char
(postfix_deref
2024-01-06 15:05:50 +09:00
[
2025-11-25 10:34:35 +01:00
(scalar_deref_expression
"$" @operator
"*" @character.special)
(array_deref_expression
"@" @operator
"*" @character.special)
(arraylen_deref_expression
"$#" @operator
"*" @character.special)
(hash_deref_expression
"%" @operator
"*" @character.special)
(amper_deref_expression
"&" @operator
"*" @character.special)
(glob_deref_expression
"*" @operator
"*" @character.special)
])
(slices/slice_expression
[
arrayref: _
hashref: _
]
[
2024-01-06 15:05:50 +09:00
"@"
"%"
2025-11-25 10:34:35 +01:00
] @operator)
2023-08-03 13:49:22 +03:00
2025-11-25 10:34:35 +01:00
(slices/keyval_expression
[
arrayref: _
hashref: _
]
2024-01-06 15:05:50 +09:00
[
"@"
2024-01-06 15:05:50 +09:00
"%"
] @operator)
; except for subref deref, b/c that's actually a function call
(amper_deref_expression
[
"&"
"*"
] @function.call)
2024-01-06 15:05:50 +09:00
; mark hash or glob keys that are any form of string in any form of access
(_
"{"
[
(autoquoted_bareword)
(_
(string_content))
] @variable.member
"}")
; mark stringies on the LHS of a fat comma as a hash key, b/c that's usually what it
; denotes somewhat
(_
[
(autoquoted_bareword)
(_
(string_content))
] @variable.member
.
"=>"
(_))
2024-01-06 15:05:50 +09:00
(comment) @comment @spell
2024-01-21 22:05:44 +09:00
[
2024-01-06 15:05:50 +09:00
"=>"
","
";"
"->"
2024-01-21 22:05:44 +09:00
] @punctuation.delimiter
2024-01-06 15:05:50 +09:00
([
"["
"]"
"{"
"}"
"("
")"
] @punctuation.bracket
; priority hack so nvim + ts-cli behave the same
(#set! priority 90))