diff options
author | hjk <hjk@theqtcompany.com> | 2016-06-03 13:00:51 +0200 |
---|---|---|
committer | hjk <hjk@theqtcompany.com> | 2016-06-03 11:16:36 +0000 |
commit | 40a9463c560c21c8117dceed5c4866c7474712bb (patch) | |
tree | b1caef5b4a384d2f818cca225d123d56062afa00 /src/plugins/fakevim | |
parent | 6d9782845f8dd1e0bc1c23918a45e2da04d4d515 (diff) |
FakeVim: Expand ~ in some file names
For :read and :source.
Task-number: QTCREATORBUG-11160
Change-Id: I636593a16f9e39c25585c221c5d978e842f4c1d4
Reviewed-by: Lukas Holecek <hluk@email.cz>
Reviewed-by: hjk <hjk@theqtcompany.com>
Diffstat (limited to 'src/plugins/fakevim')
-rw-r--r-- | src/plugins/fakevim/fakevimhandler.cpp | 14 | ||||
-rw-r--r-- | src/plugins/fakevim/fakevimplugin.cpp | 2 |
2 files changed, 12 insertions, 4 deletions
diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp index c0657ee9ea1..1a401bed8c0 100644 --- a/src/plugins/fakevim/fakevimhandler.cpp +++ b/src/plugins/fakevim/fakevimhandler.cpp @@ -84,6 +84,7 @@ #include <QTextEdit> #include <QMimeData> #include <QSharedPointer> +#include <QDir> #include <algorithm> #include <climits> @@ -373,6 +374,12 @@ struct SearchData bool highlightMatches = true; }; +static QString replaceTildeWithHome(QString str) +{ + str.replace("~", QDir::homePath()); + return str; +} + // If string begins with given prefix remove it with trailing spaces and return true. static bool eatString(const QString &prefix, QString *str) { @@ -5899,6 +5906,7 @@ bool FakeVimHandler::Private::handleExJoinCommand(const ExCommand &cmd) bool FakeVimHandler::Private::handleExWriteCommand(const ExCommand &cmd) { + // Note: The cmd.args.isEmpty() case is handled by handleExPluginCommand. // :w, :x, :wq, ... //static QRegExp reWrite("^[wx]q?a?!?( (.*))?$"); if (cmd.cmd != "w" && cmd.cmd != "x" && cmd.cmd != "wq") @@ -5916,7 +5924,7 @@ bool FakeVimHandler::Private::handleExWriteCommand(const ExCommand &cmd) const bool forced = cmd.hasBang; //const bool quit = prefix.contains('q') || prefix.contains('x'); //const bool quitAll = quit && prefix.contains('a'); - QString fileName = cmd.args; + QString fileName = replaceTildeWithHome(cmd.args); if (fileName.isEmpty()) fileName = m_currentFileName; QFile file1(fileName); @@ -5969,7 +5977,7 @@ bool FakeVimHandler::Private::handleExReadCommand(const ExCommand &cmd) moveDown(); int pos = position(); - m_currentFileName = cmd.args; + m_currentFileName = replaceTildeWithHome(cmd.args); QFile file(m_currentFileName); file.open(QIODevice::ReadOnly); QTextStream ts(&file); @@ -6092,7 +6100,7 @@ bool FakeVimHandler::Private::handleExSourceCommand(const ExCommand &cmd) if (cmd.cmd != "so" && cmd.cmd != "source") return false; - QString fileName = cmd.args; + QString fileName = replaceTildeWithHome(cmd.args); QFile file(fileName); if (!file.open(QIODevice::ReadOnly)) { showMessage(MessageError, Tr::tr("Cannot open file %1").arg(fileName)); diff --git a/src/plugins/fakevim/fakevimplugin.cpp b/src/plugins/fakevim/fakevimplugin.cpp index e5229b7b99b..162848adfed 100644 --- a/src/plugins/fakevim/fakevimplugin.cpp +++ b/src/plugins/fakevim/fakevimplugin.cpp @@ -1977,7 +1977,7 @@ void FakeVimPluginPrivate::handleExCommand(bool *handled, const ExCommand &cmd) editor->setFocus(); *handled = true; - if (cmd.matches("w", "write") || cmd.cmd == "wq") { + if ((cmd.matches("w", "write") || cmd.cmd == "wq") && cmd.args.isEmpty()) { // :w[rite] IEditor *editor = m_editorToHandler.key(handler); const QString fileName = handler->currentFileName(); |