spacemacs/layers/+lang/go
2015-10-10 23:18:46 -04:00
..
extensions/go-rename Use + instead of ! for layer categories 2015-09-11 00:13:51 -04:00
img Use + instead of ! for layer categories 2015-09-11 00:13:51 -04:00
config.el Use + instead of ! for layer categories 2015-09-11 00:13:51 -04:00
extensions.el lang/go: change keybindings to removed shadowed oracle and follow conventions 2015-09-17 14:45:27 +02:00
packages.el Add variables to opt-in to flycheck/flyspell 2015-10-10 23:18:46 -04:00
README.org Document other layers in go 2015-10-05 12:07:45 +02:00

GO contribution layer for Spacemacs

/TakeV/spacemacs/media/commit/460e4b933540c8d8742995e95916f28671372908/layers/+lang/go/img/go.png

Description

This layer adds extensive support for go.

Features:

  • gofmt 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

Make sure that gocode executable is in your PATH.

For best results, make sure that the auto-completion and syntax-checking layers are enabled as well.

Layer

To use this contribution add it to your ~/.spacemacs

  (setq-default dotspacemacs-configuration-layers '(go))

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

Working with Go

Go commands (start with 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 t p run "go test" for the current package
SPC m g a jump to matching test file or back from test to code file
SPC m g g go jump to definition
SPC m r n go rename

Go Oracle

Key Binding Description
SPC m r o go-oracle set analysis scope
SPC m r < go-oracle show possible callers
SPC m r > go-oracle show call targets
SPC m r c go-oracle show channel sends/receives
SPC m r d go-oracle show definition
SPC m r f go-oracle show free variables
SPC m r g go-oracle show callgraph
SPC m r i go-oracle show implements relation
SPC m r p go-oracle show what the select expression points to
SPC m r r go-oracle show all references to object
SPC m r s go-oracle show callstack
SPC m r t go-oracle describe selected syntax, kind, type and methods