diff options
Diffstat (limited to 'support/texlab/crates/completion/src/providers/command.rs')
-rw-r--r-- | support/texlab/crates/completion/src/providers/command.rs | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/support/texlab/crates/completion/src/providers/command.rs b/support/texlab/crates/completion/src/providers/command.rs index ddbf8bc206..f404d42ab3 100644 --- a/support/texlab/crates/completion/src/providers/command.rs +++ b/support/texlab/crates/completion/src/providers/command.rs @@ -7,6 +7,8 @@ use crate::{ CommandData, CompletionItem, CompletionItemData, CompletionParams, }; +static DELIMITERS: &[(&str, &str)] = &[("(", ")"), ("[", "]"), ("{", "\\}")]; + pub fn complete_commands<'a>( params: &'a CompletionParams<'a>, builder: &mut CompletionBuilder<'a>, @@ -20,6 +22,7 @@ pub fn complete_commands<'a>( }); proc.add_begin_snippet(); + proc.add_delimiters(); proc.add_library(); proc.add_user(); Some(()) @@ -39,6 +42,20 @@ impl<'a, 'b> Processor<'a, 'b> { Some(()) } + pub fn add_delimiters(&mut self) { + for (left, right) in DELIMITERS { + let Some(score) = self.0.builder.matcher.score(&left, &self.0.cursor.text) else { + continue; + }; + + let data = CompletionItemData::CommandLikeDelimiter(left, right); + self.0 + .builder + .items + .push(CompletionItem::new_simple(score, self.0.cursor.range, data)); + } + } + pub fn add_library(&mut self) -> Option<()> { for package in included_packages(&self.0.params.feature) { let commands_with_score = package.commands.iter().filter_map(|command| { |