From fad688fc15a42d9684f669ea197d1d87292c5ad8 Mon Sep 17 00:00:00 2001 From: "Kenneth Benzie (Benie)" Date: Wed, 23 Jul 2025 14:15:39 +0100 Subject: [PATCH] Improve #include snippet for c/c++ --- snippets/c.lua | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/snippets/c.lua b/snippets/c.lua index 1e7e907..a8d1e6a 100644 --- a/snippets/c.lua +++ b/snippets/c.lua @@ -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