diff --git a/src/librustdoc/html/render.rs b/src/librustdoc/html/render.rs
index a95d85741e4..504be2cd8ae 100644
--- a/src/librustdoc/html/render.rs
+++ b/src/librustdoc/html/render.rs
@@ -930,6 +930,23 @@ impl<'a> Item<'a> {
clean::ModuleItem(..) => true, _ => false
}
}
+
+ fn link(&self) -> ~str {
+ let mut path = Vec::new();
+ clean_srcpath(self.item.source.filename.as_bytes(), |component| {
+ path.push(component.to_owned());
+ });
+ let href = if self.item.source.loline == self.item.source.hiline {
+ format!("{}", self.item.source.loline)
+ } else {
+ format!("{}-{}", self.item.source.loline, self.item.source.hiline)
+ };
+ format!("{root}src/{krate}/{path}.html\\#{href}",
+ root = self.cx.root_path,
+ krate = self.cx.layout.krate,
+ path = path.connect("/"),
+ href = href)
+ }
}
impl<'a> fmt::Show for Item<'a> {
@@ -977,23 +994,8 @@ impl<'a> fmt::Show for Item<'a> {
// Write `src` tag
if self.cx.include_sources {
- let mut path = Vec::new();
- clean_srcpath(self.item.source.filename.as_bytes(), |component| {
- path.push(component.to_owned());
- });
- let href = if self.item.source.loline == self.item.source.hiline {
- format!("{}", self.item.source.loline)
- } else {
- format!("{}-{}", self.item.source.loline, self.item.source.hiline)
- };
- try!(write!(fmt.buf,
- "\
- [src]",
- root = self.cx.root_path,
- krate = self.cx.layout.krate,
- path = path.connect("/"),
- href = href));
+ try!(write!(fmt.buf, "[src]",
+ self.link()));
}
try!(write!(fmt.buf, "\n"));
@@ -1138,16 +1140,19 @@ fn item_module(w: &mut Writer, cx: &Context,
match myitem.inner {
clean::StaticItem(ref s) | clean::ForeignStaticItem(ref s) => {
- struct Initializer<'a>(&'a str);
+ struct Initializer<'a>(&'a str, Item<'a>);
impl<'a> fmt::Show for Initializer<'a> {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
- let Initializer(s) = *self;
+ let Initializer(s, item) = *self;
if s.len() == 0 { return Ok(()); }
try!(write!(f.buf, " =
"));
- let tag = if s.contains("\n") { "pre" } else { "code" };
- try!(write!(f.buf, "<{tag}>{}{tag}>",
- s.as_slice(), tag=tag));
- Ok(())
+ if s.contains("\n") {
+ write!(f.buf,
+ "[definition]",
+ item.link())
+ } else {
+ write!(f.buf, "{}
", s.as_slice())
+ }
}
}
@@ -1160,7 +1165,7 @@ fn item_module(w: &mut Writer, cx: &Context,
VisSpace(myitem.visibility),
*myitem.name.get_ref(),
s.type_,
- Initializer(s.expr),
+ Initializer(s.expr, Item { cx: cx, item: myitem }),
Markdown(blank(myitem.doc_value()))));
}