diff --git a/src/vs/editor/common/services/modelServiceImpl.ts b/src/vs/editor/common/services/modelServiceImpl.ts index 7eda4db5c65..d00501dff31 100644 --- a/src/vs/editor/common/services/modelServiceImpl.ts +++ b/src/vs/editor/common/services/modelServiceImpl.ts @@ -153,6 +153,10 @@ class ModelMarkerHandler { htmlMessage = [marker.message]; } + if (marker.source) { + htmlMessage.unshift({ isText: true, text: `[${marker.source}] ` }); + } + return { stickiness: EditorCommon.TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges, className, diff --git a/src/vs/editor/contrib/gotoError/browser/gotoError.ts b/src/vs/editor/contrib/gotoError/browser/gotoError.ts index f8a16f9399f..6268a98d582 100644 --- a/src/vs/editor/contrib/gotoError/browser/gotoError.ts +++ b/src/vs/editor/contrib/gotoError/browser/gotoError.ts @@ -24,7 +24,6 @@ import Modes = require('vs/editor/common/modes'); import EditorBrowser = require('vs/editor/browser/editorBrowser'); import HtmlContentRenderer = require('vs/base/browser/htmlContentRenderer'); import {Emitter} from 'vs/base/common/event'; -import CodeEditorWidget = require('vs/editor/browser/widget/codeEditorWidget'); import {Position} from 'vs/editor/common/core/position'; import {IMarkerService, IMarker} from 'vs/platform/markers/common/markers'; import {ITelemetryService} from 'vs/platform/telemetry/common/telemetry'; @@ -250,7 +249,11 @@ class MarkerNavigationWidget extends ZoneWidget.ZoneWidget { } // update label and show - this._element.text(strings.format('({0}/{1}) ', this._model.indexOf(marker) + 1, this._model.length())); + let text = strings.format('({0}/{1}) ', this._model.indexOf(marker) + 1, this._model.length()); + if (marker.source) { + text = `${text}[${marker.source}] `; + } + this._element.text(text); var htmlElem = this._element.getHTMLElement(); HtmlContentRenderer.renderHtml2(marker.message).forEach((node) => { htmlElem.appendChild(node); @@ -348,7 +351,8 @@ class MarkerController implements EditorCommon.IEditorContribution { private _callOnClose: lifecycle.IDisposable[] = []; private _markersNavigationVisible: IKeybindingContextKey; - constructor(editor:EditorBrowser.ICodeEditor, @IMarkerService markerService: IMarkerService, @IKeybindingService keybindingService: IKeybindingService, + constructor( + editor: EditorBrowser.ICodeEditor, @IMarkerService markerService: IMarkerService, @IKeybindingService keybindingService: IKeybindingService, @IEventService eventService: IEventService, @IEditorService editorService: IEditorService) { this.markerService = markerService; this.eventService = eventService; diff --git a/src/vs/languages/typescript/common/features/diagnostics.ts b/src/vs/languages/typescript/common/features/diagnostics.ts index e4691e3bc87..fc7ae9e26d5 100644 --- a/src/vs/languages/typescript/common/features/diagnostics.ts +++ b/src/vs/languages/typescript/common/features/diagnostics.ts @@ -129,6 +129,7 @@ function _asMarker(diagnostic: ts.Diagnostic, classifier: DiagnosticClassifier, markers.push({ severity, message: ts.flattenDiagnosticMessageText(diagnostic.messageText, '\n'), + source: 'JavaScript', code: diagnostic.code.toString(), startLineNumber: range.startLineNumber, startColumn: range.startColumn, diff --git a/src/vs/workbench/parts/quickopen/browser/markersHandler.ts b/src/vs/workbench/parts/quickopen/browser/markersHandler.ts index c60bfb19278..c9467f791e2 100644 --- a/src/vs/workbench/parts/quickopen/browser/markersHandler.ts +++ b/src/vs/workbench/parts/quickopen/browser/markersHandler.ts @@ -45,19 +45,23 @@ class MarkerEntry extends QuickOpenEntryItem { dom.clearNode(container); let elements: string[] = []; let {severity, message, source, resource, startLineNumber, startColumn} = this._marker; - if (source) { - message = `${message} (${source})`; - } elements.push('
'); elements.push(strings.format('
', Severity.toString(severity).toLowerCase())); elements.push('
'); elements.push('
'); elements.push('
'); + if (source) { + elements.push(strings.format('[{0}] ', source)) + } elements.push(strings.format('{0}', message)); elements.push('
'); elements.push('
'); - elements.push(strings.format('{0} ({1},{2}){3}', - paths.basename(resource.fsPath), startLineNumber, startColumn, this._lp.getLabel(paths.dirname(resource.fsPath)) + elements.push(strings.format( + '{0} ({1},{2}){3}', + paths.basename(resource.fsPath), + startLineNumber, + startColumn, + this._lp.getLabel(paths.dirname(resource.fsPath)) )); elements.push('
'); elements.push('
'); @@ -95,8 +99,7 @@ export class MarkersHandler extends QuickOpenHandler { constructor( @IMarkerService markerService: IMarkerService, @IEditorService editorService: IEditorService, - @IWorkspaceContextService contextService: IWorkspaceContextService - ) { + @IWorkspaceContextService contextService: IWorkspaceContextService) { super(); this._markerService = markerService; @@ -120,25 +123,33 @@ export class MarkersHandler extends QuickOpenHandler { private static _sort(a: IMarker, b: IMarker): number { let ret: number; - // 1st: severity matters first + // severity matters first ret = Severity.compare(a.severity, b.severity); if (ret !== 0) { return ret; } - // 2nd: file name matters for equal severity + // source matters + if (a.source && b.source) { + ret = a.source.localeCompare(b.source); + if (ret !== 0) { + return ret; + } + } + + // file name matters for equal severity ret = strings.localeCompare(a.resource.fsPath, b.resource.fsPath); if (ret !== 0) { return ret; } - // 3rd: start line matters + // start line matters ret = a.startLineNumber - b.startLineNumber; if (ret !== 0) { return ret; } - // 4th: start column matters + // start column matters ret = a.startColumn - b.startColumn; if (ret !== 0) { return ret;