From e23ca8d20ebc2b0daf09f19cc47c108575872227 Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Thu, 4 May 2023 14:56:43 +0200 Subject: [PATCH] Merge pull request #2440 from zed-industries/fix-navigate-to-definitions-panic Fix panic when opening multiple definitions in a multibuffer --- crates/editor/src/editor.rs | 44 +++++++++++++++++++------------------ 1 file changed, 23 insertions(+), 21 deletions(-) diff --git a/crates/editor/src/editor.rs b/crates/editor/src/editor.rs index 641ef4d133a40b11b1605660aa42eaa1510472fe..8771387cb73cb456c1416b1e5d0575b02648d1c4 100644 --- a/crates/editor/src/editor.rs +++ b/crates/editor/src/editor.rs @@ -5680,28 +5680,30 @@ impl Editor { } } else if !definitions.is_empty() { let replica_id = self.replica_id(cx); - let title = definitions - .iter() - .find(|definition| definition.origin.is_some()) - .and_then(|definition| { - definition.origin.as_ref().map(|origin| { - let buffer = origin.buffer.read(cx); - format!( - "Definitions for {}", - buffer - .text_for_range(origin.range.clone()) - .collect::() - ) + cx.window_context().defer(move |cx| { + let title = definitions + .iter() + .find(|definition| definition.origin.is_some()) + .and_then(|definition| { + definition.origin.as_ref().map(|origin| { + let buffer = origin.buffer.read(cx); + format!( + "Definitions for {}", + buffer + .text_for_range(origin.range.clone()) + .collect::() + ) + }) }) - }) - .unwrap_or("Definitions".to_owned()); - let locations = definitions - .into_iter() - .map(|definition| definition.target) - .collect(); - workspace.update(cx, |workspace, cx| { - Self::open_locations_in_multibuffer(workspace, locations, replica_id, title, cx) - }) + .unwrap_or("Definitions".to_owned()); + let locations = definitions + .into_iter() + .map(|definition| definition.target) + .collect(); + workspace.update(cx, |workspace, cx| { + Self::open_locations_in_multibuffer(workspace, locations, replica_id, title, cx) + }); + }); } }