diff --git a/java/java-tests/testSrc/com/intellij/java/navigation/ChooseByNameTest.groovy b/java/java-tests/testSrc/com/intellij/java/navigation/ChooseByNameTest.groovy index fd741fed9099..c8681c272c3a 100644 --- a/java/java-tests/testSrc/com/intellij/java/navigation/ChooseByNameTest.groovy +++ b/java/java-tests/testSrc/com/intellij/java/navigation/ChooseByNameTest.groovy @@ -143,6 +143,12 @@ class Intf { assert gotoFile('i') == [i, index] } + void "test prefer shorter filename match"() { + def shorter = addEmptyFile("foo/cp-users.txt") + def longer = addEmptyFile("cp-users-and-smth.html") + assert gotoFile('cpusers') == [shorter, longer] + } + void "test consider dot-idea files out of project"() { def outside = addEmptyFile(".idea/workspace.xml") def inside = addEmptyFile("workspace.txt") 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 af272de3397a..d76dc90d21f8 100644 --- a/platform/lang-impl/src/com/intellij/ide/actions/GotoFileItemProvider.java +++ b/platform/lang-impl/src/com/intellij/ide/actions/GotoFileItemProvider.java @@ -163,9 +163,11 @@ public class GotoFileItemProvider extends DefaultChooseByNameItemProvider { } if (group.size() > 1) { + //noinspection StringToUpperCaseOrToLowerCaseWithoutLocale Collections.sort(group, Comparator.comparing(f -> f instanceof PsiDirectory). thenComparing(qualifierMatchingDegrees::get). + thenComparing(i -> FileUtilRt.getNameWithoutExtension(i.getName()).toLowerCase()). thenComparing(i -> i.getName().toLowerCase()). thenComparing(nesting::get). thenComparing(dirCloseness::get).