diff options
author | Norbert Preining <norbert@preining.info> | 2024-03-25 03:03:04 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2024-03-25 03:03:04 +0000 |
commit | 05f8146ef2eea2cd71b9c96583c6d893e6c76af5 (patch) | |
tree | 615019c00dc1d5e6ec2636bbbb30852f241c04ee /support/texlab/crates/completion/src/providers/command.rs | |
parent | 1feacf4295bab2d8f05aa0f5fbd1d902559bef36 (diff) |
CTAN sync 202403250302
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| { |