From 1ced46f373778184d4363d8f1e30ed401446ee5c Mon Sep 17 00:00:00 2001 From: hjk Date: Thu, 10 Apr 2025 11:51:27 +0200 Subject: [PATCH] FakeVim: Implement :bd[elete]! Task-number: QTCREATORBUG-32757 Change-Id: I6caa9b04ec371f4d830292a7544fbbd6264e62b7 Reviewed-by: David Schulz --- src/plugins/fakevim/fakevimplugin.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/plugins/fakevim/fakevimplugin.cpp b/src/plugins/fakevim/fakevimplugin.cpp index 542ca3cfbb6..625c6027d58 100644 --- a/src/plugins/fakevim/fakevimplugin.cpp +++ b/src/plugins/fakevim/fakevimplugin.cpp @@ -387,6 +387,7 @@ public: void handleDelayedQuitAll(bool forced); void handleDelayedQuit(bool forced, Core::IEditor *editor); + void handleBufferDelete(bool forced, Core::IEditor *editor); void userActionTriggered(int key); void updateAllHightLights(); @@ -399,6 +400,7 @@ public: signals: void delayedQuitRequested(bool forced, Core::IEditor *editor); void delayedQuitAllRequested(bool forced); + void delayedBufferDeleteRequested(bool forced, Core::IEditor *editor); public: struct HandlerAndData @@ -1147,6 +1149,8 @@ void FakeVimPlugin::initialize() this, &FakeVimPlugin::handleDelayedQuit, Qt::QueuedConnection); connect(this, &FakeVimPlugin::delayedQuitAllRequested, this, &FakeVimPlugin::handleDelayedQuitAll, Qt::QueuedConnection); + connect(this, &FakeVimPlugin::delayedBufferDeleteRequested, + this, &FakeVimPlugin::handleBufferDelete, Qt::QueuedConnection); setCursorBlinking(s.blinkingCursor()); } @@ -1942,6 +1946,9 @@ void FakeVimPlugin::handleExCommand(FakeVimHandler *handler, bool *handled, cons handler->showMessage(MessageError, Tr::tr("%n files not saved", nullptr, failed.size())); if (cmd.matches("wqa", "wqall")) emit delayedQuitAllRequested(cmd.hasBang); + } else if (cmd.matches("bd", "bdelete")) { + // :bd[elete] + emit delayedBufferDeleteRequested(cmd.hasBang, editorFromHandler()); } else if (cmd.matches("q", "quit")) { // :q[uit] emit delayedQuitRequested(cmd.hasBang, editorFromHandler()); @@ -2023,6 +2030,11 @@ void FakeVimPlugin::handleDelayedQuitAll(bool forced) EditorManager::closeAllEditors(!forced); } +void FakeVimPlugin::handleBufferDelete(bool forced, IEditor *editor) +{ + EditorManager::closeEditors({editor}, !forced); +} + void FakeVimPlugin::quitFakeVim() { settings().useFakeVim.setValue(false);