diff --git a/rascal-lsp/src/main/java/org/rascalmpl/vscode/lsp/LSPIDEServices.java b/rascal-lsp/src/main/java/org/rascalmpl/vscode/lsp/LSPIDEServices.java index e186804d5..874d7d79d 100644 --- a/rascal-lsp/src/main/java/org/rascalmpl/vscode/lsp/LSPIDEServices.java +++ b/rascal-lsp/src/main/java/org/rascalmpl/vscode/lsp/LSPIDEServices.java @@ -43,6 +43,8 @@ import org.apache.logging.log4j.Logger; import org.eclipse.lsp4j.ApplyWorkspaceEditParams; import org.eclipse.lsp4j.Diagnostic; +import org.eclipse.lsp4j.MessageParams; +import org.eclipse.lsp4j.MessageType; import org.eclipse.lsp4j.ProgressParams; import org.eclipse.lsp4j.PublishDiagnosticsParams; import org.eclipse.lsp4j.ShowDocumentParams; @@ -356,4 +358,37 @@ public void unregisterDiagnostics(IList resources) { } } + @Override + public void logMessage(IConstructor msg) { + languageClient.logMessage(new MessageParams(getMessageType(msg), getMessageString(msg))); + } + + @Override + public void showMessage(IConstructor msg) { + languageClient.showMessage(new MessageParams(getMessageType(msg), getMessageString(msg))); + } + + private String getMessageString(IConstructor msg) { + return ((IString) msg.get("msg")).getValue(); + } + + private MessageType getMessageType(IConstructor msg) { + MessageType type = null; + switch (msg.getName()) { + case "error": + type = MessageType.Error; + break; + case "warning": + type = MessageType.Warning; + break; + case "info": + type = MessageType.Info; + break; + default: + type = MessageType.Log; + break; + } + return type; + } + } diff --git a/rascal-lsp/src/main/java/org/rascalmpl/vscode/lsp/terminal/ITerminalIDEServer.java b/rascal-lsp/src/main/java/org/rascalmpl/vscode/lsp/terminal/ITerminalIDEServer.java index 235d30f07..df05983b0 100644 --- a/rascal-lsp/src/main/java/org/rascalmpl/vscode/lsp/terminal/ITerminalIDEServer.java +++ b/rascal-lsp/src/main/java/org/rascalmpl/vscode/lsp/terminal/ITerminalIDEServer.java @@ -35,6 +35,8 @@ import java.util.Base64.Decoder; import java.util.Base64.Encoder; import java.util.concurrent.CompletableFuture; + +import org.eclipse.lsp4j.MessageParams; import org.checkerframework.checker.nullness.qual.MonotonicNonNull; import org.checkerframework.checker.nullness.qual.Nullable; import org.eclipse.lsp4j.ShowDocumentParams; @@ -93,6 +95,16 @@ default void showHTML(BrowseParameter content) { throw new UnsupportedOperationException(); } + @JsonNotification("window/showMessage") + default void showMessage(MessageParams messageParams) { + throw new UnsupportedOperationException(); + } + + @JsonNotification("window/logMessage") + default void logMessage(MessageParams messageParams) { + throw new UnsupportedOperationException(); + } + @JsonRequest("rascal/jobStart") default CompletableFuture jobStart(JobStartParameter param) { throw new UnsupportedOperationException(); diff --git a/rascal-lsp/src/main/java/org/rascalmpl/vscode/lsp/terminal/TerminalIDEClient.java b/rascal-lsp/src/main/java/org/rascalmpl/vscode/lsp/terminal/TerminalIDEClient.java index 7ebca4e2f..adc39441c 100644 --- a/rascal-lsp/src/main/java/org/rascalmpl/vscode/lsp/terminal/TerminalIDEClient.java +++ b/rascal-lsp/src/main/java/org/rascalmpl/vscode/lsp/terminal/TerminalIDEClient.java @@ -34,6 +34,9 @@ import java.net.URI; import java.util.concurrent.ExecutionException; +import org.eclipse.lsp4j.MessageParams; +import org.eclipse.lsp4j.MessageType; +import org.eclipse.lsp4j.Range; import org.eclipse.lsp4j.ShowDocumentParams; import org.eclipse.lsp4j.jsonrpc.Launcher; import org.rascalmpl.exceptions.RuntimeExceptionFactory; @@ -250,6 +253,39 @@ public void unregisterDiagnostics(IList resources) { server.unregisterDiagnostics(new UnRegisterDiagnosticsParameters(resources)); } + @Override + public void logMessage(IConstructor msg) { + server.logMessage(new MessageParams(getMessageType(msg), getMessageString(msg))); + } + + @Override + public void showMessage(IConstructor msg) { + server.showMessage(new MessageParams(getMessageType(msg), getMessageString(msg))); + } + + private String getMessageString(IConstructor msg) { + return ((IString) msg.get("msg")).getValue(); + } + + private MessageType getMessageType(IConstructor msg) { + MessageType type = null; + switch (msg.getName()) { + case "error": + type = MessageType.Error; + break; + case "warning": + type = MessageType.Warning; + break; + case "info": + type = MessageType.Info; + break; + default: + type = MessageType.Log; + break; + } + return type; + } + public void startDebuggingSession(int serverPort){ server.startDebuggingSession(serverPort); } diff --git a/rascal-lsp/src/main/java/org/rascalmpl/vscode/lsp/terminal/TerminalIDEServer.java b/rascal-lsp/src/main/java/org/rascalmpl/vscode/lsp/terminal/TerminalIDEServer.java index 2c8260cd7..f3acc6840 100644 --- a/rascal-lsp/src/main/java/org/rascalmpl/vscode/lsp/terminal/TerminalIDEServer.java +++ b/rascal-lsp/src/main/java/org/rascalmpl/vscode/lsp/terminal/TerminalIDEServer.java @@ -96,6 +96,16 @@ public CompletableFuture edit(ShowDocumentParams edit) { return languageClient.showDocument(edit); } + @Override + public void logMessage(MessageParams msg) { + languageClient.logMessage(msg); + } + + @Override + public void showMessage(MessageParams msg) { + languageClient.logMessage(msg); + } + @Override public CompletableFuture resolveProjectLocation(SourceLocationParameter loc) { logger.trace("resolveProjectLocation({})", loc);