33 lines
822 B
Lua
33 lines
822 B
Lua
|
|
vim.api.nvim_create_user_command("AddIncludeGuard", function(data)
|
|
local bufnr = vim.api.nvim_get_current_buf()
|
|
local name_pattern = data.fargs[1] or "%s_"
|
|
|
|
local function formatName(filename)
|
|
local parts = vim.split(filename, "[/\\]", {trimempty=true})
|
|
local last_part = parts[#parts]
|
|
local ext = last_part:match("%.([^%.]+)$")
|
|
local name = last_part:gsub("%.[^%.]+$", "")
|
|
|
|
if ext == "h" or ext == "hpp" then
|
|
name = name.."_H"
|
|
end
|
|
|
|
return name_pattern:format(name:upper())
|
|
end
|
|
|
|
local buf_filename = vim.api.nvim_buf_get_name(bufnr)
|
|
local guard_name = formatName(buf_filename)
|
|
|
|
vim.api.nvim_buf_set_lines(bufnr, 0, 0, false, {
|
|
"#ifndef "..guard_name,
|
|
"#define "..guard_name,
|
|
""
|
|
})
|
|
|
|
vim.api.nvim_buf_set_lines(bufnr, -1, -1, false, {
|
|
"",
|
|
"#endif //"..guard_name
|
|
})
|
|
end, { nargs="?" })
|