diff options
author | Jon Bratseth <bratseth@gmail.com> | 2022-02-16 18:43:33 +0100 |
---|---|---|
committer | Jon Bratseth <bratseth@gmail.com> | 2022-02-16 18:43:33 +0100 |
commit | ec1627a6c3de495fd471867f90f5e81bfdc15588 (patch) | |
tree | c6132e2f1c4389c8012ac6c4a007bee9227a6d40 /integration | |
parent | 524cd03d4c8a175d1ab91e32ef393494e73e6ab7 (diff) |
Respect search scope
Diffstat (limited to 'integration')
-rw-r--r-- | integration/intellij/src/main/java/ai/vespa/intellij/schema/findUsages/SdFindUsagesHandler.java | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/integration/intellij/src/main/java/ai/vespa/intellij/schema/findUsages/SdFindUsagesHandler.java b/integration/intellij/src/main/java/ai/vespa/intellij/schema/findUsages/SdFindUsagesHandler.java index ebe21161667..c616800eee2 100644 --- a/integration/intellij/src/main/java/ai/vespa/intellij/schema/findUsages/SdFindUsagesHandler.java +++ b/integration/intellij/src/main/java/ai/vespa/intellij/schema/findUsages/SdFindUsagesHandler.java @@ -13,6 +13,7 @@ import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import com.intellij.psi.PsiReference; import com.intellij.psi.search.GlobalSearchScope; +import com.intellij.psi.search.SearchScope; import com.intellij.psi.search.searches.ReferencesSearch; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.usageView.UsageInfo; @@ -40,7 +41,7 @@ public class SdFindUsagesHandler extends FindUsagesHandler { FindUsagesOptions options) { if (options.isUsages) { if (elementToSearch instanceof SdFunctionDefinition) { - findFunctionUsages((SdFunctionDefinition) elementToSearch, processor); + findFunctionUsages((SdFunctionDefinition) elementToSearch, options.searchScope, processor); } else { boolean success = ReferencesSearch.search(createSearchParameters(elementToSearch, options.searchScope, options)) @@ -69,12 +70,12 @@ public class SdFindUsagesHandler extends FindUsagesHandler { * on the assumption that this keeps the IDE responsive. I have not found documentation * on that. */ - private void findFunctionUsages(SdFunctionDefinition functionToFind, Processor<? super UsageInfo> processor) { + private void findFunctionUsages(SdFunctionDefinition functionToFind, SearchScope scope, Processor<? super UsageInfo> processor) { String functionNameToFind = ReadAction.compute(functionToFind::getName); Schema schema = ReadAction.compute(this::resolveSchema); var rankProfile = ReadAction.compute(() -> schema.rankProfiles() .get(PsiTreeUtil.getParentOfType(functionToFind, SdRankProfileDefinition.class).getName())); - findFunctionUsages(functionNameToFind, functionToFind, rankProfile, processor); + findFunctionUsages(functionNameToFind, functionToFind, rankProfile, scope, processor); } private Schema resolveSchema() { @@ -91,17 +92,20 @@ public class SdFindUsagesHandler extends FindUsagesHandler { private void findFunctionUsages(String functionNameToFind, SdFunctionDefinition functionToFind, RankProfile rankProfile, + SearchScope scope, Processor<? super UsageInfo> processor) { - ReadAction.compute(() -> findFunctionUsagesInThis(functionNameToFind, functionToFind, rankProfile, processor)); + ReadAction.compute(() -> findFunctionUsagesInThis(functionNameToFind, functionToFind, rankProfile, scope, processor)); Collection<RankProfile> children = ReadAction.compute(() -> rankProfile.children().values()); for (var child : children) - findFunctionUsages(functionNameToFind, functionToFind, child, processor); + findFunctionUsages(functionNameToFind, functionToFind, child, scope, processor); } private boolean findFunctionUsagesInThis(String functionNameToFind, SdFunctionDefinition functionToFind, RankProfile rankProfile, + SearchScope scope, Processor<? super UsageInfo> processor) { + if ( ! scope.contains(rankProfile.definition().getContainingFile().getVirtualFile())) return false; Collection<List<Function>> functions = ReadAction.compute(() -> rankProfile.definedFunctions().values()); for (var functionList : functions) { for (var function : functionList) { |