vim.bo.commentstring = "// %s" local insert_include_guards = function(bufnr) bufnr = bufnr or 0 -- foo.h -> FOO_H_ local guard = string.gsub(string.upper(vim.fn.expand("%:t")), "%.", "_") .. "_" vim.api.nvim_buf_set_lines(bufnr, 0, 0, true, { string.format("#ifndef %s", guard), string.format("#define %s", guard), "", }) local last_lineno = vim.api.nvim_buf_line_count(bufnr) vim.api.nvim_buf_set_lines(bufnr, last_lineno, last_lineno, true, { "", string.format("#endif // %s", guard), }) end vim.keymap.set( "n", "ig", insert_include_guards, { desc = "Add include guards", buffer = true, silent = true } )