void (SearchRestartReason reason) { ThreadingAssertions.assertEventDispatchThread(); stopSearching(); myResultsList.setEmptyText(IdeBundle.message("label.choosebyname.searching")); String rawPattern = getSearchPattern(); updateViewType(rawPattern.isEmpty() ? ViewType.SHORT : ViewType.FULL); String namePattern = myHeader.getSelectedTab().isSingleContributor() ? myHeader.getSelectedTab().getContributors().get(0).filterControlSymbols(rawPattern) : rawPattern; MinusculeMatcher matcher = NameUtil.buildMatcherWithFallback("*" + rawPattern, "*" + namePattern, NameUtil.MatchingCaseSensitivity.NONE); MatcherHolder.associateMatcher(myResultsList, matcher); Map<SearchEverywhereContributor<?>, Integer> contributorsMap = new HashMap<>(); List<SearchEverywhereContributor<?>> contributors = myHeader.getSelectedTab().getContributors(); int limit = contributors.size() > 1 ? MULTIPLE_CONTRIBUTORS_ELEMENTS_LIMIT : SINGLE_CONTRIBUTOR_ELEMENTS_LIMIT; contributors.forEach(c -> contributorsMap.put(c, limit)); if (myProject != null) { contributors = DumbService.getInstance(myProject).filterByDumbAwareness(contributorsMap.keySet()); if (contributors.isEmpty() && DumbService.isDumb(myProject)) { DumbModeBlockedFunctionalityCollector.INSTANCE.logFunctionalityBlocked(myProject, DumbModeBlockedFunctionality.SearchEverywhere); myResultsList.setEmptyText(IdeBundle.message("searcheverywhere.indexing.mode.not.supported", myHeader.getSelectedTab().getName(), ApplicationNamesInfo.getInstance().getFullProductName())); myListModel.clear(); return; } if (contributors.size() != contributorsMap.size()) { myResultsList.setEmptyText(IdeBundle.message("searcheverywhere.indexing.incomplete.results", myHeader.getSelectedTab().getName(), ApplicationNamesInfo.getInstance().getFullProductName())); } } String tabId = myHeader.getSelectedTab().getID(); if (myMlService != null) { myMlService.onSearchRestart( myProject, tabId, reason, mySearchTypingListener.mySymbolKeysTyped, mySearchTypingListener.myBackspacesTyped, namePattern, () -> myListModel.getFoundElementsInfo(), getSelectedSearchScope(myHeader.getSelectedTab()), myHeader.isEverywhere() ); } myListModel.expireResults(); contributors.forEach(contributor -> myListModel.setHasMore(contributor, false)); List<SearchEverywhereFoundElementInfo> completionElements = AutoCompletionProvider.getCompletionElements(contributors, mySearchField); myListModel.addElements(completionElements); String commandPrefix = SearchTopHitProvider.getTopHitAccelerator(); if (rawPattern.startsWith(commandPrefix)) { String typedCommand = rawPattern.split(" ")[0].substring(commandPrefix.length()); List<SearchEverywhereCommandInfo> commands = getCommandsForCompletion(contributors, typedCommand); if (!commands.isEmpty()) { if (rawPattern.contains(" ")) { contributorsMap.keySet().retainAll(commands.stream() .map(SearchEverywhereCommandInfo::getContributor) .collect(Collectors.toSet())); } else { myListModel.clear(); List<SearchEverywhereFoundElementInfo> lst = ContainerUtil.map( commands, command -> new SearchEverywhereFoundElementInfo(command, 0, myStubCommandContributor)); myListModel.addElements(lst); ScrollingUtil.ensureSelectionExists(myResultsList); } } } addSpellingCorrectionSuggestionIfAvailable(tabId, rawPattern); myHintHelper.setSearchInProgress(StringUtil.isNotEmpty(getSearchPattern())); mySearchProgressIndicator = mySearcher.search(contributorsMap, rawPattern); }