aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/fakevim
diff options
context:
space:
mode:
authorhjk <hjk@theqtcompany.com>2016-06-03 13:00:51 +0200
committerhjk <hjk@theqtcompany.com>2016-06-03 11:16:36 +0000
commit40a9463c560c21c8117dceed5c4866c7474712bb (patch)
treeb1caef5b4a384d2f818cca225d123d56062afa00 /src/plugins/fakevim
parent6d9782845f8dd1e0bc1c23918a45e2da04d4d515 (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.cpp14
-rw-r--r--src/plugins/fakevim/fakevimplugin.cpp2
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();