From 05852b07c6090ad40fde7d3cafe0b074604f7ac5 Mon Sep 17 00:00:00 2001
From: Alex Plate <aleksei.plate@jetbrains.com>
Date: Mon, 31 Oct 2022 09:51:37 +0200
Subject: [PATCH] Refactor commands output

---
 .../java/com/maddyhome/idea/vim/group/ProcessGroup.java     | 4 ++--
 .../com/maddyhome/idea/vim/helper/EngineStringHelper.kt     | 6 ++++++
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/src/main/java/com/maddyhome/idea/vim/group/ProcessGroup.java b/src/main/java/com/maddyhome/idea/vim/group/ProcessGroup.java
index 20316a4d1..3d3ba65d2 100644
--- a/src/main/java/com/maddyhome/idea/vim/group/ProcessGroup.java
+++ b/src/main/java/com/maddyhome/idea/vim/group/ProcessGroup.java
@@ -40,6 +40,7 @@ import com.maddyhome.idea.vim.command.Command;
 import com.maddyhome.idea.vim.command.VimStateMachine;
 import com.maddyhome.idea.vim.ex.ExException;
 import com.maddyhome.idea.vim.ex.InvalidCommandException;
+import com.maddyhome.idea.vim.helper.EngineStringHelperKt;
 import com.maddyhome.idea.vim.helper.UiHelper;
 import com.maddyhome.idea.vim.newapi.IjExecutionContext;
 import com.maddyhome.idea.vim.newapi.IjVimEditor;
@@ -262,10 +263,9 @@ public class ProcessGroup extends VimProcessGroupBase {
       if (exitCode != null && exitCode != 0) {
         VimPlugin.showMessage("shell returned " + exitCode);
         VimPlugin.indicateError();
-        return output.getStderr() + output.getStdout();
       }
 
-      return output.getStdout();
+      return EngineStringHelperKt.removeAsciiColorCodes(output.getStderr() + output.getStdout());
     }, "IdeaVim - !" + command, true, ((IjVimEditor) editor).getEditor().getProject());
   }
 
diff --git a/vim-engine/src/main/kotlin/com/maddyhome/idea/vim/helper/EngineStringHelper.kt b/vim-engine/src/main/kotlin/com/maddyhome/idea/vim/helper/EngineStringHelper.kt
index 5f0b60ac0..08cace47f 100644
--- a/vim-engine/src/main/kotlin/com/maddyhome/idea/vim/helper/EngineStringHelper.kt
+++ b/vim-engine/src/main/kotlin/com/maddyhome/idea/vim/helper/EngineStringHelper.kt
@@ -53,3 +53,9 @@ object EngineStringHelper {
     return c.toString()
   }
 }
+
+// https://stackoverflow.com/a/14652763/3124227
+fun String.removeAsciiColorCodes(): String {
+  return this.replace("\u001B\\[[;\\d]*m".toRegex(), "")
+}
+