doomemacs/modules/lang/go/README.org

98 lines
2.8 KiB
Org Mode
Raw Normal View History

2019-01-03 01:53:13 -05:00
#+TITLE: lang/go
#+DATE: January 16, 2017
#+SINCE: v2.0
#+STARTUP: inlineimages
2019-01-03 01:53:13 -05:00
* Table of Contents :TOC:
- [[#description][Description]]
- [[#module-flags][Module Flags]]
- [[#plugins][Plugins]]
- [[#prerequisites][Prerequisites]]
- [[#go][Go]]
- [[#dependencies][Dependencies]]
- [[#features][Features]]
- [[#configuration][Configuration]]
- [[#troubleshooting][Troubleshooting]]
2019-01-03 01:53:13 -05:00
* Description
2017-05-25 20:08:50 +02:00
This module adds [[https://golang.org][Go]] support.
2017-05-25 20:08:50 +02:00
+ Code completion (~gocode~)
+ Documentation lookup (~godoc~)
+ Eldoc support (~go-eldoc~)
2017-05-25 20:08:50 +02:00
+ REPL (~gore~)
+ Syntax-checking (~flycheck~)
+ Auto-formatting on save (~gofmt~)
+ Code navigation & refactoring (~go-guru~)
+ [[../../editor/file-templates/templates/go-mode][File templates]]
+ [[https://github.com/hlissner/doom-snippets/tree/master/go-mode][Snippets]]
2019-10-23 01:06:46 +09:00
+ Generate testing code (~go-gen-test~)
+ Code checking (~flycheck-golangci-lint~)
2017-05-25 20:08:50 +02:00
2019-01-03 01:53:13 -05:00
** Module Flags
2019-10-30 23:29:34 -04:00
+ =+lsp= Enables integration for the gopls LSP server.
2017-05-25 20:08:50 +02:00
2019-01-03 01:53:13 -05:00
** Plugins
+ [[https://github.com/dominikh/go-mode.el][go-mode]]
+ [[https://github.com/syohex/emacs-go-eldoc][go-eldoc]]
+ [[https://github.com/dominikh/go-mode.el][go-guru]]
+ [[https://github.com/manute/gorepl-mode][gorepl-mode]]
+ [[https://github.com/brantou/emacs-go-tag][go-tag]]
2019-01-03 01:53:13 -05:00
+ [[https://github.com/mdempsky/gocode][company-go]]*
2019-10-23 01:06:46 +09:00
+ [[https://github.com/s-kostyaev/go-gen-test][go-gen-test]]
+ [[https://github.com/weijiangan/flycheck-golangci-lint][flycheck-golangci-lint]] (if =:checkers syntax= is enabled)
2017-08-21 20:07:07 +02:00
2019-01-03 01:53:13 -05:00
* Prerequisites
2017-08-21 20:07:07 +02:00
** Go
2017-05-25 20:08:50 +02:00
To get started with Go, you need the ~go~ tool:
*** MacOS
2019-01-03 01:53:13 -05:00
#+BEGIN_SRC bash
brew install go
#+END_SRC
*** Arch Linux
2019-01-03 01:53:13 -05:00
#+BEGIN_SRC bash
sudo pacman -S go
#+END_SRC
*** openSUSE
#+BEGIN_SRC sh :dir /sudo::
sudo zypper install go
#+END_SRC
2017-05-25 20:08:50 +02:00
** Dependencies
This module requires a valid ~GOPATH~, and the following Go packages:
2017-05-26 11:44:06 +02:00
+ ~gocode~ (for code completion & eldoc support)
+ ~godoc~ (for documentation lookup)
+ ~gorename~ (for extra refactoring commands)
2017-05-25 20:08:50 +02:00
+ ~gore~ (for the REPL)
+ ~guru~ (for code navigation & refactoring commands)
2019-01-03 01:53:13 -05:00
+ ~goimports~ (optional: for auto-formatting code on save & fixing imports)
2019-10-23 01:06:46 +09:00
+ ~gotests~ (for generate test code)
+ ~gomodifytags~ (for manipulating tags)
#+BEGIN_SRC sh
2017-05-03 22:36:16 +02:00
export GOPATH=~/work/go
2019-04-19 18:34:25 -05:00
go get -u github.com/motemen/gore/cmd/gore
go get -u github.com/mdempsky/gocode
go get -u golang.org/x/tools/cmd/godoc
go get -u golang.org/x/tools/cmd/goimports
2017-05-25 20:08:50 +02:00
go get -u golang.org/x/tools/cmd/gorename
go get -u golang.org/x/tools/cmd/guru
2019-10-23 01:06:46 +09:00
go get -u github.com/cweill/gotests/...
go get -u github.com/fatih/gomodifytags
#+END_SRC
+ ~golangci-lint~ (optional: for flycheck to integrate golangci-lint results)
it is recommended to *not* use go get to install this one, check the
[[https://github.com/golangci/golangci-lint#binary-release][documentation]].
2019-01-03 01:53:13 -05:00
* TODO Features
* TODO Configuration
* TODO Troubleshooting