diff options
| author | Mickael Istria | 2019-08-02 14:21:57 +0000 |
|---|---|---|
| committer | Mickael Istria | 2019-08-08 06:03:22 +0000 |
| commit | 0367949445d446bf33eb696e9d9b1e03cc2a35ca (patch) | |
| tree | cdb4d7775891caa00119f4896d7b7435f0ccbf36 | |
| parent | 50d7fa7baf887fa2edee9fe5956d1c38c7d7e55a (diff) | |
| download | lsp4e-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.xml | 3 | ||||
| -rw-r--r-- | org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/symbols/WorkspaceSymbolsQuickAccessProvider.java | 29 |
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()))); - } - } |
