* chore: remove unused rules from nvim selene setup * test: add test for config * chore: update tasks, run tests on all recent versions * refactor(test): make helper test function more ergonomic In my opinion, requiring user to access tests via `T["module_name"]` was too fragile and typos prone. * fix(config): typo annotations * chore(ci): install go bins via gopher.nvim itself * feat(struct_tags): add range support (#117) * feat(struct_tags): add range support * refactor: use `start`, and `end_` naming for ranges * fix(testutils): validate provided cursor position * chore: update CONTRIBUTING.md * chore: add demos (#118) * chore: add dataset for demos * chore(demos): add demos * chore: update CONTRIBUTING * this copefully will fix comments gif * chore: add note about lazy loading * chore(readme): at this point there is no code from go.nvim or iferr * chore(readme): update the structure * chore(readme): change wording of some things
102 lines
2 KiB
Lua
102 lines
2 KiB
Lua
---@toc_entry Commands
|
|
---@tag gopher.nvim-commands
|
|
---@text
|
|
--- If don't want to automatically register plugins' commands,
|
|
--- you can set `vim.g.gopher_register_commands` to `false`, before loading the plugin.
|
|
|
|
if vim.g.gopher_register_commands == false then
|
|
return
|
|
end
|
|
|
|
---@param name string
|
|
---@param fn fun(args: table)
|
|
---@param nargs? number|"*"|"?"
|
|
---@param range? boolean
|
|
---@private
|
|
local function cmd(name, fn, nargs, range)
|
|
vim.api.nvim_create_user_command(name, fn, {
|
|
nargs = nargs or 0,
|
|
range = range or false,
|
|
})
|
|
end
|
|
|
|
cmd("GopherLog", function()
|
|
vim.cmd("tabnew " .. require("gopher._utils.log").get_outfile())
|
|
end)
|
|
|
|
cmd("GoIfErr", function()
|
|
require("gopher").iferr()
|
|
end)
|
|
|
|
cmd("GoCmt", function()
|
|
require("gopher").comment()
|
|
end)
|
|
|
|
cmd("GoImpl", function(args)
|
|
require("gopher").impl(unpack(args.fargs))
|
|
end, "*")
|
|
|
|
-- :GoInstall
|
|
cmd("GoInstallDeps", function()
|
|
require("gopher").install_deps()
|
|
end)
|
|
|
|
cmd("GoInstallDepsSync", function()
|
|
require("gopher").install_deps { sync = true }
|
|
end)
|
|
|
|
-- :GoTag
|
|
cmd("GoTagAdd", function(opts)
|
|
require("gopher").tags.add {
|
|
tags = opts.fargs,
|
|
range = (opts.count ~= -1) and {
|
|
start = opts.line1,
|
|
end_ = opts.line2,
|
|
} or nil,
|
|
}
|
|
end, "*", true)
|
|
|
|
cmd("GoTagRm", function(opts)
|
|
require("gopher").tags.rm {
|
|
tags = opts.fargs,
|
|
range = (opts.count ~= -1) and {
|
|
start = opts.line1,
|
|
end_ = opts.line2,
|
|
} or nil,
|
|
}
|
|
end, "*", true)
|
|
|
|
cmd("GoTagClear", function()
|
|
require("gopher").tags.clear()
|
|
end)
|
|
|
|
-- :GoTest
|
|
cmd("GoTestAdd", function()
|
|
require("gopher").test.add()
|
|
end)
|
|
|
|
cmd("GoTestsAll", function()
|
|
require("gopher").test.all()
|
|
end)
|
|
|
|
cmd("GoTestsExp", function()
|
|
require("gopher").test.exported()
|
|
end)
|
|
|
|
-- :Go
|
|
cmd("GoMod", function(opts)
|
|
require("gopher").mod(opts.fargs)
|
|
end, "*")
|
|
|
|
cmd("GoGet", function(opts)
|
|
vim.print(opts)
|
|
require("gopher").get(opts.fargs)
|
|
end, "*")
|
|
|
|
cmd("GoWork", function(opts)
|
|
require("gopher").get(opts.fargs)
|
|
end, "*")
|
|
|
|
cmd("GoGenerate", function(opts)
|
|
require("gopher").generate(opts.fargs or "")
|
|
end, "?")
|