local status_ok, ls = pcall(require, "luasnip") if not status_ok then return end require("luasnip/loaders/from_vscode").lazy_load() local s = ls.snippet local sn = ls.snippet_node local isn = ls.indent_snippet_node local t = ls.text_node local i = ls.insert_node local f = ls.function_node local c = ls.choice_node local d = ls.dynamic_node local r = ls.restore_node local events = require("luasnip.util.events") local ai = require("luasnip.nodes.absolute_indexer") local extras = require("luasnip.extras") local l = extras.lambda local rep = extras.rep local p = extras.partial local m = extras.match local n = extras.nonempty local dl = extras.dynamic_lambda local fmt = require("luasnip.extras.fmt").fmt local fmta = require("luasnip.extras.fmt").fmta local conds = require("luasnip.extras.expand_conditions") local postfix = require("luasnip.extras.postfix").postfix local types = require("luasnip.util.types") local parse = require("luasnip.util.parser").parse_snippet local ms = ls.multi_snippet vim.keymap.set({ "i", "s" }, "", function() if ls.expand_or_jumpable() then ls.expand_or_jump() end end, { silent = true }) vim.keymap.set({ "i", "s" }, "", function() if ls.jumpable(-1) then ls.jump(-1) end end, { silent = true }) vim.keymap.set({ "i" }, "", function() if ls.choice_active() then ls.change_choice(1) end end) vim.keymap.set({ "i" }, "", function() if ls.choice_active() then ls.change_choice(-1) end end) ls.config.set_config({ -- This tells LuaSnip to remember to keep around the last snippet. -- You can jump back into it even if you move outside of the selection history = true, -- This one is cool cause if you have dynamic snippets, it updates as you type! updateevents = "TextChanged,TextChangedI", -- Autosnippets: enable_autosnippets = true, -- Crazy highlights!! ext_opts = { [types.choiceNode] = { active = { virt_text = { { " « ", "NonTest" } }, }, }, }, }) local get_year = function() return os.date("%Y") end local get_date = function() return os.date("%d.%m.%Y") end local same = function(index) return f(function(arg) return arg[1] end, { index }) end ls.add_snippets(nil, { all = {}, lua = { s( "status", fmt( [[ local status_ok, {} = pcall(require, "{}") if not status_ok then return end ]], { i(1), same(1), } ) ), }, rust = { s( "modtest", fmt( [[ #[cfg(test)] mod test {{ {} {} }} ]], { c(1, { t(" use super::*"), t("") }), i(0), } ) ), }, python = {}, cpp = { s( "copy", fmt( [[ // Copyright {} // Author - Kristiāns Francis Cagulis, kc22015 // {} // Programma izveidota: {} ]], { get_year(), i(1), get_date(), } ) ), s( "fn", fmt( [[ // {}; // funkcija {}({}) - // {} {} {{ }} ]], { same(1), f(function(function_name) if not function_name[1][1] then function_name[1][1] = "" end local words = {} for word in function_name[1][1]:gmatch("%w+") do table.insert(words, word) end return words[2] or "" end, { 1 }), i(2), i(0), i(1), } ) ), }, })