nvim-treesitter/queries/janet_simple/highlights.scm

313 lines
9.6 KiB
Scheme
Raw Normal View History

2024-01-06 15:05:50 +09:00
; >> Literals
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
(str_lit) @string
2024-01-06 15:05:50 +09:00
(long_str_lit) @string
2024-01-06 15:05:50 +09:00
(buf_lit) @string
2024-01-06 15:05:50 +09:00
(long_buf_lit) @string
2024-01-06 15:05:50 +09:00
2023-04-22 22:18:01 +09:00
(num_lit) @number
2024-01-06 15:05:50 +09:00
2023-04-22 22:18:01 +09:00
(bool_lit) @boolean
2024-01-06 15:05:50 +09:00
2023-04-22 22:18:01 +09:00
(nil_lit) @constant.builtin
2024-01-06 15:05:50 +09:00
(comment) @comment @spell
2023-04-22 22:18:01 +09:00
2024-01-06 15:05:50 +09:00
[
"{"
"@{"
"}"
"["
"@["
"]"
"("
"@("
")"
] @punctuation.bracket
2023-04-22 22:18:01 +09:00
2024-01-06 15:05:50 +09:00
; >> Symbols
; General symbol highlighting
2023-04-22 22:18:01 +09:00
(sym_lit) @variable
2024-01-06 15:05:50 +09:00
; General function calls
2023-04-22 22:18:01 +09:00
(par_tup_lit
2024-01-06 15:05:50 +09:00
.
(sym_lit) @function.call)
2023-04-22 22:18:01 +09:00
(short_fn_lit
2024-01-06 15:05:50 +09:00
.
(sym_lit) @function.call)
2024-01-06 15:05:50 +09:00
; Quoted symbols
2023-04-22 22:18:01 +09:00
(quote_lit
2024-01-06 15:05:50 +09:00
(sym_lit) @string.special.symbol)
2023-04-22 22:18:01 +09:00
(qq_lit
2024-01-06 15:05:50 +09:00
(sym_lit) @string.special.symbol)
2024-01-06 15:05:50 +09:00
; Dynamic variables
2023-04-22 22:18:01 +09:00
((sym_lit) @variable.builtin
2024-01-06 15:05:50 +09:00
(#lua-match? @variable.builtin "^[*].+[*]$"))
2024-01-06 15:05:50 +09:00
; Comment
2023-04-22 22:18:01 +09:00
((sym_lit) @comment
2024-01-06 15:05:50 +09:00
(#any-of? @comment "comment"))
2024-01-06 15:05:50 +09:00
; Special forms and builtin macros
;
; # special forms were manually added at the beginning
;
; # for macros
; (each name (all-bindings)
; (when-let [info (dyn (symbol name))]
; (when (info :macro)
; (print name))))
2023-04-22 22:18:01 +09:00
((sym_lit) @function.macro
; format-ignore
(#any-of? @function.macro
; special forms
"break"
"def" "do"
"fn"
"if"
"quasiquote" "quote"
"set" "splice"
"unquote" "upscope"
"var"
"while"
; macros
"%=" "*="
"++" "+="
"--" "-="
"->" "->>" "-?>" "-?>>"
"/="
"and" "as->" "as-macro" "as?->" "assert"
"case" "catseq" "chr" "comment" "compif" "comptime" "compwhen"
"cond" "coro"
"def-" "default" "defdyn" "defer" "defmacro" "defmacro-"
"defn" "defn-"
"delay" "doc"
"each" "eachk" "eachp"
"eachy"
; XXX: obsolete
"edefer"
"ev/do-thread" "ev/gather" "ev/spawn" "ev/spawn-thread"
"ev/with-deadline"
"ffi/defbind"
"fiber-fn"
"for" "forever" "forv"
"generate"
"if-let" "if-not" "if-with" "import"
"juxt"
"label" "let" "loop"
"match"
"or"
"prompt" "protect"
"repeat"
"seq" "short-fn"
"tabseq" "toggle" "tracev" "try"
"unless" "use"
"var-" "varfn"
"when" "when-let" "when-with"
"with" "with-dyns" "with-syms" "with-vars"))
2023-04-22 22:18:01 +09:00
2024-01-06 15:05:50 +09:00
; All builtin functions
;
; (each name (all-bindings)
; (when-let [info (dyn (symbol name))]
; (when (and (nil? (info :macro))
; (or (function? (info :value))
; (cfunction? (info :value))))
; (print name))))
2023-04-22 22:18:01 +09:00
((sym_lit) @function.builtin
; format-ignore
(#any-of? @function.builtin
"%" "*" "+" "-" "/"
"<" "<=" "=" ">" ">="
; debugging -- start janet with -d and use (debug) to see these
".break" ".breakall" ".bytecode"
".clear" ".clearall"
".disasm"
".fiber" ".fn" ".frame"
".locals"
".next" ".nextc"
".ppasm"
".signal" ".slot" ".slots" ".source" ".stack" ".step"
; back to regularly scheduled program
"abstract?" "accumulate" "accumulate2" "all" "all-bindings"
"all-dynamics" "any?" "apply"
"array"
"array/clear" "array/concat" "array/ensure" "array/fill"
"array/insert" "array/new" "array/new-filled" "array/peek"
"array/pop" "array/push" "array/remove" "array/slice" "array/trim"
"array?"
"asm"
"bad-compile" "bad-parse"
"band" "blshift" "bnot"
"boolean?"
"bor" "brshift" "brushift"
"buffer"
"buffer/bit" "buffer/bit-clear" "buffer/bit-set"
"buffer/bit-toggle" "buffer/blit" "buffer/clear" "buffer/fill"
"buffer/format" "buffer/new" "buffer/new-filled" "buffer/popn"
"buffer/push" "buffer/push-at" "buffer/push-byte"
"buffer/push-string" "buffer/push-word" "buffer/slice"
"buffer/trim"
"buffer?"
"bxor"
"bytes?"
"cancel"
"cfunction?"
"cli-main"
"cmp" "comp" "compare" "compare<" "compare<=" "compare="
"compare>" "compare>="
"compile" "complement" "count" "curenv"
"debug"
"debug/arg-stack" "debug/break" "debug/fbreak" "debug/lineage"
"debug/stack" "debug/stacktrace" "debug/step" "debug/unbreak"
"debug/unfbreak"
"debugger" "debugger-on-status"
"dec" "deep-not=" "deep=" "defglobal" "describe"
"dictionary?"
"disasm" "distinct" "div" "doc*" "doc-format" "doc-of" "dofile"
"drop" "drop-until" "drop-while" "dyn"
"eflush" "empty?" "env-lookup"
"eprin" "eprinf" "eprint" "eprintf" "error" "errorf"
"ev/acquire-lock" "ev/acquire-rlock" "ev/acquire-wlock"
"ev/all-tasks" "ev/call" "ev/cancel" "ev/capacity" "ev/chan"
"ev/chan-close" "ev/chunk" "ev/close" "ev/count" "ev/deadline"
"ev/full" "ev/give" "ev/give-supervisor" "ev/go" "ev/lock"
"ev/read" "ev/release-lock" "ev/release-rlock"
"ev/release-wlock" "ev/rselect" "ev/rwlock" "ev/select"
"ev/sleep" "ev/take" "ev/thread" "ev/thread-chan" "ev/write"
"eval" "eval-string" "even?" "every?" "extreme"
"false?"
"ffi/align" "ffi/call" "ffi/calling-convetions" "ffi/close"
"ffi/context" "ffi/free" "ffi/jitfn" "ffi/lookup" "ffi/malloc"
"ffi/native" "ffi/pointer-buffer" "ffi/pointer-cfunction"
"ffi/read" "ffi/signature" "ffi/size" "ffi/struct"
"ffi/trampoline" "ffi/write"
"fiber/can-resume?" "fiber/current" "fiber/getenv"
"fiber/last-value" "fiber/maxstack" "fiber/new" "fiber/root"
"fiber/setenv" "fiber/setmaxstack" "fiber/status"
"fiber?"
"file/close" "file/flush" "file/lines" "file/open" "file/read"
"file/seek" "file/tell" "file/temp" "file/write"
"filter" "find" "find-index" "first" "flatten" "flatten-into"
"flush" "flycheck" "freeze" "frequencies" "from-pairs"
"function?"
"gccollect" "gcinterval" "gcsetinterval"
"gensym" "get" "get-in" "getline" "getproto" "group-by"
"has-key?" "has-value?" "hash"
"idempotent?" "identity" "import*" "in" "inc" "index-of"
"indexed?"
"int/s64" "int/to-bytes" "int/to-number" "int/u64"
"int?"
"interleave" "interpose" "invert"
"juxt*"
"keep" "keep-syntax" "keep-syntax!" "keys"
"keyword"
"keyword/slice"
"keyword?"
"kvs"
"last" "length" "load-image"
"macex" "macex1" "maclintf"
"make-env" "make-image" "map" "mapcat" "marshal"
"math/abs" "math/acos" "math/acosh" "math/asin" "math/asinh"
"math/atan" "math/atan2" "math/atanh" "math/cbrt" "math/ceil"
"math/cos" "math/cosh" "math/erf" "math/erfc" "math/exp"
"math/exp2" "math/expm1" "math/floor" "math/gamma" "math/gcd"
"math/hypot" "math/lcm" "math/log" "math/log-gamma"
"math/log10" "math/log1p" "math/log2" "math/next" "math/pow"
"math/random" "math/rng" "math/rng-buffer" "math/rng-int"
"math/rng-uniform" "math/round" "math/seedrandom" "math/sin"
"math/sinh" "math/sqrt" "math/tan" "math/tanh" "math/trunc"
"max" "max-of" "mean" "memcmp" "merge" "merge-into"
"merge-module" "min" "min-of" "mod"
"module/add-paths" "module/expand-path" "module/find"
"module/value"
"nan?" "nat?" "native" "neg?"
"net/accept" "net/accept-loop" "net/address"
"net/address-unpack" "net/chunk" "net/close" "net/connect"
"net/flush" "net/listen" "net/localname" "net/peername"
"net/read" "net/recv-from" "net/send-to" "net/server"
"net/setsockopt" "net/shutdown" "net/write"
"next"
"nil?"
"not" "not="
"number?"
"odd?" "one?"
"os/arch" "os/cd" "os/chmod" "os/clock" "os/compiler"
"os/cpu-count" "os/cryptorand" "os/cwd" "os/date" "os/dir"
"os/environ" "os/execute" "os/exit" "os/getenv" "os/link"
"os/lstat" "os/mkdir" "os/mktime" "os/open" "os/perm-int"
"os/perm-string" "os/pipe" "os/proc-close" "os/proc-kill"
"os/proc-wait" "os/readlink" "os/realpath" "os/rename"
"os/rm" "os/rmdir" "os/setenv" "os/shell" "os/sleep"
"os/spawn" "os/stat" "os/symlink" "os/time" "os/touch"
"os/umask" "os/which"
"pairs"
"parse" "parse-all"
"parser/byte" "parser/clone" "parser/consume" "parser/eof"
"parser/error" "parser/flush" "parser/has-more"
"parser/insert" "parser/new" "parser/produce" "parser/state"
"parser/status" "parser/where"
"partial" "partition" "partition-by"
"peg/compile" "peg/find" "peg/find-all" "peg/match"
"peg/replace" "peg/replace-all"
"pos?" "postwalk" "pp" "prewalk"
"prin" "prinf" "print" "printf"
"product" "propagate" "put" "put-in"
"quit"
"range" "reduce" "reduce2" "repl" "require" "resume"
"return" "reverse" "reverse!" "run-context"
"sandbox" "scan-number" "setdyn" "signal" "slice" "slurp"
"some" "sort" "sort-by" "sorted" "sorted-by" "spit"
"string"
"string/ascii-lower" "string/ascii-upper" "string/bytes"
"string/check-set" "string/find" "string/find-all"
"string/format" "string/from-bytes" "string/has-prefix?"
"string/has-suffix?" "string/join" "string/repeat"
"string/replace" "string/replace-all" "string/reverse"
"string/slice" "string/split" "string/trim" "string/triml"
"string/trimr"
"string?"
"struct"
"struct/getproto" "struct/proto-flatten" "struct/to-table"
"struct/with-proto"
"struct?"
"sum"
"symbol"
"symbol/slice"
"symbol?"
"table"
"table/clear" "table/clone" "table/getproto" "table/new"
"table/proto-flatten" "table/rawget" "table/setproto"
"table/to-struct"
"table?"
"take" "take-until" "take-while"
; XXX: obsolete
"tarray/buffer" "tarray/copy-bytes" "tarray/length"
"tarray/new" "tarray/properties" "tarray/slice"
"tarray/swap-bytes"
; XXX: obsolete
"thread/close" "thread/current" "thread/exit" "thread/new"
"thread/receive" "thread/send"
; end of obsolete
"trace" "true?" "truthy?"
"tuple"
"tuple/brackets" "tuple/setmap" "tuple/slice"
"tuple/sourcemap" "tuple/type"
"tuple?"
"type"
"unmarshal" "untrace" "update" "update-in"
"values" "varglobal"
"walk" "warn-compile"
"xprin" "xprinf" "xprint" "xprintf"
"yield"
"zero?" "zipcoll"))