diff --git a/crates/ra_ide/src/completion/completion_config.rs b/crates/ra_ide/src/completion/completion_config.rs index 6cf7ed6e4c9..71b49ace8bf 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 33d7c95a802..715eddadb68 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); + } + } + } } }