mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-84064 Ctrl-Shift-Enter does not work in annotations
This commit is contained in:
+2
@@ -290,6 +290,7 @@ public class JavaSmartEnterProcessor extends SmartEnterProcessor {
|
||||
PsiStatement.class,
|
||||
PsiCodeBlock.class,
|
||||
PsiMember.class,
|
||||
PsiAnnotation.class,
|
||||
PsiComment.class,
|
||||
PsiImportStatementBase.class,
|
||||
PsiPackageStatement.class
|
||||
@@ -305,6 +306,7 @@ public class JavaSmartEnterProcessor extends SmartEnterProcessor {
|
||||
|
||||
return statementAtCaret instanceof PsiStatement ||
|
||||
statementAtCaret instanceof PsiMember ||
|
||||
statementAtCaret instanceof PsiAnnotation ||
|
||||
statementAtCaret instanceof PsiImportStatementBase ||
|
||||
statementAtCaret instanceof PsiPackageStatement
|
||||
? statementAtCaret
|
||||
|
||||
+5
-5
@@ -17,6 +17,7 @@ package com.intellij.codeInsight.editorActions.smartEnter;
|
||||
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.psi.PsiArrayInitializerExpression;
|
||||
import com.intellij.psi.PsiArrayInitializerMemberValue;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiErrorElement;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
@@ -25,11 +26,10 @@ import com.intellij.util.containers.ContainerUtil;
|
||||
public class MissingArrayInitializerBraceFixer implements Fixer {
|
||||
@Override
|
||||
public void apply(Editor editor, JavaSmartEnterProcessor processor, PsiElement psiElement) throws IncorrectOperationException {
|
||||
if (!(psiElement instanceof PsiArrayInitializerExpression)) return;
|
||||
PsiArrayInitializerExpression expr = (PsiArrayInitializerExpression)psiElement;
|
||||
if (!expr.getText().endsWith("}")) {
|
||||
PsiErrorElement err = ContainerUtil.findInstance(expr.getChildren(), PsiErrorElement.class);
|
||||
int endOffset = (err != null ? err : expr).getTextRange().getEndOffset();
|
||||
if (!(psiElement instanceof PsiArrayInitializerExpression || psiElement instanceof PsiArrayInitializerMemberValue)) return;
|
||||
if (!psiElement.getText().endsWith("}")) {
|
||||
PsiErrorElement err = ContainerUtil.findInstance(psiElement.getChildren(), PsiErrorElement.class);
|
||||
int endOffset = (err != null ? err : psiElement).getTextRange().getEndOffset();
|
||||
editor.getDocument().insertString(endOffset, "}");
|
||||
}
|
||||
}
|
||||
|
||||
+4
-3
@@ -17,8 +17,8 @@ package com.intellij.codeInsight.editorActions.smartEnter;
|
||||
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.psi.PsiAnnotationParameterList;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiParameter;
|
||||
import com.intellij.psi.PsiParameterList;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
|
||||
@@ -29,10 +29,11 @@ import com.intellij.util.IncorrectOperationException;
|
||||
public class ParameterListFixer implements Fixer {
|
||||
@Override
|
||||
public void apply(Editor editor, JavaSmartEnterProcessor processor, PsiElement psiElement) throws IncorrectOperationException {
|
||||
if (psiElement instanceof PsiParameterList) {
|
||||
if (psiElement instanceof PsiParameterList || psiElement instanceof PsiAnnotationParameterList) {
|
||||
String text = psiElement.getText();
|
||||
if (StringUtil.startsWithChar(text, '(') && !StringUtil.endsWithChar(text, ')')) {
|
||||
PsiParameter[] params = ((PsiParameterList)psiElement).getParameters();
|
||||
PsiElement[] params = psiElement instanceof PsiParameterList ? ((PsiParameterList)psiElement).getParameters()
|
||||
: ((PsiAnnotationParameterList)psiElement).getAttributes();
|
||||
int offset;
|
||||
if (params.length == 0) {
|
||||
offset = psiElement.getTextRange().getStartOffset() + 1;
|
||||
|
||||
+1
@@ -0,0 +1 @@
|
||||
@SuppressWarnings({"fallthrough", "finally"<caret>
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
@SuppressWarnings({"fallthrough", "finally"})
|
||||
<caret>
|
||||
@@ -123,6 +123,7 @@ public class CompleteStatementTest extends EditorActionTestCase {
|
||||
public void testMethodBeforeAnnotation() { doTest(); }
|
||||
public void testMethodBeforeCommentField() { doTest(); }
|
||||
public void testMethodBeforeCommentMethod() { doTest(); }
|
||||
public void testCloseAnnotationWithArrayInitializer() { doTest(); }
|
||||
public void testParenthesized() { doTest(); }
|
||||
public void testCompleteBreak() { doTest(); }
|
||||
public void testCompleteIfNextLineBraceStyle() { myJavaSettings.BRACE_STYLE = CommonCodeStyleSettings.NEXT_LINE; doTest(); }
|
||||
|
||||
Reference in New Issue
Block a user