summaryrefslogtreecommitdiffstats
path: root/lua/conf/plugins/luasnip.lua
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--lua/conf/plugins/luasnip.lua52
1 files changed, 52 insertions, 0 deletions
diff --git a/lua/conf/plugins/luasnip.lua b/lua/conf/plugins/luasnip.lua
new file mode 100644
index 0000000..26b293b
--- /dev/null
+++ b/lua/conf/plugins/luasnip.lua
@@ -0,0 +1,52 @@
+local misc = require('core.misc')
+local map = misc.map
+
+return { 'L3MON4D3/LuaSnip',
+ branch = 'v2.3.0',
+ disable = vim.version().minor < 7,
+ config = function()
+ vim.cmd('make install_jsregexp')
+ end,
+ function()
+ local luasnip = require('luasnip')
+ local types = require("luasnip.util.types")
+
+ luasnip.config.set_config {
+ history = true, -- return back into snippet
+ updateevents = { "TextChanged", "TextChangedI" }, -- update on text insert
+ ext_opts = {
+ [types.choiceNode] = {
+ active = {
+ virt_text = {{ "●", "@boolean" }}
+ }
+ },
+ [types.insertNode] = {
+ active = {
+ virt_text = {{ "●", "@constant" }}
+ }
+ },
+ },
+ }
+
+ map({"i", "s"}, { "<C-e>", "<C-a>" }, function()
+ if luasnip.choice_active() then
+ luasnip.change_choice(1)
+ end
+ end)
+
+ map({"i", "s"}, "<C-k>", function()
+ if luasnip.expandable(-1) then
+ luasnip.expand(-1)
+ end
+ end)
+
+ -- load all snippets from snippet directory
+ for _, file in ipairs(vim.api.nvim_get_runtime_file("lua/snippets/*.lua", true)) do
+ local fn = file:gsub('^.*/', ''):gsub('%.lua$', '')
+ local ret = misc.include('snippets.'..fn)
+ if type(ret) ~= "boolean" then
+ luasnip.add_snippets(fn, ret, { key = fn })
+ end
+ end
+ end
+}