From 530967ea2238ce7fb67b6da124dd16738689c7e3 Mon Sep 17 00:00:00 2001
From: hjk <qtc-committer@nokia.com>
Date: Wed, 25 Mar 2009 13:31:30 +0100
Subject: [PATCH] fakevim: trigger autocompletion on '.' and '>'

---
 src/plugins/fakevim/fakevimhandler.cpp |  3 +++
 src/plugins/fakevim/fakevimhandler.h   |  1 +
 src/plugins/fakevim/fakevimplugin.cpp  | 12 ++++++++++++
 3 files changed, 16 insertions(+)

diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp
index 985d4db096d..b42c4d011e1 100644
--- a/src/plugins/fakevim/fakevimhandler.cpp
+++ b/src/plugins/fakevim/fakevimhandler.cpp
@@ -1512,6 +1512,9 @@ EventResult FakeVimHandler::Private::handleInsertMode(int key, int,
             if (leftText.simplified().isEmpty())
                 indentRegion(text.at(0));
         }
+        
+        if (text.at(0) == '.' || text.at(0) == '>')
+            emit q->completionRequested();
     } else {
         return EventUnhandled;
     }
diff --git a/src/plugins/fakevim/fakevimhandler.h b/src/plugins/fakevim/fakevimhandler.h
index d7d978c9d8a..7b5b183cf34 100644
--- a/src/plugins/fakevim/fakevimhandler.h
+++ b/src/plugins/fakevim/fakevimhandler.h
@@ -77,6 +77,7 @@ signals:
         const QString &fileName, const QString &contents);
     void moveToMatchingParenthesis(bool *moved, bool *forward, QTextCursor *cursor);
     void indentRegion(int *amount, int beginLine, int endLine, QChar typedChar);
+    void completionRequested();
 
 private:
     bool eventFilter(QObject *ob, QEvent *ev);
diff --git a/src/plugins/fakevim/fakevimplugin.cpp b/src/plugins/fakevim/fakevimplugin.cpp
index ee632a1acba..8ece7de8724 100644
--- a/src/plugins/fakevim/fakevimplugin.cpp
+++ b/src/plugins/fakevim/fakevimplugin.cpp
@@ -116,6 +116,7 @@ private slots:
     void installHandlerOnCurrentEditor();
     void installHandler(Core::IEditor *editor);
     void removeHandler();
+    void triggerCompletions();
 
     void showCommandBuffer(const QString &contents);
     void showExtraInformation(const QString &msg);
@@ -208,6 +209,8 @@ void FakeVimPluginPrivate::installHandler(Core::IEditor *editor)
         this, SLOT(moveToMatchingParenthesis(bool*,bool*,QTextCursor*)));
     connect(handler, SIGNAL(indentRegion(int*,int,int,QChar)),
         this, SLOT(indentRegion(int*,int,int,QChar)));
+    connect(handler, SIGNAL(completionRequested()),
+        this, SLOT(triggerCompletions()));
 
     handler->setupWidget();
     handler->setExtraData(editor);
@@ -235,6 +238,15 @@ void FakeVimPluginPrivate::installHandlerOnCurrentEditor()
     installHandler(EditorManager::instance()->currentEditor());
 }
 
+void FakeVimPluginPrivate::triggerCompletions()
+{
+    FakeVimHandler *handler = qobject_cast<FakeVimHandler *>(sender());
+    if (!handler)
+        return;
+    if (BaseTextEditor *bt = qobject_cast<BaseTextEditor *>(handler->widget()))
+        bt->triggerCompletions();
+}
+
 void FakeVimPluginPrivate::writeFile(bool *handled,
     const QString &fileName, const QString &contents)
 {
-- 
GitLab