Skip to content

Commit

Permalink
refact: use LS.withCapability() instead of LS.withFilter() if applicable
Browse files Browse the repository at this point in the history
  • Loading branch information
sebthom committed Aug 23, 2024
1 parent 0ceb13a commit 1b4d138
Show file tree
Hide file tree
Showing 6 changed files with 21 additions and 29 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@
import org.eclipse.jdt.annotation.Nullable;
import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.text.ITextViewer;
import org.eclipse.lsp4e.LSPEclipseUtils;
import org.eclipse.lsp4e.LanguageServerWrapper;
import org.eclipse.lsp4e.LanguageServers;
import org.eclipse.lsp4e.LanguageServers.LanguageServerDocumentExecutor;
Expand Down Expand Up @@ -90,7 +89,7 @@ public synchronized CompletableFuture<Hover> hover(HoverParams position) {
params.setPosition(position);

CompletableFuture<List<String>> result = LanguageServers.forDocument(document)
.withFilter(capabilities -> LSPEclipseUtils.hasCapability(capabilities.getHoverProvider()))
.withCapability(ServerCapabilities::getHoverProvider)
.collectAll(ls -> ls.getTextDocumentService().hover(params).thenApply(h -> h.getContents().getLeft().get(0).getLeft()));

List<String> hovers = result.join();
Expand Down Expand Up @@ -126,7 +125,7 @@ public synchronized CompletableFuture<Hover> hover(HoverParams position) {
params.setPosition(position);

CompletableFuture<List<String>> result = LanguageServers.forDocument(document)
.withFilter(capabilities -> LSPEclipseUtils.hasCapability(capabilities.getHoverProvider()))
.withCapability(ServerCapabilities::getHoverProvider)
.collectAll(ls -> ls.getTextDocumentService().hover(params).thenApply(h -> h == null ? null : h.getContents().getLeft().get(0).getLeft()));

List<String> hovers = result.join();
Expand Down Expand Up @@ -170,7 +169,7 @@ public synchronized CompletableFuture<Hover> hover(HoverParams position) {
params.setPosition(position);

List<CompletableFuture<String>> result = LanguageServers.forDocument(document)
.withFilter(capabilities -> LSPEclipseUtils.hasCapability(capabilities.getHoverProvider()))
.withCapability(ServerCapabilities::getHoverProvider)
.computeAll(ls -> ls.getTextDocumentService().hover(params).thenApply(h -> h.getContents().getLeft().get(0).getLeft()));

assertEquals("Should have had two responses", 2, result.size());
Expand Down Expand Up @@ -213,7 +212,7 @@ public void testCollectAllUserCannotBlockListener() throws Exception {
final long startTime = System.currentTimeMillis();

CompletableFuture<String> resultThreadFuture = LanguageServers.forDocument(document)
.withFilter(capabilities -> LSPEclipseUtils.hasCapability(capabilities.getHoverProvider()))
.withCapability(ServerCapabilities::getHoverProvider)
.collectAll(ls -> ls.getTextDocumentService().hover(params))

// Schedule a slow 'computation' on the response, and make a note of the thread it runs in
Expand All @@ -227,7 +226,7 @@ public void testCollectAllUserCannotBlockListener() throws Exception {
});

CompletableFuture<?> fastHover = LanguageServers.forDocument(document)
.withFilter(capabilities -> LSPEclipseUtils.hasCapability(capabilities.getHoverProvider()))
.withCapability(ServerCapabilities::getHoverProvider)
.collectAll(ls -> ls.getTextDocumentService().hover(params));

fastHover.join();
Expand Down Expand Up @@ -278,7 +277,7 @@ public synchronized CompletableFuture<Hover> hover(HoverParams position) {
params.setPosition(position);

CompletableFuture<Optional<String>> response = LanguageServers.forDocument(document)
.withFilter(capabilities -> LSPEclipseUtils.hasCapability(capabilities.getHoverProvider()))
.withCapability(ServerCapabilities::getHoverProvider)
.computeFirst(ls -> ls.getTextDocumentService().hover(params).thenApply(h -> h.getContents().getLeft().get(0).getLeft()));

Optional<String> result = response.join();
Expand Down Expand Up @@ -328,7 +327,7 @@ public synchronized CompletableFuture<Hover> hover(HoverParams position) {
params.setPosition(position);

CompletableFuture<Optional<String>> response = LanguageServers.forDocument(document)
.withFilter(capabilities -> LSPEclipseUtils.hasCapability(capabilities.getHoverProvider()))
.withCapability(ServerCapabilities::getHoverProvider)
.computeFirst(ls -> ls.getTextDocumentService().hover(params).thenApply(h -> h == null ? null : h.getContents().getLeft().get(0).getLeft()));

Optional<String> result = response.join();
Expand Down Expand Up @@ -363,7 +362,7 @@ public synchronized CompletableFuture<Hover> hover(HoverParams position) {
params.setPosition(position);

CompletableFuture<Optional<String>> response = LanguageServers.forDocument(document)
.withFilter(capabilities -> LSPEclipseUtils.hasCapability(capabilities.getHoverProvider()))
.withCapability(ServerCapabilities::getHoverProvider)
.computeFirst(ls -> ls.getTextDocumentService().hover(params).thenApply(h -> h == null ? null : h.getContents().getLeft().get(0).getLeft()));

Optional<String> result = response.join();
Expand Down Expand Up @@ -407,7 +406,7 @@ public synchronized CompletableFuture<Hover> hover(HoverParams position) {
params.setPosition(position);

CompletableFuture<Optional<List<String>>> response = LanguageServers.forDocument(document)
.withFilter(capabilities -> LSPEclipseUtils.hasCapability(capabilities.getHoverProvider()))
.withCapability(ServerCapabilities::getHoverProvider)
.computeFirst(ls -> ls.getTextDocumentService().hover(params).thenApply(h -> h == null ? Collections.emptyList() : List.of(h.getContents().getLeft().get(0).getLeft())));

Optional<List<String>> result = response.join();
Expand Down Expand Up @@ -473,7 +472,7 @@ public synchronized CompletableFuture<Hover> hover(HoverParams position) {
params.setPosition(position);

CompletableFuture<List<Hover>> result = LanguageServers.forDocument(document)
.withFilter(capabilities -> LSPEclipseUtils.hasCapability(capabilities.getHoverProvider()))
.withCapability(ServerCapabilities::getHoverProvider)
.collectAll(ls -> ls.getTextDocumentService().hover(params));
initial = CompletableFuture.allOf(initial, result);
}
Expand Down Expand Up @@ -558,7 +557,7 @@ public synchronized CompletableFuture<Hover> hover(HoverParams position) {
position.setLine(0);
params.setPosition(position);
CompletableFuture<?> hoverFuture = LanguageServers.forDocument(document)
.withFilter(capabilities -> LSPEclipseUtils.hasCapability(capabilities.getHoverProvider()))
.withCapability(ServerCapabilities::getHoverProvider)
.collectAll(ls -> {
try {
// If this is non-null then we're running on a/the SWT event thread
Expand Down Expand Up @@ -644,7 +643,7 @@ public synchronized CompletableFuture<Hover> hover(HoverParams position) {
params.setPosition(position);

CompletableFuture<Optional<String>> response = LanguageServers.forDocument(document)
.withFilter(capabilities -> LSPEclipseUtils.hasCapability(capabilities.getHoverProvider()))
.withCapability(ServerCapabilities::getHoverProvider)
.computeFirst(ls -> ls.getTextDocumentService().hover(params).thenApply(h -> h == null ? null : h.getContents().getLeft().get(0).getLeft()));

response.join();
Expand Down Expand Up @@ -672,7 +671,7 @@ public void testWrapperWrapsSameLS() throws Exception {
params.setPosition(position);

CompletableFuture<List<Pair<LanguageServerWrapper, LanguageServer>>> async = LanguageServers.forDocument(document)
.withFilter(capabilities -> LSPEclipseUtils.hasCapability(capabilities.getHoverProvider()))
.withCapability(ServerCapabilities::getHoverProvider)
.collectAll((w, ls) -> ls.getTextDocumentService().hover(params).thenApply(h -> Pair.of(w, ls)));

final List<Pair<LanguageServerWrapper, LanguageServer>> result = async.join();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -200,10 +200,6 @@ private void reinvokeQuickfixProposalsIfNecessary(ITextViewer textViewer) {
}
}

static boolean providesCodeActions(final @Nullable ServerCapabilities capabilities) {
return capabilities != null && LSPEclipseUtils.hasCapability(capabilities.getCodeActionProvider());
}

@Override
public boolean hasResolutions(IMarker marker) {
try {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@
import org.eclipse.lsp4j.CodeActionContext;
import org.eclipse.lsp4j.CodeActionParams;
import org.eclipse.lsp4j.Range;
import org.eclipse.lsp4j.ServerCapabilities;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.Point;
import org.eclipse.ui.internal.progress.ProgressInfoItem;
Expand Down Expand Up @@ -99,7 +100,7 @@ public boolean canAssist(IQuickAssistInvocationContext invocationContext) {
if (document == null) {
return false;
}
LanguageServerDocumentExecutor executor = LanguageServers.forDocument(document).withFilter(LSPCodeActionMarkerResolution::providesCodeActions);
LanguageServerDocumentExecutor executor = LanguageServers.forDocument(document).withCapability(ServerCapabilities::getCodeActionProvider);
return executor.anyMatching();
}

Expand All @@ -109,7 +110,7 @@ public boolean canAssist(IQuickAssistInvocationContext invocationContext) {
if (document == null) {
return null;
}
LanguageServerDocumentExecutor executor = LanguageServers.forDocument(document).withFilter(LSPCodeActionMarkerResolution::providesCodeActions);
LanguageServerDocumentExecutor executor = LanguageServers.forDocument(document).withCapability(ServerCapabilities::getCodeActionProvider);
if (!executor.anyMatching()) {
return null;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@
import org.eclipse.lsp4j.CodeActionParams;
import org.eclipse.lsp4j.Command;
import org.eclipse.lsp4j.Range;
import org.eclipse.lsp4j.ServerCapabilities;
import org.eclipse.lsp4j.jsonrpc.messages.Either;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
Expand Down Expand Up @@ -91,7 +92,7 @@ public void fill(final Menu menu, int index) {
params.setContext(context);

final List<CompletableFuture<@Nullable List<Either<Command, CodeAction>>>> actions = LanguageServers.forDocument(document)
.withFilter(LSPCodeActionMarkerResolution::providesCodeActions)
.withCapability(ServerCapabilities::getCodeActionProvider)
.computeAll((w, ls) -> ls.getTextDocumentService().codeAction(params).whenComplete(
(codeActions, t) -> scheduleMenuUpdate(menu, item, index, document, w, t, codeActions)));

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ public DocumentColorProvider() {
final var textDocumentIdentifier = LSPEclipseUtils.toTextDocumentIdentifier(docURI);
final var param = new DocumentColorParams(textDocumentIdentifier);
return LanguageServers.forDocument(document)
.withFilter(DocumentColorProvider::isColorProvider)
.withCapability(ServerCapabilities::getColorProvider)
.collectAll(
// Need to do some of the result processing inside the function we supply to collectAll(...)
// as need the LSW to construct the ColorInformationMining
Expand Down Expand Up @@ -101,9 +101,4 @@ public DocumentColorProvider() {
public Color getColor(RGBA rgba, Display display) {
return colorTable.computeIfAbsent(rgba, key -> new Color(display, rgba));
}

private static boolean isColorProvider(final @Nullable ServerCapabilities capabilities) {
return capabilities != null && LSPEclipseUtils.hasCapability(capabilities.getColorProvider());
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
import org.eclipse.lsp4e.LanguageServers;
import org.eclipse.lsp4e.LanguageServersRegistry;
import org.eclipse.lsp4e.ui.UI;
import org.eclipse.lsp4j.ServerCapabilities;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorPart;
Expand Down Expand Up @@ -60,8 +61,7 @@ public class EditorToOutlineAdapterFactory implements IAdapterFactory {
IDocument document = LSPEclipseUtils.getDocument(editorInput);
if (document != null) {
CompletableFuture<Optional<LanguageServerWrapper>> languageServer = LanguageServers.forDocument(document)
.withFilter(capabilities -> LSPEclipseUtils
.hasCapability(capabilities.getDocumentSymbolProvider())).computeFirst((w,ls) -> CompletableFuture.completedFuture(w));
.withCapability(ServerCapabilities::getDocumentSymbolProvider).computeFirst((w,ls) -> CompletableFuture.completedFuture(w));
try {
return languageServer.get(50, TimeUnit.MILLISECONDS).filter(Objects::nonNull)
.filter(LanguageServerWrapper::isActive)
Expand Down

0 comments on commit 1b4d138

Please sign in to comment.