diff --git a/java/java-impl/src/com/intellij/ide/util/gotoByName/DefaultClassNavigationContributor.java b/java/java-impl/src/com/intellij/ide/util/gotoByName/DefaultClassNavigationContributor.java index 35361fca1a3a..c04fc0832cab 100644 --- a/java/java-impl/src/com/intellij/ide/util/gotoByName/DefaultClassNavigationContributor.java +++ b/java/java-impl/src/com/intellij/ide/util/gotoByName/DefaultClassNavigationContributor.java @@ -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() { final boolean isAnnotation = parameters.getLocalPatternName().startsWith("@"); diff --git a/java/java-impl/src/com/intellij/ide/util/gotoByName/DefaultSymbolNavigationContributor.java b/java/java-impl/src/com/intellij/ide/util/gotoByName/DefaultSymbolNavigationContributor.java index d1ffd6446650..e1aa5273887e 100644 --- a/java/java-impl/src/com/intellij/ide/util/gotoByName/DefaultSymbolNavigationContributor.java +++ b/java/java-impl/src/com/intellij/ide/util/gotoByName/DefaultSymbolNavigationContributor.java @@ -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); diff --git a/java/java-impl/src/com/intellij/testIntegration/JavaTestFinder.java b/java/java-impl/src/com/intellij/testIntegration/JavaTestFinder.java index 136ae3886fa3..1827838314cd 100644 --- a/java/java-impl/src/com/intellij/testIntegration/JavaTestFinder.java +++ b/java/java-impl/src/com/intellij/testIntegration/JavaTestFinder.java @@ -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)) { diff --git a/platform/analysis-impl/src/com/intellij/codeInsight/completion/impl/CamelHumpMatcher.java b/platform/analysis-impl/src/com/intellij/codeInsight/completion/impl/CamelHumpMatcher.java index 90a1be61b5a1..c87033402490 100644 --- a/platform/analysis-impl/src/com/intellij/codeInsight/completion/impl/CamelHumpMatcher.java +++ b/platform/analysis-impl/src/com/intellij/codeInsight/completion/impl/CamelHumpMatcher.java @@ -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) { diff --git a/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/LookupCellRenderer.java b/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/LookupCellRenderer.java index 0efbf4479bc9..ffe70147de9b 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/LookupCellRenderer.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/LookupCellRenderer.java @@ -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 } public static FList getMatchingFragments(String prefix, String name) { - return FixingLayoutMatcherUtil.buildLayoutFixingMatcher("*" + prefix).build().matchingFragments(name); + return NameUtil.buildMatcher("*" + prefix).build().matchingFragments(name); } private int setTypeTextLabel(LookupElement item, diff --git a/platform/lang-impl/src/com/intellij/find/editorHeaderActions/VariantsCompletionAction.java b/platform/lang-impl/src/com/intellij/find/editorHeaderActions/VariantsCompletionAction.java index d91003830f04..47cc148c335f 100644 --- a/platform/lang-impl/src/com/intellij/find/editorHeaderActions/VariantsCompletionAction.java +++ b/platform/lang-impl/src/com/intellij/find/editorHeaderActions/VariantsCompletionAction.java @@ -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 words = new HashSet<>(); CharSequence chars = editor.getDocument().getCharsSequence(); diff --git a/platform/lang-impl/src/com/intellij/ide/actions/CreateDirectoryOrPackageAction.java b/platform/lang-impl/src/com/intellij/ide/actions/CreateDirectoryOrPackageAction.java index 319cf659cf4e..01bc88d15e36 100644 --- a/platform/lang-impl/src/com/intellij/ide/actions/CreateDirectoryOrPackageAction.java +++ b/platform/lang-impl/src/com/intellij/ide/actions/CreateDirectoryOrPackageAction.java @@ -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 filtered = ContainerUtil.filter(items, item -> currentMatcher.matches(item.displayText)); diff --git a/platform/lang-impl/src/com/intellij/ide/actions/GotoClassAction.java b/platform/lang-impl/src/com/intellij/ide/actions/GotoClassAction.java index 67614617dddb..3086bc84df3e 100644 --- a/platform/lang-impl/src/com/intellij/ide/actions/GotoClassAction.java +++ b/platform/lang-impl/src/com/intellij/ide/actions/GotoClassAction.java @@ -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.*; diff --git a/platform/lang-impl/src/com/intellij/ide/actions/GotoFileItemProvider.java b/platform/lang-impl/src/com/intellij/ide/actions/GotoFileItemProvider.java index 7b89d3ffbb55..65277fb8dc4e 100644 --- a/platform/lang-impl/src/com/intellij/ide/actions/GotoFileItemProvider.java +++ b/platform/lang-impl/src/com/intellij/ide/actions/GotoFileItemProvider.java @@ -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(); } diff --git a/platform/lang-impl/src/com/intellij/ide/actions/runAnything/groups/RunAnythingGroup.java b/platform/lang-impl/src/com/intellij/ide/actions/runAnything/groups/RunAnythingGroup.java index d9daf12a602e..21e53b5330dd 100644 --- a/platform/lang-impl/src/com/intellij/ide/actions/runAnything/groups/RunAnythingGroup.java +++ b/platform/lang-impl/src/com/intellij/ide/actions/runAnything/groups/RunAnythingGroup.java @@ -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 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. diff --git a/platform/lang-impl/src/com/intellij/ide/actions/searcheverywhere/RecentFilesSEContributor.java b/platform/lang-impl/src/com/intellij/ide/actions/searcheverywhere/RecentFilesSEContributor.java index c28c058f8d92..13874e882fc3 100644 --- a/platform/lang-impl/src/com/intellij/ide/actions/searcheverywhere/RecentFilesSEContributor.java +++ b/platform/lang-impl/src/com/intellij/ide/actions/searcheverywhere/RecentFilesSEContributor.java @@ -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(); } diff --git a/platform/lang-impl/src/com/intellij/ide/actions/searcheverywhere/RunConfigurationsSEContributor.java b/platform/lang-impl/src/com/intellij/ide/actions/searcheverywhere/RunConfigurationsSEContributor.java index 0647346be569..03e30b4969d5 100644 --- a/platform/lang-impl/src/com/intellij/ide/actions/searcheverywhere/RunConfigurationsSEContributor.java +++ b/platform/lang-impl/src/com/intellij/ide/actions/searcheverywhere/RunConfigurationsSEContributor.java @@ -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; diff --git a/platform/lang-impl/src/com/intellij/ide/actions/searcheverywhere/SearchEverywhereUI.java b/platform/lang-impl/src/com/intellij/ide/actions/searcheverywhere/SearchEverywhereUI.java index 292a2da03731..1b65840a93cf 100644 --- a/platform/lang-impl/src/com/intellij/ide/actions/searcheverywhere/SearchEverywhereUI.java +++ b/platform/lang-impl/src/com/intellij/ide/actions/searcheverywhere/SearchEverywhereUI.java @@ -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, Integer> contributorsMap = new HashMap<>(); diff --git a/platform/lang-impl/src/com/intellij/ide/actions/searcheverywhere/mixed/SearchEverywhereUIMixedResults.java b/platform/lang-impl/src/com/intellij/ide/actions/searcheverywhere/mixed/SearchEverywhereUIMixedResults.java index ae27ba8a6d85..b61beaed5d61 100644 --- a/platform/lang-impl/src/com/intellij/ide/actions/searcheverywhere/mixed/SearchEverywhereUIMixedResults.java +++ b/platform/lang-impl/src/com/intellij/ide/actions/searcheverywhere/mixed/SearchEverywhereUIMixedResults.java @@ -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, Integer> contributorsMap = new HashMap<>(); diff --git a/platform/lang-impl/src/com/intellij/ide/util/FileStructureDialog.java b/platform/lang-impl/src/com/intellij/ide/util/FileStructureDialog.java index 061804a475b8..ebdc26e7c89d 100644 --- a/platform/lang-impl/src/com/intellij/ide/util/FileStructureDialog.java +++ b/platform/lang-impl/src/com/intellij/ide/util/FileStructureDialog.java @@ -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(); } } diff --git a/platform/lang-impl/src/com/intellij/ide/util/FileStructurePopup.java b/platform/lang-impl/src/com/intellij/ide/util/FileStructurePopup.java index bd1670c93fd5..d5444585b773 100644 --- a/platform/lang-impl/src/com/intellij/ide/util/FileStructurePopup.java +++ b/platform/lang-impl/src/com/intellij/ide/util/FileStructurePopup.java @@ -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(); } }); diff --git a/platform/lang-impl/src/com/intellij/ide/util/gotoByName/ChooseByNameBase.java b/platform/lang-impl/src/com/intellij/ide/util/gotoByName/ChooseByNameBase.java index b6e8f3d7dfb6..6693dc261d5b 100644 --- a/platform/lang-impl/src/com/intellij/ide/util/gotoByName/ChooseByNameBase.java +++ b/platform/lang-impl/src/com/intellij/ide/util/gotoByName/ChooseByNameBase.java @@ -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 { diff --git a/platform/lang-impl/src/com/intellij/ide/util/gotoByName/DefaultChooseByNameItemProvider.java b/platform/lang-impl/src/com/intellij/ide/util/gotoByName/DefaultChooseByNameItemProvider.java index 84cc4da03609..ae712064933a 100644 --- a/platform/lang-impl/src/com/intellij/ide/util/gotoByName/DefaultChooseByNameItemProvider.java +++ b/platform/lang-impl/src/com/intellij/ide/util/gotoByName/DefaultChooseByNameItemProvider.java @@ -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(); } diff --git a/platform/lang-impl/src/com/intellij/ide/util/gotoByName/GotoActionItemProvider.java b/platform/lang-impl/src/com/intellij/ide/util/gotoByName/GotoActionItemProvider.java index fdbede40bc61..ec6d85834dc3 100644 --- a/platform/lang-impl/src/com/intellij/ide/util/gotoByName/GotoActionItemProvider.java +++ b/platform/lang-impl/src/com/intellij/ide/util/gotoByName/GotoActionItemProvider.java @@ -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 consumer, DataContext dataContext) { diff --git a/platform/lang-impl/src/com/intellij/ide/util/gotoByName/GotoFileModel.java b/platform/lang-impl/src/com/intellij/ide/util/gotoByName/GotoFileModel.java index ba9bf6dd6081..ac384bfb7dc6 100644 --- a/platform/lang-impl/src/com/intellij/ide/util/gotoByName/GotoFileModel.java +++ b/platform/lang-impl/src/com/intellij/ide/util/gotoByName/GotoFileModel.java @@ -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 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)); diff --git a/platform/platform-api/src/com/intellij/ui/speedSearch/SpeedSearch.java b/platform/platform-api/src/com/intellij/ui/speedSearch/SpeedSearch.java index eea7bf600b92..c313432f7e25 100644 --- a/platform/platform-api/src/com/intellij/ui/speedSearch/SpeedSearch.java +++ b/platform/platform-api/src/com/intellij/ui/speedSearch/SpeedSearch.java @@ -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; diff --git a/platform/platform-impl/src/com/intellij/ide/plugins/PluginsTableRenderer.java b/platform/platform-impl/src/com/intellij/ide/plugins/PluginsTableRenderer.java index d60e3ca3dca7..c7790470bc80 100644 --- a/platform/platform-impl/src/com/intellij/ide/plugins/PluginsTableRenderer.java +++ b/platform/platform-impl/src/com/intellij/ide/plugins/PluginsTableRenderer.java @@ -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) { diff --git a/platform/platform-impl/src/com/intellij/openapi/fileChooser/ex/FileTextFieldImpl.java b/platform/platform-impl/src/com/intellij/openapi/fileChooser/ex/FileTextFieldImpl.java index 954a4e608682..d51748d835eb 100644 --- a/platform/platform-impl/src/com/intellij/openapi/fileChooser/ex/FileTextFieldImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/fileChooser/ex/FileTextFieldImpl.java @@ -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) { diff --git a/platform/platform-impl/src/com/intellij/openapi/keymap/impl/IdeKeyEventDispatcher.java b/platform/platform-impl/src/com/intellij/openapi/keymap/impl/IdeKeyEventDispatcher.java index 8a1fbcaef209..99835aecaf97 100644 --- a/platform/platform-impl/src/com/intellij/openapi/keymap/impl/IdeKeyEventDispatcher.java +++ b/platform/platform-impl/src/com/intellij/openapi/keymap/impl/IdeKeyEventDispatcher.java @@ -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) { diff --git a/platform/platform-impl/src/com/intellij/ui/ShowUIDefaultsAction.java b/platform/platform-impl/src/com/intellij/ui/ShowUIDefaultsAction.java index 056cc224dc8e..9e5ca38c25f4 100644 --- a/platform/platform-impl/src/com/intellij/ui/ShowUIDefaultsAction.java +++ b/platform/platform-impl/src/com/intellij/ui/ShowUIDefaultsAction.java @@ -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; diff --git a/platform/platform-impl/src/com/intellij/ui/SpeedSearchComparator.java b/platform/platform-impl/src/com/intellij/ui/SpeedSearchComparator.java index 4e27deaa0e00..eaa432821f6e 100644 --- a/platform/platform-impl/src/com/intellij/ui/SpeedSearchComparator.java +++ b/platform/platform-impl/src/com/intellij/ui/SpeedSearchComparator.java @@ -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() { diff --git a/platform/platform-tests/testSrc/com/intellij/psi/util/MinusculeMatcherPerformanceTest.java b/platform/platform-tests/testSrc/com/intellij/psi/util/MinusculeMatcherPerformanceTest.java index 0c40854dc8e2..75d9f52219e4 100644 --- a/platform/platform-tests/testSrc/com/intellij/psi/util/MinusculeMatcherPerformanceTest.java +++ b/platform/platform-tests/testSrc/com/intellij/psi/util/MinusculeMatcherPerformanceTest.java @@ -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 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, () -> { diff --git a/platform/platform-tests/testSrc/com/intellij/psi/util/NameUtilMatchingTest.java b/platform/platform-tests/testSrc/com/intellij/psi/util/NameUtilMatchingTest.java index f0bbf671ca85..9011b67a8ad4 100644 --- a/platform/platform-tests/testSrc/com/intellij/psi/util/NameUtilMatchingTest.java +++ b/platform/platform-tests/testSrc/com/intellij/psi/util/NameUtilMatchingTest.java @@ -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"); diff --git a/platform/tasks-platform-impl/src/com/intellij/tasks/impl/TaskUtil.java b/platform/tasks-platform-impl/src/com/intellij/tasks/impl/TaskUtil.java index d038de9a3056..c5aa32ca5aab 100644 --- a/platform/tasks-platform-impl/src/com/intellij/tasks/impl/TaskUtil.java +++ b/platform/tasks-platform-impl/src/com/intellij/tasks/impl/TaskUtil.java @@ -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) { diff --git a/platform/util/text-matching/src/com/intellij/psi/codeStyle/AllOccurrencesMatcher.java b/platform/util/text-matching/src/com/intellij/psi/codeStyle/AllOccurrencesMatcher.java index 1acee22b2c7b..817483fb19a2 100644 --- a/platform/util/text-matching/src/com/intellij/psi/codeStyle/AllOccurrencesMatcher.java +++ b/platform/util/text-matching/src/com/intellij/psi/codeStyle/AllOccurrencesMatcher.java @@ -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 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); + } } diff --git a/platform/util/text-matching/src/com/intellij/psi/codeStyle/FixingLayoutMatcher.java b/platform/util/text-matching/src/com/intellij/psi/codeStyle/FixingLayoutMatcher.java index 698571676a3f..55ed6a9c03a2 100644 --- a/platform/util/text-matching/src/com/intellij/psi/codeStyle/FixingLayoutMatcher.java +++ b/platform/util/text-matching/src/com/intellij/psi/codeStyle/FixingLayoutMatcher.java @@ -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 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 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 asciiToCharConverter) { - String s = fixLayout(pattern, asciiToCharConverter); + String hardSeparators) { + String s = fixLayout(pattern); if (s != null && !s.equals(pattern)) { return new MinusculeMatcherImpl(s, options, hardSeparators); } diff --git a/platform/util/text-matching/src/com/intellij/psi/codeStyle/FixingLayoutTypoTolerantMatcher.java b/platform/util/text-matching/src/com/intellij/psi/codeStyle/FixingLayoutTypoTolerantMatcher.java index 32b5d8866e08..1cb49876dc51 100644 --- a/platform/util/text-matching/src/com/intellij/psi/codeStyle/FixingLayoutTypoTolerantMatcher.java +++ b/platform/util/text-matching/src/com/intellij/psi/codeStyle/FixingLayoutTypoTolerantMatcher.java @@ -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 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); diff --git a/platform/util/text-matching/src/com/intellij/psi/codeStyle/NameUtil.java b/platform/util/text-matching/src/com/intellij/psi/codeStyle/NameUtil.java index 23889fd73e5d..ac7162078d0b 100644 --- a/platform/util/text-matching/src/com/intellij/psi/codeStyle/NameUtil.java +++ b/platform/util/text-matching/src/com/intellij/psi/codeStyle/NameUtil.java @@ -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. - *

- * 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 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 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 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. - *

- * 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 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 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 diff --git a/platform/util/ui/src/com/intellij/util/ui/KeyboardLayoutUtil.java b/platform/util/text-matching/src/com/intellij/util/text/KeyboardLayoutUtil.java similarity index 65% rename from platform/util/ui/src/com/intellij/util/ui/KeyboardLayoutUtil.java rename to platform/util/text-matching/src/com/intellij/util/text/KeyboardLayoutUtil.java index 2e21c4d41089..1e8162782323 100644 --- a/platform/util/ui/src/com/intellij/util/ui/KeyboardLayoutUtil.java +++ b/platform/util/text-matching/src/com/intellij/util/text/KeyboardLayoutUtil.java @@ -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 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 { } } } - } diff --git a/platform/util/ui/src/com/intellij/util/ui/FixingLayoutMatcherUtil.java b/platform/util/ui/src/com/intellij/util/ui/FixingLayoutMatcherUtil.java deleted file mode 100644 index a394b852c94e..000000000000 --- a/platform/util/ui/src/com/intellij/util/ui/FixingLayoutMatcherUtil.java +++ /dev/null @@ -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(); - } -} diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/memory/ui/ClassesTable.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/memory/ui/ClassesTable.java index 34083f9df02a..116140a2dafd 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/memory/ui/ClassesTable.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/memory/ui/ClassesTable.java @@ -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); diff --git a/plugins/git4idea/src/git4idea/ui/branch/dashboard/FilteringTree.java b/plugins/git4idea/src/git4idea/ui/branch/dashboard/FilteringTree.java index 7b3242db8b49..2fb9327ef909 100644 --- a/plugins/git4idea/src/git4idea/ui/branch/dashboard/FilteringTree.java +++ b/plugins/git4idea/src/git4idea/ui/branch/dashboard/FilteringTree.java @@ -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 { 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, "")); } }