mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[platform] split KeyboardLayoutUtil in two parts: awt/non-awt
moved non-awt part to util module and reverted nasty changes with passing char-conversion function to matchers GitOrigin-RevId: 95ecac61932ee7ca5bf29295c899b835367fa7d8
This commit is contained in:
committed by
intellij-monorepo-bot
parent
b989af754c
commit
56201c31ea
+2
-2
@@ -12,6 +12,7 @@ import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.psi.PsiClass;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.codeStyle.MinusculeMatcher;
|
||||
import com.intellij.psi.codeStyle.NameUtil;
|
||||
import com.intellij.psi.presentation.java.SymbolPresentationUtil;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
import com.intellij.psi.search.PsiShortNamesCache;
|
||||
@@ -21,7 +22,6 @@ import com.intellij.util.indexing.DumbModeAccessType;
|
||||
import com.intellij.util.indexing.FileBasedIndex;
|
||||
import com.intellij.util.indexing.FindSymbolParameters;
|
||||
import com.intellij.util.indexing.IdFilter;
|
||||
import com.intellij.util.ui.FixingLayoutMatcherUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@@ -70,7 +70,7 @@ public class DefaultClassNavigationContributor implements ChooseByNameContributo
|
||||
hasDollar = namePattern.contains("$");
|
||||
}
|
||||
}
|
||||
final MinusculeMatcher innerMatcher = hasDollar ? FixingLayoutMatcherUtil.buildLayoutFixingMatcher("*" + namePattern).build() : null;
|
||||
final MinusculeMatcher innerMatcher = hasDollar ? NameUtil.buildMatcher("*" + namePattern).build() : null;
|
||||
FileBasedIndex.getInstance().ignoreDumbMode(() -> {
|
||||
PsiShortNamesCache.getInstance(parameters.getProject()).processClassesWithName(name, new Processor<PsiClass>() {
|
||||
final boolean isAnnotation = parameters.getLocalPatternName().startsWith("@");
|
||||
|
||||
+2
-2
@@ -14,6 +14,7 @@ import com.intellij.openapi.util.registry.Registry;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.codeStyle.MinusculeMatcher;
|
||||
import com.intellij.psi.codeStyle.NameUtil;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
import com.intellij.psi.search.PsiSearchScopeUtil;
|
||||
import com.intellij.psi.search.PsiShortNamesCache;
|
||||
@@ -22,7 +23,6 @@ import com.intellij.psi.util.PsiUtil;
|
||||
import com.intellij.util.Processor;
|
||||
import com.intellij.util.indexing.FindSymbolParameters;
|
||||
import com.intellij.util.indexing.IdFilter;
|
||||
import com.intellij.util.ui.FixingLayoutMatcherUtil;
|
||||
import gnu.trove.THashSet;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -152,7 +152,7 @@ public class DefaultSymbolNavigationContributor implements ChooseByNameContribut
|
||||
|
||||
if (completePattern.contains(".") || completePattern.contains("#")) {
|
||||
String normalized = StringUtil.replace(StringUtil.replace(completePattern, "#", ".*"), ".", ".*");
|
||||
MinusculeMatcher matcher = FixingLayoutMatcherUtil.buildLayoutFixingMatcher("*" + normalized).build();
|
||||
MinusculeMatcher matcher = NameUtil.buildMatcher("*" + normalized).build();
|
||||
return member -> {
|
||||
String qualifiedName = PsiUtil.getMemberQualifiedName(member);
|
||||
return qualifiedName != null && matcher.matches(qualifiedName);
|
||||
|
||||
@@ -20,7 +20,6 @@ import com.intellij.psi.util.PsiUtilCore;
|
||||
import com.intellij.util.Processor;
|
||||
import com.intellij.util.Processors;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.ui.FixingLayoutMatcherUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@@ -103,7 +102,7 @@ public class JavaTestFinder implements TestFinder {
|
||||
if (klassName.isEmpty()) {
|
||||
klassName = klass.getName();
|
||||
}
|
||||
MinusculeMatcher matcher = FixingLayoutMatcherUtil.buildLayoutFixingMatcher("*" + klassName, NameUtil.MatchingCaseSensitivity.NONE);
|
||||
MinusculeMatcher matcher = NameUtil.buildMatcher("*" + klassName, NameUtil.MatchingCaseSensitivity.NONE);
|
||||
for (String eachName : ContainerUtil.newHashSet(cache.getAllClassNames())) {
|
||||
if (matcher.matches(eachName)) {
|
||||
for (PsiClass eachClass : cache.getClassesByName(eachName, scope)) {
|
||||
|
||||
+1
-2
@@ -14,7 +14,6 @@ import com.intellij.psi.codeStyle.MinusculeMatcher;
|
||||
import com.intellij.psi.codeStyle.NameUtil;
|
||||
import com.intellij.util.containers.FList;
|
||||
import com.intellij.util.text.CharArrayUtil;
|
||||
import com.intellij.util.ui.FixingLayoutMatcherUtil;
|
||||
import org.jetbrains.annotations.ApiStatus;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -130,7 +129,7 @@ public class CamelHumpMatcher extends PrefixMatcher {
|
||||
private MinusculeMatcher createMatcher(final boolean caseSensitive) {
|
||||
String prefix = applyMiddleMatching(myPrefix);
|
||||
|
||||
NameUtil.MatcherBuilder builder = FixingLayoutMatcherUtil.buildLayoutFixingMatcher(prefix);
|
||||
NameUtil.MatcherBuilder builder = NameUtil.buildMatcher(prefix);
|
||||
if (caseSensitive) {
|
||||
int setting = CodeInsightSettings.getInstance().getCompletionCaseSensitive();
|
||||
if (setting == CodeInsightSettings.FIRST_LETTER) {
|
||||
|
||||
@@ -18,6 +18,7 @@ import com.intellij.openapi.util.Key;
|
||||
import com.intellij.openapi.util.TextRange;
|
||||
import com.intellij.openapi.util.registry.Registry;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.psi.codeStyle.NameUtil;
|
||||
import com.intellij.ui.*;
|
||||
import com.intellij.ui.components.JBList;
|
||||
import com.intellij.ui.icons.RowIcon;
|
||||
@@ -28,7 +29,6 @@ import com.intellij.util.ObjectUtils;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.containers.FList;
|
||||
import com.intellij.util.ui.EmptyIcon;
|
||||
import com.intellij.util.ui.FixingLayoutMatcherUtil;
|
||||
import com.intellij.util.ui.JBUI;
|
||||
import com.intellij.util.ui.UIUtil;
|
||||
import com.intellij.util.ui.accessibility.AccessibleContextUtil;
|
||||
@@ -371,7 +371,7 @@ public final class LookupCellRenderer implements ListCellRenderer<LookupElement>
|
||||
}
|
||||
|
||||
public static FList<TextRange> getMatchingFragments(String prefix, String name) {
|
||||
return FixingLayoutMatcherUtil.buildLayoutFixingMatcher("*" + prefix).build().matchingFragments(name);
|
||||
return NameUtil.buildMatcher("*" + prefix).build().matchingFragments(name);
|
||||
}
|
||||
|
||||
private int setTypeTextLabel(LookupElement item,
|
||||
|
||||
+1
-2
@@ -16,7 +16,6 @@ import com.intellij.ui.popup.util.PopupState;
|
||||
import com.intellij.util.ArrayUtilRt;
|
||||
import com.intellij.util.text.Matcher;
|
||||
import com.intellij.util.ui.GraphicsUtil;
|
||||
import com.intellij.util.ui.KeyboardLayoutUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@@ -71,7 +70,7 @@ public class VariantsCompletionAction extends DumbAwareAction implements LightEd
|
||||
}
|
||||
|
||||
private static String[] calcWords(final String prefix, Editor editor) {
|
||||
final Matcher matcher = NameUtil.buildMatcher(prefix, 0, true, true, KeyboardLayoutUtil::getAsciiForChar);
|
||||
final Matcher matcher = NameUtil.buildMatcher(prefix, 0, true, true);
|
||||
final Set<String> words = new HashSet<>();
|
||||
CharSequence chars = editor.getDocument().getCharsSequence();
|
||||
|
||||
|
||||
@@ -35,13 +35,13 @@ import com.intellij.psi.PsiDirectory;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiFileSystemItem;
|
||||
import com.intellij.psi.codeStyle.MinusculeMatcher;
|
||||
import com.intellij.psi.codeStyle.NameUtil;
|
||||
import com.intellij.psi.impl.file.PsiDirectoryFactory;
|
||||
import com.intellij.ui.*;
|
||||
import com.intellij.ui.speedSearch.SpeedSearchUtil;
|
||||
import com.intellij.util.PlatformIcons;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.containers.FList;
|
||||
import com.intellij.util.ui.FixingLayoutMatcherUtil;
|
||||
import com.intellij.util.ui.UIUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -375,7 +375,7 @@ public class CreateDirectoryOrPackageAction extends AnAction implements DumbAwar
|
||||
protected void textChanged(@NotNull DocumentEvent e) {
|
||||
if (!locked) {
|
||||
String input = myTextField.getText();
|
||||
currentMatcher = FixingLayoutMatcherUtil.buildLayoutFixingMatcher("*" + input).build();
|
||||
currentMatcher = NameUtil.buildMatcher("*" + input).build();
|
||||
|
||||
List<CompletionItem> filtered =
|
||||
ContainerUtil.filter(items, item -> currentMatcher.matches(item.displayText));
|
||||
|
||||
@@ -11,7 +11,6 @@ import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.ui.playback.commands.ActionCommand;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.util.ObjectUtils;
|
||||
import com.intellij.util.ui.FixingLayoutMatcherUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.awt.*;
|
||||
|
||||
@@ -31,8 +31,6 @@ import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.containers.FList;
|
||||
import com.intellij.util.containers.JBIterable;
|
||||
import com.intellij.util.indexing.FindSymbolParameters;
|
||||
import com.intellij.util.ui.FixingLayoutMatcherUtil;
|
||||
import com.intellij.util.ui.KeyboardLayoutUtil;
|
||||
import one.util.streamex.IntStreamEx;
|
||||
import one.util.streamex.StreamEx;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -85,7 +83,7 @@ public class GotoFileItemProvider extends DefaultChooseByNameItemProvider {
|
||||
if (!processItemsForPattern(base, parameters, consumer, indicator)) {
|
||||
return false;
|
||||
}
|
||||
String fixedPattern = FixingLayoutMatcher.fixLayout(pattern, KeyboardLayoutUtil::getAsciiForChar);
|
||||
String fixedPattern = FixingLayoutMatcher.fixLayout(pattern);
|
||||
return fixedPattern == null || processItemsForPattern(base, parameters.withCompletePattern(fixedPattern), consumer, indicator);
|
||||
}
|
||||
finally {
|
||||
@@ -148,7 +146,7 @@ public class GotoFileItemProvider extends DefaultChooseByNameItemProvider {
|
||||
public static MinusculeMatcher getQualifiedNameMatcher(@NotNull String pattern) {
|
||||
pattern = "*" + StringUtil.replace(StringUtil.replace(pattern, "\\", "*\\*"), "/", "*/*");
|
||||
|
||||
return FixingLayoutMatcherUtil.buildLayoutFixingMatcher(pattern)
|
||||
return NameUtil.buildMatcher(pattern)
|
||||
.withCaseSensitivity(NameUtil.MatchingCaseSensitivity.NONE)
|
||||
.preferringStartMatches()
|
||||
.build();
|
||||
@@ -328,8 +326,7 @@ public class GotoFileItemProvider extends DefaultChooseByNameItemProvider {
|
||||
boolean preferStartMatches = from == 0 && !patternSuffix.startsWith("*");
|
||||
String matchPattern = (from > 0 ? " " : "*") + patternSuffix;
|
||||
|
||||
NameUtil.MatcherBuilder builder = FixingLayoutMatcherUtil.buildLayoutFixingMatcher(matchPattern)
|
||||
.withCaseSensitivity(NameUtil.MatchingCaseSensitivity.NONE);
|
||||
NameUtil.MatcherBuilder builder = NameUtil.buildMatcher(matchPattern).withCaseSensitivity(NameUtil.MatchingCaseSensitivity.NONE);
|
||||
if (preferStartMatches) {
|
||||
builder.preferringStartMatches();
|
||||
}
|
||||
|
||||
+1
-2
@@ -6,7 +6,6 @@ import com.intellij.openapi.actionSystem.DataContext;
|
||||
import com.intellij.openapi.progress.ProgressManager;
|
||||
import com.intellij.psi.codeStyle.NameUtil;
|
||||
import com.intellij.util.Function;
|
||||
import com.intellij.util.ui.FixingLayoutMatcherUtil;
|
||||
import gnu.trove.TIntArrayList;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -21,7 +20,7 @@ import java.util.Optional;
|
||||
*/
|
||||
public abstract class RunAnythingGroup {
|
||||
public static final Function<String, NameUtil.MatcherBuilder> RUN_ANYTHING_MATCHER_BUILDER =
|
||||
pattern -> FixingLayoutMatcherUtil.buildLayoutFixingMatcher("*" + pattern);
|
||||
pattern -> NameUtil.buildMatcher("*" + pattern);
|
||||
|
||||
/**
|
||||
* {@link #myMoreIndex} is a group's 'load more..' index in the main list.
|
||||
|
||||
+1
-2
@@ -16,7 +16,6 @@ import com.intellij.psi.codeStyle.MinusculeMatcher;
|
||||
import com.intellij.psi.codeStyle.NameUtil;
|
||||
import com.intellij.util.Processor;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.ui.FixingLayoutMatcherUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -63,7 +62,7 @@ public class RecentFilesSEContributor extends FileSearchEverywhereContributor {
|
||||
|
||||
String searchString = filterControlSymbols(pattern);
|
||||
boolean preferStartMatches = !searchString.startsWith("*");
|
||||
NameUtil.MatcherBuilder builder = FixingLayoutMatcherUtil.buildLayoutFixingMatcher("*" + searchString);
|
||||
NameUtil.MatcherBuilder builder = NameUtil.buildMatcher("*" + searchString);
|
||||
if (preferStartMatches) {
|
||||
builder = builder.preferringStartMatches();
|
||||
}
|
||||
|
||||
+2
-2
@@ -16,12 +16,12 @@ import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.openapi.wm.ToolWindowId;
|
||||
import com.intellij.psi.codeStyle.MinusculeMatcher;
|
||||
import com.intellij.psi.codeStyle.NameUtil;
|
||||
import com.intellij.ui.SimpleColoredComponent;
|
||||
import com.intellij.ui.SimpleTextAttributes;
|
||||
import com.intellij.ui.scale.JBUIScale;
|
||||
import com.intellij.util.ObjectUtils;
|
||||
import com.intellij.util.Processor;
|
||||
import com.intellij.util.ui.FixingLayoutMatcherUtil;
|
||||
import com.intellij.util.ui.JBUI;
|
||||
import com.intellij.util.ui.UIUtil;
|
||||
import org.intellij.lang.annotations.MagicConstant;
|
||||
@@ -120,7 +120,7 @@ public class RunConfigurationsSEContributor implements SearchEverywhereContribut
|
||||
if (StringUtil.isEmptyOrSpaces(pattern)) return;
|
||||
|
||||
pattern = filterString(pattern);
|
||||
MinusculeMatcher matcher = FixingLayoutMatcherUtil.buildLayoutFixingMatcher(pattern).build();
|
||||
MinusculeMatcher matcher = NameUtil.buildMatcher(pattern).build();
|
||||
for (ChooseRunConfigurationPopup.ItemWrapper wrapper : ChooseRunConfigurationPopup.createFlatSettingsList(myProject)) {
|
||||
if (matcher.matches(wrapper.getText()) && !consumer.process(wrapper)) {
|
||||
return;
|
||||
|
||||
+6
-7
@@ -6,12 +6,9 @@ import com.intellij.find.findUsages.PsiElement2UsageTargetAdapter;
|
||||
import com.intellij.icons.AllIcons;
|
||||
import com.intellij.ide.IdeBundle;
|
||||
import com.intellij.ide.SearchTopHitProvider;
|
||||
import com.intellij.ide.actions.BigPopupUI;
|
||||
import com.intellij.ide.actions.SearchEverywhereClassifier;
|
||||
import com.intellij.ide.actions.bigPopup.ShowFilterAction;
|
||||
import com.intellij.ide.actions.searcheverywhere.statistics.SearchEverywhereUsageTriggerCollector;
|
||||
import com.intellij.ide.actions.searcheverywhere.statistics.SearchFieldStatisticsCollector;
|
||||
import com.intellij.ide.util.ElementsChooser;
|
||||
import com.intellij.ide.util.gotoByName.GotoActionModel;
|
||||
import com.intellij.ide.util.gotoByName.QuickSearchComponent;
|
||||
import com.intellij.ide.util.gotoByName.SearchEverywhereConfiguration;
|
||||
@@ -60,7 +57,10 @@ import com.intellij.util.diff.Diff;
|
||||
import com.intellij.util.diff.FilesTooBigForDiffException;
|
||||
import com.intellij.util.messages.MessageBusConnection;
|
||||
import com.intellij.util.text.MatcherHolder;
|
||||
import com.intellij.util.ui.*;
|
||||
import com.intellij.util.ui.EmptyIcon;
|
||||
import com.intellij.util.ui.JBInsets;
|
||||
import com.intellij.util.ui.JBUI;
|
||||
import com.intellij.util.ui.UIUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.annotations.TestOnly;
|
||||
@@ -565,9 +565,8 @@ public final class SearchEverywhereUI extends SearchEverywhereUIBase implements
|
||||
.map(contributor -> contributor.filterControlSymbols(rawPattern))
|
||||
.orElse(rawPattern);
|
||||
|
||||
MinusculeMatcher matcher = NameUtil.buildMatcherWithFallback("*" + rawPattern, "*" + namePattern,
|
||||
NameUtil.MatchingCaseSensitivity.NONE,
|
||||
KeyboardLayoutUtil::getAsciiForChar);
|
||||
MinusculeMatcher matcher =
|
||||
NameUtil.buildMatcherWithFallback("*" + rawPattern, "*" + namePattern, NameUtil.MatchingCaseSensitivity.NONE);
|
||||
MatcherHolder.associateMatcher(myResultsList, matcher);
|
||||
|
||||
Map<SearchEverywhereContributor<?>, Integer> contributorsMap = new HashMap<>();
|
||||
|
||||
+5
-2
@@ -58,7 +58,10 @@ import com.intellij.util.diff.Diff;
|
||||
import com.intellij.util.diff.FilesTooBigForDiffException;
|
||||
import com.intellij.util.messages.MessageBusConnection;
|
||||
import com.intellij.util.text.MatcherHolder;
|
||||
import com.intellij.util.ui.*;
|
||||
import com.intellij.util.ui.EmptyIcon;
|
||||
import com.intellij.util.ui.JBInsets;
|
||||
import com.intellij.util.ui.JBUI;
|
||||
import com.intellij.util.ui.UIUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.annotations.TestOnly;
|
||||
@@ -553,7 +556,7 @@ public final class SearchEverywhereUIMixedResults extends SearchEverywhereUIBase
|
||||
.orElse(rawPattern);
|
||||
|
||||
MinusculeMatcher matcher =
|
||||
NameUtil.buildMatcherWithFallback("*" + rawPattern, "*" + namePattern, NameUtil.MatchingCaseSensitivity.NONE, KeyboardLayoutUtil::getAsciiForChar);
|
||||
NameUtil.buildMatcherWithFallback("*" + rawPattern, "*" + namePattern, NameUtil.MatchingCaseSensitivity.NONE);
|
||||
MatcherHolder.associateMatcher(myResultsList, matcher);
|
||||
|
||||
Map<SearchEverywhereContributor<?>, Integer> contributorsMap = new HashMap<>();
|
||||
|
||||
@@ -34,12 +34,12 @@ import com.intellij.psi.PsiDocumentManager;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.codeStyle.MinusculeMatcher;
|
||||
import com.intellij.psi.codeStyle.NameUtil;
|
||||
import com.intellij.psi.util.PsiUtilCore;
|
||||
import com.intellij.ui.*;
|
||||
import com.intellij.ui.docking.DockManager;
|
||||
import com.intellij.ui.speedSearch.SpeedSearchSupply;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.ui.FixingLayoutMatcherUtil;
|
||||
import com.intellij.util.ui.JBUI;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -483,6 +483,6 @@ public class FileStructureDialog extends DialogWrapper {
|
||||
|
||||
@NotNull
|
||||
public static MinusculeMatcher createFileStructureMatcher(@NotNull String pattern) {
|
||||
return FixingLayoutMatcherUtil.buildLayoutFixingMatcher(pattern).withSeparators(" ()").build();
|
||||
return NameUtil.buildMatcher(pattern).withSeparators(" ()").build();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -52,6 +52,7 @@ import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.StubBasedPsiElement;
|
||||
import com.intellij.psi.codeStyle.MinusculeMatcher;
|
||||
import com.intellij.psi.codeStyle.NameUtil;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.psi.util.PsiUtilCore;
|
||||
import com.intellij.ui.*;
|
||||
@@ -70,7 +71,6 @@ import com.intellij.util.*;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.containers.JBIterable;
|
||||
import com.intellij.util.text.TextRangeUtil;
|
||||
import com.intellij.util.ui.FixingLayoutMatcherUtil;
|
||||
import com.intellij.util.ui.JBUI;
|
||||
import com.intellij.util.ui.TextTransferable;
|
||||
import com.intellij.util.ui.UIUtil;
|
||||
@@ -253,7 +253,7 @@ public class FileStructurePopup implements Disposable, TreeActionsOwner {
|
||||
@NotNull
|
||||
@Override
|
||||
protected MinusculeMatcher createMatcher(@NotNull String pattern) {
|
||||
return FixingLayoutMatcherUtil.buildLayoutFixingMatcher(pattern).withSeparators(" ()").build();
|
||||
return NameUtil.buildMatcher(pattern).withSeparators(" ()").build();
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -1487,7 +1487,7 @@ public abstract class ChooseByNameBase implements ChooseByNameViewModel {
|
||||
|
||||
@NotNull
|
||||
private static Matcher buildPatternMatcher(@NotNull String pattern) {
|
||||
return FixingLayoutMatcherUtil.buildLayoutFixingMatcher(pattern, NameUtil.MatchingCaseSensitivity.NONE);
|
||||
return NameUtil.buildMatcher(pattern, NameUtil.MatchingCaseSensitivity.NONE);
|
||||
}
|
||||
|
||||
private static class HintLabel extends JLabel {
|
||||
|
||||
+2
-5
@@ -24,8 +24,6 @@ import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.containers.FList;
|
||||
import com.intellij.util.indexing.FindSymbolParameters;
|
||||
import com.intellij.util.indexing.IdFilter;
|
||||
import com.intellij.util.ui.FixingLayoutMatcherUtil;
|
||||
import com.intellij.util.ui.KeyboardLayoutUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@@ -322,8 +320,7 @@ public class DefaultChooseByNameItemProvider implements ChooseByNameInScopeItemP
|
||||
String fullRawPattern = buildFullPattern(base, parameters.getCompletePattern());
|
||||
String fullNamePattern = buildFullPattern(base, base.transformPattern(parameters.getCompletePattern()));
|
||||
|
||||
return NameUtil.buildMatcherWithFallback(fullRawPattern, fullNamePattern, NameUtil.MatchingCaseSensitivity.NONE,
|
||||
KeyboardLayoutUtil::getAsciiForChar);
|
||||
return NameUtil.buildMatcherWithFallback(fullRawPattern, fullNamePattern, NameUtil.MatchingCaseSensitivity.NONE);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@@ -460,7 +457,7 @@ public class DefaultChooseByNameItemProvider implements ChooseByNameInScopeItemP
|
||||
|
||||
@NotNull
|
||||
private static MinusculeMatcher buildPatternMatcher(@NotNull String pattern, boolean preferStartMatches) {
|
||||
NameUtil.MatcherBuilder builder = FixingLayoutMatcherUtil.buildLayoutFixingMatcher(pattern).withCaseSensitivity(NameUtil.MatchingCaseSensitivity.NONE);
|
||||
NameUtil.MatcherBuilder builder = NameUtil.buildMatcher(pattern).withCaseSensitivity(NameUtil.MatchingCaseSensitivity.NONE);
|
||||
if (preferStartMatches) {
|
||||
builder = builder.preferringStartMatches();
|
||||
}
|
||||
|
||||
@@ -28,7 +28,6 @@ import com.intellij.util.Processor;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.containers.JBIterable;
|
||||
import com.intellij.util.text.Matcher;
|
||||
import com.intellij.util.ui.FixingLayoutMatcherUtil;
|
||||
import gnu.trove.THashSet;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@@ -232,7 +231,7 @@ public final class GotoActionItemProvider implements ChooseByNameWeightedItemPro
|
||||
|
||||
@NotNull
|
||||
static Matcher buildMatcher(String pattern) {
|
||||
return pattern.contains(" ") ? new WordPrefixMatcher(pattern) : FixingLayoutMatcherUtil.buildLayoutFixingMatcher("*" + pattern, NameUtil.MatchingCaseSensitivity.NONE);
|
||||
return pattern.contains(" ") ? new WordPrefixMatcher(pattern) : NameUtil.buildMatcher("*" + pattern, NameUtil.MatchingCaseSensitivity.NONE);
|
||||
}
|
||||
|
||||
private boolean processIntentions(String pattern, Processor<? super MatchedValue> consumer, DataContext dataContext) {
|
||||
|
||||
@@ -23,7 +23,6 @@ import com.intellij.psi.codeStyle.MinusculeMatcher;
|
||||
import com.intellij.psi.codeStyle.NameUtil;
|
||||
import com.intellij.ui.IdeUICustomization;
|
||||
import com.intellij.util.containers.JBIterable;
|
||||
import com.intellij.util.ui.FixingLayoutMatcherUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@@ -204,7 +203,7 @@ public class GotoFileModel extends FilteringGotoByModel<FileTypeRef> implements
|
||||
String sanitized = GotoFileItemProvider
|
||||
.getSanitizedPattern(((MinusculeMatcher)defaultMatchers.nameMatcher).getPattern(), model);
|
||||
for (int i = sanitized.lastIndexOf('/') + 1; i < sanitized.length() - 1; i++) {
|
||||
MinusculeMatcher nameMatcher = FixingLayoutMatcherUtil.buildLayoutFixingMatcher("*" + sanitized.substring(i), NameUtil.MatchingCaseSensitivity.NONE);
|
||||
MinusculeMatcher nameMatcher = NameUtil.buildMatcher("*" + sanitized.substring(i), NameUtil.MatchingCaseSensitivity.NONE);
|
||||
if (nameMatcher.matches(shortName)) {
|
||||
String locationPattern = FileUtil.toSystemDependentName(StringUtil.trimEnd(sanitized.substring(0, i), "/"));
|
||||
return new PsiElementListCellRenderer.ItemMatchers(nameMatcher, GotoFileItemProvider.getQualifiedNameMatcher(locationPattern));
|
||||
|
||||
@@ -3,10 +3,11 @@ package com.intellij.ui.speedSearch;
|
||||
|
||||
import com.intellij.openapi.keymap.KeymapUtil;
|
||||
import com.intellij.openapi.util.TextRange;
|
||||
import com.intellij.psi.codeStyle.AllOccurrencesMatcher;
|
||||
import com.intellij.psi.codeStyle.FixingLayoutMatcher;
|
||||
import com.intellij.psi.codeStyle.MinusculeMatcher;
|
||||
import com.intellij.psi.codeStyle.NameUtil;
|
||||
import com.intellij.util.text.Matcher;
|
||||
import com.intellij.util.ui.FixingLayoutMatcherUtil;
|
||||
import com.intellij.util.ui.UIUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -130,8 +131,8 @@ public class SpeedSearch extends SpeedSearchSupply implements KeyListener {
|
||||
String pattern = "*" + string;
|
||||
NameUtil.MatchingCaseSensitivity caseSensitivity = NameUtil.MatchingCaseSensitivity.NONE;
|
||||
String separators = "";
|
||||
myMatcher = myMatchAllOccurrences ? FixingLayoutMatcherUtil.createAllOccurrencesMatcher(pattern, caseSensitivity, separators)
|
||||
: FixingLayoutMatcherUtil.create(pattern, caseSensitivity, separators);
|
||||
myMatcher = myMatchAllOccurrences ? AllOccurrencesMatcher.create(pattern, caseSensitivity, separators)
|
||||
: new FixingLayoutMatcher(pattern, caseSensitivity, separators);
|
||||
}
|
||||
catch (Exception e) {
|
||||
myMatcher = null;
|
||||
|
||||
@@ -19,7 +19,6 @@ import com.intellij.ui.speedSearch.SpeedSearchSupply;
|
||||
import com.intellij.ui.speedSearch.SpeedSearchUtil;
|
||||
import com.intellij.util.text.DateFormatUtil;
|
||||
import com.intellij.util.text.Matcher;
|
||||
import com.intellij.util.ui.FixingLayoutMatcherUtil;
|
||||
import com.intellij.util.ui.JBUI;
|
||||
import com.intellij.util.ui.StartupUiUtil;
|
||||
import com.intellij.util.ui.UIUtil;
|
||||
@@ -105,7 +104,7 @@ public class PluginsTableRenderer extends DefaultTableCellRenderer {
|
||||
UIUtil.getListForeground(isSelected),
|
||||
JBColor.RED,
|
||||
SimpleTextAttributes.STYLE_PLAIN);
|
||||
Matcher matcher = FixingLayoutMatcherUtil.buildLayoutFixingMatcher("*" + query, NameUtil.MatchingCaseSensitivity.NONE);
|
||||
Matcher matcher = NameUtil.buildMatcher("*" + query, NameUtil.MatchingCaseSensitivity.NONE);
|
||||
|
||||
String category = myPluginDescriptor.getCategory() == null ? null : StringUtil.toUpperCase(myPluginDescriptor.getCategory());
|
||||
if (category != null) {
|
||||
|
||||
+1
-2
@@ -26,7 +26,6 @@ import com.intellij.ui.ListActions;
|
||||
import com.intellij.ui.ScrollingUtil;
|
||||
import com.intellij.ui.components.JBList;
|
||||
import com.intellij.ui.popup.list.GroupedItemsListRenderer;
|
||||
import com.intellij.util.ui.FixingLayoutMatcherUtil;
|
||||
import com.intellij.util.ui.update.LazyUiDisposable;
|
||||
import com.intellij.util.ui.update.MergingUpdateQueue;
|
||||
import com.intellij.util.ui.update.UiNotifyConnector;
|
||||
@@ -580,7 +579,7 @@ public abstract class FileTextFieldImpl implements FileLookup, Disposable, FileT
|
||||
}
|
||||
|
||||
private static MinusculeMatcher createMatcher(String prefix) {
|
||||
return FixingLayoutMatcherUtil.buildLayoutFixingMatcher("*" + prefix, NameUtil.MatchingCaseSensitivity.NONE);
|
||||
return NameUtil.buildMatcher("*" + prefix, NameUtil.MatchingCaseSensitivity.NONE);
|
||||
}
|
||||
|
||||
private void addMacroPaths(final CompletionResult result, final String typedText) {
|
||||
|
||||
+15
-2
@@ -35,6 +35,7 @@ import com.intellij.openapi.ui.popup.util.BaseListPopupStep;
|
||||
import com.intellij.openapi.util.Disposer;
|
||||
import com.intellij.openapi.util.Pair;
|
||||
import com.intellij.openapi.util.SystemInfo;
|
||||
import com.intellij.openapi.util.TextRange;
|
||||
import com.intellij.openapi.util.registry.Registry;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.openapi.wm.StatusBar;
|
||||
@@ -50,7 +51,7 @@ import com.intellij.util.Alarm;
|
||||
import com.intellij.util.ArrayUtilRt;
|
||||
import com.intellij.util.ReflectionUtil;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.ui.KeyboardLayoutUtil;
|
||||
import com.intellij.util.text.KeyboardLayoutUtil;
|
||||
import com.intellij.util.ui.MacUIUtil;
|
||||
import com.intellij.util.ui.UIUtil;
|
||||
import org.jetbrains.annotations.Nls;
|
||||
@@ -132,7 +133,10 @@ public final class IdeKeyEventDispatcher implements Disposable {
|
||||
*/
|
||||
public boolean dispatchKeyEvent(final KeyEvent e){
|
||||
if (myDisposed) return false;
|
||||
KeyboardLayoutUtil.storeAsciiForChar(e);
|
||||
|
||||
if (e.getID() == KeyEvent.KEY_PRESSED) {
|
||||
storeAsciiForChar(e);
|
||||
}
|
||||
|
||||
if (e.isConsumed()) {
|
||||
return false;
|
||||
@@ -240,6 +244,15 @@ public final class IdeKeyEventDispatcher implements Disposable {
|
||||
}
|
||||
}
|
||||
|
||||
private static void storeAsciiForChar(@NotNull KeyEvent e) {
|
||||
char aChar = e.getKeyChar();
|
||||
if (aChar == KeyEvent.CHAR_UNDEFINED) return;
|
||||
int mods = e.getModifiers();
|
||||
if ((mods & ~InputEvent.SHIFT_MASK & ~InputEvent.SHIFT_DOWN_MASK) != 0) return;
|
||||
|
||||
KeyboardLayoutUtil.storeAsciiForChar(e.getKeyCode(), aChar, TextRange.create(KeyEvent.VK_A, KeyEvent.VK_Z));
|
||||
}
|
||||
|
||||
private static boolean isSpeedSearchEditing(KeyEvent e) {
|
||||
int keyCode = e.getKeyCode();
|
||||
if (keyCode == KeyEvent.VK_BACK_SPACE) {
|
||||
|
||||
@@ -322,7 +322,7 @@ public class ShowUIDefaultsAction extends AnAction implements DumbAware {
|
||||
return;
|
||||
}
|
||||
|
||||
MinusculeMatcher matcher = FixingLayoutMatcherUtil.buildLayoutFixingMatcher("*" + mySearchField.getText(), NameUtil.MatchingCaseSensitivity.NONE);
|
||||
MinusculeMatcher matcher = NameUtil.buildMatcher("*" + mySearchField.getText(), NameUtil.MatchingCaseSensitivity.NONE);
|
||||
model.setFilter(pair -> {
|
||||
Object obj = ((Pair)pair).second;
|
||||
String value;
|
||||
|
||||
@@ -4,8 +4,8 @@ package com.intellij.ui;
|
||||
import com.intellij.openapi.util.TextRange;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.psi.codeStyle.MinusculeMatcher;
|
||||
import com.intellij.psi.codeStyle.NameUtil;
|
||||
import com.intellij.util.text.NameUtilCore;
|
||||
import com.intellij.util.ui.FixingLayoutMatcherUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@@ -56,7 +56,7 @@ public class SpeedSearchComparator {
|
||||
|
||||
@NotNull
|
||||
protected MinusculeMatcher createMatcher(@NotNull String pattern) {
|
||||
return FixingLayoutMatcherUtil.buildLayoutFixingMatcher(pattern).build();
|
||||
return NameUtil.buildMatcher(pattern).build();
|
||||
}
|
||||
|
||||
public String getRecentSearchText() {
|
||||
|
||||
+2
-3
@@ -6,7 +6,6 @@ import com.intellij.psi.codeStyle.MinusculeMatcher;
|
||||
import com.intellij.psi.codeStyle.NameUtil;
|
||||
import com.intellij.testFramework.PlatformTestUtil;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.ui.FixingLayoutMatcherUtil;
|
||||
import junit.framework.TestCase;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.junit.Assert;
|
||||
@@ -26,10 +25,10 @@ public class MinusculeMatcherPerformanceTest extends TestCase {
|
||||
final List<MinusculeMatcher> nonMatching = new ArrayList<>();
|
||||
|
||||
for (String s : ContainerUtil.ar("*", "*i", "*a", "*u", "T", "ti", longName, longName.substring(0, 20))) {
|
||||
matching.add(FixingLayoutMatcherUtil.buildLayoutFixingMatcher(s, NameUtil.MatchingCaseSensitivity.NONE));
|
||||
matching.add(NameUtil.buildMatcher(s, NameUtil.MatchingCaseSensitivity.NONE));
|
||||
}
|
||||
for (String s : ContainerUtil.ar("A", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "tag")) {
|
||||
nonMatching.add(FixingLayoutMatcherUtil.buildLayoutFixingMatcher(s, NameUtil.MatchingCaseSensitivity.NONE));
|
||||
nonMatching.add(NameUtil.buildMatcher(s, NameUtil.MatchingCaseSensitivity.NONE));
|
||||
}
|
||||
|
||||
PlatformTestUtil.startPerformanceTest("Matching", 5_500, () -> {
|
||||
|
||||
@@ -4,13 +4,12 @@ package com.intellij.psi.util;
|
||||
|
||||
import com.intellij.ide.util.FileStructureDialog;
|
||||
import com.intellij.openapi.util.TextRange;
|
||||
import com.intellij.psi.codeStyle.AllOccurrencesMatcher;
|
||||
import com.intellij.psi.codeStyle.MinusculeMatcher;
|
||||
import com.intellij.psi.codeStyle.NameUtil;
|
||||
import com.intellij.testFramework.UsefulTestCase;
|
||||
import com.intellij.ui.SpeedSearchComparator;
|
||||
import com.intellij.util.text.Matcher;
|
||||
import com.intellij.util.ui.FixingLayoutMatcherUtil;
|
||||
import com.intellij.util.ui.KeyboardLayoutUtil;
|
||||
import junit.framework.TestCase;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
|
||||
@@ -129,7 +128,7 @@ public class NameUtilMatchingTest extends TestCase {
|
||||
}
|
||||
|
||||
private static MinusculeMatcher caseInsensitiveMatcher(String pattern) {
|
||||
return FixingLayoutMatcherUtil.buildLayoutFixingMatcher(pattern, NameUtil.MatchingCaseSensitivity.NONE);
|
||||
return NameUtil.buildMatcher(pattern, NameUtil.MatchingCaseSensitivity.NONE);
|
||||
}
|
||||
|
||||
public void testStartDot() {
|
||||
@@ -340,7 +339,7 @@ public class NameUtilMatchingTest extends TestCase {
|
||||
}
|
||||
|
||||
private static Matcher firstLetterMatcher(String pattern) {
|
||||
return NameUtil.buildMatcher(pattern, NameUtil.MatchingCaseSensitivity.FIRST_LETTER, KeyboardLayoutUtil::getAsciiForChar);
|
||||
return NameUtil.buildMatcher(pattern, NameUtil.MatchingCaseSensitivity.FIRST_LETTER);
|
||||
}
|
||||
|
||||
public void testSpaceInCompletionPrefix() {
|
||||
@@ -445,53 +444,53 @@ public class NameUtilMatchingTest extends TestCase {
|
||||
}
|
||||
|
||||
public void testMinusculeAllImportant() {
|
||||
assertTrue(NameUtil.buildMatcher("WebLogic", NameUtil.MatchingCaseSensitivity.ALL, null).matches("WebLogic"));
|
||||
assertFalse(NameUtil.buildMatcher("webLogic", NameUtil.MatchingCaseSensitivity.ALL, null).matches("weblogic"));
|
||||
assertFalse(NameUtil.buildMatcher("FOO", NameUtil.MatchingCaseSensitivity.ALL, null).matches("foo"));
|
||||
assertFalse(NameUtil.buildMatcher("foo", NameUtil.MatchingCaseSensitivity.ALL, null).matches("fOO"));
|
||||
assertFalse(NameUtil.buildMatcher("Wl", NameUtil.MatchingCaseSensitivity.ALL, null).matches("WebLogic"));
|
||||
assertTrue(NameUtil.buildMatcher("WL", NameUtil.MatchingCaseSensitivity.ALL, null).matches("WebLogic"));
|
||||
assertFalse(NameUtil.buildMatcher("WL", NameUtil.MatchingCaseSensitivity.ALL, null).matches("Weblogic"));
|
||||
assertFalse(NameUtil.buildMatcher("WL", NameUtil.MatchingCaseSensitivity.ALL, null).matches("weblogic"));
|
||||
assertFalse(NameUtil.buildMatcher("webLogic", NameUtil.MatchingCaseSensitivity.ALL, null).matches("WebLogic"));
|
||||
assertFalse(NameUtil.buildMatcher("Str", NameUtil.MatchingCaseSensitivity.ALL, null).matches("SomeThingRidiculous"));
|
||||
assertFalse(NameUtil.buildMatcher("*list*", NameUtil.MatchingCaseSensitivity.ALL, null).matches("List"));
|
||||
assertFalse(NameUtil.buildMatcher("*list*", NameUtil.MatchingCaseSensitivity.ALL, null).matches("AbstractList"));
|
||||
assertFalse(NameUtil.buildMatcher("java.util.list", NameUtil.MatchingCaseSensitivity.ALL, null).matches("java.util.List"));
|
||||
assertFalse(NameUtil.buildMatcher("java.util.list", NameUtil.MatchingCaseSensitivity.ALL, null).matches("java.util.AbstractList"));
|
||||
assertTrue(NameUtil.buildMatcher("WebLogic", NameUtil.MatchingCaseSensitivity.ALL).matches("WebLogic"));
|
||||
assertFalse(NameUtil.buildMatcher("webLogic", NameUtil.MatchingCaseSensitivity.ALL).matches("weblogic"));
|
||||
assertFalse(NameUtil.buildMatcher("FOO", NameUtil.MatchingCaseSensitivity.ALL).matches("foo"));
|
||||
assertFalse(NameUtil.buildMatcher("foo", NameUtil.MatchingCaseSensitivity.ALL).matches("fOO"));
|
||||
assertFalse(NameUtil.buildMatcher("Wl", NameUtil.MatchingCaseSensitivity.ALL).matches("WebLogic"));
|
||||
assertTrue(NameUtil.buildMatcher("WL", NameUtil.MatchingCaseSensitivity.ALL).matches("WebLogic"));
|
||||
assertFalse(NameUtil.buildMatcher("WL", NameUtil.MatchingCaseSensitivity.ALL).matches("Weblogic"));
|
||||
assertFalse(NameUtil.buildMatcher("WL", NameUtil.MatchingCaseSensitivity.ALL).matches("weblogic"));
|
||||
assertFalse(NameUtil.buildMatcher("webLogic", NameUtil.MatchingCaseSensitivity.ALL).matches("WebLogic"));
|
||||
assertFalse(NameUtil.buildMatcher("Str", NameUtil.MatchingCaseSensitivity.ALL).matches("SomeThingRidiculous"));
|
||||
assertFalse(NameUtil.buildMatcher("*list*", NameUtil.MatchingCaseSensitivity.ALL).matches("List"));
|
||||
assertFalse(NameUtil.buildMatcher("*list*", NameUtil.MatchingCaseSensitivity.ALL).matches("AbstractList"));
|
||||
assertFalse(NameUtil.buildMatcher("java.util.list", NameUtil.MatchingCaseSensitivity.ALL).matches("java.util.List"));
|
||||
assertFalse(NameUtil.buildMatcher("java.util.list", NameUtil.MatchingCaseSensitivity.ALL).matches("java.util.AbstractList"));
|
||||
}
|
||||
|
||||
public void testMatchingFragments() {
|
||||
@NonNls String sample = "NoClassDefFoundException";
|
||||
// 0 2 7 10 15 21
|
||||
UsefulTestCase.assertOrderedEquals(NameUtil.buildMatcher("ncldfou*ion", NameUtil.MatchingCaseSensitivity.NONE, null).matchingFragments(sample),
|
||||
UsefulTestCase.assertOrderedEquals(NameUtil.buildMatcher("ncldfou*ion", NameUtil.MatchingCaseSensitivity.NONE).matchingFragments(sample),
|
||||
TextRange.from(0, 1), TextRange.from(2, 2), TextRange.from(7, 1), TextRange.from(10, 3), TextRange.from(21, 3));
|
||||
|
||||
sample = "doGet(HttpServletRequest, HttpServletResponse):void";
|
||||
// 0 22
|
||||
UsefulTestCase.assertOrderedEquals(NameUtil.buildMatcher("d*st", NameUtil.MatchingCaseSensitivity.NONE, null).matchingFragments(sample),
|
||||
UsefulTestCase.assertOrderedEquals(NameUtil.buildMatcher("d*st", NameUtil.MatchingCaseSensitivity.NONE).matchingFragments(sample),
|
||||
TextRange.from(0, 1), TextRange.from(22, 2));
|
||||
UsefulTestCase.assertOrderedEquals(NameUtil.buildMatcher("doge*st", NameUtil.MatchingCaseSensitivity.NONE, null).matchingFragments(sample),
|
||||
UsefulTestCase.assertOrderedEquals(NameUtil.buildMatcher("doge*st", NameUtil.MatchingCaseSensitivity.NONE).matchingFragments(sample),
|
||||
TextRange.from(0, 4), TextRange.from(22, 2));
|
||||
|
||||
sample = "_test";
|
||||
UsefulTestCase.assertOrderedEquals(NameUtil.buildMatcher("_", NameUtil.MatchingCaseSensitivity.NONE, null).matchingFragments(sample),
|
||||
UsefulTestCase.assertOrderedEquals(NameUtil.buildMatcher("_", NameUtil.MatchingCaseSensitivity.NONE).matchingFragments(sample),
|
||||
TextRange.from(0, 1));
|
||||
UsefulTestCase.assertOrderedEquals(NameUtil.buildMatcher("_t", NameUtil.MatchingCaseSensitivity.NONE, null).matchingFragments(sample),
|
||||
UsefulTestCase.assertOrderedEquals(NameUtil.buildMatcher("_t", NameUtil.MatchingCaseSensitivity.NONE).matchingFragments(sample),
|
||||
TextRange.from(0, 2));
|
||||
}
|
||||
|
||||
public void testMatchingFragmentsSorted() {
|
||||
@NonNls String sample = "SWUPGRADEHDLRFSPR7TEST";
|
||||
// 0 9 12
|
||||
UsefulTestCase.assertOrderedEquals(NameUtil.buildMatcher("SWU*H*R", NameUtil.MatchingCaseSensitivity.NONE, null).matchingFragments(sample),
|
||||
UsefulTestCase.assertOrderedEquals(NameUtil.buildMatcher("SWU*H*R", NameUtil.MatchingCaseSensitivity.NONE).matchingFragments(sample),
|
||||
TextRange.from(0, 3), TextRange.from(9, 1), TextRange.from(12, 1));
|
||||
}
|
||||
|
||||
public void testPreferCapsMatching() {
|
||||
String sample = "getCurrentUser";
|
||||
// 0 4 10
|
||||
UsefulTestCase.assertOrderedEquals(NameUtil.buildMatcher("getCU", NameUtil.MatchingCaseSensitivity.NONE, null).matchingFragments(sample),
|
||||
UsefulTestCase.assertOrderedEquals(NameUtil.buildMatcher("getCU", NameUtil.MatchingCaseSensitivity.NONE).matchingFragments(sample),
|
||||
TextRange.from(0, 4), TextRange.from(10, 1));
|
||||
}
|
||||
|
||||
@@ -554,7 +553,7 @@ public class NameUtilMatchingTest extends TestCase {
|
||||
}
|
||||
|
||||
public void testHonorFirstLetterCaseInCompletion() {
|
||||
MinusculeMatcher matcher = NameUtil.buildMatcher("*pim", NameUtil.MatchingCaseSensitivity.NONE, null);
|
||||
MinusculeMatcher matcher = NameUtil.buildMatcher("*pim", NameUtil.MatchingCaseSensitivity.NONE);
|
||||
int iLess = matcher.matchingDegree("PImageDecoder", true);
|
||||
int iMore = matcher.matchingDegree("posIdMap", true);
|
||||
assertTrue(iLess < iMore);
|
||||
@@ -609,7 +608,7 @@ public class NameUtilMatchingTest extends TestCase {
|
||||
@NonNls String less,
|
||||
@NonNls String more,
|
||||
NameUtil.MatchingCaseSensitivity sensitivity) {
|
||||
assertPreference(NameUtil.buildMatcher(pattern, sensitivity, null), less, more);
|
||||
assertPreference(NameUtil.buildMatcher(pattern, sensitivity), less, more);
|
||||
}
|
||||
|
||||
private static void assertPreference(MinusculeMatcher matcher, String less, String more) {
|
||||
@@ -622,7 +621,7 @@ public class NameUtilMatchingTest extends TestCase {
|
||||
@NonNls String name1,
|
||||
@NonNls String name2,
|
||||
NameUtil.MatchingCaseSensitivity sensitivity) {
|
||||
MinusculeMatcher matcher = NameUtil.buildMatcher(pattern, sensitivity, null);
|
||||
MinusculeMatcher matcher = NameUtil.buildMatcher(pattern, sensitivity);
|
||||
assertEquals(matcher.matchingDegree(name1), matcher.matchingDegree(name2));
|
||||
}
|
||||
|
||||
@@ -658,13 +657,13 @@ public class NameUtilMatchingTest extends TestCase {
|
||||
|
||||
public void testMatchingAllOccurrences() {
|
||||
String text = "some text";
|
||||
MinusculeMatcher matcher = FixingLayoutMatcherUtil.createAllOccurrencesMatcher("*e", NameUtil.MatchingCaseSensitivity.NONE, "");
|
||||
MinusculeMatcher matcher = AllOccurrencesMatcher.create("*e", NameUtil.MatchingCaseSensitivity.NONE, "");
|
||||
UsefulTestCase.assertOrderedEquals(matcher.matchingFragments(text),
|
||||
new TextRange(3, 4), new TextRange(6, 7));
|
||||
}
|
||||
|
||||
public void testCamelHumpWinsOverConsecutiveCaseMismatch() {
|
||||
UsefulTestCase.assertSize(3, NameUtil.buildMatcher("GEN", NameUtil.MatchingCaseSensitivity.NONE, null).matchingFragments("GetExtendedName"));
|
||||
UsefulTestCase.assertSize(3, NameUtil.buildMatcher("GEN", NameUtil.MatchingCaseSensitivity.NONE).matchingFragments("GetExtendedName"));
|
||||
|
||||
assertPreference("GEN", "GetName", "GetExtendedName");
|
||||
assertPreference("*GEN", "GetName", "GetExtendedName");
|
||||
|
||||
@@ -20,7 +20,6 @@ import com.intellij.tasks.TaskRepository;
|
||||
import com.intellij.util.NullableFunction;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.text.DateFormatUtil;
|
||||
import com.intellij.util.ui.FixingLayoutMatcherUtil;
|
||||
import org.jdom.Element;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -281,7 +280,7 @@ public class TaskUtil {
|
||||
builder.append("* ");
|
||||
}
|
||||
|
||||
return FixingLayoutMatcherUtil.buildLayoutFixingMatcher(builder.toString(), NameUtil.MatchingCaseSensitivity.NONE);
|
||||
return NameUtil.buildMatcher(builder.toString(), NameUtil.MatchingCaseSensitivity.NONE);
|
||||
}
|
||||
|
||||
static String updateToVelocity(String format) {
|
||||
|
||||
+7
-5
@@ -8,7 +8,6 @@ import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.function.Function;
|
||||
|
||||
/**
|
||||
* {@link FixingLayoutMatcher} extension that returns all matches (not just the first one)
|
||||
@@ -17,11 +16,10 @@ import java.util.function.Function;
|
||||
public class AllOccurrencesMatcher extends MinusculeMatcher {
|
||||
private final MinusculeMatcher delegate;
|
||||
|
||||
public AllOccurrencesMatcher(@NotNull String pattern,
|
||||
private AllOccurrencesMatcher(@NotNull String pattern,
|
||||
@NotNull NameUtil.MatchingCaseSensitivity options,
|
||||
String hardSeparators,
|
||||
@Nullable Function<Character, Character> asciiToCharConverter) {
|
||||
delegate = new FixingLayoutMatcher(pattern, options, hardSeparators, asciiToCharConverter);
|
||||
String hardSeparators) {
|
||||
delegate = new FixingLayoutMatcher(pattern, options, hardSeparators);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@@ -67,4 +65,8 @@ public class AllOccurrencesMatcher extends MinusculeMatcher {
|
||||
"delegate=" + delegate +
|
||||
'}';
|
||||
}
|
||||
|
||||
public static MinusculeMatcher create(@NotNull String pattern, @NotNull NameUtil.MatchingCaseSensitivity options, String hardSeparators) {
|
||||
return new AllOccurrencesMatcher(pattern, options, hardSeparators);
|
||||
}
|
||||
}
|
||||
|
||||
+6
-19
@@ -3,38 +3,26 @@
|
||||
// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
package com.intellij.psi.codeStyle;
|
||||
|
||||
import com.intellij.util.text.KeyboardLayoutUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.function.Function;
|
||||
|
||||
/**
|
||||
* @author Dmitry Avdeev
|
||||
* @see NameUtil#buildMatcher(String)
|
||||
*/
|
||||
public class FixingLayoutMatcher extends MatcherWithFallback {
|
||||
/**
|
||||
* @deprecated use {@link this#FixingLayoutMatcher(String, NameUtil.MatchingCaseSensitivity, String, Function)}
|
||||
*/
|
||||
@Deprecated
|
||||
public FixingLayoutMatcher(@NotNull String pattern,
|
||||
@NotNull NameUtil.MatchingCaseSensitivity options,
|
||||
String hardSeparators) {
|
||||
this(pattern, options, hardSeparators, null);
|
||||
}
|
||||
|
||||
public FixingLayoutMatcher(@NotNull String pattern,
|
||||
@NotNull NameUtil.MatchingCaseSensitivity options,
|
||||
String hardSeparators,
|
||||
@Nullable Function<Character, Character> asciiToCharConverter) {
|
||||
super(
|
||||
new MinusculeMatcherImpl(pattern, options, hardSeparators),
|
||||
withFixedLayout(pattern, options, hardSeparators, asciiToCharConverter)
|
||||
withFixedLayout(pattern, options, hardSeparators)
|
||||
);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static String fixLayout(String pattern, @Nullable Function<Character, Character> asciiToCharConverter) {
|
||||
public static String fixLayout(String pattern) {
|
||||
boolean hasLetters = false;
|
||||
boolean onlyWrongLetters = true;
|
||||
for (int i = 0; i < pattern.length(); i++) {
|
||||
@@ -52,7 +40,7 @@ public class FixingLayoutMatcher extends MatcherWithFallback {
|
||||
char[] alternatePattern = new char[pattern.length()];
|
||||
for (int i = 0; i < pattern.length(); i++) {
|
||||
char c = pattern.charAt(i);
|
||||
Character newC = asciiToCharConverter != null ? asciiToCharConverter.apply(c) : null;
|
||||
Character newC = KeyboardLayoutUtil.getAsciiForChar(c);
|
||||
alternatePattern[i] = newC == null ? c : newC;
|
||||
}
|
||||
|
||||
@@ -64,9 +52,8 @@ public class FixingLayoutMatcher extends MatcherWithFallback {
|
||||
@Nullable
|
||||
private static MinusculeMatcher withFixedLayout(@NotNull String pattern,
|
||||
@NotNull NameUtil.MatchingCaseSensitivity options,
|
||||
String hardSeparators,
|
||||
@Nullable Function<Character, Character> asciiToCharConverter) {
|
||||
String s = fixLayout(pattern, asciiToCharConverter);
|
||||
String hardSeparators) {
|
||||
String s = fixLayout(pattern);
|
||||
if (s != null && !s.equals(pattern)) {
|
||||
return new MinusculeMatcherImpl(s, options, hardSeparators);
|
||||
}
|
||||
|
||||
+2
-9
@@ -2,18 +2,11 @@
|
||||
package com.intellij.psi.codeStyle;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.function.Function;
|
||||
|
||||
class FixingLayoutTypoTolerantMatcher {
|
||||
|
||||
static MinusculeMatcher create(@NotNull String pattern,
|
||||
@NotNull NameUtil.MatchingCaseSensitivity options,
|
||||
String hardSeparators,
|
||||
@Nullable Function<Character, Character> asciiToCharConverter) {
|
||||
static MinusculeMatcher create(@NotNull String pattern, @NotNull NameUtil.MatchingCaseSensitivity options, String hardSeparators) {
|
||||
TypoTolerantMatcher mainMatcher = new TypoTolerantMatcher(pattern, options, hardSeparators);
|
||||
String s = FixingLayoutMatcher.fixLayout(pattern, asciiToCharConverter);
|
||||
String s = FixingLayoutMatcher.fixLayout(pattern);
|
||||
|
||||
if (s != null && !s.equals(pattern)) {
|
||||
TypoTolerantMatcher fallbackMatcher = new TypoTolerantMatcher(s, options, hardSeparators);
|
||||
|
||||
@@ -5,7 +5,6 @@ import com.intellij.openapi.util.text.Strings;
|
||||
import com.intellij.util.text.NameUtilCore;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
@@ -272,40 +271,23 @@ public final class NameUtil {
|
||||
boolean matches(@NotNull String name);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @deprecated use {@link this#buildMatcher(String, int, boolean, boolean, Function)} instead.
|
||||
* <p>
|
||||
* For AWT application {@link com.intellij.util.ui.KeyboardLayoutUtil#getAsciiForChar(char)} can be used as a converter.
|
||||
*/
|
||||
@NotNull
|
||||
@Deprecated
|
||||
public static com.intellij.util.text.Matcher buildMatcher(@NotNull String pattern, int exactPrefixLen,
|
||||
boolean allowToUpper, boolean allowToLower) {
|
||||
return buildMatcher(pattern, exactPrefixLen, allowToUpper, allowToLower, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* For AWT application {@link com.intellij.util.ui.KeyboardLayoutUtil#getAsciiForChar(char)} can be used as a chars converter.
|
||||
*/
|
||||
public static com.intellij.util.text.Matcher buildMatcher(@NotNull String pattern,
|
||||
int exactPrefixLen,
|
||||
boolean allowToUpper,
|
||||
boolean allowToLower,
|
||||
@Nullable Function<Character, Character> asciiToCharConverter) {
|
||||
boolean allowToLower) {
|
||||
MatchingCaseSensitivity options = !allowToLower && !allowToUpper ? MatchingCaseSensitivity.ALL
|
||||
: exactPrefixLen > 0 ? MatchingCaseSensitivity.FIRST_LETTER
|
||||
: MatchingCaseSensitivity.NONE;
|
||||
return buildMatcher(pattern, options, asciiToCharConverter);
|
||||
return buildMatcher(pattern, options);
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated Parameter {@code lowerCaseWords} is ignored, same as {@link #buildMatcher(String, int, boolean, boolean, Function)} )}
|
||||
* @deprecated Parameter {@code lowerCaseWords} is ignored, same as {@link #buildMatcher(String, int, boolean, boolean)} )}
|
||||
*/
|
||||
@Deprecated
|
||||
@NotNull
|
||||
public static com.intellij.util.text.Matcher buildMatcher(@NotNull String pattern, int exactPrefixLen, boolean allowToUpper, boolean allowToLower, @SuppressWarnings("unused") boolean lowerCaseWords) {
|
||||
return buildMatcher(pattern, exactPrefixLen, allowToUpper, allowToLower, null);
|
||||
return buildMatcher(pattern, exactPrefixLen, allowToUpper, allowToLower);
|
||||
}
|
||||
|
||||
public static class MatcherBuilder {
|
||||
@@ -314,7 +296,6 @@ public final class NameUtil {
|
||||
private MatchingCaseSensitivity caseSensitivity = MatchingCaseSensitivity.NONE;
|
||||
private boolean typoTolerant = false;
|
||||
private boolean preferStartMatches = false;
|
||||
@Nullable private Function<Character, Character> asciiToCharConverter;
|
||||
|
||||
public MatcherBuilder(String pattern) {
|
||||
this.pattern = pattern;
|
||||
@@ -340,58 +321,29 @@ public final class NameUtil {
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* For AWT application {@link com.intellij.util.ui.KeyboardLayoutUtil#getAsciiForChar(char)} can be used as a chars converter.
|
||||
*/
|
||||
public MatcherBuilder withAsciiToCharConverter(@Nullable Function<Character, Character> asciiToCharConverter) {
|
||||
this.asciiToCharConverter = asciiToCharConverter;
|
||||
return this;
|
||||
}
|
||||
|
||||
public MinusculeMatcher build() {
|
||||
MinusculeMatcher matcher = typoTolerant ? FixingLayoutTypoTolerantMatcher.create(pattern, caseSensitivity, separators, asciiToCharConverter)
|
||||
: new FixingLayoutMatcher(pattern, caseSensitivity, separators, asciiToCharConverter);
|
||||
MinusculeMatcher matcher = typoTolerant ? FixingLayoutTypoTolerantMatcher.create(pattern, caseSensitivity, separators)
|
||||
: new FixingLayoutMatcher(pattern, caseSensitivity, separators);
|
||||
return preferStartMatches ? new PreferStartMatchMatcherWrapper(matcher) : matcher;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @see com.intellij.util.ui.KeyboardLayoutUtil#buildLayoutFixingMatcher(String, MatchingCaseSensitivity)
|
||||
*/
|
||||
@NotNull
|
||||
public static MatcherBuilder buildMatcher(@NotNull String pattern) {
|
||||
return new MatcherBuilder(pattern);
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated use {@link com.intellij.util.ui.KeyboardLayoutUtil#buildLayoutFixingMatcher(String, MatchingCaseSensitivity)} or
|
||||
* {@link this#buildMatcher(String, MatchingCaseSensitivity, Function)} instead.
|
||||
* <p>
|
||||
* For AWT application {@link com.intellij.util.ui.KeyboardLayoutUtil#getAsciiForChar(char)} can be used as a chars converter.
|
||||
*/
|
||||
@Deprecated
|
||||
@NotNull
|
||||
public static MinusculeMatcher buildMatcher(@NotNull String pattern, @NotNull MatchingCaseSensitivity options) {
|
||||
return buildMatcher(pattern, options, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* For AWT application {@link com.intellij.util.ui.KeyboardLayoutUtil#getAsciiForChar(char)} can be used as a chars converter.
|
||||
*/
|
||||
@NotNull
|
||||
public static MinusculeMatcher buildMatcher(@NotNull String pattern,
|
||||
@NotNull MatchingCaseSensitivity options,
|
||||
@Nullable Function<Character, Character> asciiToCharConverter) {
|
||||
return buildMatcher(pattern).withCaseSensitivity(options).withAsciiToCharConverter(asciiToCharConverter).build();
|
||||
return buildMatcher(pattern).withCaseSensitivity(options).build();
|
||||
}
|
||||
|
||||
public static MinusculeMatcher buildMatcherWithFallback(@NotNull String pattern,
|
||||
@NotNull String fallbackPattern,
|
||||
@NotNull MatchingCaseSensitivity options,
|
||||
@Nullable Function<Character, Character> asciiToCharConverter) {
|
||||
return pattern.equals(fallbackPattern) ?
|
||||
buildMatcher(pattern, options, asciiToCharConverter) :
|
||||
new MatcherWithFallback(buildMatcher(pattern, options, asciiToCharConverter), buildMatcher(fallbackPattern, options, asciiToCharConverter));
|
||||
@NotNull MatchingCaseSensitivity options) {
|
||||
return pattern.equals(fallbackPattern)
|
||||
? buildMatcher(pattern, options)
|
||||
: new MatcherWithFallback(buildMatcher(pattern, options), buildMatcher(fallbackPattern, options));
|
||||
}
|
||||
|
||||
@NotNull
|
||||
|
||||
+12
-24
@@ -1,12 +1,10 @@
|
||||
// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
package com.intellij.util.ui;
|
||||
package com.intellij.util.text;
|
||||
|
||||
import com.intellij.openapi.util.SystemInfo;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import com.intellij.openapi.util.SystemInfoRt;
|
||||
import com.intellij.openapi.util.TextRange;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.awt.event.InputEvent;
|
||||
import java.awt.event.KeyEvent;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
@@ -22,7 +20,7 @@ public class KeyboardLayoutUtil {
|
||||
Character c = ourLLtoASCII.get(a);
|
||||
if (c != null) return c;
|
||||
|
||||
if (ourLLtoASCII.isEmpty() || SystemInfo.isLinux) {
|
||||
if (ourLLtoASCII.isEmpty() || SystemInfoRt.isLinux) {
|
||||
// Linux note:
|
||||
// KeyEvent provides 'rawCode' (a physical |row|column| coordinate) instead of 'keyCode'.
|
||||
// ASCII rawCodes can be collected to map chars via their rawCode in future.
|
||||
@@ -35,33 +33,24 @@ public class KeyboardLayoutUtil {
|
||||
return null;
|
||||
}
|
||||
|
||||
public static void storeAsciiForChar(@NotNull KeyEvent e) {
|
||||
int id = e.getID();
|
||||
if (id != KeyEvent.KEY_PRESSED) return;
|
||||
int mods = e.getModifiers();
|
||||
int code = e.getKeyCode();
|
||||
char aChar = e.getKeyChar();
|
||||
if ((mods & ~InputEvent.SHIFT_MASK & ~InputEvent.SHIFT_DOWN_MASK) != 0) return;
|
||||
public static void storeAsciiForChar(int keyCode, char keyChar, TextRange asciiKeyCodesRange) {
|
||||
if (!asciiKeyCodesRange.contains(keyCode)) return;
|
||||
if ('a' <= keyChar && keyChar <= 'z' || 'A' <= keyChar && keyChar <= 'Z') return;
|
||||
if (ourLLtoASCII.containsKey(keyChar)) return;
|
||||
|
||||
if (code < KeyEvent.VK_A || code > KeyEvent.VK_Z) return;
|
||||
if (aChar == KeyEvent.CHAR_UNDEFINED) return;
|
||||
if ('a' <= aChar && aChar <= 'z' || 'A' <= aChar && aChar <= 'Z') return;
|
||||
if (ourLLtoASCII.containsKey(aChar)) return;
|
||||
|
||||
char converted = (char)((int)'a' + (code - KeyEvent.VK_A));
|
||||
if (Character.isUpperCase(aChar)) {
|
||||
char converted = (char)((int)'a' + (keyCode - asciiKeyCodesRange.getStartOffset()));
|
||||
if (Character.isUpperCase(keyChar)) {
|
||||
converted = Character.toUpperCase(converted);
|
||||
}
|
||||
ourLLtoASCII.put(aChar, converted);
|
||||
ourLLtoASCII.put(keyChar, converted);
|
||||
}
|
||||
|
||||
|
||||
private static class HardCoded {
|
||||
private static final Map<Character, Character> LL = new HashMap<>(33);
|
||||
|
||||
static {
|
||||
// keyboard layouts in lowercase
|
||||
char[] layout = new char[] {
|
||||
char[] layout = new char[]{
|
||||
// Russian-PC
|
||||
'й', 'q', 'ц', 'w', 'у', 'e', 'к', 'r', 'е', 't', 'н', 'y', 'г', 'u',
|
||||
'ш', 'i', 'щ', 'o', 'з', 'p', 'х', '[', 'ъ', ']', 'ф', 'a', 'ы', 's',
|
||||
@@ -75,5 +64,4 @@ public class KeyboardLayoutUtil {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,37 +0,0 @@
|
||||
// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
package com.intellij.util.ui;
|
||||
|
||||
import com.intellij.psi.codeStyle.AllOccurrencesMatcher;
|
||||
import com.intellij.psi.codeStyle.FixingLayoutMatcher;
|
||||
import com.intellij.psi.codeStyle.MinusculeMatcher;
|
||||
import com.intellij.psi.codeStyle.NameUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public final class FixingLayoutMatcherUtil {
|
||||
private FixingLayoutMatcherUtil() {
|
||||
}
|
||||
|
||||
public static FixingLayoutMatcher create(@NotNull String pattern,
|
||||
@NotNull NameUtil.MatchingCaseSensitivity options,
|
||||
String hardSeparators) {
|
||||
return new FixingLayoutMatcher(pattern, options, hardSeparators, KeyboardLayoutUtil::getAsciiForChar);
|
||||
}
|
||||
|
||||
public static AllOccurrencesMatcher createAllOccurrencesMatcher(@NotNull String pattern,
|
||||
@NotNull NameUtil.MatchingCaseSensitivity options,
|
||||
String hardSeparators) {
|
||||
return new AllOccurrencesMatcher(pattern, options, hardSeparators, KeyboardLayoutUtil::getAsciiForChar);
|
||||
}
|
||||
|
||||
public static NameUtil.MatcherBuilder buildLayoutFixingMatcher(@NotNull String pattern) {
|
||||
return NameUtil.buildMatcher(pattern).withAsciiToCharConverter(KeyboardLayoutUtil::getAsciiForChar);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static MinusculeMatcher buildLayoutFixingMatcher(@NotNull String pattern, @NotNull NameUtil.MatchingCaseSensitivity options) {
|
||||
return NameUtil.buildMatcher(pattern)
|
||||
.withCaseSensitivity(options)
|
||||
.withAsciiToCharConverter(KeyboardLayoutUtil::getAsciiForChar)
|
||||
.build();
|
||||
}
|
||||
}
|
||||
@@ -8,6 +8,7 @@ import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.TextRange;
|
||||
import com.intellij.psi.codeStyle.MinusculeMatcher;
|
||||
import com.intellij.psi.codeStyle.NameUtil;
|
||||
import com.intellij.ui.ColoredTableCellRenderer;
|
||||
import com.intellij.ui.JBColor;
|
||||
import com.intellij.ui.SimpleTextAttributes;
|
||||
@@ -15,7 +16,6 @@ import com.intellij.ui.scale.JBUIScale;
|
||||
import com.intellij.ui.speedSearch.SpeedSearchUtil;
|
||||
import com.intellij.ui.table.JBTable;
|
||||
import com.intellij.util.containers.FList;
|
||||
import com.intellij.util.ui.FixingLayoutMatcherUtil;
|
||||
import com.intellij.util.ui.JBDimension;
|
||||
import com.intellij.util.ui.update.MergingUpdateQueue;
|
||||
import com.intellij.util.ui.update.Update;
|
||||
@@ -72,7 +72,7 @@ public class ClassesTable extends JBTable implements DataProvider, Disposable {
|
||||
private boolean myOnlyWithDiff;
|
||||
private boolean myOnlyTracked;
|
||||
private boolean myOnlyWithInstances;
|
||||
private MinusculeMatcher myMatcher = FixingLayoutMatcherUtil.buildLayoutFixingMatcher("*").build();
|
||||
private MinusculeMatcher myMatcher = NameUtil.buildMatcher("*").build();
|
||||
private String myFilteringPattern = "";
|
||||
private final MergingUpdateQueue myFilterTypingMergeQueue = new MergingUpdateQueue(
|
||||
"Classes table typing merging queue", 500, true,
|
||||
@@ -288,7 +288,7 @@ public class ClassesTable extends JBTable implements DataProvider, Disposable {
|
||||
if (myMatcher.getPattern().equals(newPattern)) {
|
||||
return;
|
||||
}
|
||||
myMatcher = FixingLayoutMatcherUtil.buildLayoutFixingMatcher(newPattern).build();
|
||||
myMatcher = NameUtil.buildMatcher(newPattern).build();
|
||||
fireTableDataChanged();
|
||||
if (getSelectedClass() == null && getRowCount() > 0) {
|
||||
getSelectionModel().setSelectionInterval(0, 0);
|
||||
|
||||
@@ -8,6 +8,7 @@ import com.intellij.openapi.util.Condition;
|
||||
import com.intellij.openapi.util.Conditions;
|
||||
import com.intellij.openapi.util.TextRange;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.psi.codeStyle.FixingLayoutMatcher;
|
||||
import com.intellij.psi.codeStyle.MinusculeMatcher;
|
||||
import com.intellij.psi.codeStyle.NameUtil;
|
||||
import com.intellij.ui.*;
|
||||
@@ -20,7 +21,6 @@ import com.intellij.util.EventDispatcher;
|
||||
import com.intellij.util.Function;
|
||||
import com.intellij.util.ObjectUtils;
|
||||
import com.intellij.util.containers.*;
|
||||
import com.intellij.util.ui.FixingLayoutMatcherUtil;
|
||||
import com.intellij.util.ui.UIUtil;
|
||||
import com.intellij.util.ui.tree.TreeUtil;
|
||||
import gnu.trove.TIntArrayList;
|
||||
@@ -521,7 +521,7 @@ public abstract class FilteringTree<T extends DefaultMutableTreeNode, U> {
|
||||
if (text == null) return;
|
||||
|
||||
for (String word : StringUtil.split(text, " ")) {
|
||||
wordMatchers.add(FixingLayoutMatcherUtil.create("*" + word, NameUtil.MatchingCaseSensitivity.NONE, ""));
|
||||
wordMatchers.add(new FixingLayoutMatcher("*" + word, NameUtil.MatchingCaseSensitivity.NONE, ""));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user