From c1225ea3f4bd534f8edc982e77d300c6e93219c7 Mon Sep 17 00:00:00 2001 From: Nikolai Kosjar Date: Thu, 14 Nov 2013 10:59:46 +0100 Subject: CppTools: Use editor manager's codec as fallback ...for reading not already opened files. This partly reverts commit f7c68f6. In case TextFileFormat::detect() fails, the user configurable editor manager's codec is used instead of QTextCodec::codecForLocale(). Adds also a qWarning() to easier detect encoding errors. Task-number: QTCREATORBUG-10378 Change-Id: I0fa4e6b898ed090d85414ce2a001f11b115a42d3 Reviewed-by: Oswald Buddenhagen Reviewed-by: Eike Ziller Reviewed-by: Erik Verbruggen --- src/plugins/cpptools/cpppreprocessor.cpp | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) (limited to 'src/plugins/cpptools/cpppreprocessor.cpp') diff --git a/src/plugins/cpptools/cpppreprocessor.cpp b/src/plugins/cpptools/cpppreprocessor.cpp index 56668fe644..f8d14bf123 100644 --- a/src/plugins/cpptools/cpppreprocessor.cpp +++ b/src/plugins/cpptools/cpppreprocessor.cpp @@ -2,11 +2,15 @@ #include "cppmodelmanager.h" +#include + +#include #include #include #include #include +#include /*! * \class CppTools::Internal::CppPreprocessor @@ -30,7 +34,8 @@ CppPreprocessor::CppPreprocessor(QPointer modelManager, m_modelManager(modelManager), m_dumpFileNameWhileParsing(dumpFileNameWhileParsing), m_preprocess(this, &m_env), - m_revision(0) + m_revision(0), + m_defaultCodec(Core::EditorManager::defaultTextCodec()) { m_preprocess.setKeepComments(true); } @@ -41,7 +46,8 @@ CppPreprocessor::CppPreprocessor(QPointer modelManager, const S m_modelManager(modelManager), m_dumpFileNameWhileParsing(dumpFileNameWhileParsing), m_preprocess(this, &m_env), - m_revision(0) + m_revision(0), + m_defaultCodec(Core::EditorManager::defaultTextCodec()) { m_preprocess.setKeepComments(true); } @@ -182,9 +188,14 @@ void CppPreprocessor::getFileContents(const QString &absoluteFilePath, return; } - QString errStr; - if (contents) - Utils::TextFileFormat::readFileUTF8(absoluteFilePath, contents, &errStr); + if (contents) { + QString error; + if (Utils::TextFileFormat::readFileUTF8(absoluteFilePath, m_defaultCodec, contents, &error) + != Utils::TextFileFormat::ReadSuccess) { + qWarning("Error reading file \"%s\": \"%s\".", qPrintable(absoluteFilePath), + qPrintable(error)); + } + } if (revision) *revision = 0; } -- cgit v1.2.1