rustdoc: add more tooltips to intra-doc links
This commit makes intra-doc link tooltips consistent with generated
links in function signatures and item tables, with the format
`itemtype foo::bar::baz`. This way, you can tell if a link points at
a trait or a type (for example) by mousing over it.
See also fce944d4e7
This commit is contained in:
parent
a3c9eede5d
commit
ba4b026e80
4 changed files with 52 additions and 9 deletions
|
@ -34,6 +34,7 @@ use crate::clean::{
|
|||
use crate::formats::item_type::ItemType;
|
||||
use crate::html::escape::Escape;
|
||||
use crate::html::render::Context;
|
||||
use crate::passes::collect_intra_doc_links::UrlFragment;
|
||||
|
||||
use super::url_parts_builder::estimate_item_path_byte_length;
|
||||
use super::url_parts_builder::UrlPartsBuilder;
|
||||
|
@ -768,6 +769,21 @@ pub(crate) fn href_relative_parts<'fqp>(
|
|||
}
|
||||
}
|
||||
|
||||
pub(crate) fn link_tooltip(did: DefId, fragment: &Option<UrlFragment>, cx: &Context<'_>) -> String {
|
||||
let cache = cx.cache();
|
||||
let Some((fqp, shortty)) = cache.paths.get(&did)
|
||||
.or_else(|| cache.external_paths.get(&did))
|
||||
else { return String::new() };
|
||||
let fqp = fqp.iter().map(|sym| sym.as_str()).join("::");
|
||||
if let &Some(UrlFragment::Item(id)) = fragment {
|
||||
let name = cx.tcx().item_name(id);
|
||||
let descr = cx.tcx().def_kind(id).descr(id);
|
||||
format!("{descr} {fqp}::{name}")
|
||||
} else {
|
||||
format!("{shortty} {fqp}")
|
||||
}
|
||||
}
|
||||
|
||||
/// Used to render a [`clean::Path`].
|
||||
fn resolved_path<'cx>(
|
||||
w: &mut fmt::Formatter<'_>,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue