diff options
author | Lukas Holecek <hluk@email.cz> | 2014-11-11 20:13:03 +0100 |
---|---|---|
committer | hjk <hjk121@nokiamail.com> | 2014-11-17 09:11:21 +0100 |
commit | 86c4e341a10539e9ed72e26fe4bf8dc581e5ef4b (patch) | |
tree | 0ee513bb2df9b473b9c858193e9905ed98eb4ada /src/plugins | |
parent | 72c5253a3b5ef54de7f80209ccecb339a851305d (diff) | |
download | qt-creator-86c4e341a10539e9ed72e26fe4bf8dc581e5ef4b.tar.gz |
FakeVim: Fix indentation commands
Partially reverts commit dfae736. Handling indentation commands in
visual mode cannot be trivially handled by alias.
Change-Id: If9189c41a4e585efef00c774e24382f1de3356e4
Reviewed-by: hjk <hjk121@nokiamail.com>
Diffstat (limited to 'src/plugins')
-rw-r--r-- | src/plugins/fakevim/fakevimhandler.cpp | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp index ee2fb62b5b..62f9f73258 100644 --- a/src/plugins/fakevim/fakevimhandler.cpp +++ b/src/plugins/fakevim/fakevimhandler.cpp @@ -4168,10 +4168,19 @@ bool FakeVimHandler::Private::handleNoSubMode(const Input &input) } else if (input.is('<') || input.is('>') || input.is('=')) { g.submode = indentModeFromInput(input); if (isVisualMode()) { + leaveVisualMode(); const int lines = qAbs(lineForPosition(position()) - lineForPosition(anchor())) + 1; - const QString movementCommand = - (lines > 1) ? QString::fromLatin1("%1j").arg(lines - 1) : QString(); - handleAs(_("%1") + input.toString() + movementCommand); + const int repeat = count(); + if (g.submode == ShiftLeftSubMode) + shiftRegionLeft(repeat); + else if (g.submode == ShiftRightSubMode) + shiftRegionRight(repeat); + else + indentSelectedText(); + g.submode = NoSubMode; + const QString selectDotCommand = + (lines > 1) ? QString::fromLatin1("V%1j").arg(lines - 1): QString(); + setDotCommand(selectDotCommand + QString::fromLatin1("%1%2%2").arg(repeat).arg(input.raw())); } else { setAnchor(); } |