diff --git a/src/vs/editor/contrib/gotoError/markerNavigationService.ts b/src/vs/editor/contrib/gotoError/markerNavigationService.ts index e2f2a573708..5344ea6f091 100644 --- a/src/vs/editor/contrib/gotoError/markerNavigationService.ts +++ b/src/vs/editor/contrib/gotoError/markerNavigationService.ts @@ -47,27 +47,20 @@ export class MarkerList { this._resourceFilter = resourceFilter; } - const sortOrder = this._configService.getValue('problems.sortOrder'); + const compareOrder = this._configService.getValue('problems.compareOrder'); const compareMarker = (a: IMarker, b: IMarker): number => { - let res = 0; - for (let i = 0; i < sortOrder.length; i++) { + let res = compare(a.resource.toString(), b.resource.toString()); + const compareSeverity = () => { res = MarkerSeverity.compare(a.severity, b.severity); }; + const comparePosition = () => { res = Range.compareRangesUsingStarts(a, b); }; + let runnables = [compareSeverity, comparePosition]; + if (compareOrder === 'position') { + runnables = [comparePosition, compareSeverity]; + } + for (let i = 0; i < runnables.length; i++) { if (res !== 0) { break; } - switch (sortOrder[i]) { - case 'resource': - res = compare(a.resource.toString(), b.resource.toString()); - break; - case 'severity': - res = MarkerSeverity.compare(a.severity, b.severity); - break; - case 'starts': - res = Range.compareRangesUsingStarts(a, b); - break; - case 'ends': - res = Range.compareRangesUsingEnds(a, b); - break; - } + runnables[i](); } return res; }; diff --git a/src/vs/workbench/contrib/markers/browser/markers.contribution.ts b/src/vs/workbench/contrib/markers/browser/markers.contribution.ts index d11eefa196b..9fef8f58f12 100644 --- a/src/vs/workbench/contrib/markers/browser/markers.contribution.ts +++ b/src/vs/workbench/contrib/markers/browser/markers.contribution.ts @@ -101,10 +101,10 @@ Registry.as(Extensions.Configuration).registerConfigurat 'type': 'boolean', 'default': false }, - 'problems.sortOrder': { - 'description': 'TODO', - 'type': 'array', - 'default': ['resource', 'severity', 'starts'], + 'problems.compareOrder': { + 'type': 'string', + 'default': ['severity'], + 'enum': ['severity', 'position'], }, } });