提交 c0455807 编写于 作者: B Benjamin Pasero

more unified quick open sorting

上级 25358430
...@@ -134,7 +134,8 @@ export class QuickOpenEntry { ...@@ -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 { public static compare(elementA: QuickOpenEntry, elementB: QuickOpenEntry, lookFor: string): number {
...@@ -153,7 +154,7 @@ export class QuickOpenEntry { ...@@ -153,7 +154,7 @@ export class QuickOpenEntry {
return 1; 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 nameA = elementA.getLabel();
let nameB = elementB.getLabel(); let nameB = elementB.getLabel();
if (nameA === nameB) { if (nameA === nameB) {
......
...@@ -230,7 +230,7 @@ export class CommandsHandler extends QuickOpenHandler { ...@@ -230,7 +230,7 @@ export class CommandsHandler extends QuickOpenHandler {
entries = arrays.distinct(entries, (entry) => entry.getLabel() + entry.getGroupLabel()); entries = arrays.distinct(entries, (entry) => entry.getLabel() + entry.getGroupLabel());
// Sort by name // Sort by name
entries = entries.sort(this.sort); entries = entries.sort((entryA, entryB) => QuickOpenEntry.compare(entryA, entryB, searchValue));
return TPromise.as(new QuickOpenModel(entries)); return TPromise.as(new QuickOpenModel(entries));
} }
...@@ -299,13 +299,6 @@ export class CommandsHandler extends QuickOpenHandler { ...@@ -299,13 +299,6 @@ export class CommandsHandler extends QuickOpenHandler {
return entries; 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 { public getAutoFocus(searchValue: string): IAutoFocus {
return { return {
autoFocusFirstEntry: true, autoFocusFirstEntry: true,
......
...@@ -14,7 +14,6 @@ import paths = require('vs/base/common/paths'); ...@@ -14,7 +14,6 @@ import paths = require('vs/base/common/paths');
import filters = require('vs/base/common/filters'); import filters = require('vs/base/common/filters');
import labels = require('vs/base/common/labels'); import labels = require('vs/base/common/labels');
import {IRange} from 'vs/editor/common/editorCommon'; import {IRange} from 'vs/editor/common/editorCommon';
import {compareAnything} from 'vs/base/common/comparers';
import {IAutoFocus} from 'vs/base/parts/quickopen/browser/quickOpen'; import {IAutoFocus} from 'vs/base/parts/quickopen/browser/quickOpen';
import {QuickOpenEntry, QuickOpenModel} from 'vs/base/parts/quickopen/browser/quickOpenModel'; import {QuickOpenEntry, QuickOpenModel} from 'vs/base/parts/quickopen/browser/quickOpenModel';
import {QuickOpenHandler} from 'vs/workbench/browser/quickopen'; import {QuickOpenHandler} from 'vs/workbench/browser/quickopen';
......
...@@ -192,23 +192,19 @@ export class OpenSymbolHandler extends QuickOpenHandler { ...@@ -192,23 +192,19 @@ export class OpenSymbolHandler extends QuickOpenHandler {
} }
private sort(searchValue: string, elementA: SymbolEntry, elementB: SymbolEntry): number { 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 // Sort by Type if name is identical
let elementAType = elementA.getType(); let elementAName = elementA.getName().toLowerCase();
let elementBType = elementB.getType(); let elementBName = elementB.getName().toLowerCase();
if (elementAType !== elementBType) { if (elementAName === elementBName) {
return OpenSymbolHandler.SUPPORTED_OPEN_TYPES.indexOf(elementAType) < OpenSymbolHandler.SUPPORTED_OPEN_TYPES.indexOf(elementBType) ? -1 : 1; 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 { public getGroupLabel(): string {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册