From 8aa1c9bc37dd060b188b4e6389b5c8063f8754d8 Mon Sep 17 00:00:00 2001
From: Orgad Shaneh <orgad.shaneh@audiocodes.com>
Date: Mon, 1 Jul 2013 22:45:27 +0300
Subject: [PATCH] VCS: Remove removeColorCodes

status output can be uncolorized using the git config value
color.status=false (works for short status since git 1.7.0)

Change-Id: I0887ab9a02f4c98fe54a94a53ffcd4f91fef8699
Reviewed-by: hjk <hjk121@nokiamail.com>
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
---
 src/plugins/git/gitclient.cpp   | 11 ++++++++---
 src/plugins/vcsbase/command.cpp | 26 --------------------------
 src/plugins/vcsbase/command.h   |  4 ----
 3 files changed, 8 insertions(+), 33 deletions(-)

diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp
index 780c58cb191..2c3db974d08 100644
--- a/src/plugins/git/gitclient.cpp
+++ b/src/plugins/git/gitclient.cpp
@@ -777,6 +777,12 @@ static inline QString currentDocumentPath()
     return QString();
 }
 
+static inline QStringList statusArguments()
+{
+    return QStringList() << QLatin1String("-c") << QLatin1String("color.status=false")
+                         << QLatin1String("status");
+}
+
 // ---------------- GitClient
 
 const char *GitClient::stashNamePrefix = "stash@{";
@@ -1089,8 +1095,7 @@ void GitClient::merge(const QString &workingDirectory, const QStringList &unmerg
 
 void GitClient::status(const QString &workingDirectory)
 {
-    // @TODO: Use "--no-color" once it is supported
-    QStringList statusArgs(QLatin1String("status"));
+    QStringList statusArgs = statusArguments();
     statusArgs << QLatin1String("-u");
     VcsBase::VcsBaseOutputWindow *outwin = outputWindow();
     outwin->setRepository(workingDirectory);
@@ -2368,7 +2373,7 @@ GitClient::StatusResult GitClient::gitStatus(const QString &workingDirectory, St
     QByteArray outputText;
     QByteArray errorText;
 
-    QStringList statusArgs(QLatin1String("status"));
+    QStringList statusArgs = statusArguments();
     if (mode & NoUntracked)
         statusArgs << QLatin1String("--untracked-files=no");
     else
diff --git a/src/plugins/vcsbase/command.cpp b/src/plugins/vcsbase/command.cpp
index 1872f16fabf..ff9dad131ea 100644
--- a/src/plugins/vcsbase/command.cpp
+++ b/src/plugins/vcsbase/command.cpp
@@ -284,9 +284,6 @@ void Command::run()
         }
     }
 
-    if (ok && d->m_jobs.front().arguments.at(0) == QLatin1String("status"))
-        removeColorCodes(&stdOut);
-
     d->m_lastExecSuccess = ok;
     d->m_lastExecExitCode = exitCode;
 
@@ -307,29 +304,6 @@ void Command::run()
     this->deleteLater();
 }
 
-// Clean output from carriage return and ANSI color codes.
-// @TODO: Remove once all relevant commands support "--no-color",
-//("status" is  missing it as of git 1.6.2)
-
-void Command::removeColorCodes(QByteArray *data)
-{
-    // Remove ansi color codes that look like "ESC[<stuff>m"
-    const QByteArray ansiColorEscape("\033[");
-    int escapePos = 0;
-    while (true) {
-        const int nextEscapePos = data->indexOf(ansiColorEscape, escapePos);
-        if (nextEscapePos == -1)
-            break;
-        const int endEscapePos = data->indexOf('m', nextEscapePos + ansiColorEscape.size());
-        if (endEscapePos != -1) {
-            data->remove(nextEscapePos, endEscapePos - nextEscapePos + 1);
-            escapePos = nextEscapePos;
-        } else {
-            escapePos = nextEscapePos + ansiColorEscape.size();
-        }
-    }
-}
-
 const QVariant &Command::cookie() const
 {
     return d->m_cookie;
diff --git a/src/plugins/vcsbase/command.h b/src/plugins/vcsbase/command.h
index b84bf12cdf8..e1c61829999 100644
--- a/src/plugins/vcsbase/command.h
+++ b/src/plugins/vcsbase/command.h
@@ -66,10 +66,6 @@ public:
     bool lastExecutionSuccess() const;
     int lastExecutionExitCode() const;
 
-    // Clean output from carriage return and ANSI color codes
-    // Workaround until all relevant commands support "--no-color"
-    static void removeColorCodes(QByteArray *data);
-
     const QString &binaryPath() const;
     const QString &workingDirectory() const;
     const QProcessEnvironment &processEnvironment() const;
-- 
GitLab