summaryrefslogtreecommitdiff
path: root/src/plugins/fakevim
diff options
context:
space:
mode:
authorLukas Holecek <hluk@email.cz>2014-11-11 20:13:03 +0100
committerhjk <hjk121@nokiamail.com>2014-11-17 09:11:21 +0100
commit86c4e341a10539e9ed72e26fe4bf8dc581e5ef4b (patch)
tree0ee513bb2df9b473b9c858193e9905ed98eb4ada /src/plugins/fakevim
parent72c5253a3b5ef54de7f80209ccecb339a851305d (diff)
downloadqt-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/fakevim')
-rw-r--r--src/plugins/fakevim/fakevimhandler.cpp15
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();
}