kickstart.nvim/lua/custom/plugins/Luasnip/tex/formatting.lua

492 lines
10 KiB
Lua

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 d = ls.dynamic_node
local fmt = require("luasnip.extras.fmt").fmt
local fmta = require("luasnip.extras.fmt").fmta
local rep = require("luasnip.extras").rep
local c = ls.choice_node
-- Visual placeholder
-- taken from https://ejmastnak.com/
local get_visual = function(args, parent, default_text)
if (#parent.snippet.env.LS_SELECT_RAW > 0) then
return sn(nil, i(1,parent.snippet.env.LS_SELECT_RAW))
else -- If LS_SELECT_RAW is empty, return a blank insert node
return sn(nil, i(1,default_text))
end
end
local function v(pos, default_text)
return d(pos, function(args, parent) return get_visual(args, parent, default_text) end)
end
return {
-- Formatting
-- Text and pages
s({trig = "url", name = "URLs"},
{
t("\\url{"), v(1,"url"), t("}")
}
),
s({trig = "ca", name = "Cancel stroke"},
{
t("\\cancel{"), v(1,"text"), t("}")
}
),
s({trig = "vrb", name = "Short verbatim"},
{
t("\\verb="), v(1,"text"), t("=")
}
),
s({trig = "ltr", name = "Enlarged letter"},
{
c(1,
{
{
t("\\lettrine{"), i(1,"initial"), t("}{"), v(2,"text"), t("}")
},
{
t("\\lettrine["), i(1,"val-list"), t("]{"), i(2,"initial"), t("}{"), v(3,"text"), t("}")
}
}
)
}
),
s({trig = "pht", name = "Phantom text"},
{
c(1,
{
{
t("\\phantom{"), v(1,"text"), t("}")
},
{
t("\\hphantom{"), v(1,"text"), t("}")
},
{
t("\\vphantom{"), v(1,"text"), t("}")
}
}
)
}
),
s({trig = "foo", name = "Footnote"},
{
t("\\footnote{"), v(1,"text"), t("}")
}
),
s({trig = "mrg", name = "Marginal note"},
{
t("\\marginpar{"), v(1,"text"), t("}")
}
),
s({trig = "npg", name = "New page"},
{
t("\\newpage")
}
),
s({trig = "pp", name = "Paragraph break"},
{
t({"",""}), t("\\bigskip"), t({"",""}), t({"",""})
}
),
s({trig = "fbo", name = "Frame box"},
{
c(1,
{
{
t("\\fbox{"),
t({"",""}), t(" "), d(1,get_visual),
t({"",""}), t("}")
},
{
t("\\fbox{"), d(1,get_visual), t("}")
}
}
)
}
),
s({trig = "fco", name = "Color frame box"},
{
c(1,
{
{
t("\\fcolorbox{"), i(1,"border-color"), t("}{"), i(2,"bg-color"), t("}{"),
t({"",""}), t(" "), d(3,get_visual),
t({"",""}), t("}")
},
{
t("\\fcolorbox{"), i(1,"border-color"), t("}{"), i(2,"bg-color"), t("}{"), d(3,get_visual), t("}")
}
}
)
}
),
s({trig = "cen", name = "Centered environment"},
{
t("\\begin{center}"),
t({"",""}), t(" "), d(1,get_visual),
t({"",""}), t("\\end{center}")
}
),
s({trig = "min", name = "Minpage environment"},
{
t("\\begin{minipage}{\\linewidth-3\\fboxsep-3\\fboxrule}"),
t({"",""}), t(" "), d(1,get_visual),
t({"",""}), t("\\end{minipage}")
}
),
s({trig = "code", name = "Code chunk"},
{
c(1,
{
{
t("{"),
t({"",""}), t("\\renewcommand\\ttdefault{cmtt}"),
t({"",""}), t(" \\begin{adjustwidth}{12mm+2mm}{2mm}"),
t({"",""}), t(" \\lstinputlisting{"), i(1), t("}"),
t({"",""}), t(" \\end{adjustwidth}"),
t({"",""}),
t({"",""}), t("}")
},
{
t("{"),
t({"",""}), t("\\renewcommand\\ttdefault{cmtt}"),
t({"",""}), t("\\begin{adjustwidth}{12mm+2mm}{2mm}"),
t({"",""}), t("\\begin{lstlisting}"),
t({"",""}), i(1),
t({"",""}), t("\\end{lstlisting}"),
t({"",""}), t("\\end{adjustwidth}"),
t({"",""}), t("}")
}
}
)
}
),
-- Columns
s({trig = "mul", name = "Multicolumns"},
{
c(1,
{
{
t("\\begin{multicols}{"), i(1,"columns"), t("}"),
t({"",""}), i(2),
t({"",""}), t("\\end{multicols}")
},
{
t("\\begin{multicols}{"), i(1,"columns"), t("}["), i(2,"preface"), t("]"),
t({"",""}), i(3),
t({"",""}), t("\\end{multicols}")
},
{
t("\\begin{multicols}{"), i(1,"columns"), t("}["), i(2,"preface"), t("]["), i(3,"skip"), t("]"),
t({"",""}), i(4),
t({"",""}), t("\\end{multicols}")
}
}
)
}
),
-- List structures
-- Ordered lists
s({trig = "rff", name = "Item reference format"},
{
t(",ref=\\the"), i(1,"<...>"), t(".\\textnormal{"), sn(2,
c(1,
{
{
i(1,"\\arabic*"), t("}")
},
{
i(1,"\\Roman*"), t("}")
},
{
i(1,"\\roman*"), t("}")
},
{
i(1,"\\Alph*"), t("}")
},
{
i(1,"\\alph*"), t("}")
}
}
)
)
}
),
s({trig = "tz", name = "Unnumbered list"},
{
t("\\begin{itemize}"),
t({"",""}), t("\\item "), i(1),
t({"",""}), t("\\end{itemize}")
}
),
s({trig = "enn", name = "Enumerated list"},
{
t("\\begin{enumerate}[label=\\textnormal{(\\arabic*)}]"),
t({"",""}), t("\\item "), i(1),
t({"",""}), t("\\end{enumerate}")
}
),
s({trig = "enI", name = "Capital roman enumerated list"},
{
t("\\begin{enumerate}[label=\\textnormal{(\\Roman*)}]"),
t({"",""}), t("\\item "), i(1),
t({"",""}), t("\\end{enumerate}")
}
),
s({trig = "eni", name = "Lowercase roman enumerated list"},
{
t("\\begin{enumerate}[label=\\textnormal{(\\roman*)}]"),
t({"",""}), t("\\item "), i(1),
t({"",""}), t("\\end{enumerate}")
}
),
s({trig = "enA", name = "Capital latin enumerated list"},
{
t("\\begin{enumerate}[label=\\textnormal{(\\Alph*)}]"),
t({"",""}), t("\\item "), i(1),
t({"",""}), t("\\end{enumerate}")
}
),
s({trig = "ena", name = "Lowercase latin enumerated list"},
{
t("\\begin{enumerate}[label=\\textnormal{(\\alph*)}]"),
t({"",""}), t("\\item "), i(1),
t({"",""}), t("\\end{enumerate}")
}
),
s({trig = "tm", name = "New item"},
{
t({"",""}),
t("\\item "), i(1)
}
),
-- Theorem-like environments
s({trig = "oo", name = "New theorem"},
{
c(1,
{
{
t("\\begin{theorem}"),
t({"",""}), d(1,get_visual),
t({"",""}), t("\\end{theorem}")
},
{
t("\\begin{theorem}["), i(1,"name"), t("]"),
t({"",""}), d(2,get_visual),
t({"",""}), t("\\end{theorem}")
}
}
)
}
),
s({trig = "pf", name = "Proof environment"},
{
c(1,
{
{
t("\\begin{proof}"),
t({"",""}), i(1),
t({"",""}), t("\\end{proof}")
},
{
t("\\begin{proof}["), i(1,"name"), t("]"),
t({"",""}), i(2),
t({"",""}), t("\\end{proof}")
}
}
)
}
),
s({trig = "ps", name = "New proposition"},
{
c(1,
{
{
t("\\begin{proposition}"),
t({"",""}), d(1,get_visual),
t({"",""}), t("\\end{proposition}")
},
{
t("\\begin{proposition}["), i(1,"name"), t("]"),
t({"",""}), d(2,get_visual),
t({"",""}), t("\\end{proposition}")
}
}
)
}
),
s({trig = "cc", name = "New corollary"},
{
c(1,
{
{
t("\\begin{corollary}"),
t({"",""}), d(1,get_visual),
t({"",""}), t("\\end{corollary}")
},
{
t("\\begin{corollary}["), i(1,"name"), t("]"),
t({"",""}), d(2,get_visual),
t({"",""}), t("\\end{corollary}")
}
}
)
}
),
s({trig = "ll", name = "New lemma"},
{
c(1,
{
{
t("\\begin{lemma}"),
t({"",""}), d(1,get_visual),
t({"",""}), t("\\end{lemma}")
},
{
t("\\begin{lemma}["), i(1,"name"), t("]"),
t({"",""}), d(2,get_visual),
t({"",""}), t("\\end{lemma}")
}
}
)
}
),
s({trig = "dd", name = "New definition"},
{
c(1,
{
{
t("\\begin{definition}"),
t({"",""}), d(1,get_visual),
t({"",""}), t("\\end{definition}")
},
{
t("\\begin{definition}["), i(1,"name"), t("]"),
t({"",""}), d(2,get_visual),
t({"",""}), t("\\end{definition}")
}
}
)
}
),
s({trig = "re", name = "New remark"},
{
c(1,
{
{
t("\\begin{remark}"),
t({"",""}), d(1,get_visual),
t({"",""}), t("\\end{remark}")
},
{
t("\\begin{remark}["), i(1,"name"), t("]"),
t({"",""}), d(2,get_visual),
t({"",""}), t("\\end{remark}")
}
}
)
}
),
s({trig = "ex", name = "New exercise"},
{
c(1,
{
{
t("\\begin{exercise}"),
t({"",""}), d(1,get_visual),
t({"",""}), t("\\end{exercise}")
},
{
t("\\begin{exercise}["), i(1,"name"), t("]"),
t({"",""}), d(2,get_visual),
t({"",""}), t("\\end{exercise}")
}
}
)
}
),
s({trig = "ee", name = "New example"},
{
c(1,
{
{
t("\\begin{example}"),
t({"",""}), d(1,get_visual),
t({"",""}), t("\\end{example}")
},
{
t("\\begin{example}["), i(1,"name"), t("]"),
t({"",""}), d(2,get_visual),
t({"",""}), t("\\end{example}")
}
}
)
}
),
s({trig = "pn", name = "New principle"},
{
c(1,
{
{
t("\\begin{principle}"),
t({"",""}), d(1,get_visual),
t({"",""}), t("\\end{principle}")
},
{
t("\\begin{principle}["), i(1,"name"), t("]"),
t({"",""}), d(2,get_visual),
t({"",""}), t("\\end{principle}")
}
}
)
}
),
}