vue: Release 0.0.4 (#13580)

Piotr Osiewicz created

Respect user settings in initialization_options.


Release Notes:

- Fixed Vue extension not picking up user-provided initialization
options.

Change summary

Cargo.lock                    |  2 +-
extensions/vue/Cargo.toml     |  2 +-
extensions/vue/extension.toml |  2 +-
extensions/vue/src/vue.rs     | 23 ++++++++++++++++-------
4 files changed, 19 insertions(+), 10 deletions(-)

Detailed changes

Cargo.lock 🔗

@@ -13854,7 +13854,7 @@ dependencies = [
 
 [[package]]
 name = "zed_vue"
-version = "0.0.3"
+version = "0.0.4"
 dependencies = [
  "zed_extension_api 0.0.6",
 ]

extensions/vue/Cargo.toml 🔗

@@ -1,6 +1,6 @@
 [package]
 name = "zed_vue"
-version = "0.0.3"
+version = "0.0.4"
 edition = "2021"
 publish = false
 license = "Apache-2.0"

extensions/vue/extension.toml 🔗

@@ -1,7 +1,7 @@
 id = "vue"
 name = "Vue"
 description = "Vue support."
-version = "0.0.3"
+version = "0.0.4"
 schema_version = 1
 authors = ["Piotr Osiewicz <piotr@zed.dev>"]
 repository = "https://github.com/zed-industries/zed"

extensions/vue/src/vue.rs 🔗

@@ -1,6 +1,7 @@
 use std::{env, fs};
 use zed::lsp::{Completion, CompletionKind};
 use zed::CodeLabelSpan;
+use zed_extension_api::settings::LspSettings;
 use zed_extension_api::{self as zed, serde_json, Result};
 
 struct VueExtension {
@@ -86,14 +87,22 @@ impl zed::Extension for VueExtension {
 
     fn language_server_initialization_options(
         &mut self,
-        _: &zed::LanguageServerId,
-        _: &zed::Worktree,
+        language_server_id: &zed::LanguageServerId,
+        worktree: &zed::Worktree,
     ) -> Result<Option<serde_json::Value>> {
-        Ok(Some(serde_json::json!({
-            "typescript": {
-                "tsdk": "node_modules/typescript/lib"
-            }
-        })))
+        let initialization_options =
+            LspSettings::for_worktree(language_server_id.as_ref(), worktree)
+                .ok()
+                .and_then(|lsp_settings| lsp_settings.initialization_options.clone())
+                .unwrap_or_else(|| {
+                    serde_json::json!({
+                        "typescript": {
+                            "tsdk": "node_modules/typescript/lib"
+                        }
+                    })
+                });
+
+        Ok(Some(serde_json::json!(initialization_options)))
     }
 
     fn label_for_completion(