Commit e86afaf4 authored by Robert Griesemer's avatar Robert Griesemer

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
parent affcfe5a
......@@ -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;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment