From 8b8490c8cd1e451ca94e726ace826de9b074f34e Mon Sep 17 00:00:00 2001 From: Henry Wylde Date: Thu, 23 Feb 2023 10:02:05 +0100 Subject: [PATCH] RUBY-30957 add "Current" hint support for usages when using the new UsageSearcher APIs (cherry picked from commit 2abfe555f5a3bb666714e97064f139c821ccb85a) IJ-CR-103466 GitOrigin-RevId: 80f7404b46ae1397d802761e97b8ba438e3e4be7 --- .../intellij/find/actions/ShowUsagesAction.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/platform/lang-impl/src/com/intellij/find/actions/ShowUsagesAction.java b/platform/lang-impl/src/com/intellij/find/actions/ShowUsagesAction.java index e3c35abe2968..cd7bdea722c1 100644 --- a/platform/lang-impl/src/com/intellij/find/actions/ShowUsagesAction.java +++ b/platform/lang-impl/src/com/intellij/find/actions/ShowUsagesAction.java @@ -11,6 +11,7 @@ import com.intellij.find.FindSettings; import com.intellij.find.findUsages.*; import com.intellij.find.impl.FindManagerImpl; import com.intellij.find.usages.api.SearchTarget; +import com.intellij.find.usages.impl.Psi2UsageInfo2UsageAdapter; import com.intellij.icons.AllIcons; import com.intellij.ide.DataManager; import com.intellij.ide.util.PropertiesComponent; @@ -58,6 +59,7 @@ import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.psi.PsiDocumentManager; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiReference; +import com.intellij.psi.SmartPsiFileRange; import com.intellij.psi.search.GlobalSearchScope; import com.intellij.psi.search.LocalSearchScope; import com.intellij.psi.search.SearchScope; @@ -103,6 +105,7 @@ import java.util.stream.Collectors; import static com.intellij.find.actions.ResolverKt.findShowUsages; import static com.intellij.find.actions.ShowUsagesActionHandler.getSecondInvocationHint; import static com.intellij.find.findUsages.FindUsagesHandlerFactory.OperationMode.USAGES_WITH_DEFAULT_OPTIONS; +import static com.intellij.util.ObjectUtils.doIfNotNull; import static org.jetbrains.annotations.Nls.Capitalization.Sentence; public class ShowUsagesAction extends AnAction implements PopupAction, HintManagerImpl.ActionToIgnore { @@ -634,6 +637,20 @@ public class ShowUsagesAction extends AnAction implements PopupAction, HintManag return usage -> usage instanceof UsageInfo2UsageAdapter && ((UsageInfo2UsageAdapter)usage).getUsageInfo().equals(originUsageInfo); } + + int offset = editor.getCaretModel().getOffset(); + return usage -> { + if (usage instanceof Psi2UsageInfo2UsageAdapter adapter) { + for (UsageInfo info : adapter.getMergedInfos()) { + final Segment range = doIfNotNull(info.getPsiFileRange(), SmartPsiFileRange::getRange); + if (range != null && range.getStartOffset() <= offset && offset <= range.getEndOffset()) { + return true; + } + } + } + + return false; + }; } return __ -> false; }