From cfe61f6431bfe7f09f00bf548e21ad8ad0aea620 Mon Sep 17 00:00:00 2001 From: Leandro Melo <leandro.melo@nokia.com> Date: Wed, 29 Sep 2010 09:14:30 +0200 Subject: [PATCH] Generic highlighter: Make the editor more flexible concerning highlighting. Now the plain text editor only tries to apply a highlight configuration if the MIME type passed is valid. Otherwise, it should behave as an ordinary trivial editor and should not miss a highlight definition. --- src/plugins/texteditor/plaintexteditor.cpp | 50 +++++++++++----------- 1 file changed, 26 insertions(+), 24 deletions(-) diff --git a/src/plugins/texteditor/plaintexteditor.cpp b/src/plugins/texteditor/plaintexteditor.cpp index 67b99faabfc..81b30c9e322 100644 --- a/src/plugins/texteditor/plaintexteditor.cpp +++ b/src/plugins/texteditor/plaintexteditor.cpp @@ -62,7 +62,7 @@ PlainTextEditorEditable::PlainTextEditorEditable(PlainTextEditor *editor) PlainTextEditor::PlainTextEditor(QWidget *parent) : BaseTextEditor(parent), - m_isMissingSyntaxDefinition(true) + m_isMissingSyntaxDefinition(false) { setRevisionsVisible(true); setMarksVisible(true); @@ -164,8 +164,10 @@ void PlainTextEditor::setTabSettings(const TextEditor::TabSettings &ts) void PlainTextEditor::configure() { + Core::MimeType mimeType; if (file()) - configure(Core::ICore::instance()->mimeDatabase()->findByFile(file()->fileName())); + mimeType = Core::ICore::instance()->mimeDatabase()->findByFile(file()->fileName()); + configure(mimeType); } void PlainTextEditor::configure(const Core::MimeType &mimeType) @@ -173,39 +175,39 @@ void PlainTextEditor::configure(const Core::MimeType &mimeType) Highlighter *highlighter = new Highlighter(); baseTextDocument()->setSyntaxHighlighter(highlighter); - m_isMissingSyntaxDefinition = true; setCodeFoldingSupported(false); setCodeFoldingVisible(false); - QString definitionId; if (!mimeType.isNull()) { + m_isMissingSyntaxDefinition = true; + const QString &type = mimeType.type(); setMimeType(type); - definitionId = Manager::instance()->definitionIdByMimeType(type); + QString definitionId = Manager::instance()->definitionIdByMimeType(type); if (definitionId.isEmpty()) definitionId = findDefinitionId(mimeType, true); - } - - if (!definitionId.isEmpty()) { - m_isMissingSyntaxDefinition = false; - const QSharedPointer<HighlightDefinition> &definition = - Manager::instance()->definition(definitionId); - if (!definition.isNull()) { - highlighter->setDefaultContext(definition->initialContext()); - - m_commentDefinition.setAfterWhiteSpaces(definition->isCommentAfterWhiteSpaces()); - m_commentDefinition.setSingleLine(definition->singleLineComment()); - m_commentDefinition.setMultiLineStart(definition->multiLineCommentStart()); - m_commentDefinition.setMultiLineEnd(definition->multiLineCommentEnd()); - setCodeFoldingSupported(true); - setCodeFoldingVisible(true); - } - } else if (file()) { - const QString &fileName = file()->fileName(); - if (TextEditorSettings::instance()->highlighterSettings().isIgnoredFilePattern(fileName)) + if (!definitionId.isEmpty()) { m_isMissingSyntaxDefinition = false; + const QSharedPointer<HighlightDefinition> &definition = + Manager::instance()->definition(definitionId); + if (!definition.isNull()) { + highlighter->setDefaultContext(definition->initialContext()); + + m_commentDefinition.setAfterWhiteSpaces(definition->isCommentAfterWhiteSpaces()); + m_commentDefinition.setSingleLine(definition->singleLineComment()); + m_commentDefinition.setMultiLineStart(definition->multiLineCommentStart()); + m_commentDefinition.setMultiLineEnd(definition->multiLineCommentEnd()); + + setCodeFoldingSupported(true); + setCodeFoldingVisible(true); + } + } else if (file()) { + const QString &fileName = file()->fileName(); + if (TextEditorSettings::instance()->highlighterSettings().isIgnoredFilePattern(fileName)) + m_isMissingSyntaxDefinition = false; + } } setFontSettings(TextEditorSettings::instance()->fontSettings()); -- GitLab