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.
Pre-dependency: go (tested on 1.17 and 1.18)
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.
By .setup function you can configure the plugin.
Note:
installerdoes not install the tool in user set path
require("gopher").setup {
commands = {
go = "go",
gomodifytags = "gomodifytags",
gotests = "~/go/bin/gotests", -- also you can set custom command path
impl = "impl",
iferr = "iferr",
},
}- Installation requires this go tool:
:GoInstallDepsIt will install next tools:
- Modify struct tags:
By default
jsontag will be added/removed, if not set:
:GoTagAdd json " For add json tag
:GoTagRm yaml " For remove yaml tag- Run
go modcommand:
:GoMod tidy " Runs `go mod tidy`
:GoMod init asdf " Runs `go mod init asdf`- Run
go getcommand
Link can have a http or https prefix.
You can provide more than one package url:
:GoGet github.com/gorilla/mux- Interface implementation
Command syntax:
:GoImpl [receiver] [interface]
" Also you can put cursor on the struct and run:
:GoImpl [interface]Example of usage:
" Example
:GoImpl r Read io.Reader
" or simply put your cursor in the struct and run:
:GoImpl io.Reader- Generate tests with gotests
Generate one test for a specific function/method:
:GoTestAddGenerate all tests for all functions/methods in current file:
:GoTestsAllGenerate tests only for exported functions/methods in current file:
:GoTestsExp- Run
go generatecommand;
" Run `go generate` in cwd path
:GoGenerate
" Run `go generate` for current file
:GoGenerate %- Generate doc comment
First set a cursor on public package/function/interface/struct and execute:
:GoCmt- Generate
if err
Set cursor on the line with err and execute:
:GoIfErr- Setup nvim-dap for go in one line.
Notice: nvim-dap is required
require"gopher.dap".setup()PRs are always welcome. See CONTRIBUTING.md