diff options
Diffstat (limited to 'cli/lsp/language_server.rs')
-rw-r--r-- | cli/lsp/language_server.rs | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/cli/lsp/language_server.rs b/cli/lsp/language_server.rs index 8d672e251..9fbe6be5d 100644 --- a/cli/lsp/language_server.rs +++ b/cli/lsp/language_server.rs @@ -1298,11 +1298,18 @@ impl Inner { .map(CodeActionOrCommand::CodeAction), ); - let response = if !all_actions.is_empty() { - Some(all_actions) - } else { + let code_action_disabled_support = + self.config.client_capabilities.code_action_disabled_support; + let actions: Vec<CodeActionOrCommand> = all_actions.into_iter().filter(|ca| { + code_action_disabled_support + || matches!(ca, CodeActionOrCommand::CodeAction(ca) if ca.disabled.is_none()) + }).collect(); + let response = if actions.is_empty() { None + } else { + Some(actions) }; + self.performance.measure(mark); Ok(response) } |