194 lines
3.7 KiB
Lua
194 lines
3.7 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}
|
|
),
|
|
-- 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 }
|
|
),
|
|
}
|