summaryrefslogtreecommitdiff
path: root/cli/lsp/language_server.rs
diff options
context:
space:
mode:
authorKitson Kelly <me@kitsonkelly.com>2021-08-10 09:56:34 +1000
committerGitHub <noreply@github.com>2021-08-10 09:56:34 +1000
commitf7e416bc7fbb8b1bc17e180d5aeb2e4f00256bea (patch)
tree517ef875abed324587167c6001ac25be050dd7da /cli/lsp/language_server.rs
parent2db381eba9768acf855219ec9560e20a62659994 (diff)
feat(lsp): support clients which do not support disabled code actions (#11612)
Closes: #11610
Diffstat (limited to 'cli/lsp/language_server.rs')
-rw-r--r--cli/lsp/language_server.rs13
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)
}