summaryrefslogtreecommitdiff
path: root/src/cmd/godoc
diff options
context:
space:
mode:
authorRobert Griesemer <gri@golang.org>2012-03-21 11:29:30 -0700
committerRobert Griesemer <gri@golang.org>2012-03-21 11:29:30 -0700
commit320b4fdd760c09bd1c72131e83e6bfd1cdcd7a5d (patch)
tree8fcd2f2a4b58e71b652624cf624177d392598698 /src/cmd/godoc
parentf28fabf453b82b89ba1f283c5124cfd655ca65c9 (diff)
downloadgo-320b4fdd760c09bd1c72131e83e6bfd1cdcd7a5d.tar.gz
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 issue 3365. R=golang-dev, bradfitz CC=golang-dev http://codereview.appspot.com/5865056
Diffstat (limited to 'src/cmd/godoc')
-rw-r--r--src/cmd/godoc/codewalk.go4
-rw-r--r--src/cmd/godoc/godoc.go50
-rw-r--r--src/cmd/godoc/main.go2
3 files changed, 36 insertions, 20 deletions
diff --git a/src/cmd/godoc/codewalk.go b/src/cmd/godoc/codewalk.go
index 3e38162a4..f7f51d0a0 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 67f023ff7..26814d2fa 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 10a14b9a8..23f712ab3 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() {