diff --git a/Cargo.lock b/Cargo.lock index b04fea24b2c2f7f0ba8f9a457c6136bf362c9bbe..7c2f043193f5c432453118a7336c9bc40e9485e8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1358,7 +1358,6 @@ dependencies = [ "smol", "theme", "util", - "workspace", ] [[package]] diff --git a/crates/copilot/Cargo.toml b/crates/copilot/Cargo.toml index bfafdbc0ca9522fe1553ee4ac38f4fc934007020..f4d75cc582d9d26957e697b744f5f43054b7d149 100644 --- a/crates/copilot/Cargo.toml +++ b/crates/copilot/Cargo.toml @@ -47,4 +47,3 @@ lsp = { path = "../lsp", features = ["test-support"] } rpc = { path = "../rpc", features = ["test-support"] } settings = { path = "../settings", features = ["test-support"] } util = { path = "../util", features = ["test-support"] } -workspace = { path = "../workspace", features = ["test-support"] } diff --git a/crates/copilot/src/copilot.rs b/crates/copilot/src/copilot.rs index 1f826474180e2250cf4c219497b6c7da34c7bac7..13aa904b5c8e8da95023ddc7d7c3a2f5453a8824 100644 --- a/crates/copilot/src/copilot.rs +++ b/crates/copilot/src/copilot.rs @@ -378,13 +378,6 @@ impl Copilot { cx.clone(), )?; - let server = server.initialize(Default::default()).await?; - let status = server - .request::(request::CheckStatusParams { - local_checks_only: false, - }) - .await?; - server .on_notification::(|params, _cx| { match params.level { @@ -405,6 +398,14 @@ impl Copilot { ) .detach(); + let server = server.initialize(Default::default()).await?; + + let status = server + .request::(request::CheckStatusParams { + local_checks_only: false, + }) + .await?; + server .request::(request::SetEditorInfoParams { editor_info: request::EditorInfo { diff --git a/crates/copilot/src/request.rs b/crates/copilot/src/request.rs index 43b5109d027dd2bcc62d1e9a5cb48a5996e84fd7..0f9a478b910dd7fc5e87551d4cfe18408cc65451 100644 --- a/crates/copilot/src/request.rs +++ b/crates/copilot/src/request.rs @@ -143,8 +143,8 @@ pub enum LogMessage {} #[derive(Debug, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct LogMessageParams { - pub message: String, pub level: u8, + pub message: String, pub metadata_str: String, pub extra: Vec, } diff --git a/crates/workspace/src/pane.rs b/crates/workspace/src/pane.rs index 88ccb677c3067b90b3d9d4ce6a00d848d5cbf091..83ccf0173a5d9b142302695739f2e976c4e77212 100644 --- a/crates/workspace/src/pane.rs +++ b/crates/workspace/src/pane.rs @@ -787,6 +787,10 @@ impl Pane { ) -> Option>> { let pane_handle = workspace.active_pane().clone(); let pane = pane_handle.read(cx); + + if pane.items.is_empty() { + return None; + } let active_item_id = pane.items[pane.active_item_index].id(); let task = Self::close_item_by_id(workspace, pane_handle, active_item_id, cx); @@ -2136,6 +2140,19 @@ mod tests { use gpui::{executor::Deterministic, TestAppContext}; use project::FakeFs; + #[gpui::test] + async fn test_remove_active_empty(cx: &mut TestAppContext) { + Settings::test_async(cx); + let fs = FakeFs::new(cx.background()); + + let project = Project::test(fs, None, cx).await; + let (_, workspace) = cx.add_window(|cx| Workspace::test_new(project.clone(), cx)); + + workspace.update(cx, |workspace, cx| { + assert!(Pane::close_active_item(workspace, &CloseActiveItem, cx).is_none()) + }); + } + #[gpui::test] async fn test_add_item_with_new_item(cx: &mut TestAppContext) { cx.foreground().forbid_parking();