1
Files
flake-nixinator/config/neovim/store/nvim-treesitter/queries/perl/highlights.scm

274 lines
4.2 KiB
Scheme

((source_file
.
(comment) @keyword.directive @nospell)
(#lua-match? @keyword.directive "^#!/"))
[
"use"
"no"
"require"
] @keyword.import
[
"if"
"elsif"
"unless"
"else"
] @keyword.conditional
(conditional_expression
[
"?"
":"
] @keyword.conditional.ternary)
[
"while"
"until"
"for"
"foreach"
] @keyword.repeat
("continue" @keyword.repeat
(block))
"return" @keyword.return
"sub" @keyword.function
[
"map"
"grep"
"sort"
] @function.builtin
"package" @keyword.import
[
"do"
"my"
"our"
"local"
"state"
"last"
"next"
"redo"
"goto"
"undef"
] @keyword
(_
operator: _ @operator)
"\\" @operator
(yadayada) @keyword.exception
(phaser_statement
phase: _ @keyword)
[
"or"
"and"
"eq"
"ne"
"cmp"
"lt"
"le"
"ge"
"gt"
"isa"
] @keyword.operator
(eof_marker) @keyword.directive
(data_section) @comment
(pod) @none
[
(number)
(version)
] @number
[
(string_literal)
(interpolated_string_literal)
(quoted_word_list)
(command_string)
(heredoc_content)
(replacement)
(transliteration_content)
] @string
[
(heredoc_token)
(command_heredoc_token)
(heredoc_end)
] @label
[
(escape_sequence)
(escaped_delimiter)
] @string.escape
(_
modifiers: _ @character.special)
[
(quoted_regexp)
(match_regexp)
(regexp_content)
] @string.regexp
(autoquoted_bareword) @string.special
(use_statement
(package) @type)
(package_statement
(package) @type)
(require_expression
(bareword) @type)
(subroutine_declaration_statement
name: (bareword) @function)
(attribute_name) @attribute
(attribute_value) @string
(label) @label
(statement_label
label: _ @label)
(relational_expression
operator: "isa"
right: (bareword) @type)
(function_call_expression
(function) @function.call)
(method_call_expression
(method) @function.method.call)
(method_call_expression
invocant: (bareword) @type)
(func0op_call_expression
function: _ @function.builtin)
(func1op_call_expression
function: _ @function.builtin)
; this was a regex for the CLI
([
(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"))
(function) @function
(_
"{" @punctuation.special
(varname)
"}" @punctuation.special)
(varname
(block
"{" @punctuation.special
"}" @punctuation.special))
([
(varname)
(filehandle)
] @variable.builtin
(#any-of? @variable.builtin
"ENV" "ARGV" "INC" "ARGVOUT" "SIG" "STDIN" "STDOUT" "STDERR" "a" "b" "_"))
((varname) @variable.builtin
; highlights all the reserved ^ vars like ${^THINGS}
(#lua-match? @variable.builtin "%^"))
((varname) @variable.builtin
; highlights punc vars and also numeric only like $11
(#lua-match? @variable.builtin "^%A+$"))
(scalar) @variable
(scalar_deref_expression
[
"$"
"*"
] @variable)
[
(array)
(arraylen)
] @variable
(array_deref_expression
[
"@"
"*"
] @variable)
(hash) @variable
(hash_deref_expression
[
"%"
"*"
] @variable)
(array_element_expression
array: (_) @variable)
(slice_expression
array: (_) @variable)
(keyval_expression
array: (_) @variable)
(hash_element_expression
hash: (_) @variable)
(slice_expression
hash: (_) @variable)
(keyval_expression
hash: (_) @variable)
(comment) @comment @spell
[
"=>"
","
";"
"->"
] @punctuation.delimiter
([
"["
"]"
"{"
"}"
"("
")"
] @punctuation.bracket
; priority hack so nvim + ts-cli behave the same
(#set! "priority" 90))