9 files changed,
108 insertions(+),
50 deletions(-)
Author:
Smirnov Oleksandr
ss2316544@gmail.com
Committed by:
GitHub
noreply@github.com
Committed at:
2025-03-21 21:44:42 +0200
Parent:
c5cc508
M
CONTRIBUTING.md
@@ -22,9 +22,8 @@ ```
For formatting use this following commands, or setup your editor to integrate with selene/stylua: ```bash -task format -task format:check # will check if your code formatted -task lint +task stylua +task lint # lintering and format chewing ``` ### Documentation@@ -43,8 +42,8 @@ We use [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/), please follow it.
### Testing -For testing this plugins uses [plenary.nvim](https://github.com/nvim-lua/plenary.nvim). -All tests live in [/spec](https://github.com/olexsmir/gopher.nvim/tree/main/spec) dir. +For testing this plugins uses [mini.test](https://github.com/echasnovski/mini.nvim/blob/main/readmes/mini-test.md). +All tests live in [/spec](./spec) dir. You can run tests with: ```bash
M
Taskfile.yml
@@ -1,25 +1,15 @@
version: "3" tasks: - format: - desc: formats all lua files in repo - cmds: - - stylua . - lint: desc: runs all linters cmds: - task: selene - - task: stylua:check + - stylua --check . selene: desc: runs lua linter(selene) cmds: - selene . - - stylua:check: - desc: runs stylua in check mode - cmds: - - stylua --check . stylua: desc: runs lua formatter
M
doc/gopher.nvim.txt
@@ -61,6 +61,10 @@ -- timeout for running commands
---@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 = {
M
lua/gopher/_utils/runner/gocmd.lua
@@ -25,9 +25,9 @@ end
---@param subcmd string ---@param args string[] ----@return string[]|nil +---@return string function gocmd.run(subcmd, args) - if #args == 0 then + if #args == 0 and subcmd ~= "generate" then error "please provide any arguments" end@@ -39,15 +39,13 @@ if subcmd == "generate" then
args = if_generate(args) end - return r.sync(c.go, { - args = { subcmd, unpack(args) }, - on_exit = function(data, status) - if status ~= 0 then - error("gocmd failed: " .. data) - end - u.notify(c.go .. " " .. subcmd .. " ran successful") - end, - }) + local rs = r.sync { c.go, subcmd, unpack(args) } + if rs.code ~= 0 then + error("go " .. subcmd .. " failed: " .. rs.stderr) + end + + u.notify(c.go .. " " .. subcmd .. " ran successful") + return rs.stdout end return gocmd
M
lua/gopher/config.lua
@@ -37,6 +37,10 @@ -- timeout for running commands
---@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 = {@@ -90,10 +94,18 @@ function config.setup(user_config)
_config = vim.tbl_deep_extend("force", default_config, user_config or {}) end +---@return boolean +---@private +function config.should_setup_commands() + return config.setup_commands +end + setmetatable(config, { __index = function(_, key) return _config[key] end, }) +---@return gopher.Config +---@private return config
M
lua/gopher/init.lua
@@ -55,19 +55,19 @@ all = tests.all_tests,
} gopher.get = function(...) - gocmd("get", { ... }) + gocmd("get", ...) end gopher.mod = function(...) - gocmd("mod", { ... }) + gocmd("mod", ...) end gopher.generate = function(...) - gocmd("generate", { ... }) + gocmd("generate", ...) end gopher.work = function(...) - gocmd("work", { ... }) + gocmd("work", ...) end return gopher
A
plugin/gopher.lua
@@ -0,0 +1,74 @@
+--- 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)
D
@@ -1,16 +0,0 @@
-command! -nargs=* GoTagAdd :lua require"gopher".tags.add(<f-args>) -command! -nargs=* GoTagRm :lua require"gopher".tags.rm(<f-args>) -command! GoTagClear :lua require"gopher".tags.clear() -command! GoTestAdd :lua require"gopher".test.add() -command! GoTestsAll :lua require"gopher".test.all() -command! GoTestsExp :lua require"gopher".test.exported() -command! -nargs=* GoMod :lua require"gopher".mod(<f-args>) -command! -nargs=* GoGet :lua require"gopher".get(<f-args>) -command! -nargs=* GoWork :lua require"gopher".work(<f-args>) -command! -nargs=* GoImpl :lua require"gopher".impl(<f-args>) -command! -nargs=* GoGenerate :lua require"gopher".generate(<f-args>) -command! GoCmt :lua require"gopher".comment() -command! GoIfErr :lua require"gopher".iferr() -command! GoInstallDeps :lua require"gopher".install_deps() -command! GoInstallDepsSync :lua require"gopher".install_deps({ sync = true }) -command! GopherLog :lua vim.cmd("tabnew " .. require("gopher._utils.log").get_outfile())