summary refs log tree commit diff
path: root/.vim/lua
diff options
context:
space:
mode:
authorRobert Günzler <r@gnzler.io>2022-10-12 17:08:51 +0200
committerRobert Günzler <r@gnzler.io>2022-10-12 17:08:51 +0200
commit6d7e524d3d7a71da2cea61b335a59e9544e2a6f7 (patch)
tree22ef20bffa4523189e3dcafd90d4a38402d056eb /.vim/lua
parent0c160b43bc57e1055a14d6c6cbb7af4cfaf19242 (diff)
vim: add user command to unlink active snippets
Diffstat (limited to '.vim/lua')
-rw-r--r--.vim/lua/snips.lua17
1 files changed, 14 insertions, 3 deletions
diff --git a/.vim/lua/snips.lua b/.vim/lua/snips.lua
index b22d945..318c9f7 100644
--- a/.vim/lua/snips.lua
+++ b/.vim/lua/snips.lua
@@ -64,14 +64,14 @@ end
 
 -- exec: inserts the output of command
 local exec = function(command)
-  return ls.f(function(_, _, command_arg)
+  return ls.f(function(_, _, ...)
     local results, code = require('plenary.job'):new({
       command = vim.env.SHELL,
-      args = {'-c', command_arg},
+      args = {'-c', ...},
       enable_recording = true,
     }):sync()
     if not code == 0 or #results == 0 then
-      error(string.format('exec "%s" failed', command_arg))
+      error(string.format('exec "%s" failed', ...))
     end
     return results
   end, {}, {user_args = {command}})
@@ -79,6 +79,9 @@ end
 
 ls.setup {
   ext_opts = {
+    [types.snippet] = {
+      active = { virt_text = {{ '<-- luasnip', 'LuasnipIndicator' }}, virt_text_pos = 'right_align' }
+    },
     [types.insertNode] = {
       unvisited = { hl_group = 'LuasnipIndicator' }
     },
@@ -111,3 +114,11 @@ ls.setup {
 require('luasnip.loaders.from_snipmate').lazy_load {paths = './after/snippets'}
 -- lua snippets
 require("luasnip.loaders.from_lua").lazy_load {paths = './snippets'}
+
+vim.api.nvim_create_user_command('LuaSnipUnlinkAll',
+  function()
+    while #package.loaded.luasnip.session.current_nodes > 0 do
+      package.loaded.luasnip.unlink_current()
+    end
+  end,
+  { desc = 'unlink all active snippets' })