diff --git a/README.md b/README.md index c8366e8..62adecc 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ Requirements: vim.cmd.GoInstallDeps() end, ---@type gopher.Config - opts = {}, + opts = {}, -- required } ``` diff --git a/lua/gopher/commands.lua b/lua/gopher/commands.lua new file mode 100644 index 0000000..63e9f3d --- /dev/null +++ b/lua/gopher/commands.lua @@ -0,0 +1,82 @@ +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 diff --git a/lua/gopher/config.lua b/lua/gopher/config.lua index 6737054..b954d1b 100644 --- a/lua/gopher/config.lua +++ b/lua/gopher/config.lua @@ -114,6 +114,10 @@ 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 diff --git a/plugin/gopher.lua b/plugin/gopher.lua deleted file mode 100644 index 1e9eb99..0000000 --- a/plugin/gopher.lua +++ /dev/null @@ -1,74 +0,0 @@ ---- NOTE: runs in defer since this file before gopher.config ---- I'm not sure if this is the best to do this -vim.schedule(function() - if require("gopher.config").should_setup_commands() then - vim.api.nvim_create_user_command("GopherLog", function() - vim.cmd("tabnew " .. require("gopher._utils.log").get_outfile()) - end, { nargs = 0 }) - - vim.api.nvim_create_user_command("GoIfErr", function() - require("gopher").iferr() - end, { nargs = 0 }) - - vim.api.nvim_create_user_command("GoCmt", function() - require("gopher").comment() - end, { nargs = 0 }) - - vim.api.nvim_create_user_command("GoImpl", function(args) - require("gopher").impl(unpack(args.fargs)) - end, { nargs = "*" }) - - -- :GoInstall - vim.api.nvim_create_user_command("GoInstallDeps", function() - require("gopher").install_deps() - end, { nargs = 0 }) - - vim.api.nvim_create_user_command("GoInstallDepsSync", function() - require("gopher").install_deps { sync = true } - end, { nargs = 0 }) - - --- :GoTag - vim.api.nvim_create_user_command("GoTagAdd", function(opts) - require("gopher").tags.add(unpack(opts.fargs)) - end, { nargs = "*" }) - - vim.api.nvim_create_user_command("GoTagRm", function(opts) - require("gopher").tags.rm(unpack(opts.fargs)) - end, { nargs = "*" }) - - vim.api.nvim_create_user_command("GoTagClear", function() - require("gopher").tags.clear() - end, { nargs = 0 }) - - --- :GoTest - vim.api.nvim_create_user_command("GoTestAdd", function() - require("gopher").test.add() - end, { nargs = 0 }) - - vim.api.nvim_create_user_command("GoTestsAll", function() - require("gopher").test.all() - end, { nargs = 0 }) - - vim.api.nvim_create_user_command("GoTestsExp", function() - require("gopher").test.exported() - end, { nargs = 0 }) - - -- :Go - vim.api.nvim_create_user_command("GoMod", function(opts) - require("gopher").mod(opts.fargs) - end, { nargs = "*" }) - - vim.api.nvim_create_user_command("GoGet", function(opts) - vim.print(opts) - require("gopher").get(opts.fargs) - end, { nargs = "*" }) - - vim.api.nvim_create_user_command("GoWork", function(opts) - require("gopher").get(opts.fargs) - end, { nargs = "*" }) - - vim.api.nvim_create_user_command("GoGenerate", function(opts) - require("gopher").generate(opts.fargs or "") - end, { nargs = "?" }) - end -end)