vim: Don't show inline completions in normal mode (#17137)

This fixes an annoying bug I ran into, where supermaven completions
would show up in normal mode.

cc @ConradIrwin not sure if this is the best way to fix this, but it
seems like the neatest? On one hand, I didn't want to touch into Vim
from the editor, and on the other I didn't want to add another boolean
on the editor that flips on when in normal mode. So instead I extended
the Addon interface.

Release Notes:

- Fixed inline completions (Copilot or Supermaven) showing up in Vim's
normal mode.
This commit is contained in:
Thorsten Ball 2024-08-30 10:50:12 +02:00 committed by GitHub
parent 6403385468
commit 9206561662
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 14 additions and 2 deletions

View file

@ -91,8 +91,7 @@ pub fn init(cx: &mut AppContext) {
VimSettings::register(cx);
VimGlobals::register(cx);
cx.observe_new_views(|editor: &mut Editor, cx| Vim::register(editor, cx))
.detach();
cx.observe_new_views(Vim::register).detach();
cx.observe_new_views(|workspace: &mut Workspace, _| {
workspace.register_action(|workspace, _: &ToggleVimMode, cx| {
@ -135,6 +134,11 @@ impl editor::Addon for VimAddon {
self.view.read(cx).extend_key_context(key_context)
}
fn should_show_inline_completions(&self, cx: &AppContext) -> bool {
let mode = self.view.read(cx).mode;
mode == Mode::Insert || mode == Mode::Replace
}
fn to_any(&self) -> &dyn std::any::Any {
self
}