diff --git a/crates/editor/src/code_context_menus.rs b/crates/editor/src/code_context_menus.rs index 0408d10a203fa35c3ba910144f6655855acd5875..5fce4cbb1bb613b53b40a63fb9bf0573b6e33938 100644 --- a/crates/editor/src/code_context_menus.rs +++ b/crates/editor/src/code_context_menus.rs @@ -333,9 +333,7 @@ impl CompletionsMenu { entries[0] = hint; } _ => { - if self.selected_item != 0 { - self.selected_item += 1; - } + self.selected_item += 1; entries.insert(0, hint); } } @@ -674,6 +672,11 @@ impl CompletionsMenu { } pub async fn filter(&mut self, query: Option<&str>, executor: BackgroundExecutor) { + let inline_completion_was_selected = self.selected_item == 0 + && self.entries.borrow().first().map_or(false, |entry| { + matches!(entry, CompletionEntry::InlineCompletionHint(_)) + }); + let mut matches = if let Some(query) = query { fuzzy::match_strings( &self.match_candidates, @@ -770,12 +773,16 @@ impl CompletionsMenu { let mut entries = self.entries.borrow_mut(); if let Some(CompletionEntry::InlineCompletionHint(_)) = entries.first() { entries.truncate(1); + if inline_completion_was_selected { + self.selected_item = 0; + } else { + self.selected_item = 1; + } } else { entries.truncate(0); + self.selected_item = 0; } entries.extend(matches.into_iter().map(CompletionEntry::Match)); - - self.selected_item = 0; } }