feat: nvim snippets for rust

This commit is contained in:
Max Hohlfeld 2024-12-01 11:05:15 +01:00
parent 339df0770b
commit fd1592e035
2 changed files with 90 additions and 24 deletions

View File

@ -0,0 +1,66 @@
local ls = require("luasnip")
local s = ls.snippet
local sn = ls.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 l = require("luasnip.extras").lambda
local r = require("luasnip.extras").rep
local p = require("luasnip.extras").partial
local m = require("luasnip.extras").match
local n = require("luasnip.extras").nonempty
local dl = require("luasnip.extras").dynamic_lambda
local types = require("luasnip.util.types")
return {
s('derivedebug', t '#[derive(Debug)]'),
s(':turbofish', { t { '::<' }, i(0), t { '>' } }),
s('print', {
-- t {'println!("'}, i(1), t {' {:?}", '}, i(0), t {');'}}),
t { 'println!("' }, i(1), t { ' {' }, i(0), t { ':?}");' } }),
s('for',
{
t { 'for ' }, i(1), t { ' in ' }, i(2), t { ' {', '' },
i(0),
t { '}', '' },
}),
s('struct',
{
t { '#[derive(Debug)]', '' },
t { 'struct ' }, i(1), t { ' {', '' },
i(0),
t { '}', '' },
}),
s('test',
{
t { '#[test]', '' },
t { 'fn ' }, i(1), t { '() {', '' },
t { ' assert' }, i(0), t { '', '' },
t { '}' },
}),
s('testcfg',
{
t { '#[cfg(test)]', '' },
t { 'mod ' }, i(1), t { ' {', '' },
t { ' #[test]', '' },
t { ' fn ' }, i(2), t { '() {', '' },
t { ' assert' }, i(0), t { '', '' },
t { ' }', '' },
t { '}' },
}),
s('if',
{
t { 'if ' }, i(1), t { ' {', '' },
i(0),
t { '}' },
}),
}

View File

@ -27,28 +27,28 @@ rec_ls = function()
end end
return { return {
s({trig = "ul", dscr = "Itemize with endless items"}, { s({ trig = "ul", dscr = "Itemize with endless items" }, {
t({ "\\begin{itemize}", "\t\\item " }), t({ "\\begin{itemize}", "\t\\item " }),
i(1), i(1),
d(2, rec_ls, {}), d(2, rec_ls, {}),
t({ "", "\\end{itemize}" }), t({ "", "\\end{itemize}" }),
}), }),
s({trig = "ol", dscr = "Enumerate with endless items"}, { s({ trig = "ol", dscr = "Enumerate with endless items" }, {
t({ "\\begin{enumerate}", "\t\\item " }), t({ "\\begin{enumerate}", "\t\\item " }),
i(1), i(1),
d(2, rec_ls, {}), d(2, rec_ls, {}),
t({ "", "\\end{enumerate}" }), t({ "", "\\end{enumerate}" }),
}), }),
s({trig = "sec", dscr = "Section" }, { s({ trig = "sec", dscr = "Section" }, {
c(1, { c(1, {
t '\\section{', t '\\section{',
t '\\subsection{', t '\\subsection{',
t '\\subsubsection{' t '\\subsubsection{'
}), i(2), t '}', i(0) }), i(2), t '}', i(0)
}), }),
s({trig = "bf", dscr = "textbf"}, { t({"\\textbf{"}), i(1), t({"}"}), i(0) }), s({ trig = "bf", dscr = "textbf" }, { t({ "\\textbf{" }), i(1), t({ "}" }), i(0) }),
s({trig = "it", dscr = "textit"}, { t({"\\textit{"}), i(1), t({"}"}), i(0) }), s({ trig = "it", dscr = "textit" }, { t({ "\\textit{" }), i(1), t({ "}" }), i(0) }),
s({trig = "rm", dscr = "textrm"}, { t({"\\textrm{"}), i(1), t({"}"}), i(0) }), s({ trig = "rm", dscr = "textrm" }, { t({ "\\textrm{" }), i(1), t({ "}" }), i(0) }),
s({trig = "verb", dscr = "verb"}, { t({"\\verb|"}), i(1), t({"|"}), i(0) }), s({ trig = "verb", dscr = "verb" }, { t({ "\\verb|" }), i(1), t({ "|" }), i(0) }),
s({trig = "frame", dscr="New frame"}, {t {'\\begin{frame}', '\t'}, i(0), t {'', '\\end{frame}'}}) s({ trig = "frame", dscr = "New frame" }, { t { '\\begin{frame}', '\t' }, i(0), t { '', '\\end{frame}' } })
} }