40 lines
1.0 KiB
Lua
40 lines
1.0 KiB
Lua
local M = {}
|
|
|
|
function M.load()
|
|
-- TODO: Make it work with buffer which don't have a filename yet
|
|
|
|
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 = '?' })
|
|
end
|
|
|
|
return M
|