[command-completion] IDEA-359174 delete icons and use grey bulb

GitOrigin-RevId: 3cd804645a186a66273ed8a0365c33ac01718ae4
This commit is contained in:
Mikhail Pyltsin
2025-06-11 17:02:49 +00:00
committed by intellij-monorepo-bot
parent 78ad85bd97
commit b800c63163
14 changed files with 6 additions and 65 deletions
@@ -14,7 +14,6 @@ import com.intellij.psi.PsiField
import com.intellij.psi.PsiFile
import com.intellij.psi.PsiIdentifier
import com.intellij.psi.util.PsiTreeUtil
import javax.swing.Icon
internal class GenerateGetterSetterHandleCompletionCommandProvider : CommandProvider {
override fun getCommands(context: CommandCompletionProviderContext): List<CompletionCommand> {
@@ -57,8 +56,6 @@ private class BaseGenerateGetterSetterHandleCompletionCommand(
private val preview: () -> IntentionPreviewInfo?,
) : CompletionCommand(), CompletionCommandWithPreview {
override val icon: Icon? = null
override fun execute(offset: Int, psiFile: PsiFile, editor: Editor?) {
val element = getCommandContext(offset, psiFile) ?: return
val field = PsiTreeUtil.getParentOfType(element, PsiField::class.java) ?: return
@@ -22,7 +22,6 @@ import com.intellij.psi.util.PsiTreeUtil
import com.intellij.psi.util.PsiUtil
import com.intellij.psi.util.parentOfType
import org.jetbrains.annotations.Nls
import javax.swing.Icon
internal class JavaCreateFromUsagesCommandProvider : CommandProvider {
@@ -54,8 +53,6 @@ internal class JavaCreateFromUsagesCompletionCommand(val psiClass: PsiClass) : C
get() = listOf("Create method from usage")
override val presentableName: @Nls String
get() = QuickFixBundle.message("create.method.from.usage.family")
override val icon: Icon?
get() = null
override fun execute(offset: Int, psiFile: PsiFile, editor: Editor?) {
val fileDocument = psiFile.fileDocument
@@ -13,7 +13,6 @@ import com.intellij.openapi.project.DumbAware
import com.intellij.psi.*
import com.intellij.psi.util.PsiTreeUtil
import org.jetbrains.annotations.Nls
import javax.swing.Icon
internal class JavaDeleteCompletionCommandProvider : CommandProvider {
override fun getCommands(context: CommandCompletionProviderContext): List<CompletionCommand> {
@@ -66,8 +65,6 @@ private class JavaDeleteCompletionCommand(
get() = listOf("delete", "remove")
override val presentableName: @Nls String
get() = JavaBundle.message("command.completion.delete.element.text")
override val icon: Icon?
get() = null
override val priority: Int
get() = -100
@@ -3,7 +3,6 @@ package com.intellij.codeInsight.completion.commands.impl
import com.intellij.codeInsight.completion.command.*
import com.intellij.codeInsight.intention.preview.IntentionPreviewInfo
import com.intellij.icons.AllIcons
import com.intellij.ide.DataManager
import com.intellij.idea.ActionsBundle
import com.intellij.lang.ContextAwareActionHandler
@@ -19,7 +18,6 @@ import com.intellij.refactoring.RefactoringBundle
import com.intellij.refactoring.actions.IntroduceVariableAction
import org.jetbrains.annotations.Nls
import java.util.Locale.getDefault
import javax.swing.Icon
//disabled because there is a conflict
internal class JavaIntroduceVariableCommandProvider : CommandProvider {
@@ -49,9 +47,6 @@ internal class JavaIntroduceVariableCommand : CompletionCommand(), CompletionCom
override val presentableName: @Nls String
get() = RefactoringBundle.message("introduce.variable.title").lowercase().replaceFirstChar { if (it.isLowerCase()) it.titlecase(getDefault()) else it.toString() }
override val icon: Icon
get() = AllIcons.Nodes.Variable
override fun execute(offset: Int, psiFile: PsiFile, editor: Editor?) {
val action = IntroduceVariableAction()
if (editor == null) return
@@ -40,7 +40,7 @@
- a:execute(I,com.intellij.psi.PsiFile,com.intellij.openapi.editor.Editor):V
- getAdditionalInfo():java.lang.String
- getHighlightInfo():com.intellij.codeInsight.completion.command.HighlightInfoLookup
- a:getIcon():javax.swing.Icon
- getIcon():javax.swing.Icon
- a:getPresentableName():java.lang.String
- getPriority():java.lang.Integer
- getSynonyms():java.util.List
@@ -27,7 +27,7 @@ abstract class CompletionCommand : UserDataHolderBase() {
* Represents a localized, human-readable name for the command, used as a main lookup string
*/
abstract val presentableName: @Nls String
abstract val icon: Icon?
open val icon: Icon? = null
/**
* Defines the priority of the command in the code completion system.
@@ -189,7 +189,6 @@ c:com.intellij.codeInsight.actions.VcsFacade
- <init>():V
- f:execute(I,com.intellij.psi.PsiFile,com.intellij.openapi.editor.Editor):V
- a:findTargetToRefactor(com.intellij.psi.PsiElement):com.intellij.psi.PsiElement
- f:getIcon():javax.swing.Icon
- f:getPresentableName():java.lang.String
- getPreview():com.intellij.codeInsight.intention.preview.IntentionPreviewInfo
- f:getSynonyms():java.util.List
@@ -213,7 +212,6 @@ c:com.intellij.codeInsight.actions.VcsFacade
- f:getAction():com.intellij.codeInsight.actions.CodeInsightAction
- f:getCustomI18nName():java.lang.String
- f:getCustomName():java.lang.String
- getIcon():javax.swing.Icon
- getPresentableName():java.lang.String
- f:setCustomI18nName(java.lang.String):V
- f:setCustomName(java.lang.String):V
@@ -8,6 +8,7 @@ import com.intellij.codeInsight.completion.ml.MLWeigherUtil
import com.intellij.codeInsight.lookup.LookupElement
import com.intellij.codeInsight.lookup.LookupElementBuilder
import com.intellij.codeInsight.lookup.LookupElementWeigher
import com.intellij.icons.AllIcons.Actions.IntentionBulbGrey
import com.intellij.icons.AllIcons.Actions.Lightning
import com.intellij.injected.editor.DocumentWindow
import com.intellij.injected.editor.EditorWindow
@@ -180,7 +181,7 @@ internal class CommandCompletionProvider : CompletionProvider<CompletionParamete
.withLookupStrings(command.synonyms)
.withPresentableText(lookupString)
.withTypeText(tailText)
.withIcon(command.icon ?: Lightning)
.withIcon(command.icon ?: IntentionBulbGrey)
.withInsertHandler(CommandInsertHandler(command))
.withBoldness(false),
command,
@@ -6,8 +6,6 @@ import com.intellij.codeInsight.completion.command.configuration.ApplicationComm
import com.intellij.codeInsight.daemon.impl.HintRenderer
import com.intellij.codeInsight.editorLineStripeHint.EditorLineStripeTextRenderer
import com.intellij.codeInsight.highlighting.HighlightManager
import com.intellij.codeInsight.hints.presentation.PresentationFactory
import com.intellij.codeInsight.hints.presentation.PresentationRenderer
import com.intellij.codeInsight.lookup.*
import com.intellij.codeInsight.lookup.CharFilter.CUSTOM_DEFAULT_CHAR_FILTERS
import com.intellij.codeInsight.lookup.impl.LookupCustomizer
@@ -195,7 +193,6 @@ private val SUPPRESS_PREDICATE_KEY = Key.create<EditorHighlightingPredicate>("co
private val PROMPT_HIGHLIGHTING = Key.create<RangeHighlighter>("completion.command.prompt.highlighting")
private val LOOKUP_HIGHLIGHTING = Key.create<List<RangeHighlighter>>("completion.command.lookup.highlighting")
private val ICON_RENDER = Key.create<Inlay<PresentationRenderer?>>("completion.command.icon.render")
private const val PROMPT_LAYER = HighlighterLayer.ERROR + 10
@ApiStatus.Internal
@@ -250,8 +247,6 @@ private class CommandCompletionHighlightingListener(
private fun clear(editor: Editor?) {
clearPromptHighlighting(editor)
val renderer = lookup.removeUserData(ICON_RENDER)
renderer?.let { Disposer.dispose(it) }
val project = editor?.project ?: return
val highlightManager = HighlightManager.getInstance(project)
@@ -288,30 +283,6 @@ private class CommandCompletionHighlightingListener(
super.lookupCanceled(event)
}
private fun updateIcon(lookup: LookupImpl, element: CommandCompletionLookupElement) {
if (lookup.getUserData(INSTALLED_ADDITIONAL_MATCHER_KEY) != true) {
return
}
val renderer = lookup.getUserData(ICON_RENDER)
renderer?.let { Disposer.dispose(it) }
if (element.icon != null) {
val factory = PresentationFactory(editor)
val iconPresentation = factory.icon(element.icon)
val presentationRenderer = PresentationRenderer(iconPresentation)
val lookupEditor = InjectedLanguageEditorUtil.getTopLevelEditor(lookup.editor)
val inlay: Inlay<PresentationRenderer?>? =
if (nonWrittenFiles) {
lookupEditor.inlayModel.addInlineElement(0, false, presentationRenderer)
}
else {
lookupEditor.inlayModel.addInlineElement(element.hostStartOffset, true, presentationRenderer)
}
if (inlay != null) {
lookup.putUserData(ICON_RENDER, inlay)
}
}
}
private fun updatePromptHighlighting(lookup: LookupImpl, item: CommandCompletionLookupElement) {
val installed = ConcurrencyUtil.computeIfAbsent(lookup, INSTALLED_PROMPT_KEY) { AtomicBoolean(false) }
val startOffset = lookup.lookupOriginalStart - findActualIndex(item.suffix, editor.document.immutableCharSequence,
@@ -340,9 +311,7 @@ private class CommandCompletionHighlightingListener(
if (lookup !is LookupImpl) return
completionService?.setHint(lookup, editor, nonWrittenFiles)
val item = event.item
if (updateItem(item)) return
val element = item?.`as`(CommandCompletionLookupElement::class.java) ?: return
updateIcon(lookup, element)
updateItem(item)
}
private fun updateHighlighting(lookup: LookupImpl, element: CommandCompletionLookupElement) {
@@ -4,7 +4,6 @@ package com.intellij.codeInsight.completion.command.commands
import com.intellij.codeInsight.actions.ReformatCodeProcessor
import com.intellij.codeInsight.completion.command.*
import com.intellij.codeInsight.intention.preview.IntentionPreviewInfo
import com.intellij.icons.AllIcons
import com.intellij.idea.ActionsBundle
import com.intellij.lang.injection.InjectedLanguageManager
import com.intellij.openapi.editor.Editor
@@ -12,7 +11,6 @@ import com.intellij.psi.PsiElement
import com.intellij.psi.PsiFile
import org.jetbrains.annotations.Nls
import java.util.Locale.getDefault
import javax.swing.Icon
/**
* An abstract command designed to provide a context-specific code formatting completion action.
@@ -41,8 +39,6 @@ abstract class AbstractFormatCodeCompletionCommand : CompletionCommand(), Comple
.replaceFirst("_", "")
.lowercase()
.replaceFirstChar { if (it.isLowerCase()) it.titlecase(getDefault()) else it.toString() }
final override val icon: Icon
get() = AllIcons.Actions.ReformatCode // Use the reformat icon
override fun getPreview(): IntentionPreviewInfo? {
return IntentionPreviewInfo.Html(ActionsBundle.message("action.ReformatCode.description"))
@@ -17,7 +17,6 @@ import com.intellij.psi.PsiElement
import com.intellij.psi.PsiFile
import com.intellij.util.containers.JBIterable
import org.jetbrains.annotations.Nls
import javax.swing.Icon
/**
* Abstract base class that provides a framework for generating completion commands
@@ -82,8 +81,6 @@ abstract class AbstractGenerateCommandProvider : CommandProvider, DumbAware {
) : CompletionCommand() {
override val presentableName: @Nls String
get() = customI18nName ?: (CodeInsightBundle.message("command.completion.generate.text", action.templateText))
override val icon: Icon?
get() = null
override fun execute(offset: Int, psiFile: PsiFile, editor: Editor?) {
if (editor == null) return
@@ -40,7 +40,6 @@ import org.jetbrains.kotlin.psi.KtDotQualifiedExpression
import org.jetbrains.kotlin.psi.KtNameReferenceExpression
import org.jetbrains.kotlin.psi.psiUtil.getQualifiedElementSelector
import org.jetbrains.kotlin.psi.stubs.elements.KtNameReferenceExpressionElementType
import javax.swing.Icon
internal class KotlinCreateFromUsagesCommandProvider : CommandProvider {
@@ -86,8 +85,6 @@ internal class KotlinCreateFromUsagesCompletionCommand(val ktClass: KtClass) : C
get() = listOf("Create method from usage")
override val presentableName: @Nls String
get() = QuickFixBundle.message("create.method.from.usage.family")
override val icon: Icon?
get() = null
override fun execute(offset: Int, psiFile: PsiFile, editor: Editor?) {
val fileDocument = psiFile.fileDocument
@@ -17,7 +17,6 @@ import org.jetbrains.kotlin.psi.KtClassOrObject
import org.jetbrains.kotlin.psi.KtExpression
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.psi.KtNamedDeclaration
import javax.swing.Icon
internal class KotlinDeleteCompletionCommandProvider : CommandProvider {
override fun getCommands(context: CommandCompletionProviderContext): List<CompletionCommand> {
@@ -72,8 +71,6 @@ private class KotlinDeleteCompletionCommand(
get() = listOf("Delete element")
override val presentableName: @Nls String
get() = ActionsBundle.message("action.EditorDelete.text")
override val icon: Icon?
get() = null
override val priority: Int
get() = -100
@@ -137,7 +137,7 @@ class K2CommandCompletionTest : KotlinLightCodeInsightFixtureTestCase() {
""".trimIndent()
)
val elements = myFixture.completeBasic()
selectItem(elements.first { element -> element.lookupString.contains("Comment with line", ignoreCase = true) })
selectItem(elements.first { element -> element.lookupString.contains("Comment line", ignoreCase = true) })
myFixture.checkResult(
"""
fun main() {