Add supercollider support

This commit is contained in:
Mads Kjeldgaard 2021-02-02 18:58:07 +01:00 committed by Thomas Vigouroux
parent b8a2d45fa8
commit 1f7db48523
5 changed files with 169 additions and 0 deletions

View file

@ -267,6 +267,7 @@ list.supercollider = {
install_info = {
url = "https://github.com/madskjeldgaard/tree-sitter-supercollider",
files = {"src/parser.c", "src/scanner.c"},
branch = "main",
},
maintainers = {"@madskjeldgaard"},
filetype = "supercollider",

View file

@ -0,0 +1,7 @@
[
(function_call)
(code_block)
(function_block)
(control_structure)
] @fold

View file

@ -0,0 +1,109 @@
; highlights.scm
; See this for full list: https://github.com/nvim-treesitter/nvim-treesitter/blob/master/CONTRIBUTING.md
; comments
(line_comment) @comment
(block_comment) @comment
; Argument definition
; Fixme: Should be attribute but nvim-treesitter doesn't supprt it at the moment
(argument name: (identifier) @parameter)
;(argument name: (identifier) @parameter)
; Variables
(local_var name: (identifier) @variable)
(environment_var name:(identifier) @variable.builtin)
(builtin_var) @constant.builtin
; (variable) @variable
; Functions
(function_definition
name: (variable) @function)
; For function calls
(named_argument
name: (identifier) @property)
; Methods
(instance_method_call
name: (method_name) @function)
(class_method_call
name: (class_method_name) @method)
; Classes
(class) @type
; Literals
(number) @number
(pi_statement) @constant.builtin
(float) @float
(string) @string
(symbol) @string.special
; Operators
[
"&&"
"||"
"&"
"|"
"^"
"=="
"!="
"<"
"<="
">"
">="
"<<"
">>"
"+"
"-"
"*"
"/"
"%"
"="
] @operator
; Keywords
[
"arg"
"classvar"
; "const"
; "super"
; "this"
"var"
] @type.builtin
; Brackets
[
"("
")"
"["
"]"
"{"
"}"
"|"
] @punctuation.bracket
; Delimeters
[
";"
"."
","
] @punctuation.delimiter
; control structure
(control_structure) @conditional
(escape_sequence) @escape
; SinOsc.ar()!2
(duplicated_statement) @repeat
; Builtins
; ((identifier) @variable.builtin
; (#match? @variable.builtin "^(inf|nil|thisFunction|thisFunctionDef|thisMethod|thisProcess|thisThread|currentEnvironment|topEnvironment)$")
; (#is-not? local))

View file

@ -0,0 +1,16 @@
[
(collection)
(parameter_call_list)
(function_block)
(code_block)
] @indent
[
(parameter_call_list (argument_calls))
"("
")"
"{"
"}"
"["
"]"
] @branch

View file

@ -0,0 +1,36 @@
; The local variables query is different from the highlights query in that, while the highlights query uses arbitrary capture names which can then be mapped to colors, the locals variable query uses a fixed set of capture names, each of which has a special meaning.
; The capture names are as follows:
; @local.scope - indicates that a syntax node introduces a new local scope.
; @local.definition - indicates that a syntax node contains the name of a definition within the current local scope.
; @local.reference - indicates that a syntax node contains the name which may refer to an earlier definition within some enclosing scope.
; Scopes
[
(function_call)
(code_block)
(function_block)
(control_structure)
] @scope
; Definitions
(argument
name: (identifier) @definition.parameter
(set! "definition.var.scope" "local")
)
(variable_definition
name: (variable (local_var (identifier) @definition.var
)))
(variable_definition
name: (variable (environment_var (identifier) @definition.var))
(set! "definition.var.scope" "global"))
(function_definition name: (variable) @definition.var
(set! "definition.var.scope" "parent")
)
;(variable_definition name: (variable (local_var(identifier))) @local.definition)
;(variable) @local.definition
(identifier) @reference