# go contribution layer for Spacemacs ![go](img/go.png) **Table of Contents** - [go contribution layer for Spacemacs](#go-contribution-layer-for-spacemacs) - [Description](#description) - [Install](#install) - [Pre-requisites](#pre-requisites) - [Layer](#layer) - [Working with Go](#working-with-go) - [Go commands (start with `m`):](#go-commands-start-with-m) - [Go Oracle](#go-oracle) ## Description This layer adds extensive support for go. Features: - gofmt on file save - Auto-completion using [go-autocomplete](https://github.com/nsf/gocode/tree/master/emacs) - Source analysis using [go-oracle](http://golang.org/s/oracle-user-manual) ## Install ### Pre-requisites You will need gocode: ``` go get -u github.com/nsf/gocode ``` Make sure that `gocode` executable is in your PATH. ### Layer To use this contribution add it to your `~/.spacemacs` ```elisp (setq-default dotspacemacs-configuration-layers '(go)) ``` ## Working with Go ### Go commands (start with `m`): Key Binding | Description ---------------------------|------------------------------------------------------------ SPC m d p | godoc at point SPC m i g | goto imports SPC m i a | add import SPC m i r | remove unused import SPC m p b | go-play buffer SPC m p r | go-play region SPC m p d | download go-play snippet SPC m t p | run "go test" for the current package SPC m g | go jump to definition ### Go Oracle Key Binding | Description ---------------------------|------------------------------------------------------------ SPC m o o | go-oracle set analysis scope SPC m o < | go-oracle show possible callers SPC m o > | go-oracle show call targets SPC m o c | go-oracle show channel sends/receives SPC m o d | go-oracle show definition SPC m o f | go-oracle show free variables SPC m o g | go-oracle show callgraph SPC m o i | go-oracle show implements relation SPC m o p | go-oracle show what the select expression points to SPC m o r | go-oracle show all references to object SPC m o s | go-oracle show callstack SPC m o t | go-oracle describe selected syntax, kind, type and methods