From aaffc800a7f8fdb336587c7a860178343eaf2860 Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Tue, 19 Jul 2016 18:17:15 +0300 Subject: [PATCH] Scopes like "Current file" and "Changed files" should be different event if empty --- .../com/intellij/psi/search/LocalSearchScope.java | 10 ++++++---- .../search/PredefinedSearchScopeProviderImpl.java | 13 ++++++------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/platform/core-api/src/com/intellij/psi/search/LocalSearchScope.java b/platform/core-api/src/com/intellij/psi/search/LocalSearchScope.java index 42c3e9ea995a..98cd4ede78b0 100644 --- a/platform/core-api/src/com/intellij/psi/search/LocalSearchScope.java +++ b/platform/core-api/src/com/intellij/psi/search/LocalSearchScope.java @@ -115,12 +115,14 @@ public class LocalSearchScope extends SearchScope { if (this == o) return true; if (!(o instanceof LocalSearchScope)) return false; - final LocalSearchScope localSearchScope = (LocalSearchScope)o; + LocalSearchScope other = (LocalSearchScope)o; + + if (other.myIgnoreInjectedPsi != myIgnoreInjectedPsi) return false; + if (other.myScope.length != myScope.length) return false; + if (!Comparing.strEqual(myDisplayName, other.myDisplayName)) return false; // scopes like "Current file" and "Changed files" should be different event if empty - if (localSearchScope.myIgnoreInjectedPsi != myIgnoreInjectedPsi) return false; - if (localSearchScope.myScope.length != myScope.length) return false; for (final PsiElement scopeElement : myScope) { - final PsiElement[] thatScope = localSearchScope.myScope; + final PsiElement[] thatScope = other.myScope; for (final PsiElement thatScopeElement : thatScope) { if (!Comparing.equal(scopeElement, thatScopeElement)) return false; } diff --git a/platform/lang-impl/src/com/intellij/psi/search/PredefinedSearchScopeProviderImpl.java b/platform/lang-impl/src/com/intellij/psi/search/PredefinedSearchScopeProviderImpl.java index 9d98ba26c293..2228187ddcd2 100644 --- a/platform/lang-impl/src/com/intellij/psi/search/PredefinedSearchScopeProviderImpl.java +++ b/platform/lang-impl/src/com/intellij/psi/search/PredefinedSearchScopeProviderImpl.java @@ -68,7 +68,7 @@ public class PredefinedSearchScopeProviderImpl extends PredefinedSearchScopeProv boolean currentSelection, boolean usageView, boolean showEmptyScopes) { - Collection result = showEmptyScopes ? ContainerUtil.newArrayList() : ContainerUtil.newLinkedHashSet(); + Collection result = ContainerUtil.newLinkedHashSet(); result.add(GlobalSearchScope.projectScope(project)); if (suggestSearchInLibs) { result.add(GlobalSearchScope.allScope(project)); @@ -90,8 +90,7 @@ public class PredefinedSearchScopeProviderImpl extends PredefinedSearchScopeProv final Editor selectedTextEditor = ApplicationManager.getApplication().isDispatchThread() ? FileEditorManager.getInstance(project).getSelectedTextEditor() : null; - final PsiFile psiFile = - (selectedTextEditor != null) ? PsiDocumentManager.getInstance(project).getPsiFile(selectedTextEditor.getDocument()) : null; + PsiFile psiFile = selectedTextEditor == null ? null : PsiDocumentManager.getInstance(project).getPsiFile(selectedTextEditor.getDocument()); PsiFile currentFile = psiFile; if (dataContext != null) { @@ -136,7 +135,7 @@ public class PredefinedSearchScopeProviderImpl extends PredefinedSearchScopeProv if (endElement != null) { final PsiElement parent = PsiTreeUtil.findCommonParent(startElement, endElement); if (parent != null) { - final List elements = new ArrayList(); + final List elements = new ArrayList<>(); final PsiElement[] children = parent.getChildren(); TextRange selection = new TextRange(start, end); for (PsiElement child : children) { @@ -162,13 +161,12 @@ public class PredefinedSearchScopeProviderImpl extends PredefinedSearchScopeProv if (selectedUsageView != null && !selectedUsageView.isSearchInProgress()) { final Set usages = ContainerUtil.newTroveSet(selectedUsageView.getUsages()); usages.removeAll(selectedUsageView.getExcludedUsages()); - final List results = new ArrayList(usages.size()); if (prevSearchFiles) { final Set files = collectFiles(usages, true); if (!files.isEmpty()) { GlobalSearchScope prev = new GlobalSearchScope(project) { - private Set myFiles = null; + private Set myFiles; @NotNull @Override @@ -203,6 +201,7 @@ public class PredefinedSearchScopeProviderImpl extends PredefinedSearchScopeProv } } else { + final List results = new ArrayList<>(usages.size()); for (Usage usage : usages) { if (usage instanceof PsiElementUsage) { final PsiElement element = ((PsiElementUsage)usage).getElement(); @@ -294,7 +293,7 @@ public class PredefinedSearchScopeProviderImpl extends PredefinedSearchScopeProv } protected static Set collectFiles(Set usages, boolean findFirst) { - final Set files = new HashSet(); + final Set files = new HashSet<>(); for (Usage usage : usages) { if (usage instanceof PsiElementUsage) { PsiElement psiElement = ((PsiElementUsage)usage).getElement();