Change summary
crates/editor/src/editor.rs | 9 +++++++++
crates/editor/src/element.rs | 3 ++-
2 files changed, 11 insertions(+), 1 deletion(-)
Detailed changes
@@ -17212,6 +17212,9 @@ impl Editor {
}
}
+ new_selections_by_buffer
+ .retain(|buffer, _| Self::can_open_excerpts_in_file(buffer.read(cx).file()));
+
if new_selections_by_buffer.is_empty() {
return;
}
@@ -17280,6 +17283,12 @@ impl Editor {
});
}
+ // For now, don't allow opening excerpts in buffers that aren't backed by
+ // regular project files.
+ fn can_open_excerpts_in_file(file: Option<&Arc<dyn language::File>>) -> bool {
+ file.map_or(true, |file| project::File::from_dyn(Some(file)).is_some())
+ }
+
fn marked_text_ranges(&self, cx: &App) -> Option<Vec<Range<OffsetUtf16>>> {
let snapshot = self.buffer.read(cx).read(cx);
let (_, ranges) = self.text_highlights::<InputComposition>(cx)?;
@@ -2791,6 +2791,7 @@ impl EditorElement {
.as_ref()
.map(|project| project.read(cx).visible_worktrees(cx).count() > 1)
.unwrap_or_default();
+ let can_open_excerpts = Editor::can_open_excerpts_in_file(for_excerpt.buffer.file());
let path = for_excerpt.buffer.resolve_file_path(cx, include_root);
let filename = path
.as_ref()
@@ -2920,7 +2921,7 @@ impl EditorElement {
))
}),
)
- .when(is_selected, |el| {
+ .when(can_open_excerpts && is_selected && path.is_some(), |el| {
el.child(
h_flex()
.id("jump-to-file-button")