@@ -1,18 +1,20 @@
use anyhow::{anyhow, bail, Context, Result};
use async_trait::async_trait;
use futures::StreamExt;
-use gpui::{AsyncAppContext, Task};
+use gpui::{AppContext, AsyncAppContext, Task};
pub use language::*;
use lsp::{CompletionItemKind, LanguageServerBinary, SymbolKind};
+use project::project_settings::ProjectSettings;
use schemars::JsonSchema;
use serde_derive::{Deserialize, Serialize};
+use serde_json::Value;
use settings::Settings;
use smol::fs::{self, File};
use std::{
any::Any,
env::consts,
ops::Deref,
- path::PathBuf,
+ path::{Path, PathBuf},
sync::{
atomic::{AtomicBool, Ordering::SeqCst},
Arc,
@@ -272,6 +274,18 @@ impl LspAdapter for ElixirLspAdapter {
filter_range,
})
}
+
+ fn workspace_configuration(&self, _workspace_root: &Path, cx: &mut AppContext) -> Value {
+ let settings = ProjectSettings::get_global(cx)
+ .lsp
+ .get("elixir-ls")
+ .and_then(|s| s.settings.clone())
+ .unwrap_or_default();
+
+ serde_json::json!({
+ "elixirLS": settings
+ })
+ }
}
async fn get_cached_server_binary_elixir_ls(
@@ -39,3 +39,21 @@ If you prefer to format your code with [Mix](https://hexdocs.pm/mix/Mix.html), u
}
}
```
+
+### Additional workspace configuration options (requires Zed `0.128.0`):
+
+You can pass additional elixir-ls workspace configuration options via lsp settings in `settings.json`.
+
+The following example disables dialyzer:
+
+```json
+"lsp": {
+ "elixir-ls": {
+ "settings": {
+ "dialyzerEnabled": false
+ }
+ }
+}
+```
+
+See [ElixirLS configuration settings](https://github.com/elixir-lsp/elixir-ls#elixirls-configuration-settings) for more options.