Add force_score() for scoring picker items without optimizations
This commit is contained in:
parent
db939801eb
commit
c64debc741
1 changed files with 26 additions and 19 deletions
|
@ -469,34 +469,41 @@ impl<T: Item> Picker<T> {
|
|||
|
||||
self.matches.sort_unstable();
|
||||
} else {
|
||||
let query = FuzzyQuery::new(pattern);
|
||||
self.matches.clear();
|
||||
self.matches.extend(
|
||||
self.options
|
||||
.iter()
|
||||
.enumerate()
|
||||
.filter_map(|(index, option)| {
|
||||
let text = option.filter_text(&self.editor_data);
|
||||
|
||||
query
|
||||
.fuzzy_match(&text, &self.matcher)
|
||||
.map(|score| PickerMatch {
|
||||
index,
|
||||
score,
|
||||
len: text.chars().count(),
|
||||
})
|
||||
}),
|
||||
);
|
||||
self.matches.sort_unstable();
|
||||
self.force_score();
|
||||
}
|
||||
|
||||
log::debug!("picker score {:?}", Instant::now().duration_since(now));
|
||||
|
||||
// reset cursor position
|
||||
self.cursor = 0;
|
||||
let pattern = self.prompt.line();
|
||||
self.previous_pattern.clone_from(pattern);
|
||||
}
|
||||
|
||||
pub fn force_score(&mut self) {
|
||||
let pattern = self.prompt.line();
|
||||
|
||||
let query = FuzzyQuery::new(pattern);
|
||||
self.matches.clear();
|
||||
self.matches.extend(
|
||||
self.options
|
||||
.iter()
|
||||
.enumerate()
|
||||
.filter_map(|(index, option)| {
|
||||
let text = option.filter_text(&self.editor_data);
|
||||
|
||||
query
|
||||
.fuzzy_match(&text, &self.matcher)
|
||||
.map(|score| PickerMatch {
|
||||
index,
|
||||
score,
|
||||
len: text.chars().count(),
|
||||
})
|
||||
}),
|
||||
);
|
||||
self.matches.sort_unstable();
|
||||
}
|
||||
|
||||
/// Move the cursor by a number of lines, either down (`Forward`) or up (`Backward`)
|
||||
pub fn move_by(&mut self, amount: usize, direction: Direction) {
|
||||
let len = self.matches.len();
|
||||
|
|
Loading…
Reference in a new issue