copilot: Handle sign out when copilot language server is not running (#26776)
When copilot is not being used as the edit prediction provider and you open a fresh Zed instance, we don’t run the copilot language server. This is because copilot chat is purely handled via oauth token and doesn’t require the language server. In this case, if you click sign out, instead of asking the language server to sign out (which isn’t running), we can manually clear the config directory, which contains the oauth tokens. We already watch this directory, and if the token is not found, we update the sign-in status. Release Notes: - N/A
This commit is contained in:
parent
ad14dcc57b
commit
c62210b178
1 changed files with 8 additions and 0 deletions
|
@ -654,6 +654,10 @@ impl Copilot {
|
|||
anyhow::Ok(())
|
||||
})
|
||||
}
|
||||
CopilotServer::Disabled => cx.background_spawn(async {
|
||||
clear_copilot_config_dir().await;
|
||||
anyhow::Ok(())
|
||||
}),
|
||||
_ => Task::ready(Err(anyhow!("copilot hasn't started yet"))),
|
||||
}
|
||||
}
|
||||
|
@ -1047,6 +1051,10 @@ async fn clear_copilot_dir() {
|
|||
remove_matching(paths::copilot_dir(), |_| true).await
|
||||
}
|
||||
|
||||
async fn clear_copilot_config_dir() {
|
||||
remove_matching(copilot_chat::copilot_chat_config_dir(), |_| true).await
|
||||
}
|
||||
|
||||
async fn get_copilot_lsp(http: Arc<dyn HttpClient>) -> anyhow::Result<PathBuf> {
|
||||
const SERVER_PATH: &str = "dist/language-server.js";
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue