aboutsummaryrefslogtreecommitdiff
path: root/common/nvim/snippets/boilerplate.lua
diff options
context:
space:
mode:
authorsrdusr <trevorgray@srdusr.com>2025-09-24 02:55:49 +0200
committersrdusr <trevorgray@srdusr.com>2025-09-24 02:55:49 +0200
commit3cf613ec7c90ab4933728b0f19e49b0c955c17bb (patch)
tree765e58766936b5228ad473ad77dfbf4353f173e9 /common/nvim/snippets/boilerplate.lua
parentef51a60993197ed3bbd1003522f98f0a898d34c6 (diff)
parent966d12ac730c83da90d60ab24eae539b2ea69441 (diff)
downloaddotfiles-3cf613ec7c90ab4933728b0f19e49b0c955c17bb.tar.gz
dotfiles-3cf613ec7c90ab4933728b0f19e49b0c955c17bb.zip
Add 'common/nvim/' from commit '966d12ac730c83da90d60ab24eae539b2ea69441'
git-subtree-dir: common/nvim git-subtree-mainline: ef51a60993197ed3bbd1003522f98f0a898d34c6 git-subtree-split: 966d12ac730c83da90d60ab24eae539b2ea69441
Diffstat (limited to 'common/nvim/snippets/boilerplate.lua')
-rw-r--r--common/nvim/snippets/boilerplate.lua75
1 files changed, 75 insertions, 0 deletions
diff --git a/common/nvim/snippets/boilerplate.lua b/common/nvim/snippets/boilerplate.lua
new file mode 100644
index 0000000..04e973a
--- /dev/null
+++ b/common/nvim/snippets/boilerplate.lua
@@ -0,0 +1,75 @@
+local ls = require("luasnip") --{{{
+local s = ls.s
+local i = ls.i
+local t = ls.t
+
+local d = ls.dynamic_node
+local c = ls.choice_node
+local f = ls.function_node
+local sn = ls.snippet_node
+
+local fmt = require("luasnip.extras.fmt").fmt
+local rep = require("luasnip.extras").rep
+
+local snippets, autosnippets = {}, {} --}}}
+
+local group = vim.api.nvim_create_augroup("Lua Snippets", { clear = true })
+local file_pattern = "*.lua"
+
+local function cs(trigger, nodes, opts) --{{{
+ local snippet = s(trigger, nodes)
+ local target_table = snippets
+
+ local pattern = file_pattern
+ local keymaps = {}
+
+ if opts ~= nil then
+ -- check for custom pattern
+ if opts.pattern then
+ pattern = opts.pattern
+ end
+
+ -- if opts is a string
+ if type(opts) == "string" then
+ if opts == "auto" then
+ target_table = autosnippets
+ else
+ table.insert(keymaps, { "i", opts })
+ end
+ end
+
+ -- if opts is a table
+ if opts ~= nil and type(opts) == "table" then
+ for _, keymap in ipairs(opts) do
+ if type(keymap) == "string" then
+ table.insert(keymaps, { "i", keymap })
+ else
+ table.insert(keymaps, keymap)
+ end
+ end
+ end
+
+ -- set autocmd for each keymap
+ if opts ~= "auto" then
+ for _, keymap in ipairs(keymaps) do
+ vim.api.nvim_create_autocmd("BufEnter", {
+ pattern = pattern,
+ group = group,
+ callback = function()
+ vim.keymap.set(keymap[1], keymap[2], function()
+ ls.snip_expand(snippet)
+ end, { noremap = true, silent = true, buffer = true })
+ end,
+ })
+ end
+ end
+ end
+
+ table.insert(target_table, snippet) -- insert snippet into appropriate table
+end --}}}
+
+-- Start Refactoring --
+
+-- End Refactoring --
+
+return snippets, autosnippets