diff --git a/roles/neovim/files/after/plugin/luasnip.lua b/roles/neovim/files/after/plugin/luasnip.lua index e6adc0a4..3040ebe0 100644 --- a/roles/neovim/files/after/plugin/luasnip.lua +++ b/roles/neovim/files/after/plugin/luasnip.lua @@ -7,9 +7,38 @@ if vim.g.snippets ~= "luasnip" then return end -local javascript = R "opdavies.snippets.ft.javascript" -local markdown = R "opdavies.snippets.ft.markdown" -local php = R "opdavies.snippets.ft.php" +local snippet = luasnip.snippet +local i = luasnip.insert_node +local t = luasnip.text_node + +local shortcut = function(val) + if type(val) == "string" then + return { t { val }, i(0) } + end + + if type(val) == "table" then + for k, v in ipairs(val) do + if type(v) == "string" then + val[k] = t { v } + end + end + end + + return val +end + +local function make(tbl) + local result = {} + for k, v in pairs(tbl) do + table.insert(result, (snippet({ trig = k, desc = v.desc }, shortcut(v)))) + end + + return result +end + +local javascript = make(R "opdavies.snippets.ft.javascript") +local markdown = make(R "opdavies.snippets.ft.markdown") +local php = make(R "opdavies.snippets.ft.php") local snippets = { js = javascript, diff --git a/roles/neovim/files/lua/opdavies/snippets/ft/javascript.lua b/roles/neovim/files/lua/opdavies/snippets/ft/javascript.lua index 89e1fc6e..d3e795f8 100644 --- a/roles/neovim/files/lua/opdavies/snippets/ft/javascript.lua +++ b/roles/neovim/files/lua/opdavies/snippets/ft/javascript.lua @@ -1,9 +1,10 @@ local fmta = require("luasnip.extras.fmt").fmta -local luasnip = require "luasnip" +local ls = require "luasnip" -local i = luasnip.insert_node -local s = luasnip.snippet +local i = ls.insert_node -return { - s({ trig = "log", dscr = "console.log" }, fmta("console.log(<>);", { i(1, "value") })), +local M = { + log = fmta("console.log(<>);", { i(1, "value") }), } + +return M diff --git a/roles/neovim/files/lua/opdavies/snippets/ft/markdown.lua b/roles/neovim/files/lua/opdavies/snippets/ft/markdown.lua index 4ef4eba4..c194d2a0 100644 --- a/roles/neovim/files/lua/opdavies/snippets/ft/markdown.lua +++ b/roles/neovim/files/lua/opdavies/snippets/ft/markdown.lua @@ -1,20 +1,18 @@ local fmt = require("luasnip.extras.fmt").fmt -local luasnip = require "luasnip" +local ls = require "luasnip" -local i = luasnip.insert_node -local s = luasnip.snippet +local i = ls.insert_node -return { - s( - { trig = "frontmatter", dscr = "Document frontmatter" }, - fmt( - [[ - --- - title: {} - --- - {} - ]], - { i(1), i(0) } - ) +local M = { + frontmatter = fmt( + [[ + --- + title: {} + --- + {} + ]], + { i(1), i(0) } ), } + +return M diff --git a/roles/neovim/files/lua/opdavies/snippets/ft/php.lua b/roles/neovim/files/lua/opdavies/snippets/ft/php.lua index e17221c8..b96bac94 100644 --- a/roles/neovim/files/lua/opdavies/snippets/ft/php.lua +++ b/roles/neovim/files/lua/opdavies/snippets/ft/php.lua @@ -1,15 +1,14 @@ local fmta = require("luasnip.extras.fmt").fmta -local luasnip = require "luasnip" +local ls = require "luasnip" -local c = luasnip.choice_node -local i = luasnip.insert_node -local s = luasnip.snippet -local t = luasnip.text_node +local c = ls.choice_node +local i = ls.insert_node +local s = ls.snippet +local t = ls.text_node -return { +local M = { -- TODO: only load if within a Drupal project? - s( - "drupalclass", + drupalclass = { fmta( [[ <