summaryrefslogtreecommitdiff
path: root/debian/man/gofmt.1
blob: 969a245e170bc3ea0969c385db6f463cccb65874 (plain)
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).