diff --git a/src/plugins/debugger/debuggeractions.cpp b/src/plugins/debugger/debuggeractions.cpp
index 9f65c0eca182604ffa595591fe05212244e2c542..a382ae42e35ceb76edb193d8a4771ddffd47db39 100644
--- a/src/plugins/debugger/debuggeractions.cpp
+++ b/src/plugins/debugger/debuggeractions.cpp
@@ -163,6 +163,7 @@ DebuggerSettings *DebuggerSettings::instance()
     item->setText(tr("Operate by Instruction"));
     item->setCheckable(true);
     item->setDefaultValue(false);
+    item->setSettingsKey(debugModeGroup, QLatin1String("OperateByInstruction"));
     item->setIcon(QIcon(":/debugger/images/SingleInstructionMode.png"));
     item->setToolTip(tr("This switches the debugger to instruction-wise "
         "operation mode. In this mode, stepping operates on single "
diff --git a/src/plugins/debugger/debuggermanager.cpp b/src/plugins/debugger/debuggermanager.cpp
index 399c65e0c60680d45c4e6f91e07cef033f4c52da..cd251d612ce2a6580d066fae27b18d60566ed447 100644
--- a/src/plugins/debugger/debuggermanager.cpp
+++ b/src/plugins/debugger/debuggermanager.cpp
@@ -466,6 +466,10 @@ void DebuggerManager::init()
     connect(this, SIGNAL(emitShowOutput(int, QString)),
             d->m_outputWindow, SLOT(showOutput(int, QString)), Qt::QueuedConnection);
 
+    // UI Switcher
+    connect(DebuggerUISwitcher::instance(), SIGNAL(languageChanged(QString)),
+            this, SLOT(languageChanged(QString)));
+
     // Tooltip
     //QTreeView *tooltipView = qobject_cast<QTreeView *>(d->m_tooltipWindow);
     //tooltipView->setModel(d->m_watchHandler->model(TooltipsWatch));
@@ -1925,6 +1929,14 @@ void DebuggerManager::fontSettingsChanged(const TextEditor::FontSettings &settin
     changeFontSize(d->m_threadsWindow, size);
 }
 
+// only update necessary menu items on language change
+void DebuggerManager::languageChanged(const QString &debuggerLanguage)
+{
+    const bool debuggerIsCPP = (debuggerLanguage == Constants::LANG_CPP);
+    d->m_actions.reverseDirectionAction->setEnabled(debuggerIsCPP);
+    theDebuggerAction(OperateByInstruction)->setEnabled(debuggerIsCPP);
+}
+
 //////////////////////////////////////////////////////////////////////
 //
 // AbstractDebuggerEngine
diff --git a/src/plugins/debugger/debuggermanager.h b/src/plugins/debugger/debuggermanager.h
index 13e9f4f08c1eb5bf88dac417ed666d78249709f9..aa1c80ae6daafb3abb9f7d260dfd4af5d6fe00a2 100644
--- a/src/plugins/debugger/debuggermanager.h
+++ b/src/plugins/debugger/debuggermanager.h
@@ -280,6 +280,7 @@ public slots: // FIXME
     void reloadFullStack();
     void operateByInstructionTriggered();
     void startFailed();
+    void languageChanged(const QString &debuggerLanguage);
 
 private:
     Internal::ModulesHandler *modulesHandler() const;
diff --git a/src/plugins/debugger/debuggeruiswitcher.cpp b/src/plugins/debugger/debuggeruiswitcher.cpp
index 88e5e40e6a988ad4705cd527d910dc709d19f927..e7557736f170ead1384da7163c51c986dd2d5f42 100644
--- a/src/plugins/debugger/debuggeruiswitcher.cpp
+++ b/src/plugins/debugger/debuggeruiswitcher.cpp
@@ -126,7 +126,6 @@ int DebuggerUISwitcher::activeLanguageId() const
 {
     return d->m_activeLanguage;
 }
-
 void DebuggerUISwitcher::modeChanged(Core::IMode *mode)
 {
     d->m_isActiveMode = (mode->id() == Debugger::Constants::MODE_DEBUG);
diff --git a/src/plugins/qmljseditor/qmljseditor.cpp b/src/plugins/qmljseditor/qmljseditor.cpp
index 3d9d59a22270f738c45c75c9e889cdfef2edb277..ce557ffbdf0390d411493e73859974c4b20e4894 100644
--- a/src/plugins/qmljseditor/qmljseditor.cpp
+++ b/src/plugins/qmljseditor/qmljseditor.cpp
@@ -650,6 +650,8 @@ QmlJSTextEditor::QmlJSTextEditor(QWidget *parent) :
 
     connect(m_semanticHighlighter, SIGNAL(changed(QmlJSEditor::Internal::SemanticInfo)),
             this, SLOT(updateSemanticInfo(QmlJSEditor::Internal::SemanticInfo)));
+
+    setRequestMarkEnabled(false);
 }
 
 QmlJSTextEditor::~QmlJSTextEditor()