diff --git a/extensions/php/src/language_servers/intelephense.rs b/extensions/php/src/language_servers/intelephense.rs index 4224165ac8bfdafbd718051bd3db094dd140b09f..0a0d25a10a4bb1b064cda51c13ca012e44538c53 100644 --- a/extensions/php/src/language_servers/intelephense.rs +++ b/extensions/php/src/language_servers/intelephense.rs @@ -1,6 +1,7 @@ use std::{env, fs}; -use zed_extension_api::{self as zed, LanguageServerId, Result}; +use zed_extension_api::settings::LspSettings; +use zed_extension_api::{self as zed, serde_json, LanguageServerId, Result}; const SERVER_PATH: &str = "node_modules/intelephense/lib/intelephense.js"; const PACKAGE_NAME: &str = "intelephense"; @@ -89,4 +90,18 @@ impl Intelephense { self.did_find_server = true; Ok(SERVER_PATH.to_string()) } + + pub fn language_server_workspace_configuration( + &mut self, + worktree: &zed::Worktree, + ) -> Result> { + let settings = LspSettings::for_worktree("intelephense", worktree) + .ok() + .and_then(|lsp_settings| lsp_settings.settings.clone()) + .unwrap_or_default(); + + Ok(Some(serde_json::json!({ + "intelephense": settings + }))) + } } diff --git a/extensions/php/src/php.rs b/extensions/php/src/php.rs index 331cc162da17a21495004dee41725c5e17ee4f5a..f84e2f8048fffbf0eb6be840dc7cc246058e3cff 100644 --- a/extensions/php/src/php.rs +++ b/extensions/php/src/php.rs @@ -1,6 +1,6 @@ mod language_servers; -use zed_extension_api::{self as zed, LanguageServerId, Result}; +use zed_extension_api::{self as zed, serde_json, LanguageServerId, Result}; use crate::language_servers::{Intelephense, Phpactor}; @@ -39,6 +39,23 @@ impl zed::Extension for PhpExtension { language_server_id => Err(format!("unknown language server: {language_server_id}")), } } + + fn language_server_workspace_configuration( + &mut self, + language_server_id: &LanguageServerId, + worktree: &zed::Worktree, + ) -> Result> { + match language_server_id.as_ref() { + Intelephense::LANGUAGE_SERVER_ID => { + if let Some(intelephense) = self.intelephense.as_mut() { + return intelephense.language_server_workspace_configuration(worktree); + } + } + _ => (), + } + + Ok(None) + } } zed::register_extension!(PhpExtension);