Commit ed61e0b5 authored by Fred Emmott's avatar Fred Emmott
Browse files

Block the "this file has been changed outside of qt creator" popup in the fakevim ":w" command.

parent 3d3ff54d
...@@ -35,6 +35,8 @@ ...@@ -35,6 +35,8 @@
#include "fakevimconstants.h" #include "fakevimconstants.h"
#include <coreplugin/filemanager.h>
#include <coreplugin/icore.h>
#include <texteditor/basetexteditor.h> #include <texteditor/basetexteditor.h>
#include <QtCore/QDebug> #include <QtCore/QDebug>
...@@ -206,6 +208,7 @@ public: ...@@ -206,6 +208,7 @@ public:
bool m_wasReadOnly; // saves read-only state of document bool m_wasReadOnly; // saves read-only state of document
FakeVimHandler *q; FakeVimHandler *q;
Core::ICore *m_core;
Mode m_mode; Mode m_mode;
SubMode m_submode; SubMode m_submode;
SubSubMode m_subsubmode; SubSubMode m_subsubmode;
...@@ -225,6 +228,7 @@ public: ...@@ -225,6 +228,7 @@ public:
QString m_commandBuffer; QString m_commandBuffer;
QString m_currentFileName; QString m_currentFileName;
Core::IFile* m_currentFile;
QString m_currentMessage; QString m_currentMessage;
bool m_lastSearchForward; bool m_lastSearchForward;
...@@ -282,6 +286,8 @@ FakeVimHandler::Private::Private(FakeVimHandler *parent) ...@@ -282,6 +286,8 @@ FakeVimHandler::Private::Private(FakeVimHandler *parent)
m_plaintextedit = 0; m_plaintextedit = 0;
m_visualMode = NoVisualMode; m_visualMode = NoVisualMode;
m_core = ExtensionSystem::PluginManager::instance()->getObject<Core::ICore>();
m_config[ConfigStartOfLine] = ConfigOn; m_config[ConfigStartOfLine] = ConfigOn;
m_config[ConfigTabStop] = "8"; m_config[ConfigTabStop] = "8";
m_config[ConfigSmartTab] = ConfigOff; m_config[ConfigSmartTab] = ConfigOff;
...@@ -1050,12 +1056,18 @@ void FakeVimHandler::Private::handleExCommand(const QString &cmd0) ...@@ -1050,12 +1056,18 @@ void FakeVimHandler::Private::handleExCommand(const QString &cmd0)
bool exists = file.exists(); bool exists = file.exists();
if (exists && !forced && !noArgs) { if (exists && !forced && !noArgs) {
showRedMessage(tr("File '%1' exists (add ! to override)").arg(fileName)); showRedMessage(tr("File '%1' exists (add ! to override)").arg(fileName));
} else if (file.open(QIODevice::ReadWrite)) { } else if (m_currentFile || file.open(QIODevice::ReadWrite)) {
QTextCursor tc = selectRange(beginLine, endLine); if(m_currentFile) {
qDebug() << "ANCHOR: " << tc.position() << tc.anchor() m_core->fileManager()->blockFileChange(m_currentFile);
<< tc.selection().toPlainText(); m_currentFile->save(fileName);
{ QTextStream ts(&file); ts << tc.selection().toPlainText(); } m_core->fileManager()->unblockFileChange(m_currentFile);
file.close(); } else {
QTextCursor tc = selectRange(beginLine, endLine);
qDebug() << "ANCHOR: " << tc.position() << tc.anchor()
<< tc.selection().toPlainText();
{ QTextStream ts(&file); ts << tc.selection().toPlainText(); }
file.close();
}
file.open(QIODevice::ReadOnly); file.open(QIODevice::ReadOnly);
QByteArray ba = file.readAll(); QByteArray ba = file.readAll();
showBlackMessage(tr("\"%1\" %2 %3L, %4C written") showBlackMessage(tr("\"%1\" %2 %3L, %4C written")
...@@ -1488,8 +1500,10 @@ void FakeVimHandler::Private::setWidget(QWidget *ob) ...@@ -1488,8 +1500,10 @@ void FakeVimHandler::Private::setWidget(QWidget *ob)
m_textedit = qobject_cast<QTextEdit *>(ob); m_textedit = qobject_cast<QTextEdit *>(ob);
m_plaintextedit = qobject_cast<QPlainTextEdit *>(ob); m_plaintextedit = qobject_cast<QPlainTextEdit *>(ob);
TextEditor::BaseTextEditor* editor = qobject_cast<TextEditor::BaseTextEditor*>(ob); TextEditor::BaseTextEditor* editor = qobject_cast<TextEditor::BaseTextEditor*>(ob);
if (editor) if (editor) {
m_currentFileName = editor->file()->fileName(); m_currentFile = editor->file();
m_currentFileName = m_currentFile->fileName();
}
} }
/////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment