local augroup = vim.api.nvim_create_augroup local autocmd = vim.api.nvim_create_autocmd augroup("go_fmt", { clear = true }) autocmd("FileType", { group = "go_fmt", pattern = "go", callback = function() vim.api.nvim_buf_set_keymap( 0, "n", "F", ":lua FormatGoCurrentLine()", { noremap = true, silent = true } ) end, }) function FormatGoCurrentLine() local line = vim.api.nvim_get_current_line() local formatted_line = line:gsub("%(", "(\n"):gsub(",%s*", ",\n"):gsub("%)", ",\n)") formatted_line = formatted_line:gsub(",\n%)", "\n)") local lines = vim.split(formatted_line, "\n") -- Ensure the last parameter has a comma if #lines > 2 and not lines[#lines - 1]:match(",$") then lines[#lines - 1] = lines[#lines - 1] .. "," end vim.api.nvim_buf_set_lines( 0, vim.fn.line(".") - 1, vim.fn.line("."), false, lines ) end