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