From 23b589d978fb51289e82e35697178f97aaadff58 Mon Sep 17 00:00:00 2001 From: peter Date: Wed, 10 May 2017 16:44:26 +0200 Subject: [PATCH] IDEA-162109 "pl" should match "println" in completion --- .../com/intellij/psi/util/NameUtilMatchingTest.java | 7 +++++++ .../util/src/com/intellij/psi/codeStyle/NameUtil.java | 8 +++++++- 2 files changed, 14 insertions(+), 1 deletion(-) 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 196de52477aa..07524f7483f8 100644 --- a/platform/platform-tests/testSrc/com/intellij/psi/util/NameUtilMatchingTest.java +++ b/platform/platform-tests/testSrc/com/intellij/psi/util/NameUtilMatchingTest.java @@ -711,4 +711,11 @@ public class NameUtilMatchingTest extends UsefulTestCase { assertPreference("GEN", "GetName", "GetExtendedName"); assertPreference("*GEN", "GetName", "GetExtendedName"); } + + public void testPrintln() { + assertMatches("pl", "println"); + assertMatches("pl", "printlnFoo"); + assertDoesntMatch("pl", "printlnx"); + } + } diff --git a/platform/util/src/com/intellij/psi/codeStyle/NameUtil.java b/platform/util/src/com/intellij/psi/codeStyle/NameUtil.java index dd679336c140..db029c99fcf0 100644 --- a/platform/util/src/com/intellij/psi/codeStyle/NameUtil.java +++ b/platform/util/src/com/intellij/psi/codeStyle/NameUtil.java @@ -385,7 +385,13 @@ public class NameUtil { if (!Character.isLetter(c)) { return false; } - return i == 0 || !Character.isLetterOrDigit(text.charAt(i - 1)); + return i == 0 || !Character.isLetterOrDigit(text.charAt(i - 1)) || isHardCodedWordStart(text, i); + } + + private static boolean isHardCodedWordStart(String text, int i) { + return text.charAt(i) == 'l' && + i < text.length() - 1 && text.charAt(i + 1) == 'n' && + (text.length() == i + 2 || isWordStart(text, i + 2)); } /**