diff --git a/src/plugins/cppeditor/cppeditor.cpp b/src/plugins/cppeditor/cppeditor.cpp
index f233c0121f8f5ce105dce12b72037e4f8cf98842..e3bf12757bd3e479c7ad9a198f1efe7e746358e2 100644
--- a/src/plugins/cppeditor/cppeditor.cpp
+++ b/src/plugins/cppeditor/cppeditor.cpp
@@ -485,7 +485,7 @@ void CPPEditor::jumpToDefinition()
     unsigned lineno = tc.blockNumber() + 1;
     foreach (const Document::Include &incl, doc->includes()) {
         if (incl.line() == lineno) {
-            if (TextEditor::BaseTextEditor::openEditorAt(incl.fileName(), 0, 0))
+            if (openCppEditorAt(incl.fileName(), 0, 0))
                 return; // done
             break;
         }
@@ -525,7 +525,7 @@ void CPPEditor::jumpToDefinition()
             QList<Symbol *> candidates = context.resolve(namedType->name());
             if (!candidates.isEmpty()) {
                 Symbol *s = candidates.takeFirst();
-                openEditorAt(s->fileName(), s->line(), s->column());
+                openCppEditorAt(s->fileName(), s->line(), s->column());
             }
 #endif
         }
@@ -534,7 +534,7 @@ void CPPEditor::jumpToDefinition()
             if (use.contains(endOfName - 1)) {
                 const Macro &macro = use.macro();
                 const QString fileName = QString::fromUtf8(macro.fileName);
-                if (TextEditor::BaseTextEditor::openEditorAt(fileName, macro.line, 0))
+                if (openCppEditorAt(fileName, macro.line, 0))
                     return; // done
             }
         }
@@ -836,8 +836,15 @@ int CPPEditor::endOfNameUnderCursor()
     return pos;
 }
 
+TextEditor::ITextEditor *CPPEditor::openCppEditorAt(const QString &fileName,
+                                                    int line, int column)
+{
+    return TextEditor::BaseTextEditor::openEditorAt(fileName, line, column,
+                                                    Constants::C_CPPEDITOR);
+}
+
 bool CPPEditor::openEditorAt(Symbol *s)
 {
     const QString fileName = QString::fromUtf8(s->fileName(), s->fileNameLength());
-    return TextEditor::BaseTextEditor::openEditorAt(fileName, s->line(), s->column());
+    return openCppEditorAt(fileName, s->line(), s->column());
 }
diff --git a/src/plugins/cppeditor/cppeditor.h b/src/plugins/cppeditor/cppeditor.h
index 05f2c5d9c74098d9e6dbd0518bd85bef8271d7fb..2dd88d349934332947796d2bfc9fc69c17009d35 100644
--- a/src/plugins/cppeditor/cppeditor.h
+++ b/src/plugins/cppeditor/cppeditor.h
@@ -123,6 +123,9 @@ private:
     CPlusPlus::Symbol *findDefinition(CPlusPlus::Symbol *symbol);
     virtual void indentBlock(QTextDocument *doc, QTextBlock block, QChar typedChar);
 
+    TextEditor::ITextEditor *openCppEditorAt(const QString &fileName, int line,
+                                             int column = 0);
+
     int previousBlockState(QTextBlock block) const;
     QTextCursor moveToPreviousToken(QTextCursor::MoveMode mode) const;
     QTextCursor moveToNextToken(QTextCursor::MoveMode mode) const;
diff --git a/src/plugins/texteditor/basetexteditor.cpp b/src/plugins/texteditor/basetexteditor.cpp
index 8d5bf3ff6836993981b4320e0345ff07044500b7..59ee2c005a4c4766d752b0be5e34b268bd25ef4d 100644
--- a/src/plugins/texteditor/basetexteditor.cpp
+++ b/src/plugins/texteditor/basetexteditor.cpp
@@ -128,12 +128,13 @@ protected:
 
 ITextEditor *BaseTextEditor::openEditorAt(const QString &fileName,
                                              int line,
-                                             int column)
+                                             int column,
+                                             const QString &editorKind)
 {
     Core::EditorManager *editorManager =
             ExtensionSystem::PluginManager::instance()->getObject<Core::ICore>()->editorManager();
     editorManager->addCurrentPositionToNavigationHistory(true);
-    Core::IEditor *editor = editorManager->openEditor(fileName, QString(), true);
+    Core::IEditor *editor = editorManager->openEditor(fileName, editorKind, true);
     TextEditor::ITextEditor *texteditor = qobject_cast<TextEditor::ITextEditor *>(editor);
     if (texteditor) {
         texteditor->gotoLine(line, column);
@@ -714,7 +715,7 @@ void BaseTextEditor::moveLineUpDown(bool up)
     QString text = move.selectedText();
     move.movePosition(QTextCursor::Right, QTextCursor::KeepAnchor);
     move.removeSelectedText();
-    
+
     if (up) {
         move.movePosition(QTextCursor::PreviousBlock);
         move.insertBlock();
@@ -729,7 +730,7 @@ void BaseTextEditor::moveLineUpDown(bool up)
             move.insertBlock();
         }
     }
-    
+
     int start = move.position();
     move.clearSelection();
     move.insertText(text);
@@ -3376,7 +3377,7 @@ void BaseTextEditorPrivate::moveCursorVisible()
     if (!cursor.block().isVisible()) {
         cursor.setVisualNavigation(true);
         cursor.movePosition(QTextCursor::PreviousBlock);
-        q->setTextCursor(cursor);        
+        q->setTextCursor(cursor);
     }
     q->ensureCursorVisible();
 }
diff --git a/src/plugins/texteditor/basetexteditor.h b/src/plugins/texteditor/basetexteditor.h
index 7c2206722bf6f6baa1deeab1423dfc60829067f2..d75e174fea2bdabcd8dfa189417117f4ff60d248 100644
--- a/src/plugins/texteditor/basetexteditor.h
+++ b/src/plugins/texteditor/basetexteditor.h
@@ -230,7 +230,8 @@ public:
     BaseTextEditor(QWidget *parent);
     ~BaseTextEditor();
 
-    static ITextEditor *openEditorAt(const QString &fileName, int line, int column = 0);
+    static ITextEditor *openEditorAt(const QString &fileName, int line, int column = 0,
+                                     const QString &editorKind = QString());
 
     // EditorInterface
     Core::IFile * file();