492 lines
10 KiB
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}")
|
|
}
|
|
}
|
|
)
|
|
}
|
|
),
|
|
|
|
}
|