From 514ee7a9482958ff31f9ef7824964d08149b6df0 Mon Sep 17 00:00:00 2001 From: Kris De Volder Date: Wed, 27 May 2020 15:52:27 -0700 Subject: [PATCH] Spring Symbols: No project selection should still work See: https://www.pivotaltracker.com/story/show/172999392 --- .../gotosymbol/dialogs/InWorkspaceSymbolsProvider.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/eclipse-language-servers/org.springframework.tooling.ls.eclipse.gotosymbol/src/org/springframework/tooling/ls/eclipse/gotosymbol/dialogs/InWorkspaceSymbolsProvider.java b/eclipse-language-servers/org.springframework.tooling.ls.eclipse.gotosymbol/src/org/springframework/tooling/ls/eclipse/gotosymbol/dialogs/InWorkspaceSymbolsProvider.java index 6ed3545d9..e1d7d63a0 100644 --- a/eclipse-language-servers/org.springframework.tooling.ls.eclipse.gotosymbol/src/org/springframework/tooling/ls/eclipse/gotosymbol/dialogs/InWorkspaceSymbolsProvider.java +++ b/eclipse-language-servers/org.springframework.tooling.ls.eclipse.gotosymbol/src/org/springframework/tooling/ls/eclipse/gotosymbol/dialogs/InWorkspaceSymbolsProvider.java @@ -12,6 +12,7 @@ package org.springframework.tooling.ls.eclipse.gotosymbol.dialogs; import java.time.Duration; import java.util.List; +import java.util.function.Predicate; import java.util.function.Supplier; import java.util.stream.Collectors; @@ -22,6 +23,7 @@ import org.eclipse.core.runtime.IAdaptable; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.lsp4e.LanguageServiceAccessor; import org.eclipse.lsp4j.DocumentSymbol; +import org.eclipse.lsp4j.ServerCapabilities; import org.eclipse.lsp4j.SymbolInformation; import org.eclipse.lsp4j.WorkspaceSymbolParams; import org.eclipse.lsp4j.jsonrpc.messages.Either; @@ -40,14 +42,18 @@ import reactor.core.publisher.Mono; @SuppressWarnings("restriction") public class InWorkspaceSymbolsProvider implements SymbolsProvider { + private static final Predicate WS_SYMBOL_CAP = capabilities -> Boolean.TRUE.equals(capabilities.getWorkspaceSymbolProvider()); + public static InWorkspaceSymbolsProvider createFor(Supplier _project) { return new InWorkspaceSymbolsProvider(() -> { IProject project = _project.get(); if (project!=null) { return LanguageServiceAccessor.getLanguageServers(project, - capabilities -> Boolean.TRUE.equals(capabilities.getWorkspaceSymbolProvider()), true); + WS_SYMBOL_CAP, true); + } else { + System.out.println("project = null"); + return LanguageServiceAccessor.getActiveLanguageServers(WS_SYMBOL_CAP); } - return ImmutableList.of(); }); }