diff --git a/src/plugins/cppeditor/cppeditor.cpp b/src/plugins/cppeditor/cppeditor.cpp index 59c68c2f5b30851f4cdc66e9a70a6c9101446a73..b16d5e87804ced34699c27da6000377c06a0d43e 100644 --- a/src/plugins/cppeditor/cppeditor.cpp +++ b/src/plugins/cppeditor/cppeditor.cpp @@ -1256,6 +1256,11 @@ Symbol *CPPEditor::findDefinition(Symbol *symbol) return 0; } +SemanticInfo CPPEditor::semanticInfo() const +{ + return m_lastSemanticInfo; +} + bool CPPEditor::isElectricCharacter(const QChar &ch) const { if (ch == QLatin1Char('{') || @@ -1616,6 +1621,14 @@ void CPPEditor::semanticRehighlight() void CPPEditor::updateSemanticInfo(const SemanticInfo &semanticInfo) { + if (semanticInfo.revision != document()->revision()) { + // got outdated semantic info + semanticRehighlight(); + return; + } + + m_lastSemanticInfo = semanticInfo; + int line = 0, column = 0; convertPosition(position(), &line, &column); diff --git a/src/plugins/cppeditor/cppeditor.h b/src/plugins/cppeditor/cppeditor.h index 8fa991fc8ffadac10f4741337b807c2a0afe7ea4..988896977988c96b0523cd97ccc3d5a5af0b986f 100644 --- a/src/plugins/cppeditor/cppeditor.h +++ b/src/plugins/cppeditor/cppeditor.h @@ -181,11 +181,12 @@ public: CPPEditor(QWidget *parent); ~CPPEditor(); - void unCommentSelection(); void indentInsertedText(const QTextCursor &tc); + SemanticInfo semanticInfo() const; + public Q_SLOTS: virtual void setFontSettings(const TextEditor::FontSettings &); virtual void setDisplaySettings(const TextEditor::DisplaySettings &); @@ -302,6 +303,7 @@ private: bool m_inRename; SemanticHighlighter *m_semanticHighlighter; + SemanticInfo m_lastSemanticInfo; };