forked from qt-creator/qt-creator
Git: Consolidate codec configuration retrieval
Change-Id: I6c099a5d0e4ffa180289bbecfe6d552b39d4aeaf Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
This commit is contained in:
committed by
Orgad Shaneh
parent
b7f20d3da4
commit
0d61ddce84
@@ -424,7 +424,8 @@ void GitDiffHandler::collectShowDescription(const QString &id)
|
|||||||
|
|
||||||
m_editorController->clear(m_waitMessage);
|
m_editorController->clear(m_waitMessage);
|
||||||
VcsBase::Command *command = new VcsBase::Command(m_gitPath, m_workingDirectory, m_processEnvironment);
|
VcsBase::Command *command = new VcsBase::Command(m_gitPath, m_workingDirectory, m_processEnvironment);
|
||||||
command->setCodec(GitPlugin::instance()->gitClient()->commitEncoding(m_workingDirectory));
|
command->setCodec(GitPlugin::instance()->gitClient()->encoding(m_workingDirectory,
|
||||||
|
"i18n.commitEncoding"));
|
||||||
connect(command, SIGNAL(output(QString)), this, SLOT(slotShowDescriptionReceived(QString)));
|
connect(command, SIGNAL(output(QString)), this, SLOT(slotShowDescriptionReceived(QString)));
|
||||||
QStringList arguments;
|
QStringList arguments;
|
||||||
arguments << QLatin1String("show") << QLatin1String("-s")
|
arguments << QLatin1String("show") << QLatin1String("-s")
|
||||||
@@ -1132,14 +1133,10 @@ VcsBase::VcsBaseEditorWidget *GitClient::createVcsEditor(
|
|||||||
this, SLOT(slotBlameRevisionRequested(QString,QString,QString,int)));
|
this, SLOT(slotBlameRevisionRequested(QString,QString,QString,int)));
|
||||||
QTC_ASSERT(rc, return 0);
|
QTC_ASSERT(rc, return 0);
|
||||||
rc->setSource(source);
|
rc->setSource(source);
|
||||||
if (codecType == CodecSource) {
|
if (codecType == CodecSource)
|
||||||
rc->setCodec(getSourceCodec(source));
|
rc->setCodec(getSourceCodec(source));
|
||||||
} else if (codecType == CodecLogOutput) {
|
else if (codecType == CodecLogOutput)
|
||||||
QString encodingName = readConfigValue(source, QLatin1String("i18n.logOutputEncoding"));
|
rc->setCodec(encoding(source, "i18n.logOutputEncoding"));
|
||||||
if (encodingName.isEmpty())
|
|
||||||
encodingName = QLatin1String("utf-8");
|
|
||||||
rc->setCodec(QTextCodec::codecForName(encodingName.toLocal8Bit()));
|
|
||||||
}
|
|
||||||
|
|
||||||
rc->setForceReadOnly(true);
|
rc->setForceReadOnly(true);
|
||||||
|
|
||||||
@@ -1556,12 +1553,8 @@ void GitClient::slotBlameRevisionRequested(const QString &workingDirectory, cons
|
|||||||
|
|
||||||
QTextCodec *GitClient::getSourceCodec(const QString &file) const
|
QTextCodec *GitClient::getSourceCodec(const QString &file) const
|
||||||
{
|
{
|
||||||
if (QFileInfo(file).isFile())
|
return QFileInfo(file).isFile() ? VcsBase::VcsBaseEditorWidget::getCodec(file)
|
||||||
return VcsBase::VcsBaseEditorWidget::getCodec(file);
|
: encoding(file, "gui.encoding");
|
||||||
QString encodingName = readConfigValue(file, QLatin1String("gui.encoding"));
|
|
||||||
if (encodingName.isEmpty())
|
|
||||||
encodingName = QLatin1String("utf-8");
|
|
||||||
return QTextCodec::codecForName(encodingName.toLocal8Bit());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void GitClient::blame(const QString &workingDirectory,
|
void GitClient::blame(const QString &workingDirectory,
|
||||||
@@ -1705,11 +1698,7 @@ bool GitClient::synchronousLog(const QString &workingDirectory, const QStringLis
|
|||||||
const bool rc = fullySynchronousGit(workingDirectory, allArguments, &outputText, &errorText,
|
const bool rc = fullySynchronousGit(workingDirectory, allArguments, &outputText, &errorText,
|
||||||
flags);
|
flags);
|
||||||
if (rc) {
|
if (rc) {
|
||||||
QString encodingName = readConfigValue(workingDirectory, QLatin1String("i18n.logOutputEncoding"));
|
if (QTextCodec *codec = encoding(workingDirectory, "i18n.logOutputEncoding"))
|
||||||
if (encodingName.isEmpty())
|
|
||||||
encodingName = QLatin1String("utf-8");
|
|
||||||
QTextCodec *codec = QTextCodec::codecForName(encodingName.toLocal8Bit());
|
|
||||||
if (codec)
|
|
||||||
*output = codec->toUnicode(outputText);
|
*output = codec->toUnicode(outputText);
|
||||||
else
|
else
|
||||||
*output = commandOutputFromLocal8Bit(outputText);
|
*output = commandOutputFromLocal8Bit(outputText);
|
||||||
@@ -3027,15 +3016,15 @@ QString GitClient::gitBinaryPath(bool *ok, QString *errorMessage) const
|
|||||||
return settings()->gitBinaryPath(ok, errorMessage);
|
return settings()->gitBinaryPath(ok, errorMessage);
|
||||||
}
|
}
|
||||||
|
|
||||||
QTextCodec *GitClient::commitEncoding(const QString &workingDirectory)
|
QTextCodec *GitClient::encoding(const QString &workingDirectory, const QByteArray &configVar) const
|
||||||
{
|
{
|
||||||
QByteArray encoding = readConfigValue(workingDirectory, QLatin1String("i18n.commitEncoding"))
|
QByteArray codecName = readConfigValue(workingDirectory, QLatin1String(configVar))
|
||||||
.toLocal8Bit();
|
.toLocal8Bit();
|
||||||
// Set default commit encoding to 'UTF-8', when it's not set,
|
// Set default commit encoding to 'UTF-8', when it's not set,
|
||||||
// to solve displaying error of commit log with non-latin characters.
|
// to solve displaying error of commit log with non-latin characters.
|
||||||
if (encoding.isEmpty())
|
if (codecName.isEmpty())
|
||||||
encoding = "UTF-8";
|
codecName = "UTF-8";
|
||||||
return QTextCodec::codecForName(encoding);
|
return QTextCodec::codecForName(codecName);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool GitClient::getCommitData(const QString &workingDirectory,
|
bool GitClient::getCommitData(const QString &workingDirectory,
|
||||||
@@ -3117,7 +3106,7 @@ bool GitClient::getCommitData(const QString &workingDirectory,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
commitData.commitEncoding = commitEncoding(workingDirectory);
|
commitData.commitEncoding = encoding(workingDirectory, "i18n.commitEncoding");
|
||||||
|
|
||||||
// Get the commit template or the last commit message
|
// Get the commit template or the last commit message
|
||||||
switch (commitData.commitType) {
|
switch (commitData.commitType) {
|
||||||
|
|||||||
@@ -285,7 +285,7 @@ public:
|
|||||||
|
|
||||||
QString readConfigValue(const QString &workingDirectory, const QString &configVar) const;
|
QString readConfigValue(const QString &workingDirectory, const QString &configVar) const;
|
||||||
|
|
||||||
QTextCodec *commitEncoding(const QString &workingDirectory);
|
QTextCodec *encoding(const QString &workingDirectory, const QByteArray &configVar) const;
|
||||||
bool getCommitData(const QString &workingDirectory, QString *commitTemplate,
|
bool getCommitData(const QString &workingDirectory, QString *commitTemplate,
|
||||||
CommitData &commitData, QString *errorMessage);
|
CommitData &commitData, QString *errorMessage);
|
||||||
|
|
||||||
|
|||||||
@@ -332,7 +332,8 @@ bool GitEditor::open(QString *errorString, const QString &fileName, const QStrin
|
|||||||
QFileInfo fi(fileName);
|
QFileInfo fi(fileName);
|
||||||
const QString gitPath = fi.absolutePath();
|
const QString gitPath = fi.absolutePath();
|
||||||
setSource(gitPath);
|
setSource(gitPath);
|
||||||
baseTextDocument()->setCodec(GitPlugin::instance()->gitClient()->commitEncoding(gitPath));
|
baseTextDocument()->setCodec(
|
||||||
|
GitPlugin::instance()->gitClient()->encoding(gitPath, "i18n.commitEncoding"));
|
||||||
}
|
}
|
||||||
return VcsBaseEditorWidget::open(errorString, fileName, realFileName);
|
return VcsBaseEditorWidget::open(errorString, fileName, realFileName);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user