Merge "Markdown documentation: Add more detail in anchor generation note"
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/doc/DocServlet.java b/gitiles-servlet/src/main/java/com/google/gitiles/doc/DocServlet.java
index 076ee62..cd67d9c 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/doc/DocServlet.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/doc/DocServlet.java
@@ -67,7 +67,7 @@
// Generation of ETag logic. Bump this only if DocServlet logic changes
// significantly enough to impact cached pages. Soy template and source
// files are automatically hashed as part of the ETag.
- private static final int ETAG_GEN = 1;
+ private static final int ETAG_GEN = 2;
public DocServlet(GitilesAccess.Factory accessFactory, Renderer renderer) {
super(renderer, accessFactory);
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/doc/MarkdownToHtml.java b/gitiles-servlet/src/main/java/com/google/gitiles/doc/MarkdownToHtml.java
index 33cbdfa..4138f0a 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/doc/MarkdownToHtml.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/doc/MarkdownToHtml.java
@@ -178,19 +178,21 @@
@Override
public void visit(HeaderNode node) {
+ outputNamedAnchor = false;
+ String tag = "h" + node.getLevel();
+ html.open(tag);
String id = toc.idFromHeader(node);
if (id != null) {
- html.open("a").attribute("name", id);
+ html.open("a")
+ .attribute("class", "h")
+ .attribute("name", id)
+ .attribute("href", "#" + id)
+ .open("span").close("span")
+ .close("a");
}
- try {
- outputNamedAnchor = false;
- wrapChildren("h" + node.getLevel(), node);
- } finally {
- outputNamedAnchor = true;
- }
- if (id != null) {
- html.close("a");
- }
+ visitChildren(node);
+ html.close(tag);
+ outputNamedAnchor = true;
}
@Override
diff --git a/gitiles-servlet/src/main/resources/com/google/gitiles/static/doc.css b/gitiles-servlet/src/main/resources/com/google/gitiles/static/doc.css
index c397424..672797c 100644
--- a/gitiles-servlet/src/main/resources/com/google/gitiles/static/doc.css
+++ b/gitiles-servlet/src/main/resources/com/google/gitiles/static/doc.css
@@ -169,6 +169,31 @@
.doc a:visited { color: #7759ae; }
.doc a:hover { text-decoration: underline; }
+.doc a.h {
+ display: inline-block;
+ font-weight: normal;
+ width: 1.5em;
+ margin-left: -1.5em;
+ margin-top: -1em;
+ margin-bottom: -1em;
+}
+.doc a.h:link,
+.doc a.h:visited { color: #444; }
+.doc a.h:focus { outline: none; }
+.doc a.h:hover { text-decoration: none; }
+.doc a.h span {
+ display: inline-block;
+ width: 1.5em;
+}
+.doc h1:hover a.h span:before,
+.doc h2:hover a.h span:before,
+.doc h3:hover a.h span:before,
+.doc h4:hover a.h span:before,
+.doc h5:hover a.h span:before,
+.doc h6:hover a.h span:before {
+ content: '\1f517'; /* Unicode 'LINK SYMBOL' */
+}
+
.doc ul, .doc ol {
margin: 10px 10px 10px 30px;
padding: 0;