aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--book/src/generated/lang-support.md1
-rw-r--r--languages.toml12
-rw-r--r--runtime/queries/supercollider/folds.scm7
-rw-r--r--runtime/queries/supercollider/highlights.scm76
4 files changed, 96 insertions, 0 deletions
diff --git a/book/src/generated/lang-support.md b/book/src/generated/lang-support.md
index 4a0b4b0a..fdec0270 100644
--- a/book/src/generated/lang-support.md
+++ b/book/src/generated/lang-support.md
@@ -170,6 +170,7 @@
| sshclientconfig | ✓ | | | |
| starlark | ✓ | ✓ | | |
| strace | ✓ | | | |
+| supercollider | ✓ | | | |
| svelte | ✓ | | ✓ | `svelteserver` |
| sway | ✓ | ✓ | ✓ | `forc` |
| swift | ✓ | | | `sourcekit-lsp` |
diff --git a/languages.toml b/languages.toml
index 6e6c5793..f0d6771f 100644
--- a/languages.toml
+++ b/languages.toml
@@ -3328,3 +3328,15 @@ grammar = "hyprlang"
[[grammar]]
name = "hyprlang"
source = { git = "https://github.com/tree-sitter-grammars/tree-sitter-hyprlang", rev = "27af9b74acf89fa6bed4fb8cb8631994fcb2e6f3"}
+
+[[language]]
+name = "supercollider"
+scope = "source.supercollider"
+injection-regex = "supercollider"
+file-types = ["scd", "sc", "quark"]
+comment-token = "//"
+indent = { tab-width = 4, unit = "\t" }
+
+[[grammar]]
+name = "supercollider"
+source = { git = "https://github.com/madskjeldgaard/tree-sitter-supercollider", rev = "3b35bd0fded4423c8fb30e9585c7bacbcd0e8095" }
diff --git a/runtime/queries/supercollider/folds.scm b/runtime/queries/supercollider/folds.scm
new file mode 100644
index 00000000..214247bc
--- /dev/null
+++ b/runtime/queries/supercollider/folds.scm
@@ -0,0 +1,7 @@
+[
+(function_call)
+(code_block)
+(function_block)
+(control_structure)
+] @fold
+
diff --git a/runtime/queries/supercollider/highlights.scm b/runtime/queries/supercollider/highlights.scm
new file mode 100644
index 00000000..0128606d
--- /dev/null
+++ b/runtime/queries/supercollider/highlights.scm
@@ -0,0 +1,76 @@
+(line_comment) @comment.line
+(block_comment) @comment.block
+
+(argument name: (identifier) @variable.parameter)
+
+(local_var name: (identifier) @variable)
+(environment_var name:(identifier) @variable.builtin)
+(builtin_var) @constant.builtin
+
+(function_definition name: (variable) @function)
+
+(named_argument name: (identifier) @variable.other.member)
+
+(method_call name: (method_name) @function.method)
+
+(class) @keyword.storage.type
+
+(number) @constant.numeric
+(float) @constant.numeric.float
+
+(string) @string
+(symbol) @string.special.symbol
+
+[
+"&&"
+"||"
+"&"
+"|"
+"^"
+"=="
+"!="
+"<"
+"<="
+">"
+">="
+"<<"
+">>"
+"+"
+"-"
+"*"
+"/"
+"%"
+"="
+"|@|"
+"@@"
+"@|@"
+] @operator
+
+[
+"arg"
+"classvar"
+"const"
+"var"
+] @keyword
+
+[
+ "("
+ ")"
+ "["
+ "]"
+ "{"
+ "}"
+ "|"
+] @punctuation.bracket
+
+[
+ ";"
+ "."
+ ","
+] @punctuation.delimiter
+
+(control_structure) @keyword.control.conditional
+
+(escape_sequence) @string.special
+
+(duplicated_statement) @keyword.control.repeat