editor: Update CompletionProvider return type. (#1270)

This commit is contained in:
Jason Lee 2025-09-22 14:31:21 +08:00 committed by GitHub
parent aa0f6d6222
commit 62748aad9b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 8 additions and 12 deletions

View file

@ -194,10 +194,10 @@ impl CompletionProvider for ExampleLspStore {
trigger: CompletionContext, trigger: CompletionContext,
_: &mut Window, _: &mut Window,
cx: &mut Context<InputState>, cx: &mut Context<InputState>,
) -> Task<Result<Vec<CompletionResponse>>> { ) -> Task<Result<CompletionResponse>> {
let trigger_character = trigger.trigger_character.unwrap_or_default(); let trigger_character = trigger.trigger_character.unwrap_or_default();
if trigger_character.is_empty() { if trigger_character.is_empty() {
return Task::ready(Ok(vec![])); return Task::ready(Ok(CompletionResponse::Array(vec![])));
} }
// Simulate to delay for fetching completions // Simulate to delay for fetching completions
@ -232,7 +232,7 @@ impl CompletionProvider for ExampleLspStore {
completion_item(&range, "/sad", "😢", "Insert 😢"), completion_item(&range, "/sad", "😢", "Insert 😢"),
completion_item(&range, "/launch", "🚀", "Insert 🚀"), completion_item(&range, "/launch", "🚀", "Insert 🚀"),
]; ];
return Ok(vec![CompletionResponse::Array(items)]); return Ok(CompletionResponse::Array(items));
} }
let items = items let items = items
@ -246,9 +246,7 @@ impl CompletionProvider for ExampleLspStore {
}) })
.collect::<Vec<_>>(); .collect::<Vec<_>>();
let responses = vec![CompletionResponse::Array(items)]; Ok(CompletionResponse::Array(items))
Ok(responses)
}) })
} }

View file

@ -23,7 +23,7 @@ pub trait CompletionProvider {
trigger: CompletionContext, trigger: CompletionContext,
window: &mut Window, window: &mut Window,
cx: &mut Context<InputState>, cx: &mut Context<InputState>,
) -> Task<Result<Vec<CompletionResponse>>>; ) -> Task<Result<CompletionResponse>>;
fn resolve_completions( fn resolve_completions(
&self, &self,
@ -111,11 +111,9 @@ impl InputState {
self._context_menu_task = cx.spawn_in(window, async move |editor, cx| { self._context_menu_task = cx.spawn_in(window, async move |editor, cx| {
let mut completions: Vec<CompletionItem> = vec![]; let mut completions: Vec<CompletionItem> = vec![];
if let Some(provider_responses) = provider_responses.await.ok() { if let Some(provider_responses) = provider_responses.await.ok() {
for resp in provider_responses { match provider_responses {
match resp { CompletionResponse::Array(items) => completions.extend(items),
CompletionResponse::Array(items) => completions.extend(items), CompletionResponse::List(list) => completions.extend(list.items),
CompletionResponse::List(list) => completions.extend(list.items),
}
} }
} }