From ae4b88a06b385cb32b96cd7ce846a12a9e509687 Mon Sep 17 00:00:00 2001
From: Filipp Vakhitov <filipp.vakhitov@jetbrains.com>
Date: Fri, 31 May 2024 22:27:41 +0300
Subject: [PATCH] Remove ExEntryPanel and move its method to VimCommandLine

---
 .../idea/vim/newapi/IjExEntryPanel.kt         | 19 -------------------
 .../idea/vim/newapi/IjVimInjector.kt          |  3 ---
 .../idea/vim/ui/ex/ExEntryPanel.java          | 10 ++++++++++
 .../maddyhome/idea/vim/ui/ex/ExTextField.java |  2 +-
 .../maddyhome/idea/vim/api/ExEntryPanel.kt    | 14 --------------
 .../maddyhome/idea/vim/api/VimCommandLine.kt  |  3 +++
 .../com/maddyhome/idea/vim/api/VimInjector.kt |  3 ---
 .../idea/vim/key/consumers/DigraphConsumer.kt |  4 ++--
 8 files changed, 16 insertions(+), 42 deletions(-)
 delete mode 100644 src/main/java/com/maddyhome/idea/vim/newapi/IjExEntryPanel.kt
 delete mode 100644 vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/ExEntryPanel.kt

diff --git a/src/main/java/com/maddyhome/idea/vim/newapi/IjExEntryPanel.kt b/src/main/java/com/maddyhome/idea/vim/newapi/IjExEntryPanel.kt
deleted file mode 100644
index 25bc3db4d..000000000
--- a/src/main/java/com/maddyhome/idea/vim/newapi/IjExEntryPanel.kt
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * Copyright 2003-2023 The IdeaVim authors
- *
- * Use of this source code is governed by an MIT-style
- * license that can be found in the LICENSE.txt file or at
- * https://opensource.org/licenses/MIT.
- */
-
-package com.maddyhome.idea.vim.newapi
-
-import com.intellij.openapi.components.Service
-import com.maddyhome.idea.vim.api.ExEntryPanel
-
-@Service
-internal class IjExEntryPanel : ExEntryPanel {
-  override fun clearCurrentAction() {
-    com.maddyhome.idea.vim.ui.ex.ExEntryPanel.getInstance().entry.clearCurrentAction()
-  }
-}
diff --git a/src/main/java/com/maddyhome/idea/vim/newapi/IjVimInjector.kt b/src/main/java/com/maddyhome/idea/vim/newapi/IjVimInjector.kt
index a240ea895..2471e1c47 100644
--- a/src/main/java/com/maddyhome/idea/vim/newapi/IjVimInjector.kt
+++ b/src/main/java/com/maddyhome/idea/vim/newapi/IjVimInjector.kt
@@ -14,7 +14,6 @@ import com.intellij.openapi.diagnostic.Logger
 import com.intellij.openapi.editor.Editor
 import com.intellij.openapi.editor.textarea.TextComponentEditorImpl
 import com.maddyhome.idea.vim.api.EngineEditorHelper
-import com.maddyhome.idea.vim.api.ExEntryPanel
 import com.maddyhome.idea.vim.api.ExecutionContextManager
 import com.maddyhome.idea.vim.api.LocalOptionInitialisationScenario
 import com.maddyhome.idea.vim.api.NativeActionManager
@@ -107,8 +106,6 @@ internal class IjVimInjector : VimInjectorBase() {
 
   override val actionExecutor: VimActionExecutor
     get() = service<IjActionExecutor>()
-  override val exEntryPanel: ExEntryPanel
-    get() = service<IjExEntryPanel>()
   override val exOutputPanel: VimExOutputPanelService
     get() = object : VimExOutputPanelService {
       override fun getPanel(editor: VimEditor): VimExOutputPanel {
diff --git a/src/main/java/com/maddyhome/idea/vim/ui/ex/ExEntryPanel.java b/src/main/java/com/maddyhome/idea/vim/ui/ex/ExEntryPanel.java
index c0b468ed9..705ed2869 100644
--- a/src/main/java/com/maddyhome/idea/vim/ui/ex/ExEntryPanel.java
+++ b/src/main/java/com/maddyhome/idea/vim/ui/ex/ExEntryPanel.java
@@ -492,6 +492,16 @@ public class ExEntryPanel extends JPanel implements VimCommandLine {
     entry.updateText(string);
   }
 
+  @Override
+  public void clearPromptCharacter() {
+    entry.clearCurrentActionPromptCharacter();
+  }
+
+  @Override
+  public void clearCurrentAction() {
+    entry.clearCurrentAction();
+  }
+
   public static class LafListener implements LafManagerListener {
     @Override
     public void lookAndFeelChanged(@NotNull LafManager source) {
diff --git a/src/main/java/com/maddyhome/idea/vim/ui/ex/ExTextField.java b/src/main/java/com/maddyhome/idea/vim/ui/ex/ExTextField.java
index a795d2774..0d42d05c0 100644
--- a/src/main/java/com/maddyhome/idea/vim/ui/ex/ExTextField.java
+++ b/src/main/java/com/maddyhome/idea/vim/ui/ex/ExTextField.java
@@ -333,7 +333,7 @@ public class ExTextField extends JTextField {
     setCaretPosition(currentActionPromptCharacterOffset);
   }
 
-  private void clearCurrentActionPromptCharacter() {
+  void clearCurrentActionPromptCharacter() {
     final int offset = getCaretPosition();
     final String text = removePromptCharacter();
     updateText(text);
diff --git a/vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/ExEntryPanel.kt b/vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/ExEntryPanel.kt
deleted file mode 100644
index 6bf076ce8..000000000
--- a/vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/ExEntryPanel.kt
+++ /dev/null
@@ -1,14 +0,0 @@
-/*
- * Copyright 2003-2023 The IdeaVim authors
- *
- * Use of this source code is governed by an MIT-style
- * license that can be found in the LICENSE.txt file or at
- * https://opensource.org/licenses/MIT.
- */
-
-package com.maddyhome.idea.vim.api
-
-public interface ExEntryPanel {
-  @Deprecated("Remove it after completely removing Swing TextActions")
-  public fun clearCurrentAction()
-}
diff --git a/vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimCommandLine.kt b/vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimCommandLine.kt
index cf5f4bc98..6fed61d72 100644
--- a/vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimCommandLine.kt
+++ b/vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimCommandLine.kt
@@ -33,4 +33,7 @@ public interface VimCommandLine {
   public fun deactivate(refocusOwningEditor: Boolean, resetCaret: Boolean)
 
   public fun setPromptCharacter(char: Char)
+  public fun clearPromptCharacter()
+
+  public fun clearCurrentAction()
 }
\ No newline at end of file
diff --git a/vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimInjector.kt b/vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimInjector.kt
index aef07498e..c5959361a 100644
--- a/vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimInjector.kt
+++ b/vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimInjector.kt
@@ -108,9 +108,6 @@ public interface VimInjector {
   // Can't be fully moved to vim-engine.
   public val actionExecutor: VimActionExecutor
 
-  // Can't be fully moved to vim-engine.
-  public val exEntryPanel: ExEntryPanel
-
   // Can't be fully moved to vim-engine.
   public val exOutputPanel: VimExOutputPanelService
 
diff --git a/vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/DigraphConsumer.kt b/vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/DigraphConsumer.kt
index 715219fef..43bdf0c05 100644
--- a/vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/DigraphConsumer.kt
+++ b/vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/DigraphConsumer.kt
@@ -72,7 +72,7 @@ public class DigraphConsumer : KeyConsumer {
             return false
           } else {
             keyProcessResultBuilder.addExecutionStep { _, _, _ ->
-              injector.exEntryPanel.clearCurrentAction()
+              commandLine.clearCurrentAction()
             }
           }
         }
@@ -96,7 +96,7 @@ public class DigraphConsumer : KeyConsumer {
             return false
           } else {
             keyProcessResultBuilder.addExecutionStep { _, _, _ ->
-              injector.exEntryPanel.clearCurrentAction()
+              commandLine.clearCurrentAction()
             }
           }
         }