diff --git a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/diagnostics/DiagnosticsTest.java b/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/diagnostics/DiagnosticsTest.java index 1f4f4fd0c..138086ff1 100644 --- a/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/diagnostics/DiagnosticsTest.java +++ b/org.eclipse.lsp4e.test/src/org/eclipse/lsp4e/test/diagnostics/DiagnosticsTest.java @@ -104,7 +104,8 @@ public void testDiagnostics() throws CoreException { assertEquals(markerCharStart, MarkerUtilities.getCharStart(marker.get())); assertEquals(markerCharEnd, MarkerUtilities.getCharEnd(marker.get())); assertEquals(markerLineIndex + 1, MarkerUtilities.getLineNumber(marker.get())); - assertEquals(diagnostic.getMessage(), MarkerUtilities.getMessage(marker.get())); + assertEquals(diagnostic.getMessage() + " [" + diagnostic.getCode().get() + "]", + MarkerUtilities.getMessage(marker.get())); } diagnosticsToMarkers.accept(new PublishDiagnosticsParams(file.getLocationURI().toString(), Collections.emptyList())); @@ -229,7 +230,8 @@ public void testDiagnosticsRangeAfterDocument() throws CoreException { Diagnostic diagnostic = diagnostics.get(i); IMarker marker = markers[i]; - assertEquals(diagnostic.getMessage(), MarkerUtilities.getMessage(marker)); + assertEquals(diagnostic.getMessage() + " [" + diagnostic.getCode().get() + "]", + MarkerUtilities.getMessage(marker)); assertEquals(content.length(), MarkerUtilities.getCharStart(marker)); assertEquals(content.length(), MarkerUtilities.getCharEnd(marker)); assertEquals(1, MarkerUtilities.getLineNumber(marker)); diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/diagnostics/DiagnosticAnnotation.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/diagnostics/DiagnosticAnnotation.java index 1f5fa337a..7166d272e 100644 --- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/diagnostics/DiagnosticAnnotation.java +++ b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/diagnostics/DiagnosticAnnotation.java @@ -40,7 +40,7 @@ public void setType(@Nullable String type) { @Override public String getText() { - return this.diagnostic.getMessage(); + return LSPDiagnosticsToMarkers.computeMarkerMessage(diagnostic); } @Override diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/diagnostics/LSPDiagnosticsToMarkers.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/diagnostics/LSPDiagnosticsToMarkers.java index 28acb0d68..fb93cff0e 100644 --- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/diagnostics/LSPDiagnosticsToMarkers.java +++ b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/diagnostics/LSPDiagnosticsToMarkers.java @@ -58,6 +58,14 @@ public class LSPDiagnosticsToMarkers implements Consumer code = diagnostic.getCode(); + return code == null // + ? diagnostic.getMessage() + : diagnostic.getMessage() + " [" + code.get() + "]"; //$NON-NLS-1$ //$NON-NLS-2$ + } + private final String languageServerId; private final String markerType; private final Optional markerAttributeComputer; @@ -220,6 +228,7 @@ protected void updateMarker(Map targetAttributes, IMarker marker return null; } + final var markerMessage = computeMarkerMessage(diagnostic); for (IMarker marker : remainingMarkers) { if (!marker.exists()) { continue; @@ -227,7 +236,7 @@ protected void updateMarker(Map targetAttributes, IMarker marker try { if (LSPEclipseUtils.toOffset(diagnostic.getRange().getStart(), document) == MarkerUtilities.getCharStart(marker) && (LSPEclipseUtils.toOffset(diagnostic.getRange().getEnd(), document) == MarkerUtilities.getCharEnd(marker) || Objects.equals(diagnostic.getRange().getStart(), diagnostic.getRange().getEnd())) - && Objects.equals(marker.getAttribute(IMarker.MESSAGE), diagnostic.getMessage()) + && Objects.equals(marker.getAttribute(IMarker.MESSAGE), markerMessage) && Objects.equals(marker.getAttribute(LANGUAGE_SERVER_ID), this.languageServerId)) { return marker; } @@ -251,7 +260,7 @@ private Map computeMarkerAttributes(@Nullable IDocument document final var attributes = new HashMap(8); attributes.put(LSP_DIAGNOSTIC, diagnostic); attributes.put(LANGUAGE_SERVER_ID, languageServerId); - attributes.put(IMarker.MESSAGE, diagnostic.getMessage()); + attributes.put(IMarker.MESSAGE, computeMarkerMessage(diagnostic)); attributes.put(IMarker.SEVERITY, LSPEclipseUtils.toEclipseMarkerSeverity(diagnostic.getSeverity())); if (document != null) {