diff --git a/java/java-tests/testSrc/com/intellij/navigation/ChooseByNameTest.groovy b/java/java-tests/testSrc/com/intellij/navigation/ChooseByNameTest.groovy index dc0cce0c5cf7..35fcc545730d 100644 --- a/java/java-tests/testSrc/com/intellij/navigation/ChooseByNameTest.groovy +++ b/java/java-tests/testSrc/com/intellij/navigation/ChooseByNameTest.groovy @@ -251,6 +251,7 @@ class Intf { assert getPopupElements(model, 'Bar at line 2') == [file] assert getPopupElements(model, 'Bar 2:39') == [file] assert getPopupElements(model, 'Bar#L2') == [file] + assert getPopupElements(model, 'Bar?l=2') == [file] } void "test dollar"() { diff --git a/platform/lang-impl/src/com/intellij/ide/util/gotoByName/ChooseByNamePopup.java b/platform/lang-impl/src/com/intellij/ide/util/gotoByName/ChooseByNamePopup.java index bf35a3e6f853..0a0cf75985a4 100644 --- a/platform/lang-impl/src/com/intellij/ide/util/gotoByName/ChooseByNamePopup.java +++ b/platform/lang-impl/src/com/intellij/ide/util/gotoByName/ChooseByNamePopup.java @@ -340,7 +340,7 @@ public class ChooseByNamePopup extends ChooseByNameBase implements ChooseByNameP } private static final Pattern patternToDetectLinesAndColumns = Pattern.compile("(.+?)" + // name, non-greedy matching - "(?::|@|,| |#L| on line | at line |:?\\(|:?\\[)" + // separator + "(?::|@|,| |#|#L|\\?l=| on line | at line |:?\\(|:?\\[)" + // separator "(\\d+)(?:(?:\\D)(\\d+)?)?" + // line + column "[)\\]]?" // possible closing paren/brace ); @@ -355,7 +355,7 @@ public class ChooseByNamePopup extends ChooseByNameBase implements ChooseByNameP public static String getTransformedPattern(String pattern, ChooseByNameModel model) { Pattern regex = null; - if (StringUtil.containsAnyChar(pattern, ":,;@[( #") || pattern.contains(" line ")) { // quick test if reg exp should be used + if (StringUtil.containsAnyChar(pattern, ":,;@[( #") || pattern.contains(" line ") || pattern.contains("?l=")) { // quick test if reg exp should be used regex = patternToDetectLinesAndColumns; }