From 0d0da5d09fb29e3e1204538c2f7065b3922517f2 Mon Sep 17 00:00:00 2001 From: azerr Date: Mon, 7 Nov 2022 09:40:10 +0100 Subject: [PATCH] Move findReferences in LSPEclipseUtils --- .../org/eclipse/lsp4e/LSPEclipseUtils.java | 32 +++++++++++++++++++ .../references/LSFindReferences.java | 16 +--------- 2 files changed, 33 insertions(+), 15 deletions(-) diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/LSPEclipseUtils.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/LSPEclipseUtils.java index af5dcee65..e43cbdb43 100644 --- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/LSPEclipseUtils.java +++ b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/LSPEclipseUtils.java @@ -71,6 +71,7 @@ import org.eclipse.jface.text.RewriteSessionEditProcessor; import org.eclipse.jface.text.TextSelection; import org.eclipse.jface.viewers.ISelectionProvider; +import org.eclipse.lsp4e.operations.references.LSSearchQuery; import org.eclipse.lsp4e.refactoring.CreateFileChange; import org.eclipse.lsp4e.refactoring.DeleteExternalFile; import org.eclipse.lsp4e.refactoring.LSPTextChange; @@ -99,6 +100,7 @@ import org.eclipse.lsp4j.WorkspaceEdit; import org.eclipse.lsp4j.WorkspaceFolder; import org.eclipse.lsp4j.jsonrpc.messages.Either; +import org.eclipse.lsp4j.services.LanguageServer; import org.eclipse.ltk.core.refactoring.CompositeChange; import org.eclipse.ltk.core.refactoring.DocumentChange; import org.eclipse.ltk.core.refactoring.PerformChangeOperation; @@ -106,8 +108,10 @@ import org.eclipse.ltk.core.refactoring.resource.DeleteResourceChange; import org.eclipse.mylyn.wikitext.markdown.MarkdownLanguage; import org.eclipse.mylyn.wikitext.parser.MarkupParser; +import org.eclipse.search.ui.NewSearchUI; import org.eclipse.swt.graphics.RGB; import org.eclipse.swt.graphics.RGBA; +import org.eclipse.swt.widgets.Display; import org.eclipse.text.edits.MalformedTreeException; import org.eclipse.text.edits.MultiTextEdit; import org.eclipse.text.edits.ReplaceEdit; @@ -1132,4 +1136,32 @@ public static boolean hasCapability(Either eitherCapa } } + /** + * Execute Eclipse Search UI to search LSP references from the given document and + * offset. + * + * @param document + * the document. + * @param offset + * the offset. + * @param display + * the display to use to execute the search. + */ + public static void searchLSPReferences(@NonNull IDocument document, int offset, Display display) { + LanguageServiceAccessor + .getLanguageServers(document, + capabilities -> hasCapability(capabilities.getReferencesProvider())) // + .thenAcceptAsync(languageServers -> { + if (languageServers.isEmpty()) { + return; + } + LanguageServer ls = languageServers.get(0); + try { + LSSearchQuery query = new LSSearchQuery(document, offset, ls); + display.asyncExec(() -> NewSearchUI.runQueryInBackground(query)); + } catch (BadLocationException e) { + LanguageServerPlugin.logError(e); + } + }); + } } diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/references/LSFindReferences.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/references/LSFindReferences.java index fbfef2bc1..bf32d9d7a 100644 --- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/references/LSFindReferences.java +++ b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/references/LSFindReferences.java @@ -20,7 +20,6 @@ import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.commands.ExecutionException; import org.eclipse.core.commands.IHandler; -import org.eclipse.jface.text.BadLocationException; import org.eclipse.jface.text.IDocument; import org.eclipse.jface.text.ITextSelection; import org.eclipse.jface.viewers.ISelection; @@ -28,8 +27,6 @@ import org.eclipse.lsp4e.LanguageServerPlugin; import org.eclipse.lsp4e.LanguageServiceAccessor; import org.eclipse.lsp4e.ui.UI; -import org.eclipse.lsp4j.services.LanguageServer; -import org.eclipse.search.ui.NewSearchUI; import org.eclipse.ui.IEditorPart; import org.eclipse.ui.handlers.HandlerUtil; import org.eclipse.ui.texteditor.ITextEditor; @@ -51,18 +48,7 @@ public Object execute(ExecutionEvent event) throws ExecutionException { ISelection sel = editor.getSelectionProvider().getSelection(); if (sel instanceof ITextSelection textSelection) { int offset = ((ITextSelection) sel).getOffset(); - LanguageServiceAccessor.getLanguageServers(document, capabilities -> LSPEclipseUtils.hasCapability(capabilities.getReferencesProvider())).thenAcceptAsync(languageServers -> { - if (languageServers.isEmpty()) { - return; - } - LanguageServer ls = languageServers.get(0); - try { - LSSearchQuery query = new LSSearchQuery(document, offset, ls); - HandlerUtil.getActiveShell(event).getDisplay().asyncExec(() -> NewSearchUI.runQueryInBackground(query)); - } catch (BadLocationException e) { - LanguageServerPlugin.logError(e); - } - }); + LSPEclipseUtils.searchLSPReferences(document, offset, HandlerUtil.getActiveShell(event).getDisplay()); } } return null;