diff options
author | hjk <qtc-committer@nokia.com> | 2009-06-11 17:09:05 +0200 |
---|---|---|
committer | hjk <qtc-committer@nokia.com> | 2009-06-11 17:11:10 +0200 |
commit | 6077d20b9630834e3add5739be2b179742ffb438 (patch) | |
tree | fa53b80525dd8012c19e5b45b036fb8d5d66629b | |
parent | f17a81c9c926a73d2b9f56746b9b4e263c0c22f1 (diff) |
fakevim: fix . after C in command mode
-rw-r--r-- | src/plugins/fakevim/fakevimhandler.cpp | 18 | ||||
-rw-r--r-- | tests/auto/fakevim/main.cpp | 10 |
2 files changed, 23 insertions, 5 deletions
diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp index bb46ba2c810..f84802b3c85 100644 --- a/src/plugins/fakevim/fakevimhandler.cpp +++ b/src/plugins/fakevim/fakevimhandler.cpp @@ -179,10 +179,17 @@ QDebug &operator<<(QDebug &ts, const QList<QTextEdit::ExtraSelection> &sels) return ts; } -int lineCount(const QString &text) +QString quoteUnprintable(const QString &ba) { - //return text.count(QChar(ParagraphSeparator)); - return text.count(QChar('\n')); + QString res; + for (int i = 0, n = ba.size(); i != n; ++i) { + QChar c = ba.at(i); + if (c.isPrint()) + res += c; + else + res += QString("\\x%1").arg(c.unicode(), 2, 16); + } + return res; } enum EventResult @@ -1075,7 +1082,7 @@ EventResult FakeVimHandler::Private::handleCommandMode(int key, int unmodified, m_passing = !m_passing; updateMiniBuffer(); } else if (key == '.') { - qDebug() << "REPEATING" << m_dotCommand; + qDebug() << "REPEATING" << quoteUnprintable(m_dotCommand); QString savedCommand = m_dotCommand; m_dotCommand.clear(); replay(savedCommand, count()); @@ -1132,6 +1139,7 @@ EventResult FakeVimHandler::Private::handleCommandMode(int key, int unmodified, moveToEndOfLine(); m_registers[m_register] = removeSelectedText(); enterInsertMode(); + setDotCommand("C"); finishMovement(); } else if (key == control('c')) { showBlackMessage("Type Alt-v,Alt-v to quit FakeVim mode"); @@ -1318,7 +1326,7 @@ EventResult FakeVimHandler::Private::handleCommandMode(int key, int unmodified, } } else if (key == 'p' || key == 'P') { QString text = m_registers[m_register]; - int n = lineCount(text); + int n = text.count(QChar('\n')); //qDebug() << "REGISTERS: " << m_registers << "MOVE: " << m_moveType; //qDebug() << "LINES: " << n << text << m_register; if (n > 0) { diff --git a/tests/auto/fakevim/main.cpp b/tests/auto/fakevim/main.cpp index d4b8030acc6..b5a73bb11f7 100644 --- a/tests/auto/fakevim/main.cpp +++ b/tests/auto/fakevim/main.cpp @@ -61,6 +61,7 @@ private slots: void command_dollar(); void command_down(); void command_dfx_down(); + void command_Cxx_down_dot(); void command_e(); void command_i(); void command_left(); @@ -309,6 +310,15 @@ return; check("u", l[0] + "\n#inc@lude <QtCore>\n" + lmid(2)); } +void tst_FakeVim::command_Cxx_down_dot() +{ + setup(); + check("j4l", l[0] + "\n#inc@lude <QtCore>\n" + lmid(2)); + check("Cxx" + escape, l[0] + "\n#incx@x\n" + lmid(2)); + check("j", l[0] + "\n#incxx\n#incl@ude <QtGui>\n" + lmid(3)); + check(".", l[0] + "\n#incxx\n#inclx@x\n" + lmid(3)); +} + void tst_FakeVim::command_e() { setup(); |