From 0b9e88251c69686bbdf59637c2f8f2726bacae9b Mon Sep 17 00:00:00 2001 From: "Jurgen J. Vinju" Date: Mon, 3 Oct 2022 12:54:20 +0200 Subject: [PATCH 1/2] added basic scaffolding that should implement log and show message but it does not work yet. --- .../rascalmpl/vscode/lsp/LSPIDEServices.java | 41 +++++++++++++++++-- .../lsp/terminal/ITerminalIDEServer.java | 11 +++++ .../lsp/terminal/TerminalIDEClient.java | 35 ++++++++++++++++ .../lsp/terminal/TerminalIDEServer.java | 10 +++++ 4 files changed, 94 insertions(+), 3 deletions(-) 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 2f24b1af8..db321b60b 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 @@ -37,14 +37,13 @@ import java.util.Map.Entry; import java.util.Objects; import java.util.concurrent.CompletableFuture; -import java.util.concurrent.ExecutionException; import java.util.function.Function; -import com.google.gson.JsonObject; - 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; @@ -59,6 +58,9 @@ import org.rascalmpl.vscode.lsp.terminal.ITerminalIDEServer.LanguageParameter; import org.rascalmpl.vscode.lsp.util.Diagnostics; import org.rascalmpl.vscode.lsp.util.DocumentChanges; + +import com.google.gson.JsonObject; + import io.usethesource.vallang.IConstructor; import io.usethesource.vallang.IList; import io.usethesource.vallang.IMap; @@ -340,4 +342,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 b3147b294..9a56489dd 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,7 @@ import java.util.Base64.Encoder; import java.util.concurrent.CompletableFuture; +import org.eclipse.lsp4j.MessageParams; import org.eclipse.lsp4j.ShowDocumentParams; import org.eclipse.lsp4j.ShowDocumentResult; import org.eclipse.lsp4j.jsonrpc.services.JsonNotification; @@ -92,6 +93,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 4b56d2ada..3c3efff66 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 @@ -33,6 +33,8 @@ 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; @@ -199,4 +201,37 @@ public void registerDiagnostics(IList messages) { 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; + } } 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 4a34480d0..507dd13f5 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); From 0a8520c795641e97e10cd3e77f9ab4dae5f33deb Mon Sep 17 00:00:00 2001 From: "Jurgen J. Vinju" Date: Tue, 31 Oct 2023 10:37:10 +0100 Subject: [PATCH 2/2] forgot to remove <<< HEAD --- .../org/rascalmpl/vscode/lsp/terminal/TerminalIDEClient.java | 1 - 1 file changed, 1 deletion(-) 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 bd1415f9d..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 @@ -253,7 +253,6 @@ public void unregisterDiagnostics(IList resources) { server.unregisterDiagnostics(new UnRegisterDiagnosticsParameters(resources)); } -<<<<<<< HEAD @Override public void logMessage(IConstructor msg) { server.logMessage(new MessageParams(getMessageType(msg), getMessageString(msg)));