aboutsummaryrefslogtreecommitdiff
path: root/.config/nvim/snippets/lua.lua
diff options
context:
space:
mode:
authorsrdusr <trevorgray@srdusr.com>2023-02-10 11:22:07 +0200
committersrdusr <trevorgray@srdusr.com>2023-02-10 11:22:07 +0200
commit7cee6e5a673defef72c803eca094d1247c31bb9c (patch)
tree1dbc97c5ece5f574ef5091d549fb434a8b59a625 /.config/nvim/snippets/lua.lua
parentb91ee8da3ef2c1c154833b4b6e99250fe2c280e7 (diff)
parentf76f2c4bbc1ddde4b5c0882863060e4c58a11733 (diff)
downloaddotfiles-7cee6e5a673defef72c803eca094d1247c31bb9c.tar.gz
dotfiles-7cee6e5a673defef72c803eca094d1247c31bb9c.zip
Add '.config/nvim/' from commit 'e707f3abc83e0621eab64b4828defd0c80dff5c0'
git-subtree-dir: .config/nvim git-subtree-mainline: bb29321714929e1b7b962dd47b486325fd77e67a git-subtree-split: e707f3abc83e0621eab64b4828defd0c80dff5c0
Diffstat (limited to '.config/nvim/snippets/lua.lua')
-rw-r--r--.config/nvim/snippets/lua.lua264
1 files changed, 264 insertions, 0 deletions
diff --git a/.config/nvim/snippets/lua.lua b/.config/nvim/snippets/lua.lua
new file mode 100644
index 0000000..523d2f4
--- /dev/null
+++ b/.config/nvim/snippets/lua.lua
@@ -0,0 +1,264 @@
+
+local ls = require("luasnip") --{{{
+local s = ls.s --> snippet
+local i = ls.i --> insert node
+local t = ls.t --> text node
+
+local d = ls.dynamic_node
+local c = ls.choice_node --> takes in a pos as first arg and a table of nodes
+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 --
+
+cs("CMD", { -- [CMD] multiline vim.cmd{{{
+ t({ "vim.cmd[[", " " }),
+ i(1, ""),
+ t({ "", "]]" }),
+}) --}}}
+cs("cmd", fmt("vim.cmd[[{}]]", { i(1, "") })) -- single line vim.cmd
+cs({ -- github import for packer{{{
+ trig = "https://github%.com/([%w-%._]+)/([%w-%._]+)!",
+ regTrig = true,
+ hidden = true,
+}, {
+ t([[use "]]),
+ f(function(_, snip)
+ return snip.captures[1]
+ end),
+ t("/"),
+ f(function(_, snip)
+ return snip.captures[2]
+ end),
+ t({ [["]], "" }),
+ i(1, ""),
+}, "auto") --}}}
+
+cs( -- {regexSnippet} LuaSnippet{{{
+ "regexSnippet",
+ fmt(
+ [=[
+cs( -- {}
+{{ trig = "{}", regTrig = true, hidden = true }}, fmt([[
+{}
+]], {{
+ {}
+}}))
+ ]=],
+ {
+ i(1, "Description"),
+ i(2, ""),
+ i(3, ""),
+ i(4, ""),
+ }
+ ),
+ { pattern = "*/snippets/*.lua", "<C-d>" }
+) --}}}
+cs( -- [luaSnippet] LuaSnippet{{{
+ "luaSnippet",
+ fmt(
+ [=[
+cs("{}", fmt( -- {}
+[[
+{}
+]], {{
+ {}
+ }}){})
+ ]=],
+ {
+ i(1, ""),
+ i(2, "Description"),
+ i(3, ""),
+ i(4, ""),
+ c(5, {
+ t(""),
+ fmt([[, "{}"]], { i(1, "keymap") }),
+ fmt([[, {{ pattern = "{}", {} }}]], { i(1, "*/snippets/*.lua"), i(2, "keymap") }),
+ }),
+ }
+ ),
+ { pattern = "*/snippets/*.lua", "jcs" }
+) --}}}
+
+cs( -- choice_node_snippet luaSnip choice node{{{
+ "choice_node_snippet",
+ fmt(
+ [[
+c({}, {{ {} }}),
+]],
+ {
+ i(1, ""),
+ i(2, ""),
+ }
+ ),
+ { pattern = "*/snippets/*.lua", "jcn" }
+) --}}}
+
+cs( -- [function] Lua function snippet{{{
+ "function",
+ fmt(
+ [[
+function {}({})
+ {}
+end
+]],
+ {
+ i(1, ""),
+ i(2, ""),
+ i(3, ""),
+ }
+ ),
+ "jff"
+) --}}}
+cs( -- [local_function] Lua function snippet{{{
+ "local_function",
+ fmt(
+ [[
+local function {}({})
+ {}
+end
+]],
+ {
+ i(1, ""),
+ i(2, ""),
+ i(3, ""),
+ }
+ ),
+ "jlf"
+) --}}}
+cs( -- [local] Lua local variable snippet{{{
+ "local",
+ fmt(
+ [[
+local {} = {}
+ ]],
+ { i(1, ""), i(2, "") }
+ ),
+ "jk"
+) --}}}
+-- Tutorial Snippets go here --
+local myFirstSnippet = s("myFirstSnippet", {
+ t("Hi! This is my first snippet in Luasnip "),
+ i(1, "placeholder"),
+ t({"", "this is another text node", ""}),
+ i(2, "put here"),
+})
+table.insert(snippets, myFirstSnippet)
+
+
+
+local mySecondSnippet = s(
+ "mySecondSnippet",
+ fmt(
+ [[
+ local {} = function({})
+ {} {{ im in a curly braces }}
+ end {}
+ ]],
+ {
+ i(1, "myVar"),
+ c(2, { t(""), i(1, "myArg") }),
+ i(3, "-- TODO: something"),
+ i(4, "-- nice")
+ }
+ )
+)
+table.insert(snippets, mySecondSnippet)
+
+local myFirstAutoSnippet = s("automatic", { t("This was auto triggered") })
+table.insert(autosnippets, myFirstAutoSnippet)
+
+local mySecondAutoSnippet = s({ trig = "digit(%d)(%d)", regTrig = true }, {
+ f(function(_, snip)
+ return snip.captures[1] .. " + "
+ end),
+ f(function(_, snip)
+ return snip.captures[2]
+ end),
+})
+table.insert(autosnippets, mySecondAutoSnippet)
+
+
+
+
+
+
+
+
+-- End Refactoring --
+
+return snippets, autosnippets
+
+
+
+
+
+
+
+
+
+
+
+
+
+