Allow controlling Tailwind via the language_servers
setting (#11012)
This PR adds the ability for the Tailwind language server (`tailwindcss-language-server`) to be controlled by the `language_servers` setting. Now in your settings you can indicate that the Tailwind language server should be used for a given language, even if that language does not have the Tailwind language server registered for it already: ```json { "languages": { "My Language": { "language_servers": ["tailwindcss-language-server", "..."] } } } ``` Release Notes: - N/A
This commit is contained in:
parent
c833a7e662
commit
3eac581a62
4 changed files with 113 additions and 18 deletions
|
@ -3066,12 +3066,34 @@ impl Project {
|
|||
.map(|lsp_adapter| lsp_adapter.name.clone())
|
||||
.collect::<Vec<_>>();
|
||||
|
||||
let enabled_language_servers =
|
||||
let desired_language_servers =
|
||||
settings.customized_language_servers(&available_language_servers);
|
||||
let enabled_lsp_adapters = available_lsp_adapters
|
||||
.into_iter()
|
||||
.filter(|adapter| enabled_language_servers.contains(&adapter.name))
|
||||
.collect::<Vec<_>>();
|
||||
|
||||
let mut enabled_lsp_adapters: Vec<Arc<CachedLspAdapter>> = Vec::new();
|
||||
for desired_language_server in desired_language_servers {
|
||||
if let Some(adapter) = available_lsp_adapters
|
||||
.iter()
|
||||
.find(|adapter| adapter.name == desired_language_server)
|
||||
{
|
||||
enabled_lsp_adapters.push(adapter.clone());
|
||||
continue;
|
||||
}
|
||||
|
||||
if let Some(adapter) = self
|
||||
.languages
|
||||
.load_available_lsp_adapter(&desired_language_server)
|
||||
{
|
||||
self.languages()
|
||||
.register_lsp_adapter(language.name(), adapter.adapter.clone());
|
||||
enabled_lsp_adapters.push(adapter);
|
||||
continue;
|
||||
}
|
||||
|
||||
log::warn!(
|
||||
"no language server found matching '{}'",
|
||||
desired_language_server.0
|
||||
);
|
||||
}
|
||||
|
||||
log::info!(
|
||||
"starting language servers for {language}: {adapters}",
|
||||
|
@ -3083,7 +3105,7 @@ impl Project {
|
|||
);
|
||||
|
||||
for adapter in enabled_lsp_adapters {
|
||||
self.start_language_server(worktree, adapter.clone(), language.clone(), cx);
|
||||
self.start_language_server(worktree, adapter, language.clone(), cx);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue