diff options
author | Robert Griesemer <gri@golang.org> | 2012-03-21 11:29:30 -0700 |
---|---|---|
committer | Robert Griesemer <gri@golang.org> | 2012-03-21 11:29:30 -0700 |
commit | cfd8b84f072e1799456ad3dc350bc1a486a0e280 (patch) | |
tree | 7073fb4196df0abdfee255a24ea9c68c0b5e934e | |
parent | e2662835b8dd3ca4aa69997afe3774467a677df8 (diff) | |
download | go-cfd8b84f072e1799456ad3dc350bc1a486a0e280.tar.gz go-cfd8b84f072e1799456ad3dc350bc1a486a0e280.zip |
godoc: use shorter titles for tabs
In a browser with many open tabs, the tab titles become short
and uninformative because they all start with the same prefix
("Package ", "Directory ", etc.).
Permit use of shorter tab titles that start with the relevant
information first.
Fixes #3365.
R=golang-dev, bradfitz
CC=golang-dev
https://golang.org/cl/5865056
-rw-r--r-- | lib/godoc/godoc.html | 2 | ||||
-rw-r--r-- | src/cmd/godoc/codewalk.go | 4 | ||||
-rw-r--r-- | src/cmd/godoc/godoc.go | 50 | ||||
-rw-r--r-- | src/cmd/godoc/main.go | 2 |
4 files changed, 37 insertions, 21 deletions
diff --git a/lib/godoc/godoc.html b/lib/godoc/godoc.html index 7efed83b92..feb96e50f4 100644 --- a/lib/godoc/godoc.html +++ b/lib/godoc/godoc.html @@ -2,7 +2,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -{{with .Title}} +{{with .Tabtitle}} <title>{{html .}} - The Go Programming Language</title> {{else}} <title>The Go Programming Language</title> diff --git a/src/cmd/godoc/codewalk.go b/src/cmd/godoc/codewalk.go index 3e38162a48..f7f51d0a02 100644 --- a/src/cmd/godoc/codewalk.go +++ b/src/cmd/godoc/codewalk.go @@ -69,7 +69,7 @@ func codewalk(w http.ResponseWriter, r *http.Request) { } b := applyTemplate(codewalkHTML, "codewalk", cw) - servePage(w, "Codewalk: "+cw.Title, "", "", b) + servePage(w, cw.Title, "Codewalk: "+cw.Title, "", "", b) } // A Codewalk represents a single codewalk read from an XML file. @@ -200,7 +200,7 @@ func codewalkDir(w http.ResponseWriter, r *http.Request, relpath, abspath string } b := applyTemplate(codewalkdirHTML, "codewalkdir", v) - servePage(w, "Codewalks", "", "", b) + servePage(w, "", "Codewalks", "", "", b) } // codewalkFileprint serves requests with ?fileprint=f&lo=lo&hi=hi. diff --git a/src/cmd/godoc/godoc.go b/src/cmd/godoc/godoc.go index 67f023ff71..26814d2fa3 100644 --- a/src/cmd/godoc/godoc.go +++ b/src/cmd/godoc/godoc.go @@ -546,8 +546,12 @@ func readTemplates() { // ---------------------------------------------------------------------------- // Generic HTML wrapper -func servePage(w http.ResponseWriter, title, subtitle, query string, content []byte) { +func servePage(w http.ResponseWriter, tabtitle, title, subtitle, query string, content []byte) { + if tabtitle == "" { + tabtitle = title + } d := struct { + Tabtitle string Title string Subtitle string SearchBox bool @@ -556,6 +560,7 @@ func servePage(w http.ResponseWriter, title, subtitle, query string, content []b Menu []byte Content []byte }{ + tabtitle, title, subtitle, *indexEnabled, @@ -630,7 +635,7 @@ func serveHTMLDoc(w http.ResponseWriter, r *http.Request, abspath, relpath strin src = buf.Bytes() } - servePage(w, meta.Title, meta.Subtitle, "", src) + servePage(w, "", meta.Title, meta.Subtitle, "", src) } func applyTemplate(t *template.Template, name string, data interface{}) []byte { @@ -666,7 +671,7 @@ func serveTextFile(w http.ResponseWriter, r *http.Request, abspath, relpath, tit FormatText(&buf, src, 1, pathpkg.Ext(abspath) == ".go", r.FormValue("h"), rangeSelection(r.FormValue("s"))) buf.WriteString("</pre>") - servePage(w, title+" "+relpath, "", "", buf.Bytes()) + servePage(w, relpath, title+" "+relpath, "", "", buf.Bytes()) } func serveDirectory(w http.ResponseWriter, r *http.Request, abspath, relpath string) { @@ -681,7 +686,7 @@ func serveDirectory(w http.ResponseWriter, r *http.Request, abspath, relpath str } contents := applyTemplate(dirlistHTML, "dirlistHTML", list) - servePage(w, "Directory "+relpath, "", "", contents) + servePage(w, relpath, "Directory "+relpath, "", "", contents) } func serveFile(w http.ResponseWriter, r *http.Request) { @@ -1073,30 +1078,41 @@ func (h *docServer) ServeHTTP(w http.ResponseWriter, r *http.Request) { return } - var title, subtitle string + var tabtitle, title, subtitle string switch { case info.PAst != nil: - title = "Package " + info.PAst.Name.Name + tabtitle = info.PAst.Name.Name + title = "Package " + tabtitle case info.PDoc != nil: - switch { - case info.IsPkg: - title = "Package " + info.PDoc.Name - case info.PDoc.Name == fakePkgName: + if info.PDoc.Name == fakePkgName { // assume that the directory name is the command name - _, pkgname := pathpkg.Split(relpath) - title = "Command " + pkgname - default: - title = "Command " + info.PDoc.Name + _, tabtitle = pathpkg.Split(relpath) + } else { + tabtitle = info.PDoc.Name + } + if info.IsPkg { + title = "Package " + tabtitle + } else { + title = "Command " + tabtitle } default: - title = "Directory " + info.Dirname + tabtitle = info.Dirname + title = "Directory " + tabtitle if *showTimestamps { subtitle = "Last update: " + info.DirTime.String() } } + // special cases for top-level package/command directories + switch tabtitle { + case "/src/pkg": + tabtitle = "Packages" + case "/src/cmd": + tabtitle = "Commands" + } + contents := applyTemplate(packageHTML, "packageHTML", info) - servePage(w, title, subtitle, "", contents) + servePage(w, tabtitle, title, subtitle, "", contents) } // ---------------------------------------------------------------------------- @@ -1186,7 +1202,7 @@ func search(w http.ResponseWriter, r *http.Request) { } contents := applyTemplate(searchHTML, "searchHTML", result) - servePage(w, title, "", query, contents) + servePage(w, query, title, "", query, contents) } // ---------------------------------------------------------------------------- diff --git a/src/cmd/godoc/main.go b/src/cmd/godoc/main.go index 10a14b9a8b..23f712ab3e 100644 --- a/src/cmd/godoc/main.go +++ b/src/cmd/godoc/main.go @@ -73,7 +73,7 @@ var ( func serveError(w http.ResponseWriter, r *http.Request, relpath string, err error) { contents := applyTemplate(errorHTML, "errorHTML", err) // err may contain an absolute path! w.WriteHeader(http.StatusNotFound) - servePage(w, "File "+relpath, "", "", contents) + servePage(w, relpath, "File "+relpath, "", "", contents) } func usage() { |