summaryrefslogtreecommitdiff
path: root/src/plugins/fakevim
diff options
context:
space:
mode:
authorhjk <qtc-committer@nokia.com>2010-07-06 16:38:12 +0200
committerhjk <qtc-committer@nokia.com>2010-07-06 16:42:16 +0200
commit6f58124007b4813c99f6d1dda0cd544ddf2684b0 (patch)
tree5806d02d36fbb44792054374204ee2bad5edac18 /src/plugins/fakevim
parent312509fcdbd20ada6de9ff4b1370c7d16f78a8f7 (diff)
downloadqt-creator-6f58124007b4813c99f6d1dda0cd544ddf2684b0.tar.gz
fakevim: fix mark positions after <Delete>
(cherry picked from commit 7ccf903ee3d9da4a104310ed423130857d59d91b)
Diffstat (limited to 'src/plugins/fakevim')
-rw-r--r--src/plugins/fakevim/fakevimhandler.cpp37
1 files changed, 21 insertions, 16 deletions
diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp
index c8ba4f46f7..9f8a0e3230 100644
--- a/src/plugins/fakevim/fakevimhandler.cpp
+++ b/src/plugins/fakevim/fakevimhandler.cpp
@@ -2035,22 +2035,25 @@ EventResult FakeVimHandler::Private::handleCommandMode(const Input &input)
m_opcount = m_mvcount;
m_mvcount.clear();
m_submode = DeleteSubMode;
- } else if ((input.is('d') || input.is('x')) && isVisualCharMode()) {
- leaveVisualMode();
- m_submode = DeleteSubMode;
- finishMovement();
- } else if ((input.is('d') || input.is('x')) && isVisualLineMode()) {
- leaveVisualMode();
- m_rangemode = RangeLineMode;
- yankText(currentRange(), m_register);
- removeText(currentRange());
- handleStartOfLine();
- } else if ((input.is('d') || input.is('x')) && isVisualBlockMode()) {
- leaveVisualMode();
- m_rangemode = RangeBlockMode;
- yankText(currentRange(), m_register);
- removeText(currentRange());
- setPosition(qMin(position(), anchor()));
+ } else if ((input.is('d') || input.is('x') || input.isKey(Key_Delete))
+ && isVisualMode()) {
+ if (isVisualCharMode()) {
+ leaveVisualMode();
+ m_submode = DeleteSubMode;
+ finishMovement();
+ } else if (isVisualLineMode()) {
+ leaveVisualMode();
+ m_rangemode = RangeLineMode;
+ yankText(currentRange(), m_register);
+ removeText(currentRange());
+ handleStartOfLine();
+ } else if (isVisualBlockMode()) {
+ leaveVisualMode();
+ m_rangemode = RangeBlockMode;
+ yankText(currentRange(), m_register);
+ removeText(currentRange());
+ setPosition(qMin(position(), anchor()));
+ }
} else if (input.is('D') && isNoVisualMode()) {
if (atEndOfLine())
moveLeft();
@@ -2486,6 +2489,8 @@ EventResult FakeVimHandler::Private::handleCommandMode(const Input &input)
setAnchor();
moveRight(qMin(1, rightDist()));
removeText(currentRange());
+ if (atEndOfLine())
+ moveLeft();
} else if (input.isKey(Key_BracketLeft) || input.isKey(Key_BracketRight)) {
} else if (input.isControl(Key_BracketRight)) {