FakeVim: Merge Plugin and PluginPrivate classes

There were different from the PluginPrivate-created-in-initialize
pattern anyway.

Change-Id: I690c9c0511203f3c4d6ec9eeca85c0a277330e2f
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
This commit is contained in:
hjk
2023-11-16 16:01:52 +01:00
parent bde92e035e
commit 3b05a6f58e

View File

@@ -96,7 +96,7 @@ const char SETTINGS_ID[] = "A.FakeVim.General";
const char SETTINGS_EX_CMDS_ID[] = "B.FakeVim.ExCommands"; const char SETTINGS_EX_CMDS_ID[] = "B.FakeVim.ExCommands";
const char SETTINGS_USER_CMDS_ID[] = "C.FakeVim.UserCommands"; const char SETTINGS_USER_CMDS_ID[] = "C.FakeVim.UserCommands";
static class FakeVimPluginPrivate *dd = nullptr; static class FakeVimPlugin *dd = nullptr;
class MiniBuffer : public QStackedWidget class MiniBuffer : public QStackedWidget
{ {
@@ -213,8 +213,6 @@ private:
class RelativeNumbersColumn : public QWidget class RelativeNumbersColumn : public QWidget
{ {
Q_OBJECT
public: public:
RelativeNumbersColumn(TextEditorWidget *baseTextEditor) RelativeNumbersColumn(TextEditorWidget *baseTextEditor)
: QWidget(baseTextEditor) : QWidget(baseTextEditor)
@@ -332,28 +330,37 @@ private:
/////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////
// //
// FakeVimOptionPage // FakeVimPlugin
// //
/////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////
using ExCommandMap = QMap<QString, QRegularExpression>; using ExCommandMap = QMap<QString, QRegularExpression>;
using UserCommandMap = QMap<int, QString>; using UserCommandMap = QMap<int, QString>;
class FakeVimPlugin final : public ExtensionSystem::IPlugin
///////////////////////////////////////////////////////////////////////
//
// FakeVimPluginPrivate
//
///////////////////////////////////////////////////////////////////////
class FakeVimPluginPrivate : public QObject
{ {
Q_OBJECT Q_OBJECT
Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QtCreatorPlugin" FILE "FakeVim.json")
public: public:
FakeVimPluginPrivate(); FakeVimPlugin();
void initialize(); ~FakeVimPlugin() final { dd = nullptr; }
void initialize() final;
void extensionsInitialized() final
{
m_miniBuffer = new MiniBuffer;
StatusBarManager::addStatusBarWidget(m_miniBuffer, StatusBarManager::LastLeftAligned);
}
ExtensionSystem::IPlugin::ShutdownFlag aboutToShutdown() final
{
StatusBarManager::destroyStatusBarWidget(m_miniBuffer);
m_miniBuffer = nullptr;
return SynchronousShutdown;
}
void editorOpened(Core::IEditor *); void editorOpened(Core::IEditor *);
void editorAboutToClose(Core::IEditor *); void editorAboutToClose(Core::IEditor *);
@@ -964,7 +971,6 @@ IAssistProcessor *FakeVimCompletionAssistProvider::createProcessor(const AssistI
return new FakeVimCompletionAssistProcessor(this); return new FakeVimCompletionAssistProcessor(this);
} }
// FakeVimUserCommandsModel // FakeVimUserCommandsModel
QVariant FakeVimUserCommandsModel::data(const QModelIndex &index, int role) const QVariant FakeVimUserCommandsModel::data(const QModelIndex &index, int role) const
@@ -993,8 +999,55 @@ bool FakeVimUserCommandsModel::setData(const QModelIndex &index,
return true; return true;
} }
FakeVimPluginPrivate::FakeVimPluginPrivate() static void setupTest(QString *title, FakeVimHandler **handler, QWidget **edit)
{ {
*title = QString::fromLatin1("test.cpp");
IEditor *iedit = EditorManager::openEditorWithContents(Id(), title);
EditorManager::activateEditor(iedit);
*edit = iedit->widget();
*handler = dd->m_editorToHandler.value(iedit, {}).handler;
(*handler)->setupWidget();
(*handler)->handleCommand("set startofline");
// *handler = 0;
// m_statusMessage.clear();
// m_statusData.clear();
// m_infoMessage.clear();
// if (m_textedit) {
// m_textedit->setPlainText(lines);
// QTextCursor tc = m_textedit->textCursor();
// tc.movePosition(QTextCursor::Start, QTextCursor::MoveAnchor);
// m_textedit->setTextCursor(tc);
// m_textedit->setPlainText(lines);
// *handler = new FakeVimHandler(m_textedit);
// } else {
// m_plaintextedit->setPlainText(lines);
// QTextCursor tc = m_plaintextedit->textCursor();
// tc.movePosition(QTextCursor::Start, QTextCursor::MoveAnchor);
// m_plaintextedit->setTextCursor(tc);
// m_plaintextedit->setPlainText(lines);
// *handler = new FakeVimHandler(m_plaintextedit);
// }
// connect(*handler, &FakeVimHandler::commandBufferChanged,
// this, &FakeVimPlugin::changeStatusMessage);
// connect(*handler, &FakeVimHandler::extraInformationChanged,
// this, &FakeVimPlugin::changeExtraInformation);
// connect(*handler, &FakeVimHandler::statusDataChanged,
// this, &FakeVimPlugin::changeStatusData);
// QCOMPARE(EDITOR(toPlainText()), lines);
(*handler)->handleCommand("set iskeyword=@,48-57,_,192-255,a-z,A-Z");
}
QObject *createFakeVimTester( void (*setupTest)(QString *, FakeVimHandler **, QWidget **) ); // in fakevim_test.cpp
FakeVimPlugin::FakeVimPlugin()
{
dd = this;
addTestCreator([] { return createFakeVimTester(&setupTest); });
m_defaultExCommandMap[CppEditor::Constants::SWITCH_HEADER_SOURCE] = m_defaultExCommandMap[CppEditor::Constants::SWITCH_HEADER_SOURCE] =
QRegularExpression("^A$"); QRegularExpression("^A$");
m_defaultExCommandMap["Coreplugin.OutputPane.previtem"] = m_defaultExCommandMap["Coreplugin.OutputPane.previtem"] =
@@ -1014,7 +1067,7 @@ FakeVimPluginPrivate::FakeVimPluginPrivate()
} }
} }
void FakeVimPluginPrivate::initialize() void FakeVimPlugin::initialize()
{ {
/* /*
// Set completion settings and keep them up to date. // Set completion settings and keep them up to date.
@@ -1053,44 +1106,44 @@ void FakeVimPluginPrivate::initialize()
connect(ICore::instance(), &ICore::coreAboutToClose, this, [] { connect(ICore::instance(), &ICore::coreAboutToClose, this, [] {
// Don't attach to editors anymore. // Don't attach to editors anymore.
disconnect(EditorManager::instance(), &EditorManager::editorOpened, disconnect(EditorManager::instance(), &EditorManager::editorOpened,
dd, &FakeVimPluginPrivate::editorOpened); dd, &FakeVimPlugin::editorOpened);
}); });
// EditorManager // EditorManager
connect(EditorManager::instance(), &EditorManager::editorAboutToClose, connect(EditorManager::instance(), &EditorManager::editorAboutToClose,
this, &FakeVimPluginPrivate::editorAboutToClose); this, &FakeVimPlugin::editorAboutToClose);
connect(EditorManager::instance(), &EditorManager::editorOpened, connect(EditorManager::instance(), &EditorManager::editorOpened,
this, &FakeVimPluginPrivate::editorOpened); this, &FakeVimPlugin::editorOpened);
connect(EditorManager::instance(), &EditorManager::currentEditorAboutToChange, connect(EditorManager::instance(), &EditorManager::currentEditorAboutToChange,
this, &FakeVimPluginPrivate::currentEditorAboutToChange); this, &FakeVimPlugin::currentEditorAboutToChange);
connect(DocumentManager::instance(), &DocumentManager::allDocumentsRenamed, connect(DocumentManager::instance(), &DocumentManager::allDocumentsRenamed,
this, &FakeVimPluginPrivate::allDocumentsRenamed); this, &FakeVimPlugin::allDocumentsRenamed);
connect(DocumentManager::instance(), &DocumentManager::documentRenamed, connect(DocumentManager::instance(), &DocumentManager::documentRenamed,
this, &FakeVimPluginPrivate::documentRenamed); this, &FakeVimPlugin::documentRenamed);
FakeVimSettings &s = settings(); FakeVimSettings &s = settings();
connect(&s.useFakeVim, &FvBoolAspect::changed, connect(&s.useFakeVim, &FvBoolAspect::changed,
this, [this, &s] { setUseFakeVim(s.useFakeVim()); }); this, [this, &s] { setUseFakeVim(s.useFakeVim()); });
connect(&s.readVimRc, &FvBaseAspect::changed, connect(&s.readVimRc, &FvBaseAspect::changed,
this, &FakeVimPluginPrivate::maybeReadVimRc); this, &FakeVimPlugin::maybeReadVimRc);
connect(&s.vimRcPath, &FvBaseAspect::changed, connect(&s.vimRcPath, &FvBaseAspect::changed,
this, &FakeVimPluginPrivate::maybeReadVimRc); this, &FakeVimPlugin::maybeReadVimRc);
connect(&s.relativeNumber, &FvBoolAspect::changed, connect(&s.relativeNumber, &FvBoolAspect::changed,
this, [this, &s] { setShowRelativeLineNumbers(s.relativeNumber()); }); this, [this, &s] { setShowRelativeLineNumbers(s.relativeNumber()); });
connect(&s.blinkingCursor, &FvBoolAspect::changed, connect(&s.blinkingCursor, &FvBoolAspect::changed,
this, [this, &s] { setCursorBlinking(s.blinkingCursor()); }); this, [this, &s] { setCursorBlinking(s.blinkingCursor()); });
// Delayed operations. // Delayed operations.
connect(this, &FakeVimPluginPrivate::delayedQuitRequested, connect(this, &FakeVimPlugin::delayedQuitRequested,
this, &FakeVimPluginPrivate::handleDelayedQuit, Qt::QueuedConnection); this, &FakeVimPlugin::handleDelayedQuit, Qt::QueuedConnection);
connect(this, &FakeVimPluginPrivate::delayedQuitAllRequested, connect(this, &FakeVimPlugin::delayedQuitAllRequested,
this, &FakeVimPluginPrivate::handleDelayedQuitAll, Qt::QueuedConnection); this, &FakeVimPlugin::handleDelayedQuitAll, Qt::QueuedConnection);
setCursorBlinking(s.blinkingCursor()); setCursorBlinking(s.blinkingCursor());
} }
void FakeVimPluginPrivate::userActionTriggered(int key) void FakeVimPlugin::userActionTriggered(int key)
{ {
IEditor *editor = EditorManager::currentEditor(); IEditor *editor = EditorManager::currentEditor();
FakeVimHandler *handler = m_editorToHandler[editor].handler; FakeVimHandler *handler = m_editorToHandler[editor].handler;
@@ -1108,7 +1161,7 @@ void FakeVimPluginPrivate::userActionTriggered(int key)
} }
} }
void FakeVimPluginPrivate::updateAllHightLights() void FakeVimPlugin::updateAllHightLights()
{ {
const QList<IEditor *> editors = EditorManager::visibleEditors(); const QList<IEditor *> editors = EditorManager::visibleEditors();
for (IEditor *editor : editors) { for (IEditor *editor : editors) {
@@ -1118,7 +1171,7 @@ void FakeVimPluginPrivate::updateAllHightLights()
} }
} }
void FakeVimPluginPrivate::createRelativeNumberWidget(IEditor *editor) void FakeVimPlugin::createRelativeNumberWidget(IEditor *editor)
{ {
if (auto textEditor = TextEditorWidget::fromEditor(editor)) { if (auto textEditor = TextEditorWidget::fromEditor(editor)) {
auto relativeNumbers = new RelativeNumbersColumn(textEditor); auto relativeNumbers = new RelativeNumbersColumn(textEditor);
@@ -1130,7 +1183,7 @@ void FakeVimPluginPrivate::createRelativeNumberWidget(IEditor *editor)
} }
} }
void FakeVimPluginPrivate::readSettings() void FakeVimPlugin::readSettings()
{ {
QtcSettings *settings = ICore::settings(); QtcSettings *settings = ICore::settings();
@@ -1157,7 +1210,7 @@ void FakeVimPluginPrivate::readSettings()
settings->endArray(); settings->endArray();
} }
void FakeVimPluginPrivate::maybeReadVimRc() void FakeVimPlugin::maybeReadVimRc()
{ {
//qDebug() << theFakeVimSetting(ConfigReadVimRc) //qDebug() << theFakeVimSetting(ConfigReadVimRc)
// << theFakeVimSetting(ConfigReadVimRc)->value(); // << theFakeVimSetting(ConfigReadVimRc)->value();
@@ -1186,7 +1239,7 @@ static void triggerAction(Id id)
action->trigger(); action->trigger();
} }
void FakeVimPluginPrivate::setActionChecked(Id id, bool check) void FakeVimPlugin::setActionChecked(Id id, bool check)
{ {
Command *cmd = ActionManager::command(id); Command *cmd = ActionManager::command(id);
QTC_ASSERT(cmd, return); QTC_ASSERT(cmd, return);
@@ -1237,7 +1290,7 @@ static int moveDownWeight(const QRect &cursor, const QRect &other)
return w; return w;
} }
void FakeVimPluginPrivate::moveSomewhere(FakeVimHandler *handler, DistFunction f, int count) void FakeVimPlugin::moveSomewhere(FakeVimHandler *handler, DistFunction f, int count)
{ {
QTC_ASSERT(handler, return); QTC_ASSERT(handler, return);
QWidget *w = handler->widget(); QWidget *w = handler->widget();
@@ -1281,7 +1334,7 @@ void FakeVimPluginPrivate::moveSomewhere(FakeVimHandler *handler, DistFunction f
EditorManager::activateEditor(bestEditor); EditorManager::activateEditor(bestEditor);
} }
void FakeVimPluginPrivate::keepOnlyWindow() void FakeVimPlugin::keepOnlyWindow()
{ {
IEditor *currentEditor = EditorManager::currentEditor(); IEditor *currentEditor = EditorManager::currentEditor();
QList<IEditor *> editors = EditorManager::visibleEditors(); QList<IEditor *> editors = EditorManager::visibleEditors();
@@ -1293,7 +1346,7 @@ void FakeVimPluginPrivate::keepOnlyWindow()
} }
} }
void FakeVimPluginPrivate::fold(FakeVimHandler *handler, int depth, bool fold) void FakeVimPlugin::fold(FakeVimHandler *handler, int depth, bool fold)
{ {
QTC_ASSERT(handler, return); QTC_ASSERT(handler, return);
QTextDocument *doc = handler->textCursor().document(); QTextDocument *doc = handler->textCursor().document();
@@ -1368,7 +1421,7 @@ public:
} }
}; };
void FakeVimPluginPrivate::editorOpened(IEditor *editor) void FakeVimPlugin::editorOpened(IEditor *editor)
{ {
if (!editor) if (!editor)
return; return;
@@ -1741,31 +1794,31 @@ void FakeVimPluginPrivate::editorOpened(IEditor *editor)
} }
} }
void FakeVimPluginPrivate::editorAboutToClose(IEditor *editor) void FakeVimPlugin::editorAboutToClose(IEditor *editor)
{ {
//qDebug() << "CLOSING: " << editor << editor->widget(); //qDebug() << "CLOSING: " << editor << editor->widget();
m_editorToHandler.remove(editor); m_editorToHandler.remove(editor);
} }
void FakeVimPluginPrivate::currentEditorAboutToChange(IEditor *editor) void FakeVimPlugin::currentEditorAboutToChange(IEditor *editor)
{ {
if (FakeVimHandler *handler = m_editorToHandler.value(editor, {}).handler) if (FakeVimHandler *handler = m_editorToHandler.value(editor, {}).handler)
handler->enterCommandMode(); handler->enterCommandMode();
} }
void FakeVimPluginPrivate::allDocumentsRenamed(const FilePath &oldPath, const FilePath &newPath) void FakeVimPlugin::allDocumentsRenamed(const FilePath &oldPath, const FilePath &newPath)
{ {
renameFileNameInEditors(oldPath, newPath); renameFileNameInEditors(oldPath, newPath);
FakeVimHandler::updateGlobalMarksFilenames(oldPath.toString(), newPath.toString()); FakeVimHandler::updateGlobalMarksFilenames(oldPath.toString(), newPath.toString());
} }
void FakeVimPluginPrivate::documentRenamed( void FakeVimPlugin::documentRenamed(
IDocument *, const FilePath &oldPath, const FilePath &newPath) IDocument *, const FilePath &oldPath, const FilePath &newPath)
{ {
renameFileNameInEditors(oldPath, newPath); renameFileNameInEditors(oldPath, newPath);
} }
void FakeVimPluginPrivate::renameFileNameInEditors(const FilePath &oldPath, const FilePath &newPath) void FakeVimPlugin::renameFileNameInEditors(const FilePath &oldPath, const FilePath &newPath)
{ {
for (const HandlerAndData &handlerAndData : m_editorToHandler) { for (const HandlerAndData &handlerAndData : m_editorToHandler) {
if (handlerAndData.handler->currentFileName() == oldPath.toString()) if (handlerAndData.handler->currentFileName() == oldPath.toString())
@@ -1773,7 +1826,7 @@ void FakeVimPluginPrivate::renameFileNameInEditors(const FilePath &oldPath, cons
} }
} }
void FakeVimPluginPrivate::setUseFakeVim(bool on) void FakeVimPlugin::setUseFakeVim(bool on)
{ {
//qDebug() << "SET USE FAKEVIM" << on; //qDebug() << "SET USE FAKEVIM" << on;
Find::setUseFakeVim(on); Find::setUseFakeVim(on);
@@ -1782,7 +1835,7 @@ void FakeVimPluginPrivate::setUseFakeVim(bool on)
setCursorBlinking(settings().blinkingCursor()); setCursorBlinking(settings().blinkingCursor());
} }
void FakeVimPluginPrivate::setUseFakeVimInternal(bool on) void FakeVimPlugin::setUseFakeVimInternal(bool on)
{ {
if (on) { if (on) {
//ICore *core = ICore::instance(); //ICore *core = ICore::instance();
@@ -1805,7 +1858,7 @@ void FakeVimPluginPrivate::setUseFakeVimInternal(bool on)
} }
} }
void FakeVimPluginPrivate::setShowRelativeLineNumbers(bool on) void FakeVimPlugin::setShowRelativeLineNumbers(bool on)
{ {
if (on && settings().useFakeVim()) { if (on && settings().useFakeVim()) {
for (auto it = m_editorToHandler.constBegin(); it != m_editorToHandler.constEnd(); ++it) for (auto it = m_editorToHandler.constBegin(); it != m_editorToHandler.constEnd(); ++it)
@@ -1813,7 +1866,7 @@ void FakeVimPluginPrivate::setShowRelativeLineNumbers(bool on)
} }
} }
void FakeVimPluginPrivate::setCursorBlinking(bool on) void FakeVimPlugin::setCursorBlinking(bool on)
{ {
if (m_savedCursorFlashTime == 0) if (m_savedCursorFlashTime == 0)
m_savedCursorFlashTime = QGuiApplication::styleHints()->cursorFlashTime(); m_savedCursorFlashTime = QGuiApplication::styleHints()->cursorFlashTime();
@@ -1822,7 +1875,7 @@ void FakeVimPluginPrivate::setCursorBlinking(bool on)
QGuiApplication::styleHints()->setCursorFlashTime(blink ? m_savedCursorFlashTime : 0); QGuiApplication::styleHints()->setCursorFlashTime(blink ? m_savedCursorFlashTime : 0);
} }
void FakeVimPluginPrivate::handleExCommand(FakeVimHandler *handler, bool *handled, const ExCommand &cmd) void FakeVimPlugin::handleExCommand(FakeVimHandler *handler, bool *handled, const ExCommand &cmd)
{ {
QTC_ASSERT(handler, return); QTC_ASSERT(handler, return);
using namespace Core; using namespace Core;
@@ -1944,7 +1997,7 @@ void FakeVimPluginPrivate::handleExCommand(FakeVimHandler *handler, bool *handle
} }
} }
void FakeVimPluginPrivate::handleDelayedQuit(bool forced, IEditor *editor) void FakeVimPlugin::handleDelayedQuit(bool forced, IEditor *editor)
{ {
// This tries to simulate vim behaviour. But the models of vim and // This tries to simulate vim behaviour. But the models of vim and
// Qt Creator core do not match well... // Qt Creator core do not match well...
@@ -1954,23 +2007,23 @@ void FakeVimPluginPrivate::handleDelayedQuit(bool forced, IEditor *editor)
EditorManager::closeEditors({editor}, !forced); EditorManager::closeEditors({editor}, !forced);
} }
void FakeVimPluginPrivate::handleDelayedQuitAll(bool forced) void FakeVimPlugin::handleDelayedQuitAll(bool forced)
{ {
triggerAction(Core::Constants::REMOVE_ALL_SPLITS); triggerAction(Core::Constants::REMOVE_ALL_SPLITS);
EditorManager::closeAllEditors(!forced); EditorManager::closeAllEditors(!forced);
} }
void FakeVimPluginPrivate::quitFakeVim() void FakeVimPlugin::quitFakeVim()
{ {
settings().useFakeVim.setValue(false); settings().useFakeVim.setValue(false);
} }
void FakeVimPluginPrivate::resetCommandBuffer() void FakeVimPlugin::resetCommandBuffer()
{ {
showCommandBuffer(nullptr, QString(), -1, -1, 0); showCommandBuffer(nullptr, QString(), -1, -1, 0);
} }
void FakeVimPluginPrivate::showCommandBuffer(FakeVimHandler *handler, const QString &contents, int cursorPos, int anchorPos, void FakeVimPlugin::showCommandBuffer(FakeVimHandler *handler, const QString &contents, int cursorPos, int anchorPos,
int messageLevel) int messageLevel)
{ {
//qDebug() << "SHOW COMMAND BUFFER" << contents; //qDebug() << "SHOW COMMAND BUFFER" << contents;
@@ -1978,7 +2031,7 @@ void FakeVimPluginPrivate::showCommandBuffer(FakeVimHandler *handler, const QStr
m_miniBuffer->setContents(contents, cursorPos, anchorPos, messageLevel, handler); m_miniBuffer->setContents(contents, cursorPos, anchorPos, messageLevel, handler);
} }
int FakeVimPluginPrivate::currentFile() const int FakeVimPlugin::currentFile() const
{ {
IEditor *editor = EditorManager::currentEditor(); IEditor *editor = EditorManager::currentEditor();
if (editor) { if (editor) {
@@ -1989,7 +2042,7 @@ int FakeVimPluginPrivate::currentFile() const
return -1; return -1;
} }
void FakeVimPluginPrivate::switchToFile(int n) void FakeVimPlugin::switchToFile(int n)
{ {
int size = DocumentModel::entryCount(); int size = DocumentModel::entryCount();
QTC_ASSERT(size, return); QTC_ASSERT(size, return);
@@ -1999,92 +2052,6 @@ void FakeVimPluginPrivate::switchToFile(int n)
EditorManager::activateEditorForEntry(DocumentModel::entries().at(n)); EditorManager::activateEditorForEntry(DocumentModel::entries().at(n));
} }
///////////////////////////////////////////////////////////////////////
//
// FakeVimPlugin
//
///////////////////////////////////////////////////////////////////////
static void setupTest(QString *title, FakeVimHandler **handler, QWidget **edit)
{
*title = QString::fromLatin1("test.cpp");
IEditor *iedit = EditorManager::openEditorWithContents(Id(), title);
EditorManager::activateEditor(iedit);
*edit = iedit->widget();
*handler = dd->m_editorToHandler.value(iedit, {}).handler;
(*handler)->setupWidget();
(*handler)->handleCommand("set startofline");
// *handler = 0;
// m_statusMessage.clear();
// m_statusData.clear();
// m_infoMessage.clear();
// if (m_textedit) {
// m_textedit->setPlainText(lines);
// QTextCursor tc = m_textedit->textCursor();
// tc.movePosition(QTextCursor::Start, QTextCursor::MoveAnchor);
// m_textedit->setTextCursor(tc);
// m_textedit->setPlainText(lines);
// *handler = new FakeVimHandler(m_textedit);
// } else {
// m_plaintextedit->setPlainText(lines);
// QTextCursor tc = m_plaintextedit->textCursor();
// tc.movePosition(QTextCursor::Start, QTextCursor::MoveAnchor);
// m_plaintextedit->setTextCursor(tc);
// m_plaintextedit->setPlainText(lines);
// *handler = new FakeVimHandler(m_plaintextedit);
// }
// connect(*handler, &FakeVimHandler::commandBufferChanged,
// this, &FakeVimPlugin::changeStatusMessage);
// connect(*handler, &FakeVimHandler::extraInformationChanged,
// this, &FakeVimPlugin::changeExtraInformation);
// connect(*handler, &FakeVimHandler::statusDataChanged,
// this, &FakeVimPlugin::changeStatusData);
// QCOMPARE(EDITOR(toPlainText()), lines);
(*handler)->handleCommand("set iskeyword=@,48-57,_,192-255,a-z,A-Z");
}
QObject *createFakeVimTester( void (*setupTest)(QString *, FakeVimHandler **, QWidget **) ); // in fakevim_test.cpp
class FakeVimPlugin : public ExtensionSystem::IPlugin
{
Q_OBJECT
Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QtCreatorPlugin" FILE "FakeVim.json")
public:
FakeVimPlugin()
{
addTestCreator([] { return createFakeVimTester(&setupTest); });
dd = new FakeVimPluginPrivate;
}
~FakeVimPlugin() override
{
delete dd;
dd = nullptr;
}
ExtensionSystem::IPlugin::ShutdownFlag aboutToShutdown()
{
StatusBarManager::destroyStatusBarWidget(dd->m_miniBuffer);
dd->m_miniBuffer = nullptr;
return SynchronousShutdown;
}
void initialize() override
{
dd->initialize();
}
void extensionsInitialized() override
{
dd->m_miniBuffer = new MiniBuffer;
StatusBarManager::addStatusBarWidget(dd->m_miniBuffer, StatusBarManager::LastLeftAligned);
}
};
} // FakeVim::Internal } // FakeVim::Internal
#include "fakevimplugin.moc" #include "fakevimplugin.moc"