From b7e3f525bddacdea61405c2fddad5ee1a0b5d4b3 Mon Sep 17 00:00:00 2001 From: Raymond Luo Date: Mon, 20 Jun 2022 23:15:27 -0400 Subject: [PATCH] handle autolink as edge case --- crates/ide/src/doc_links.rs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/crates/ide/src/doc_links.rs b/crates/ide/src/doc_links.rs index a78358f20f..993e12f4a3 100644 --- a/crates/ide/src/doc_links.rs +++ b/crates/ide/src/doc_links.rs @@ -382,13 +382,21 @@ fn map_links<'e>( )) } Event::Text(s) if in_link => { - let (_, link_target_s, link_name) = callback(&end_link_target.take().unwrap(), &s); + let (link_type, link_target_s, link_name) = + callback(&end_link_target.take().unwrap(), &s); end_link_target = Some(CowStr::Boxed(link_target_s.into())); + if !matches!(end_link_type, Some(link) if link == LinkType::Autolink) { + end_link_type = link_type; + } Event::Text(CowStr::Boxed(link_name.into())) } Event::Code(s) if in_link => { - let (_, link_target_s, link_name) = callback(&end_link_target.take().unwrap(), &s); + let (link_type, link_target_s, link_name) = + callback(&end_link_target.take().unwrap(), &s); end_link_target = Some(CowStr::Boxed(link_target_s.into())); + if !matches!(end_link_type, Some(link) if link == LinkType::Autolink) { + end_link_type = link_type; + } Event::Code(CowStr::Boxed(link_name.into())) } _ => evt,