diff --git a/src/plugins/cpptools/cpptoolseditorsupport.cpp b/src/plugins/cpptools/cpptoolseditorsupport.cpp
index 83f1becd5a307d30d1a26fe40aebb49fdf17877f..f14b3174cd67b3d761ec55769ca2864c64a454f6 100644
--- a/src/plugins/cpptools/cpptoolseditorsupport.cpp
+++ b/src/plugins/cpptools/cpptoolseditorsupport.cpp
@@ -49,6 +49,8 @@ CppEditorSupport::CppEditorSupport(CppModelManager *modelManager)
       _modelManager(modelManager),
       _updateDocumentInterval(UPDATE_DOCUMENT_DEFAULT_INTERVAL)
 {
+    _revision = 0;
+
     _updateDocumentTimer = new QTimer(this);
     _updateDocumentTimer->setSingleShot(true);
     _updateDocumentTimer->setInterval(_updateDocumentInterval);
@@ -102,6 +104,8 @@ void CppEditorSupport::setUpdateDocumentInterval(int updateDocumentInterval)
 
 void CppEditorSupport::updateDocument()
 {
+    _revision = editorRevision();
+
     if (TextEditor::BaseTextEditor *edit = qobject_cast<TextEditor::BaseTextEditor*>(_textEditor->widget())) {
         const QList<QTextEdit::ExtraSelection> selections =
                 edit->extraSelections(TextEditor::BaseTextEditor::CodeWarningsSelection);
@@ -114,7 +118,7 @@ void CppEditorSupport::updateDocument()
 
 void CppEditorSupport::updateDocumentNow()
 {
-    if (_documentParser.isRunning()) {
+    if (_documentParser.isRunning() || _revision != editorRevision()) {
         _updateDocumentTimer->start(_updateDocumentInterval);
     } else {
         _updateDocumentTimer->stop();
diff --git a/src/plugins/cpptools/cpptoolseditorsupport.h b/src/plugins/cpptools/cpptoolseditorsupport.h
index 4fd289a5f1c86fdf81a37f3598b3a9e44fa38ba2..882a9ac9aa95fd11f921daf8654c3829f80d497e 100644
--- a/src/plugins/cpptools/cpptoolseditorsupport.h
+++ b/src/plugins/cpptools/cpptoolseditorsupport.h
@@ -88,6 +88,7 @@ private:
     int _updateDocumentInterval;
     QFuture<void> _documentParser;
     QString _cachedContents;
+    unsigned _revision;
 };
 
 } // namespace Internal