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
parent 0ce5cdc48f
commit d699b8e104
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
26 changed files with 318 additions and 208 deletions

View file

@ -13,6 +13,14 @@ pub trait Extension: Send + Sync {
config: wit::LanguageServerConfig,
worktree: &wit::Worktree,
) -> Result<Command>;
fn language_server_initialization_options(
&mut self,
_config: wit::LanguageServerConfig,
_worktree: &wit::Worktree,
) -> Result<Option<String>> {
Ok(None)
}
}
#[macro_export]
@ -60,4 +68,11 @@ impl wit::Guest for Component {
) -> Result<wit::Command> {
extension().language_server_command(config, worktree)
}
fn language_server_initialization_options(
config: LanguageServerConfig,
worktree: &Worktree,
) -> Result<Option<String>, String> {
extension().language_server_initialization_options(config, worktree)
}
}