diff --git a/crates/editor/src/code_context_menus.rs b/crates/editor/src/code_context_menus.rs index 2c82606846..f129eaa617 100644 --- a/crates/editor/src/code_context_menus.rs +++ b/crates/editor/src/code_context_menus.rs @@ -160,12 +160,7 @@ impl CompletionsMenu { let match_candidates = completions .iter() .enumerate() - .map(|(id, completion)| { - StringMatchCandidate::new( - id, - &completion.label.text[completion.label.filter_range.clone()], - ) - }) + .map(|(id, completion)| StringMatchCandidate::new(id, &completion.label.filter_text())) .collect(); Self { diff --git a/crates/language/src/language.rs b/crates/language/src/language.rs index e0cd392131..ec49185d6b 100644 --- a/crates/language/src/language.rs +++ b/crates/language/src/language.rs @@ -1678,6 +1678,10 @@ impl CodeLabel { pub fn text(&self) -> &str { self.text.as_str() } + + pub fn filter_text(&self) -> &str { + &self.text[self.filter_range.clone()] + } } impl From for CodeLabel { diff --git a/crates/project_symbols/src/project_symbols.rs b/crates/project_symbols/src/project_symbols.rs index 49beeec478..a127f98392 100644 --- a/crates/project_symbols/src/project_symbols.rs +++ b/crates/project_symbols/src/project_symbols.rs @@ -78,10 +78,7 @@ impl ProjectSymbolsDelegate { )); let sort_key_for_match = |mat: &StringMatch| { let symbol = &self.symbols[mat.candidate_id]; - ( - Reverse(OrderedFloat(mat.score)), - &symbol.label.text[symbol.label.filter_range.clone()], - ) + (Reverse(OrderedFloat(mat.score)), symbol.label.filter_text()) }; visible_matches.sort_unstable_by_key(sort_key_for_match); @@ -177,10 +174,7 @@ impl PickerDelegate for ProjectSymbolsDelegate { .iter() .enumerate() .map(|(id, symbol)| { - StringMatchCandidate::new( - id, - &symbol.label.text[symbol.label.filter_range.clone()], - ) + StringMatchCandidate::new(id, &symbol.label.filter_text()) }) .partition(|candidate| { project