1
0
neovim-config/lua/personal/add-include-guard/init.lua
2024-12-19 15:51:41 +02:00

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