diff --git a/src/vs/base/common/filters.ts b/src/vs/base/common/filters.ts index 76bb974d5678b34bc8b39c2c2b288e7953b29957..ea24c82b02c8565517af46f1089784db8951cdf7 100644 --- a/src/vs/base/common/filters.ts +++ b/src/vs/base/common/filters.ts @@ -362,25 +362,6 @@ export function matchesFuzzy2(pattern: string, word: string): IMatch[] | null { return score ? createMatches(score) : null; } -export function anyScore(pattern: string, lowPattern: string, _patternPos: number, word: string, lowWord: string, _wordPos: number): FuzzyScore { - const result = fuzzyScore(pattern, lowPattern, 0, word, lowWord, 0, true); - if (result) { - return result; - } - let matches = 0; - let score = 0; - let idx = _wordPos; - for (let patternPos = 0; patternPos < lowPattern.length && patternPos < _maxLen; ++patternPos) { - const wordPos = lowWord.indexOf(lowPattern.charAt(patternPos), idx); - if (wordPos >= 0) { - score += 1; - matches += 2 ** wordPos; - idx = wordPos + 1; - } - } - return [score, matches, _wordPos]; -} - //#region --- fuzzyScore --- export function createMatches(score: undefined | FuzzyScore): IMatch[] { diff --git a/src/vs/editor/contrib/suggest/completionModel.ts b/src/vs/editor/contrib/suggest/completionModel.ts index 177df2a9d278c93c1c8247cffcd8ced840fa5725..31a8b92e750524f47cbeb0d7e72c0b40ce54ec72 100644 --- a/src/vs/editor/contrib/suggest/completionModel.ts +++ b/src/vs/editor/contrib/suggest/completionModel.ts @@ -3,7 +3,7 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { fuzzyScore, fuzzyScoreGracefulAggressive, anyScore, FuzzyScorer, FuzzyScore } from 'vs/base/common/filters'; +import { fuzzyScore, fuzzyScoreGracefulAggressive, FuzzyScorer, FuzzyScore } from 'vs/base/common/filters'; import { isDisposable } from 'vs/base/common/lifecycle'; import { CompletionList, CompletionItemProvider, CompletionItemKind } from 'vs/editor/common/modes'; import { CompletionItem } from './suggest'; @@ -220,7 +220,9 @@ export class CompletionModel { // filterText and label are actually the same -> use good highlights item.score = match; } else { - item.score = anyScore(word, wordLow, 0, item.completion.label, item.labelLow, 0); + // re-run the scorer on the label in the hope of a result BUT use the rank + // of the filterText-match + item.score = scoreFn(word, wordLow, wordPos, item.completion.label, item.labelLow, 0, false) || FuzzyScore.Default; item.score[0] = match[0]; // use score from filterText }