提交 7df7a474 编写于 作者: B Benjamin Pasero

Restore type based global symbole filtering for Ctrl+P (fixes #8502)

上级 9dfca5b1
......@@ -68,12 +68,12 @@ registry.registerWorkbenchAction(new SyncActionDescriptor(GotoSymbolAction, Goto
{
prefix: GOTO_SYMBOL_PREFIX,
needsEditor: true,
description: env.isMacintosh ? nls.localize('gotoSymbolDescriptionNormalMac', "Go to Symbol") : nls.localize('gotoSymbolDescriptionNormalWin', "Go to Symbol")
description: nls.localize('gotoSymbolDescription', "Go to Symbol in File")
},
{
prefix: GOTO_SYMBOL_PREFIX + SCOPE_PREFIX,
needsEditor: true,
description: nls.localize('gotoSymbolDescriptionScoped', "Go to Symbol by Category")
description: nls.localize('gotoSymbolDescriptionScoped', "Go to Symbol in File by Category")
}
]
)
......
......@@ -64,7 +64,11 @@ export class OpenAnythingHandler extends QuickOpenHandler {
this.openSymbolHandler = instantiationService.createInstance(OpenSymbolHandler);
this.openFileHandler = instantiationService.createInstance(OpenFileHandler);
this.openSymbolHandler.setStandalone(false);
this.openSymbolHandler.setOptions({
skipDelay: true, // we have our own delay
skipLocalSymbols: true, // we only want global symbols
skipSorting: true // we sort combined with file results
});
this.resultsToSearchCache = Object.create(null);
this.scorerCache = Object.create(null);
......
......@@ -100,12 +100,18 @@ class SymbolEntry extends EditorQuickOpenEntry {
}
}
export interface IOpenSymbolOptions {
skipSorting: boolean;
skipLocalSymbols: boolean;
skipDelay: boolean;
}
export class OpenSymbolHandler extends QuickOpenHandler {
private static SEARCH_DELAY = 500; // This delay accommodates for the user typing a word and then stops typing to start searching
private delayer: ThrottledDelayer<QuickOpenEntry[]>;
private isStandalone: boolean;
private options: IOpenSymbolOptions;
constructor(
@IWorkbenchEditorService private editorService: IWorkbenchEditorService,
......@@ -116,12 +122,11 @@ export class OpenSymbolHandler extends QuickOpenHandler {
super();
this.delayer = new ThrottledDelayer<QuickOpenEntry[]>(OpenSymbolHandler.SEARCH_DELAY);
this.isStandalone = true;
this.options = Object.create(null);
}
public setStandalone(standalone: boolean) {
this.delayer = standalone ? new ThrottledDelayer<QuickOpenEntry[]>(OpenSymbolHandler.SEARCH_DELAY) : null;
this.isStandalone = standalone;
public setOptions(options: IOpenSymbolOptions) {
this.options = options;
}
public canRun(): boolean | string {
......@@ -136,7 +141,7 @@ export class OpenSymbolHandler extends QuickOpenHandler {
// Respond directly to empty search
if (!searchValue) {
promise = TPromise.as([]);
} else if (this.delayer) {
} else if (!this.options.skipDelay) {
promise = this.delayer.trigger(() => this.doGetResults(searchValue)); // Run search with delay as needed
} else {
promise = this.doGetResults(searchValue);
......@@ -146,7 +151,6 @@ export class OpenSymbolHandler extends QuickOpenHandler {
}
private doGetResults(searchValue: string): TPromise<QuickOpenEntry[]> {
return getNavigateToItems(searchValue).then(bearings => {
return this.toQuickOpenEntries(bearings, searchValue);
});
......@@ -157,6 +161,9 @@ export class OpenSymbolHandler extends QuickOpenHandler {
// Convert to Entries
types.forEach(element => {
if (this.options.skipLocalSymbols && !!element.containerName) {
return; // ignore local symbols if we are told so
}
// Find Highlights
let highlights = filters.matchesFuzzy(searchValue, element.name);
......@@ -193,7 +200,7 @@ export class OpenSymbolHandler extends QuickOpenHandler {
});
// Sort (Standalone only)
if (this.isStandalone) {
if (!this.options.skipSorting) {
return results.sort(this.sort.bind(this, searchValue.toLowerCase()));
}
......
......@@ -138,7 +138,7 @@ actionBarRegistry.registerActionBarContributor(Scope.VIEWER, ExplorerViewerActio
'vs/workbench/parts/search/browser/openAnythingHandler',
'OpenAnythingHandler',
'',
nls.localize('openAnythingHandlerDescription', "Open Files and Symbols by Name")
nls.localize('openAnythingHandlerDescription', "Open Files and Global Symbols by Name")
)
);
......@@ -151,7 +151,7 @@ actionBarRegistry.registerActionBarContributor(Scope.VIEWER, ExplorerViewerActio
{
prefix: ALL_SYMBOLS_PREFIX,
needsEditor: false,
description: nls.localize('openSymbolDescriptionNormal', "Open Symbol By Name")
description: nls.localize('openSymbolDescriptionNormal', "Open Any Symbol By Name")
}
]
)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册