diff options
author | opalmay <[email protected]> | 2023-01-28 23:44:03 +0200 |
---|---|---|
committer | opalmay <[email protected]> | 2023-01-28 23:44:03 +0200 |
commit | dc630fc4712c1113d279c3a5251103231a789a54 (patch) | |
tree | 587164010a261ce57743227c1c620515d69dc9fd /lua/lvim | |
parent | 845522742dbfcdfd6bd83437fc5b5caf6798db60 (diff) |
refactor(luasnip): lazy load snippets (WIP)
Diffstat (limited to 'lua/lvim')
-rw-r--r-- | lua/lvim/core/luasnip.lua | 37 |
1 files changed, 27 insertions, 10 deletions
diff --git a/lua/lvim/core/luasnip.lua b/lua/lvim/core/luasnip.lua index 4c869da6..cbfd4523 100644 --- a/lua/lvim/core/luasnip.lua +++ b/lua/lvim/core/luasnip.lua @@ -2,17 +2,34 @@ local M = {} local utils = require "lvim.utils" local paths = {} -function M.gen_setup_snips() +vim.api.nvim_create_autocmd("User", { + pattern = "LuasnipPreExpand", + callback = function() + local snippet = require("luasnip").session.event_node + local dscr = snippet.dscr[1] + local docstring = snippet.docstring[1] + + if string.find(dscr, "lvim") and docstring == "" then + M.gen_setup_snip(dscr) + end + end, +}) + +function M.init_empty_setup_snips() local ls = require "luasnip" - local lua_snippets = { - -- ls.parser.parse_snippet("cmp", utils.r_inspect_settings(lvim.builtin.cmp, "lvim.builtin.cmp", 10000, ".")), - -- ls.parser.parse_snippet("lir", utils.r_inspect_settings(lvim.builtin.lir, "lvim.builtin.lir", 10000, ".")), - } - for i, v in pairs(lvim.builtin) do - lua_snippets[#lua_snippets + 1] = - ls.parser.parse_snippet("lvim.builtin." .. i, utils.r_inspect_settings(v, "lvim.builtin." .. i, 10000, ".")) + for i, _ in pairs(lvim.builtin) do + local lua_snippet = { ls.parser.parse_snippet("lvim.builtin." .. i, "") } + ls.add_snippets("lua", lua_snippet, { key = "lvim.builtin." .. i }) end - ls.add_snippets("lua", lua_snippets) +end + +function M.gen_setup_snip(structure_str) + local ls = require "luasnip" + local structure_split = vim.split(structure_str, "%.") + local structure = lvim.builtin[structure_split[3]] + local lua_snippet = + ls.parser.parse_snippet(structure_str, utils.r_inspect_settings(structure, structure_str, 10000, ".")) + ls.add_snippets("lua", { lua_snippet }, { key = structure_str }) end function M.setup() @@ -29,7 +46,7 @@ function M.setup() } require("luasnip.loaders.from_snipmate").lazy_load() - M.gen_setup_snips() + M.init_empty_setup_snips() end return M |