diff --git a/lib/godoc/package.html b/lib/godoc/package.html index 2e1be5104a..cdebd4fc4a 100644 --- a/lib/godoc/package.html +++ b/lib/godoc/package.html @@ -167,21 +167,27 @@      Synopsis - - .. - + {{if not $.DirFlat}} + + .. + + {{end}} {{range .List}} - - {{if $.DirFlat}} - {{html .Path}} + {{if .HasPkg}} + + {{html .Path}} +      + {{html .Synopsis}} + + {{end}} {{else}} - {{repeat `     ` .Depth}}{{html .Name}} + + {{repeat `     ` .Depth}}{{html .Name}} +      + {{html .Synopsis}} + {{end}} - -      - {{html .Synopsis}} - {{end}} {{end}} diff --git a/lib/godoc/package.txt b/lib/godoc/package.txt index d88cda79fe..3f3c396f0c 100644 --- a/lib/godoc/package.txt +++ b/lib/godoc/package.txt @@ -76,8 +76,8 @@ OTHER PACKAGES */}}{{with .Dirs}} SUBDIRECTORIES -{{if $.DirFlat}}{{range .List}} - {{.Path}}{{end}} +{{if $.DirFlat}}{{range .List}}{{if .HasPkg}} + {{.Path}}{{end}}{{end}} {{else}}{{range .List}} {{repeat `. ` .Depth}}{{.Name}}{{end}} {{end}}{{end}} diff --git a/src/cmd/godoc/dirtrees.go b/src/cmd/godoc/dirtrees.go index 703c46272f..1acde99bd2 100644 --- a/src/cmd/godoc/dirtrees.go +++ b/src/cmd/godoc/dirtrees.go @@ -23,11 +23,12 @@ import ( const testdataDirName = "testdata" type Directory struct { - Depth int - Path string // includes Name - Name string - Text string // package documentation, if any - Dirs []*Directory // subdirectories + Depth int + Path string // directory path; includes Name + Name string // directory name + HasPkg bool // true if the directory contains at least one package + Synopsis string // package documentation, if any + Dirs []*Directory // subdirectories } func isGoFile(fi os.FileInfo) bool { @@ -62,7 +63,11 @@ func (b *treeBuilder) newDirTree(fset *token.FileSet, path, name string, depth i // return a dummy directory so that the parent directory // doesn't get discarded just because we reached the max // directory depth - return &Directory{depth, path, name, "", nil} + return &Directory{ + Depth: depth, + Path: path, + Name: name, + } } list, err := fs.ReadDir(path) @@ -145,7 +150,14 @@ func (b *treeBuilder) newDirTree(fset *token.FileSet, path, name string, depth i } } - return &Directory{depth, path, name, synopsis, dirs} + return &Directory{ + Depth: depth, + Path: path, + Name: name, + HasPkg: hasPkgFiles, + Synopsis: synopsis, + Dirs: dirs, + } } // newDirectory creates a new package directory tree with at most maxDepth @@ -247,9 +259,10 @@ func (dir *Directory) lookup(path string) *Directory { type DirEntry struct { Depth int // >= 0 Height int // = DirList.MaxHeight - Depth, > 0 - Path string // includes Name, relative to DirList root - Name string - Synopsis string + Path string // directory path; includes Name, relative to DirList root + Name string // directory name + HasPkg bool // true if the directory contains at least one package + Synopsis string // package documentation, if any } type DirList struct { @@ -304,7 +317,8 @@ func (root *Directory) listing(skipRoot bool) *DirList { } p.Path = path p.Name = d.Name - p.Synopsis = d.Text + p.HasPkg = d.HasPkg + p.Synopsis = d.Synopsis i++ }