require("luasnip.session.snippet_collection").clear_snippets "markdown" local ls = require "luasnip" local s = ls.snippet local t = ls.text_node local c = ls.choice_node local i = ls.insert_node local f = ls.function_node local fmt = require("luasnip.extras.fmt").fmt ls.add_snippets( "markdown", { s({ trig = "imh", dscr = "Insert markdown task heading" }, fmt( [==[ → [[#{} ✗]] ]==], { i(0), } ) ), s("link", { t("["), i(1, "description"), t("]("), f(function() local clip = vim.fn.getreg("+") if clip == "" then return "url" end return clip end), t(")"), i(0), }), s({ trig = "ics", dscr = "Insert code snippet" }, fmt( [[ ```{} {} ``` ]], { c(1, { t "python", t "bash", t "", t "swift", t "c" }), i(2), } ) ), s({ trig = "iq", dscr = "Insert question" }, fmt( [[ ┏━━━━━━━━━━━━━━ Question ✗ ━━━━━━━━━━━━━━━ **Question** {} **Answer**: ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ]], { i(0), } ) ), s({ trig = "ip", dscr = "Insert problem" }, fmt( [[ ┏━━━━━━━━━━━━━━ Problem ✗ ━━━━━━━━━━━━━━━ **Problem**: {} **Solution**: ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ]], { i(0), } ) ), s({ trig = "isn", dscr = "Insert side notes" }, fmt( [[ ┏━━━━━━━━━━ Замтеки на полях ━━━━━━━━━━━ **Тема**: {} {} ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ]], { i(1), i(2), } ) ), s({ trig = "ip", dscr = "Insert side notes" }, fmt( [[ ┏━━━━━━━━━━━━━━ Проблема ━━━━━━━━━━━━━━━ - [ ] **Решена** {} ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ]], { i(0), } ) ) } )