gopher.nvim/README.md
1stvaliduser 08f9156ebc
Fix typos(UWU) (#11)
* uwu

* okn't

* h
2022-07-01 15:33:34 +03:00

141 lines
2.4 KiB
Markdown

# gopher.nvim
Minimalistic plugin for Go development in Neovim written in Lua.
It's not an LSP tool, the main goal of this plugin is add go tooling support in Neovim.
## Install
Pre-dependency: [go](https://github.com/golang/go) (tested on 1.17 and 1.18)
```lua
use {
"olexsmir/gopher.nvim",
requires = { -- dependencies
"nvim-lua/plenary.nvim",
"nvim-treesitter/nvim-treesitter",
},
}
```
Also, run `TSInstall go` if `go` parser if isn't installed yet.
## Config
By `.setup` function you can configure the plugin.
Note:
- Installer does not install the tool in user set path
```lua
require("gopher").setup {
commands = {
go = "go",
gomodifytags = "gomodifytags",
gotests = "~/go/bin/gotests", -- also you can set custom command path
impl = "impl",
},
}
```
## Features
1. Installation requires this go tool:
```vim
:GoInstallDeps
```
It will install next tools:
- [gomodifytags](https://github.com/fatih/gomodifytags)
- [impl](https://github.com/josharian/impl)
- [gotests](https://github.com/cweill/gotests)
2. Modify struct tags:
By default `json` tag will be added/removed, if not set:
```vim
:GoTagAdd json " For add json tag
:GoTagRm yaml " For remove yaml tag
```
3. Run `go mod` command:
```vim
:GoMod tidy " Runs `go mod tidy`
:GoMod init asdf " Runs `go mod init asdf`
```
4. Run `go get` command
Link can have a `http` or `https` prefix.
You can provide more than one package url:
```vim
:GoGet github.com/gorilla/mux
```
5. Interface implementation
Command syntax:
```vim
:GoImpl [receiver] [interface]
" Also you can put cursor on the struct and run:
:GoImpl [interface]
```
Example of usage:
```vim
" Example
:GoImpl r Read io.Reader
" or simply put your cursor in the struct and run:
:GoImpl io.Reader
```
6. Generate tests with [gotests](https://github.com/cweill/gotests)
Generate one test for spesific function/method:
```vim
:GoTestAdd
```
Generate all tests for all functions/methods in current file:
```vim
:GoTestsAll
```
Generate tests only for exported functions/methods in current file:
```vim
:GoTestsExp
```
7. Run `go generate` command;
```vim
" Run `go generate` in cwd path
:GoGenerate
" Run `go generate` for current file
:GoGenerate %
```
8. Generate doc comment
First set a cursor on **public** package/function/interface/struct and execure:
```vim
:GoCmt
```
## Thanks:
- [go.nvim](https://github.com/ray-x/go.nvim)