diff --git a/src/plugins/cppeditor/cppeditor.cpp b/src/plugins/cppeditor/cppeditor.cpp
index 5dec7a871158b86108c04e9a1cea39eb601869de..ba926cc81eede941fe75f89aad35104efa047c65 100644
--- a/src/plugins/cppeditor/cppeditor.cpp
+++ b/src/plugins/cppeditor/cppeditor.cpp
@@ -538,8 +538,6 @@ CPPEditor::CPPEditor(QWidget *parent)
 {
     qRegisterMetaType<SemanticInfo>("SemanticInfo");
 
-    m_revision = 0;
-
     m_semanticHighlighter = new SemanticHighlighter(this);
     m_semanticHighlighter->start();
 
@@ -902,8 +900,6 @@ void CPPEditor::onContentsChanged(int position, int charsRemoved, int charsAdded
     Q_UNUSED(position)
     Q_UNUSED(charsAdded)
 
-    ++m_revision;
-
     if (m_currentRenameSelection == -1)
         return;
 
@@ -1311,11 +1307,6 @@ Symbol *CPPEditor::findDefinition(Symbol *symbol)
     return 0;
 }
 
-unsigned CPPEditor::revision() const
-{
-    return m_revision;
-}
-
 SemanticInfo CPPEditor::semanticInfo() const
 {
     return m_lastSemanticInfo;
@@ -1780,7 +1771,7 @@ void CPPEditor::semanticRehighlight()
 
 void CPPEditor::updateSemanticInfo(const SemanticInfo &semanticInfo)
 {
-    if (semanticInfo.revision != m_revision) {
+    if (semanticInfo.revision != document()->revision()) {
         // got outdated semantic info
         semanticRehighlight();
         return;
@@ -1824,10 +1815,10 @@ SemanticHighlighter::Source CPPEditor::currentSource()
     const QString fileName = file()->fileName();
 
     QString code;
-    if (m_lastSemanticInfo.revision != m_revision)
+    if (m_lastSemanticInfo.revision != document()->revision())
         code = toPlainText(); // get the source code only when needed.
 
-    const int revision = m_revision;
+    const int revision = document()->revision();
     const SemanticHighlighter::Source source(snapshot, fileName, code,
                                              line, column, revision);
     return source;
diff --git a/src/plugins/cppeditor/cppeditor.h b/src/plugins/cppeditor/cppeditor.h
index e38cfcff71afc0a5495fd1f45d5cf521fa3ec808..cea326ffedf2e631ec7dfa311f11c8d3c4653204 100644
--- a/src/plugins/cppeditor/cppeditor.h
+++ b/src/plugins/cppeditor/cppeditor.h
@@ -71,10 +71,10 @@ public:
         unsigned length;
 
         Use()
-            : line(0), column(0), length(0) {}
+                : line(0), column(0), length(0) {}
 
         Use(unsigned line, unsigned column, unsigned length)
-            : line(line), column(column), length(length) {}
+                : line(line), column(column), length(length) {}
     };
 
     typedef QHash<CPlusPlus::Symbol *, QList<Use> > LocalUseMap;
@@ -84,10 +84,10 @@ public:
     typedef QHashIterator<CPlusPlus::Identifier *, QList<Use> > ExternalUseIterator;
 
     SemanticInfo()
-        : revision(0)
+            : revision(-1)
     { }
 
-    unsigned revision;
+    int revision;
     CPlusPlus::Snapshot snapshot;
     CPlusPlus::Document::Ptr doc;
     LocalUseMap localUses;
@@ -114,7 +114,7 @@ public:
         int revision;
 
         Source()
-            : line(0), column(0), revision(0)
+                : line(0), column(0), revision(0)
         { }
 
         Source(const CPlusPlus::Snapshot &snapshot,
@@ -190,7 +190,6 @@ public:
     void indentInsertedText(const QTextCursor &tc);
 
     SemanticInfo semanticInfo() const;
-    unsigned revision() const;
 
 public Q_SLOTS:
     virtual void setFontSettings(const TextEditor::FontSettings &);
@@ -296,8 +295,6 @@ private:
 
     SemanticHighlighter *m_semanticHighlighter;
     SemanticInfo m_lastSemanticInfo;
-
-    unsigned m_revision;
 };