From b49041cdd87917185e9d0c5ab95900c749acdf06 Mon Sep 17 00:00:00 2001 From: Akash Yadav Date: Thu, 3 Feb 2022 18:35:08 +0530 Subject: [PATCH] Allow LSP server capabilities to be accesssed Update editor to v0.9.2 --- .idea/misc.xml | 1 + gradle/dependencies.gradle | 2 +- .../com/itsaky/lsp/api/ILanguageServer.java | 11 +++++-- .../com/itsaky/lsp/models/Initialization.kt | 2 +- .../itsaky/lsp/java/JavaLanguageServer.java | 32 +++++++++++-------- .../com/itsaky/lsp/xml/XMLLanguageServer.java | 28 +++++++++------- 6 files changed, 45 insertions(+), 31 deletions(-) diff --git a/.idea/misc.xml b/.idea/misc.xml index ed645fd92..06b3731ae 100755 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -47,6 +47,7 @@ + diff --git a/gradle/dependencies.gradle b/gradle/dependencies.gradle index 27cb55dfc..47b6bc0e9 100755 --- a/gradle/dependencies.gradle +++ b/gradle/dependencies.gradle @@ -1,6 +1,6 @@ ext { common = [ - editor: 'io.github.Rosemoe.sora-editor:editor:0.9.1', + editor: 'io.github.Rosemoe.sora-editor:editor:0.9.2', utilcode: 'com.blankj:utilcodex:1.30.6', file_picker: 'com.github.abhishekti7:UnicornFilePicker:1.0.2', glide: 'com.github.bumptech.glide:glide:4.12.0', diff --git a/lsp/api/src/main/java/com/itsaky/lsp/api/ILanguageServer.java b/lsp/api/src/main/java/com/itsaky/lsp/api/ILanguageServer.java index a04a2618a..70f10ee40 100644 --- a/lsp/api/src/main/java/com/itsaky/lsp/api/ILanguageServer.java +++ b/lsp/api/src/main/java/com/itsaky/lsp/api/ILanguageServer.java @@ -37,8 +37,8 @@ package com.itsaky.lsp.api; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import com.itsaky.lsp.models.InitializeResult; import com.itsaky.lsp.models.InitializeParams; +import com.itsaky.lsp.models.ServerCapabilities; /** * A language server provides API for providing functions related to @@ -54,11 +54,16 @@ public interface ILanguageServer { * language server was already initialized. * * @param params The params used to initialize the language server. - * @return The initialization result. * @throws AlreadyInitializedException If the language server was already initialized. */ + void initialize (@NonNull InitializeParams params) throws AlreadyInitializedException; + + /** + * Returns the capabilities that the LSP implementation provides. + * @return The capabilities of the server. + */ @NonNull - InitializeResult initialize (@NonNull InitializeParams params) throws AlreadyInitializedException; + ServerCapabilities getCapabilities (); /** * Called by client to notify the server to shutdown. diff --git a/lsp/api/src/main/java/com/itsaky/lsp/models/Initialization.kt b/lsp/api/src/main/java/com/itsaky/lsp/models/Initialization.kt index 0d3769c1d..76d46fee0 100644 --- a/lsp/api/src/main/java/com/itsaky/lsp/models/Initialization.kt +++ b/lsp/api/src/main/java/com/itsaky/lsp/models/Initialization.kt @@ -21,7 +21,7 @@ import java.nio.file.Path data class InitializeParams (var workspaceRoots: Set) -data class InitializeResult +data class ServerCapabilities ( var completionsAvailable: Boolean, var codeActionsAvailable: Boolean, diff --git a/lsp/java/src/main/java/com/itsaky/lsp/java/JavaLanguageServer.java b/lsp/java/src/main/java/com/itsaky/lsp/java/JavaLanguageServer.java index f6459f5af..352795eee 100644 --- a/lsp/java/src/main/java/com/itsaky/lsp/java/JavaLanguageServer.java +++ b/lsp/java/src/main/java/com/itsaky/lsp/java/JavaLanguageServer.java @@ -22,9 +22,9 @@ import androidx.annotation.Nullable; import com.itsaky.androidide.utils.Logger; import com.itsaky.lsp.api.ICodeActionProvider; -import com.itsaky.lsp.api.IDiagnosticProvider; import com.itsaky.lsp.api.ICompletionProvider; import com.itsaky.lsp.api.IDefinitionProvider; +import com.itsaky.lsp.api.IDiagnosticProvider; import com.itsaky.lsp.api.IDocumentHandler; import com.itsaky.lsp.api.ILanguageClient; import com.itsaky.lsp.api.ILanguageServer; @@ -47,11 +47,11 @@ import com.itsaky.lsp.models.DocumentCloseEvent; import com.itsaky.lsp.models.DocumentOpenEvent; import com.itsaky.lsp.models.DocumentSaveEvent; import com.itsaky.lsp.models.InitializeParams; -import com.itsaky.lsp.models.InitializeResult; +import com.itsaky.lsp.models.ServerCapabilities; import com.itsaky.lsp.util.NoCodeActionsProvider; -import com.itsaky.lsp.util.NoDiagnosticProvider; import com.itsaky.lsp.util.NoCompletionsProvider; import com.itsaky.lsp.util.NoDefinitionProvider; +import com.itsaky.lsp.util.NoDiagnosticProvider; import com.itsaky.lsp.util.NoReferenceProvider; import com.itsaky.lsp.util.NoSelectionProvider; import com.itsaky.lsp.util.NoSignatureHelpProvider; @@ -69,6 +69,7 @@ public class JavaLanguageServer implements ILanguageServer, IDocumentHandler { private boolean createCompiler; private static final Logger LOG = Logger.instance ("JavaLanguageServer"); + private ServerCapabilities capabilities; public JavaLanguageServer () { this.initialized = false; @@ -104,9 +105,8 @@ public class JavaLanguageServer implements ILanguageServer, IDocumentHandler { ); } - @NonNull @Override - public InitializeResult initialize (@NonNull InitializeParams params) throws AlreadyInitializedException { + public void initialize (@NonNull InitializeParams params) throws AlreadyInitializedException { if (initialized) { throw new AlreadyInitializedException (); @@ -114,17 +114,21 @@ public class JavaLanguageServer implements ILanguageServer, IDocumentHandler { FileStore.setWorkspaceRoots (params.getWorkspaceRoots ()); - final InitializeResult result = new InitializeResult (); - result.setCompletionsAvailable (true); - result.setCodeActionsAvailable (true); - result.setDefinitionsAvailable (true); - result.setReferencesAvailable (true); - result.setSignatureHelpAvailable (true); - result.setCodeAnalysisAvailable (true); + capabilities = new ServerCapabilities (); + capabilities.setCompletionsAvailable (true); + capabilities.setCodeActionsAvailable (true); + capabilities.setDefinitionsAvailable (true); + capabilities.setReferencesAvailable (true); + capabilities.setSignatureHelpAvailable (true); + capabilities.setCodeAnalysisAvailable (true); initialized = true; - - return result; + } + + @NonNull + @Override + public ServerCapabilities getCapabilities () { + return capabilities; } @Override diff --git a/lsp/xml/src/main/java/com/itsaky/lsp/xml/XMLLanguageServer.java b/lsp/xml/src/main/java/com/itsaky/lsp/xml/XMLLanguageServer.java index 45baeb9ea..5027c05d2 100644 --- a/lsp/xml/src/main/java/com/itsaky/lsp/xml/XMLLanguageServer.java +++ b/lsp/xml/src/main/java/com/itsaky/lsp/xml/XMLLanguageServer.java @@ -31,7 +31,7 @@ import com.itsaky.lsp.api.ISelectionProvider; import com.itsaky.lsp.api.IServerSettings; import com.itsaky.lsp.api.ISignatureHelpProvider; import com.itsaky.lsp.models.InitializeParams; -import com.itsaky.lsp.models.InitializeResult; +import com.itsaky.lsp.models.ServerCapabilities; import com.itsaky.lsp.util.NoCodeActionsProvider; import com.itsaky.lsp.util.NoDiagnosticProvider; import com.itsaky.lsp.util.NoCompletionsProvider; @@ -60,6 +60,7 @@ public class XMLLanguageServer implements ILanguageServer { private boolean canProvideCompletions = false; private final IDocumentHandler documentHandler = new NoDocumentHandler (); + private ServerCapabilities capabilities; public XMLLanguageServer () { } @@ -77,23 +78,26 @@ public class XMLLanguageServer implements ILanguageServer { return settings; } - @NonNull @Override - public InitializeResult initialize (@NonNull InitializeParams params) throws AlreadyInitializedException { + public void initialize (@NonNull InitializeParams params) throws AlreadyInitializedException { if (initialized) { throw new AlreadyInitializedException (); } - - final var result = new InitializeResult (); - result.setCompletionsAvailable (true); - result.setCodeAnalysisAvailable (true); - result.setSignatureHelpAvailable (false); - result.setReferencesAvailable (false); - result.setDefinitionsAvailable (false); + + capabilities = new ServerCapabilities (); + capabilities.setCompletionsAvailable (true); + capabilities.setCodeAnalysisAvailable (true); + capabilities.setSignatureHelpAvailable (false); + capabilities.setReferencesAvailable (false); + capabilities.setDefinitionsAvailable (false); initialized = true; - - return result; + } + + @NonNull + @Override + public ServerCapabilities getCapabilities () { + return capabilities; } @Override