prisma: Extract to zed-extensions/prisma repository (#23961)

Marshall Bowers created

This PR extracts the Prisma extension to the
[zed-extensions/prisma](https://github.com/zed-extensions/prisma)
repository.

Release Notes:

- N/A

Change summary

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 --
extensions/prisma/languages/prisma/config.toml     | 14 --
extensions/prisma/languages/prisma/highlights.scm  | 37 ------
extensions/prisma/languages/prisma/textobjects.scm | 25 ----
extensions/prisma/src/prisma.rs                    | 85 ----------------
10 files changed, 1 insertion(+), 202 deletions(-)

Detailed changes

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"

Cargo.toml 🔗

@@ -170,7 +170,6 @@ members = [
     "extensions/lua",
     "extensions/php",
     "extensions/perplexity",
-    "extensions/prisma",
     "extensions/proto",
     "extensions/purescript",
     "extensions/ruff",

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)

extensions/prisma/Cargo.toml 🔗

@@ -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"

extensions/prisma/extension.toml 🔗

@@ -1,15 +0,0 @@
-id = "prisma"
-name = "Prisma"
-description = "Prisma support."
-version = "0.0.4"
-schema_version = 1
-authors = ["Matthew Gramigna <matthewgramigna@gmail.com>", "Victor Quiroz <git@victorhqc.com>"]
-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"

extensions/prisma/languages/prisma/config.toml 🔗

@@ -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 = ["@"]

extensions/prisma/languages/prisma/highlights.scm 🔗

@@ -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

extensions/prisma/languages/prisma/textobjects.scm 🔗

@@ -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

extensions/prisma/src/prisma.rs 🔗

@@ -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<String> {
-        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<zed::Command> {
-        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);