diff --git a/src/plugins/cppeditor/cppplugin.cpp b/src/plugins/cppeditor/cppplugin.cpp
index c10878bb379f7b6a8118fa983ff6cc71c84f07e3..212350b07e710dba1a6b51ee8e24e134950f3a89 100644
--- a/src/plugins/cppeditor/cppplugin.cpp
+++ b/src/plugins/cppeditor/cppplugin.cpp
@@ -178,12 +178,6 @@ void CppPlugin::initializeEditor(CPPEditor *editor)
 
     TextEditor::TextEditorSettings::instance()->initializeEditor(editor);
 
-    // semantic auto completion and quick fix
-    connect(editor,
-            SIGNAL(requestCompletion(TextEditor::ITextEditable*,TextEditor::CompletionPolicy,bool)),
-            TextEditor::CompletionSupport::instance(),
-            SLOT(complete(TextEditor::ITextEditable*,TextEditor::CompletionPolicy,bool)));
-
     // method combo box sorting
     connect(this, SIGNAL(outlineSortingChanged(bool)),
             editor, SLOT(setSortedOutline(bool)));
diff --git a/src/plugins/glsleditor/glsleditorplugin.cpp b/src/plugins/glsleditor/glsleditorplugin.cpp
index 7bbb87d22d5baa0f8164141074b371f49531f564..19ffecec5df87f95f2906aabe077b5cc04936918 100644
--- a/src/plugins/glsleditor/glsleditorplugin.cpp
+++ b/src/plugins/glsleditor/glsleditorplugin.cpp
@@ -249,12 +249,6 @@ void GLSLEditorPlugin::initializeEditor(GLSLEditor::GLSLTextEditor *editor)
     m_actionHandler->setupActions(editor);
 
     TextEditor::TextEditorSettings::instance()->initializeEditor(editor);
-
-    // auto completion and quick fix
-    connect(editor,
-            SIGNAL(requestCompletion(TextEditor::ITextEditable*,TextEditor::CompletionPolicy,bool)),
-            TextEditor::CompletionSupport::instance(),
-            SLOT(autoComplete(TextEditor::ITextEditable*,TextEditor::CompletionPolicy,bool)));
 }
 
 
diff --git a/src/plugins/qmljseditor/qmljseditorplugin.cpp b/src/plugins/qmljseditor/qmljseditorplugin.cpp
index 6749ee2664a3d59271af35ab5e1b8572599fc708..875ed97fbff40582923521fa60a0377aa0e36f51 100644
--- a/src/plugins/qmljseditor/qmljseditorplugin.cpp
+++ b/src/plugins/qmljseditor/qmljseditorplugin.cpp
@@ -271,12 +271,6 @@ void QmlJSEditorPlugin::initializeEditor(QmlJSEditor::QmlJSTextEditor *editor)
     m_actionHandler->setupActions(editor);
 
     TextEditor::TextEditorSettings::instance()->initializeEditor(editor);
-
-    // auto completion and quick fix
-    connect(editor,
-            SIGNAL(requestCompletion(TextEditor::ITextEditable*,TextEditor::CompletionPolicy,bool)),
-            TextEditor::CompletionSupport::instance(),
-            SLOT(complete(TextEditor::ITextEditable*,TextEditor::CompletionPolicy,bool)));
 }
 
 void QmlJSEditorPlugin::followSymbolUnderCursor()
diff --git a/src/plugins/qt4projectmanager/profileeditorfactory.cpp b/src/plugins/qt4projectmanager/profileeditorfactory.cpp
index ba36f9bec52653f84c1b19348b0d22b315d6c614..0aca1e5889bde1dd50d568be97ed12f907b9508b 100644
--- a/src/plugins/qt4projectmanager/profileeditorfactory.cpp
+++ b/src/plugins/qt4projectmanager/profileeditorfactory.cpp
@@ -90,12 +90,6 @@ Core::IEditor *ProFileEditorFactory::createEditor(QWidget *parent)
 {
     ProFileEditor *editor = new ProFileEditor(parent, this, m_actionHandler);
     TextEditor::TextEditorSettings::instance()->initializeEditor(editor);
-
-    // auto completion
-    connect(editor,
-            SIGNAL(requestCompletion(TextEditor::ITextEditable*,TextEditor::CompletionPolicy,bool)),
-            TextEditor::CompletionSupport::instance(),
-            SLOT(complete(TextEditor::ITextEditable*,TextEditor::CompletionPolicy,bool)));
     return editor->editableInterface();
 }
 
diff --git a/src/plugins/texteditor/basetexteditor.cpp b/src/plugins/texteditor/basetexteditor.cpp
index ae618066b9a4a29cf97c5fec35834f8c74c10668..d6f10ac401f424ea365c9297bdf514388cd24adf 100644
--- a/src/plugins/texteditor/basetexteditor.cpp
+++ b/src/plugins/texteditor/basetexteditor.cpp
@@ -540,12 +540,12 @@ void BaseTextEditor::selectEncoding()
 
 void BaseTextEditor::triggerCompletions()
 {
-    emit requestCompletion(editableInterface(), TextEditor::SemanticCompletion, true);
+    CompletionSupport::instance()->complete(editableInterface(), SemanticCompletion, true);
 }
 
 void BaseTextEditor::triggerQuickFix()
 {
-    emit requestCompletion(editableInterface(), TextEditor::QuickFixCompletion, true);
+    CompletionSupport::instance()->complete(editableInterface(), QuickFixCompletion, true);
 }
 
 QString BaseTextEditor::msgTextTooLarge(quint64 size)
@@ -1851,7 +1851,7 @@ void BaseTextEditor::maybeRequestAutoCompletion(const QChar &ch)
         }
     } else {
         d->m_requestAutoCompletionTimer->stop();
-        emit requestCompletion(editableInterface(), TextEditor::SemanticCompletion, false);
+        CompletionSupport::instance()->complete(editableInterface(), SemanticCompletion, false);
     }
 }
 
@@ -1862,9 +1862,9 @@ void BaseTextEditor::_q_requestAutoCompletion()
     if (CompletionSupport::instance()->isActive())
         return;
 
-    if (d->m_requestAutoCompletionRevision == document()->revision() &&
-            d->m_requestAutoCompletionPosition == position())
-        emit requestCompletion(editableInterface(), TextEditor::SemanticCompletion, false);
+    if (d->m_requestAutoCompletionRevision == document()->revision()
+            && d->m_requestAutoCompletionPosition == position())
+        CompletionSupport::instance()->complete(editableInterface(), SemanticCompletion, false);
 }
 
 void BaseTextEditor::insertCodeSnippet(const QTextCursor &cursor_arg, const QString &snippet)
diff --git a/src/plugins/texteditor/basetexteditor.h b/src/plugins/texteditor/basetexteditor.h
index a00ebd7565a2812fce15b1297256a0c9a6465fc4..e2a3bbaf92a2daa8a498b07d72203ad5edfa1e3a 100644
--- a/src/plugins/texteditor/basetexteditor.h
+++ b/src/plugins/texteditor/basetexteditor.h
@@ -484,8 +484,6 @@ signals:
     void requestFontZoom(int zoom);
     void requestZoomReset();
     void requestBlockUpdate(const QTextBlock &);
-    void requestCompletion(TextEditor::ITextEditable *editor,
-                           TextEditor::CompletionPolicy, bool forced);
 
 private:
     void maybeRequestAutoCompletion(const QChar &ch);