diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp index 5956f0854035925be99402b838cfab92157bb174..849e27dd140645ad22a10550502375fe6df25f4a 100644 --- a/src/plugins/git/gitclient.cpp +++ b/src/plugins/git/gitclient.cpp @@ -408,7 +408,7 @@ VcsBase::VcsBaseEditorWidget *GitClient::createVcsEditor(const Core::Id &id, QTC_ASSERT(rc, return 0); rc->setSource(source); if (codecType == CodecSource) { - rc->setCodec(VcsBase::VcsBaseEditorWidget::getCodec(source)); + rc->setCodec(getSourceCodec(source)); } else if (codecType == CodecLogOutput) { QString encodingName = readConfigValue(source, QLatin1String("i18n.logOutputEncoding")); if (encodingName.isEmpty()) @@ -675,6 +675,16 @@ void GitClient::slotBlameRevisionRequested(const QString &source, QString change blame(fi.absolutePath(), QStringList(), fi.fileName(), change, lineNumber); } +QTextCodec *GitClient::getSourceCodec(const QString &file) const +{ + if (QFileInfo(file).isFile()) + return VcsBase::VcsBaseEditorWidget::getCodec(file); + 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, const QStringList &args, const QString &fileName, diff --git a/src/plugins/git/gitclient.h b/src/plugins/git/gitclient.h index 3746b420cc4ef8ead50ab5a0872376a941c102a8..c2375287993d347012f3ac88a1a89f39cca9f8bf 100644 --- a/src/plugins/git/gitclient.h +++ b/src/plugins/git/gitclient.h @@ -233,6 +233,7 @@ private slots: void slotBlameRevisionRequested(const QString &source, QString change, int lineNumber); private: + QTextCodec *getSourceCodec(const QString &file) const; VcsBase::VcsBaseEditorWidget *findExistingVCSEditor(const char *registerDynamicProperty, const QString &dynamicPropertyValue) const; enum CodecType { CodecSource, CodecLogOutput, CodecNone };