From 7e9975d69e33318f0db6dadcd2c7809d9fee5d5a Mon Sep 17 00:00:00 2001 From: Tagir Valeev Date: Tue, 21 Dec 2021 16:44:13 +0700 Subject: [PATCH] [java-completion] Lower 'else' when there's already 'else' afterwards GitOrigin-RevId: 8093446ec8641a763810e3346125919f22a8ec08 --- .../completion/JavaKeywordCompletion.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/JavaKeywordCompletion.java b/java/java-impl/src/com/intellij/codeInsight/completion/JavaKeywordCompletion.java index 4d02c118e1b5..d3cd332bc87b 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaKeywordCompletion.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaKeywordCompletion.java @@ -230,7 +230,18 @@ public class JavaKeywordCompletion { if (psiElement().withText(";").withSuperParent(2, PsiIfStatement.class).accepts(myPrevLeaf) || psiElement().withText("}").withSuperParent(3, PsiIfStatement.class).accepts(myPrevLeaf)) { - addKeyword(new OverridableSpace(createKeyword(PsiKeyword.ELSE), TailType.HUMBLE_SPACE_BEFORE_WORD)); + LookupElement elseKeyword = new OverridableSpace(createKeyword(PsiKeyword.ELSE), TailType.HUMBLE_SPACE_BEFORE_WORD); + CharSequence text = myParameters.getEditor().getDocument().getCharsSequence(); + int offset = myParameters.getOffset(); + while (text.length() > offset && Character.isWhitespace(text.charAt(offset))) { + offset++; + } + if (text.length() > offset + PsiKeyword.ELSE.length() && + text.subSequence(offset, offset + PsiKeyword.ELSE.length()).toString().equals(PsiKeyword.ELSE) && + Character.isWhitespace(text.charAt(offset + PsiKeyword.ELSE.length()))) { + elseKeyword = PrioritizedLookupElement.withPriority(elseKeyword, -1); + } + addKeyword(elseKeyword); } }