aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/fakevim
diff options
context:
space:
mode:
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 68239650654..7403f9e454b 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 57955cd2cbd..1d13fe301ad 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 d71c0376457..4d3ec87ed6c 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();