GO layer

This layer adds extensive support for go.
gofmt/goimports on file save
Auto-completion using go-autocomplete (with the auto-completion layer)
Source analysis using go-guru
Linting with flycheck's built-in checkers or flycheck-gometalinter
Coverage profile visualization
You will need gocode and godef:
go get -u -v github.com/nsf/gocode go get -u -v github.com/rogpeppe/godef go get -u -v golang.org/x/tools/cmd/guru go get -u -v golang.org/x/tools/cmd/gorename go get -u -v golang.org/x/tools/cmd/goimports
If you wish to use gometalinter set the value of go-use-gometalinter to t:
(go :variables go-use-gometalinter t)
and install the tool:
go get -u -v github.com/alecthomas/gometalinter gometalinter --install --update
For more information read gometalinter README.md and flycheck-gometalinter README.md
Make sure that gocode executable is in your PATH. For information about
setting up $PATH, check out the corresponding section in the FAQ (SPC h SPC
$PATH RET).
For best results, make sure that the auto-completion and syntax-checking
layers are enabled as well.
To use this configuration layer, add it to your ~/.spacemacs. You will need to
add go to the existing dotspacemacs-configuration-layers list in this
file.
By default, go buffers are run through gofmt on save. To use a different
formatter, set the value of gofmt-command, e.g.
(setq gofmt-command "goimports")
or
(go :variables gofmt-command "goimports")
By default, the tab width in Go mode is 8 spaces. To use a different value set
the layer variable go-tab-width, e.g.
(go :variables go-tab-width 4)
If you're using gocheck in your project you can use the
go-use-gocheck-for-testing variable to enable suite testing and to get single
function testing to work.
go-coverage-display-buffer-func controls how go-coverage should display
the coverage buffer. See display-buffer">display-buffer for a list of possible functions.
The default value is display-buffer-reuse-window.
Go Oracle has been deprecated as of October 1, 2016, it's replacement is go-guru.
If you would like to use the goguru bindings in your work, you will need to
install it, and in your project you will need to set the scope with SPC m f o.
The scope is a comma separated set of packages, and go's recursive operator is
supported. In addition, you can prefix with - to exclude a package from
searching.
In addition, GOPATH must be set prior to go-guru initialization.
m):
| Key Binding | Description |
|---|---|
SPC m h h |
godoc at point |
SPC m i g |
goto imports |
SPC m i a |
add import |
SPC m i r |
remove unused import |
SPC m e b |
go-play buffer |
SPC m e r |
go-play region |
SPC m e d |
download go-play snippet |
SPC m x x |
run "go run" for the current 'main' package |
SPC m g a |
jump to matching test file or back from test to code file |
SPC m g c |
open a clone of the current buffer with a coverage info (go tool cover -h for help) |
SPC m g g |
go jump to definition |
SPC m r n |
go rename |
SPC m t p |
run "go test" for the current package |
SPC m t P |
run "go test" for the current package and all packages under it |
SPC m t t |
run "go test" for the function you're currently in (while you're in a _.test.go file) |
SPC m t s |
run "go test" for the suite you're currently in (requires gocheck) |
| Key Binding | Description |
|---|---|
SPC m f d |
go-guru describe symbol at point |
SPC m f f |
go-guru show free variables |
SPC m f i |
go-guru show implements relation |
SPC m f c |
go-guru show channel sends/receives |
SPC m f r |
go-guru show referrers |
SPC m f j |
go-guru jump to symbol definition |
SPC m f p |
go-guru show what the select expression points to |
SPC m f s |
go-guru show callstack |
SPC m f e |
go-guru show possible contants/types for error value |
SPC m f < |
go-guru show possible callers |
SPC m f > |
go-guru show call targets |
SPC m f o |
go-guru set analysis scope |