summaryrefslogtreecommitdiffstats
path: root/man/gofmt.1
diff options
context:
space:
mode:
Diffstat (limited to 'man/gofmt.1')
-rw-r--r--man/gofmt.1138
1 files changed, 138 insertions, 0 deletions
diff --git a/man/gofmt.1 b/man/gofmt.1
new file mode 100644
index 0000000..656d3de
--- /dev/null
+++ b/man/gofmt.1
@@ -0,0 +1,138 @@
+.\" Hey, EMACS: -*- nroff -*-
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.TH GOFMT 1 "2021-09-06"
+.\" Please adjust this date whenever revising the manpage.
+.SH NAME
+gofmt \- format Go programs
+.SH SYNOPSIS
+.B gofmt
+.RI [ flags ]
+.RI [ "path ..." ]
+.SH DESCRIPTION
+Gofmt formats Go programs. It uses tabs for indentation and blanks for
+alignment. Alignment assumes that an editor is using a fixed-width font.
+.P
+Without an explicit path, it processes the standard input. Given a file, it
+operates on that file; given a directory, it operates on all .go files in
+that directory, recursively. (Files starting with a period are ignored.) By
+default, gofmt prints the reformatted sources to standard output.
+.SH OPTIONS
+.TP
+.B \-d
+Do not print reformatted sources to standard output.
+If a file's formatting is different than gofmt's, print diffs
+to standard output.
+.TP
+.B \-e
+Print all (including spurious) errors.
+.TP
+.B \-l
+Do not print reformatted sources to standard output.
+If a file's formatting is different from gofmt's, print its name
+to standard output.
+.TP
+.B \-r rule
+Apply the rewrite rule to the source before reformatting.
+.TP
+.B \-s
+Try to simplify code (after applying the rewrite rule, if any).
+.TP
+.B \-w
+Do not print reformatted sources to standard output.
+If a file's formatting is different from gofmt's, overwrite it
+with gofmt's version. If an error occurred during overwriting,
+the original file is restored from an automatic backup.
+.P
+Debugging support:
+.TP
+.BI "\-cpuprofile " filename
+Write cpu profile to the specified file.
+.P
+The rewrite rule specified with the \-r flag must be a string of the
+form:
+
+.Vb 6
+\& pattern -> replacement
+.Ve
+.P
+Both pattern and replacement must be valid Go expressions. In the pattern,
+single-character lowercase identifiers serve as wildcards matching arbitrary
+sub-expressions; those expressions will be substituted for the same
+identifiers in the replacement.
+.P
+When gofmt reads from standard input, it accepts either a full Go program or
+a program fragment. A program fragment must be a syntactically valid
+declaration list, statement list, or expression. When formatting such a
+fragment, gofmt preserves leading indentation as well as leading and
+trailing spaces, so that individual sections of a Go program can be
+formatted by piping them through gofmt.
+.
+.SH EXAMPLES
+To check files for unnecessary parentheses:
+
+.Vb 6
+\& gofmt \-r '(a) \-> a' \-l *.go
+.Ve
+
+To remove the parentheses:
+
+.Vb 6
+\& gofmt \-r '(a) \-> a' \-w *.go
+.Ve
+
+To convert the package tree from explicit slice upper bounds to implicit
+ones:
+
+.Vb 6
+\& gofmt \-r 'α[β:len(α)] \-> α[β:]' \-w $GOROOT/src/pkg
+.Ve
+.
+.SS The simplify command
+.
+When invoked with \-s gofmt will make the following source transformations
+where possible.
+
+.Vb 6
+\& An array, slice, or map composite literal of the form:
+\& []T{T{}, T{}}
+\& will be simplified to:
+\& []T{{}, {}}
+.Ve
+
+.Vb 6
+\& A slice expression of the form:
+\& s[a:len(s)]
+\& will be simplified to:
+\& s[a:]
+.Ve
+
+.Vb 6
+\& A range of the form:
+\& for x, _ = range v {...}
+\& will be simplified to:
+\& for x = range v {...}
+.Ve
+
+.Vb 6
+\& A range of the form:
+\& for _ = range v {...}
+\& will be simplified to:
+\& for range v {...}
+.Ve
+.P
+This may result in changes that are incompatible with earlier versions of
+Go.
+.SH AUTHOR
+This manual page was written by Michael Stapelberg <stapelberg@debian.org>
+and is maintained by the
+Debian Go Compiler Team <team+go-compiler@tracker.debian.org>
+based on the output of 'go doc cmd/gofmt'
+for the Debian project (and may be used by others).