33 lines
768 B
Lua
33 lines
768 B
Lua
local M = {}
|
|
local logger = require("cp.log")
|
|
|
|
function M.setup(config)
|
|
local ok, ls = pcall(require, "luasnip")
|
|
if not ok then
|
|
logger.log("LuaSnip not available - snippets disabled", vim.log.levels.INFO)
|
|
return
|
|
end
|
|
|
|
local s, i, fmt = ls.snippet, ls.insert_node, require("luasnip.extras.fmt").fmt
|
|
|
|
local languages = require("cp.languages")
|
|
local filetype_to_language = languages.filetype_to_language
|
|
|
|
local language_to_filetype = {}
|
|
for ext, lang in pairs(filetype_to_language) do
|
|
language_to_filetype[lang] = ext
|
|
end
|
|
|
|
|
|
for language, filetype in pairs(language_to_filetype) do
|
|
local snippets = {}
|
|
|
|
for _, snippet in ipairs(config.snippets or {}) do
|
|
table.insert(snippets, snippet)
|
|
end
|
|
|
|
ls.add_snippets(filetype, snippets)
|
|
end
|
|
end
|
|
|
|
return M
|