Skip to content

Latest commit

 

History

History
105 lines (86 loc) · 4.86 KB

README.org

File metadata and controls

105 lines (86 loc) · 4.86 KB

GO layer

img/go.png

Table of Contents

Description

This layer adds extensive support for go.

Features:

  • gofmt/goimports on file save
  • Auto-completion using go-autocomplete (with the auto-completion layer)
  • Source analysis using go-oracle

Install

Pre-requisites

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/oracle
go get -u -v golang.org/x/tools/cmd/gorename

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.

Layer

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.

Configuration

Formatting

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")

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.

Working with Go

Go commands (start with m):

Key BindingDescription
SPC m h hgodoc at point
SPC m i ggoto imports
SPC m i aadd import
SPC m i rremove unused import
SPC m e bgo-play buffer
SPC m e rgo-play region
SPC m e ddownload go-play snippet
SPC m x xrun “go run” for the current ‘main’ package
SPC m g ajump to matching test file or back from test to code file
SPC m g ggo jump to definition
SPC m r ngo rename
SPC m t prun “go test” for the current package
SPC m t Prun “go test” for the current package and all packages under it
SPC m t trun “go test” for the function you’re currently in (while you’re in a _.test.go file)
SPC m t srun “go test” for the suite you’re currently in (requires gocheck)

Go Oracle

Key BindingDescription
SPC m r ogo-oracle set analysis scope
SPC m r <go-oracle show possible callers
SPC m r >go-oracle show call targets
SPC m r cgo-oracle show channel sends/receives
SPC m r dgo-oracle show definition
SPC m r fgo-oracle show free variables
SPC m r ggo-oracle show callgraph
SPC m r igo-oracle show implements relation
SPC m r pgo-oracle show what the select expression points to
SPC m r rgo-oracle show all references to object
SPC m r sgo-oracle show callstack
SPC m r tgo-oracle describe selected syntax, kind, type and methods