diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/JavaDocCompletionContributor.java b/java/java-impl/src/com/intellij/codeInsight/completion/JavaDocCompletionContributor.java index 2a3b9e1e218c..45b0e26554dd 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaDocCompletionContributor.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaDocCompletionContributor.java @@ -168,7 +168,20 @@ public class JavaDocCompletionContributor extends CompletionContributor { } }); for (String description : descriptions) { - result.addElement(LookupElementBuilder.create(description)); + result.addElement(LookupElementBuilder.create(description).withInsertHandler(new InsertHandler() { + @Override + public void handleInsert(InsertionContext context, LookupElement item) { + context.commitDocument(); + PsiDocTag docTag = PsiTreeUtil.findElementOfClassAtOffset(context.getFile(), context.getStartOffset(), PsiDocTag.class, false); + if (docTag != null) { + int tagEnd = docTag.getTextRange().getEndOffset(); + int tail = context.getTailOffset(); + if (tail < tagEnd) { + context.getDocument().deleteString(tail, tagEnd); + } + } + } + })); } } diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/completion/JavadocCompletionTest.groovy b/java/java-tests/testSrc/com/intellij/codeInsight/completion/JavadocCompletionTest.groovy index a0531a7167f5..a42fde0fe8ed 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/completion/JavadocCompletionTest.groovy +++ b/java/java-tests/testSrc/com/intellij/codeInsight/completion/JavadocCompletionTest.groovy @@ -220,7 +220,7 @@ class Foo { myFixture.configureByText "a.java", ''' class Foo { /** - * @param intParam so + * @param intParam so xxx */ void foo2(int intParam, Object param2) { } @@ -232,6 +232,9 @@ class Foo { ''' myFixture.completeBasic() myFixture.assertPreferredCompletionItems 0, 'some', 'some integer param' + myFixture.lookup.currentItem = myFixture.lookupElements[1] + myFixture.type('\t') + assert !myFixture.editor.document.text.contains('xxx') } public void "test see super class"() {