diff --git a/src/plugins/qtscripteditor/qtscripteditor.cpp b/src/plugins/qtscripteditor/qtscripteditor.cpp
index dbab0ba888dc5c79e288acad70e675ce0e6d681e..fb70e52562deb8c1cd818a0ff32558b4e59ff58a 100644
--- a/src/plugins/qtscripteditor/qtscripteditor.cpp
+++ b/src/plugins/qtscripteditor/qtscripteditor.cpp
@@ -47,6 +47,7 @@
 #include <texteditor/fontsettings.h>
 #include <texteditor/textblockiterator.h>
 #include <texteditor/texteditorconstants.h>
+#include <texteditor/texteditorsettings.h>
 
 #include <QtGui/QMenu>
 #include <QtCore/QTimer>
@@ -64,11 +65,9 @@ ScriptEditorEditable::ScriptEditorEditable(ScriptEditor *editor, const QList<int
 }
 
 ScriptEditor::ScriptEditor(const Context &context,
-                           TextEditor::TextEditorActionHandler *ah,
                            QWidget *parent) :
     TextEditor::BaseTextEditor(parent),
-    m_context(context),
-    m_ah(ah)
+    m_context(context)
 {
     setParenthesesMatchingEnabled(true);
     setMarksVisible(true);
@@ -93,15 +92,10 @@ ScriptEditor::~ScriptEditor()
 
 Core::IEditor *ScriptEditorEditable::duplicate(QWidget *parent)
 {
-    return qobject_cast<ScriptEditor*>(editor())->duplicate(parent)->editableInterface();
-}
-
-ScriptEditor *ScriptEditor::duplicate(QWidget *parent)
-{
-    ScriptEditor *editor = new ScriptEditor(m_context, m_ah, parent);
-    editor->duplicateFrom(this);
-    QtScriptEditorPlugin::initializeEditor(editor);
-    return editor;
+    ScriptEditor *newEditor = new ScriptEditor(m_context, parent);
+    newEditor->duplicateFrom(editor());
+    QtScriptEditorPlugin::instance()->initializeEditor(newEditor);
+    return newEditor->editableInterface();
 }
 
 const char *ScriptEditorEditable::kind() const
diff --git a/src/plugins/qtscripteditor/qtscripteditor.h b/src/plugins/qtscripteditor/qtscripteditor.h
index 2e8b157f20f548c871b7ef5a53285a7ba33270b7..4371e5873cee596eeeb4e6aff4a7d6084f880be9 100644
--- a/src/plugins/qtscripteditor/qtscripteditor.h
+++ b/src/plugins/qtscripteditor/qtscripteditor.h
@@ -68,12 +68,9 @@ public:
     typedef QList<int> Context;
 
     ScriptEditor(const Context &context,
-                 TextEditor::TextEditorActionHandler *ah,
                  QWidget *parent = 0);
     ~ScriptEditor();
 
-    ScriptEditor *duplicate(QWidget *parent);
-
 public slots:
     virtual void setFontSettings(const TextEditor::FontSettings &);
 
@@ -90,7 +87,6 @@ private:
     virtual void indentBlock(QTextDocument *doc, QTextBlock block, QChar typedChar);
 
     const Context m_context;
-    TextEditor::TextEditorActionHandler *m_ah;
 
     QTimer *m_updateDocumentTimer;
 };
diff --git a/src/plugins/qtscripteditor/qtscripteditorfactory.cpp b/src/plugins/qtscripteditor/qtscripteditorfactory.cpp
index e7b80abab8e14095c2719d073b1e2b1534dfafef..849c3abd40a84d0dc8a64264740a0c0062c4198d 100644
--- a/src/plugins/qtscripteditor/qtscripteditorfactory.cpp
+++ b/src/plugins/qtscripteditor/qtscripteditorfactory.cpp
@@ -72,8 +72,8 @@ Core::IFile *QtScriptEditorFactory::open(const QString &fileName)
 
 Core::IEditor *QtScriptEditorFactory::createEditor(QWidget *parent)
 {
-    ScriptEditor *rc = new ScriptEditor(m_context, m_actionHandler, parent);
-    QtScriptEditorPlugin::initializeEditor(rc);
+    ScriptEditor *rc = new ScriptEditor(m_context, parent);
+    QtScriptEditorPlugin::instance()->initializeEditor(rc);
     return rc->editableInterface();
 }
 
diff --git a/src/plugins/qtscripteditor/qtscripteditorplugin.cpp b/src/plugins/qtscripteditor/qtscripteditorplugin.cpp
index a86b509844383d52da5b9e788b78cf07546dc439..b13ed76b8984ca92aa6cf7f6d1de4b99500c5ad2 100644
--- a/src/plugins/qtscripteditor/qtscripteditorplugin.cpp
+++ b/src/plugins/qtscripteditor/qtscripteditorplugin.cpp
@@ -45,6 +45,7 @@
 #include <texteditor/texteditorconstants.h>
 #include <texteditor/texteditorsettings.h>
 #include <texteditor/textfilewizard.h>
+#include <texteditor/texteditoractionhandler.h>
 #include <utils/qtcassert.h>
 
 #include <QtCore/QtPlugin>
@@ -58,7 +59,8 @@ QtScriptEditorPlugin *QtScriptEditorPlugin::m_instance = 0;
 
 QtScriptEditorPlugin::QtScriptEditorPlugin() :
     m_wizard(0),
-    m_editor(0)
+    m_editor(0),
+    m_actionHandler(0)
 {
     m_instance = this;
 }
@@ -67,6 +69,7 @@ QtScriptEditorPlugin::~QtScriptEditorPlugin()
 {
     removeObject(m_editor);
     removeObject(m_wizard);
+    delete m_actionHandler;
     m_instance = 0;
 }
 
@@ -97,18 +100,27 @@ bool QtScriptEditorPlugin::initialize(const QStringList & /*arguments*/, QString
                                               wizardParameters, this);
     addObject(m_wizard);
 
+    m_actionHandler = new TextEditor::TextEditorActionHandler(QtScriptEditor::Constants::C_QTSCRIPTEDITOR,
+          TextEditor::TextEditorActionHandler::Format
+        | TextEditor::TextEditorActionHandler::UnCommentSelection
+        | TextEditor::TextEditorActionHandler::UnCollapseAll);
+
     error_message->clear();
+
     return true;
 }
 
 void QtScriptEditorPlugin::extensionsInitialized()
 {
+    m_actionHandler->initializeActions();
 }
 
 void QtScriptEditorPlugin::initializeEditor(QtScriptEditor::Internal::ScriptEditor *editor)
 {
     QTC_ASSERT(m_instance, /**/);
 
+    m_actionHandler->setupActions(editor);
+
     TextEditor::TextEditorSettings::instance()->initializeEditor(editor);
 }
 
diff --git a/src/plugins/qtscripteditor/qtscripteditorplugin.h b/src/plugins/qtscripteditor/qtscripteditorplugin.h
index 344bb1ffbe33d82fc69d4cae7da98d2cd12059c5..e43bb21c8a264807ca0d19161a788636ec6027be 100644
--- a/src/plugins/qtscripteditor/qtscripteditorplugin.h
+++ b/src/plugins/qtscripteditor/qtscripteditorplugin.h
@@ -34,6 +34,7 @@
 
 namespace TextEditor {
 class TextFileWizard;
+class TextEditorActionHandler;
 } // namespace TextEditor
 
 namespace QtScriptEditor {
@@ -54,7 +55,10 @@ public:
     bool initialize(const QStringList &arguments, QString *errorMessage = 0);
     void extensionsInitialized();
 
-    static void initializeEditor(ScriptEditor *editor);
+    static QtScriptEditorPlugin *instance()
+    { return m_instance; }
+
+    void initializeEditor(ScriptEditor *editor);
 
 private:
     void registerActions();
@@ -67,6 +71,7 @@ private:
 
     TextEditor::TextFileWizard *m_wizard;
     QtScriptEditorFactory *m_editor;
+    TextEditor::TextEditorActionHandler *m_actionHandler;
 };
 
 } // namespace Internal