refactor/comamnds dont require .setup (#101)

* refactor(commands)!: change the way of disabling commands

BREAKING CHANGE: not it does not require calling .setup()

* docs: update docs
This commit is contained in:
Smirnov Oleksandr 2025-03-22 17:06:57 +02:00 committed by Oleksandr Smirnov
parent ab68a58b34
commit 7ebe190c96
No known key found for this signature in database
6 changed files with 101 additions and 103 deletions

View file

@ -1,82 +0,0 @@
local commands = {}
---@param name string
---@param fn fun(args: table)
---@param nargs? number|"*"|"?"
local function cmd(name, fn, nargs)
nargs = nargs or 0
vim.api.nvim_create_user_command(name, fn, { nargs = nargs })
end
function commands.register()
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(unpack(opts.fargs))
end, "*")
cmd("GoTagRm", function(opts)
require("gopher").tags.rm(unpack(opts.fargs))
end, "*")
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, "?")
end
return commands

View file

@ -37,10 +37,6 @@ local default_config = {
---@type number
timeout = 2000,
--- whether to setup plugin commands or not
---@type boolean
setup_commands = true,
-- user specified paths to binaries
---@class gopher.ConfigCommand
commands = {
@ -97,7 +93,6 @@ function config.setup(user_config)
vim.validate {
log_level = { _config.log_level, "number" },
timeout = { _config.timeout, "number" },
setup_commands = { _config.setup_commands, "boolean" },
["commands"] = { _config.commands, "table" },
["commands.go"] = { _config.commands.go, "string" },
["commands.gomodifytags"] = { _config.commands.gomodifytags, "string" },
@ -114,16 +109,6 @@ function config.setup(user_config)
["iferr"] = { _config.iferr, "table" },
["iferr.message"] = { _config.iferr.message, "string", true },
}
if _config.setup_commands then
require("gopher.commands").register()
end
end
---@return boolean
---@private
function config.should_setup_commands()
return config.setup_commands
end
setmetatable(config, {

View file

@ -35,7 +35,8 @@ end
---@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.
--- 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