diff --git a/src/plugins/git/giteditor.cpp b/src/plugins/git/giteditor.cpp
index 01aa5234720cedb01ef86be0dc351cd74e414d50..4121baaf2a9271f070baf737489ae7dc9d28fa37 100644
--- a/src/plugins/git/giteditor.cpp
+++ b/src/plugins/git/giteditor.cpp
@@ -288,7 +288,7 @@ void GitEditorWidget::applyDiffChunk(const VcsBase::DiffChunk& chunk, bool rever
 void GitEditorWidget::init()
 {
     VcsBase::VcsBaseEditorWidget::init();
-    Core::Id editorId = editor()->document()->id();
+    Core::Id editorId = textDocument()->id();
     if (editorId == Git::Constants::GIT_COMMIT_TEXT_EDITOR_ID)
         textDocument()->setSyntaxHighlighter(new GitSubmitHighlighter);
     else if (editorId == Git::Constants::GIT_REBASE_EDITOR_ID)
@@ -310,7 +310,7 @@ void GitEditorWidget::addDiffActions(QMenu *menu, const VcsBase::DiffChunk &chun
 
 bool GitEditorWidget::open(QString *errorString, const QString &fileName, const QString &realFileName)
 {
-    Core::Id editorId = editor()->document()->id();
+    Core::Id editorId = textDocument()->id();
     if (editorId == Git::Constants::GIT_COMMIT_TEXT_EDITOR_ID
             || editorId == Git::Constants::GIT_REBASE_EDITOR_ID) {
         QFileInfo fi(fileName);
@@ -378,8 +378,8 @@ QString GitEditorWidget::revisionSubject(const QTextBlock &inBlock) const
 bool GitEditorWidget::supportChangeLinks() const
 {
     return VcsBaseEditorWidget::supportChangeLinks()
-            || (editor()->document()->id() == Git::Constants::GIT_COMMIT_TEXT_EDITOR_ID)
-            || (editor()->document()->id() == Git::Constants::GIT_REBASE_EDITOR_ID);
+            || (textDocument()->id() == Git::Constants::GIT_COMMIT_TEXT_EDITOR_ID)
+            || (textDocument()->id() == Git::Constants::GIT_REBASE_EDITOR_ID);
 }
 
 QString GitEditorWidget::fileNameForLine(int line) const
diff --git a/src/plugins/vcsbase/vcsbaseeditor.cpp b/src/plugins/vcsbase/vcsbaseeditor.cpp
index ceed7a09ddcbb11d3486a6a5e8f44eb512d0b25f..f27f36279e9c409de0bdeddf07820c7ab345f444 100644
--- a/src/plugins/vcsbase/vcsbaseeditor.cpp
+++ b/src/plugins/vcsbase/vcsbaseeditor.cpp
@@ -156,6 +156,17 @@ VcsBaseEditor::VcsBaseEditor(const VcsBaseEditorParameters *type)
     setContext(Core::Context(type->context, TextEditor::Constants::C_TEXTEDITOR));
 }
 
+void VcsBaseEditor::finalizeInitialization()
+{
+    auto widget = qobject_cast<VcsBaseEditorWidget *>(editorWidget());
+    QTC_ASSERT(widget, return);
+    // Pass on signals.
+    connect(widget, &VcsBaseEditorWidget::describeRequested,
+            this, &VcsBaseEditor::describeRequested);
+    connect(widget, &VcsBaseEditorWidget::annotateRevisionRequested,
+            this, &VcsBaseEditor::annotateRevisionRequested);
+}
+
 // ----------- VcsBaseEditorPrivate
 
 namespace Internal {
@@ -687,13 +698,6 @@ void VcsBaseEditorWidget::setDescribeSlot(QObject *describeReceiver, const char
 
 void VcsBaseEditorWidget::finalizeInitialization()
 {
-    BaseTextEditor *editor = this->editor();
-    // Pass on signals.
-    connect(this, SIGNAL(describeRequested(QString,QString)),
-            editor, SIGNAL(describeRequested(QString,QString)));
-    connect(this, SIGNAL(annotateRevisionRequested(QString,QString,QString,int)),
-            editor, SIGNAL(annotateRevisionRequested(QString,QString,QString,int)));
-
     if (d->m_describeReceiver)
         connect(this, SIGNAL(describeRequested(QString,QString)), d->m_describeReceiver, d->m_describeSlot);
 
@@ -738,10 +742,8 @@ VcsBaseEditorWidget::~VcsBaseEditorWidget()
 
 void VcsBaseEditorWidget::setForceReadOnly(bool b)
 {
-    VcsBaseEditor *eda = qobject_cast<VcsBaseEditor *>(editor());
-    QTC_ASSERT(eda != 0, return);
     setReadOnly(b);
-    eda->document()->setTemporary(b);
+    textDocument()->setTemporary(b);
 }
 
 QString VcsBaseEditorWidget::source() const
diff --git a/src/plugins/vcsbase/vcsbaseeditor.h b/src/plugins/vcsbase/vcsbaseeditor.h
index 3470bebd16d835af58c0e0ce2f63c963034cbb15..7d7918537615572d859a1cee57ceb90ce9a8f381 100644
--- a/src/plugins/vcsbase/vcsbaseeditor.h
+++ b/src/plugins/vcsbase/vcsbaseeditor.h
@@ -132,6 +132,7 @@ public:
     static Core::IEditor* locateEditorByTag(const QString &tag);
     static QString editorTag(EditorContentType t, const QString &workingDirectory, const QStringList &files,
                              const QString &revision = QString());
+    void finalizeInitialization();
 signals:
     void describeRequested(const QString &source, const QString &change);
     void annotateRevisionRequested(const QString &workingDirectory, const QString &file,