221 lines
3.4 KiB
Lua
221 lines
3.4 KiB
Lua
local helpers = require("personal.luasnip-helper-funcs")
|
|
local get_visual = helpers.get_visual
|
|
|
|
-- Math context detection
|
|
local tex = {}
|
|
tex.in_mathzone = function()
|
|
return vim.fn["vimtex#syntax#in_mathzone"]() == 1
|
|
end
|
|
tex.in_text = function()
|
|
return not tex.in_mathzone()
|
|
end
|
|
|
|
local line_begin = require("luasnip.extras.expand_conditions").line_begin
|
|
|
|
-- Return snippet tables
|
|
return {
|
|
-- GENERIC ENVIRONMENT
|
|
s(
|
|
{ trig = "new", snippetType = "autosnippet" },
|
|
fmta(
|
|
[[
|
|
\begin{<>}
|
|
<>
|
|
\end{<>}
|
|
]],
|
|
{
|
|
i(1),
|
|
d(2, get_visual),
|
|
rep(1),
|
|
}
|
|
),
|
|
{ condition = line_begin }
|
|
),
|
|
s(
|
|
{ trig = "def", snippetType = "autosnippet" },
|
|
fmta(
|
|
[[
|
|
\begin{definition}[<>]
|
|
<>
|
|
\end{definition}
|
|
]],
|
|
{
|
|
i(1),
|
|
d(2, get_visual),
|
|
}
|
|
),
|
|
{ condition = line_begin }
|
|
),
|
|
-- ENVIRONMENT WITH ONE EXTRA ARGUMENT
|
|
s(
|
|
{ trig = "n2", snippetType = "autosnippet" },
|
|
fmta(
|
|
[[
|
|
\begin{<>}{<>}
|
|
<>
|
|
\end{<>}
|
|
]],
|
|
{
|
|
i(1),
|
|
i(2),
|
|
d(3, get_visual),
|
|
rep(1),
|
|
}
|
|
),
|
|
{ condition = line_begin }
|
|
),
|
|
-- ENVIRONMENT WITH TWO EXTRA ARGUMENTS
|
|
s(
|
|
{ trig = "n3", snippetType = "autosnippet" },
|
|
fmta(
|
|
[[
|
|
\begin{<>}{<>}{<>}
|
|
<>
|
|
\end{<>}
|
|
]],
|
|
{
|
|
i(1),
|
|
i(2),
|
|
i(3),
|
|
d(4, get_visual),
|
|
rep(1),
|
|
}
|
|
),
|
|
{ condition = line_begin }
|
|
),
|
|
-- TOPIC ENVIRONMENT (my custom tcbtheorem environment)
|
|
s(
|
|
{ trig = "nt", snippetType = "autosnippet" },
|
|
fmta(
|
|
[[
|
|
\begin{topic}{<>}{<>}
|
|
<>
|
|
\end{topic}
|
|
]],
|
|
{
|
|
i(1),
|
|
i(2),
|
|
d(3, get_visual),
|
|
}
|
|
),
|
|
{ condition = line_begin }
|
|
),
|
|
-- EQUATION
|
|
s(
|
|
{ trig = "nn", snippetType = "autosnippet" },
|
|
fmta(
|
|
[[
|
|
\begin{equation*}
|
|
<>
|
|
\end{equation*}
|
|
]],
|
|
{
|
|
i(1),
|
|
}
|
|
),
|
|
{ condition = line_begin }
|
|
),
|
|
-- SPLIT EQUATION
|
|
s(
|
|
{ trig = "ss", snippetType = "autosnippet" },
|
|
fmta(
|
|
[[
|
|
\begin{equation*}
|
|
\begin{split}
|
|
<>
|
|
\end{split}
|
|
\end{equation*}
|
|
]],
|
|
{
|
|
d(1, get_visual),
|
|
}
|
|
),
|
|
{ condition = line_begin }
|
|
),
|
|
-- ALIGN
|
|
s(
|
|
{ trig = "all", snippetType = "autosnippet" },
|
|
fmta(
|
|
[[
|
|
\begin{align*}
|
|
<>
|
|
\end{align*}
|
|
]],
|
|
{
|
|
i(1),
|
|
}
|
|
),
|
|
{ condition = line_begin }
|
|
),
|
|
-- ITEMIZE
|
|
s(
|
|
{ trig = "itt", snippetType = "autosnippet" },
|
|
fmta(
|
|
[[
|
|
\begin{itemize}
|
|
|
|
\item <>
|
|
|
|
\end{itemize}
|
|
]],
|
|
{
|
|
i(0),
|
|
}
|
|
),
|
|
{ condition = line_begin }
|
|
),
|
|
-- ENUMERATE
|
|
s(
|
|
{ trig = "enn", snippetType = "autosnippet" },
|
|
fmta(
|
|
[[
|
|
\begin{enumerate}
|
|
|
|
\item <>
|
|
|
|
\end{enumerate}
|
|
]],
|
|
{
|
|
i(0),
|
|
}
|
|
)
|
|
),
|
|
-- INLINE MATH
|
|
s(
|
|
{ trig = "([^%l])mm", regTrig = true, wordTrig = false, snippetType = "autosnippet" },
|
|
fmta("<>$<>$", {
|
|
f(function(_, snip)
|
|
return snip.captures[1]
|
|
end),
|
|
d(1, get_visual),
|
|
})
|
|
),
|
|
-- INLINE MATH ON NEW LINE
|
|
s(
|
|
{ trig = "^mm", regTrig = true, wordTrig = false, snippetType = "autosnippet" },
|
|
fmta("$<>$", {
|
|
i(1),
|
|
})
|
|
),
|
|
-- FIGURE
|
|
s(
|
|
{ trig = "fig" },
|
|
fmta(
|
|
[[
|
|
\begin{figure}[htb!]
|
|
\centering
|
|
\includegraphics[width=<>\linewidth]{<>}
|
|
\caption{<>}
|
|
\label{fig:<>}
|
|
\end{figure}
|
|
]],
|
|
{
|
|
i(1),
|
|
i(2),
|
|
i(3),
|
|
i(4),
|
|
}
|
|
),
|
|
{ condition = line_begin }
|
|
),
|
|
}
|