From 708b5271f6935aea4ff51753a67d136edf927a9f Mon Sep 17 00:00:00 2001 From: Mikhail Pyltsin Date: Wed, 20 Nov 2024 16:46:20 +0100 Subject: [PATCH] [java-completion] IDEA-359174 command completion - add hint - add simple i18n GitOrigin-RevId: c9a94a47dd706d6f2f23543d8b733aeb4b1467e7 --- .../commands/api/CompletionCommand.kt | 2 + .../ApplicationCommandCompletionService.kt | 25 ++++++++++++ .../core/CommandCompletionProvider.kt | 3 ++ .../commands/core/CommandCompletionService.kt | 38 +++++++++++++++++++ .../impl/AbstractActionCompletionCommand.kt | 2 + .../commands/impl/CommentCompletionCommand.kt | 3 ++ .../impl/FormatCodeCompletionCommand.kt | 5 +++ .../impl/GenerateCompletionCommand.kt | 8 +++- .../impl/GoToDeclarationCompletionCommand.kt | 7 +++- .../impl/InlineVariableCompletionCommand.kt | 5 +++ .../impl/IntentionCompletionCommand.kt | 6 ++- .../impl/OptimizeImportCompletionCommand.kt | 3 ++ .../impl/ProjectViewCompletionCommand.kt | 4 +- .../impl/RecentFilesCompletionCommand.kt | 3 ++ .../impl/RefactorThisCompletionCommand.kt | 3 ++ .../impl/RenameActionCompletionCommand.kt | 2 + .../resources/messages/JavaBundle.properties | 6 +++ 17 files changed, 121 insertions(+), 4 deletions(-) create mode 100644 java/java-impl/src/com/intellij/codeInsight/completion/commands/core/ApplicationCommandCompletionService.kt diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/commands/api/CompletionCommand.kt b/java/java-impl/src/com/intellij/codeInsight/completion/commands/api/CompletionCommand.kt index d9ce56f72aa6..055b20ae42e0 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/commands/api/CompletionCommand.kt +++ b/java/java-impl/src/com/intellij/codeInsight/completion/commands/api/CompletionCommand.kt @@ -7,6 +7,7 @@ import com.intellij.openapi.extensions.ExtensionPointName import com.intellij.psi.PsiElement import com.intellij.psi.PsiFile import org.jetbrains.annotations.ApiStatus +import org.jetbrains.annotations.Nls import javax.swing.Icon @ApiStatus.Experimental @@ -16,6 +17,7 @@ abstract class CompletionCommand { } abstract val name: String + abstract val i18nName: @Nls String abstract val icon: Icon? open val priority: Int? = null abstract fun isApplicable(offset: Int, psiFile: PsiFile): Boolean diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/commands/core/ApplicationCommandCompletionService.kt b/java/java-impl/src/com/intellij/codeInsight/completion/commands/core/ApplicationCommandCompletionService.kt new file mode 100644 index 000000000000..cd3a3441c492 --- /dev/null +++ b/java/java-impl/src/com/intellij/codeInsight/completion/commands/core/ApplicationCommandCompletionService.kt @@ -0,0 +1,25 @@ +// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +package com.intellij.codeInsight.completion.commands.core + +import com.intellij.openapi.components.* +import org.jetbrains.annotations.ApiStatus + + +@Service(Service.Level.APP) +@ApiStatus.Experimental +@ApiStatus.Internal +@State(name = "CommandCompletion", category = SettingsCategory.UI, storages = [Storage("CommandCompletion.xml", roamingType = RoamingType.DISABLED)]) +class ApplicationCommandCompletionService : PersistentStateComponent { + + private var myState = AppCommandCompletionSettings() + + override fun getState(): AppCommandCompletionSettings = myState + + override fun loadState(state: AppCommandCompletionSettings) { + myState = state + } +} + +class AppCommandCompletionSettings( + var showCounts: Int = 0, +) \ No newline at end of file diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/commands/core/CommandCompletionProvider.kt b/java/java-impl/src/com/intellij/codeInsight/completion/commands/core/CommandCompletionProvider.kt index d3eb2f00bf15..7a75bd8cedba 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/commands/core/CommandCompletionProvider.kt +++ b/java/java-impl/src/com/intellij/codeInsight/completion/commands/core/CommandCompletionProvider.kt @@ -90,7 +90,10 @@ internal class CommandCompletionProvider : CompletionProvider withPrefixMatcher.addAllElements(commands.map { command -> + val i18nName = command.i18nName.replace("_", "").replace("...", "") + val tailText = if (command.name.equals(i18nName, ignoreCase = true)) "" else " ($i18nName)" var element: LookupElement = CommandCompletionLookupElement(LookupElementBuilder.create(command.name) + .withTypeText(tailText) .withIcon(command.icon ?: Lightning) .withInsertHandler(CommandInsertHandler(command)) .withBoldness(true), diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/commands/core/CommandCompletionService.kt b/java/java-impl/src/com/intellij/codeInsight/completion/commands/core/CommandCompletionService.kt index c33b0d7edab5..5a86d9e74caf 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/commands/core/CommandCompletionService.kt +++ b/java/java-impl/src/com/intellij/codeInsight/completion/commands/core/CommandCompletionService.kt @@ -5,7 +5,9 @@ import com.intellij.codeInsight.completion.commands.api.CommandCompletionFactory import com.intellij.codeInsight.daemon.impl.CommandCompletionServiceApi import com.intellij.codeInsight.daemon.impl.DaemonCodeAnalyzerEx import com.intellij.codeInsight.daemon.impl.HighlightInfo +import com.intellij.codeInsight.daemon.impl.HintRenderer import com.intellij.codeInsight.editorActions.TypedHandlerDelegate +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 @@ -15,10 +17,12 @@ import com.intellij.codeInsight.intention.impl.IntentionActionWithTextCaching import com.intellij.codeInsight.lookup.* import com.intellij.codeInsight.lookup.impl.LookupImpl import com.intellij.codeInsight.template.impl.TemplateColors +import com.intellij.java.JavaBundle import com.intellij.lang.Language import com.intellij.lang.LanguageExtension import com.intellij.lang.annotation.HighlightSeverity import com.intellij.openapi.Disposable +import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.components.Service import com.intellij.openapi.components.service import com.intellij.openapi.editor.Document @@ -173,6 +177,33 @@ class CommandCompletionService( editor.putUserData(PREVIOUS_HIGHLIGHT_CACHED_CONTAINER_INFO_CONTAINER_KEY, newList.toMutableList()) } + fun setHint(lookup: LookupImpl) { + if (lookup.getUserData(INSTALLED_HIHT_KEY) == false) return + lookup.putUserData(INSTALLED_HIHT_KEY, false) + val psiFile = lookup.psiFile ?: return + val completionService = lookup.project.service() + val completionFactory = completionService.getFactory(psiFile.language) ?: return + val fullSuffix = completionFactory.suffix() + completionFactory.filterSuffix().toString() + val index = findActualIndex(fullSuffix, lookup.editor.document.immutableCharSequence, lookup.lookupOriginalStart) + val startOffset = lookup.lookupOriginalStart - index + val endOffset = lookup.editor.caretModel.offset + if (endOffset - startOffset != 1) return + val editor = lookup.editor + if (lookup.items.none { it.`as`(CommandCompletionLookupElement::class.java) != null }) return + if (editor.inlayModel.getInlineElementsInRange(startOffset, endOffset).isNotEmpty()) return + val applicationCommandCompletionService = ApplicationManager.getApplication().getService(ApplicationCommandCompletionService::class.java) + val state = applicationCommandCompletionService.state + if (state.showCounts > 5) return + state.showCounts += 1 + val inlineElement: Inlay = editor.inlayModel.addInlineElement(endOffset, true, EditorLineStripeTextRenderer(" " + JavaBundle.message("command.completion.filter.hint"))) + ?: return + Disposer.register(lookup, inlineElement) + Disposer.register(lookup) { lookup.removeUserData(INSTALLED_HINT) } + + lookup.putUserData(INSTALLED_HINT, inlineElement) + lookup.putUserData(INSTALLED_HIHT_KEY, true) + } + @ApiStatus.Internal private object CommandCompletionLookupItemFilter : Condition { override fun value(e: LookupElement?): Boolean { @@ -181,6 +212,8 @@ class CommandCompletionService( } } +private val INSTALLED_HINT: Key> = Key.create("completion.command.installed.hint") +private val INSTALLED_HIHT_KEY: Key = Key.create("completion.command.installed.hint") private val INSTALLED_ADDITIONAL_MATCHER_KEY: Key = Key.create("completion.command.installed.additional.matcher") private val INSTALLED_LISTENER_KEY: Key = Key.create("completion.command.installed.lookup.command.listener") private val SUPPRESS_PREDICATE_KEY = Key.create("completion.command.suppress.completion.predicate") @@ -290,6 +323,7 @@ private class CommandCompletionHighlightingListener( override fun currentItemChanged(event: LookupEvent) { val lookup = event.lookup if (lookup !is LookupImpl) return + completionService?.setHint(lookup) val item = event.item val element = item?.`as`(CommandCompletionLookupElement::class.java) if (element == null) { @@ -339,6 +373,10 @@ private class CommandCompletionCharFilter : CharFilter() { if (!Registry.`is`("java.completion.command.enabled")) return null if (lookup !is LookupImpl) return null val completionService = lookup.project.service() + val installedHint = lookup.removeUserData(INSTALLED_HINT) + if (installedHint != null) { + Disposer.dispose(installedHint) + } val psiFile = lookup.psiFile ?: return null val completionFactory = completionService.getFactory(psiFile.language) ?: return null val offset = lookup.editor.caretModel.offset diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/commands/impl/AbstractActionCompletionCommand.kt b/java/java-impl/src/com/intellij/codeInsight/completion/commands/impl/AbstractActionCompletionCommand.kt index 8e5b85152aa4..0855e5bfa53c 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/commands/impl/AbstractActionCompletionCommand.kt +++ b/java/java-impl/src/com/intellij/codeInsight/completion/commands/impl/AbstractActionCompletionCommand.kt @@ -11,11 +11,13 @@ import com.intellij.openapi.editor.Editor import com.intellij.openapi.project.IndexNotReadyException import com.intellij.psi.PsiElement import com.intellij.psi.PsiFile +import org.jetbrains.annotations.Nls import javax.swing.Icon abstract class AbstractActionCompletionCommand( var actionId: String, override val name: String, + override val i18nName: @Nls String, override val icon: Icon?, override val priority: Int? = null ) : OldCompletionCommand() { diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/commands/impl/CommentCompletionCommand.kt b/java/java-impl/src/com/intellij/codeInsight/completion/commands/impl/CommentCompletionCommand.kt index a473ddafe38a..50022b2e85cf 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/commands/impl/CommentCompletionCommand.kt +++ b/java/java-impl/src/com/intellij/codeInsight/completion/commands/impl/CommentCompletionCommand.kt @@ -1,6 +1,9 @@ // Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.intellij.codeInsight.completion.commands.impl +import com.intellij.idea.ActionsBundle + class CommentCompletionCommand : AbstractActionCompletionCommand("CommentByLineComment", "Comment", + ActionsBundle.actionText("CommentByLineComment"), null) \ No newline at end of file diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/commands/impl/FormatCodeCompletionCommand.kt b/java/java-impl/src/com/intellij/codeInsight/completion/commands/impl/FormatCodeCompletionCommand.kt index 8f16025eca97..2549b5195f57 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/commands/impl/FormatCodeCompletionCommand.kt +++ b/java/java-impl/src/com/intellij/codeInsight/completion/commands/impl/FormatCodeCompletionCommand.kt @@ -4,17 +4,22 @@ package com.intellij.codeInsight.completion.commands.impl import com.intellij.codeInsight.actions.ReformatCodeProcessor import com.intellij.codeInsight.completion.commands.api.CompletionCommand import com.intellij.icons.AllIcons +import com.intellij.idea.ActionsBundle import com.intellij.psi.PsiCodeBlock import com.intellij.psi.PsiFile import com.intellij.psi.PsiMember import com.intellij.psi.PsiStatement import com.intellij.psi.util.parents +import org.jetbrains.annotations.Nls import javax.swing.Icon class FormatCodeCompletionCommand : CompletionCommand() { override val name: String get() = "format" + override val i18nName: @Nls String + get() = ActionsBundle.message("action.ReformatCode.text") + override val icon: Icon get() = AllIcons.Actions.ReformatCode // Use the reformat icon diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/commands/impl/GenerateCompletionCommand.kt b/java/java-impl/src/com/intellij/codeInsight/completion/commands/impl/GenerateCompletionCommand.kt index fcfbd80463eb..38119746d5ce 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/commands/impl/GenerateCompletionCommand.kt +++ b/java/java-impl/src/com/intellij/codeInsight/completion/commands/impl/GenerateCompletionCommand.kt @@ -4,17 +4,23 @@ package com.intellij.codeInsight.completion.commands.impl import com.intellij.codeInsight.completion.commands.api.OldCompletionCommand import com.intellij.codeInsight.generation.actions.BaseGenerateAction import com.intellij.ide.DataManager +import com.intellij.java.JavaBundle import com.intellij.openapi.actionSystem.* import com.intellij.openapi.actionSystem.ex.ActionUtil import com.intellij.openapi.actionSystem.impl.SimpleDataContext import com.intellij.openapi.editor.Editor import com.intellij.psi.PsiFile +import org.jetbrains.annotations.Nls import javax.swing.Icon class GenerateCompletionCommand(private val action: BaseGenerateAction) : OldCompletionCommand() { override val name: String - get() = "Generate \"" + action.templateText + "\"" + get() = "Generate \'" + action.templateText + "\'" + override val i18nName: @Nls String + get() = JavaBundle.message( + "completion.command.generate.name", + action.templateText) override val icon: Icon? get() = null diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/commands/impl/GoToDeclarationCompletionCommand.kt b/java/java-impl/src/com/intellij/codeInsight/completion/commands/impl/GoToDeclarationCompletionCommand.kt index 62ab292925dd..51e2c9f2bc49 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/commands/impl/GoToDeclarationCompletionCommand.kt +++ b/java/java-impl/src/com/intellij/codeInsight/completion/commands/impl/GoToDeclarationCompletionCommand.kt @@ -4,16 +4,21 @@ package com.intellij.codeInsight.completion.commands.impl import com.intellij.codeInsight.completion.commands.api.CompletionCommand import com.intellij.icons.AllIcons import com.intellij.ide.util.EditSourceUtil +import com.intellij.idea.ActionsBundle import com.intellij.psi.PsiElement import com.intellij.psi.PsiFile import com.intellij.psi.PsiIdentifier import com.intellij.psi.PsiJavaCodeReferenceElement import com.intellij.psi.util.PsiTreeUtil +import org.jetbrains.annotations.Nls import javax.swing.Icon class GoToDeclarationCompletionCommand : CompletionCommand() { override val name: String - get() = "Go to declaration" + get() = "Go to Declaration" + + override val i18nName: @Nls String + get() = ActionsBundle.message("action.GotoDeclaration.text") override val icon: Icon get() = AllIcons.Ide.ExternalLinkArrowWhite // Use the appropriate icon diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/commands/impl/InlineVariableCompletionCommand.kt b/java/java-impl/src/com/intellij/codeInsight/completion/commands/impl/InlineVariableCompletionCommand.kt index 9c0e9a16242d..feb992c6092d 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/commands/impl/InlineVariableCompletionCommand.kt +++ b/java/java-impl/src/com/intellij/codeInsight/completion/commands/impl/InlineVariableCompletionCommand.kt @@ -3,18 +3,23 @@ package com.intellij.codeInsight.completion.commands.impl import com.intellij.codeInsight.completion.commands.api.OldCompletionCommand import com.intellij.icons.AllIcons +import com.intellij.java.JavaBundle import com.intellij.lang.refactoring.InlineActionHandler import com.intellij.openapi.editor.Editor import com.intellij.psi.PsiFile import com.intellij.psi.PsiIdentifier import com.intellij.psi.PsiJavaCodeReferenceElement import com.intellij.psi.util.PsiTreeUtil +import org.jetbrains.annotations.Nls import javax.swing.Icon class InlineVariableCompletionCommand : OldCompletionCommand() { override val name: String get() = "inline" + override val i18nName: @Nls String + get() = JavaBundle.message("command.completion.inline.text") + override val icon: Icon get() = AllIcons.Actions.RefactoringBulb // Use an appropriate icon from IntelliJ's icon set diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/commands/impl/IntentionCompletionCommand.kt b/java/java-impl/src/com/intellij/codeInsight/completion/commands/impl/IntentionCompletionCommand.kt index eb174447e847..18e6faaec35c 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/commands/impl/IntentionCompletionCommand.kt +++ b/java/java-impl/src/com/intellij/codeInsight/completion/commands/impl/IntentionCompletionCommand.kt @@ -1,8 +1,8 @@ // Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.intellij.codeInsight.completion.commands.impl -import com.intellij.codeInsight.completion.commands.core.CommandCompletionService import com.intellij.codeInsight.completion.commands.api.OldCompletionCommand +import com.intellij.codeInsight.completion.commands.core.CommandCompletionService import com.intellij.codeInsight.completion.commands.core.PREVIOUS_HIGHLIGHT_CACHED_CONTAINER_INFO_CONTAINER_KEY import com.intellij.codeInsight.daemon.impl.ShowIntentionsPass import com.intellij.codeInsight.daemon.impl.quickfix.ExpensivePsiIntentionAction @@ -16,6 +16,7 @@ import com.intellij.openapi.components.service import com.intellij.openapi.editor.Editor import com.intellij.psi.PsiFile import kotlinx.coroutines.launch +import org.jetbrains.annotations.Nls import javax.swing.Icon class IntentionCompletionCommand( @@ -28,6 +29,9 @@ class IntentionCompletionCommand( override val name: String get() = intentionAction.text + override val i18nName: @Nls String + get() = intentionAction.text + override fun isApplicable(offset: Int, psiFile: PsiFile, editor: Editor?): Boolean { if (editor == null) return false return intentionAction.action !is ExpensivePsiIntentionAction && runReadAction { diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/commands/impl/OptimizeImportCompletionCommand.kt b/java/java-impl/src/com/intellij/codeInsight/completion/commands/impl/OptimizeImportCompletionCommand.kt index 4f6377f312c6..26e2a912f0f5 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/commands/impl/OptimizeImportCompletionCommand.kt +++ b/java/java-impl/src/com/intellij/codeInsight/completion/commands/impl/OptimizeImportCompletionCommand.kt @@ -1,7 +1,10 @@ // Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.intellij.codeInsight.completion.commands.impl +import com.intellij.idea.ActionsBundle + class OptimizeImportCompletionCommand : AbstractActionCompletionCommand("OptimizeImports", "Optimize imports", + ActionsBundle.message("action.OptimizeImports.text"), null, -100) \ No newline at end of file diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/commands/impl/ProjectViewCompletionCommand.kt b/java/java-impl/src/com/intellij/codeInsight/completion/commands/impl/ProjectViewCompletionCommand.kt index 31360e15b0aa..a9b5d39bb7fc 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/commands/impl/ProjectViewCompletionCommand.kt +++ b/java/java-impl/src/com/intellij/codeInsight/completion/commands/impl/ProjectViewCompletionCommand.kt @@ -2,8 +2,10 @@ package com.intellij.codeInsight.completion.commands.impl import com.intellij.ide.actions.ActivateToolWindowAction.Manager +import com.intellij.java.JavaBundle class ProjectViewCompletionCommand : AbstractActionCompletionCommand(Manager.getActionIdForToolWindow("Project"), - "Project tree", + "Project tool", + JavaBundle.message("command.completion.project.tool.text"), null, -150) \ No newline at end of file diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/commands/impl/RecentFilesCompletionCommand.kt b/java/java-impl/src/com/intellij/codeInsight/completion/commands/impl/RecentFilesCompletionCommand.kt index a2c6fd240ab4..9bf65301f103 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/commands/impl/RecentFilesCompletionCommand.kt +++ b/java/java-impl/src/com/intellij/codeInsight/completion/commands/impl/RecentFilesCompletionCommand.kt @@ -1,7 +1,10 @@ // Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.intellij.codeInsight.completion.commands.impl +import com.intellij.java.JavaBundle + class RecentFilesCompletionCommand : AbstractActionCompletionCommand("RecentFiles", "Recent files", + JavaBundle.message("command.completion.recent.files.text"), null, -150) \ No newline at end of file diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/commands/impl/RefactorThisCompletionCommand.kt b/java/java-impl/src/com/intellij/codeInsight/completion/commands/impl/RefactorThisCompletionCommand.kt index a3708f2333e7..98fe187239ab 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/commands/impl/RefactorThisCompletionCommand.kt +++ b/java/java-impl/src/com/intellij/codeInsight/completion/commands/impl/RefactorThisCompletionCommand.kt @@ -1,7 +1,10 @@ // Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.intellij.codeInsight.completion.commands.impl +import com.intellij.idea.ActionsBundle + class RefactorThisCompletionCommand : AbstractActionCompletionCommand("Refactorings.QuickListPopupAction", "Refactor", + ActionsBundle.message("action.Refactorings.QuickListPopupAction.text"), null, -100) \ No newline at end of file diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/commands/impl/RenameActionCompletionCommand.kt b/java/java-impl/src/com/intellij/codeInsight/completion/commands/impl/RenameActionCompletionCommand.kt index 2f5cd6a679c3..6e38cf0e9db2 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/commands/impl/RenameActionCompletionCommand.kt +++ b/java/java-impl/src/com/intellij/codeInsight/completion/commands/impl/RenameActionCompletionCommand.kt @@ -1,8 +1,10 @@ // Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.intellij.codeInsight.completion.commands.impl +import com.intellij.idea.ActionsBundle import com.intellij.openapi.actionSystem.IdeActions class RenameActionCompletionCommand : AbstractActionCompletionCommand(IdeActions.ACTION_RENAME, "rename", + ActionsBundle.message("action.RenameElement.text"), null) \ No newline at end of file diff --git a/java/openapi/resources/messages/JavaBundle.properties b/java/openapi/resources/messages/JavaBundle.properties index 82bc881e3262..354be6836c7a 100644 --- a/java/openapi/resources/messages/JavaBundle.properties +++ b/java/openapi/resources/messages/JavaBundle.properties @@ -1970,4 +1970,10 @@ checkbox.check.for.jdk.updates=Check for JDK updates intention.family.name.rename.to.ignored=Rename to ignored tooltip.variable.used=Variable ''{0}'' is used +command.completion.filter.hint=press '.' to show actions +command.completion.generate.text=Generate ''{0}'' +command.completion.inline.text=Inline +command.completion.project.tool.text=Open Project tool window +command.completion.recent.files.text=Open recent files popup + advanced.setting.java.show.irrelevant.templates.in.source.roots=Show irrelevant New File templates in Java source roots \ No newline at end of file