diff --git a/Cargo.lock b/Cargo.lock index ee4103cddd..d4fb62a235 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 bfafdbc0ca..f4d75cc582 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 182db084a1..b2da730c3f 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 43b5109d02..0f9a478b91 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 c394ae4631..38e9bb5b54 100644 --- a/crates/workspace/src/pane.rs +++ b/crates/workspace/src/pane.rs @@ -785,6 +785,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); @@ -2098,6 +2102,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();