diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp
index d2825c5795960d4adc8851d421c7d23ae25e53e0..dbc6a2f26eb3b10d38ddb87dadd0f75af50fe71e 100644
--- a/src/plugins/fakevim/fakevimhandler.cpp
+++ b/src/plugins/fakevim/fakevimhandler.cpp
@@ -201,7 +201,8 @@ private:
     int count() const { return mvCount() * opCount(); }
     int leftDist() const { return m_tc.position() - m_tc.block().position(); }
     int rightDist() const { return m_tc.block().length() - leftDist() - 1; }
-    bool atEndOfLine() const { return m_tc.atBlockEnd() && m_tc.block().length()>1; }
+    bool atEndOfLine() const
+        { return m_tc.atBlockEnd() && m_tc.block().length() > 1; }
 
     int lastPositionInDocument() const;
     int positionForLine(int line) const; // 1 based line, 0 based pos
@@ -218,7 +219,7 @@ private:
 
     // helper functions for indenting
     bool isElectricCharacter(QChar c) const
-        { return (c == '{' || c == '}' || c == '#'); }
+        { return c == '{' || c == '}' || c == '#'; }
     int indentDist() const;
     void indentRegion(QTextBlock first, QTextBlock last, QChar typedChar=0);
     void indentCurrentLine(QChar typedChar);
@@ -251,6 +252,7 @@ private:
 
     void enterInsertMode();
     void enterCommandMode();
+    void enterExMode();
     void showRedMessage(const QString &msg);
     void showBlackMessage(const QString &msg);
     void notImplementedYet();
@@ -340,6 +342,7 @@ public:
     int m_desiredColumn;
 
     QPointer<QObject> m_extraData;
+    int m_cursorWidth;
 };
 
 FakeVimHandler::Private::Private(FakeVimHandler *parent, QWidget *widget)
@@ -361,6 +364,7 @@ FakeVimHandler::Private::Private(FakeVimHandler *parent, QWidget *widget)
     m_moveType = MoveInclusive;
     m_anchor = 0;
     m_savedYankPosition = 0;
+    m_cursorWidth = EDITOR(cursorWidth());
 
     m_config[ConfigStartOfLine] = ConfigOn;
     m_config[ConfigTabStop]     = "8";
@@ -419,17 +423,14 @@ bool FakeVimHandler::Private::handleEvent(QKeyEvent *ev)
 void FakeVimHandler::Private::setupWidget()
 {
     enterCommandMode();
+    EDITOR(installEventFilter(q));
+    //EDITOR(setCursorWidth(QFontMetrics(ed->font()).width(QChar('x')));
     if (m_textedit) {
-        m_textedit->installEventFilter(q);
-        //m_textedit->setCursorWidth(QFontMetrics(ed->font()).width(QChar('x')));
         m_textedit->setLineWrapMode(QTextEdit::NoWrap);
-        m_wasReadOnly = m_textedit->isReadOnly();
     } else if (m_plaintextedit) {
-        m_plaintextedit->installEventFilter(q);
-        //plaintextedit->setCursorWidth(QFontMetrics(ed->font()).width(QChar('x')));
         m_plaintextedit->setLineWrapMode(QPlainTextEdit::NoWrap);
-        m_wasReadOnly = m_plaintextedit->isReadOnly();
     }
+    m_wasReadOnly = EDITOR(isReadOnly());
     showBlackMessage("vi emulation mode.");
     updateMiniBuffer();
 }
@@ -438,13 +439,8 @@ void FakeVimHandler::Private::restoreWidget()
 {
     //showBlackMessage(QString());
     //updateMiniBuffer();
-    if (m_textedit) {
-        m_textedit->removeEventFilter(q);
-        m_textedit->setReadOnly(m_wasReadOnly);
-    } else if (m_plaintextedit) {
-        m_plaintextedit->removeEventFilter(q);
-        m_plaintextedit->setReadOnly(m_wasReadOnly);
-    }
+    EDITOR(removeEventFilter(q));
+    EDITOR(setReadOnly(m_wasReadOnly));
 }
 
 bool FakeVimHandler::Private::handleKey(int key, int unmodified, const QString &text)
diff --git a/tests/manual/fakevim/main.cpp b/tests/manual/fakevim/main.cpp
index 9400fcf998f0b5bc6183b8f00305bdd04a449ef5..2de37c1073315bc5f10696423a74782d2027e1c2 100644
--- a/tests/manual/fakevim/main.cpp
+++ b/tests/manual/fakevim/main.cpp
@@ -50,14 +50,18 @@ int main(int argc, char *argv[])
     QString title;
     bool usePlainTextEdit = args.size() < 2;
     if (usePlainTextEdit) {
-        widget = new QPlainTextEdit;
+        QPlainTextEdit *w = new QPlainTextEdit;
+        w->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
         title = "PlainTextEdit";
+        widget = w;
     } else {
-        widget = new QTextEdit;
+        QTextEdit *w = new QTextEdit;
+        w->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
         title = "TextEdit";
+        widget = w;
     }
     widget->setObjectName("Editor");
-    widget->resize(450, 350);
+    //widget->resize(450, 350);
     widget->setFocus();
 
     Proxy proxy(widget);
@@ -67,7 +71,7 @@ int main(int argc, char *argv[])
     QMainWindow mw;
     mw.setWindowTitle("Fakevim (" + title + ")");
     mw.setCentralWidget(widget);
-    mw.resize(500, 650);
+    mw.resize(600, 650);
     mw.move(0, 0);
     mw.show();