aboutsummaryrefslogtreecommitdiffstats
path: root/integration/intellij
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@gmail.com>2022-02-16 18:43:33 +0100
committerJon Bratseth <bratseth@gmail.com>2022-02-16 18:43:33 +0100
commitec1627a6c3de495fd471867f90f5e81bfdc15588 (patch)
treec6132e2f1c4389c8012ac6c4a007bee9227a6d40 /integration/intellij
parent524cd03d4c8a175d1ab91e32ef393494e73e6ab7 (diff)
Respect search scope
Diffstat (limited to 'integration/intellij')
-rw-r--r--integration/intellij/src/main/java/ai/vespa/intellij/schema/findUsages/SdFindUsagesHandler.java14
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) {