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
2 changes: 1 addition & 1 deletion qute.ls/com.redhat.qute.ls/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@
<maven.compiler.source>11</maven.compiler.source>
<maven.build.timestamp.format>yyyyMMdd-HHmm</maven.build.timestamp.format>
<dev.build.timestamp>${maven.build.timestamp}</dev.build.timestamp>
<lsp4j.version>0.24.0</lsp4j.version>
<lsp4j.version>1.0.0</lsp4j.version>
<qute.version>3.30.1</qute.version>
<junit.version>5.6.1</junit.version>
<jackson-dataformat-yaml.version>2.18.2</jackson-dataformat-yaml.version>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,9 @@
import org.eclipse.lsp4j.HoverParams;
import org.eclipse.lsp4j.InlayHint;
import org.eclipse.lsp4j.InlayHintParams;
import org.eclipse.lsp4j.InlineCompletionItem;
import org.eclipse.lsp4j.InlineCompletionList;
import org.eclipse.lsp4j.InlineCompletionParams;
import org.eclipse.lsp4j.LinkedEditingRangeParams;
import org.eclipse.lsp4j.LinkedEditingRanges;
import org.eclipse.lsp4j.Location;
Expand Down Expand Up @@ -205,6 +208,12 @@ public CompletableFuture<SemanticTokens> semanticTokensFull(SemanticTokensParams
return CompletableFuture.completedFuture(null);
}

@Override
public CompletableFuture<Either<List<InlineCompletionItem>, InlineCompletionList>> inlineCompletion(
InlineCompletionParams params) {
return CompletableFuture.completedFuture(null);
}

public boolean isHierarchicalDocumentSymbolSupport() {
return hierarchicalDocumentSymbolSupport;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,9 @@
import org.eclipse.lsp4j.HoverParams;
import org.eclipse.lsp4j.InlayHint;
import org.eclipse.lsp4j.InlayHintParams;
import org.eclipse.lsp4j.InlineCompletionItem;
import org.eclipse.lsp4j.InlineCompletionList;
import org.eclipse.lsp4j.InlineCompletionParams;
import org.eclipse.lsp4j.LinkedEditingRangeParams;
import org.eclipse.lsp4j.LinkedEditingRanges;
import org.eclipse.lsp4j.Location;
Expand Down Expand Up @@ -305,6 +308,16 @@ public CompletableFuture<SemanticTokens> semanticTokensFull(SemanticTokensParams
return CompletableFuture.completedFuture(null);
}

@Override
public CompletableFuture<Either<List<InlineCompletionItem>, InlineCompletionList>> inlineCompletion(
InlineCompletionParams params) {
AbstractTextDocumentService service = getTextDocumentService(params.getTextDocument());
if (service != null) {
return service.inlineCompletion(params);
}
return CompletableFuture.completedFuture(null);
}

public AbstractTextDocumentService getTextDocumentService(TextDocumentIdentifier document) {
return getTextDocumentService(document.getUri());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
import org.eclipse.lsp4j.Position;
import org.eclipse.lsp4j.Range;
import org.eclipse.lsp4j.ResourceOperation;
import org.eclipse.lsp4j.SnippetTextEdit;
import org.eclipse.lsp4j.TextDocumentEdit;
import org.eclipse.lsp4j.TextDocumentItem;
import org.eclipse.lsp4j.TextEdit;
Expand Down Expand Up @@ -97,7 +98,11 @@ public static TextEdit insertEdit(String insertText, Position position) {
public static TextDocumentEdit insertEdits(TextDocumentItem document, List<TextEdit> edits) {
VersionedTextDocumentIdentifier versionedTextDocumentIdentifier = new VersionedTextDocumentIdentifier(
document.getUri(), document.getVersion());
return new TextDocumentEdit(versionedTextDocumentIdentifier, edits);
List<Either<TextEdit, SnippetTextEdit>> editList = new ArrayList<>();
for (TextEdit edit : edits) {
editList.add(Either.forLeft(edit));
}
return new TextDocumentEdit(versionedTextDocumentIdentifier, editList);
}

public static CodeAction replace(String title, Range range, String replaceText, TextDocumentItem document,
Expand All @@ -115,7 +120,11 @@ public static CodeAction replace(String title, List<TextEdit> replace, TextDocum

VersionedTextDocumentIdentifier versionedTextDocumentIdentifier = new VersionedTextDocumentIdentifier(
document.getUri(), document.getVersion());
TextDocumentEdit textDocumentEdit = new TextDocumentEdit(versionedTextDocumentIdentifier, replace);
List<Either<TextEdit, SnippetTextEdit>> editList = new ArrayList<>();
for (TextEdit edit : replace) {
editList.add(Either.forLeft(edit));
}
TextDocumentEdit textDocumentEdit = new TextDocumentEdit(versionedTextDocumentIdentifier, editList);
WorkspaceEdit workspaceEdit = new WorkspaceEdit(Collections.singletonList(Either.forLeft(textDocumentEdit)));
insertContentAction.setEdit(workspaceEdit);
return insertContentAction;
Expand All @@ -129,10 +138,10 @@ public static CodeAction replaceAt(String title, String replaceText, TextDocumen

VersionedTextDocumentIdentifier versionedTextDocumentIdentifier = new VersionedTextDocumentIdentifier(
document.getUri(), document.getVersion());
List<TextEdit> edits = new ArrayList<>();
List<Either<TextEdit, SnippetTextEdit>> edits = new ArrayList<>();
for (Range range : ranges) {
TextEdit edit = new TextEdit(range, replaceText);
edits.add(edit);
edits.add(Either.forLeft(edit));
}
TextDocumentEdit textDocumentEdit = new TextDocumentEdit(versionedTextDocumentIdentifier, edits);
WorkspaceEdit workspaceEdit = new WorkspaceEdit(Collections.singletonList(Either.forLeft(textDocumentEdit)));
Expand All @@ -159,7 +168,7 @@ public static CodeAction createFile(String title, String docURI, String content,
// 2. update the created file with the given content
VersionedTextDocumentIdentifier identifier = new VersionedTextDocumentIdentifier(docURI, 0);
TextEdit te = new TextEdit(new Range(new Position(0, 0), new Position(0, 0)), content);
actionsToTake.add(Either.forLeft(new TextDocumentEdit(identifier, Collections.singletonList(te))));
actionsToTake.add(Either.forLeft(new TextDocumentEdit(identifier, Collections.singletonList(Either.forLeft(te)))));

WorkspaceEdit createAndAddContentEdit = new WorkspaceEdit(actionsToTake);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,10 @@ public boolean isInlayHintDynamicRegistered() {
return v3Supported && isDynamicRegistrationSupported(getTextDocument().getInlayHint());
}

public boolean isInlineCompletionDynamicRegistered() {
return v3Supported && isDynamicRegistrationSupported(getTextDocument().getInlineCompletion());
}

public boolean isRenameDynamicRegistered() {
return v3Supported && isDynamicRegistrationSupported(getTextDocument().getRename());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
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.INLINE_COMPLETION_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.RENAME_ID;
Expand All @@ -36,6 +37,7 @@
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_INLINE_COMPLETION;
import static com.redhat.qute.settings.capabilities.ServerCapabilitiesConstants.TEXT_DOCUMENT_LINKED_EDITING_RANGE;
import static com.redhat.qute.settings.capabilities.ServerCapabilitiesConstants.TEXT_DOCUMENT_REFERENCES;
import static com.redhat.qute.settings.capabilities.ServerCapabilitiesConstants.TEXT_DOCUMENT_RENAME;
Expand Down Expand Up @@ -65,6 +67,7 @@
import org.eclipse.lsp4j.FileSystemWatcher;
import org.eclipse.lsp4j.HoverRegistrationOptions;
import org.eclipse.lsp4j.InlayHintRegistrationOptions;
import org.eclipse.lsp4j.InlineCompletionRegistrationOptions;
import org.eclipse.lsp4j.LinkedEditingRangeRegistrationOptions;
import org.eclipse.lsp4j.ReferenceRegistrationOptions;
import org.eclipse.lsp4j.Registration;
Expand Down Expand Up @@ -155,6 +158,11 @@ public void initializeCapabilities() {
registerCapability(INLAY_HINT_ID, TEXT_DOCUMENT_INLAY_HINT, new InlayHintRegistrationOptions(),
QuteLanguageIds.QUTE_ALL);
}
if (this.getClientCapabilities().isInlineCompletionDynamicRegistered()) {
// Inline Completion is only available for Qute templates
registerCapability(INLINE_COMPLETION_ID, TEXT_DOCUMENT_INLINE_COMPLETION, new InlineCompletionRegistrationOptions(),
QuteLanguageIds.QUTE_ALL);
}
if (this.getClientCapabilities().isSemanticTokensDynamicRegistered()) {
// Semantic tokens is only available for Qute templates
registerCapability(SEMANTIC_TOKENS_ID, TEXT_DOCUMENT_SEMANTIC_TOKENS, DEFAULT_SEMANTIC_TOKENS_OPTIONS,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ private ServerCapabilitiesConstants() {
public static final String TEXT_DOCUMENT_REFERENCES = "textDocument/references";
public static final String TEXT_DOCUMENT_RENAME = "textDocument/rename";
public static final String TEXT_DOCUMENT_INLAY_HINT = "textDocument/inlayHint";
public static final String TEXT_DOCUMENT_INLINE_COMPLETION = "textDocument/inlineCompletion";
public static final String TEXT_DOCUMENT_SEMANTIC_TOKENS = "textDocument/semanticTokens";
/* workspace/... */
public static final String WORKSPACE_EXECUTE_COMMAND = "workspace/executeCommand";
Expand All @@ -69,6 +70,7 @@ private ServerCapabilitiesConstants() {
public static final String WORKSPACE_EXECUTE_COMMAND_ID = UUID.randomUUID().toString();
public static final String WORKSPACE_WATCHED_FILES_ID = UUID.randomUUID().toString();
public static final String INLAY_HINT_ID = UUID.randomUUID().toString();
public static final String INLINE_COMPLETION_ID = UUID.randomUUID().toString();
public static final String SEMANTIC_TOKENS_ID = UUID.randomUUID().toString();
/* Default Options */
public static final CodeLensOptions DEFAULT_CODELENS_OPTIONS = new CodeLensOptions();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ public static ServerCapabilities getNonDynamicServerCapabilities(ClientCapabilit
serverCapabilities.setReferencesProvider(!clientCapabilities.isReferencesDynamicRegistrationSupported());
serverCapabilities.setLinkedEditingRangeProvider(!clientCapabilities.isLinkedEditingRangeDynamicRegistered());
serverCapabilities.setInlayHintProvider(!clientCapabilities.isInlayHintDynamicRegistered());
serverCapabilities.setInlineCompletionProvider(!clientCapabilities.isInlineCompletionDynamicRegistered());
serverCapabilities.setRenameProvider(!clientCapabilities.isRenameDynamicRegistered());
if (!clientCapabilities.isSemanticTokensDynamicRegistered()) {
serverCapabilities.setSemanticTokensProvider(DEFAULT_SEMANTIC_TOKENS_OPTIONS);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@
import org.eclipse.lsp4j.ReferenceContext;
import org.eclipse.lsp4j.ResourceOperation;
import org.eclipse.lsp4j.SemanticTokens;
import org.eclipse.lsp4j.SnippetTextEdit;
import org.eclipse.lsp4j.SymbolKind;
import org.eclipse.lsp4j.TextDocumentEdit;
import org.eclipse.lsp4j.TextDocumentIdentifier;
Expand Down Expand Up @@ -564,8 +565,10 @@ public static void assertDiagnostics(List<Diagnostic> actual, Diagnostic... expe
public static void assertDiagnostics(List<Diagnostic> actual, List<Diagnostic> expected, boolean filter) {
List<Diagnostic> received = actual;
final boolean filterMessage;
if (expected != null && !expected.isEmpty() && !StringUtils.isEmpty(expected.get(0).getMessage())) {
filterMessage = true;
if (expected != null && !expected.isEmpty()) {
Either<String, MarkupContent> message = expected.get(0).getMessage();
boolean hasMessage = message != null && message.isLeft() && !StringUtils.isEmpty(message.getLeft());
filterMessage = hasMessage;
} else {
filterMessage = false;
}
Expand Down Expand Up @@ -1017,7 +1020,7 @@ public static void assertCodeActions(List<CodeAction> actual, CodeAction... expe
if (ca.getDiagnostics() != null) {
ca.getDiagnostics().forEach(d -> {
d.setSeverity(null);
d.setMessage("");
d.setMessage(Either.forLeft(""));
d.setSource(null);
});
}
Expand Down Expand Up @@ -1071,7 +1074,11 @@ public static Command c(String title, String commandId, String section, String s
public static TextDocumentEdit tde(String uri, int version, TextEdit... te) {
VersionedTextDocumentIdentifier versionedTextDocumentIdentifier = new VersionedTextDocumentIdentifier(uri,
version);
return new TextDocumentEdit(versionedTextDocumentIdentifier, Arrays.asList(te));
List<Either<TextEdit, SnippetTextEdit>> edits = new ArrayList<>();
for (TextEdit edit : te) {
edits.add(Either.forLeft(edit));
}
return new TextDocumentEdit(versionedTextDocumentIdentifier, edits);
}

public static CodeAction ca(Diagnostic d, Either<TextDocumentEdit, ResourceOperation>... ops) {
Expand Down Expand Up @@ -1099,7 +1106,7 @@ public static Either<TextDocumentEdit, ResourceOperation> createFile(String uri,
public static Either<TextDocumentEdit, ResourceOperation> teOp(String uri, int startLine, int startChar,
int endLine, int endChar, String newText) {
return Either.forLeft(new TextDocumentEdit(new VersionedTextDocumentIdentifier(uri, 0),
Collections.singletonList(te(startLine, startChar, endLine, endChar, newText))));
Collections.singletonList(Either.forLeft(te(startLine, startChar, endLine, endChar, newText)))));
}

// ------------------- Reference assert
Expand Down
Loading