From a7cf72a945193124eb2d502652a8f491707ca9c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Aum=C3=BCller?= <aumuell@reserv.at> Date: Fri, 19 Feb 2010 13:01:38 +0100 Subject: [PATCH] fakevim: improved 'startofline' behaviour for indenting and shifting left/right Merge-request: 113 Reviewed-by: hjk <qtc-committer@nokia.com> --- src/plugins/fakevim/fakevimhandler.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp index e84c6f61acd..6f2f03ebc52 100644 --- a/src/plugins/fakevim/fakevimhandler.cpp +++ b/src/plugins/fakevim/fakevimhandler.cpp @@ -2657,6 +2657,7 @@ void FakeVimHandler::Private::moveToFirstNonBlankOnLine() void FakeVimHandler::Private::indentSelectedText(QChar typedChar) { + setTargetColumn(); int beginLine = qMin(lineForPosition(position()), lineForPosition(anchor())); int endLine = qMax(lineForPosition(position()), lineForPosition(anchor())); @@ -2665,7 +2666,8 @@ void FakeVimHandler::Private::indentSelectedText(QChar typedChar) indentText(range, typedChar); setPosition(firstPositionInLine(beginLine)); - moveToFirstNonBlankOnLine(); + moveToTargetColumn(); + handleStartOfLine(); setTargetColumn(); setDotCommand("%1==", endLine - beginLine + 1); } @@ -2693,6 +2695,7 @@ bool FakeVimHandler::Private::isElectricCharacter(QChar c) const void FakeVimHandler::Private::shiftRegionRight(int repeat) { + setTargetColumn(); int beginLine = lineForPosition(anchor()); int endLine = lineForPosition(position()); if (beginLine > endLine) @@ -2709,13 +2712,15 @@ void FakeVimHandler::Private::shiftRegionRight(int repeat) endEditBlock(); setPosition(firstPos); - moveToFirstNonBlankOnLine(); + moveToTargetColumn(); + handleStartOfLine(); setTargetColumn(); setDotCommand("%1>>", endLine - beginLine + 1); } void FakeVimHandler::Private::shiftRegionLeft(int repeat) { + setTargetColumn(); int beginLine = lineForPosition(anchor()); int endLine = lineForPosition(position()); if (beginLine > endLine) @@ -2744,7 +2749,8 @@ void FakeVimHandler::Private::shiftRegionLeft(int repeat) endEditBlock(); setPosition(firstPos); - moveToFirstNonBlankOnLine(); + moveToTargetColumn(); + handleStartOfLine(); setTargetColumn(); setDotCommand("%1<<", endLine - beginLine + 1); } -- GitLab