aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorhjk <qtc-committer@nokia.com>2009-06-11 17:09:05 +0200
committerhjk <qtc-committer@nokia.com>2009-06-11 17:11:10 +0200
commit6077d20b9630834e3add5739be2b179742ffb438 (patch)
treefa53b80525dd8012c19e5b45b036fb8d5d66629b
parentf17a81c9c926a73d2b9f56746b9b4e263c0c22f1 (diff)
fakevim: fix . after C in command mode
-rw-r--r--src/plugins/fakevim/fakevimhandler.cpp18
-rw-r--r--tests/auto/fakevim/main.cpp10
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();