From b901a4726865629cb6e7aa5ee77831e88bcc8f2a Mon Sep 17 00:00:00 2001 From: "peter.gromov" Date: Tue, 26 Oct 2010 19:55:02 +0400 Subject: [PATCH] suggest short keywords like 'if', 'do' and 'new' in java --- .../com/intellij/codeInsight/TailTypes.java | 9 +++++++ .../completion/JavaCompletionData.java | 3 +++ .../completion/CompletionAutoPopupTest.groovy | 2 +- .../completion/NormalCompletionTest.groovy | 26 +++++++++++++++++++ 4 files changed, 39 insertions(+), 1 deletion(-) diff --git a/java/java-impl/src/com/intellij/codeInsight/TailTypes.java b/java/java-impl/src/com/intellij/codeInsight/TailTypes.java index 41b29c8cc644..00c1aa4ff431 100644 --- a/java/java-impl/src/com/intellij/codeInsight/TailTypes.java +++ b/java/java-impl/src/com/intellij/codeInsight/TailTypes.java @@ -92,6 +92,15 @@ public class TailTypes { return styleSettings.SPACE_WITHIN_FOR_PARENTHESES; } }; + public static final TailType IF_LPARENTH = new ParenthesesTailType() { + protected boolean isSpaceBeforeParentheses(final CodeStyleSettings styleSettings, final Editor editor, final int tailOffset) { + return styleSettings.SPACE_BEFORE_IF_PARENTHESES; + } + + protected boolean isSpaceWithinParentheses(final CodeStyleSettings styleSettings, final Editor editor, final int tailOffset) { + return styleSettings.SPACE_WITHIN_IF_PARENTHESES; + } + }; public static final TailType FINALLY_LBRACE = new BracesTailType() { protected boolean isSpaceBeforeLBrace(final CodeStyleSettings styleSettings, final Editor editor, final int tailOffset) { return styleSettings.SPACE_BEFORE_FINALLY_LBRACE; diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionData.java b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionData.java index 20997e77ca3e..9ea8c0de1adb 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionData.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionData.java @@ -525,6 +525,7 @@ public class JavaCompletionData extends JavaAwareCompletionData{ variant.addCompletion(PsiKeyword.NULL, TailType.NONE); variant.addCompletion(PsiKeyword.TRUE, TailType.NONE); variant.addCompletion(PsiKeyword.FALSE, TailType.NONE); + variant.addCompletion(PsiKeyword.NEW, TailType.SPACE); variant.includeScopeClass(PsiExpressionList.class); variant.includeScopeClass(PsiStatement.class); registerVariant(variant); @@ -547,7 +548,9 @@ public class JavaCompletionData extends JavaAwareCompletionData{ private static void addKeywords(CompletionVariant variant){ variant.addCompletion(PsiKeyword.SWITCH, TailTypes.SWITCH_LPARENTH); variant.addCompletion(PsiKeyword.WHILE, TailTypes.WHILE_LPARENTH); + variant.addCompletion(PsiKeyword.DO, TailType.createSimpleTailType('{')); variant.addCompletion(PsiKeyword.FOR, TailTypes.FOR_LPARENTH); + variant.addCompletion(PsiKeyword.IF, TailTypes.IF_LPARENTH); variant.addCompletion(PsiKeyword.TRY, TailType.createSimpleTailType('{')); variant.addCompletion(PsiKeyword.THROW, TailType.SPACE); variant.addCompletion(PsiKeyword.RETURN, TailType.SPACE); diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/completion/CompletionAutoPopupTest.groovy b/java/java-tests/testSrc/com/intellij/codeInsight/completion/CompletionAutoPopupTest.groovy index db772de05bcb..141211b0cf2f 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/completion/CompletionAutoPopupTest.groovy +++ b/java/java-tests/testSrc/com/intellij/codeInsight/completion/CompletionAutoPopupTest.groovy @@ -81,7 +81,7 @@ class CompletionAutoPopupTest extends LightCodeInsightFixtureTestCase { } """) type('i') - assertSameElements myFixture.lookupElementStrings, "iterable", "int" + assertSameElements myFixture.lookupElementStrings, "if", "iterable", "int" type('t') assertOrderedEquals myFixture.lookupElementStrings, "iterable" type('er') diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionTest.groovy b/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionTest.groovy index 8fcaba541299..2194e00572d1 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionTest.groovy +++ b/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionTest.groovy @@ -795,4 +795,30 @@ public class NormalCompletionTest extends LightFixtureCompletionTestCase { assertOneElement myFixture.completeBasic() } + public void testStatementKeywords() { + myFixture.configureByText("a.java", """ + class Bar {{ + xxx + }} + """) + myFixture.completeBasic() + final def strings = myFixture.lookupElementStrings + assertTrue 'if' in strings + assertTrue 'while' in strings + assertTrue 'do' in strings + assertTrue 'new' in strings + assertTrue 'try' in strings + } + + public void testExpressionKeywords() { + myFixture.configureByText("a.java", """ + class Bar {{ + foo(xxx) + }} + """) + myFixture.completeBasic() + final def strings = myFixture.lookupElementStrings + assertTrue 'new' in strings + } + }