summaryrefslogtreecommitdiff
path: root/support/texlab/src/completion/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'support/texlab/src/completion/mod.rs')
-rw-r--r--support/texlab/src/completion/mod.rs42
1 files changed, 22 insertions, 20 deletions
diff --git a/support/texlab/src/completion/mod.rs b/support/texlab/src/completion/mod.rs
index 1b28f51ebc..d354ed1d98 100644
--- a/support/texlab/src/completion/mod.rs
+++ b/support/texlab/src/completion/mod.rs
@@ -37,7 +37,8 @@ use crate::{
workspace::DocumentContent,
};
use async_trait::async_trait;
-use fuzzy_matcher::skim::fuzzy_match;
+use fuzzy_matcher::FuzzyMatcher;
+use fuzzy_matcher::skim::SkimMatcherV2;
use std::collections::HashSet;
pub const COMPLETION_LIMIT: usize = 50;
@@ -145,27 +146,28 @@ fn preselect(req: &FeatureRequest<CompletionParams>, items: &mut [Item]) {
fn score(req: &FeatureRequest<CompletionParams>, items: &mut Vec<Item>) {
let current_word = current_word(req);
let pattern = current_word.as_deref().unwrap_or_default();
+ let matcher = SkimMatcherV2::default();
for item in items {
item.score = match &item.data {
- ItemData::ComponentCommand { name, .. } => fuzzy_match(name, pattern),
- ItemData::ComponentEnvironment { name, .. } => fuzzy_match(name, pattern),
- ItemData::UserCommand { name } => fuzzy_match(name, pattern),
- ItemData::UserEnvironment { name } => fuzzy_match(name, pattern),
- ItemData::Label { text, .. } => fuzzy_match(&text, pattern),
- ItemData::Class { name } => fuzzy_match(&name, pattern),
- ItemData::Package { name } => fuzzy_match(&name, pattern),
- ItemData::PgfLibrary { name } => fuzzy_match(name, pattern),
- ItemData::TikzLibrary { name } => fuzzy_match(name, pattern),
- ItemData::File { name } => fuzzy_match(name, pattern),
- ItemData::Directory { name } => fuzzy_match(name, pattern),
- ItemData::Citation { text, .. } => fuzzy_match(&text, pattern),
- ItemData::Argument { name, .. } => fuzzy_match(&name, pattern),
- ItemData::BeginCommand => fuzzy_match("begin", pattern),
- ItemData::Color { name } => fuzzy_match(name, pattern),
- ItemData::ColorModel { name } => fuzzy_match(name, pattern),
- ItemData::GlossaryEntry { name } => fuzzy_match(name, pattern),
- ItemData::EntryType { ty } => fuzzy_match(&ty.name, pattern),
- ItemData::Field { field } => fuzzy_match(&field.name, pattern),
+ ItemData::ComponentCommand { name, .. } => matcher.fuzzy_match(name, pattern),
+ ItemData::ComponentEnvironment { name, .. } => matcher.fuzzy_match(name, pattern),
+ ItemData::UserCommand { name } => matcher.fuzzy_match(name, pattern),
+ ItemData::UserEnvironment { name } => matcher.fuzzy_match(name, pattern),
+ ItemData::Label { text, .. } => matcher.fuzzy_match(&text, pattern),
+ ItemData::Class { name } => matcher.fuzzy_match(&name, pattern),
+ ItemData::Package { name } => matcher.fuzzy_match(&name, pattern),
+ ItemData::PgfLibrary { name } => matcher.fuzzy_match(name, pattern),
+ ItemData::TikzLibrary { name } => matcher.fuzzy_match(name, pattern),
+ ItemData::File { name } => matcher.fuzzy_match(name, pattern),
+ ItemData::Directory { name } => matcher.fuzzy_match(name, pattern),
+ ItemData::Citation { text, .. } => matcher.fuzzy_match(&text, pattern),
+ ItemData::Argument { name, .. } => matcher.fuzzy_match(&name, pattern),
+ ItemData::BeginCommand => matcher.fuzzy_match("begin", pattern),
+ ItemData::Color { name } => matcher.fuzzy_match(name, pattern),
+ ItemData::ColorModel { name } => matcher.fuzzy_match(name, pattern),
+ ItemData::GlossaryEntry { name } => matcher.fuzzy_match(name, pattern),
+ ItemData::EntryType { ty } => matcher.fuzzy_match(&ty.name, pattern),
+ ItemData::Field { field } => matcher.fuzzy_match(&field.name, pattern),
};
}
}