From c0455807635a7edda6f8195a194e51b3fe296d82 Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Tue, 8 Dec 2015 10:54:06 +0100 Subject: [PATCH] more unified quick open sorting --- .../parts/quickopen/browser/quickOpenModel.ts | 5 +++-- .../quickopen/browser/commandsHandler.ts | 9 +------- .../search/browser/openAnythingHandler.ts | 1 - .../parts/search/browser/openSymbolHandler.ts | 22 ++++++++----------- 4 files changed, 13 insertions(+), 24 deletions(-) diff --git a/src/vs/base/parts/quickopen/browser/quickOpenModel.ts b/src/vs/base/parts/quickopen/browser/quickOpenModel.ts index 9ae9befd9ab..2e316cb56bc 100644 --- a/src/vs/base/parts/quickopen/browser/quickOpenModel.ts +++ b/src/vs/base/parts/quickopen/browser/quickOpenModel.ts @@ -134,7 +134,8 @@ export class QuickOpenEntry { } /** - * A good default sort implementation for quick open entries + * A good default sort implementation for quick open entries respecting highlight information + * as well as associated resources. */ public static compare(elementA: QuickOpenEntry, elementB: QuickOpenEntry, lookFor: string): number { @@ -153,7 +154,7 @@ export class QuickOpenEntry { return 1; } - // Sort by name/path + // Fallback to the full path if labels are identical and we have associated resources let nameA = elementA.getLabel(); let nameB = elementB.getLabel(); if (nameA === nameB) { diff --git a/src/vs/workbench/parts/quickopen/browser/commandsHandler.ts b/src/vs/workbench/parts/quickopen/browser/commandsHandler.ts index 9d69c986e25..79a63565d58 100644 --- a/src/vs/workbench/parts/quickopen/browser/commandsHandler.ts +++ b/src/vs/workbench/parts/quickopen/browser/commandsHandler.ts @@ -230,7 +230,7 @@ export class CommandsHandler extends QuickOpenHandler { entries = arrays.distinct(entries, (entry) => entry.getLabel() + entry.getGroupLabel()); // Sort by name - entries = entries.sort(this.sort); + entries = entries.sort((entryA, entryB) => QuickOpenEntry.compare(entryA, entryB, searchValue)); return TPromise.as(new QuickOpenModel(entries)); } @@ -299,13 +299,6 @@ export class CommandsHandler extends QuickOpenHandler { return entries; } - private sort(elementA: QuickOpenEntryGroup, elementB: QuickOpenEntryGroup): number { - let elementAName = elementA.getLabel().toLowerCase(); - let elementBName = elementB.getLabel().toLowerCase(); - - return strings.localeCompare(elementAName, elementBName); - } - public getAutoFocus(searchValue: string): IAutoFocus { return { autoFocusFirstEntry: true, diff --git a/src/vs/workbench/parts/search/browser/openAnythingHandler.ts b/src/vs/workbench/parts/search/browser/openAnythingHandler.ts index 1e020c636e7..54f19ef57f6 100644 --- a/src/vs/workbench/parts/search/browser/openAnythingHandler.ts +++ b/src/vs/workbench/parts/search/browser/openAnythingHandler.ts @@ -14,7 +14,6 @@ import paths = require('vs/base/common/paths'); import filters = require('vs/base/common/filters'); import labels = require('vs/base/common/labels'); import {IRange} from 'vs/editor/common/editorCommon'; -import {compareAnything} from 'vs/base/common/comparers'; import {IAutoFocus} from 'vs/base/parts/quickopen/browser/quickOpen'; import {QuickOpenEntry, QuickOpenModel} from 'vs/base/parts/quickopen/browser/quickOpenModel'; import {QuickOpenHandler} from 'vs/workbench/browser/quickopen'; diff --git a/src/vs/workbench/parts/search/browser/openSymbolHandler.ts b/src/vs/workbench/parts/search/browser/openSymbolHandler.ts index fe8dfb3f05c..f85fb379c5a 100644 --- a/src/vs/workbench/parts/search/browser/openSymbolHandler.ts +++ b/src/vs/workbench/parts/search/browser/openSymbolHandler.ts @@ -192,23 +192,19 @@ export class OpenSymbolHandler extends QuickOpenHandler { } private sort(searchValue: string, elementA: SymbolEntry, elementB: SymbolEntry): number { - let elementAName = elementA.getName().toLowerCase(); - let elementBName = elementB.getName().toLowerCase(); - - // Compare by name - let r = strings.localeCompare(elementAName, elementBName); - if (r !== 0) { - return r; - } // Sort by Type if name is identical - let elementAType = elementA.getType(); - let elementBType = elementB.getType(); - if (elementAType !== elementBType) { - return OpenSymbolHandler.SUPPORTED_OPEN_TYPES.indexOf(elementAType) < OpenSymbolHandler.SUPPORTED_OPEN_TYPES.indexOf(elementBType) ? -1 : 1; + let elementAName = elementA.getName().toLowerCase(); + let elementBName = elementB.getName().toLowerCase(); + if (elementAName === elementBName) { + let elementAType = elementA.getType(); + let elementBType = elementB.getType(); + if (elementAType !== elementBType) { + return OpenSymbolHandler.SUPPORTED_OPEN_TYPES.indexOf(elementAType) < OpenSymbolHandler.SUPPORTED_OPEN_TYPES.indexOf(elementBType) ? -1 : 1; + } } - return 0; // Keep default sorting order otherwise + return QuickOpenEntry.compare(elementA, elementB, searchValue); } public getGroupLabel(): string { -- GitLab