Skip to content

[Vimode] Fix Macro Completion Replay

This patch makes it so that completions are properly replayed when macros are replayed.

Ctrl-Space input events are caught by KateViewInternal::eventFilter as a QEvent::ShortcutOverride (and not as a QEvent::KeyPress) so it never reaches InsertVimode::handleKeyPress which is where the completion replay is triggered.

BUG: 334032 link

This is probably the wrong approach/layer for the fix, but so far I haven't found a better way.

From the debug messages I sprinkled to the key event handling path, it seems that the QApplication::sendEvent from InputModeManager::feedKeyPresses sends two events with the same keys, the first one as QEvent::ShortcutOverride and the second as QEvent::KeyPress. For some reason, only the first event is sent for Ctrl-Space. I initially thought that it was because it was a valid shortcut (for starting completion), but two events are sent for other valid shortcuts (e.g. Ctrl-a).

Edited by Christoph Cullmann

Merge request reports