From 72f1942ce16667c497e3581de9689e30ab2b93ec Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu Date: Thu, 2 Jun 2016 12:15:31 +0200 Subject: [PATCH] Sort markers by line number --- .../parts/markers/common/markersModel.ts | 33 ++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/src/vs/workbench/parts/markers/common/markersModel.ts b/src/vs/workbench/parts/markers/common/markersModel.ts index 4fefbc1ec7e..b8c7639a137 100644 --- a/src/vs/workbench/parts/markers/common/markersModel.ts +++ b/src/vs/workbench/parts/markers/common/markersModel.ts @@ -72,7 +72,8 @@ export class MarkersModel { } private toResource(entry: Map.Entry) { - let markers= entry.value.filter(this.filterMarker.bind(this)).map(this.toMarker); + let markers:Marker[]= entry.value.filter(this.filterMarker.bind(this)).map(this.toMarker); + markers.sort(this.compareMarkers.bind(this)); return markers.length > 0 ? new Resource(entry.key, markers, this.getStatistics(entry.value)) : null; } @@ -80,6 +81,36 @@ export class MarkersModel { return new Marker(marker.resource.toString() + index, marker); } + private compareMarkers(a: Marker, b:Marker): number { + let result= this.compare(a.marker.startLineNumber, b.marker.startLineNumber); + if (result !== 0) { + return result; + } + + result= this.compare(a.marker.startColumn, b.marker.startColumn); + if (result !== 0) { + return result; + } + + result= this.compare(a.marker.endLineNumber, b.marker.endLineNumber); + if (result !== 0) { + return result; + } + + result= this.compare(a.marker.endColumn, b.marker.endColumn); + if (result !== 0) { + return result; + } + + return a.marker.message.localeCompare(b.marker.message); + } + + private compare(a: number, b: number): number { + return a < b ? -1 + : a > b ? 1 + : 0; + } + private filterMarker(marker: IMarker):boolean { if (this.filterErrors && Severity.Error !== marker.severity) { return false; -- GitLab