Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMickael Istria2019-08-02 14:21:57 +0000
committerMickael Istria2019-08-08 06:03:22 +0000
commit0367949445d446bf33eb696e9d9b1e03cc2a35ca (patch)
treecdb4d7775891caa00119f4896d7b7435f0ccbf36
parent50d7fa7baf887fa2edee9fe5956d1c38c7d7e55a (diff)
downloadlsp4e-0367949445d446bf33eb696e9d9b1e03cc2a35ca.tar.gz
lsp4e-0367949445d446bf33eb696e9d9b1e03cc2a35ca.tar.xz
lsp4e-0367949445d446bf33eb696e9d9b1e03cc2a35ca.zip
Bug 546169 - WorkspaceSymbols in Quick Access
Use new proposed API to make workspace symbols available in QuickAccess Change-Id: I9a5965b932f9d3b084e7fdbe25dcba364b0bab09 Signed-off-by: Mickael Istria <mistria@redhat.com>
-rw-r--r--org.eclipse.lsp4e/plugin.xml3
-rw-r--r--org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/symbols/WorkspaceSymbolsQuickAccessProvider.java29
2 files changed, 20 insertions, 12 deletions
diff --git a/org.eclipse.lsp4e/plugin.xml b/org.eclipse.lsp4e/plugin.xml
index 06f1f8f1..cd48a14a 100644
--- a/org.eclipse.lsp4e/plugin.xml
+++ b/org.eclipse.lsp4e/plugin.xml
@@ -514,6 +514,7 @@
point="org.eclipse.ui.quickAccess">
<computer
class="org.eclipse.lsp4e.operations.symbols.WorkspaceSymbolsQuickAccessProvider"
- name="Workspace Symbols"/>
+ name="Workspace Symbols"
+ requiresUIAccess="false"/>
</extension>
</plugin>
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/symbols/WorkspaceSymbolsQuickAccessProvider.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/symbols/WorkspaceSymbolsQuickAccessProvider.java
index 11351c94..ee1f1897 100644
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/symbols/WorkspaceSymbolsQuickAccessProvider.java
+++ b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/symbols/WorkspaceSymbolsQuickAccessProvider.java
@@ -17,25 +17,41 @@ import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.stream.Collectors;
+import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.lsp4e.LanguageServiceAccessor;
import org.eclipse.lsp4j.WorkspaceSymbolParams;
import org.eclipse.lsp4j.services.LanguageServer;
import org.eclipse.ui.quickaccess.IQuickAccessComputer;
+import org.eclipse.ui.quickaccess.IQuickAccessComputerExtension;
import org.eclipse.ui.quickaccess.QuickAccessElement;
-public class WorkspaceSymbolsQuickAccessProvider implements IQuickAccessComputer {
+public class WorkspaceSymbolsQuickAccessProvider implements IQuickAccessComputer, IQuickAccessComputerExtension {
private List<@NonNull LanguageServer> usedLanguageServers;
@Override
public QuickAccessElement[] computeElements() {
+ return new QuickAccessElement[0];
+ }
+
+ @Override
+ public void resetState() {
+ }
+
+ @Override
+ public boolean needsRefresh() {
+ return this.usedLanguageServers == null || !this.usedLanguageServers.equals(LanguageServiceAccessor.getActiveLanguageServers(serverCapabilities -> Boolean.TRUE.equals(serverCapabilities.getWorkspaceSymbolProvider())));
+ }
+
+ @Override
+ public QuickAccessElement[] computeElements(String query, IProgressMonitor monitor) {
this.usedLanguageServers = LanguageServiceAccessor.getActiveLanguageServers(serverCapabilities -> Boolean.TRUE.equals(serverCapabilities.getWorkspaceSymbolProvider()));
if (usedLanguageServers.isEmpty()) {
return new QuickAccessElement[0];
}
- WorkspaceSymbolParams params = new WorkspaceSymbolParams(""); // see https://github.com/Microsoft/language-server-protocol/issues/740 //$NON-NLS-1$
+ WorkspaceSymbolParams params = new WorkspaceSymbolParams(query);
List<QuickAccessElement> res = Collections.synchronizedList(new ArrayList<>());
CompletableFuture.allOf(usedLanguageServers.stream().map(ls ->
ls.getWorkspaceService().symbol(params).thenAcceptAsync(symbols ->
@@ -44,13 +60,4 @@ public class WorkspaceSymbolsQuickAccessProvider implements IQuickAccessComputer
return res.toArray(new QuickAccessElement[res.size()]);
}
- @Override
- public void resetState() {
- }
-
- @Override
- public boolean needsRefresh() {
- return this.usedLanguageServers == null || !this.usedLanguageServers.equals(LanguageServiceAccessor.getActiveLanguageServers(serverCapabilities -> Boolean.TRUE.equals(serverCapabilities.getWorkspaceSymbolProvider())));
- }
-
}

Back to the top