diff --git a/src/plugins/projectexplorer/session.cpp b/src/plugins/projectexplorer/session.cpp index f9e1e758e8d..cdadc7e9474 100644 --- a/src/plugins/projectexplorer/session.cpp +++ b/src/plugins/projectexplorer/session.cpp @@ -831,7 +831,7 @@ void SessionManager::setEditorCodec(Core::IEditor *editor, const QString &fileNa if (TextEditor::ITextEditor *textEditor = qobject_cast(editor)) if (Project *project = projectForFile(fileName)) { if (QTextCodec *codec = project->editorConfiguration()->defaultTextCodec()) - textEditor->setTextCodec(codec); + textEditor->setTextCodec(codec, TextEditor::ITextEditor::TextCodecFromProjectSetting); } } diff --git a/src/plugins/qmljseditor/qmljseditor.cpp b/src/plugins/qmljseditor/qmljseditor.cpp index 4ed8f993dae..3806d673856 100644 --- a/src/plugins/qmljseditor/qmljseditor.cpp +++ b/src/plugins/qmljseditor/qmljseditor.cpp @@ -659,6 +659,7 @@ QmlJSTextEditor::QmlJSTextEditor(QWidget *parent) : connect(m_cursorPositionTimer, SIGNAL(timeout()), this, SLOT(updateCursorPositionNow())); baseTextDocument()->setSyntaxHighlighter(new Highlighter(document())); + baseTextDocument()->setCodec(QTextCodec::codecForName("UTF-8")); // qml files are defined to be utf-8 m_modelManager = ExtensionSystem::PluginManager::instance()->getObject(); m_contextPane = ExtensionSystem::PluginManager::instance()->getObject(); diff --git a/src/plugins/qmljseditor/qmljseditoreditable.cpp b/src/plugins/qmljseditor/qmljseditoreditable.cpp index d18a3f9d7fb..72dca9d5534 100644 --- a/src/plugins/qmljseditor/qmljseditoreditable.cpp +++ b/src/plugins/qmljseditor/qmljseditoreditable.cpp @@ -93,4 +93,11 @@ QString QmlJSEditorEditable::preferredModeType() const return QString(); } +void QmlJSEditorEditable::setTextCodec(QTextCodec *codec, TextCodecReason reason) +{ + if (reason != TextCodecOtherReason) // qml is defined to be utf8 + return; + editor()->setTextCodec(codec); +} + } // namespace QmlJSEditor diff --git a/src/plugins/qmljseditor/qmljseditoreditable.h b/src/plugins/qmljseditor/qmljseditoreditable.h index 8854aa3ddc8..4003538bb5a 100644 --- a/src/plugins/qmljseditor/qmljseditoreditable.h +++ b/src/plugins/qmljseditor/qmljseditoreditable.h @@ -54,6 +54,8 @@ public: bool isTemporary() const { return false; } virtual bool open(const QString & fileName); virtual QString preferredModeType() const; + void setTextCodec(QTextCodec *codec, TextCodecReason = TextCodecOtherReason); + private: Core::Context m_context; diff --git a/src/plugins/texteditor/basetexteditor.h b/src/plugins/texteditor/basetexteditor.h index 174dadafcba..c9984dd7ba9 100644 --- a/src/plugins/texteditor/basetexteditor.h +++ b/src/plugins/texteditor/basetexteditor.h @@ -588,7 +588,7 @@ public: void setContextHelpId(const QString &id) { m_contextHelpId = id; } QString contextHelpId() const; // from IContext - inline void setTextCodec(QTextCodec *codec) { e->setTextCodec(codec); } + inline void setTextCodec(QTextCodec *codec, TextCodecReason = TextCodecOtherReason) { e->setTextCodec(codec); } inline QTextCodec *textCodec() const { return e->textCodec(); } diff --git a/src/plugins/texteditor/itexteditor.h b/src/plugins/texteditor/itexteditor.h index 6d21c68702c..1a0f4b3ed63 100644 --- a/src/plugins/texteditor/itexteditor.h +++ b/src/plugins/texteditor/itexteditor.h @@ -119,7 +119,13 @@ public: virtual void setContextHelpId(const QString &) = 0; - virtual void setTextCodec(QTextCodec *) = 0; + enum TextCodecReason { + TextCodecOtherReason, + TextCodecFromSystemSetting, + TextCodecFromProjectSetting + }; + + virtual void setTextCodec(QTextCodec *, TextCodecReason reason = TextCodecOtherReason) = 0; virtual QTextCodec *textCodec() const = 0; static QMap openedTextEditorsContents();