From ea012075fc8bc80a4b5804e73b0e65887a0b23b3 Mon Sep 17 00:00:00 2001 From: Thorsten Ball Date: Mon, 16 Dec 2024 15:10:33 +0100 Subject: [PATCH] Trigger completions even if inline completion is visible (#22077) This is related to #22069 and #21858: before both of these PRs, we would only ever show inline completions OR completions, never both at the same time. Now we show both at the same, but we still had this piece of logic here, that prevented non-inline completions from showing up if there was already an inline completion. With this change, it's possible to get LSP completions without having to dismiss inline completions before. Release Notes: - Inline completions (Copilot, Supermaven, ...) don't stop other completions from showing up anymore. Both can now be visible at the same time. --------- Co-authored-by: Bennet --- crates/copilot/src/copilot_completion_provider.rs | 11 +++++++++++ crates/editor/src/editor.rs | 4 +--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/crates/copilot/src/copilot_completion_provider.rs b/crates/copilot/src/copilot_completion_provider.rs index 949e2178a6..730401adc7 100644 --- a/crates/copilot/src/copilot_completion_provider.rs +++ b/crates/copilot/src/copilot_completion_provider.rs @@ -373,6 +373,17 @@ mod tests { // Ensure existing inline completion is interpolated when inserting again. cx.simulate_keystroke("c"); + // We still request a normal LSP completion, but we interpolate the + // existing inline completion. + drop(handle_completion_request( + &mut cx, + indoc! {" + one.c|<> + two + three + "}, + vec!["ompletion_a", "ompletion_b"], + )); executor.run_until_parked(); cx.update_editor(|editor, cx| { assert!(!editor.context_menu_visible()); diff --git a/crates/editor/src/editor.rs b/crates/editor/src/editor.rs index f0a4320c66..0979f1cc70 100644 --- a/crates/editor/src/editor.rs +++ b/crates/editor/src/editor.rs @@ -2843,7 +2843,6 @@ impl Editor { ); } - let had_active_inline_completion = this.has_active_inline_completion(); this.change_selections_inner(Some(Autoscroll::fit()), false, cx, |s| { s.select(new_selections) }); @@ -2864,8 +2863,7 @@ impl Editor { this.show_signature_help(&ShowSignatureHelp, cx); } - let trigger_in_words = !had_active_inline_completion; - this.trigger_completion_on_input(&text, trigger_in_words, cx); + this.trigger_completion_on_input(&text, true, cx); linked_editing_ranges::refresh_linked_ranges(this, cx); this.refresh_inline_completion(true, false, cx); });