===============================================================================
ALE Go Integration                                             *ale-go-options*


===============================================================================
Integration Information

ALE enables `gofmt`, `gopls` and `go vet` by default. It also supports `staticcheck`,
`go build, ``gosimple`, `golangserver`, `golangci-lint`, and `goimports`.

To enable `golangci-lint`, update |g:ale_linters| as appropriate.
A possible configuration is to enable golangci-lint and `gofmt:
>
  " Enable all of the linters you want for Go.
  let g:ale_linters = {'go': ['golangci-lint', 'gofmt']}
<
                                                 *ale-options.go_go_executable*
                                                       *g:ale_go_go_executable*
                                                       *b:ale_go_go_executable*
go_go_executable
g:ale_go_go_executable
  Type: |String|
  Default: `'go'`

  The executable that will be run for the `gobuild` and `govet` linters, and
  the `gomod` fixer.

                                                   *ale-options.go_go111module*
                                                         *g:ale_go_go111module*
                                                         *b:ale_go_go111module*
go_go111module
g:ale_go_go111module
  Type: |String|
  Default: `''`

  Override the value of the `$GO111MODULE` environment variable for
  golang tools.


===============================================================================
bingo                                                            *ale-go-bingo*

                                              *ale-options.go_bingo_executable*
                                                    *g:ale_go_bingo_executable*
                                                    *b:ale_go_bingo_executable*
go_bingo_executable
g:ale_go_bingo_executable
  Type: |String|
  Default: `'bingo'`

  Location of the bingo binary file.

                                                 *ale-options.go_bingo_options*
                                                       *g:ale_go_bingo_options*
                                                       *b:ale_go_bingo_options*
go_bingo_options
g:ale_go_bingo_options
  Type: |String|
  Default: `''`


===============================================================================
cspell                                                          *ale-go-cspell*

See |ale-cspell-options|


===============================================================================
gobuild                                                        *ale-go-gobuild*

                                               *ale-options.go_gobuild_options*
                                                     *g:ale_go_gobuild_options*
                                                     *b:ale_go_gobuild_options*
go_gobuild_options
g:ale_go_gobuild_options
  Type: |String|
  Default: `''`

  This variable can be set to pass additional options to the gobuild linter.
  They are injected directly after "go test".


===============================================================================
gofmt                                                            *ale-go-gofmt*

                                                 *ale-options.go_gofmt_options*
                                                       *g:ale_go_gofmt_options*
                                                       *b:ale_go_gofmt_options*
go_gofmt_options
g:ale_go_gofmt_options
  Type: |String|
  Default: `''`

  This variable can be set to pass additional options to the gofmt fixer.


===============================================================================
gofumpt                                                        *ale-go-gofumpt*

                                            *ale-options.go_gofumpt_executable*
                                                  *g:ale_go_gofumpt_executable*
                                                  *b:ale_go_gofumpt_executable*
go_gofumpt_executable
g:ale_go_gofumpt_executable
  Type: |String|
  Default: `'gofumpt'`

  Executable to run to use as the gofumpt fixer.

                                               *ale-options.go_gofumpt_options*
                                                     *g:ale_go_gofumpt_options*
                                                     *b:ale_go_gofumpt_options*
go_gofumpt_options
g:ale_go_gofumpt_options
  Type: |String|
  Default: `''`

  Options to pass to the gofumpt fixer.


===============================================================================
goimports                                                    *ale-go-goimports*

                                          *ale-options.go_goimports_executable*
                                                *g:ale_go_goimports_executable*
                                                *b:ale_go_goimports_executable*
go_goimports_executable
g:ale_go_goimports_executable
  Type: |String|
  Default: `'goimports'`

  This variable can be set to change the executable path for goimports.

                                             *ale-options.go_goimports_options*
                                                   *g:ale_go_goimports_options*
                                                   *b:ale_go_goimports_options*
go_goimports_options
g:ale_go_goimports_options
  Type: |String|
  Default: `''`

  This variable can be set to pass additional options to the goimports fixer.


===============================================================================
golangci-lint                                            *ale-go-golangci-lint*

`golangci-lint` is a `lint_file` linter, which only lints files that are
written to disk. This differs from the default behavior of linting the buffer.
See: |ale-lint-file|

                                      *ale-options.go_golangci_lint_executable*
                                            *g:ale_go_golangci_lint_executable*
                                            *b:ale_go_golangci_lint_executable*
go_golangci_lint_executable
g:ale_go_golangci_lint_executable
  Type: |String|
  Default: `'golangci-lint'`

  The executable that will be run for golangci-lint.

                                         *ale-options.go_golangci_lint_options*
                                               *g:ale_go_golangci_lint_options*
                                               *b:ale_go_golangci_lint_options*
go_golangci_lint_options
g:ale_go_golangci_lint_options
  Type: |String|
  Default: `''`

  This variable can be changed to alter the command-line arguments to the
  golangci-lint run invocation.

                                         *ale-options.go_golangci_lint_package*
                                               *g:ale_go_golangci_lint_package*
                                               *b:ale_go_golangci_lint_package*
go_golangci_lint_package
g:ale_go_golangci_lint_package
  Type: |Number|
  Default: `0`

  When set to `1`, the whole Go package will be checked instead of only the
  current file.

golangci_lint can also be user as a fixer to format go source files. In this
case the following configuration variables can be used to configure the
formatters:

                                    *ale-options.go_golangci_formatter_executable*
                                          *g:ale_go_golangci_formatter_executable*
                                          *b:ale_go_golangci_formatter_executable*
go_golangci_formatter_executable
g:ale_go_golangci_formatter_executable
  Type: |String|
  Default: `'golangci-lint'`

  The executable that will be run for golangci-lint.

                                      *ale-options.go_golangci_formatter_options*
                                            *g:ale_go_golangci_formatter_options*
                                            *b:ale_go_golangci_formatter_options*
go_golangci_formatter_options
g:ale_go_golangci_formatter_options
  Type: |String|
  Default: `''`

  This variable can be changed to alter the command-line arguments to the
  golangci-lint fmt invocation.

===============================================================================
golangserver                                              *ale-go-golangserver*

                                         *ale-options.go_langserver_executable*
                                               *g:ale_go_langserver_executable*
                                               *b:ale_go_langserver_executable*
go_langserver_executable
g:ale_go_langserver_executable
  Type: |String|
  Default: `'go-langserver'`

  Location of the go-langserver binary file.

                                            *ale-options.go_langserver_options*
                                                  *g:ale_go_langserver_options*
                                                  *b:ale_go_langserver_options*
go_langserver_options
g:ale_go_langserver_options
  Type: |String|
  Default: `''`

  Additional options passed to the go-langserver command. Note that the
  `-gocodecompletion` option is ignored because it is handled automatically
  by the |g:ale_completion_enabled| variable.


===============================================================================
golines                                                        *ale-go-golines*

                                            *ale-options.go_golines_executable*
                                                  *g:ale_go_golines_executable*
                                                    *b:ale_go_lines_executable*
go_golines_executable
g:ale_go_golines_executable
  Type: |String|
  Default: `'golines'`

  Location of the golines binary file

                                               *ale-options.go_golines_options*
                                                     *g:ale_go_golines_options*
                                                     *b:ale_go_golines_options*
go_golines_options
g:ale_go_golines_options
  Type: |String|
  Default: `''`

  Additional options passed to the golines command. By default golines has
  --max-length=100 (lines above 100 characters will be wrapped)


===============================================================================
gopls                                                            *ale-go-gopls*

gopls is the official Go language server, and is enabled for use with ALE by
default.

To install the latest stable version of `gopls` to your `$GOPATH`, try the
following command: >

  GO111MODULE=on go get golang.org/x/tools/gopls@latest
<
If `$GOPATH` is readable by ALE, it should probably work without you having to
do anything else. See the `gopls` README file for more information:

https://github.com/golang/tools/blob/master/gopls/README.md


-------------------------------------------------------------------------------
Options
                                              *ale-options.go_gopls_executable*
                                                    *g:ale_go_gopls_executable*
                                                    *b:ale_go_gopls_executable*
go_gopls_executable
g:ale_go_gopls_executable
  Type: |String|
  Default: `'gopls'`

  See |ale-integrations-local-executables|

  ALE will search for `gopls` in locally installed directories first by
  default, and fall back on a globally installed `gopls` if it can't be found
  otherwise.

                                                 *ale-options.go_gopls_options*
                                                       *g:ale_go_gopls_options*
                                                       *b:ale_go_gopls_options*
go_gopls_options
g:ale_go_gopls_options
  Type: |String|
  Default: `''`

  Command-line options passed to the gopls executable. See `gopls -h`.

                                          *ale-options.go_gopls_fix_executable*
                                                *g:ale_go_gopls_fix_executable*
                                                *b:ale_go_gopls_fix_executable*
go_gopls_fix_executable
g:ale_go_gopls_fix_executable
  Type: |String|
  Default: `'gopls'`

  Executable to run to use as the gopls fixer.

                                             *ale-options.go_gopls_fix_options*
                                                   *g:ale_go_gopls_fix_options*
                                                   *b:ale_go_gopls_fix_options*
go_gopls_fix_options
g:ale_go_gopls_fix_options
  Type: |String|
  Default: `''`

  Options to pass to the gopls fixer.

                                            *ale-options.go_gopls_init_options*
                                                  *g:ale_go_gopls_init_options*
                                                  *b:ale_go_gopls_init_options*
go_gopls_init_options
g:ale_go_gopls_init_options
  Type: |Dictionary|
  Default: `{}`

  LSP initialization options passed to gopls. This can be used to configure
  the behaviour of gopls.

  For example: >
  let g:ale_go_gopls_init_options = {
  \   'ui.diagnostic.analyses': {
  \       'composites': v:false,
  \       'unusedparams': v:true,
  \       'unusedresult': v:true,
  \   },
  \}
<
  For a full list of supported analyzers, see:
  https://github.com/golang/tools/blob/master/gopls/doc/analyzers.md

                                              *ale-options.go_gopls_use_global*
                                                    *g:ale_go_gopls_use_global*
                                                    *b:ale_go_gopls_use_global*
go_gopls_use_global
g:ale_go_gopls_use_global
  Type: |String|
  Default: `get(g:, 'ale_use_global_executables', 0)`

  See |ale-integrations-local-executables|


===============================================================================
govet                                                            *ale-go-govet*

                                                 *ale-options.go_govet_options*
                                                       *g:ale_go_govet_options*
                                                       *b:ale_go_govet_options*
go_govet_options
g:ale_go_govet_options
  Type: |String|
  Default: `''`

  This variable can be set to pass additional options to the go vet linter.


===============================================================================
revive                                                          *ale-go-revive*

                                             *ale-options.go_revive_executable*
                                                   *g:ale_go_revive_executable*
                                                   *b:ale_go_revive_executable*
go_revive_executable
g:ale_go_revive_executable
  Type: |String|
  Default: `'revive'`

  This variable can be set to change the revive executable path.

                                                *ale-options.go_revive_options*
                                                      *g:ale_go_revive_options*
                                                      *b:ale_go_revive_options*
go_revive_options
g:ale_go_revive_options
  Type: |String|
  Default: `''`

  This variable can be set to pass additional options to the revive


===============================================================================
staticcheck                                                *ale-go-staticcheck*

                                        *ale-options.go_staticcheck_executable*
                                              *g:ale_go_staticcheck_executable*
                                              *b:ale_go_staticcheck_executable*
go_staticcheck_executable
g:ale_go_staticcheck_executable
  Type: |String|
  Default: `'staticcheck'`

  See |ale-integrations-local-executables|

  ALE will search for `staticcheck` in locally installed directories first by
  default, and fall back on a globally installed `staticcheck` if it can't be
  found otherwise.

                                           *ale-options.go_staticcheck_options*
                                                 *g:ale_go_staticcheck_options*
                                                 *b:ale_go_staticcheck_options*
go_staticcheck_options
g:ale_go_staticcheck_options
  Type: |String|
  Default: `''`

  This variable can be set to pass additional options to the staticcheck
  linter.

                                      *ale-options.go_staticcheck_lint_package*
                                            *g:ale_go_staticcheck_lint_package*
                                            *b:ale_go_staticcheck_lint_package*
go_staticcheck_lint_package
g:ale_go_staticcheck_lint_package
  Type: |Number|
  Default: `1`

  When set to `1`, the whole Go package will be checked instead of only the
  current file.

                                        *ale-options.go_staticcheck_use_global*
                                              *g:ale_go_staticcheck_use_global*
                                              *b:ale_go_staticcheck_use_global*
go_staticcheck_use_global
g:ale_go_staticcheck_use_global
  Type: |String|
  Default: `get(g:, 'ale_use_global_executables', 0)`

  See |ale-integrations-local-executables|


===============================================================================
  vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl:
