From e86afaf456b804398c100894b2467edf9716e623 Mon Sep 17 00:00:00 2001 From: Robert Griesemer Date: Mon, 16 Nov 2009 14:26:29 -0800 Subject: [PATCH] Don't emit line tags when source code is printed as part of 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 | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/cmd/godoc/godoc.go b/src/cmd/godoc/godoc.go index de52356734..c6f26a8394 100644 --- a/src/cmd/godoc/godoc.go +++ b/src/cmd/godoc/godoc.go @@ -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(``, line), ""}; + if s.linetags { + tag = printer.HTMLTag{fmt.Sprintf(``, line), ""} + } 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; } -- 2.51.0