[mirror] Make your go dev experience better github.com/olexsmir/gopher.nvim
neovim golang
Lua 93.1%
Vim Script 3.3%
Go 2.8%
Makefile 0.7%
41 1 14

Clone this repository

https://tangled.org/olexsmir.xyz/gopher.nvim
git@tangled.org:olexsmir.xyz/gopher.nvim

For self-hosted knots, clone URLs may differ based on your setup.

README.md

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 (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.

Config#

By .setup function you can configure the plugin.

Note:

  • Installer does 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",
  },
}

Features#

  1. Installation requires this go tool:
:GoInstallDeps

It will install next tools:

  1. Modify struct tags: By default json tag will be added/removed, if not set:
:GoTagAdd json " For add json tag
:GoTagRm yaml " For remove yaml tag
  1. Run go mod command:
:GoMod tidy " Runs `go mod tidy`
:GoMod init asdf " Runs `go mod init asdf`
  1. Run go get command

Link can have a http or https prefix.

You can provide more than one package url:

:GoGet github.com/gorilla/mux
  1. 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
  1. Generate tests with gotests

Generate one test for spesific function/method:

:GoTestAdd

Generate all tests for all functions/methods in current file:

:GoTestsAll

Generate tests only for exported functions/methods in current file:

:GoTestsExp
  1. Run go generate command;
" Run `go generate` in cwd path
:GoGenerate

" Run `go generate` for current file
:GoGenerate %
  1. Generate doc comment

First set a cursor on public package/function/interface/struct and execure:

:GoCmt

Thanks:#