Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -31,35 +31,37 @@
import org.checkerframework.checker.nullness.qual.Nullable;
import org.eclipse.lsp4j.Range;
import org.eclipse.lsp4j.jsonrpc.services.JsonNotification;
import org.eclipse.lsp4j.jsonrpc.services.JsonSegment;
import org.eclipse.lsp4j.services.LanguageClient;
import org.rascalmpl.vscode.lsp.parametric.LanguageRegistry.LanguageParameter;

import io.usethesource.vallang.IInteger;
import io.usethesource.vallang.IString;

@JsonSegment("rascal")
public interface IBaseLanguageClient extends LanguageClient {
@JsonNotification("rascal/showContent")
@JsonNotification
void showContent(URI uri, IString title, IInteger viewColumn);

@JsonNotification("rascal/receiveRegisterLanguage")
@JsonNotification
void receiveRegisterLanguage(LanguageParameter lang);

@JsonNotification("rascal/receiveUnregisterLanguage")
@JsonNotification
void receiveUnregisterLanguage(LanguageParameter lang);

@JsonNotification("rascal/editDocument")
@JsonNotification
void editDocument(URI uri, @Nullable Range range, int viewColumn);

/**
* Notification sent to the vscode client to start a debugging session on the given debug adapter port
*/
@JsonNotification("rascal/startDebuggingSession")
@JsonNotification
void startDebuggingSession(int serverPort);

/**
* Notification sent to the vscode client to register the port on which the debug adapter server is listening
* It is then used to make the link between a terminal process ID and the corresponding debug server port
*/
@JsonNotification("rascal/registerDebugServerPort")
@JsonNotification
void registerDebugServerPort(int processID, int serverPort);
}
Original file line number Diff line number Diff line change
Expand Up @@ -32,35 +32,37 @@
import org.eclipse.lsp4j.jsonrpc.messages.Tuple.Two;
import org.eclipse.lsp4j.jsonrpc.services.JsonNotification;
import org.eclipse.lsp4j.jsonrpc.services.JsonRequest;
import org.eclipse.lsp4j.jsonrpc.services.JsonSegment;
import org.eclipse.lsp4j.services.LanguageServer;
import org.rascalmpl.vscode.lsp.parametric.LanguageRegistry.LanguageParameter;
import org.rascalmpl.vscode.lsp.uri.jsonrpc.messages.PathConfigParameter;
import org.rascalmpl.vscode.lsp.uri.jsonrpc.messages.VFSRegister;

@JsonSegment("rascal")
public interface IBaseLanguageServerExtensions extends LanguageServer, IRascalFileSystemServices {
@JsonNotification("rascal/supplyRemoteIDEServicesConfiguration")
@JsonNotification
default CompletableFuture<IDEServicesConfiguration> supplyRemoteIDEServicesConfiguration() {
throw new UnsupportedOperationException();
}

@JsonRequest("rascal/sendRegisterLanguage")
@JsonRequest
default CompletableFuture<Void> sendRegisterLanguage(LanguageParameter lang) {
throw new UnsupportedOperationException();
}

@JsonRequest("rascal/sendUnregisterLanguage")
@JsonRequest
default CompletableFuture<Void> sendUnregisterLanguage(LanguageParameter lang) {
throw new UnsupportedOperationException();
}

@JsonRequest("rascal/supplyPathConfig")
@JsonRequest
default CompletableFuture<Two<String, URI[]>[]> supplyPathConfig(PathConfigParameter projectFolder) {
throw new UnsupportedOperationException();
}

@JsonNotification("rascal/vfs/register")
@JsonNotification("vfs/register")
void registerVFS(VFSRegister registration);

@JsonNotification("rascal/logLevel")
@JsonNotification("logLevel")
void setMinimumLogLevel(String level);
}
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@
import org.eclipse.lsp4j.jsonrpc.messages.ResponseError;
import org.eclipse.lsp4j.jsonrpc.services.JsonNotification;
import org.eclipse.lsp4j.jsonrpc.services.JsonRequest;
import org.eclipse.lsp4j.jsonrpc.services.JsonSegment;
import org.eclipse.lsp4j.jsonrpc.validation.NonNull;
import org.rascalmpl.library.Prelude;
import org.rascalmpl.uri.ISourceLocationWatcher.ISourceLocationChangeType;
Expand All @@ -63,12 +64,13 @@
import io.usethesource.vallang.ISourceLocation;
import io.usethesource.vallang.IValueFactory;

@JsonSegment("rascal/filesystem")
public interface IRascalFileSystemServices {
static final URIResolverRegistry reg = URIResolverRegistry.getInstance();
static final Logger IRascalFileSystemServices__logger = LogManager.getLogger(IRascalFileSystemServices.class);
static final ExecutorService executor = NamedThreadPool.cachedDaemon("rascal-vfs");

@JsonRequest("rascal/filesystem/resolveLocation")
@JsonRequest
default CompletableFuture<SourceLocation> resolveLocation(SourceLocation loc) {
return CompletableFuture.supplyAsync(() -> {
try {
Expand All @@ -88,7 +90,7 @@ default CompletableFuture<SourceLocation> resolveLocation(SourceLocation loc) {
}, executor);
}

@JsonRequest("rascal/filesystem/watch")
@JsonRequest
default CompletableFuture<Void> watch(WatchParameters params) {
return CompletableFuture.runAsync(() -> {
try {
Expand Down Expand Up @@ -139,7 +141,7 @@ private static boolean readonly(ISourceLocation loc) throws IOException {
return true;
}

@JsonRequest("rascal/filesystem/stat")
@JsonRequest
default CompletableFuture<FileStat> stat(URIParameter uri) {
return CompletableFuture.supplyAsync(() -> {
try {
Expand Down Expand Up @@ -168,7 +170,7 @@ default CompletableFuture<FileStat> stat(URIParameter uri) {
}, executor);
}

@JsonRequest("rascal/filesystem/readDirectory")
@JsonRequest
default CompletableFuture<FileWithType[]> readDirectory(URIParameter uri) {
return CompletableFuture.supplyAsync(() -> {
try {
Expand All @@ -184,7 +186,7 @@ default CompletableFuture<FileWithType[]> readDirectory(URIParameter uri) {
}, executor);
}

@JsonRequest("rascal/filesystem/createDirectory")
@JsonRequest
default CompletableFuture<Void> createDirectory(URIParameter uri) {
return CompletableFuture.runAsync(() -> {
try {
Expand All @@ -195,7 +197,7 @@ default CompletableFuture<Void> createDirectory(URIParameter uri) {
}, executor);
}

@JsonRequest("rascal/filesystem/readFile")
@JsonRequest
default CompletableFuture<LocationContent> readFile(URIParameter uri) {
return CompletableFuture.supplyAsync(() -> {
try (InputStream source = new Base64InputStream(reg.getInputStream(uri.getLocation()), true)) {
Expand All @@ -206,7 +208,7 @@ default CompletableFuture<LocationContent> readFile(URIParameter uri) {
}, executor);
}

@JsonRequest("rascal/filesystem/writeFile")
@JsonRequest
default CompletableFuture<Void> writeFile(WriteFileParameters params) {
return CompletableFuture.runAsync(() -> {
try {
Expand Down Expand Up @@ -237,7 +239,7 @@ default CompletableFuture<Void> writeFile(WriteFileParameters params) {
}, executor);
}

@JsonRequest("rascal/filesystem/delete")
@JsonRequest
default CompletableFuture<Void> delete(DeleteParameters params) {
return CompletableFuture.runAsync(() -> {
try {
Expand All @@ -249,7 +251,7 @@ default CompletableFuture<Void> delete(DeleteParameters params) {
}, executor);
}

@JsonRequest("rascal/filesystem/rename")
@JsonRequest
default CompletableFuture<Void> rename(RenameParameters params) {
return CompletableFuture.runAsync(() -> {
try {
Expand All @@ -262,7 +264,7 @@ default CompletableFuture<Void> rename(RenameParameters params) {
}, executor);
}

@JsonRequest("rascal/filesystem/schemes")
@JsonRequest("schemes")
default CompletableFuture<String[]> fileSystemSchemes() {
Set<String> inputs = reg.getRegisteredInputSchemes();
Set<String> logicals = reg.getRegisteredLogicalSchemes();
Expand All @@ -271,7 +273,7 @@ default CompletableFuture<String[]> fileSystemSchemes() {
.completedFuture(Stream.concat(inputs.stream(), logicals.stream()).toArray(String[]::new));
}

@JsonNotification("rascal/filesystem/onDidChangeFile")
@JsonNotification
default void onDidChangeFile(FileChangeEvent event) { }


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@

import org.checkerframework.checker.nullness.qual.Nullable;
import org.eclipse.lsp4j.jsonrpc.services.JsonRequest;
import org.eclipse.lsp4j.jsonrpc.services.JsonSegment;
import org.rascalmpl.values.IRascalValueFactory;

import io.usethesource.vallang.IConstructor;
Expand All @@ -46,11 +47,12 @@
/**
* Interface of the Language Registry
*/
@JsonSegment("rascal")
public interface LanguageRegistry {
@JsonRequest("rascal/receiveRegisterLanguage")
@JsonRequest("receiveRegisterLanguage")
CompletableFuture<Void> registerLanguage(LanguageParameter lang);

@JsonRequest("rascal/receiveUnregisterLanguage")
@JsonRequest("receiveUnregisterLanguage")
CompletableFuture<Void> unregisterLanguage(LanguageParameter lang);

public static class LanguageParameter {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,13 +29,15 @@
import java.io.IOException;
import java.util.function.Consumer;
import org.eclipse.lsp4j.jsonrpc.services.JsonNotification;
import org.eclipse.lsp4j.jsonrpc.services.JsonSegment;
import org.rascalmpl.uri.ISourceLocationWatcher;
import org.rascalmpl.vscode.lsp.uri.jsonrpc.messages.ISourceLocationChanged;
import io.usethesource.vallang.ISourceLocation;

@JsonSegment("rascal/vfs/watcher")
public interface VSCodeUriResolverClient {

@JsonNotification("rascal/vfs/watcher/emitWatch")
@JsonNotification
void emitWatch(ISourceLocationChanged event);

void addWatcher(ISourceLocation loc, boolean recursive, Consumer<ISourceLocationWatcher.ISourceLocationChanged> callback, VSCodeUriResolverServer server) throws IOException;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
import java.util.concurrent.CompletableFuture;

import org.eclipse.lsp4j.jsonrpc.services.JsonRequest;
import org.eclipse.lsp4j.jsonrpc.services.JsonSegment;
import org.rascalmpl.vscode.lsp.uri.jsonrpc.messages.BooleanResult;
import org.rascalmpl.vscode.lsp.uri.jsonrpc.messages.DirectoryListingResult;
import org.rascalmpl.vscode.lsp.uri.jsonrpc.messages.FileAttributesResult;
Expand All @@ -40,89 +41,90 @@
import org.rascalmpl.vscode.lsp.uri.jsonrpc.messages.WatchRequest;
import org.rascalmpl.vscode.lsp.uri.jsonrpc.messages.WriteFileRequest;

@JsonSegment("rascal/vfs")
public interface VSCodeUriResolverServer {
@JsonRequest("rascal/vfs/input/readFile")
@JsonRequest("input/readFile")
default CompletableFuture<ReadFileResult> readFile(ISourceLocationRequest req) {
throw new UnsupportedOperationException();
}

@JsonRequest("rascal/vfs/input/exists")
@JsonRequest("input/exists")
default CompletableFuture<BooleanResult> exists(ISourceLocationRequest req) {
throw new UnsupportedOperationException();
}

@JsonRequest("rascal/vfs/input/lastModified")
@JsonRequest("input/lastModified")
default CompletableFuture<TimestampResult> lastModified(ISourceLocationRequest req) {
throw new UnsupportedOperationException();
}

@JsonRequest("rascal/vfs/input/created")
@JsonRequest("input/created")
default CompletableFuture<TimestampResult> created(ISourceLocationRequest req) {
throw new UnsupportedOperationException();
}

@JsonRequest("rascal/vfs/input/isDirectory")
@JsonRequest("input/isDirectory")
default CompletableFuture<BooleanResult> isDirectory(ISourceLocationRequest req) {
throw new UnsupportedOperationException();
}

@JsonRequest("rascal/vfs/input/isFile")
@JsonRequest("input/isFile")
default CompletableFuture<BooleanResult> isFile(ISourceLocationRequest req) {
throw new UnsupportedOperationException();
}

@JsonRequest("rascal/vfs/input/list")
@JsonRequest("input/list")
default CompletableFuture<DirectoryListingResult> list(ISourceLocationRequest req) {
throw new UnsupportedOperationException();
}

@JsonRequest("rascal/vfs/input/size")
@JsonRequest("input/size")
default CompletableFuture<NumberResult> size(ISourceLocationRequest req) {
throw new UnsupportedOperationException();
}

@JsonRequest("rascal/vfs/input/stat")
@JsonRequest("input/stat")
default CompletableFuture<FileAttributesResult> stat(ISourceLocationRequest req) {
throw new UnsupportedOperationException();
}

@JsonRequest("rascal/vfs/input/isReadable")
@JsonRequest("input/isReadable")
default CompletableFuture<BooleanResult> isReadable(ISourceLocationRequest req) {
throw new UnsupportedOperationException();
}

@JsonRequest("rascal/vfs/input/isWritable")
@JsonRequest("input/isWritable")
default CompletableFuture<BooleanResult> isWritable(ISourceLocationRequest req) {
throw new UnsupportedOperationException();
}


@JsonRequest("rascal/vfs/output/writeFile")
@JsonRequest("output/writeFile")
default CompletableFuture<Void> writeFile(WriteFileRequest req) {
throw new UnsupportedOperationException();
}

@JsonRequest("rascal/vfs/output/mkDirectory")
@JsonRequest("output/mkDirectory")
default CompletableFuture<Void> mkDirectory(ISourceLocationRequest req) {
throw new UnsupportedOperationException();
}

@JsonRequest("rascal/vfs/output/remove")
@JsonRequest("output/remove")
default CompletableFuture<Void> remove(ISourceLocationRequest req) {
throw new UnsupportedOperationException();
}

@JsonRequest("rascal/vfs/output/rename")
@JsonRequest("output/rename")
default CompletableFuture<Void> rename(RenameRequest req) {
throw new UnsupportedOperationException();
}

@JsonRequest("rascal/vfs/watcher/watch")
@JsonRequest("watcher/watch")
default CompletableFuture<Void> watch(WatchRequest req) {
throw new UnsupportedOperationException();
}

@JsonRequest("rascal/vfs/watcher/unwatch")
@JsonRequest("watcher/unwatch")
default CompletableFuture<Void> unwatch(WatchRequest req) {
throw new UnsupportedOperationException();
}
Expand Down
Loading