aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/fakevim
diff options
context:
space:
mode:
authorMarcus Tillmanns <marcus.tillmanns@qt.io>2023-04-27 08:49:30 +0200
committerMarcus Tillmanns <marcus.tillmanns@qt.io>2023-04-27 06:56:47 +0000
commit1a658eff26f5b7954899475ee6a4df8d96691e10 (patch)
treeaa38d81638beea0cdb811e608a728d2bb0640893 /src/plugins/fakevim
parent86cdc6667d347c6f8af4a19f7d42dfac157a5545 (diff)
FakeVim: Clear suggestions on mode change
Change-Id: I5d3a37ab61f83a70e055063de397654f5621401d Reviewed-by: David Schulz <david.schulz@qt.io> Reviewed-by: hjk <hjk@qt.io>
Diffstat (limited to 'src/plugins/fakevim')
-rw-r--r--src/plugins/fakevim/fakevimhandler.cpp8
-rw-r--r--src/plugins/fakevim/fakevimhandler.h1
-rw-r--r--src/plugins/fakevim/fakevimplugin.cpp5
3 files changed, 14 insertions, 0 deletions
diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp
index 6823965065..7403f9e454 100644
--- a/src/plugins/fakevim/fakevimhandler.cpp
+++ b/src/plugins/fakevim/fakevimhandler.cpp
@@ -5197,6 +5197,7 @@ void FakeVimHandler::Private::handleReplaceMode(const Input &input)
moveDown();
} else if (input.isKey(Key_Insert)) {
g.mode = InsertMode;
+ q->modeChanged();
} else if (input.isControl('o')) {
enterCommandMode(ReplaceMode);
} else {
@@ -5394,6 +5395,7 @@ void FakeVimHandler::Private::handleInsertMode(const Input &input)
removeText(range);
} else if (input.isKey(Key_Insert)) {
g.mode = ReplaceMode;
+ q->modeChanged();
} else if (input.isKey(Key_Left)) {
moveLeft();
} else if (input.isShift(Key_Left) || input.isControl(Key_Left)) {
@@ -8575,6 +8577,8 @@ void FakeVimHandler::Private::enterInsertOrReplaceMode(Mode mode)
g.returnToMode = mode;
clearLastInsertion();
}
+
+ q->modeChanged();
}
void FakeVimHandler::Private::enterVisualInsertMode(QChar command)
@@ -8650,6 +8654,8 @@ void FakeVimHandler::Private::enterCommandMode(Mode returnToMode)
g.returnToMode = returnToMode;
m_positionPastEnd = false;
m_anchorPastEnd = false;
+
+ q->modeChanged();
}
void FakeVimHandler::Private::enterExMode(const QString &contents)
@@ -8664,6 +8670,8 @@ void FakeVimHandler::Private::enterExMode(const QString &contents)
g.submode = NoSubMode;
g.subsubmode = NoSubSubMode;
unfocus();
+
+ q->modeChanged();
}
void FakeVimHandler::Private::recordJump(int position)
diff --git a/src/plugins/fakevim/fakevimhandler.h b/src/plugins/fakevim/fakevimhandler.h
index 57955cd2cb..1d13fe301a 100644
--- a/src/plugins/fakevim/fakevimhandler.h
+++ b/src/plugins/fakevim/fakevimhandler.h
@@ -157,6 +157,7 @@ public:
Signal<void()> completionRequested;
Signal<void()> tabPreviousRequested;
Signal<void()> tabNextRequested;
+ Signal<void()> modeChanged;
public:
class Private;
diff --git a/src/plugins/fakevim/fakevimplugin.cpp b/src/plugins/fakevim/fakevimplugin.cpp
index d71c037645..4d3ec87ed6 100644
--- a/src/plugins/fakevim/fakevimplugin.cpp
+++ b/src/plugins/fakevim/fakevimplugin.cpp
@@ -1591,6 +1591,11 @@ void FakeVimPluginPrivate::editorOpened(IEditor *editor)
tew->setExtraSelections(TextEditorWidget::FakeVimSelection, selection);
});
+ handler->modeChanged.connect([tew]() {
+ if (tew)
+ tew->clearSuggestion();
+ });
+
handler->highlightMatches.connect([](const QString &needle) {
for (IEditor *editor : EditorManager::visibleEditors()) {
QWidget *w = editor->widget();