Skip to content

Commit ab35bc5

Browse files
author
Benjamin Pasero
committed
quick access - move quick open scorer to a more generic place
1 parent db36e74 commit ab35bc5

10 files changed

Lines changed: 23 additions & 15 deletions

File tree

src/vs/base/parts/quickopen/common/quickOpenScorer.ts renamed to src/vs/base/common/fuzzyScorer.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -311,7 +311,7 @@ export interface IPreparedQuery {
311311
}
312312

313313
/**
314-
* Helper function to prepare a search value for scoring in quick open by removing unwanted characters.
314+
* Helper function to prepare a search value for scoring by removing unwanted characters.
315315
*/
316316
export function prepareQuery(original: string): IPreparedQuery {
317317
if (!original) {
@@ -364,6 +364,7 @@ function createMatches(offsets: undefined | number[]): IMatch[] {
364364
if (!offsets) {
365365
return ret;
366366
}
367+
367368
let last: IMatch | undefined;
368369
for (const pos of offsets) {
369370
if (last && last.end === pos) {
@@ -373,6 +374,7 @@ function createMatches(offsets: undefined | number[]): IMatch[] {
373374
ret.push(last);
374375
}
375376
}
377+
376378
return ret;
377379
}
378380

@@ -589,7 +591,7 @@ function compareByMatchLength(matchesA?: IMatch[], matchesB?: IMatch[]): number
589591
return matchLengthA === matchLengthB ? 0 : matchLengthB < matchLengthA ? 1 : -1;
590592
}
591593

592-
export function fallbackCompare<T>(itemA: T, itemB: T, query: IPreparedQuery, accessor: IItemAccessor<T>): number {
594+
function fallbackCompare<T>(itemA: T, itemB: T, query: IPreparedQuery, accessor: IItemAccessor<T>): number {
593595

594596
// check for label + description length and prefer shorter
595597
const labelA = accessor.getItemLabel(itemA) || '';

src/vs/base/parts/quickopen/browser/quickOpenModel.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import { IQuickOpenStyles } from 'vs/base/parts/quickopen/browser/quickOpenWidge
1717
import { KeybindingLabel } from 'vs/base/browser/ui/keybindingLabel/keybindingLabel';
1818
import { OS } from 'vs/base/common/platform';
1919
import { ResolvedKeybinding } from 'vs/base/common/keyCodes';
20-
import { IItemAccessor } from 'vs/base/parts/quickopen/common/quickOpenScorer';
20+
import { IItemAccessor } from 'vs/base/common/fuzzyScorer';
2121
import { coalesce } from 'vs/base/common/arrays';
2222
import { IMatch } from 'vs/base/common/filters';
2323

src/vs/base/parts/quickopen/test/common/quickOpenScorer.test.ts renamed to src/vs/base/test/common/fuzzyScorer.test.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
*--------------------------------------------------------------------------------------------*/
55

66
import * as assert from 'assert';
7-
import * as scorer from 'vs/base/parts/quickopen/common/quickOpenScorer';
7+
import * as scorer from 'vs/base/common/fuzzyScorer';
88
import { URI } from 'vs/base/common/uri';
99
import { basename, dirname, sep } from 'vs/base/common/path';
1010
import { isWindows } from 'vs/base/common/platform';
@@ -49,14 +49,14 @@ function scoreItem<T>(item: T, query: string, fuzzy: boolean, accessor: scorer.I
4949
return scorer.scoreItem(item, scorer.prepareQuery(query), fuzzy, accessor, cache);
5050
}
5151

52-
function compareItemsByScore<T>(itemA: T, itemB: T, query: string, fuzzy: boolean, accessor: scorer.IItemAccessor<T>, cache: scorer.ScorerCache, fallbackComparer = scorer.fallbackCompare): number {
53-
return scorer.compareItemsByScore(itemA, itemB, scorer.prepareQuery(query), fuzzy, accessor, cache, fallbackComparer);
52+
function compareItemsByScore<T>(itemA: T, itemB: T, query: string, fuzzy: boolean, accessor: scorer.IItemAccessor<T>, cache: scorer.ScorerCache, fallbackComparer?: (itemA: T, itemB: T, query: scorer.IPreparedQuery, accessor: scorer.IItemAccessor<T>) => number): number {
53+
return scorer.compareItemsByScore(itemA, itemB, scorer.prepareQuery(query), fuzzy, accessor, cache, fallbackComparer as any);
5454
}
5555

5656
const NullAccessor = new NullAccessorClass();
5757
let cache: scorer.ScorerCache = Object.create(null);
5858

59-
suite('Quick Open Scorer', () => {
59+
suite('Fuzzy Scorer', () => {
6060

6161
setup(() => {
6262
cache = Object.create(null);

src/vs/workbench/browser/parts/editor/editorPicker.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import { IEditorService } from 'vs/workbench/services/editor/common/editorServic
1616
import { IEditorGroupsService, IEditorGroup, GroupsOrder } from 'vs/workbench/services/editor/common/editorGroupsService';
1717
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
1818
import { toResource, SideBySideEditor, IEditorInput, EditorsOrder } from 'vs/workbench/common/editor';
19-
import { compareItemsByScore, scoreItem, ScorerCache, prepareQuery } from 'vs/base/parts/quickopen/common/quickOpenScorer';
19+
import { compareItemsByScore, scoreItem, ScorerCache, prepareQuery } from 'vs/base/common/fuzzyScorer';
2020
import { CancellationToken } from 'vs/base/common/cancellation';
2121

2222
export class EditorPickerEntry extends QuickOpenEntryGroup {

src/vs/workbench/browser/parts/editor/editorQuickAccess.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@ import { IEditorService } from 'vs/workbench/services/editor/common/editorServic
1414
import { IModelService } from 'vs/editor/common/services/modelService';
1515
import { IModeService } from 'vs/editor/common/services/modeService';
1616
import { getIconClasses } from 'vs/editor/common/services/getIconClasses';
17-
import { prepareQuery, IPreparedQuery, ScorerCache, scoreItem, compareItemsByScore, IItemAccessor } from 'vs/base/parts/quickopen/common/quickOpenScorer';
17+
import { prepareQuery, IPreparedQuery, ScorerCache, scoreItem, compareItemsByScore, IItemAccessor } from 'vs/base/common/fuzzyScorer';
18+
import { Schemas } from 'vs/base/common/network';
1819

1920
interface IEditorQuickPickItem extends IQuickPickItem, IEditorIdentifier { }
2021

@@ -32,7 +33,12 @@ export abstract class BaseEditorQuickAccessProvider implements IQuickAccessProvi
3233
}
3334

3435
getItemPath(entry: IEditorQuickPickItem): string | undefined {
35-
return toResource(entry.editor, { supportSideBySide: SideBySideEditor.MASTER })?.fsPath;
36+
const resource = toResource(entry.editor, { supportSideBySide: SideBySideEditor.MASTER });
37+
if (resource?.scheme === Schemas.file) {
38+
return resource?.fsPath;
39+
}
40+
41+
return resource?.path;
3642
}
3743
};
3844

src/vs/workbench/browser/parts/quickopen/quickOpenController.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ import { quickInputBackground, quickInputForeground } from 'vs/platform/theme/co
3838
import { attachQuickOpenStyler } from 'vs/platform/theme/common/styler';
3939
import { IEnvironmentService } from 'vs/platform/environment/common/environment';
4040
import { IFileService } from 'vs/platform/files/common/files';
41-
import { scoreItem, ScorerCache, compareItemsByScore, prepareQuery } from 'vs/base/parts/quickopen/common/quickOpenScorer';
41+
import { scoreItem, ScorerCache, compareItemsByScore, prepareQuery } from 'vs/base/common/fuzzyScorer';
4242
import { WorkbenchTree } from 'vs/platform/list/browser/listService';
4343
import { Schemas } from 'vs/base/common/network';
4444
import { INotificationService } from 'vs/platform/notification/common/notification';

src/vs/workbench/contrib/search/browser/openAnythingHandler.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import { IInstantiationService } from 'vs/platform/instantiation/common/instanti
1616
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
1717
import { IWorkbenchSearchConfiguration } from 'vs/workbench/contrib/search/common/search';
1818
import { IRange } from 'vs/editor/common/core/range';
19-
import { compareItemsByScore, scoreItem, ScorerCache, prepareQuery } from 'vs/base/parts/quickopen/common/quickOpenScorer';
19+
import { compareItemsByScore, scoreItem, ScorerCache, prepareQuery } from 'vs/base/common/fuzzyScorer';
2020
import { INotificationService } from 'vs/platform/notification/common/notification';
2121
import { isPromiseCanceledError } from 'vs/base/common/errors';
2222
import { CancellationToken } from 'vs/base/common/cancellation';

src/vs/workbench/contrib/search/browser/openFileHandler.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import { basename, dirname, toLocalResource } from 'vs/base/common/resources';
1313
import { URI } from 'vs/base/common/uri';
1414
import { QuickOpenEntry, QuickOpenModel } from 'vs/base/parts/quickopen/browser/quickOpenModel';
1515
import { IAutoFocus } from 'vs/base/parts/quickopen/common/quickOpen';
16-
import { IPreparedQuery, prepareQuery } from 'vs/base/parts/quickopen/common/quickOpenScorer';
16+
import { IPreparedQuery, prepareQuery } from 'vs/base/common/fuzzyScorer';
1717
import { IRange } from 'vs/editor/common/core/range';
1818
import { getIconClasses } from 'vs/editor/common/services/getIconClasses';
1919
import { IModelService } from 'vs/editor/common/services/modelService';

src/vs/workbench/services/search/node/fileSearch.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ import { URI } from 'vs/base/common/uri';
2222
import { readdir } from 'vs/base/node/pfs';
2323
import { IFileQuery, IFolderQuery, IProgressMessage, ISearchEngineStats, IRawFileMatch, ISearchEngine, ISearchEngineSuccess, isFilePatternMatch } from 'vs/workbench/services/search/common/search';
2424
import { spawnRipgrepCmd } from './ripgrepFileSearch';
25-
import { prepareQuery } from 'vs/base/parts/quickopen/common/quickOpenScorer';
25+
import { prepareQuery } from 'vs/base/common/fuzzyScorer';
2626

2727
interface IDirectoryEntry {
2828
base: string;

src/vs/workbench/services/search/node/rawSearchService.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import * as objects from 'vs/base/common/objects';
1515
import { StopWatch } from 'vs/base/common/stopwatch';
1616
import * as strings from 'vs/base/common/strings';
1717
import { URI, UriComponents } from 'vs/base/common/uri';
18-
import { compareItemsByScore, IItemAccessor, prepareQuery, ScorerCache } from 'vs/base/parts/quickopen/common/quickOpenScorer';
18+
import { compareItemsByScore, IItemAccessor, prepareQuery, ScorerCache } from 'vs/base/common/fuzzyScorer';
1919
import { MAX_FILE_SIZE } from 'vs/base/node/pfs';
2020
import { ICachedSearchStats, IFileQuery, IFileSearchStats, IFolderQuery, IProgressMessage, IRawFileQuery, IRawQuery, IRawTextQuery, ITextQuery, IFileSearchProgressItem, IRawFileMatch, IRawSearchService, ISearchEngine, ISearchEngineSuccess, ISerializedFileMatch, ISerializedSearchComplete, ISerializedSearchProgressItem, ISerializedSearchSuccess, isFilePatternMatch } from 'vs/workbench/services/search/common/search';
2121
import { Engine as FileSearchEngine } from 'vs/workbench/services/search/node/fileSearch';

0 commit comments

Comments
 (0)