From 0db85db37814db5ea560c2c622794373f6a9b6ed Mon Sep 17 00:00:00 2001 From: Lukas Holecek Date: Sun, 17 Feb 2013 13:56:42 +0100 Subject: [PATCH] FakeVim: Check if input is [count] for a command properly Change-Id: I831b87733ca96a31cd9da10375d10998a1722c12 Reviewed-by: hjk --- src/plugins/fakevim/fakevimhandler.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp index bc3a6a046af..d83ec6ddc11 100644 --- a/src/plugins/fakevim/fakevimhandler.cpp +++ b/src/plugins/fakevim/fakevimhandler.cpp @@ -1434,6 +1434,7 @@ public: void stopIncrementalFind(); void updateFind(bool isComplete); + bool isInputCount(const Input &) const; // Return true if input can be used as count for commands. int mvCount() const { return m_mvcount.isEmpty() ? 1 : m_mvcount.toInt(); } int opCount() const { return m_opcount.isEmpty() ? 1 : m_opcount.toInt(); } int count() const { return mvCount() * opCount(); } @@ -2449,6 +2450,11 @@ void FakeVimHandler::Private::updateFind(bool isComplete) search(sd, isComplete); } +bool FakeVimHandler::Private::isInputCount(const Input &input) const +{ + return input.isDigit() && (!input.is('0') || !m_mvcount.isEmpty()); +} + bool FakeVimHandler::Private::atEmptyLine(const QTextCursor &tc) const { if (tc.isNull()) @@ -3040,7 +3046,7 @@ bool FakeVimHandler::Private::handleCommandSubSubMode(const Input &input) bool FakeVimHandler::Private::handleCount(const Input &input) { - if (!input.isDigit() || (input.is('0') && m_mvcount.isEmpty())) + if (!isInputCount(input)) return false; m_mvcount.append(input.text()); return true; @@ -3350,7 +3356,7 @@ EventResult FakeVimHandler::Private::handleCommandMode(const Input &input) bool clearGflag = m_gflag; bool clearRegister = m_submode != RegisterSubMode; - bool clearCount = m_submode != RegisterSubMode && !input.isDigit(); + bool clearCount = m_submode != RegisterSubMode && !isInputCount(input); // Process input for a sub-mode. if (input.isEscape()) {