From efc702c759ccf909b5a0a3bdeb841f645c2aeb9f Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu Date: Thu, 20 Sep 2018 11:50:18 +0200 Subject: [PATCH] Implement #49215 --- src/vs/workbench/api/node/extHostTypeConverters.ts | 3 ++- .../parts/markers/electron-browser/markersModel.ts | 5 +++++ .../markers/electron-browser/markersTreeViewer.ts | 5 +++++ .../parts/markers/electron-browser/media/markers.css | 12 ++++++++---- 4 files changed, 20 insertions(+), 5 deletions(-) diff --git a/src/vs/workbench/api/node/extHostTypeConverters.ts b/src/vs/workbench/api/node/extHostTypeConverters.ts index 30ab99b0b47..a16e175019f 100644 --- a/src/vs/workbench/api/node/extHostTypeConverters.ts +++ b/src/vs/workbench/api/node/extHostTypeConverters.ts @@ -24,6 +24,7 @@ import { WorkspaceEditDto, ResourceTextEditDto, ResourceFileEditDto } from 'vs/w import { MarkerSeverity, IRelatedInformation, IMarkerData, MarkerTag } from 'vs/platform/markers/common/markers'; import { ACTIVE_GROUP, SIDE_GROUP } from 'vs/workbench/services/editor/common/editorService'; import { ExtHostDocumentsAndEditors } from 'vs/workbench/api/node/extHostDocumentsAndEditors'; +import { isString, isNumber } from 'vs/base/common/types'; export interface PositionLike { line: number; @@ -107,7 +108,7 @@ export namespace Diagnostic { ...Range.from(value.range), message: value.message, source: value.source, - code: String(value.code), + code: isString(value.code) || isNumber(value.code) ? String(value.code) : void 0, severity: DiagnosticSeverity.from(value.severity), relatedInformation: value.relatedInformation && value.relatedInformation.map(DiagnosticRelatedInformation.from), tags: Array.isArray(value.tags) ? value.tags.map(DiagnosticTag.from) : undefined, diff --git a/src/vs/workbench/parts/markers/electron-browser/markersModel.ts b/src/vs/workbench/parts/markers/electron-browser/markersModel.ts index 8a8b3499a33..727870ec9f6 100644 --- a/src/vs/workbench/parts/markers/electron-browser/markersModel.ts +++ b/src/vs/workbench/parts/markers/electron-browser/markersModel.ts @@ -119,6 +119,7 @@ export class Marker extends NodeWithId { isSelected: boolean = false; messageMatches: IMatch[] = []; sourceMatches: IMatch[] = []; + codeMatches: IMatch[] = []; resourceRelatedInformation: RelatedInformation[] = []; constructor( @@ -352,6 +353,7 @@ export class MarkersModel { private updateMarker(marker: Marker, resource: ResourceMarkers): void { marker.messageMatches = !resource.isExcluded && this._filterOptions.textFilter ? FilterOptions._fuzzyFilter(this._filterOptions.textFilter, marker.raw.message) : []; marker.sourceMatches = !resource.isExcluded && marker.raw.source && this._filterOptions.textFilter ? FilterOptions._filter(this._filterOptions.textFilter, marker.raw.source) : []; + marker.codeMatches = !resource.isExcluded && marker.raw.code && this._filterOptions.textFilter ? FilterOptions._filter(this._filterOptions.textFilter, marker.raw.code) : []; marker.resourceRelatedInformation.forEach(r => { r.uriMatches = !resource.isExcluded && this._filterOptions.textFilter ? FilterOptions._filter(this._filterOptions.textFilter, paths.basename(r.raw.resource.fsPath)) : []; r.messageMatches = !resource.isExcluded && this._filterOptions.textFilter ? FilterOptions._fuzzyFilter(this._filterOptions.textFilter, r.raw.message) : []; @@ -404,6 +406,9 @@ export class MarkersModel { if (!!marker.source && !!FilterOptions._filter(this._filterOptions.textFilter, marker.source)) { return true; } + if (!!marker.code && !!FilterOptions._filter(this._filterOptions.textFilter, marker.code)) { + return true; + } if (!!marker.relatedInformation && marker.relatedInformation.some(r => !!FilterOptions._filter(this._filterOptions.textFilter, paths.basename(r.resource.fsPath)) || ! !FilterOptions._filter(this._filterOptions.textFilter, r.message))) { diff --git a/src/vs/workbench/parts/markers/electron-browser/markersTreeViewer.ts b/src/vs/workbench/parts/markers/electron-browser/markersTreeViewer.ts index a0bc5c204e9..ed63e59025a 100644 --- a/src/vs/workbench/parts/markers/electron-browser/markersTreeViewer.ts +++ b/src/vs/workbench/parts/markers/electron-browser/markersTreeViewer.ts @@ -36,6 +36,7 @@ interface IMarkerTemplateData { source: HighlightedLabel; description: HighlightedLabel; lnCol: HTMLElement; + code: HighlightedLabel; } interface IRelatedInformationTemplateData { @@ -205,6 +206,7 @@ export class Renderer implements IRenderer { data.icon = dom.append(container, dom.$('.icon')); data.source = new HighlightedLabel(dom.append(container, dom.$(''))); data.description = new HighlightedLabel(dom.append(container, dom.$('.marker-description'))); + data.code = new HighlightedLabel(dom.append(container, dom.$(''))); data.lnCol = dom.append(container, dom.$('span.marker-line')); return data; } @@ -245,6 +247,9 @@ export class Renderer implements IRenderer { templateData.description.set(marker.message, element.messageMatches); templateData.description.element.title = marker.message; + dom.toggleClass(templateData.code.element, 'marker-code', !!marker.code); + templateData.code.set(marker.code || '', element.codeMatches); + templateData.lnCol.textContent = Messages.MARKERS_PANEL_AT_LINE_COL_NUMBER(marker.startLineNumber, marker.startColumn); } diff --git a/src/vs/workbench/parts/markers/electron-browser/media/markers.css b/src/vs/workbench/parts/markers/electron-browser/media/markers.css index ee6c233d5f3..5ee9e566d0c 100644 --- a/src/vs/workbench/parts/markers/electron-browser/media/markers.css +++ b/src/vs/workbench/parts/markers/electron-browser/media/markers.css @@ -114,22 +114,26 @@ overflow: hidden; } -.markers-panel .markers-panel-container .tree-container .markers-panel-tree-entry .marker-source { +.markers-panel .markers-panel-container .tree-container .markers-panel-tree-entry .marker-source, +.markers-panel .markers-panel-container .tree-container .markers-panel-tree-entry .marker-code { margin-right: 5px; } -.markers-panel .markers-panel-container .tree-container .markers-panel-tree-entry .marker-source:before { +.markers-panel .markers-panel-container .tree-container .markers-panel-tree-entry .marker-source:before, +.markers-panel .markers-panel-container .tree-container .markers-panel-tree-entry .marker-code:before { content: '['; } -.markers-panel .markers-panel-container .tree-container .markers-panel-tree-entry .marker-source:after { +.markers-panel .markers-panel-container .tree-container .markers-panel-tree-entry .marker-source:after, +.markers-panel .markers-panel-container .tree-container .markers-panel-tree-entry .marker-code:after { content: ']'; } .markers-panel .markers-panel-container .tree-container .markers-panel-tree-entry .marker-source, .markers-panel .markers-panel-container .tree-container .markers-panel-tree-entry .related-info-resource, .markers-panel .markers-panel-container .tree-container .markers-panel-tree-entry .related-info-resource-separator, -.markers-panel .markers-panel-container .tree-container .markers-panel-tree-entry .marker-line { +.markers-panel .markers-panel-container .tree-container .markers-panel-tree-entry .marker-line, +.markers-panel .markers-panel-container .tree-container .markers-panel-tree-entry .marker-code { opacity: 0.7; } -- GitLab