mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-03-22 15:19:59 +07:00
IJPL-207762 extract OverridableSpace to java frontend
GitOrigin-RevId: c4a1c97d061cd9e9a631ac71acc21992b94054a5
This commit is contained in:
committed by
intellij-monorepo-bot
parent
abe3598180
commit
2ae976b0b8
@@ -0,0 +1,26 @@
|
||||
// Copyright 2000-2026 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.intellij.codeInsight.completion;
|
||||
|
||||
import com.intellij.codeInsight.TailType;
|
||||
import com.intellij.codeInsight.TailTypes;
|
||||
import com.intellij.codeInsight.lookup.LookupElement;
|
||||
import com.intellij.codeInsight.lookup.TailTypeDecorator;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public final class OverridableSpace extends TailTypeDecorator<LookupElement> {
|
||||
private final @NotNull TailType myTail;
|
||||
|
||||
private OverridableSpace(@NotNull LookupElement keyword, @NotNull TailType tail) {
|
||||
super(keyword);
|
||||
myTail = tail;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected @NotNull TailType computeTailType(@NotNull InsertionContext context) {
|
||||
return context.shouldAddCompletionChar() ? TailTypes.noneType() : myTail;
|
||||
}
|
||||
|
||||
public static LookupElement create(@NotNull LookupElement delegate, @NotNull TailType tail) {
|
||||
return new OverridableSpace(delegate, tail);
|
||||
}
|
||||
}
|
||||
@@ -269,11 +269,11 @@ public class JavaKeywordCompletion {
|
||||
}
|
||||
|
||||
private void addKeyword(@NlsSafe @NotNull String keyword, @NotNull TailType tailType) {
|
||||
addKeyword(new OverridableSpace(createKeyword(keyword), tailType));
|
||||
addKeyword(OverridableSpace.create(createKeyword(keyword), tailType));
|
||||
}
|
||||
|
||||
private void addWrapRuleIntoBlock(@NlsSafe @NotNull String keyword, @NotNull TailType tail) {
|
||||
addKeyword(wrapRuleIntoBlock(new OverridableSpace(createKeyword(keyword), tail)));
|
||||
addKeyword(wrapRuleIntoBlock(OverridableSpace.create(createKeyword(keyword), tail)));
|
||||
}
|
||||
|
||||
List<LookupElement> getResults() {
|
||||
@@ -355,7 +355,7 @@ public class JavaKeywordCompletion {
|
||||
|
||||
if (psiElement().withText(";").withSuperParent(2, PsiIfStatement.class).accepts(myPrevLeaf) ||
|
||||
psiElement().withText("}").withSuperParent(3, PsiIfStatement.class).accepts(myPrevLeaf)) {
|
||||
LookupElement elseKeyword = new OverridableSpace(createKeyword(JavaKeywords.ELSE), TailTypes.humbleSpaceBeforeWordType());
|
||||
LookupElement elseKeyword = OverridableSpace.create(createKeyword(JavaKeywords.ELSE), TailTypes.humbleSpaceBeforeWordType());
|
||||
CharSequence text = myParameters.getEditor().getDocument().getCharsSequence();
|
||||
int offset = myParameters.getOffset();
|
||||
while (text.length() > offset && Character.isWhitespace(text.charAt(offset))) {
|
||||
@@ -374,7 +374,7 @@ public class JavaKeywordCompletion {
|
||||
TailType returnTail = getReturnTail(myPosition);
|
||||
LookupElement ret = createKeyword(JavaKeywords.RETURN);
|
||||
if (returnTail != TailTypes.noneType()) {
|
||||
ret = new OverridableSpace(ret, returnTail);
|
||||
ret = OverridableSpace.create(ret, returnTail);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
@@ -474,8 +474,7 @@ public class JavaKeywordCompletion {
|
||||
return;
|
||||
}
|
||||
|
||||
final OverridableSpace defaultCaseRule =
|
||||
new OverridableSpace(createKeyword(JavaKeywords.DEFAULT), JavaTailTypes.forSwitchLabel(switchBlock));
|
||||
LookupElement defaultCaseRule = OverridableSpace.create(createKeyword(JavaKeywords.DEFAULT), JavaTailTypes.forSwitchLabel(switchBlock));
|
||||
addKeyword(prioritizeForRule(LookupElementDecorator.withInsertHandler(defaultCaseRule, ADJUST_LINE_OFFSET), switchBlock));
|
||||
}
|
||||
|
||||
@@ -657,8 +656,7 @@ public class JavaKeywordCompletion {
|
||||
if (defaultElement != null) {
|
||||
return;
|
||||
}
|
||||
final OverridableSpace defaultCaseRule =
|
||||
new OverridableSpace(createKeyword(JavaKeywords.DEFAULT), JavaTailTypes.forSwitchLabel(switchBlock));
|
||||
LookupElement defaultCaseRule = OverridableSpace.create(createKeyword(JavaKeywords.DEFAULT), JavaTailTypes.forSwitchLabel(switchBlock));
|
||||
addKeyword(prioritizeForRule(LookupElementDecorator.withInsertHandler(defaultCaseRule, ADJUST_LINE_OFFSET), switchBlock));
|
||||
}
|
||||
|
||||
@@ -843,7 +841,7 @@ public class JavaKeywordCompletion {
|
||||
if (tryStatement == null ||
|
||||
tryStatement.getCatchSections().length > 0 ||
|
||||
tryStatement.getFinallyBlock() != null || tryStatement.getResourceList() != null) {
|
||||
LookupElement finalKeyword = new OverridableSpace(createKeyword(JavaKeywords.FINAL), TailTypes.humbleSpaceBeforeWordType());
|
||||
LookupElement finalKeyword = OverridableSpace.create(createKeyword(JavaKeywords.FINAL), TailTypes.humbleSpaceBeforeWordType());
|
||||
if (statement.getParent() instanceof PsiSwitchLabeledRuleStatement) {
|
||||
finalKeyword = wrapRuleIntoBlock(finalKeyword);
|
||||
}
|
||||
@@ -1022,7 +1020,7 @@ public class JavaKeywordCompletion {
|
||||
|
||||
if (psiElement().insideStarting(psiElement(PsiLocalVariable.class, PsiExpressionStatement.class)).accepts(myPosition)) {
|
||||
addKeyword(JavaKeywords.CLASS, TailTypes.humbleSpaceBeforeWordType());
|
||||
addKeyword(new OverridableSpace(LookupElementBuilder.create("abstract class").bold(), TailTypes.humbleSpaceBeforeWordType()));
|
||||
addKeyword(OverridableSpace.create(LookupElementBuilder.create("abstract class").bold(), TailTypes.humbleSpaceBeforeWordType()));
|
||||
if (PsiUtil.isAvailable(JavaFeature.RECORDS, myPosition)) {
|
||||
addKeyword(JavaKeywords.RECORD, TailTypes.humbleSpaceBeforeWordType());
|
||||
}
|
||||
@@ -1198,7 +1196,7 @@ public class JavaKeywordCompletion {
|
||||
}
|
||||
};
|
||||
LookupElement element =
|
||||
new OverridableSpace(LookupElementDecorator.withInsertHandler(createKeyword(JavaKeywords.PERMITS), handler),
|
||||
OverridableSpace.create(LookupElementDecorator.withInsertHandler(createKeyword(JavaKeywords.PERMITS), handler),
|
||||
TailTypes.humbleSpaceBeforeWordType());
|
||||
addKeyword(element);
|
||||
}
|
||||
@@ -1330,7 +1328,7 @@ public class JavaKeywordCompletion {
|
||||
TailType tailType = JavaTailTypes.forSwitchLabel(switchBlock);
|
||||
for (String keyword : List.of(JavaKeywords.TRUE, JavaKeywords.FALSE)) {
|
||||
if (branches.contains(keyword)) continue;
|
||||
result.accept(new JavaKeywordCompletion.OverridableSpace(
|
||||
result.accept(OverridableSpace.create(
|
||||
BasicExpressionCompletionContributor.createKeywordLookupItem(position, keyword), tailType));
|
||||
}
|
||||
}
|
||||
@@ -1380,7 +1378,7 @@ public class JavaKeywordCompletion {
|
||||
}
|
||||
if (declaration) {
|
||||
LookupElement item = BasicExpressionCompletionContributor.createKeywordLookupItem(position, JavaKeywords.VOID);
|
||||
result.consume(new OverridableSpace(item, TailTypes.humbleSpaceBeforeWordType()));
|
||||
result.consume(OverridableSpace.create(item, TailTypes.humbleSpaceBeforeWordType()));
|
||||
}
|
||||
else if (typeFragment && ((PsiTypeCodeFragment)position.getContainingFile()).isVoidValid()) {
|
||||
result.consume(BasicExpressionCompletionContributor.createKeywordLookupItem(position, JavaKeywords.VOID));
|
||||
@@ -1665,18 +1663,4 @@ public class JavaKeywordCompletion {
|
||||
addKeyword(JavaKeywords.WITH, TailTypes.humbleSpaceBeforeWordType());
|
||||
}
|
||||
}
|
||||
|
||||
public static final class OverridableSpace extends TailTypeDecorator<LookupElement> {
|
||||
private final @NotNull TailType myTail;
|
||||
|
||||
public OverridableSpace(@NotNull LookupElement keyword, @NotNull TailType tail) {
|
||||
super(keyword);
|
||||
myTail = tail;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected @NotNull TailType computeTailType(InsertionContext context) {
|
||||
return context.shouldAddCompletionChar() ? TailTypes.noneType() : myTail;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
// Copyright 2000-2026 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.intellij.codeInsight.completion;
|
||||
|
||||
import com.intellij.codeInsight.TailTypes;
|
||||
@@ -115,7 +115,7 @@ public final class JavaPatternCompletionUtil {
|
||||
}
|
||||
if (type instanceof PsiPrimitiveType) {
|
||||
LookupElement lookupItem = BasicExpressionCompletionContributor.createKeywordLookupItem(currentPosition, type.getCanonicalText());
|
||||
result.accept(new JavaKeywordCompletion.OverridableSpace(lookupItem, TailTypes.spaceType()));
|
||||
result.accept(OverridableSpace.create(lookupItem, TailTypes.spaceType()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -158,7 +158,7 @@ public final class JavaPatternCompletionUtil {
|
||||
if (TypeConversionUtil.areTypesConvertible(fromType, primitiveType)) {
|
||||
LookupElement lookupItem =
|
||||
BasicExpressionCompletionContributor.createKeywordLookupItem(currentPosition, primitiveType.getCanonicalText());
|
||||
result.accept(new JavaKeywordCompletion.OverridableSpace(lookupItem, TailTypes.spaceType()));
|
||||
result.accept(OverridableSpace.create(lookupItem, TailTypes.spaceType()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
// Copyright 2000-2026 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package org.jetbrains.plugins.groovy.lang.completion;
|
||||
|
||||
import com.intellij.codeInsight.JavaTailTypes;
|
||||
@@ -7,8 +7,8 @@ import com.intellij.codeInsight.TailTypes;
|
||||
import com.intellij.codeInsight.completion.CompletionParameters;
|
||||
import com.intellij.codeInsight.completion.InsertHandler;
|
||||
import com.intellij.codeInsight.completion.InsertionContext;
|
||||
import com.intellij.codeInsight.completion.JavaKeywordCompletion;
|
||||
import com.intellij.codeInsight.completion.ModifierChooser;
|
||||
import com.intellij.codeInsight.completion.OverridableSpace;
|
||||
import com.intellij.codeInsight.lookup.LookupElement;
|
||||
import com.intellij.codeInsight.lookup.LookupElementBuilder;
|
||||
import com.intellij.codeInsight.lookup.TailTypeDecorator;
|
||||
@@ -363,7 +363,7 @@ public final class GroovyCompletionData {
|
||||
|
||||
private static LookupElement keyword(final String keyword, @NotNull TailType tail) {
|
||||
LookupElementBuilder element = LookupElementBuilder.create(keyword).bold();
|
||||
return tail != TailTypes.noneType() ? new JavaKeywordCompletion.OverridableSpace(element, tail) : element;
|
||||
return tail != TailTypes.noneType() ? OverridableSpace.create(element, tail) : element;
|
||||
}
|
||||
|
||||
private static void registerControlCompletion(PsiElement context, GroovyCompletionConsumer result) {
|
||||
|
||||
Reference in New Issue
Block a user