1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108
|
.\" Hey, EMACS: -*- nroff -*-
.de Vb \" Begin verbatim text
.ft CW
.nf
.ne \\$1
..
.de Ve \" End verbatim text
.ft R
.fi
..
.TH GOFMT 1 "2012-05-13"
.\" Please adjust this date whenever revising the manpage.
.SH NAME
gofmt \- formats Go programs
.SH SYNOPSIS
.B gofmt
.RI [ flags ]
.RI [
.IR "path ..."
.RI ]
.SH DESCRIPTION
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.
.P
Formatting control flags:
.TP
.B \-comments=true
Print comments; if false, all comments are elided from the output.
.TP
.B \-tabs=true
Indent with tabs; if false, spaces are used instead.
.TP
.B \-tabwidth=8
Tab width in spaces.
.P
The rewrite rule specified with the \-r flag must be a string of the
form:
.Vb 6
\& pattern -> replacement
.Ve
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.
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
.SH BUGS
The implementation of \-r is a bit slow.
.SH AUTHOR
.PP
This manual page was written by Michael Stapelberg <stapelberg@debian.org>,
for the Debian project (and may be used by others).
|