diff options
author | hjk <hjk@qt.io> | 2023-05-02 09:30:37 +0200 |
---|---|---|
committer | hjk <hjk@qt.io> | 2023-05-02 07:45:43 +0000 |
commit | c3a213cc657b1b9a6427990a57209e78581883c4 (patch) | |
tree | 2a11923812677e7396a47fb28b4315b192075816 /src/plugins/fakevim | |
parent | a35fe27188de74d0b0436b4a6f2fab0948b3d0be (diff) |
FakeVim: Remove QtcProcess use from fakevimhandler.cpp
fakevimhandler.{h,cpp} are meant to be re-usable outside of Qt Creator.
Amends 91605c3.
Change-Id: I569a393d13049ef92ed3ef0c4f69de5232b2fa32
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
Diffstat (limited to 'src/plugins/fakevim')
-rw-r--r-- | src/plugins/fakevim/fakevimhandler.cpp | 28 | ||||
-rw-r--r-- | src/plugins/fakevim/fakevimhandler.h | 1 | ||||
-rw-r--r-- | src/plugins/fakevim/fakevimplugin.cpp | 14 |
3 files changed, 16 insertions, 27 deletions
diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp index bd1e035f48..4fbab50d46 100644 --- a/src/plugins/fakevim/fakevimhandler.cpp +++ b/src/plugins/fakevim/fakevimhandler.cpp @@ -36,8 +36,6 @@ #include "fakevimactions.h" #include "fakevimtr.h" -#include <utils/qtcprocess.h> - #include <QDebug> #include <QFile> #include <QObject> @@ -833,29 +831,6 @@ static void setClipboardData(const QString &content, RangeMode mode, clipboard->setMimeData(data, clipboardMode); } -static QByteArray toLocalEncoding(const QString &text) -{ -#if defined(Q_OS_WIN) - return QString(text).replace("\n", "\r\n").toLocal8Bit(); -#else - return text.toLocal8Bit(); -#endif -} - -static QString getProcessOutput(const QString &command, const QString &input) -{ - Utils::QtcProcess proc; - proc.setCommand(Utils::CommandLine::fromUserInput(command)); - proc.setWriteData(toLocalEncoding(input)); - proc.start(); - - // FIXME: Process should be interruptable by user. - // Solution is to create a QObject for each process and emit finished state. - proc.waitForFinished(); - - return proc.cleanedStdOut(); -} - static const QMap<QString, int> &vimKeyNames() { static const QMap<QString, int> k = { @@ -6432,7 +6407,8 @@ bool FakeVimHandler::Private::handleExBangCommand(const ExCommand &cmd) // :! const QString command = QString(cmd.cmd.mid(1) + ' ' + cmd.args).trimmed(); const QString input = replaceText ? selectText(cmd.range) : QString(); - const QString result = getProcessOutput(command, input); + QString result; + q->processOutput(command, input, &result); if (replaceText) { setCurrentRange(cmd.range); diff --git a/src/plugins/fakevim/fakevimhandler.h b/src/plugins/fakevim/fakevimhandler.h index b19e257909..7c0cecaf73 100644 --- a/src/plugins/fakevim/fakevimhandler.h +++ b/src/plugins/fakevim/fakevimhandler.h @@ -167,6 +167,7 @@ public: Callback<void()> tabNextRequested; Callback<void(bool insertMode)> modeChanged; Callback<bool()> tabPressedInInsertMode; + Callback<void(const QString &, const QString &, QString *)> processOutput; public: class Private; diff --git a/src/plugins/fakevim/fakevimplugin.cpp b/src/plugins/fakevim/fakevimplugin.cpp index d0c399ac31..8d71345b56 100644 --- a/src/plugins/fakevim/fakevimplugin.cpp +++ b/src/plugins/fakevim/fakevimplugin.cpp @@ -51,7 +51,7 @@ #include <utils/layoutbuilder.h> #include <utils/pathchooser.h> #include <utils/qtcassert.h> -#include <utils/qtcassert.h> +#include <utils/qtcprocess.h> #include <utils/stylehelper.h> #include <cppeditor/cppeditorconstants.h> @@ -1887,6 +1887,18 @@ void FakeVimPluginPrivate::editorOpened(IEditor *editor) tew->invokeAssist(Completion, &runData->wordProvider); }); + handler->processOutput.set([](const QString &command, const QString &input, QString *output) { + QtcProcess proc; + proc.setCommand(Utils::CommandLine::fromUserInput(command)); + proc.setWriteData(input.toLocal8Bit()); + proc.start(); + + // FIXME: Process should be interruptable by user. + // Solution is to create a QObject for each process and emit finished state. + proc.waitForFinished(); + *output = proc.cleanedStdOut(); + }); + connect(ICore::instance(), &ICore::saveSettingsRequested, this, &FakeVimPluginPrivate::writeSettings); |