diff options
Diffstat (limited to 'cli/lsp/config.rs')
-rw-r--r-- | cli/lsp/config.rs | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/cli/lsp/config.rs b/cli/lsp/config.rs index b689275ef..a890c90e7 100644 --- a/cli/lsp/config.rs +++ b/cli/lsp/config.rs @@ -11,6 +11,8 @@ use lspower::lsp_types; #[derive(Debug, Clone, Default)] pub struct ClientCapabilities { pub status_notification: bool, + pub workspace_configuration: bool, + pub workspace_did_change_watched_files: bool, } #[derive(Debug, Clone, Default, Deserialize)] @@ -19,7 +21,10 @@ pub struct WorkspaceSettings { pub enable: bool, pub config: Option<String>, pub import_map: Option<String>, + + #[serde(default)] pub lint: bool, + #[serde(default)] pub unstable: bool, } @@ -50,5 +55,14 @@ impl Config { self.client_capabilities.status_notification = get_bool("statusNotification"); } + + if let Some(workspace) = &capabilities.workspace { + self.client_capabilities.workspace_configuration = + workspace.configuration.unwrap_or(false); + self.client_capabilities.workspace_did_change_watched_files = workspace + .did_change_watched_files + .and_then(|it| it.dynamic_registration) + .unwrap_or(false); + } } } |