From cec19aec7b30e5c9043e27c3c2acf65af8752f1a Mon Sep 17 00:00:00 2001 From: Kirill Bulatov Date: Thu, 19 Jun 2025 01:36:00 +0300 Subject: [PATCH] Omit outlines from the outline panel, not related to the buffer's main language (#32987) Closes https://github.com/zed-industries/zed/issues/15122 Release Notes: - Fixed outline panel showing extra languages' outlines --- crates/outline_panel/src/outline_panel.rs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/crates/outline_panel/src/outline_panel.rs b/crates/outline_panel/src/outline_panel.rs index ce410c6b24..5bb771c1e9 100644 --- a/crates/outline_panel/src/outline_panel.rs +++ b/crates/outline_panel/src/outline_panel.rs @@ -3233,15 +3233,22 @@ impl OutlinePanel { self.outline_fetch_tasks.insert( (buffer_id, excerpt_id), cx.spawn_in(window, async move |outline_panel, cx| { + let buffer_language = buffer_snapshot.language().cloned(); let fetched_outlines = cx .background_spawn(async move { - buffer_snapshot + let mut outlines = buffer_snapshot .outline_items_containing( excerpt_range.context, false, Some(&syntax_theme), ) - .unwrap_or_default() + .unwrap_or_default(); + outlines.retain(|outline| { + buffer_language.is_none() + || buffer_language.as_ref() + == buffer_snapshot.language_at(outline.range.start) + }); + outlines }) .await; outline_panel