]> Cypherpunks repositories - gostls13.git/commitdiff
Don't emit line tags when source code is printed as part of
authorRobert Griesemer <gri@golang.org>
Mon, 16 Nov 2009 22:26:29 +0000 (14:26 -0800)
committerRobert Griesemer <gri@golang.org>
Mon, 16 Nov 2009 22:26:29 +0000 (14:26 -0800)
package documentation using templates. The line tag interferes
with the anchor tag introduces by the template.

This fixes an an issue where some headers lost their ability
to link to the respective source code.

R=rsc
https://golang.org/cl/154166

src/cmd/godoc/godoc.go

index de52356734a67856dea25b2ca7e58893bbd2ba23..c6f26a8394f1c3d119b3bb4215a2098ef3b223a2 100644 (file)
@@ -470,16 +470,23 @@ func parse(path string, mode uint) (*ast.File, *parseErrors) {
 
 // Styler implements a printer.Styler.
 type Styler struct {
-       highlight string;
+       linetags        bool;
+       highlight       string;
 }
 
 
 // Use the defaultStyler when there is no specific styler.
+// The defaultStyler does not emit line tags since they may
+// interfere with tags emitted by templates.
+// TODO(gri): Should emit line tags at the beginning of a line;
+//            never in the middle of code.
 var defaultStyler Styler
 
 
 func (s *Styler) LineTag(line int) (text []byte, tag printer.HTMLTag) {
-       tag = printer.HTMLTag{fmt.Sprintf(`<a id="L%d">`, line), "</a>"};
+       if s.linetags {
+               tag = printer.HTMLTag{fmt.Sprintf(`<a id="L%d">`, line), "</a>"}
+       }
        return;
 }
 
@@ -932,7 +939,7 @@ func serveFile(c *http.Conn, r *http.Request) {
                return;
 
        case ext == ".go":
-               serveGoSource(c, r, path, &Styler{highlight: r.FormValue("h")});
+               serveGoSource(c, r, path, &Styler{linetags: true, highlight: r.FormValue("h")});
                return;
        }