Register unknown buffer on the fly if completions are requested for it

This commit is contained in:
Antonio Scandurra 2023-04-19 14:30:23 +02:00
parent 34bcf6f072
commit b9a7b70e52

View file

@ -663,6 +663,7 @@ impl Copilot {
>, >,
T: ToPointUtf16, T: ToPointUtf16,
{ {
self.register_buffer(buffer, cx);
let (server, registered_buffer) = match &mut self.server { let (server, registered_buffer) = match &mut self.server {
CopilotServer::Starting { .. } => { CopilotServer::Starting { .. } => {
return Task::ready(Err(anyhow!("copilot is still starting"))) return Task::ready(Err(anyhow!("copilot is still starting")))
@ -681,17 +682,11 @@ impl Copilot {
.. ..
} => { } => {
if matches!(status, SignInStatus::Authorized { .. }) { if matches!(status, SignInStatus::Authorized { .. }) {
if let Some(registered_buffer) = registered_buffers.get_mut(&buffer.id()) { let registered_buffer = registered_buffers.get_mut(&buffer.id()).unwrap();
if let Err(error) = registered_buffer.report_changes(buffer, &server, cx) { if let Err(error) = registered_buffer.report_changes(buffer, &server, cx) {
return Task::ready(Err(error)); return Task::ready(Err(error));
} }
(server.clone(), registered_buffer) (server.clone(), registered_buffer)
} else {
return Task::ready(Err(anyhow!(
"requested completions for an unregistered buffer"
)));
}
} else { } else {
return Task::ready(Err(anyhow!("must sign in before using copilot"))); return Task::ready(Err(anyhow!("must sign in before using copilot")));
} }