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
2 changed files with 14 additions and 2 deletions
+8
View File
@@ -470,6 +470,9 @@ struct BufferOffset(usize);
// Addons allow storing per-editor state in other crates (e.g. Vim)
pub trait Addon: 'static {
fn extend_key_context(&self, _: &mut KeyContext, _: &AppContext) {}
fn should_show_inline_completions(&self, _: &AppContext) -> bool {
true
}
fn to_any(&self) -> &dyn std::any::Any;
}
@@ -2340,6 +2343,11 @@ impl Editor {
cx: &AppContext,
) -> bool {
if let Some(provider) = self.inline_completion_provider() {
for addon in self.addons.values() {
if !addon.should_show_inline_completions(cx) {
return false;
}
}
if let Some(show_inline_completions) = self.show_inline_completions_override {
show_inline_completions
} else {