all repos

gopher.nvim @ 9db5931af1293ae52500921d92c02145d86df02c

Minimalistic plugin for Go development
2 files changed, 10 insertions(+), 2 deletions(-)
fix(impl): not error if no args provided (#110)

* fix(impl): handle case with no arguments provided

* fix(config): validate missing field
Author: Smirnov Oleksandr ss2316544@gmail.com
Committed by: GitHub noreply@github.com
Committed at: 2025-04-03 16:52:38 +0300
Parent: 9d28cde
M lua/gopher/config.lua

@@ -84,6 +84,7 @@

vim.validate { log_level = { _config.log_level, "number" }, timeout = { _config.timeout, "number" }, + installer_timeout = { _config.installer_timeout, "number" }, ["commands"] = { _config.commands, "table" }, ["commands.go"] = { _config.commands.go, "string" }, ["commands.gomodifytags"] = { _config.commands.gomodifytags, "string" },
M lua/gopher/impl.lua

@@ -44,7 +44,10 @@ local args = { ... }

local iface, recv = "", "" local bufnr = vim.api.nvim_get_current_buf() - if #args == 1 then -- :GoImpl io.Reader + if #args == 0 then + u.notify("arguments not provided. usage: :GoImpl f *File io.Reader", vim.log.levels.ERROR) + return + elseif #args == 1 then -- :GoImpl io.Reader local st = ts_utils.get_struct_under_cursor(bufnr) iface = args[1] recv = string.lower(st.name) .. " *" .. st.name

@@ -57,7 +60,11 @@ recv = args[1] .. " *" .. args[2]

iface = args[3] end - local rs = r.sync { c.impl, "-dir", vim.fn.fnameescape(vim.fn.expand "%:p:h"), recv, iface } + assert(iface ~= "", "interface not provided") + assert(recv ~= "", "receiver not provided") + + local dir = vim.fn.fnameescape(vim.fn.expand "%:p:h") + local rs = r.sync { c.impl, "-dir", dir, recv, iface } if rs.code ~= 0 then error("failed to implement interface: " .. rs.stderr) end