diff --git a/src/plugins/fakevim/fakevimplugin.cpp b/src/plugins/fakevim/fakevimplugin.cpp
index 97e1cfffea07c2be91a03249a0159dbc7a64a816..f0fd5d001a2e16db17c650f4cbc82580192c5ad3 100644
--- a/src/plugins/fakevim/fakevimplugin.cpp
+++ b/src/plugins/fakevim/fakevimplugin.cpp
@@ -59,6 +59,7 @@
 #include <QtCore/QPoint>
 #include <QtCore/QSettings>
 
+#include <QtGui/QMessageBox>
 #include <QtGui/QPlainTextEdit>
 #include <QtGui/QTextBlock>
 #include <QtGui/QTextCursor>
@@ -149,6 +150,8 @@ void FakeVimPlugin::installHandler()
     if (!textEditor)
         return;
 
+    connect(m_handler, SIGNAL(extraInformationChanged(QString)),
+        this, SLOT(showExtraInformation(QString)));
     connect(m_handler, SIGNAL(commandBufferChanged(QString)),
         this, SLOT(showCommandBuffer(QString)));
     connect(m_handler, SIGNAL(quitRequested(QWidget *)),
@@ -171,6 +174,11 @@ void FakeVimPlugin::showCommandBuffer(const QString &contents)
         tr("Quit FakeVim"), m_handler, SLOT(quit()));
 }
 
+void FakeVimPlugin::showExtraInformation(const QString &text)
+{
+    QMessageBox::information(0, tr("FakeVim Information"), text);
+}
+
 
 //#include "fakevimplugin.moc"
 
diff --git a/src/plugins/fakevim/fakevimplugin.h b/src/plugins/fakevim/fakevimplugin.h
index 9025affcec33c6a36a7f8a54c8f44e9002a89d59..afbbe89d4a8d9c546b16393d78e7a11201636a4a 100644
--- a/src/plugins/fakevim/fakevimplugin.h
+++ b/src/plugins/fakevim/fakevimplugin.h
@@ -82,6 +82,7 @@ private slots:
     void installHandler();
     void removeHandler(QWidget *widget);
     void showCommandBuffer(const QString &contents);
+    void showExtraInformation(const QString &msg);
 
 private:
     FakeVimHandler *m_handler;
diff --git a/src/plugins/fakevim/handler.cpp b/src/plugins/fakevim/handler.cpp
index b53a97e6c37cd33e68b07a63fe18184888febb32..fc120dbf2ae6d3b57cb4d55e913fc7cd985c94c8 100644
--- a/src/plugins/fakevim/handler.cpp
+++ b/src/plugins/fakevim/handler.cpp
@@ -1004,6 +1004,7 @@ void FakeVimHandler::Private::handleExCommand(const QString &cmd0)
 
     static QRegExp reWrite("^w!?( (.*))?$");
     static QRegExp reDelete("^d( (.*))?$");
+    static QRegExp reSet("^set?( (.*))?$");
 
     if (cmd.isEmpty()) {
         m_tc.setPosition(positionForLine(beginLine));
@@ -1093,6 +1094,14 @@ void FakeVimHandler::Private::handleExCommand(const QString &cmd0)
         redo();
         enterCommandMode();
         updateMiniBuffer();
+    } else if (reSet.indexIn(cmd) != -1) { // :set
+        QString arg = reSet.cap(2);
+        if (arg.isEmpty()) {
+            QString info;
+            foreach (const QString &key, m_config.keys())
+                info += key + ": " + m_config.value(key) + "\n";
+            emit q->extraInformationChanged(info);
+        }
     } else {
         showRedMessage("E492: Not an editor command: " + cmd0);
     }
diff --git a/src/plugins/fakevim/handler.h b/src/plugins/fakevim/handler.h
index fccb9f0f84f3abc229f4e567258213f8129f4f16..bd8b4834035dc3fbad918e65ae390d10bdd9d8bd 100644
--- a/src/plugins/fakevim/handler.h
+++ b/src/plugins/fakevim/handler.h
@@ -66,6 +66,7 @@ public slots:
 signals:
     void commandBufferChanged(const QString &msg);
     void statusDataChanged(const QString &msg);
+    void extraInformationChanged(const QString &msg);
     void quitRequested(QWidget *);
 
 private: