diff options
author | hjk <[email protected]> | 2009-05-05 09:06:36 +0200 |
---|---|---|
committer | hjk <[email protected]> | 2009-05-05 09:06:36 +0200 |
commit | aa6c55260fe2823f549ebcab90f41af46c3926db (patch) | |
tree | d17800ea3a4dcf67a6e71d82eadb90180f89ee78 | |
parent | ed853ee42bd94d8667aad6765607513514cd3aaf (diff) |
fakevim: better cursor poistioning after indenting
-rw-r--r-- | src/plugins/fakevim/fakevimhandler.cpp | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp index 7a1d4a4246c..6c61fe38e47 100644 --- a/src/plugins/fakevim/fakevimhandler.cpp +++ b/src/plugins/fakevim/fakevimhandler.cpp @@ -698,8 +698,10 @@ void FakeVimHandler::Private::finishMovement(const QString &dotCommand) } else if (m_submode == ReplaceSubMode) { m_submode = NoSubMode; } else if (m_submode == IndentSubMode) { + recordJump(); indentRegion(); m_submode = NoSubMode; + updateMiniBuffer(); } else if (m_submode == ShiftRightSubMode) { recordJump(); shiftRegionRight(1); @@ -2057,8 +2059,13 @@ void FakeVimHandler::Private::indentRegion(QChar typedChar) int endLine = lineForPosition(position()); if (beginLine > endLine) qSwap(beginLine, endLine); + int amount = 0; emit q->indentRegion(&amount, beginLine, endLine, typedChar); + + setPosition(firstPositionInLine(beginLine)); + moveToFirstNonBlankOnLine(); + setTargetColumn(); setDotCommand("%1==", endLine - beginLine + 1); } @@ -2072,8 +2079,6 @@ void FakeVimHandler::Private::shiftRegionRight(int repeat) QString indent(len, ' '); int firstPos = firstPositionInLine(beginLine); - //setPosition(firstPos); - for (int line = beginLine; line <= endLine; ++line) { setPosition(firstPositionInLine(line)); m_tc.insertText(indent); @@ -2081,6 +2086,7 @@ void FakeVimHandler::Private::shiftRegionRight(int repeat) setPosition(firstPos); moveToFirstNonBlankOnLine(); + setTargetColumn(); setDotCommand("%1>>", endLine - beginLine + 1); } @@ -2094,8 +2100,6 @@ void FakeVimHandler::Private::shiftRegionLeft(int repeat) int tab = config(ConfigTabStop).toInt(); int firstPos = firstPositionInLine(beginLine); - //setPosition(firstPos); - for (int line = beginLine; line <= endLine; ++line) { int pos = firstPositionInLine(line); setPosition(pos); @@ -2118,6 +2122,7 @@ void FakeVimHandler::Private::shiftRegionLeft(int repeat) setPosition(firstPos); moveToFirstNonBlankOnLine(); + setTargetColumn(); setDotCommand("%1<<", endLine - beginLine + 1); } |