From 538f104f2983ebc47740de2de9936c37a0a2b548 Mon Sep 17 00:00:00 2001 From: Sergey Ignatov Date: Mon, 27 Apr 2015 17:54:35 +0300 Subject: [PATCH] better plugin search --- .../ide/plugins/PluginManagerMain.java | 36 +++++++------------ .../intellij/ide/ui/search/SearchUtil.java | 10 +++--- 2 files changed, 16 insertions(+), 30 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/ide/plugins/PluginManagerMain.java b/platform/platform-impl/src/com/intellij/ide/plugins/PluginManagerMain.java index 585c3257b06b..1daaf730be05 100644 --- a/platform/platform-impl/src/com/intellij/ide/plugins/PluginManagerMain.java +++ b/platform/platform-impl/src/com/intellij/ide/plugins/PluginManagerMain.java @@ -607,34 +607,22 @@ public abstract class PluginManagerMain implements Disposable { pluginTable.select(descriptors); } - protected static boolean isAccepted(String filter, - Set search, - IdeaPluginDescriptor descriptor) { + protected static boolean isAccepted(@Nullable String filter, @NotNull Set search, @NotNull IdeaPluginDescriptor descriptor) { if (StringUtil.isEmpty(filter)) return true; - if (isAccepted(search, filter, descriptor.getName())) { - return true; - } - else { - final String description = descriptor.getDescription(); - if (description != null && isAccepted(search, filter, description)) { - return true; - } - final String category = descriptor.getCategory(); - if (category != null && isAccepted(search, filter, category)) { - return true; - } - final String changeNotes = descriptor.getChangeNotes(); - if (changeNotes != null && isAccepted(search, filter, changeNotes)) { - return true; - } - } - return false; + if (StringUtil.containsIgnoreCase(descriptor.getName(), filter) || isAccepted(search, filter, descriptor.getName())) return true; + if (isAccepted(search, filter, descriptor.getDescription())) return true; + String category = descriptor.getCategory(); + return category != null && (StringUtil.containsIgnoreCase(category, filter) || isAccepted(search, filter, category)); } - private static boolean isAccepted(Set search, @NotNull String filter, @NotNull String description) { - if (StringUtil.containsIgnoreCase(description, filter)) return true; + private static boolean isAccepted(@NotNull Set search, @NotNull String filter, @Nullable String description) { + if (StringUtil.isEmpty(description)) return false; + if (filter.length() <= 2) return false; + Set words = SearchableOptionsRegistrar.getInstance().getProcessedWords(description); + if (words.contains(filter)) return true; + if (search.isEmpty()) return false; Set descriptionSet = new HashSet(search); - descriptionSet.removeAll(SearchableOptionsRegistrar.getInstance().getProcessedWords(description)); + descriptionSet.removeAll(words); return descriptionSet.isEmpty(); } diff --git a/platform/platform-impl/src/com/intellij/ide/ui/search/SearchUtil.java b/platform/platform-impl/src/com/intellij/ide/ui/search/SearchUtil.java index a0df30abae1c..70ad6d139253 100644 --- a/platform/platform-impl/src/com/intellij/ide/ui/search/SearchUtil.java +++ b/platform/platform-impl/src/com/intellij/ide/ui/search/SearchUtil.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2014 JetBrains s.r.o. + * Copyright 2000-2015 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -345,6 +345,7 @@ public class SearchUtil { } } for (String stripped : quoted) { + if (registrar.isStopWord(stripped)) continue; textToMarkup = markup(textToMarkup, insideHtmlTagPattern, stripped); } return head + textToMarkup + foot; @@ -365,15 +366,12 @@ public class SearchUtil { } private static String markup(@NonNls String textToMarkup, final Pattern insideHtmlTagPattern, final String option) { - @NonNls String result = ""; final int styleIdx = textToMarkup.indexOf(""); if (styleIdx < 0 || styleEndIdx < 0) { - result = markupInText(textToMarkup, insideHtmlTagPattern, option); - } else { - result = markup(textToMarkup.substring(0, styleIdx), insideHtmlTagPattern, option) + markup(textToMarkup.substring(styleEndIdx + STYLE_END.length()), insideHtmlTagPattern, option); + return markupInText(textToMarkup, insideHtmlTagPattern, option); } - return result; + return markup(textToMarkup.substring(0, styleIdx), insideHtmlTagPattern, option) + markup(textToMarkup.substring(styleEndIdx + STYLE_END.length()), insideHtmlTagPattern, option); } private static String markupInText(String textToMarkup, Pattern insideHtmlTagPattern, String option) {