forked from qt-creator/qt-creator
Add flag for semantic highlighter to set diagnostics.
If the semantic highlighter does not take care of setting showing the wiggly lines for diagnostics in the editor, the model manager will do. Change-Id: Ie69fb798dd53d60ddca1668b8f586266a0daca4b Reviewed-by: Roberto Raggi <roberto.raggi@nokia.com>
This commit is contained in:
@@ -72,6 +72,8 @@ public:
|
||||
virtual ~CppHighlightingSupportFactory() = 0;
|
||||
|
||||
virtual CppHighlightingSupport *highlightingSupport(TextEditor::ITextEditor *editor) = 0;
|
||||
|
||||
virtual bool hightlighterHandlesDiagnostics() const = 0;
|
||||
};
|
||||
|
||||
} // namespace CppTools
|
||||
|
@@ -62,6 +62,9 @@ public:
|
||||
virtual ~CppHighlightingSupportInternalFactory();
|
||||
|
||||
virtual CppHighlightingSupport *highlightingSupport(TextEditor::ITextEditor *editor);
|
||||
|
||||
virtual bool hightlighterHandlesDiagnostics() const
|
||||
{ return false; }
|
||||
};
|
||||
|
||||
} // namespace Internal
|
||||
|
@@ -1099,8 +1099,6 @@ void CppModelManager::updateEditor(Document::Ptr doc)
|
||||
blockRanges.append(TextEditor::BaseTextEditorWidget::BlockRange(block.begin(), block.end()));
|
||||
}
|
||||
|
||||
QList<QTextEdit::ExtraSelection> selections;
|
||||
|
||||
// set up the format for the errors
|
||||
QTextCharFormat errorFormat;
|
||||
errorFormat.setUnderlineStyle(QTextCharFormat::WaveUnderline);
|
||||
@@ -1111,6 +1109,16 @@ void CppModelManager::updateEditor(Document::Ptr doc)
|
||||
warningFormat.setUnderlineStyle(QTextCharFormat::WaveUnderline);
|
||||
warningFormat.setUnderlineColor(Qt::darkYellow);
|
||||
|
||||
QList<Editor> todo;
|
||||
foreach (const Editor &e, m_todo) {
|
||||
if (e.textEditor != textEditor)
|
||||
todo.append(e);
|
||||
}
|
||||
Editor e;
|
||||
|
||||
if (m_highlightingFactory->hightlighterHandlesDiagnostics()) {
|
||||
e.updateSelections = false;
|
||||
} else {
|
||||
QSet<int> lines;
|
||||
QList<Document::DiagnosticMessage> messages = doc->diagnosticMessages();
|
||||
messages += extraDiagnostics(doc->fileName());
|
||||
@@ -1139,19 +1147,13 @@ void CppModelManager::updateEditor(Document::Ptr doc)
|
||||
c.movePosition(QTextCursor::EndOfBlock, QTextCursor::KeepAnchor);
|
||||
sel.cursor = c;
|
||||
sel.format.setToolTip(m.text());
|
||||
selections.append(sel);
|
||||
e.selections.append(sel);
|
||||
}
|
||||
}
|
||||
|
||||
QList<Editor> todo;
|
||||
foreach (const Editor &e, todo) {
|
||||
if (e.textEditor != textEditor)
|
||||
todo.append(e);
|
||||
}
|
||||
|
||||
Editor e;
|
||||
e.revision = ed->document()->revision();
|
||||
e.textEditor = textEditor;
|
||||
e.selections = selections;
|
||||
e.ifdefedOutBlocks = blockRanges;
|
||||
todo.append(e);
|
||||
m_todo = todo;
|
||||
@@ -1180,6 +1182,7 @@ void CppModelManager::updateEditorSelections()
|
||||
else if (editor->document()->revision() != ed.revision)
|
||||
continue; // outdated
|
||||
|
||||
if (ed.updateSelections)
|
||||
editor->setExtraSelections(TextEditor::BaseTextEditorWidget::CodeWarningsSelection,
|
||||
ed.selections);
|
||||
|
||||
|
@@ -225,8 +225,11 @@ private:
|
||||
|
||||
struct Editor {
|
||||
Editor()
|
||||
: revision(-1) {}
|
||||
: revision(-1)
|
||||
, updateSelections(true)
|
||||
{}
|
||||
int revision;
|
||||
bool updateSelections;
|
||||
QPointer<TextEditor::ITextEditor> textEditor;
|
||||
QList<QTextEdit::ExtraSelection> selections;
|
||||
QList<TextEditor::BaseTextEditorWidget::BlockRange> ifdefedOutBlocks;
|
||||
|
Reference in New Issue
Block a user