Improve #include snippet for c/c++

This commit is contained in:
Kenneth Benzie 2025-07-23 14:15:39 +01:00
parent 0471dd67c4
commit fad688fc15

View File

@ -1,10 +1,13 @@
# C LuaSnip Snippets
-- C LuaSnip Snippets
local luasnip = require('luasnip')
local snip = luasnip.snippet
local snippet = luasnip.snippet
local text = luasnip.text_node
local insert = luasnip.insert_node
local func = luasnip.function_node
local choice = luasnip.choice_node
local restore = luasnip.restore_node
local snip = luasnip.snippet_node
local key = require("luasnip.nodes.key_indexer").new_key
local function getIncludeGuardName()
@ -13,20 +16,16 @@ local function getIncludeGuardName()
end
local snippets = {
snip('#include', {
text('#include '),
insert(1, '<', { key = 'open' }),
insert(2, 'header'),
func(function(args)
if args[1][1] == '<' then
return '>'
else
return '"'
end
end, key('open')),
}),
snip('once', {
snippet('#include', {
text('#include '),
choice(1, {
snip(nil, { text('<'), restore(1, 'header'), text('>') }),
snip(nil, { text('"'), restore(1, 'header'), text('"') }),
}),
}, { stored = { ['header'] = insert(1, 'header') } }),
snippet('once', {
text('#ifndef '),
func(function(args)
return args[1][1]
@ -34,7 +33,7 @@ local snippets = {
text({ '', '#define ' }),
insert(1, getIncludeGuardName(), { key = 'name' }),
-- FIXME: dynamic(1, function(_, _)
-- return snip({}, {
-- return snip(nil, {
-- insert(1, getIncludeGuardName())
-- })
-- end, { key = "name" }),
@ -45,6 +44,7 @@ local snippets = {
return args[1][1]
end, key('name')),
}),
}
return snippets