From d29b5cd2081687358924908c0d93a25e8d219948 Mon Sep 17 00:00:00 2001 From: hjk <qtc-committer@nokia.com> Date: Tue, 15 Dec 2009 13:38:20 +0100 Subject: [PATCH] fakevim: make auto-inserted text part of 'last insertion', so it can be repeated --- src/plugins/fakevim/fakevimhandler.cpp | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp index ae5d7164997..de6fb38cbab 100755 --- a/src/plugins/fakevim/fakevimhandler.cpp +++ b/src/plugins/fakevim/fakevimhandler.cpp @@ -396,7 +396,7 @@ public: int m_subsubdata; QString m_input; QTextCursor m_tc; - QTextCursor m_oldTc; // copy from last event to check for external changes + int m_oldPosition; // copy from last event to check for external changes int m_anchor; static QHash<int, Register> m_registers; int m_register; @@ -589,8 +589,18 @@ EventResult FakeVimHandler::Private::handleEvent(QKeyEvent *ev) // Fake "End of line" m_tc = EDITOR(textCursor()); - if (m_tc.position() != m_oldTc.position()) + // Position changed externally + if (m_tc.position() != m_oldPosition) { setTargetColumn(); + if (m_mode == InsertMode) { + int dist = m_tc.position() - m_oldPosition; + // Try to compensate for code completion + if (dist > 0 && dist <= cursorColumnInDocument()) { + Range range(m_oldPosition, m_tc.position()); + m_lastInsertion.append(text(range)); + } + } + } m_tc.setVisualNavigation(true); @@ -617,8 +627,8 @@ EventResult FakeVimHandler::Private::handleEvent(QKeyEvent *ev) if (m_fakeEnd) moveLeft(); - m_oldTc = m_tc; EDITOR(setTextCursor(m_tc)); + m_oldPosition = m_tc.position(); return result; } -- GitLab