- * Since 3.17.0
- */
- @JsonRequest("textDocument/inlayHint")
- default CompletableFuture
- * Since 3.17.0
- */
- @JsonRequest(value = "inlayHint/resolve", useSegment = false)
- default CompletableFuture> inlayHint(InlayHintParams params) {
- throw new UnsupportedOperationException();
- }
-
- /**
- * The request is sent from the client to the server to resolve additional
- * information for a given inlay hint. This is usually used to compute the
- * {@code tooltip}, {@code location} or {@code command} properties of an inlay
- * hint's label part to avoid its unnecessary computation during the
- * {@code textDocument/inlayHint} request.
- *
> inlayHint(InlayHintParams params) {
return CompletableFuture.completedFuture(null);
}
diff --git a/qute.ls/com.redhat.qute.ls/src/main/java/com/redhat/qute/ls/QuteLanguageServer.java b/qute.ls/com.redhat.qute.ls/src/main/java/com/redhat/qute/ls/QuteLanguageServer.java
index 3c0e0269b..375d6685c 100644
--- a/qute.ls/com.redhat.qute.ls/src/main/java/com/redhat/qute/ls/QuteLanguageServer.java
+++ b/qute.ls/com.redhat.qute.ls/src/main/java/com/redhat/qute/ls/QuteLanguageServer.java
@@ -27,13 +27,11 @@
import org.eclipse.lsp4j.InitializedParams;
import org.eclipse.lsp4j.Location;
import org.eclipse.lsp4j.ServerCapabilities;
+import org.eclipse.lsp4j.SetTraceParams;
import org.eclipse.lsp4j.services.LanguageClient;
import org.eclipse.lsp4j.services.LanguageServer;
import org.eclipse.lsp4j.services.TextDocumentService;
-import com.redhat.lsp4j.proposed.InlayHint;
-import com.redhat.lsp4j.proposed.InlayHintParams;
-import com.redhat.lsp4j.proposed.QuteInlayHintProvider;
import com.redhat.qute.commons.JavaTypeInfo;
import com.redhat.qute.commons.ProjectInfo;
import com.redhat.qute.commons.QuteJavaDefinitionParams;
@@ -76,7 +74,7 @@
*/
public class QuteLanguageServer implements LanguageServer, ProcessLanguageServer, QuteLanguageServerAPI,
QuteProjectInfoProvider, QuteJavaTypesProvider, QuteResolvedJavaTypeProvider, QuteJavaDefinitionProvider,
- QuteDataModelProjectProvider, QuteUserTagProvider, QuteInlayHintProvider {
+ QuteDataModelProjectProvider, QuteUserTagProvider {
private static final Logger LOGGER = Logger.getLogger(QuteLanguageServer.class.getName());
@@ -278,7 +276,8 @@ public void didChangeWatchedFiles(DidChangeWatchedFilesParams params) {
}
@Override
- public CompletableFuture
> inlayHint(InlayHintParams params) {
- return textDocumentService.inlayHint(params);
+ public void setTrace(SetTraceParams params) {
+ // to avoid having error in vscode, the method is implemented
+ // FIXME : implement the behavior of this method.
}
}
diff --git a/qute.ls/com.redhat.qute.ls/src/main/java/com/redhat/qute/ls/QuteTextDocumentService.java b/qute.ls/com.redhat.qute.ls/src/main/java/com/redhat/qute/ls/QuteTextDocumentService.java
index 6929a74c4..9ffba57a7 100644
--- a/qute.ls/com.redhat.qute.ls/src/main/java/com/redhat/qute/ls/QuteTextDocumentService.java
+++ b/qute.ls/com.redhat.qute.ls/src/main/java/com/redhat/qute/ls/QuteTextDocumentService.java
@@ -39,6 +39,8 @@
import org.eclipse.lsp4j.DocumentSymbolParams;
import org.eclipse.lsp4j.Hover;
import org.eclipse.lsp4j.HoverParams;
+import org.eclipse.lsp4j.InlayHint;
+import org.eclipse.lsp4j.InlayHintParams;
import org.eclipse.lsp4j.LinkedEditingRangeParams;
import org.eclipse.lsp4j.LinkedEditingRanges;
import org.eclipse.lsp4j.Location;
@@ -52,8 +54,6 @@
import org.eclipse.lsp4j.jsonrpc.messages.Either;
import org.eclipse.lsp4j.services.TextDocumentService;
-import com.redhat.lsp4j.proposed.InlayHint;
-import com.redhat.lsp4j.proposed.InlayHintParams;
import com.redhat.qute.commons.datamodel.JavaDataModelChangeEvent;
import com.redhat.qute.ls.commons.client.ExtendedClientCapabilities;
import com.redhat.qute.ls.java.JavaFileTextDocumentService;
@@ -235,6 +235,7 @@ public CompletableFuture
> inlayHint(InlayHintParams params) {
AbstractTextDocumentService service = getTextDocumentService(params.getTextDocument());
if (service != null) {
diff --git a/qute.ls/com.redhat.qute.ls/src/main/java/com/redhat/qute/ls/api/QuteLanguageClientAPI.java b/qute.ls/com.redhat.qute.ls/src/main/java/com/redhat/qute/ls/api/QuteLanguageClientAPI.java
index 0b335b7ac..46025d2b5 100644
--- a/qute.ls/com.redhat.qute.ls/src/main/java/com/redhat/qute/ls/api/QuteLanguageClientAPI.java
+++ b/qute.ls/com.redhat.qute.ls/src/main/java/com/redhat/qute/ls/api/QuteLanguageClientAPI.java
@@ -11,9 +11,6 @@
*******************************************************************************/
package com.redhat.qute.ls.api;
-import java.util.concurrent.CompletableFuture;
-
-import org.eclipse.lsp4j.jsonrpc.services.JsonRequest;
import org.eclipse.lsp4j.services.LanguageClient;
/**
@@ -26,10 +23,4 @@ public interface QuteLanguageClientAPI extends LanguageClient, QuteJavaTypesProv
QuteJavaDefinitionProvider, QuteProjectInfoProvider, QuteDataModelProjectProvider, QuteUserTagProvider,
QuteJavaCodeLensProvider, QuteJavaDiagnosticsProvider, QuteJavaDocumentLinkProvider {
- // TODO : remove this method when LSP4J will provide InlayHint support. See
- // https://github.com/eclipse/lsp4j/issues/570
- @JsonRequest("workspace/inlayHint/refresh")
- default CompletableFuture
> inlayHint(InlayHintParams params) {
// retrigger the inlay hints.
CompletableFuture
> getInlayHint(Template template, Range
LOGGER.log(Level.SEVERE, "Error while getting offsets view port range", e);
}
}
+ cancelChecker.checkCanceled();
InlayHintASTVistor visitor = new InlayHintASTVistor(javaCache, startOffset, endOffset, settings,
- resolvingJavaTypeContext,
- cancelChecker);
+ resolvingJavaTypeContext, cancelChecker);
template.accept(visitor);
+ cancelChecker.checkCanceled();
return visitor.getInlayHints();
});
}
diff --git a/qute.ls/com.redhat.qute.ls/src/main/java/com/redhat/qute/services/QuteLanguageService.java b/qute.ls/com.redhat.qute.ls/src/main/java/com/redhat/qute/services/QuteLanguageService.java
index 9c639f5be..70863dc1f 100644
--- a/qute.ls/com.redhat.qute.ls/src/main/java/com/redhat/qute/services/QuteLanguageService.java
+++ b/qute.ls/com.redhat.qute.ls/src/main/java/com/redhat/qute/services/QuteLanguageService.java
@@ -23,6 +23,7 @@
import org.eclipse.lsp4j.DocumentLink;
import org.eclipse.lsp4j.DocumentSymbol;
import org.eclipse.lsp4j.Hover;
+import org.eclipse.lsp4j.InlayHint;
import org.eclipse.lsp4j.LinkedEditingRanges;
import org.eclipse.lsp4j.Location;
import org.eclipse.lsp4j.LocationLink;
@@ -32,7 +33,6 @@
import org.eclipse.lsp4j.SymbolInformation;
import org.eclipse.lsp4j.jsonrpc.CancelChecker;
-import com.redhat.lsp4j.proposed.InlayHint;
import com.redhat.qute.ls.commons.snippets.Snippet;
import com.redhat.qute.ls.commons.snippets.SnippetRegistry;
import com.redhat.qute.ls.commons.snippets.SnippetRegistryProvider;
diff --git a/qute.ls/com.redhat.qute.ls/src/main/java/com/redhat/qute/services/inlayhint/InlayHintASTVistor.java b/qute.ls/com.redhat.qute.ls/src/main/java/com/redhat/qute/services/inlayhint/InlayHintASTVistor.java
index 339df2d2a..8057cca52 100644
--- a/qute.ls/com.redhat.qute.ls/src/main/java/com/redhat/qute/services/inlayhint/InlayHintASTVistor.java
+++ b/qute.ls/com.redhat.qute.ls/src/main/java/com/redhat/qute/services/inlayhint/InlayHintASTVistor.java
@@ -20,12 +20,12 @@
import java.util.logging.Level;
import java.util.logging.Logger;
+import org.eclipse.lsp4j.InlayHint;
+import org.eclipse.lsp4j.InlayHintKind;
import org.eclipse.lsp4j.Position;
import org.eclipse.lsp4j.jsonrpc.CancelChecker;
import org.eclipse.lsp4j.jsonrpc.messages.Either;
-import com.redhat.lsp4j.proposed.InlayHint;
-import com.redhat.lsp4j.proposed.InlayHintKind;
import com.redhat.qute.commons.ResolvedJavaTypeInfo;
import com.redhat.qute.parser.template.ASTVisitor;
import com.redhat.qute.parser.template.Expression;
diff --git a/qute.ls/com.redhat.qute.ls/src/main/java/com/redhat/qute/settings/capabilities/ClientCapabilitiesWrapper.java b/qute.ls/com.redhat.qute.ls/src/main/java/com/redhat/qute/settings/capabilities/ClientCapabilitiesWrapper.java
index 672d1b233..50ab71d6a 100644
--- a/qute.ls/com.redhat.qute.ls/src/main/java/com/redhat/qute/settings/capabilities/ClientCapabilitiesWrapper.java
+++ b/qute.ls/com.redhat.qute.ls/src/main/java/com/redhat/qute/settings/capabilities/ClientCapabilitiesWrapper.java
@@ -97,6 +97,10 @@ public boolean isLinkedEditingRangeDynamicRegistered() {
return v3Supported && isDynamicRegistrationSupported(getTextDocument().getLinkedEditingRange());
}
+ public boolean isInlayHintDynamicRegistered() {
+ return v3Supported && isDynamicRegistrationSupported(getTextDocument().getInlayHint());
+ }
+
private boolean isDynamicRegistrationSupported(DynamicRegistrationCapabilities capability) {
return capability != null && capability.getDynamicRegistration() != null
&& capability.getDynamicRegistration().booleanValue();
diff --git a/qute.ls/com.redhat.qute.ls/src/main/java/com/redhat/qute/settings/capabilities/QuteCapabilityManager.java b/qute.ls/com.redhat.qute.ls/src/main/java/com/redhat/qute/settings/capabilities/QuteCapabilityManager.java
index beb863bbb..d91c73838 100644
--- a/qute.ls/com.redhat.qute.ls/src/main/java/com/redhat/qute/settings/capabilities/QuteCapabilityManager.java
+++ b/qute.ls/com.redhat.qute.ls/src/main/java/com/redhat/qute/settings/capabilities/QuteCapabilityManager.java
@@ -22,6 +22,7 @@
import static com.redhat.qute.settings.capabilities.ServerCapabilitiesConstants.DOCUMENT_LINK_ID;
import static com.redhat.qute.settings.capabilities.ServerCapabilitiesConstants.DOCUMENT_SYMBOL_ID;
import static com.redhat.qute.settings.capabilities.ServerCapabilitiesConstants.HOVER_ID;
+import static com.redhat.qute.settings.capabilities.ServerCapabilitiesConstants.INLAY_HINT_ID;
import static com.redhat.qute.settings.capabilities.ServerCapabilitiesConstants.LINKED_EDITING_RANGE_ID;
import static com.redhat.qute.settings.capabilities.ServerCapabilitiesConstants.REFERENCES_ID;
import static com.redhat.qute.settings.capabilities.ServerCapabilitiesConstants.TEXT_DOCUMENT_CODE_ACTION;
@@ -31,6 +32,7 @@
import static com.redhat.qute.settings.capabilities.ServerCapabilitiesConstants.TEXT_DOCUMENT_DOCUMENT_SYMBOL;
import static com.redhat.qute.settings.capabilities.ServerCapabilitiesConstants.TEXT_DOCUMENT_HIGHLIGHT;
import static com.redhat.qute.settings.capabilities.ServerCapabilitiesConstants.TEXT_DOCUMENT_HOVER;
+import static com.redhat.qute.settings.capabilities.ServerCapabilitiesConstants.TEXT_DOCUMENT_INLAY_HINT;
import static com.redhat.qute.settings.capabilities.ServerCapabilitiesConstants.TEXT_DOCUMENT_LINK;
import static com.redhat.qute.settings.capabilities.ServerCapabilitiesConstants.TEXT_DOCUMENT_LINKED_EDITING_RANGE;
import static com.redhat.qute.settings.capabilities.ServerCapabilitiesConstants.TEXT_DOCUMENT_REFERENCES;
@@ -51,6 +53,7 @@
import org.eclipse.lsp4j.FileSystemWatcher;
import org.eclipse.lsp4j.Registration;
import org.eclipse.lsp4j.RegistrationParams;
+import org.eclipse.lsp4j.jsonrpc.messages.Either;
import org.eclipse.lsp4j.services.LanguageClient;
import com.redhat.qute.ls.commons.client.ExtendedClientCapabilities;
@@ -107,6 +110,9 @@ public void initializeCapabilities() {
if (this.getClientCapabilities().isLinkedEditingRangeDynamicRegistered()) {
registerCapability(LINKED_EDITING_RANGE_ID, TEXT_DOCUMENT_LINKED_EDITING_RANGE);
}
+ if (this.getClientCapabilities().isInlayHintDynamicRegistered()) {
+ registerCapability(INLAY_HINT_ID, TEXT_DOCUMENT_INLAY_HINT);
+ }
if (this.getClientCapabilities().isDidChangeWatchedFilesRegistered()) {
registerWatchedFiles();
}
@@ -114,8 +120,8 @@ public void initializeCapabilities() {
private void registerWatchedFiles() {
List