aboutsummaryrefslogtreecommitdiffstats
path: root/queries/scheme
diff options
context:
space:
mode:
author6cdh <cd6cdh@gmail.com>2022-04-07 22:34:50 +0800
committerStephan Seitz <stephan.seitz@fau.de>2022-04-10 13:51:59 +0200
commit4fa6fd7725e4c320a018a21e5c162d22a7c9c469 (patch)
treee3d3ca4fbe4894515b211f8db2c7320b1e5e7d3e /queries/scheme
parentAdded scheme support (diff)
downloadnvim-treesitter-4fa6fd7725e4c320a018a21e5c162d22a7c9c469.tar
nvim-treesitter-4fa6fd7725e4c320a018a21e5c162d22a7c9c469.tar.gz
nvim-treesitter-4fa6fd7725e4c320a018a21e5c162d22a7c9c469.tar.bz2
nvim-treesitter-4fa6fd7725e4c320a018a21e5c162d22a7c9c469.tar.lz
nvim-treesitter-4fa6fd7725e4c320a018a21e5c162d22a7c9c469.tar.xz
nvim-treesitter-4fa6fd7725e4c320a018a21e5c162d22a7c9c469.tar.zst
nvim-treesitter-4fa6fd7725e4c320a018a21e5c162d22a7c9c469.zip
Added scheme highlights
Diffstat (limited to 'queries/scheme')
-rw-r--r--queries/scheme/highlights.scm181
1 files changed, 181 insertions, 0 deletions
diff --git a/queries/scheme/highlights.scm b/queries/scheme/highlights.scm
new file mode 100644
index 000000000..f03896817
--- /dev/null
+++ b/queries/scheme/highlights.scm
@@ -0,0 +1,181 @@
+;; A highlight query can override the highlights queries before it.
+;; So the order is important.
+;; We should highlight general rules, then highlight special forms.
+
+(number) @number
+(character) @character
+(boolean) @boolean
+(string) @string
+[(comment)] @comment
+
+;; highlight for datum comment
+;; copied from ../clojure/highlights.scm
+([(comment) (directive)] @comment
+ (#set! "priority" 105))
+
+(escape_sequence) @string.escape
+
+["(" ")" "[" "]" "{" "}"] @punctuation.bracket
+
+;; variables
+
+(symbol) @variable
+((symbol) @variable.builtin
+ (#any-of? @variable.builtin "..." "."))
+
+;; procedure
+
+(list
+ .
+ (symbol) @function)
+
+;; special forms
+
+(list
+ "["
+ (symbol)+ @variable
+ "]")
+
+(list
+ .
+ (symbol) @f
+ .
+ (list
+ (symbol) @variable)
+ (#eq? @f "lambda"))
+
+(list
+ .
+ (symbol) @f
+ .
+ (list
+ (list
+ (symbol) @variable))
+ (#any-of? @f
+ "let" "let*" "let-syntax" "let-values" "let*-values" "letrec" "letrec*" "letrec-syntax"))
+
+;; operators
+
+((symbol) @operator
+ (#any-of? @operator
+ "+" "-" "*" "/" "=" "<=" ">=" "<" ">"))
+
+;; keyword
+
+((symbol) @keyword
+ (#any-of? @keyword
+ "define" "lambda" "begin" "do" "define-syntax"
+ "and" "or"
+ "if" "cond" "case" "when" "unless" "else" "=>"
+ "let" "let*" "let-syntax" "let-values" "let*-values" "letrec" "letrec*" "letrec-syntax"
+ "set!"
+ "syntax-rules" "identifier-syntax"
+ "quote" "unquote" "quote-splicing" "quasiquote" "unquote-splicing"
+ "delay"
+ "assert"
+ "library" "export" "import" "rename" "only" "except" "prefix"))
+
+((symbol) @conditional
+ (#any-of? @conditional "if" "cond" "case" "when" "unless"))
+
+;; quote
+
+(abbreviation
+ "'"
+ (symbol)) @symbol
+
+(list
+ .
+ (symbol) @f
+ (#eq? @f "quote")) @symbol
+
+;; library
+
+(list
+ .
+ (symbol) @_lib
+ .
+ (symbol) @namespace
+
+ (#eq? @_lib "library"))
+
+;; builtin procedures
+;; procedures in R5RS and R6RS but not in R6RS-lib
+
+((symbol) @function.builtin
+ (#any-of? @function.builtin
+ ;; eq
+ "eqv?" "eq?" "equal?"
+ ;; number
+ "number?" "complex?" "real?" "rational?" "integer?"
+ "exact?" "inexact?"
+ "zero?" "positive?" "negative?" "odd?" "even?" "finite?" "infinite?" "nan?"
+ "max" "min"
+ "abs" "quotient" "remainder" "modulo"
+ "div" "div0" "mod" "mod0" "div-and-mod" "div0-and-mod0"
+ "gcd" "lcm" "numerator" "denominator"
+ "floor" "ceiling" "truncate" "round"
+ "rationalize"
+ "exp" "log" "sin" "cos" "tan" "asin" "acos" "atan"
+ "sqrt" "expt"
+ "exact-integer-sqrt"
+ "make-rectangular" "make-polar" "real-part" "imag-part" "magnitude" "angle"
+ "real-valued" "rational-valued?" "integer-valued?"
+ "exact" "inexact" "exact->inexact" "inexact->exact"
+ "number->string" "string->number"
+ ;; boolean
+ "boolean?" "not" "boolean=?"
+ ;; pair
+ "pair?" "cons"
+ "car" "cdr"
+ "caar" "cadr" "cdar" "cddr"
+ "caaar" "caadr" "cadar" "caddr" "cdaar" "cdadr" "cddar" "cdddr"
+ "caaaar" "caaadr" "caadar" "caaddr" "cadaar" "cadadr" "caddar" "cadddr"
+ "cdaaar" "cdaadr" "cdadar" "cdaddr" "cddaar" "cddadr" "cdddar" "cddddr"
+ "set-car!" "set-cdr!"
+ ;; list
+ "null?" "list?"
+ "list" "length" "append" "reverse" "list-tail" "list-ref"
+ "map" "for-each"
+ "memq" "memv" "member" "assq" "assv" "assoc"
+ ;; symbol
+ "symbol?" "symbol->string" "string->symbol" "symbol=?"
+ ;; char
+ "char?" "char=?" "char<?" "char>?" "char<=?" "char>=?"
+ "char-ci=?" "char-ci<?" "char-ci>?" "char-ci<=?" "char-ci>=?"
+ "char-alphabetic?" "char-numeric?" "char-whitespace?" "char-upper-case?" "char-lower-case?"
+ "char->integer" "integer->char"
+ "char-upcase" "char-downcase"
+ ;; string
+ "string?" "make-string" "string" "string-length" "string-ref" "string-set!"
+ "string=?" "string-ci=?" "string<?" "string>?" "string<=?" "string>=?"
+ "string-ci<?" "string-ci>?" "string-ci<=?" "string-ci>=?"
+ "substring" "string-append" "string->list" "list->string"
+ "string-for-each"
+ "string-copy" "string-fill!"
+ "string-upcase" "string-downcase"
+ ;; vector
+ "vector?" "make-vector" "vector" "vector-length" "vector-ref" "vector-set!"
+ "vector->list" "list->vector" "vector-fill!" "vector-map" "vector-for-each"
+ ;; bytevector
+ "bytevector?" "native-endianness"
+ "make-bytevector" "bytevector-length" "bytevector=?" "bytevector-fill!"
+ "bytevector-copy!" "bytevector-copy"
+ ;; error
+ "error" "assertion-violation"
+ ;; control
+ "procedure?" "apply" "force"
+ "call-with-current-continuation" "call/cc"
+ "values" "call-with-values" "dynamic-wind"
+ "eval" "scheme-report-environment" "null-environment" "interaction-environment"
+ ;; IO
+ "call-with-input-file" "call-with-output-file" "input-port?" "output-port?"
+ "current-input-port" "current-output-port" "with-input-from-file" "with-output-to-file"
+ "open-input-file" "open-output-file" "close-input-port" "close-output-port"
+ ;; input
+ "read" "read-char" "peek-char" "eof-object?" "char-ready?"
+ ;; output
+ "write" "display" "newline" "write-char"
+ ;; system
+ "load" "transcript-on" "transcript-off"))
+