forked from qt-creator/qt-creator
CppEditor: Allow force highlighting if using clang
...so we can rehighlight if it's requested by the editor. This is e.g. necessary if the font size changes. Task-number: QTCREATORBUG-11502 Change-Id: I608921899fc37fcf1394db9ff041e6b378196bdd Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
This commit is contained in:
@@ -237,7 +237,7 @@ Document::Ptr CppEditorSupport::lastSemanticInfoDocument() const
|
||||
return m_lastSemanticInfo.doc;
|
||||
}
|
||||
|
||||
void CppEditorSupport::recalculateSemanticInfoDetached(bool force)
|
||||
void CppEditorSupport::recalculateSemanticInfoDetached(ForceReason forceReason)
|
||||
{
|
||||
// Block premature calculation caused by CppEditorPlugin::currentEditorChanged
|
||||
// when the editor is created.
|
||||
@@ -245,12 +245,13 @@ void CppEditorSupport::recalculateSemanticInfoDetached(bool force)
|
||||
return;
|
||||
|
||||
m_futureSemanticInfo.cancel();
|
||||
const bool force = forceReason != NoForce;
|
||||
SemanticInfo::Source source = currentSource(force);
|
||||
m_futureSemanticInfo = QtConcurrent::run<CppEditorSupport, void>(
|
||||
&CppEditorSupport::recalculateSemanticInfoDetached_helper, this, source);
|
||||
|
||||
if (force && m_highlightingSupport && !m_highlightingSupport->requiresSemanticInfo())
|
||||
startHighlighting();
|
||||
startHighlighting(forceReason);
|
||||
}
|
||||
|
||||
CppCompletionAssistProvider *CppEditorSupport::completionAssistProvider() const
|
||||
@@ -352,14 +353,14 @@ void CppEditorSupport::onDocumentUpdated(Document::Ptr doc)
|
||||
|| m_lastSemanticInfo.doc->translationUnit()->ast() == 0
|
||||
|| m_lastSemanticInfo.doc->fileName() != fileName()))) {
|
||||
m_initialized = true;
|
||||
recalculateSemanticInfoDetached(/* force = */ true);
|
||||
recalculateSemanticInfoDetached(ForceDueToMissingSemanticInfo);
|
||||
}
|
||||
|
||||
// notify the editor that the document is updated
|
||||
emit documentUpdated();
|
||||
}
|
||||
|
||||
void CppEditorSupport::startHighlighting()
|
||||
void CppEditorSupport::startHighlighting(ForceReason forceReason)
|
||||
{
|
||||
if (!m_highlightingSupport)
|
||||
return;
|
||||
@@ -395,8 +396,8 @@ void CppEditorSupport::startHighlighting()
|
||||
m_lastHighlightOnCompleteSemanticInfo = complete;
|
||||
emit highlighterStarted(&m_highlighter, m_lastHighlightRevision);
|
||||
} else {
|
||||
const unsigned revision = currentSource(false).revision;
|
||||
if (m_lastHighlightRevision == revision)
|
||||
const unsigned revision = editorRevision();
|
||||
if (forceReason != ForceDueEditorRequest && m_lastHighlightRevision == revision)
|
||||
return;
|
||||
|
||||
m_highlighter.cancel();
|
||||
|
||||
Reference in New Issue
Block a user