markdown: Fix indented codeblocks having incorrect content ranges (#38225)

Closes https://github.com/zed-industries/zed/issues/37743

Release Notes:

- Fixed agent panel panicking when streaming indented codeblocks from
agent output
This commit is contained in:
Lukas Wirth
2025-09-17 08:48:47 +02:00
committed by GitHub
parent c27d8e0c7a
commit 4ee2daeded
2 changed files with 25 additions and 4 deletions

View File

@@ -1079,7 +1079,7 @@ impl Element for MarkdownElement {
{
builder.modify_current_div(|el| {
let content_range = parser::extract_code_block_content_range(
parsed_markdown.source()[range.clone()].trim(),
&parsed_markdown.source()[range.clone()],
);
let content_range = content_range.start + range.start
..content_range.end + range.start;
@@ -1110,7 +1110,7 @@ impl Element for MarkdownElement {
{
builder.modify_current_div(|el| {
let content_range = parser::extract_code_block_content_range(
parsed_markdown.source()[range.clone()].trim(),
&parsed_markdown.source()[range.clone()],
);
let content_range = content_range.start + range.start
..content_range.end + range.start;

View File

@@ -67,7 +67,7 @@ pub fn parse_markdown(
MarkdownTag::CodeBlock {
kind: CodeBlockKind::Indented,
metadata: CodeBlockMetadata {
content_range: range.start + 1..range.end + 1,
content_range: range.clone(),
line_count: 1,
},
}
@@ -698,7 +698,28 @@ mod tests {
HashSet::from(["rust".into()]),
HashSet::new()
)
)
);
assert_eq!(
parse_markdown(" fn main() {}"),
(
vec![
(
4..16,
Start(CodeBlock {
kind: CodeBlockKind::Indented,
metadata: CodeBlockMetadata {
content_range: 4..16,
line_count: 1
}
})
),
(4..16, Text),
(4..16, End(MarkdownTagEnd::CodeBlock))
],
HashSet::new(),
HashSet::new()
)
);
}
#[test]