diff --git a/crates/copilot/src/copilot.rs b/crates/copilot/src/copilot.rs index c3ec63c43ce0c4da875c01cf90a08c13fb9837c8..b03f7de828e58477a4c4ca385e58bd590194860a 100644 --- a/crates/copilot/src/copilot.rs +++ b/crates/copilot/src/copilot.rs @@ -27,8 +27,7 @@ use std::{ sync::Arc, }; use util::{ - channel::ReleaseChannel, fs::remove_matching, github::latest_github_release, http::HttpClient, - paths, ResultExt, + fs::remove_matching, github::latest_github_release, http::HttpClient, paths, ResultExt, }; const COPILOT_AUTH_NAMESPACE: &'static str = "copilot_auth"; @@ -41,15 +40,6 @@ actions!( ); pub fn init(http: Arc, node_runtime: Arc, cx: &mut AppContext) { - // Disable Copilot for stable releases. - if *cx.global::() == ReleaseChannel::Stable { - cx.update_global::(|filter, _cx| { - filter.filtered_namespaces.insert(COPILOT_NAMESPACE); - filter.filtered_namespaces.insert(COPILOT_AUTH_NAMESPACE); - }); - return; - } - let copilot = cx.add_model({ let node_runtime = node_runtime.clone(); move |cx| Copilot::start(http, node_runtime, cx) diff --git a/crates/copilot/src/sign_in.rs b/crates/copilot/src/sign_in.rs index dc09ddf3f247a35242f9c85985c2f297524883e7..3b949217bc71116d272ac9c45c2389cf090ed815 100644 --- a/crates/copilot/src/sign_in.rs +++ b/crates/copilot/src/sign_in.rs @@ -23,51 +23,51 @@ struct OpenGithub; const COPILOT_SIGN_UP_URL: &'static str = "https://github.com/features/copilot"; pub fn init(cx: &mut AppContext) { - let copilot = Copilot::global(cx).unwrap(); + if let Some(copilot) = Copilot::global(cx) { + let mut code_verification: Option> = None; + cx.observe(&copilot, move |copilot, cx| { + let status = copilot.read(cx).status(); - let mut code_verification: Option> = None; - cx.observe(&copilot, move |copilot, cx| { - let status = copilot.read(cx).status(); - - match &status { - crate::Status::SigningIn { prompt } => { - if let Some(code_verification_handle) = code_verification.as_mut() { - if cx.has_window(code_verification_handle.window_id()) { - code_verification_handle.update(cx, |code_verification_view, cx| { - code_verification_view.set_status(status, cx) - }); - cx.activate_window(code_verification_handle.window_id()); - } else { + match &status { + crate::Status::SigningIn { prompt } => { + if let Some(code_verification_handle) = code_verification.as_mut() { + if cx.has_window(code_verification_handle.window_id()) { + code_verification_handle.update(cx, |code_verification_view, cx| { + code_verification_view.set_status(status, cx) + }); + cx.activate_window(code_verification_handle.window_id()); + } else { + create_copilot_auth_window(cx, &status, &mut code_verification); + } + } else if let Some(_prompt) = prompt { create_copilot_auth_window(cx, &status, &mut code_verification); } - } else if let Some(_prompt) = prompt { - create_copilot_auth_window(cx, &status, &mut code_verification); } - } - Status::Authorized | Status::Unauthorized => { - if let Some(code_verification) = code_verification.as_ref() { - code_verification.update(cx, |code_verification, cx| { - code_verification.set_status(status, cx) - }); + Status::Authorized | Status::Unauthorized => { + if let Some(code_verification) = code_verification.as_ref() { + code_verification.update(cx, |code_verification, cx| { + code_verification.set_status(status, cx) + }); - cx.platform().activate(true); - cx.activate_window(code_verification.window_id()); + cx.platform().activate(true); + cx.activate_window(code_verification.window_id()); + } } - } - _ => { - if let Some(code_verification) = code_verification.take() { - cx.remove_window(code_verification.window_id()); + _ => { + if let Some(code_verification) = code_verification.take() { + cx.remove_window(code_verification.window_id()); + } } } - } - }) - .detach(); + }) + .detach(); - cx.add_action( - |code_verification: &mut CopilotCodeVerification, _: &ClickedConnect, _| { - code_verification.connect_clicked = true; - }, - ); + cx.add_action( + |code_verification: &mut CopilotCodeVerification, _: &ClickedConnect, _| { + code_verification.connect_clicked = true; + }, + ); + } } fn create_copilot_auth_window( diff --git a/crates/editor/src/editor_tests.rs b/crates/editor/src/editor_tests.rs index ce293ed064af799383cf49c9c90721e4c30f3a3e..646a8f33d6a46a109ddc28584b863e45ffcf4bcf 100644 --- a/crates/editor/src/editor_tests.rs +++ b/crates/editor/src/editor_tests.rs @@ -4371,7 +4371,7 @@ async fn test_strip_whitespace_and_format_via_lsp(cx: &mut gpui::TestAppContext) cx.set_state( &[ "one ", // - "twoˇ", // + "twoˇ", // "three ", // "four", // ] @@ -4446,7 +4446,7 @@ async fn test_strip_whitespace_and_format_via_lsp(cx: &mut gpui::TestAppContext) &[ "one", // "", // - "twoˇ", // + "twoˇ", // "", // "three", // "four", // @@ -4461,7 +4461,7 @@ async fn test_strip_whitespace_and_format_via_lsp(cx: &mut gpui::TestAppContext) cx.assert_editor_state( &[ "one ", // - "twoˇ", // + "twoˇ", // "three ", // "four", // ]