From 54f4e283bc486514ef0738021a023c6c92a29470 Mon Sep 17 00:00:00 2001 From: peter Date: Tue, 3 Mar 2015 18:48:51 +0100 Subject: [PATCH] IDEA-137120 AutoComplete does not offer options, there is a word begins with an underscore --- .../com/intellij/psi/util/NameUtilMatchingTest.groovy | 1 + .../src/com/intellij/psi/codeStyle/MinusculeMatcher.java | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/platform/platform-tests/testSrc/com/intellij/psi/util/NameUtilMatchingTest.groovy b/platform/platform-tests/testSrc/com/intellij/psi/util/NameUtilMatchingTest.groovy index 0388aed9b612..0e0231940761 100644 --- a/platform/platform-tests/testSrc/com/intellij/psi/util/NameUtilMatchingTest.groovy +++ b/platform/platform-tests/testSrc/com/intellij/psi/util/NameUtilMatchingTest.groovy @@ -280,6 +280,7 @@ public class NameUtilMatchingTest extends UsefulTestCase { assertMatches("*_dark", "collapseAll_dark.png"); assertMatches("*_dark.png", "collapseAll_dark.png"); assertMatches("**_dark.png", "collapseAll_dark.png"); + assertTrue(firstLetterMatcher("*_DARK").matches("A_DARK.png")); } public void testMiddleMatching() { diff --git a/platform/util/src/com/intellij/psi/codeStyle/MinusculeMatcher.java b/platform/util/src/com/intellij/psi/codeStyle/MinusculeMatcher.java index 559b6d0d1092..03fc8bde0055 100644 --- a/platform/util/src/com/intellij/psi/codeStyle/MinusculeMatcher.java +++ b/platform/util/src/com/intellij/psi/codeStyle/MinusculeMatcher.java @@ -410,13 +410,18 @@ public class MinusculeMatcher implements Matcher { if (!charEquals(patternChar, patternIndex, name.charAt(nameIndex), ignoreCase)) return false; if (myOptions == NameUtil.MatchingCaseSensitivity.FIRST_LETTER && - (patternIndex == 0 || patternIndex == 1 && isWildcard(0)) && + (patternIndex == 0 || patternIndex == 1 && isWildcard(0)) && + hasCase(patternChar) && Character.isUpperCase(patternChar) != Character.isUpperCase(name.charAt(0))) { return false; } return true; } + private static boolean hasCase(char patternChar) { + return Character.isUpperCase(patternChar) || Character.isLowerCase(patternChar); + } + private boolean isWildcard(int patternIndex) { if (patternIndex >= 0 && patternIndex < myPattern.length) { char pc = myPattern[patternIndex];