diff options
| author | Gert Cuykens <gert.cuykens@gmail.com> | 2019-06-27 03:04:21 +0200 |
|---|---|---|
| committer | Andrew Bonventre <andybons@golang.org> | 2019-09-19 01:55:12 +0000 |
| commit | fa42157d986c69664e2146b520ff45be204af8eb (patch) | |
| tree | 2ba84c62bace04668452b3698e1f9b4cc738440c /src/cmd/doc/pkg.go | |
| parent | b7e9c7a3919195f718249aba0e09d03f9e1fdf9d (diff) | |
| download | go-fa42157d986c69664e2146b520ff45be204af8eb.tar.xz | |
cmd/doc: add option to output a clean one-line symbol representation
Currently there is no way for go doc to output a clean
one-line symbol representation of types, functions, vars
and consts without documentation lines or other text lines
added.
For example `go doc fmt` has a huge introduction so if you
pass that to grep or fzf to search a symbol let say scan
`go doc fmt | grep scan` you get way to many false
positives.
Added a `-short` flag to be able to do
`go doc -short fmt | grep scan` instead which will result in
just the symbols you are looking for.
func Fscan(r io.Reader, a ...interface{}) (n int, err error)
func Fscanf(r io.Reader, format string, a ...interface{}) (n int, err error)
func Fscanln(r io.Reader, a ...interface{}) (n int, err error)
func Sscan(str string, a ...interface{}) (n int, err error)
func Sscanf(str string, format string, a ...interface{}) (n int, err error)
func Sscanln(str string, a ...interface{}) (n int, err error)
Fixes #32597
Change-Id: I77a73838adc512c8d1490f5a82075de6b0462a31
Reviewed-on: https://go-review.googlesource.com/c/go/+/184017
Run-TryBot: Andrew Bonventre <andybons@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Andrew Bonventre <andybons@golang.org>
Diffstat (limited to 'src/cmd/doc/pkg.go')
| -rw-r--r-- | src/cmd/doc/pkg.go | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/src/cmd/doc/pkg.go b/src/cmd/doc/pkg.go index 2c0c6c161a..fa31eba64b 100644 --- a/src/cmd/doc/pkg.go +++ b/src/cmd/doc/pkg.go @@ -507,24 +507,34 @@ func (pkg *Package) allDoc() { func (pkg *Package) packageDoc() { defer pkg.flush() - doc.ToText(&pkg.buf, pkg.doc.Doc, "", indent, indentedWidth) - pkg.newlines(1) + if !short { + doc.ToText(&pkg.buf, pkg.doc.Doc, "", indent, indentedWidth) + pkg.newlines(1) + } if pkg.pkg.Name == "main" && !showCmd { // Show only package docs for commands. return } - pkg.newlines(2) // Guarantee blank line before the components. + if !short { + pkg.newlines(2) // Guarantee blank line before the components. + } + pkg.valueSummary(pkg.doc.Consts, false) pkg.valueSummary(pkg.doc.Vars, false) pkg.funcSummary(pkg.doc.Funcs, false) pkg.typeSummary() - pkg.bugs() + if !short { + pkg.bugs() + } } // packageClause prints the package clause. func (pkg *Package) packageClause() { + if short { + return + } importPath := pkg.build.ImportComment if importPath == "" { importPath = pkg.build.ImportPath |
