From 82c548285fe93a730707587a6d074341ec383bf4 Mon Sep 17 00:00:00 2001 From: hjk <qtc-committer@nokia.com> Date: Tue, 10 Nov 2009 09:25:22 +0100 Subject: [PATCH] fakevim: fix writing of full file in stand-alone mode --- src/plugins/fakevim/fakevimhandler.cpp | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp index 6606776f0ea..795d988b7e4 100644 --- a/src/plugins/fakevim/fakevimhandler.cpp +++ b/src/plugins/fakevim/fakevimhandler.cpp @@ -214,6 +214,12 @@ struct Range : beginPos(qMin(b, e)), endPos(qMax(b, e)), rangemode(m) {} + QString toString() const + { + return QString("%1-%2 (mode: %3)").arg(beginPos).arg(endPos) + .arg(rangemode); + } + int beginPos; int endPos; RangeMode rangemode; @@ -1947,7 +1953,7 @@ void FakeVimHandler::Private::handleExCommand(const QString &cmd0) firstPositionInLine(endLine), RangeLineMode); QString contents = text(range); m_tc = tc; - qDebug() << "LINES: " << beginLine << endLine; + //qDebug() << "LINES: " << beginLine << endLine; bool handled = false; emit q->writeFileRequested(&handled, fileName, contents); // nobody cared, so act ourselves @@ -2500,8 +2506,12 @@ QString FakeVimHandler::Private::text(const Range &range) const } if (range.rangemode == RangeLineMode) { QTextCursor tc = m_tc; - tc.setPosition(firstPositionInLine(lineForPosition(range.beginPos)), MoveAnchor); - tc.setPosition(firstPositionInLine(lineForPosition(range.endPos)+1), KeepAnchor); + int firstPos = firstPositionInLine(lineForPosition(range.beginPos)); + int lastLine = lineForPosition(range.endPos); + int lastPos = lastLine == m_tc.document()->lastBlock().blockNumber() + 1 + ? lastPositionInDocument() : firstPositionInLine(lastLine + 1); + tc.setPosition(firstPos, MoveAnchor); + tc.setPosition(lastPos, KeepAnchor); return tc.selection().toPlainText(); } // FIXME: Performance? -- GitLab