From d1b8fedc9c230bc25f89c7574dd5515435c8f784 Mon Sep 17 00:00:00 2001 From: Marshall Bowers Date: Thu, 30 Jan 2025 13:39:34 -0500 Subject: [PATCH] prisma: Extract to zed-extensions/prisma repository (#23961) This PR extracts the Prisma extension to the [zed-extensions/prisma](https://github.com/zed-extensions/prisma) repository. Release Notes: - N/A --- Cargo.lock | 7 -- Cargo.toml | 1 - docs/src/languages/prisma.md | 2 +- extensions/prisma/Cargo.toml | 16 ---- extensions/prisma/LICENSE-APACHE | 1 - extensions/prisma/extension.toml | 15 ---- .../prisma/languages/prisma/config.toml | 14 --- .../prisma/languages/prisma/highlights.scm | 37 -------- .../prisma/languages/prisma/textobjects.scm | 25 ------ extensions/prisma/src/prisma.rs | 85 ------------------- 10 files changed, 1 insertion(+), 202 deletions(-) delete mode 100644 extensions/prisma/Cargo.toml delete mode 120000 extensions/prisma/LICENSE-APACHE delete mode 100644 extensions/prisma/extension.toml delete mode 100644 extensions/prisma/languages/prisma/config.toml delete mode 100644 extensions/prisma/languages/prisma/highlights.scm delete mode 100644 extensions/prisma/languages/prisma/textobjects.scm delete mode 100644 extensions/prisma/src/prisma.rs diff --git a/Cargo.lock b/Cargo.lock index 6f7537b9cd..f53504e032 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -16684,13 +16684,6 @@ dependencies = [ "workspace", ] -[[package]] -name = "zed_prisma" -version = "0.0.4" -dependencies = [ - "zed_extension_api 0.1.0", -] - [[package]] name = "zed_proto" version = "0.2.1" diff --git a/Cargo.toml b/Cargo.toml index 3f97273b9d..569e358190 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -170,7 +170,6 @@ members = [ "extensions/lua", "extensions/php", "extensions/perplexity", - "extensions/prisma", "extensions/proto", "extensions/purescript", "extensions/ruff", diff --git a/docs/src/languages/prisma.md b/docs/src/languages/prisma.md index 78af456e24..40d195b55a 100644 --- a/docs/src/languages/prisma.md +++ b/docs/src/languages/prisma.md @@ -1,6 +1,6 @@ # Prisma -Prisma support is available through the [Prisma extension](https://github.com/zed-industries/zed/tree/main/extensions/prisma). +Prisma support is available through the [Prisma extension](https://github.com/zed-extensions/prisma). - Tree Sitter: [victorhqc/tree-sitter-prisma](https://github.com/victorhqc/tree-sitter-prisma) - Language-Server: [prisma/language-tools](https://github.com/prisma/language-tools) diff --git a/extensions/prisma/Cargo.toml b/extensions/prisma/Cargo.toml deleted file mode 100644 index 490d114265..0000000000 --- a/extensions/prisma/Cargo.toml +++ /dev/null @@ -1,16 +0,0 @@ -[package] -name = "zed_prisma" -version = "0.0.4" -edition.workspace = true -publish.workspace = true -license = "Apache-2.0" - -[lints] -workspace = true - -[lib] -path = "src/prisma.rs" -crate-type = ["cdylib"] - -[dependencies] -zed_extension_api = "0.1.0" diff --git a/extensions/prisma/LICENSE-APACHE b/extensions/prisma/LICENSE-APACHE deleted file mode 120000 index 1cd601d0a3..0000000000 --- a/extensions/prisma/LICENSE-APACHE +++ /dev/null @@ -1 +0,0 @@ -../../LICENSE-APACHE \ No newline at end of file diff --git a/extensions/prisma/extension.toml b/extensions/prisma/extension.toml deleted file mode 100644 index fc7ea267eb..0000000000 --- a/extensions/prisma/extension.toml +++ /dev/null @@ -1,15 +0,0 @@ -id = "prisma" -name = "Prisma" -description = "Prisma support." -version = "0.0.4" -schema_version = 1 -authors = ["Matthew Gramigna ", "Victor Quiroz "] -repository = "https://github.com/zed-industries/zed" - -[language_servers.prisma-language-server] -name = "Prisma Language Server" -language = "Prisma" - -[grammars.prisma] -repository = "https://github.com/victorhqc/tree-sitter-prisma" -commit = "beeac50812da9765e29cbb2af1324783033cdca3" diff --git a/extensions/prisma/languages/prisma/config.toml b/extensions/prisma/languages/prisma/config.toml deleted file mode 100644 index 701fac2a5b..0000000000 --- a/extensions/prisma/languages/prisma/config.toml +++ /dev/null @@ -1,14 +0,0 @@ -name = "Prisma" -grammar = "prisma" -path_suffixes = ["prisma"] -line_comments = ["// "] -brackets = [ - { start = "{", end = "}", close = true, newline = true }, - { start = "[", end = "]", close = true, newline = true }, - { start = "(", end = ")", close = true, newline = true } -] -tab_size = 2 -word_characters = ["@"] - -[overrides.string] -word_characters = ["@"] diff --git a/extensions/prisma/languages/prisma/highlights.scm b/extensions/prisma/languages/prisma/highlights.scm deleted file mode 100644 index c43df8b3b0..0000000000 --- a/extensions/prisma/languages/prisma/highlights.scm +++ /dev/null @@ -1,37 +0,0 @@ -[ - "datasource" - "enum" - "generator" - "model" - "view" -] @keyword - -(comment) @comment -(developer_comment) @comment - -(number) @number -(string) @string -(false) @boolean -(true) @boolean -(arguments) @property -(maybe) @punctuation -(call_expression (identifier) @function) -(enumeral) @constant -(identifier) @variable -(column_declaration (identifier) (column_type (identifier) @type)) -(attribute (identifier) @label) -(attribute (call_expression (identifier) @label)) -(attribute (call_expression (member_expression (identifier) @label))) -(block_attribute_declaration (identifier) @label) -(block_attribute_declaration (call_expression (identifier) @label)) -(type_expression (identifier) @property) - -"(" @punctuation.bracket -")" @punctuation.bracket -"[" @punctuation.bracket -"]" @punctuation.bracket -"{" @punctuation.bracket -"}" @punctuation.bracket -"=" @operator -"@" @operator -"@@" @operator diff --git a/extensions/prisma/languages/prisma/textobjects.scm b/extensions/prisma/languages/prisma/textobjects.scm deleted file mode 100644 index 0158c90786..0000000000 --- a/extensions/prisma/languages/prisma/textobjects.scm +++ /dev/null @@ -1,25 +0,0 @@ -(model_declaration - (statement_block - "{" - (_)* @class.inside - "}")) @class.around - -(datasource_declaration - (statement_block - "{" - (_)* @class.inside - "}")) @class.around - -(generator_declaration - (statement_block - "{" - (_)* @class.inside - "}")) @class.around - -(enum_declaration - (enum_block - "{" - (_)* @class.inside - "}")) @class.around - -(developer_comment)+ @comment.around diff --git a/extensions/prisma/src/prisma.rs b/extensions/prisma/src/prisma.rs deleted file mode 100644 index 8fb731b224..0000000000 --- a/extensions/prisma/src/prisma.rs +++ /dev/null @@ -1,85 +0,0 @@ -use std::{env, fs}; -use zed_extension_api::{self as zed, Result}; - -const SERVER_PATH: &str = "node_modules/.bin/prisma-language-server"; -const PACKAGE_NAME: &str = "@prisma/language-server"; - -struct PrismaExtension { - did_find_server: bool, -} - -impl PrismaExtension { - fn server_exists(&self) -> bool { - fs::metadata(SERVER_PATH).map_or(false, |stat| stat.is_file()) - } - - fn server_script_path(&mut self, language_server_id: &zed::LanguageServerId) -> Result { - let server_exists = self.server_exists(); - if self.did_find_server && server_exists { - return Ok(SERVER_PATH.to_string()); - } - - zed::set_language_server_installation_status( - language_server_id, - &zed::LanguageServerInstallationStatus::CheckingForUpdate, - ); - let version = zed::npm_package_latest_version(PACKAGE_NAME)?; - - if !server_exists - || zed::npm_package_installed_version(PACKAGE_NAME)?.as_ref() != Some(&version) - { - zed::set_language_server_installation_status( - language_server_id, - &zed::LanguageServerInstallationStatus::Downloading, - ); - let result = zed::npm_install_package(PACKAGE_NAME, &version); - match result { - Ok(()) => { - if !self.server_exists() { - Err(format!( - "installed package '{PACKAGE_NAME}' did not contain expected path '{SERVER_PATH}'", - ))?; - } - } - Err(error) => { - if !self.server_exists() { - Err(error)?; - } - } - } - } - - self.did_find_server = true; - Ok(SERVER_PATH.to_string()) - } -} - -impl zed::Extension for PrismaExtension { - fn new() -> Self { - Self { - did_find_server: false, - } - } - - fn language_server_command( - &mut self, - language_server_id: &zed::LanguageServerId, - _worktree: &zed::Worktree, - ) -> Result { - let server_path = self.server_script_path(language_server_id)?; - Ok(zed::Command { - command: zed::node_binary_path()?, - args: vec![ - env::current_dir() - .unwrap() - .join(&server_path) - .to_string_lossy() - .to_string(), - "--stdio".to_string(), - ], - env: Default::default(), - }) - } -} - -zed::register_extension!(PrismaExtension);