From 8b3136f8b0a474e8253c90e84a54cb39dd0bfcbf Mon Sep 17 00:00:00 2001 From: hjk <qtc-committer@nokia.com> Date: Fri, 23 Jan 2009 17:02:22 +0100 Subject: [PATCH] Fixes: fakevim: work on writing --- src/plugins/fakevim/fakevimhandler.cpp | 42 ++++++++++++++------------ 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp index 7172e50f0ae..b8ae84ba4e6 100644 --- a/src/plugins/fakevim/fakevimhandler.cpp +++ b/src/plugins/fakevim/fakevimhandler.cpp @@ -1337,12 +1337,12 @@ int FakeVimHandler::Private::readLineCode(QString &cmd) void FakeVimHandler::Private::selectRange(int beginLine, int endLine) { - m_tc.setPosition(positionForLine(beginLine), MoveAnchor); + m_anchor = positionForLine(beginLine); if (endLine == linesInDocument()) { - m_tc.setPosition(positionForLine(endLine), KeepAnchor); - m_tc.movePosition(EndOfLine, KeepAnchor); + m_tc.setPosition(positionForLine(endLine), MoveAnchor); + m_tc.movePosition(EndOfLine, MoveAnchor); } else { - m_tc.setPosition(positionForLine(endLine + 1), KeepAnchor); + m_tc.setPosition(positionForLine(endLine + 1), MoveAnchor); } } @@ -1400,29 +1400,33 @@ void FakeVimHandler::Private::handleExCommand(const QString &cmd0) QString fileName = reWrite.cap(2); if (fileName.isEmpty()) fileName = m_currentFileName; - QFile file(fileName); - bool exists = file.exists(); + QFile file1(fileName); + bool exists = file1.exists(); if (exists && !forced && !noArgs) { showRedMessage(tr("File '%1' exists (add ! to override)").arg(fileName)); - } else if (file.open(QIODevice::ReadWrite)) { - file.close(); - QTextCursor tc = m_tc; + } else if (file1.open(QIODevice::ReadWrite)) { + file1.close(); selectRange(beginLine, endLine); QString contents = selectedText(); - m_tc = tc; + qDebug() << "LINES: " << beginLine << endLine; bool handled = false; emit q->writeFileRequested(&handled, fileName, contents); // nobody cared, so act ourselves if (!handled) { - //qDebug() << "HANDLING MANUAL SAVE"; - QFile file(fileName); - file.open(QIODevice::ReadWrite); - { QTextStream ts(&file); ts << contents; } - file.close(); + //qDebug() << "HANDLING MANUAL SAVE TO " << fileName; + QFile::remove(fileName); + QFile file2(fileName); + if (file2.open(QIODevice::ReadWrite)) { + QTextStream ts(&file2); + ts << contents; + } else { + showRedMessage(tr("Cannot open file '%1' for writing").arg(fileName)); + } } // check result by reading back - file.open(QIODevice::ReadOnly); - QByteArray ba = file.readAll(); + QFile file3(fileName); + file3.open(QIODevice::ReadOnly); + QByteArray ba = file3.readAll(); showBlackMessage(tr("\"%1\" %2 %3L, %4C written") .arg(fileName).arg(exists ? " " : " [New] ") .arg(ba.count('\n')).arg(ba.size())); @@ -1814,9 +1818,7 @@ QString FakeVimHandler::Private::selectedText() const { QTextCursor tc = m_tc; tc.setPosition(m_anchor, KeepAnchor); - QString text = tc.selection().toPlainText(); - tc.clearSelection(); - return text; + return tc.selection().toPlainText(); } int FakeVimHandler::Private::positionForLine(int line) const -- GitLab