diff options
Diffstat (limited to 'lua/lvim/core/luasnip/init.lua')
-rw-r--r-- | lua/lvim/core/luasnip/init.lua | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/lua/lvim/core/luasnip/init.lua b/lua/lvim/core/luasnip/init.lua new file mode 100644 index 00000000..8b2fc0aa --- /dev/null +++ b/lua/lvim/core/luasnip/init.lua @@ -0,0 +1,58 @@ +local M = {} +function M.config() + lvim.builtin.luasnip = { + sources = { + friendly_snippets = true, + lunarvim = true, + }, + config = { + updateevents = "TextChanged,TextChangedI", + ext_opts = { + -- Will be populated within config function + }, + }, + } +end + +function M.setup() + local utils = require "lvim.utils" + local paths = {} + if lvim.builtin.luasnip.sources.friendly_snippets then + paths[#paths + 1] = utils.join_paths(get_runtime_dir(), "site", "pack", "packer", "start", "friendly-snippets") + end + local user_snippets = utils.join_paths(get_config_dir(), "snippets") + if utils.is_directory(user_snippets) then + paths[#paths + 1] = user_snippets + end + -- When no paths are provided, luasnip will search in the runtimepath + require("luasnip.loaders.from_lua").lazy_load() + require("luasnip.loaders.from_vscode").lazy_load { + paths = paths, + } + require("luasnip.loaders.from_snipmate").lazy_load() + + local luasnip = require "luasnip" + local types = require "luasnip.util.types" + + local ext_opts = { + -- Show virtual text to signal when you are inside an sippets + [types.insertNode] = { + active = { + virt_text = { { "<-- snip insert", "BufferInactiveIndex" } }, + }, + }, + -- Helps to notice when you are within a choice node + [types.choiceNode] = { + active = { + virt_text = { { "<-- choice", "BufferInactiveIndex" } }, + }, + }, + } + -- Add lunarvim options giving preference to user ones + vim.tbl_deep_extend("keep", lvim.builtin.luasnip.config.ext_opts, ext_opts) + luasnip.config.set_config(lvim.builtin.luasnip.config) + if lvim.builtin.luasnip.sources.lunarvim then + luasnip.add_snippets("lua", require "lvim.core.luasnip.snippets") + end +end +return M |