mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-12-28 14:03:35 +00:00
determine doc link type from start instead of text or code
This commit is contained in:
parent
eb9b360752
commit
c6f776c5f9
1 changed files with 5 additions and 8 deletions
|
@ -362,14 +362,15 @@ fn map_links<'e>(
|
|||
// holds the origin link target on start event and the rewritten one on end event
|
||||
let mut end_link_target: Option<CowStr> = None;
|
||||
// normally link's type is determined by the type of link tag in the end event,
|
||||
// however in same cases we want to change the link type, for example,
|
||||
// however in some cases we want to change the link type, for example,
|
||||
// `Shortcut` type doesn't make sense for url links
|
||||
let mut end_link_type: Option<LinkType> = None;
|
||||
|
||||
events.map(move |evt| match evt {
|
||||
Event::Start(Tag::Link(_, ref target, _)) => {
|
||||
Event::Start(Tag::Link(link_type, ref target, _)) => {
|
||||
in_link = true;
|
||||
end_link_target = Some(target.clone());
|
||||
end_link_type = Some(link_type);
|
||||
evt
|
||||
}
|
||||
Event::End(Tag::Link(link_type, target, _)) => {
|
||||
|
@ -381,17 +382,13 @@ fn map_links<'e>(
|
|||
))
|
||||
}
|
||||
Event::Text(s) if in_link => {
|
||||
let (link_type, link_target_s, link_name) =
|
||||
callback(&end_link_target.take().unwrap(), &s);
|
||||
let (_, link_target_s, link_name) = callback(&end_link_target.take().unwrap(), &s);
|
||||
end_link_target = Some(CowStr::Boxed(link_target_s.into()));
|
||||
end_link_type = link_type;
|
||||
Event::Text(CowStr::Boxed(link_name.into()))
|
||||
}
|
||||
Event::Code(s) if in_link => {
|
||||
let (link_type, link_target_s, link_name) =
|
||||
callback(&end_link_target.take().unwrap(), &s);
|
||||
let (_, link_target_s, link_name) = callback(&end_link_target.take().unwrap(), &s);
|
||||
end_link_target = Some(CowStr::Boxed(link_target_s.into()));
|
||||
end_link_type = link_type;
|
||||
Event::Code(CowStr::Boxed(link_name.into()))
|
||||
}
|
||||
_ => evt,
|
||||
|
|
Loading…
Reference in a new issue