From d6f67241647d5126eba3aacc8a61017ed00a9f48 Mon Sep 17 00:00:00 2001 From: Mateusz Szczygiel <41059082+matszczygiel@users.noreply.github.com> Date: Sat, 6 Nov 2021 14:58:18 +0100 Subject: [PATCH 1/2] add glsl language support --- .gitmodules | 4 +++ helix-syntax/languages/tree-sitter-glsl | 1 + languages.toml | 9 ++++++ runtime/queries/glsl/folds.scm | 1 + runtime/queries/glsl/highlights.scm | 37 +++++++++++++++++++++++++ runtime/queries/glsl/indents.scm | 1 + runtime/queries/glsl/injections.scm | 3 ++ runtime/queries/glsl/locals.scm | 1 + 8 files changed, 57 insertions(+) create mode 160000 helix-syntax/languages/tree-sitter-glsl create mode 100644 runtime/queries/glsl/folds.scm create mode 100644 runtime/queries/glsl/highlights.scm create mode 100644 runtime/queries/glsl/indents.scm create mode 100644 runtime/queries/glsl/injections.scm create mode 100644 runtime/queries/glsl/locals.scm diff --git a/.gitmodules b/.gitmodules index 7ed34ad39aa2..8d4b28ac2177 100644 --- a/.gitmodules +++ b/.gitmodules @@ -134,3 +134,7 @@ path = helix-syntax/languages/tree-sitter-cmake url = https://github.com/uyha/tree-sitter-cmake shallow = true +[submodule "helix-syntax/languages/tree-sitter-glsl"] + path = helix-syntax/languages/tree-sitter-glsl + url = https://github.com/theHamsta/tree-sitter-glsl.git + shallow = true diff --git a/helix-syntax/languages/tree-sitter-glsl b/helix-syntax/languages/tree-sitter-glsl new file mode 160000 index 000000000000..88408ffc5e27 --- /dev/null +++ b/helix-syntax/languages/tree-sitter-glsl @@ -0,0 +1 @@ +Subproject commit 88408ffc5e27abcffced7010fc77396ae3636d7e diff --git a/languages.toml b/languages.toml index bd510ea1c3d5..6560d2c663a9 100644 --- a/languages.toml +++ b/languages.toml @@ -355,3 +355,12 @@ roots = [] comment-token = "#" indent = { tab-width = 2, unit = " " } language-server = { command = "cmake-language-server" } + +[[language]] +name = "glsl" +scope = "source.glsl" +file-types = ["glsl", "vert", "tesc", "tese", "geom", "frag", "comp" ] +roots = [] +comment-token = "//" +indent = { tab-width = 4, unit = " " } + diff --git a/runtime/queries/glsl/folds.scm b/runtime/queries/glsl/folds.scm new file mode 100644 index 000000000000..a5a5208ca9c7 --- /dev/null +++ b/runtime/queries/glsl/folds.scm @@ -0,0 +1 @@ +; inherits: c diff --git a/runtime/queries/glsl/highlights.scm b/runtime/queries/glsl/highlights.scm new file mode 100644 index 000000000000..af2a049fb5ac --- /dev/null +++ b/runtime/queries/glsl/highlights.scm @@ -0,0 +1,37 @@ +; inherits: c + +[ + "in" + "out" + "inout" + "uniform" + "shared" + "layout" + "attribute" + "varying" + "buffer" + "coherent" + "readonly" + "writeonly" + "precision" + "highp" + "mediump" + "lowp" + "centroid" + "sample" + "patch" + "smooth" + "flat" + "noperspective" + "invariant" + "precise" +] @keyword + +"subroutine" @keyword.function + +(extension_storage_class) @attribute + +( + (identifier) @variable.builtin + (#match? @variable.builtin "^gl_") +) diff --git a/runtime/queries/glsl/indents.scm b/runtime/queries/glsl/indents.scm new file mode 100644 index 000000000000..a5a5208ca9c7 --- /dev/null +++ b/runtime/queries/glsl/indents.scm @@ -0,0 +1 @@ +; inherits: c diff --git a/runtime/queries/glsl/injections.scm b/runtime/queries/glsl/injections.scm new file mode 100644 index 000000000000..7d3323b16451 --- /dev/null +++ b/runtime/queries/glsl/injections.scm @@ -0,0 +1,3 @@ +(preproc_arg) @glsl + +(comment) @comment diff --git a/runtime/queries/glsl/locals.scm b/runtime/queries/glsl/locals.scm new file mode 100644 index 000000000000..a5a5208ca9c7 --- /dev/null +++ b/runtime/queries/glsl/locals.scm @@ -0,0 +1 @@ +; inherits: c From d998ebc7f008cf385558945230dbf29a8e520b5d Mon Sep 17 00:00:00 2001 From: Mateusz Szczygiel <41059082+matszczygiel@users.noreply.github.com> Date: Sun, 7 Nov 2021 10:29:32 +0100 Subject: [PATCH 2/2] glsl: use indents.toml file --- runtime/queries/glsl/indents.scm | 1 - runtime/queries/glsl/indents.toml | 19 +++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) delete mode 100644 runtime/queries/glsl/indents.scm create mode 100644 runtime/queries/glsl/indents.toml diff --git a/runtime/queries/glsl/indents.scm b/runtime/queries/glsl/indents.scm deleted file mode 100644 index a5a5208ca9c7..000000000000 --- a/runtime/queries/glsl/indents.scm +++ /dev/null @@ -1 +0,0 @@ -; inherits: c diff --git a/runtime/queries/glsl/indents.toml b/runtime/queries/glsl/indents.toml new file mode 100644 index 000000000000..a7fd499a9239 --- /dev/null +++ b/runtime/queries/glsl/indents.toml @@ -0,0 +1,19 @@ +indent = [ + "init_declarator", + "compound_statement", + "preproc_arg", + "field_declaration_list", + "case_statement", + "conditional_expression", + "enumerator_list", + "struct_specifier", + "compound_literal_expression" +] + +outdent = [ + "#define", + "#ifdef", + "#endif", + "{", + "}" +]