local M = {snippets={}} local source_str = debug.getinfo(1, 'S').source:sub(2) local script_path = source_str:match('(.*/)') local snippets_path = script_path .. 'snippets' vis:command_register('snippet', function(argv, _, win, _, _) local snippet = argv[1] if not snippet then return end local pos = win.selection.pos if not M.snippets[snippet] then local snippet_path = snippets_path .. '/' .. argv[1] local file = io.open(snippet_path, "rb") -- r read mode and b binary mode if not file then return end local content = file:read("*a") file:close() M.snippets[snippet] = content win.file:insert(pos, content) else win.file:insert(pos, M.snippets[snippet]) end end, 'Insert a snippet after the primary selection') return M