on master help sign in
Add force_score() for scoring picker items without optimizations
c64debcGokul Soumya
helix-term/src/ui/picker.rs+26−19
@@ -469,34 +469,41 @@ impl<T: Item> Picker<T> {
469
469
470 self.matches.sort_unstable();
470 self.matches.sort_unstable();
471 } else {
471 } else {
472− let query = FuzzyQuery::new(pattern);
472+ self.force_score();
473− self.matches.clear();
474− self.matches.extend(
475− self.options
476− .iter()
477− .enumerate()
478− .filter_map(|(index, option)| {
479− let text = option.filter_text(&self.editor_data);
480−
481− query
482− .fuzzy_match(&text, &self.matcher)
483− .map(|score| PickerMatch {
484− index,
485− score,
486− len: text.chars().count(),
487− })
488− }),
489− );
490− self.matches.sort_unstable();
491 }
473 }
492
474
493 log::debug!("picker score {:?}", Instant::now().duration_since(now));
475 log::debug!("picker score {:?}", Instant::now().duration_since(now));
494
476
495 // reset cursor position
477 // reset cursor position
496 self.cursor = 0;
478 self.cursor = 0;
479+ let pattern = self.prompt.line();
497 self.previous_pattern.clone_from(pattern);
480 self.previous_pattern.clone_from(pattern);
498 }
481 }
499
482
483+ pub fn force_score(&mut self) {
484+ let pattern = self.prompt.line();
485+
486+ let query = FuzzyQuery::new(pattern);
487+ self.matches.clear();
488+ self.matches.extend(
489+ self.options
490+ .iter()
491+ .enumerate()
492+ .filter_map(|(index, option)| {
493+ let text = option.filter_text(&self.editor_data);
494+
495+ query
496+ .fuzzy_match(&text, &self.matcher)
497+ .map(|score| PickerMatch {
498+ index,
499+ score,
500+ len: text.chars().count(),
501+ })
502+ }),
503+ );
504+ self.matches.sort_unstable();
505+ }
506+
500 /// Move the cursor by a number of lines, either down (`Forward`) or up (`Backward`)
507 /// Move the cursor by a number of lines, either down (`Forward`) or up (`Backward`)
501 pub fn move_by(&mut self, amount: usize, direction: Direction) {
508 pub fn move_by(&mut self, amount: usize, direction: Direction) {
502 let len = self.matches.len();
509 let len = self.matches.len();