From d25bae844c2a13f9d91c34a9016c3c6fd5cc26dc Mon Sep 17 00:00:00 2001 From: Blaž Hrastnik Date: Sun, 22 May 2022 00:00:05 +0900 Subject: Add Scheme support Skipped scm for now :/ it overlaps with tree-sitter-tsq --- runtime/queries/scheme/highlights.scm | 100 ++++++++++++++++++++++++++++++++++ runtime/queries/scheme/injections.scm | 5 ++ 2 files changed, 105 insertions(+) create mode 100644 runtime/queries/scheme/highlights.scm create mode 100644 runtime/queries/scheme/injections.scm (limited to 'runtime') diff --git a/runtime/queries/scheme/highlights.scm b/runtime/queries/scheme/highlights.scm new file mode 100644 index 00000000..3b7a4275 --- /dev/null +++ b/runtime/queries/scheme/highlights.scm @@ -0,0 +1,100 @@ +(number) @constant.numeric +(character) @constant.character +(boolean) @constant.builtin.boolean + +[(string) + (character)] @string + +(escape_sequence) @constant.character.escape + +[(comment) + (block_comment) + (directive)] @comment + +[(boolean) + (character)] @constant + +((symbol) @function.builtin + (#match? @function.builtin "^(eqv\\?|eq\\?|equal\\?)")) ; TODO + +; keywords + +((symbol) @keyword.conditional + (#match? @keyword.conditional "^(if|cond|case|when|unless)$")) + +((symbol) @keyword + (#match? @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)$")) + +; special forms + +(list + "[" + (symbol)+ @variable + "]") + +(list + . + (symbol) @_f + . + (list + (symbol) @variable) + (#eq? @_f "lambda")) + +(list + . + (symbol) @_f + . + (list + (list + (symbol) @variable)) + (#match? @_f + "^(let|let\\*|let-syntax|let-values|let\\*-values|letrec|letrec\\*|letrec-syntax)$")) + +; operators + +(list + . + (symbol) @operator + (#match? @operator "^([+*/<>=-]|(<=)|(>=))$")) + +; quote + +(abbreviation + "'" (symbol)) @constant + +(list + . + (symbol) @_f + (#eq? @_f "quote")) @symbol + +; library + +(list + . + (symbol) @_lib + . + (symbol) @namespace + + (#eq? @_lib "library")) + +; procedure + +(list + . + (symbol) @function) + +;; variables + +((symbol) @variable.builtin + (#eq? @variable.builtin "...")) + +(symbol) @variable +((symbol) @variable.builtin + (#eq? @variable.builtin ".")) + +(symbol) @variable + + +["(" ")" "[" "]" "{" "}"] @punctuation.bracket + diff --git a/runtime/queries/scheme/injections.scm b/runtime/queries/scheme/injections.scm new file mode 100644 index 00000000..aebb54d9 --- /dev/null +++ b/runtime/queries/scheme/injections.scm @@ -0,0 +1,5 @@ +((comment) @injection.content + (#set! injection.language "comment")) + +((block_comment) @injection.content + (#set! injection.language "comment")) -- cgit v1.2.3-70-g09d2