Cargo.lock 🔗
@@ -1358,7 +1358,6 @@ dependencies = [
"smol",
"theme",
"util",
- "workspace",
]
[[package]]
Mikayla Maki created
Fix panic in pane.rs
Cargo.lock | 1 -
crates/copilot/Cargo.toml | 1 -
crates/copilot/src/copilot.rs | 15 ++++++++-------
crates/copilot/src/request.rs | 2 +-
crates/workspace/src/pane.rs | 17 +++++++++++++++++
5 files changed, 26 insertions(+), 10 deletions(-)
@@ -1358,7 +1358,6 @@ dependencies = [
"smol",
"theme",
"util",
- "workspace",
]
[[package]]
@@ -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"] }
@@ -378,13 +378,6 @@ impl Copilot {
cx.clone(),
)?;
- let server = server.initialize(Default::default()).await?;
- let status = server
- .request::<request::CheckStatus>(request::CheckStatusParams {
- local_checks_only: false,
- })
- .await?;
-
server
.on_notification::<LogMessage, _>(|params, _cx| {
match params.level {
@@ -405,6 +398,14 @@ impl Copilot {
)
.detach();
+ let server = server.initialize(Default::default()).await?;
+
+ let status = server
+ .request::<request::CheckStatus>(request::CheckStatusParams {
+ local_checks_only: false,
+ })
+ .await?;
+
server
.request::<request::SetEditorInfo>(request::SetEditorInfoParams {
editor_info: request::EditorInfo {
@@ -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<String>,
}
@@ -787,6 +787,10 @@ impl Pane {
) -> Option<Task<Result<()>>> {
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();