From c38f72d194108b9be69ec45f8eabbd68daa8c78b Mon Sep 17 00:00:00 2001 From: Max Brunsfeld Date: Thu, 11 Apr 2024 10:52:10 -0700 Subject: [PATCH] Extract GLSL language support into an extension (#10433) Release Notes: - Extracted GLSL language support into an extension. --------- Co-authored-by: Marshall Co-authored-by: Marshall Bowers --- Cargo.lock | 10 ---------- Cargo.toml | 1 - crates/extensions_ui/src/extension_suggest.rs | 2 ++ crates/languages/Cargo.toml | 1 - crates/languages/src/lib.rs | 2 -- extensions/glsl/LICENSE-APACHE | 1 + extensions/glsl/extension.toml | 11 +++++++++++ .../glsl/languages}/glsl/config.toml | 0 .../glsl/languages}/glsl/highlights.scm | 17 ++++++++--------- typos.toml | 4 ++-- 10 files changed, 24 insertions(+), 25 deletions(-) create mode 120000 extensions/glsl/LICENSE-APACHE create mode 100644 extensions/glsl/extension.toml rename {crates/languages/src => extensions/glsl/languages}/glsl/config.toml (100%) rename {crates/languages/src => extensions/glsl/languages}/glsl/highlights.scm (99%) diff --git a/Cargo.lock b/Cargo.lock index c5c7262cbc..25e81e4aa5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5431,7 +5431,6 @@ dependencies = [ "tree-sitter-css", "tree-sitter-elixir", "tree-sitter-embedded-template", - "tree-sitter-glsl", "tree-sitter-go", "tree-sitter-gomod", "tree-sitter-gowork", @@ -10353,15 +10352,6 @@ dependencies = [ "tree-sitter", ] -[[package]] -name = "tree-sitter-glsl" -version = "0.1.4" -source = "git+https://github.com/theHamsta/tree-sitter-glsl?rev=2a56fb7bc8bb03a1892b4741279dd0a8758b7fb3#2a56fb7bc8bb03a1892b4741279dd0a8758b7fb3" -dependencies = [ - "cc", - "tree-sitter", -] - [[package]] name = "tree-sitter-go" version = "0.19.1" diff --git a/Cargo.toml b/Cargo.toml index 9d9e629aa4..a005b84814 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -314,7 +314,6 @@ tree-sitter-cpp = { git = "https://github.com/tree-sitter/tree-sitter-cpp", rev tree-sitter-css = { git = "https://github.com/tree-sitter/tree-sitter-css", rev = "769203d0f9abe1a9a691ac2b9fe4bb4397a73c51" } tree-sitter-elixir = { git = "https://github.com/elixir-lang/tree-sitter-elixir", rev = "a2861e88a730287a60c11ea9299c033c7d076e30" } tree-sitter-embedded-template = "0.20.0" -tree-sitter-glsl = { git = "https://github.com/theHamsta/tree-sitter-glsl", rev = "2a56fb7bc8bb03a1892b4741279dd0a8758b7fb3" } tree-sitter-go = { git = "https://github.com/tree-sitter/tree-sitter-go", rev = "aeb2f33b366fd78d5789ff104956ce23508b85db" } tree-sitter-gomod = { git = "https://github.com/camdencheek/tree-sitter-go-mod" } tree-sitter-gowork = { git = "https://github.com/d1y/tree-sitter-go-work" } diff --git a/crates/extensions_ui/src/extension_suggest.rs b/crates/extensions_ui/src/extension_suggest.rs index 65175456de..f7d219f1b6 100644 --- a/crates/extensions_ui/src/extension_suggest.rs +++ b/crates/extensions_ui/src/extension_suggest.rs @@ -39,6 +39,8 @@ fn suggested_extensions() -> &'static HashMap<&'static str, Arc> { ("git-firefly", "TAG_EDITMSG"), ("git-firefly", "git-rebase-todo"), ("gleam", "gleam"), + ("glsl", "vert"), + ("glsl", "frag"), ("graphql", "gql"), ("graphql", "graphql"), ("haskell", "hs"), diff --git a/crates/languages/Cargo.toml b/crates/languages/Cargo.toml index 52cbe8fd68..5eb5bd645c 100644 --- a/crates/languages/Cargo.toml +++ b/crates/languages/Cargo.toml @@ -42,7 +42,6 @@ tree-sitter-cpp.workspace = true tree-sitter-css.workspace = true tree-sitter-elixir.workspace = true tree-sitter-embedded-template.workspace = true -tree-sitter-glsl.workspace = true tree-sitter-go.workspace = true tree-sitter-gomod.workspace = true tree-sitter-gowork.workspace = true diff --git a/crates/languages/src/lib.rs b/crates/languages/src/lib.rs index f03c30c951..5290052b06 100644 --- a/crates/languages/src/lib.rs +++ b/crates/languages/src/lib.rs @@ -62,7 +62,6 @@ pub fn init( "embedded_template", tree_sitter_embedded_template::language(), ), - ("glsl", tree_sitter_glsl::language()), ("go", tree_sitter_go::language()), ("gomod", tree_sitter_gomod::language()), ("gowork", tree_sitter_gowork::language()), @@ -286,7 +285,6 @@ pub fn init( "yaml", vec![Arc::new(yaml::YamlLspAdapter::new(node_runtime.clone()))] ); - language!("glsl"); language!("nix"); language!("nu", vec![Arc::new(nu::NuLanguageServer {})]); language!("ocaml", vec![Arc::new(ocaml::OCamlLspAdapter)]); diff --git a/extensions/glsl/LICENSE-APACHE b/extensions/glsl/LICENSE-APACHE new file mode 120000 index 0000000000..1cd601d0a3 --- /dev/null +++ b/extensions/glsl/LICENSE-APACHE @@ -0,0 +1 @@ +../../LICENSE-APACHE \ No newline at end of file diff --git a/extensions/glsl/extension.toml b/extensions/glsl/extension.toml new file mode 100644 index 0000000000..b13a6fad00 --- /dev/null +++ b/extensions/glsl/extension.toml @@ -0,0 +1,11 @@ +id = "glsl" +name = "GLSL" +description = "GLSL support." +version = "0.0.1" +schema_version = 1 +authors = ["Mikayla Maki "] +repository = "https://github.com/zed-industries/zed" + +[grammars.glsl] +repository = "https://github.com/theHamsta/tree-sitter-glsl" +commit = "31064ce53385150f894a6c72d61b94076adf640a" diff --git a/crates/languages/src/glsl/config.toml b/extensions/glsl/languages/glsl/config.toml similarity index 100% rename from crates/languages/src/glsl/config.toml rename to extensions/glsl/languages/glsl/config.toml diff --git a/crates/languages/src/glsl/highlights.scm b/extensions/glsl/languages/glsl/highlights.scm similarity index 99% rename from crates/languages/src/glsl/highlights.scm rename to extensions/glsl/languages/glsl/highlights.scm index e4503c6fbb..09f94d4fb5 100644 --- a/crates/languages/src/glsl/highlights.scm +++ b/extensions/glsl/languages/glsl/highlights.scm @@ -57,6 +57,14 @@ (number_literal) @number (char_literal) @number +(identifier) @variable + +(field_identifier) @property +(statement_identifier) @label +(type_identifier) @type +(primitive_type) @type +(sized_type_specifier) @type + (call_expression function: (identifier) @function) (call_expression @@ -67,19 +75,10 @@ (preproc_function_def name: (identifier) @function.special) -(field_identifier) @property -(statement_identifier) @label -(type_identifier) @type -(primitive_type) @type -(sized_type_specifier) @type - ((identifier) @constant (#match? @constant "^[A-Z][A-Z\\d_]*$")) -(identifier) @variable - (comment) @comment -; inherits: c [ "in" diff --git a/typos.toml b/typos.toml index b84b75d024..8df8b2aaf2 100644 --- a/typos.toml +++ b/typos.toml @@ -3,8 +3,6 @@ ignore-files = true ignore-hidden = false extend-exclude = [ ".git/", - # glsl isn't recognized by this tool - "crates/languages/src/glsl/", # File suffixes aren't typos "assets/icons/file_icons/file_types.json", "crates/extensions_ui/src/extension_suggest.rs", @@ -17,6 +15,8 @@ extend-exclude = [ "crates/editor/src/editor_tests.rs", # Clojure uses .edn filename extension, which is not a misspelling of "end" "extensions/clojure/languages/clojure/config.toml", + # glsl isn't recognized by this tool + "extensions/glsl/languages/glsl/", # Windows likes its abbreviations "crates/gpui/src/platform/windows/", ]