all repos

gopher.nvim @ a993ece59fcac975f811363dc22ec46e76401415

Minimalistic plugin for Go development

gopher.nvim/lua/gopher/init.lua(view raw)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
--- *gopher.nvim*
---
--- ==============================================================================
---
--- gopher.nvim is a 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.

--- Table of Contents
---@tag gopher.nvim-table-of-contents
---@toc

local log = require "gopher._utils.log"
local tags = require "gopher.struct_tags"
local tests = require "gopher.gotests"
local gocmd = require("gopher._utils.gocmd").run
local gopher = {}

---@toc_entry Setup
---@tag gopher.nvim-setup
---@text Setup function. This method simply merges default config with opts table.
--- You can read more about configuration at |gopher.nvim-config|
--- Calling this function is optional, if you ok with default settings.
--- See |gopher.nvim.config-defaults|
---
---@usage `require("gopher").setup {}` (replace `{}` with your `config` table)
---@param user_config gopher.Config
gopher.setup = function(user_config)
  log.debug "setting up config"
  require("gopher.config").setup(user_config)
  log.debug(vim.inspect(user_config))
end

---@toc_entry Install dependencies
---@tag gopher.nvim-install-deps
---@text Gopher.nvim implements most of its features using third-party tools.
--- To install these tools, you can run `:GoInstallDeps` command
--- or call `require("gopher").install_deps()` if you want to use lua api.
--- By default dependencies will be installed asynchronously, to install them synchronously pass `{sync = true}` as an argument.
gopher.install_deps = require("gopher.installer").install_deps

gopher.impl = require("gopher.impl").impl
gopher.iferr = require("gopher.iferr").iferr
gopher.comment = require("gopher.comment").comment

gopher.tags = {
  add = tags.add,
  rm = tags.remove,
  clear = tags.clear,
}

gopher.test = {
  add = tests.func_test,
  exported = tests.all_exported_tests,
  all = tests.all_tests,
}

gopher.get = function(...)
  gocmd("get", ...)
end

gopher.mod = function(...)
  gocmd("mod", ...)
end

gopher.generate = function(...)
  gocmd("generate", ...)
end

gopher.work = function(...)
  gocmd("work", ...)
end

return gopher