Add language_servers
setting for customizing which language servers run (#10911)
This PR adds a new `language_servers` setting underneath the language settings. This setting controls which of the available language servers for a given language will run. The `language_servers` setting is an array of strings. Each item in the array must be either: - A language server ID (e.g., `"rust-analyzer"`, `"typescript-language-server"`, `"eslint"`, etc.) denoting a language server that should be enabled. - A language server ID prefixed with a `!` (e.g., `"!rust-analyzer"`, `"!typescript-language-server"`, `"!eslint"`, etc.) denoting a language server that should be disabled. - A `"..."` placeholder, which will be replaced by the remaining available language servers that haven't already been mentioned in the array. For example, to enable the Biome language server in place of the default TypeScript language server, you would add the following to your settings: ```json { "languages": { "TypeScript": { "language_servers": ["biome", "!typescript-language-server", "..."] } } } ``` More details can be found in #10906. Release Notes: - Added `language_servers` setting to language settings for customizing which language server(s) run for a given language.
This commit is contained in:
parent
68a1ad89bb
commit
cf67fc9055
5 changed files with 162 additions and 10 deletions
|
@ -3060,7 +3060,20 @@ impl Project {
|
|||
return;
|
||||
}
|
||||
|
||||
for adapter in self.languages.clone().lsp_adapters(&language) {
|
||||
let available_lsp_adapters = self.languages.clone().lsp_adapters(&language);
|
||||
let available_language_servers = available_lsp_adapters
|
||||
.iter()
|
||||
.map(|lsp_adapter| lsp_adapter.name.clone())
|
||||
.collect::<Vec<_>>();
|
||||
|
||||
let enabled_language_servers =
|
||||
settings.customized_language_servers(&available_language_servers);
|
||||
|
||||
for adapter in available_lsp_adapters {
|
||||
if !enabled_language_servers.contains(&adapter.name) {
|
||||
continue;
|
||||
}
|
||||
|
||||
self.start_language_server(worktree, adapter.clone(), language.clone(), cx);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue