These optional dotfiles indicate the root of a module or module group (:lang), and will later contain module metadata. They will also serve as an alternative to packages.el and doctor.el, and will aide the parts of the v3.0 module API concerned with resolving the current module from a path (`doom-module-from-path`), which currently rely too heavily on parsing path strings. For now, however, they're simply placeholders. |
||
---|---|---|
.. | ||
.doommodule | ||
autoload.el | ||
config.el | ||
doctor.el | ||
packages.el | ||
README.org |
:lang go
Description unfold
This module adds Go support, with optional (but recommended) LSP support via gopls.
- Code completion (
gocode
) - Documentation lookup (
godoc
) - Eldoc support (
go-eldoc
) - REPL (
gore
) - Syntax-checking (
flycheck
) - Auto-formatting on save (
gofmt
) (requires doom-module::editor format +onsave) - File templates
- Snippets
- Generate testing code (
go-gen-test
) - Code checking (
flycheck-golangci-lint
)
Maintainers
This module needs a maintainer. Become a maintainer?
Module flags
- +lsp
-
Enable LSP support for
go-mode
. Requires doom-module::tools lsp and a langserver (supports gopls). Highly recommended, as the non-LSP experience is deprecated (and poor). - +tree-sitter
- Leverages tree-sitter for better syntax highlighting and structural text editing. Requires doom-module::tools tree-sitter.
Packages
- doom-package:company-go if doom-module::completion company (DEPRECATED)
- doom-package:flycheck-golangci-lint if doom-module::checkers syntax
- doom-package:go-eldoc
- doom-package:go-gen-test
- doom-package:go-mode
- doom-package:gorepl-mode
- doom-package:go-tag
Hacks
No hacks documented for this module.
TODO Changelog
This module does not have a changelog yet.
Installation
Enable this module in your doom!
block.
This module requires Go, a valid $GOPATH
, and a number of go packages, listed
below.
Go
- macOS:
$ brew install go
- Arch Linux:
$ pacman -S go
- openSUSE:
$ zypper install go
Dependencies
gocode
(for code completion & eldoc support)godoc
(for documentation lookup)gorename
(for extra refactoring commands)gore
(for the REPL)goimports
(optional: for auto-formatting code on save & fixing imports)gotests
(for generate test code)gomodifytags
(for manipulating tags)
export GOPATH=~/work/go
go install github.com/x-motemen/gore/cmd/gore@latest
go install github.com/stamblerre/gocode@latest
go install golang.org/x/tools/cmd/godoc@latest
go install golang.org/x/tools/cmd/goimports@latest
go install golang.org/x/tools/cmd/gorename@latest
go install github.com/cweill/gotests/gotests@latest
go install github.com/fatih/gomodifytags@latest
golangci-lint
(optional: for flycheck to integrate golangci-lint results) it is recommended to not use$ go get
to install this one, check the documentation.
TODO Usage
This module has no usage documentation yet. Write some?
Keybinds
Keys | Description |
---|---|
<localleader> a | Add field tags to a struct |
<localleader> d | Remove field tags from a struct |
<localleader> e | Evaluate buffer or selection in the Go playground |
<localleader> i | Go to imports |
<localleader> b c | run $ go clean |
<localleader> b b | run $ go build |
<localleader> b r | run $ go run . |
<localleader> h . | lookup symbol at point in godoc |
<localleader> t t | rerun last test |
<localleader> t a | run all tests in project |
<localleader> t f | run all tests in current file |
<localleader> t s | run single test at point |
<localleader> t g | Generate tests for all exported or selected functions |
<localleader> t G | Generate tests for all functions |
<localleader> t e | Generate tests for all exported functions |
<localleader> t b s | go test.bench single |
<localleader> t b a | go test.bench all |
<localleader> r i a | search imports to add |
<localleader> r i r | reimove unused imports |
TODO Configuration
This module has no configuration documentation yet. Write some?
Troubleshooting
There are no known problems with this module. Report one?
Frequently asked questions
This module has no FAQs yet. Ask one?
TODO Appendix
This module has no appendix yet. Write one?