Allow extensions to define more of the methods in the LspAdapter trait (#9554)

Our goal is to extract Svelte support into an extension, since we've
seen problems with the Tree-sitter Svelte parser crashing due to bugs in
the external scanner. In order to do this, we need a couple more
capabilities in LSP extensions:

* [x] `initialization_options` - programmatically controlling the JSON
initialization params sent to the language server
* [x] `prettier_plugins` - statically specifying a list of prettier
plugins that apply for a given language.
* [x] `npm_install_package`

Release Notes:

- N/A

---------

Co-authored-by: Marshall <marshall@zed.dev>
Co-authored-by: Marshall Bowers <elliott.codes@gmail.com>
This commit is contained in:
Max Brunsfeld
2024-03-20 12:47:04 -07:00
committed by GitHub
co-authored by Marshall Marshall Bowers
parent 0ce5cdc48f
commit d699b8e104
26 changed files with 318 additions and 208 deletions
-15
View File
@@ -97,24 +97,9 @@ impl LspAdapter for IntelephenseLspAdapter {
get_cached_server_binary(container_dir, &*self.node).await
}
async fn label_for_completion(
&self,
_item: &lsp::CompletionItem,
_language: &Arc<language::Language>,
) -> Option<language::CodeLabel> {
None
}
fn initialization_options(&self) -> Option<serde_json::Value> {
None
}
fn language_ids(&self) -> HashMap<String, String> {
HashMap::from_iter([("PHP".into(), "php".into())])
}
fn prettier_plugins(&self) -> &[&'static str] {
&["@prettier/plugin-php"]
}
}
async fn get_cached_server_binary(