diff --git a/lua/gopher/_utils/ts/init.lua b/lua/gopher/_utils/ts/init.lua index 6bcf8fc..a6f306b 100644 --- a/lua/gopher/_utils/ts/init.lua +++ b/lua/gopher/_utils/ts/init.lua @@ -24,13 +24,17 @@ end ---@param row string ---@param col string ---@param bufnr string|nil +---@param do_notify boolean|nil ---@return table|nil -function M.get_struct_node_at_pos(row, col, bufnr) +function M.get_struct_node_at_pos(row, col, bufnr, do_notify) + local notify = do_notify or true local query = M.querys.struct_block .. " " .. M.querys.em_struct_block local bufn = bufnr or vim.api.nvim_get_current_buf() local ns = nodes.nodes_at_cursor(query, get_name_defaults(), bufn, row, col) if ns == nil then - u.notify("struct not found", "warn") + if notify then + u.notify("struct not found", "warn") + end else return ns[#ns] end @@ -39,13 +43,17 @@ end ---@param row string ---@param col string ---@param bufnr string|nil +---@param do_notify boolean|nil ---@return table|nil -function M.get_func_method_node_at_pos(row, col, bufnr) +function M.get_func_method_node_at_pos(row, col, bufnr, do_notify) + local notify = do_notify or true local query = M.querys.func .. " " .. M.querys.method_name local bufn = bufnr or vim.api.nvim_get_current_buf() local ns = nodes.nodes_at_cursor(query, get_name_defaults(), bufn, row, col) if ns == nil then - u.notify("function not found", "warn") + if notify then + u.notify("function not found", "warn") + end else return ns[#ns] end @@ -54,16 +62,20 @@ end ---@param row string ---@param col string ---@param bufnr string|nil +---@param do_notify boolean|nil ---@return table|nil -function M.get_package_node_at_pos(row, col, bufnr) +function M.get_package_node_at_pos(row, col, bufnr, do_notify) + local notify = do_notify or true -- stylua: ignore if row > 10 then return end local query = M.querys.package local bufn = bufnr or vim.api.nvim_get_current_buf() local ns = nodes.nodes_at_cursor(query, get_name_defaults(), bufn, row, col) if ns == nil then - u.notify("package not found", "warn") - return nil + if notify then + u.notify("package not found", "warn") + return nil + end else return ns[#ns] end @@ -72,13 +84,17 @@ end ---@param row string ---@param col string ---@param bufnr string|nil +---@param do_notify boolean|nil ---@return table|nil -function M.get_interface_node_at_pos(row, col, bufnr) +function M.get_interface_node_at_pos(row, col, bufnr, do_notify) + local notify = do_notify or true local query = M.querys.interface local bufn = bufnr or vim.api.nvim_get_current_buf() local ns = nodes.nodes_at_cursor(query, get_name_defaults(), bufn, row, col) if ns == nil then - u.notify("interface not found", "warn") + if notify then + u.notify("interface not found", "warn") + end else return ns[#ns] end diff --git a/lua/gopher/comment.lua b/lua/gopher/comment.lua index 6810678..41e3f75 100644 --- a/lua/gopher/comment.lua +++ b/lua/gopher/comment.lua @@ -3,25 +3,25 @@ local ts_utils = require "gopher._utils.ts" local function generate(row, col) local comment, ns = nil, nil - ns = ts_utils.get_package_node_at_pos(row, col) + ns = ts_utils.get_package_node_at_pos(row, col, nil, false) if ns ~= nil then comment = "// Package " .. ns.name .. " provides " .. ns.name return comment, ns end - ns = ts_utils.get_struct_node_at_pos(row, col) + ns = ts_utils.get_struct_node_at_pos(row, col, nil, false) if ns ~= nil then comment = "// " .. ns.name .. " " .. ns.type .. " " return comment, ns end - ns = ts_utils.get_func_method_node_at_pos(row, col) + ns = ts_utils.get_func_method_node_at_pos(row, col, nil, false) if ns ~= nil then comment = "// " .. ns.name .. " " .. ns.type .. " " return comment, ns end - ns = ts_utils.get_interface_node_at_pos(row, col) + ns = ts_utils.get_interface_node_at_pos(row, col, nil, false) if ns ~= nil then comment = "// " .. ns.name .. " " .. ns.type .. " " return comment, ns @@ -39,6 +39,7 @@ return function() ns.dim.s.c, }) + ---@diagnostic disable-next-line: param-type-mismatch vim.fn.append(row - 1, comment) vim.api.nvim_win_set_cursor(0, {