From 19c10672023ead0c1d64486154b6c4145b649568 Mon Sep 17 00:00:00 2001 From: Igor Aleksanov Date: Sun, 25 Oct 2020 10:59:15 +0300 Subject: Reorganize completions structure --- crates/completion/src/config.rs | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 crates/completion/src/config.rs (limited to 'crates/completion/src/config.rs') diff --git a/crates/completion/src/config.rs b/crates/completion/src/config.rs new file mode 100644 index 000000000..71b49ace8 --- /dev/null +++ b/crates/completion/src/config.rs @@ -0,0 +1,35 @@ +//! Settings for tweaking completion. +//! +//! The fun thing here is `SnippetCap` -- this type can only be created in this +//! module, and we use to statically check that we only produce snippet +//! completions if we are allowed to. + +#[derive(Clone, Debug, PartialEq, Eq)] +pub struct CompletionConfig { + pub enable_postfix_completions: bool, + pub add_call_parenthesis: bool, + pub add_call_argument_snippets: bool, + 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: (), +} + +impl Default for CompletionConfig { + fn default() -> Self { + CompletionConfig { + enable_postfix_completions: true, + add_call_parenthesis: true, + add_call_argument_snippets: true, + snippet_cap: Some(SnippetCap { _private: () }), + } + } +} -- cgit v1.2.3