X-Git-Url: https://git.josue.xyz/?a=blobdiff_plain;f=.config%2Fcoc%2Fextensions%2Fcoc-go-data%2Ftools%2Fpkg%2Fmod%2Fmvdan.cc%2Fgofumpt%40v0.0.0-20200802201014-ab5a8192947d%2FREADME.md;fp=.config%2Fcoc%2Fextensions%2Fcoc-go-data%2Ftools%2Fpkg%2Fmod%2Fmvdan.cc%2Fgofumpt%40v0.0.0-20200802201014-ab5a8192947d%2FREADME.md;h=0000000000000000000000000000000000000000;hb=3ddadb3c98564791f0ac36cb39771d844a63dc91;hp=4350f375fccc9a4553831f3425b2096dca20a0d0;hpb=5f797af6612ed10887189b47a1efc2f915586e59;p=dotfiles%2F.git diff --git a/.config/coc/extensions/coc-go-data/tools/pkg/mod/mvdan.cc/gofumpt@v0.0.0-20200802201014-ab5a8192947d/README.md b/.config/coc/extensions/coc-go-data/tools/pkg/mod/mvdan.cc/gofumpt@v0.0.0-20200802201014-ab5a8192947d/README.md deleted file mode 100644 index 4350f375..00000000 --- a/.config/coc/extensions/coc-go-data/tools/pkg/mod/mvdan.cc/gofumpt@v0.0.0-20200802201014-ab5a8192947d/README.md +++ /dev/null @@ -1,337 +0,0 @@ -# gofumpt - - GO111MODULE=on go get mvdan.cc/gofumpt - -Enforce a stricter format than `gofmt`, while being backwards compatible. That -is, `gofumpt` is happy with a subset of the formats that `gofmt` is happy with. - -The tool is a modified fork of `gofmt`, so it can be used as a drop-in -replacement. Running `gofmt` after `gofumpt` should be a no-op. - -A drop-in replacement for `goimports` is also available: - - GO111MODULE=on go get mvdan.cc/gofumpt/gofumports - -Most of the Go source files in this repository belong to the Go project. -The added formatting rules are in the `format` package. - -### Added rules - -No empty lines at the beginning or end of a function - -
example - -``` -func foo() { - println("bar") - -} -``` - -``` -func foo() { - println("bar") -} -``` - -
- -No empty lines around a lone statement (or comment) in a block - -
example - -``` -if err != nil { - - return err -} -``` - -``` -if err != nil { - return err -} -``` - -
- -No empty lines before a simple error check - -
example - -``` -foo, err := processFoo() - -if err != nil { - return err -} -``` - -``` -foo, err := processFoo() -if err != nil { - return err -} -``` - -
- -Composite literals should use newlines consistently - -
example - -``` -// A newline before or after an element requires newlines for the opening and -// closing braces. -var ints = []int{1, 2, - 3, 4} - -// A newline between consecutive elements requires a newline between all -// elements. -var matrix = [][]int{ - {1}, - {2}, { - 3, - }, -} -``` - -``` -var ints = []int{ - 1, 2, - 3, 4, -} - -var matrix = [][]int{ - {1}, - {2}, - { - 3, - }, -} -``` - -
- -`std` imports must be in a separate group at the top - -
example - -``` -import ( - "foo.com/bar" - - "io" - - "io/ioutil" -) -``` - -``` -import ( - "io" - "io/ioutil" - - "foo.com/bar" -) -``` - -
- -Short case clauses should take a single line - -
example - -``` -switch c { -case 'a', 'b', - 'c', 'd': -} -``` - -``` -switch c { -case 'a', 'b', 'c', 'd': -} -``` - -
- -Multiline top-level declarations must be separated by empty lines - -
example - -``` -func foo() { - println("multiline foo") -} -func bar() { - println("multiline bar") -} -``` - -``` -func foo() { - println("multiline foo") -} - -func bar() { - println("multiline bar") -} -``` - -
- -Single var declarations should not be grouped with parentheses - -
example - -``` -var ( - foo = "bar" -) -``` - -``` -var foo = "bar" -``` - -
- -Contiguous top-level declarations should be grouped together - -
example - -``` -var nicer = "x" -var with = "y" -var alignment = "z" -``` - -``` -var ( - nicer = "x" - with = "y" - alignment = "z" -) -``` - -
- - -Simple var-declaration statements should use short assignments - -
example - -``` -var s = "somestring" -``` - -``` -s := "somestring" -``` - -
- - -The `-s` code simplification flag is enabled by default - -
example - -``` -var _ = [][]int{[]int{1}} -``` - -``` -var _ = [][]int{{1}} -``` - -
- - -Octal integer literals should use the `0o` prefix on modules using Go 1.13 and later - -
example - -``` -const perm = 0755 -``` - -``` -const perm = 0o755 -``` - -
- -Comments which aren't Go directives should start with a whitespace - -
example - -``` -//go:noinline - -//Foo is awesome. -func Foo() {} -``` - -``` -//go:noinline - -// Foo is awesome. -func Foo() {} -``` - -
- -#### Extra rules behind `-extra` - -Adjacent parameters with the same type should be grouped together - -
example - -``` -func Foo(bar string, baz string) {} -``` - -``` -func Foo(bar, baz string) {} -``` - -
- -### Installation - -`gofumpt` is a replacement for `gofmt`, so you can simply `go get` it as -described at the top of this README and use it. - -Alternatively, to use the tool with VS Code, add these settings: - -``` -"go.formatTool": "goimports", -"go.alternateTools": { - "goimports": "gofumports", -}, -"go.languageServerExperimentalFeatures": { - "format": false -} -``` - -You can use `gofmt` instead of `goimports` and `gofumpt` instead of `gofumports` -if you don't need auto-importing on-save. - -### Roadmap - -This tool is a place to experiment. In the long term, the features that work -well might be proposed for `gofmt` itself. - -The tool is also compatible with `gofmt` and is aimed to be stable, so you can -rely on it for your code as long as you pin a version of it. - -### License - -Note that much of the code is copied from Go's `gofmt` and `goimports` commands. -You can tell which files originate from the Go repository from their copyright -headers. Their license file is `LICENSE.google`. - -`gofumpt`'s original source files are also under the 3-clause BSD license, with -the separate file `LICENSE`.