From 440cd05edbe917ac33d5290fb35aa06f2f90cea2 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Fri, 24 Apr 2020 02:39:07 +0200 Subject: Honor snippet capability closes #2518 --- crates/ra_ide/src/completion/completion_config.rs | 6 ++++++ crates/rust-analyzer/src/config.rs | 8 ++++++++ 2 files changed, 14 insertions(+) (limited to 'crates') diff --git a/crates/ra_ide/src/completion/completion_config.rs b/crates/ra_ide/src/completion/completion_config.rs index 6cf7ed6e4..71b49ace8 100644 --- a/crates/ra_ide/src/completion/completion_config.rs +++ b/crates/ra_ide/src/completion/completion_config.rs @@ -12,6 +12,12 @@ pub struct CompletionConfig { pub snippet_cap: Option, } +impl CompletionConfig { + pub fn allow_snippets(&mut self, yes: bool) { + self.snippet_cap = if yes { Some(SnippetCap { _private: () }) } else { None } + } +} + #[derive(Clone, Copy, Debug, PartialEq, Eq)] pub struct SnippetCap { _private: (), diff --git a/crates/rust-analyzer/src/config.rs b/crates/rust-analyzer/src/config.rs index 33d7c95a8..715eddadb 100644 --- a/crates/rust-analyzer/src/config.rs +++ b/crates/rust-analyzer/src/config.rs @@ -215,5 +215,13 @@ impl Config { if let Some(value) = caps.folding_range.as_ref().and_then(|it| it.line_folding_only) { self.client_caps.line_folding_only = value } + self.completion.allow_snippets(false); + if let Some(completion) = &caps.completion { + if let Some(completion_item) = &completion.completion_item { + if let Some(value) = completion_item.snippet_support { + self.completion.allow_snippets(value); + } + } + } } } -- cgit v1.2.3