Add force_score() for scoring picker items without optimizations

pull/5164/head
Gokul Soumya 2 years ago committed by Blaž Hrastnik
parent db939801eb
commit c64debc741

@ -469,34 +469,41 @@ impl<T: Item> Picker<T> {
self.matches.sort_unstable(); self.matches.sort_unstable();
} else { } else {
let query = FuzzyQuery::new(pattern); self.force_score();
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();
} }
log::debug!("picker score {:?}", Instant::now().duration_since(now)); log::debug!("picker score {:?}", Instant::now().duration_since(now));
// reset cursor position // reset cursor position
self.cursor = 0; self.cursor = 0;
let pattern = self.prompt.line();
self.previous_pattern.clone_from(pattern); 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`) /// Move the cursor by a number of lines, either down (`Forward`) or up (`Backward`)
pub fn move_by(&mut self, amount: usize, direction: Direction) { pub fn move_by(&mut self, amount: usize, direction: Direction) {
let len = self.matches.len(); let len = self.matches.len();

Loading…
Cancel
Save