[mirror] Make your go dev experience better github.com/olexsmir/gopher.nvim
neovim golang
1---@toc_entry Generate comments 2---@tag gopher.nvim-comments 3---@text 4--- This module provides a way to generate comments for Go code. 5--- 6---@usage Set cursor on line with function/method/struct/etc and run `:GoCmt` to generate a comment. 7 8local ts = require "gopher._utils.ts" 9local log = require "gopher._utils.log" 10local comment = {} 11 12---@param name string 13---@return string 14---@dochide 15local function template(name) 16 return "// " .. name .. " " 17end 18 19---@param bufnr integer 20---@return string 21---@dochide 22local function generate(bufnr) 23 local s_ok, s_res = pcall(ts.get_struct_under_cursor, bufnr) 24 if s_ok then 25 return template(s_res.name) 26 end 27 28 local f_ok, f_res = pcall(ts.get_func_under_cursor, bufnr) 29 if f_ok then 30 return template(f_res.name) 31 end 32 33 local i_ok, i_res = pcall(ts.get_interface_under_cursor, bufnr) 34 if i_ok then 35 return template(i_res.name) 36 end 37 38 local p_ok, p_res = pcall(ts.get_package_under_cursor, bufnr) 39 if p_ok then 40 return "// Package " .. p_res.name .. " provides " 41 end 42 43 return "// " 44end 45 46function comment.comment() 47 local bufnr = vim.api.nvim_get_current_buf() 48 local cmt = generate(bufnr) 49 log.debug("generated comment: " .. cmt) 50 51 local pos = vim.fn.getcurpos()[2] 52 vim.fn.append(pos - 1, cmt) 53 vim.fn.setpos(".", { 0, pos, #cmt }) 54 vim.cmd "startinsert!" 55end 56 57return comment