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