Skip to content

Commit

Permalink
Add Scheme support
Browse files Browse the repository at this point in the history
Skipped scm for now :/ it overlaps with tree-sitter-tsq
  • Loading branch information
archseer committed May 21, 2022
1 parent 6bd8924 commit d25bae8
Show file tree
Hide file tree
Showing 3 changed files with 118 additions and 0 deletions.
13 changes: 13 additions & 0 deletions languages.toml
Original file line number Diff line number Diff line change
Expand Up @@ -1366,3 +1366,16 @@ roots = []
[[grammar]]
name = "sshclientconfig"
source = { git = "https://github.com/metio/tree-sitter-ssh-client-config", rev = "769d7a01a2e5493b4bb5a51096c6bf4be130b024" }

[[language]]
name = "scheme"
scope = "source.scheme"
injection-regex = "scheme"
file-types = ["ss", "rkt"] # "scm",
roots = []
comment-token = ";"
indent = { tab-width = 2, unit = " " }

[[grammar]]
name = "scheme"
source = { git = "https://github.com/6cdh/tree-sitter-scheme", rev = "27fb77db05f890c2823b4bd751c6420378df146b" }
100 changes: 100 additions & 0 deletions runtime/queries/scheme/highlights.scm
Original file line number Diff line number Diff line change
@@ -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

5 changes: 5 additions & 0 deletions runtime/queries/scheme/injections.scm
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
((comment) @injection.content
(#set! injection.language "comment"))

((block_comment) @injection.content
(#set! injection.language "comment"))

0 comments on commit d25bae8

Please sign in to comment.