local ls = require("luasnip") 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 local k = require("luasnip.nodes.key_indexer").new_key -- lua snippets ls.add_snippets("lua", { s( "lreq", fmt('local {name} = require("{mod}{rep}")', { name = i(1, "name"), rep = rep(1), mod = i(2), }) ), }) -- js/ts/sx snippets local allJsFts = { "javascript", "typescript", "typescriptreact", "javascriptreact", } local tsFts = { "typescriptreact", "typescript", } local import = s( "im", fmt("import {name} from '{module}';", { module = i(1), name = c(2, { i(1), fmt("{{{}}}", { i(1) }) }), }) ) local field = s( "fi", fmt("{name}: {type};", { name = i(1), type = i(2), }) ) local constF = s( "cf", fmt( [[{export}const {name}{type} = ({args}){ret} => {{ {body} }}]], { export = c(1, { t("export "), i(1) }), name = i(2), type = i(3), args = i(3), ret = i(4), body = i(5), } ) ) for _, ft in ipairs(tsFts) do ls.add_snippets(ft, { constF, field, }) end for _, ft in ipairs(allJsFts) do ls.add_snippets(ft, { import, }) end