forked from qt-creator/qt-creator
TextEditor: avoid creating an highlighter to check a type
check the type after construcing the highlighter instead and save that information. Change-Id: I7d942dae4be8471dba90dd266267ff7fa1b6f440 Reviewed-by: Artem Sokolovskii <artem.sokolovskii@qt.io>
This commit is contained in:
@@ -210,12 +210,13 @@ void reload()
|
|||||||
highlightRepository()->reload();
|
highlightRepository()->reload();
|
||||||
for (auto editor : Core::DocumentModel::editorsForOpenedDocuments()) {
|
for (auto editor : Core::DocumentModel::editorsForOpenedDocuments()) {
|
||||||
if (auto textEditor = qobject_cast<BaseTextEditor *>(editor)) {
|
if (auto textEditor = qobject_cast<BaseTextEditor *>(editor)) {
|
||||||
auto highlighterCreator = textEditor->textDocument()->syntaxHighlighterRunner()->creator();
|
if (auto highlighterRunner = textEditor->textDocument()->syntaxHighlighterRunner();
|
||||||
if (highlighterCreator && qobject_cast<Highlighter *>(highlighterCreator()))
|
highlighterRunner && highlighterRunner->useGenericHighlighter()) {
|
||||||
textEditor->editorWidget()->configureGenericHighlighter();
|
textEditor->editorWidget()->configureGenericHighlighter();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void handleShutdown()
|
void handleShutdown()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
#include "fontsettings.h"
|
#include "fontsettings.h"
|
||||||
#include "textdocumentlayout.h"
|
#include "textdocumentlayout.h"
|
||||||
#include "texteditorsettings.h"
|
#include "texteditorsettings.h"
|
||||||
|
#include "highlighter.h"
|
||||||
|
|
||||||
#include <utils/textutils.h>
|
#include <utils/textutils.h>
|
||||||
|
|
||||||
@@ -92,13 +93,13 @@ public:
|
|||||||
|
|
||||||
void rehighlight() { m_highlighter->rehighlight(); }
|
void rehighlight() { m_highlighter->rehighlight(); }
|
||||||
|
|
||||||
signals:
|
|
||||||
void resultsReady(const QList<SyntaxHighlighter::Result> &result);
|
|
||||||
|
|
||||||
private:
|
|
||||||
std::unique_ptr<SyntaxHighlighter> m_highlighter;
|
std::unique_ptr<SyntaxHighlighter> m_highlighter;
|
||||||
QTextDocument *m_document = nullptr;
|
QTextDocument *m_document = nullptr;
|
||||||
FontSettings m_fontSettings;
|
FontSettings m_fontSettings;
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void resultsReady(const QList<SyntaxHighlighter::Result> &result);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// ----------------------------- BaseSyntaxHighlighterRunner --------------------------------------
|
// ----------------------------- BaseSyntaxHighlighterRunner --------------------------------------
|
||||||
@@ -110,6 +111,8 @@ BaseSyntaxHighlighterRunner::BaseSyntaxHighlighterRunner(
|
|||||||
: d(new SyntaxHighlighterRunnerPrivate(creator, document, fontSettings))
|
: d(new SyntaxHighlighterRunnerPrivate(creator, document, fontSettings))
|
||||||
, m_document(document)
|
, m_document(document)
|
||||||
{
|
{
|
||||||
|
m_useGenericHighlighter = qobject_cast<Highlighter *>(d->m_highlighter.get());
|
||||||
|
|
||||||
if (document == nullptr)
|
if (document == nullptr)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@@ -176,6 +179,11 @@ void BaseSyntaxHighlighterRunner::changeDocument(int from, int charsRemoved, int
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool BaseSyntaxHighlighterRunner::useGenericHighlighter() const
|
||||||
|
{
|
||||||
|
return m_useGenericHighlighter;
|
||||||
|
}
|
||||||
|
|
||||||
void BaseSyntaxHighlighterRunner::setExtraFormats(
|
void BaseSyntaxHighlighterRunner::setExtraFormats(
|
||||||
const QMap<int, QList<QTextLayout::FormatRange>> &formatMap)
|
const QMap<int, QList<QTextLayout::FormatRange>> &formatMap)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -48,9 +48,10 @@ public:
|
|||||||
void setDefinitionName(const QString &name);
|
void setDefinitionName(const QString &name);
|
||||||
|
|
||||||
QTextDocument *document() const { return m_document; }
|
QTextDocument *document() const { return m_document; }
|
||||||
SyntaxHighLighterCreator creator() const { return m_creator; }
|
bool useGenericHighlighter() const;
|
||||||
|
|
||||||
bool syntaxInfoUpdated() const { return m_syntaxInfoUpdated == SyntaxHighlighter::State::Done; }
|
bool syntaxInfoUpdated() const { return m_syntaxInfoUpdated == SyntaxHighlighter::State::Done; }
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void highlightingFinished();
|
void highlightingFinished();
|
||||||
|
|
||||||
@@ -63,7 +64,7 @@ protected:
|
|||||||
SyntaxHighlighter::State m_syntaxInfoUpdated = SyntaxHighlighter::State::Done;
|
SyntaxHighlighter::State m_syntaxInfoUpdated = SyntaxHighlighter::State::Done;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
SyntaxHighLighterCreator m_creator;
|
bool m_useGenericHighlighter = false;
|
||||||
QString m_definitionName;
|
QString m_definitionName;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user