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

more unified quick open sorting

上级 25358430
......@@ -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) {
......
......@@ -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,
......
......@@ -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';
......
......@@ -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 {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册