Summarize file in the background

This commit is contained in:
Antonio Scandurra 2023-10-02 15:36:10 +02:00
parent f52200a340
commit d70014cfd0

View file

@ -546,15 +546,16 @@ impl AssistantPanel {
self.inline_prompt_history.pop_front(); self.inline_prompt_history.pop_front();
} }
let codegen = pending_assist.codegen.clone();
let snapshot = editor.read(cx).buffer().read(cx).snapshot(cx); let snapshot = editor.read(cx).buffer().read(cx).snapshot(cx);
let range = pending_assist.codegen.read(cx).range(); let range = codegen.read(cx).range();
let start = snapshot.point_to_buffer_offset(range.start); let start = snapshot.point_to_buffer_offset(range.start);
let end = snapshot.point_to_buffer_offset(range.end); let end = snapshot.point_to_buffer_offset(range.end);
let (buffer, range) = if let Some((start, end)) = start.zip(end) { let (buffer, range) = if let Some((start, end)) = start.zip(end) {
let (start_buffer, start_buffer_offset) = start; let (start_buffer, start_buffer_offset) = start;
let (end_buffer, end_buffer_offset) = end; let (end_buffer, end_buffer_offset) = end;
if start_buffer.remote_id() == end_buffer.remote_id() { if start_buffer.remote_id() == end_buffer.remote_id() {
(start_buffer, start_buffer_offset..end_buffer_offset) (start_buffer.clone(), start_buffer_offset..end_buffer_offset)
} else { } else {
self.finish_inline_assist(inline_assist_id, false, cx); self.finish_inline_assist(inline_assist_id, false, cx);
return; return;
@ -574,17 +575,13 @@ impl AssistantPanel {
} else { } else {
None None
}; };
let codegen_kind = codegen.read(cx).kind().clone();
let user_prompt = user_prompt.to_string();
let prompt = cx.background().spawn(async move {
let language_name = language_name.as_deref(); let language_name = language_name.as_deref();
generate_content_prompt(user_prompt, language_name, &buffer, range, codegen_kind)
let codegen_kind = pending_assist.codegen.read(cx).kind().clone(); });
let prompt = generate_content_prompt(
user_prompt.to_string(),
language_name,
&buffer,
range,
codegen_kind,
);
let mut messages = Vec::new(); let mut messages = Vec::new();
let mut model = settings::get::<AssistantSettings>(cx) let mut model = settings::get::<AssistantSettings>(cx)
.default_open_ai_model .default_open_ai_model
@ -600,6 +597,9 @@ impl AssistantPanel {
model = conversation.model.clone(); model = conversation.model.clone();
} }
cx.spawn(|_, mut cx| async move {
let prompt = prompt.await;
messages.push(RequestMessage { messages.push(RequestMessage {
role: Role::User, role: Role::User,
content: prompt, content: prompt,
@ -609,9 +609,9 @@ impl AssistantPanel {
messages, messages,
stream: true, stream: true,
}; };
pending_assist codegen.update(&mut cx, |codegen, cx| codegen.start(request, cx));
.codegen })
.update(cx, |codegen, cx| codegen.start(request, cx)); .detach();
} }
fn update_highlights_for_editor( fn update_highlights_for_editor(