From b908614d826d926f7230ecd9a2292fdc9bc89b83 Mon Sep 17 00:00:00 2001 From: "gcp-cherry-pick-bot[bot]" <98988430+gcp-cherry-pick-bot[bot]@users.noreply.github.com> Date: Tue, 10 Jun 2025 16:33:04 -0600 Subject: [PATCH] Filter language server completions even when `is_incomplete: true` (cherry-pick #32491) (#32494) Cherry-picked Filter language server completions even when `is_incomplete: true` (#32491) In #31872 I changed the behavior of completions to not filter instead of requerying completions when `is_incomplete: false`. Unfortunately this also stopped filtering completions when `is_incomplete: true` - we still want to filter the incomplete completions so that the menu updates quickly even when completions are slow. This does mean that the completions menu will display partial results, hopefully only briefly while waiting for fresh completions. Thanks to @mikayla-maki for noticing the regression. Thankfully just in time to fix it before this makes it into a stable release. Leaving off release notes since I will cherry-pick this to the current preview version, 190.x, and there probably won't be a preview release before the next stable. Release Notes: - N/A Co-authored-by: Michael Sloan --- crates/editor/src/editor.rs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/crates/editor/src/editor.rs b/crates/editor/src/editor.rs index 610868dc85d9580a67d17235ec48c439bd01285a..13cac87731eb60cf582e48212054df6c2108d468 100644 --- a/crates/editor/src/editor.rs +++ b/crates/editor/src/editor.rs @@ -5087,10 +5087,13 @@ impl Editor { .as_ref() .map_or(true, |provider| provider.filter_completions()); - // When `is_incomplete` is false, can filter completions instead of re-querying when the - // current query is a suffix of the initial query. if let Some(CodeContextMenu::Completions(menu)) = self.context_menu.borrow_mut().as_mut() { - if !menu.is_incomplete && filter_completions { + if filter_completions { + menu.filter(query.clone(), provider.clone(), window, cx); + } + // When `is_incomplete` is false, no need to re-query completions when the current query + // is a suffix of the initial query. + if !menu.is_incomplete { // If the new query is a suffix of the old query (typing more characters) and // the previous result was complete, the existing completions can be filtered. // @@ -5108,7 +5111,6 @@ impl Editor { menu.initial_position.to_offset(&snapshot) == position.to_offset(&snapshot) }; if position_matches { - menu.filter(query.clone(), provider.clone(), window, cx); return; } }