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:
Nikolai Kosjar
2014-03-11 14:00:57 -03:00
parent 18e6be55d7
commit cbf98ba819
3 changed files with 22 additions and 11 deletions

View File

@@ -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();