From e67c74c7ba59304b4c2ad0af1096a96fbf4cfae2 Mon Sep 17 00:00:00 2001 From: peter Date: Fri, 8 Jun 2012 14:52:10 +0200 Subject: [PATCH] prefer more recent matches --- .../testSrc/com/intellij/psi/util/NameUtilTest.java | 4 ++++ .../util/src/com/intellij/psi/codeStyle/MinusculeMatcher.java | 3 ++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/platform/platform-tests/testSrc/com/intellij/psi/util/NameUtilTest.java b/platform/platform-tests/testSrc/com/intellij/psi/util/NameUtilTest.java index c2a329e9dcae..ef0108a05aa4 100644 --- a/platform/platform-tests/testSrc/com/intellij/psi/util/NameUtilTest.java +++ b/platform/platform-tests/testSrc/com/intellij/psi/util/NameUtilTest.java @@ -390,6 +390,10 @@ public class NameUtilTest extends UsefulTestCase { assertPreference(" Boo", "boolean", "Boolean", NameUtil.MatchingCaseSensitivity.NONE); } + public void testPreferEarlyMatching() { + assertPreference(" path", "getAbsolutePath", "findPath"); + } + public void testMeaningfulMatchingDegree() { assertTrue(new MinusculeMatcher(" EUC-", NameUtil.MatchingCaseSensitivity.FIRST_LETTER).matchingDegree("x-EUC-TW") > Integer.MIN_VALUE); } diff --git a/platform/util/src/com/intellij/psi/codeStyle/MinusculeMatcher.java b/platform/util/src/com/intellij/psi/codeStyle/MinusculeMatcher.java index 32074ac649f6..6daebde0ffec 100644 --- a/platform/util/src/com/intellij/psi/codeStyle/MinusculeMatcher.java +++ b/platform/util/src/com/intellij/psi/codeStyle/MinusculeMatcher.java @@ -276,8 +276,9 @@ public class MinusculeMatcher implements Matcher { boolean prefixMatching = first != null && first.getStartOffset() == 0; boolean middleWordStart = first != null && first.getStartOffset() > 0 && NameUtil.isWordStart(name, first.getStartOffset()); + int startIndex = first != null ? first.getStartOffset() : 42; - return -fragmentCount + matchingCase * 10 + commonStart + (prefixMatching ? 2 : middleWordStart ? 1 : 0) * 100; + return -fragmentCount + matchingCase * 10 + commonStart - startIndex + (prefixMatching ? 2 : middleWordStart ? 1 : 0) * 100; } @Override