diff --git a/Cargo.lock b/Cargo.lock index 62e485a..5e3b7f2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -759,9 +759,8 @@ dependencies = [ [[package]] name = "zed_extension_api" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0729d50b4ca0a7e28e590bbe32e3ca0194d97ef654961451a424c661a366fca0" +version = "0.8.0" +source = "git+https://github.com/zed-industries/zed?rev=103fa371562e86af63204df8cf7bf35559ada0d4#103fa371562e86af63204df8cf7bf35559ada0d4" dependencies = [ "serde", "serde_json", diff --git a/Cargo.toml b/Cargo.toml index 0550c00..aff5fd6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,4 +10,4 @@ path = "src/dart.rs" crate-type = ["cdylib"] [dependencies] -zed_extension_api = "0.7.0" +zed_extension_api = { git = "https://github.com/zed-industries/zed", rev = "103fa371562e86af63204df8cf7bf35559ada0d4" } diff --git a/src/dart.rs b/src/dart.rs index 66e265c..264f09e 100644 --- a/src/dart.rs +++ b/src/dart.rs @@ -1,5 +1,5 @@ use zed::lsp::CompletionKind; -use zed::settings::LspSettings; +use zed::settings::{LanguageSettings, LspSettings}; use zed::{CodeLabel, CodeLabelSpan}; use zed_extension_api::serde_json::json; use zed_extension_api::{ @@ -207,14 +207,25 @@ impl zed::Extension for DartExtension { _language_server_id: &zed::LanguageServerId, worktree: &zed::Worktree, ) -> Result> { - let settings = LspSettings::for_worktree("dart", worktree) + let mut dart_settings = serde_json::Map::new(); + + if let Ok(language_settings) = LanguageSettings::for_worktree(Some("Dart"), worktree) { + dart_settings.insert( + "lineLength".into(), + language_settings.preferred_line_length.into(), + ); + } + + let user_settings = LspSettings::for_worktree("dart", worktree) .ok() .and_then(|lsp_settings| lsp_settings.settings.clone()) .unwrap_or_default(); - Ok(Some(serde_json::json!({ - "dart": settings - }))) + if let serde_json::Value::Object(user_map) = user_settings { + dart_settings.extend(user_map); + } + + Ok(Some(serde_json::json!({ "dart": dart_settings }))) } fn label_for_completion(