| // Copyright 2009 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| /* |
| |
| Gofmt formats Go programs. |
| |
| 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.) |
| |
| Usage: |
| gofmt [flags] [path ...] |
| |
| The flags are: |
| |
| -l |
| just list files whose formatting differs from gofmt's; generate no other output |
| unless -w is also set. |
| -r rule |
| apply the rewrite rule to the source before reformatting. |
| -w |
| if set, overwrite each input file with its output. |
| -spaces |
| align with spaces instead of tabs. |
| -tabindent |
| indent with tabs independent of -spaces. |
| -tabwidth=8 |
| tab width in spaces. |
| |
| Debugging flags: |
| |
| -trace |
| print parse trace. |
| -comments=true |
| print comments; if false, all comments are elided from the output. |
| |
| The rewrite rule specified with the -r flag must be a string of the form: |
| |
| pattern -> replacement |
| |
| 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. |
| |
| |
| Examples |
| |
| To check files for unnecessary parentheses: |
| |
| gofmt -r '(a) -> a' -l *.go |
| |
| To remove the parentheses: |
| |
| gofmt -r '(a) -> a' -w *.go |
| |
| To convert the package tree from explicit slice upper bounds to implicit ones: |
| |
| gofmt -r 'α[β:len(α)] -> α[β:]' -w $GOROOT/src/pkg |
| */ |
| package documentation |
| |
| // BUG(rsc): The implementation of -r is a bit slow. |