403 lines
7.5 KiB
Lua
403 lines
7.5 KiB
Lua
----------------
|
|
-- Abbreviations
|
|
----------------
|
|
|
|
|
|
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
|
|
|
|
|
|
---------------
|
|
-- Environments
|
|
---------------
|
|
|
|
|
|
local tex_utils = {}
|
|
|
|
tex_utils.in_mathzone = function() -- math context detection
|
|
return vim.fn['vimtex#syntax#in_mathzone']() == 1
|
|
end
|
|
|
|
tex_utils.in_text = function()
|
|
return not tex_utils.in_mathzone()
|
|
end
|
|
|
|
tex_utils.in_comment = function() -- comment detection
|
|
return vim.fn['vimtex#syntax#in_comment']() == 1
|
|
end
|
|
|
|
tex_utils.in_env = function(name) -- generic environment detection
|
|
local is_inside = vim.fn['vimtex#env#is_inside'](name)
|
|
return (is_inside[1] > 0 and is_inside[2] > 0)
|
|
end
|
|
|
|
local get_visual = function(args, parent)
|
|
if (#parent.snippet.env.LS_SELECT_RAW > 0) then
|
|
return sn(nil, i(1, parent.snippet.env.LS_SELECT_RAW))
|
|
else
|
|
return sn(nil, i(1))
|
|
end
|
|
end
|
|
|
|
|
|
-----------
|
|
-- Snippets
|
|
-----------
|
|
|
|
|
|
return {
|
|
|
|
|
|
s({trig="ali", snippetType="autosnippet"},
|
|
fmta(
|
|
[[
|
|
\begin{align*}
|
|
<>
|
|
<>%
|
|
\end{align*}
|
|
]],
|
|
{
|
|
i(0),
|
|
i(1, "."),
|
|
}
|
|
)
|
|
),
|
|
|
|
s({trig="cases"},
|
|
fmta(
|
|
[[
|
|
\begin{cases}
|
|
<>
|
|
\end{cases}
|
|
]],
|
|
{
|
|
i(0),
|
|
}
|
|
),
|
|
{condition = tex_utils.in_mathzone}
|
|
),
|
|
|
|
s({trig="matb"},
|
|
fmta(
|
|
[[
|
|
\begin{bmatrix}
|
|
<>
|
|
\end{bmatrix}
|
|
]],
|
|
{
|
|
i(0),
|
|
}
|
|
),
|
|
{condition = tex_utils.in_mathzone}
|
|
),
|
|
|
|
s({trig="matp"},
|
|
fmta(
|
|
[[
|
|
\begin{pmatrix}
|
|
<>
|
|
\end{pmatrix}
|
|
]],
|
|
{
|
|
i(0),
|
|
}
|
|
),
|
|
{condition = tex_utils.in_mathzone}
|
|
),
|
|
|
|
s({trig='([^%a])int', regTrig=true, wordTrig=false, snippetType="autosnippet"},
|
|
fmta(
|
|
[[<>\int_{<>}^{<>} <> d<> ]],
|
|
{
|
|
f( function(_, snip) return snip.captures[1] end ),
|
|
i(1, "-\\infty"),
|
|
i(2, "\\infty"),
|
|
i(4),
|
|
i(3, "x"),
|
|
}
|
|
),
|
|
{condition = tex_utils.in_mathzone}
|
|
),
|
|
|
|
s({trig='([^%a])prod', regTrig=true, wordTrig=false, snippetType="autosnippet"},
|
|
fmta(
|
|
[[<>\prod_{<>}^{<>} ]],
|
|
{
|
|
f( function(_, snip) return snip.captures[1] end ),
|
|
i(1, "-\\infty"),
|
|
i(2, "\\infty"),
|
|
}
|
|
),
|
|
{condition = tex_utils.in_mathzone}
|
|
),
|
|
|
|
s({trig='([^%a])sum', regTrig=true, wordTrig=false, snippetType="autosnippet"},
|
|
fmta(
|
|
[[<>\sum_{<>}^{<>} ]],
|
|
{
|
|
f( function(_, snip) return snip.captures[1] end ),
|
|
i(1, "n=0"),
|
|
i(2, "N-1"),
|
|
}
|
|
),
|
|
{condition = tex_utils.in_mathzone}
|
|
),
|
|
|
|
s({trig='([^%a])sqrt', regTrig=true, wordTrig=false, snippetType="autosnippet"},
|
|
fmta(
|
|
[[<>\sqrt{<>} ]],
|
|
{
|
|
f( function(_, snip) return snip.captures[1] end ),
|
|
i(1),
|
|
}
|
|
),
|
|
{condition = tex_utils.in_mathzone}
|
|
),
|
|
|
|
s({trig='([^%a])log', regTrig=true, wordTrig=false, snippetType="autosnippet"},
|
|
fmta(
|
|
[[<>\log_{<>} ]],
|
|
{
|
|
f( function(_, snip) return snip.captures[1] end ),
|
|
i(1, "2"),
|
|
}
|
|
),
|
|
{condition = tex_utils.in_mathzone}
|
|
),
|
|
|
|
s({trig='([^%a])ln', regTrig=true, wordTrig=false, snippetType="autosnippet"},
|
|
fmta(
|
|
[[<>\ln ]],
|
|
{
|
|
f( function(_, snip) return snip.captures[1] end ),
|
|
}
|
|
),
|
|
{condition = tex_utils.in_mathzone}
|
|
),
|
|
|
|
s({trig = '([^%a])ff', regTrig = true, wordTrig = false, snippetType = "autosnippet"},
|
|
fmta(
|
|
[[<>\frac{<>}{<>} ]],
|
|
{
|
|
f( function(_, snip) return snip.captures[1] end ),
|
|
i(1),
|
|
i(2)
|
|
}
|
|
),
|
|
{condition = tex_utils.in_mathzone}
|
|
),
|
|
|
|
s({trig="([^%a])mcal", regTrig=true, wordTrig=false, snippetType="autosnippet"},
|
|
fmta(
|
|
[[<>\mathcal{<>}]],
|
|
{
|
|
f( function(_, snip) return snip.captures[1] end ),
|
|
i(1),
|
|
}
|
|
),
|
|
{condition = tex_utils.in_mathzone}
|
|
),
|
|
|
|
s({trig="([^%a])mbb", regTrig=true, wordTrig=false, snippetType="autosnippet"},
|
|
fmta(
|
|
[[<>\mathbb{<>}]],
|
|
{
|
|
f( function(_, snip) return snip.captures[1] end ),
|
|
i(1),
|
|
}
|
|
),
|
|
{condition = tex_utils.in_mathzone}
|
|
),
|
|
|
|
s({trig="([^%a])tt", regTrig=true, wordTrig=false, snippetType="autosnippet"},
|
|
fmta(
|
|
[[<>\text{<>}]],
|
|
{
|
|
f( function(_, snip) return snip.captures[1] end ),
|
|
i(1),
|
|
}
|
|
),
|
|
{condition = tex_utils.in_mathzone}
|
|
),
|
|
|
|
s({trig=".", snippetType="autosnippet"},
|
|
fmta(
|
|
[[\cdot ]],
|
|
{}
|
|
),
|
|
{condition = tex_utils.in_mathzone}
|
|
),
|
|
|
|
s({trig="$$", snippetType="autosnippet"},
|
|
fmta(
|
|
[[$<>$]],
|
|
{
|
|
i(1),
|
|
}
|
|
),
|
|
{condition = tex_utils.in_mathzone}
|
|
),
|
|
|
|
s({trig="([^%a])bm", regTrig=true, wordTrig=false, snippetType="autosnippet"},
|
|
fmta(
|
|
[[<>\bm{<>}]],
|
|
{
|
|
f( function(_, snip) return snip.captures[1] end ),
|
|
i(1),
|
|
}
|
|
),
|
|
{condition = tex_utils.in_mathzone}
|
|
),
|
|
|
|
s({trig="__", wordTrig=false, snippetType="autosnippet"},
|
|
fmta(
|
|
[[_{<>}]],
|
|
{
|
|
i(1),
|
|
}
|
|
),
|
|
{condition = tex_utils.in_mathzone}
|
|
),
|
|
|
|
s({trig="^^", wordTrig=false, snippetType="autosnippet"},
|
|
fmta(
|
|
[[^{<>}]],
|
|
{
|
|
i(1),
|
|
}
|
|
),
|
|
{condition = tex_utils.in_mathzone}
|
|
),
|
|
|
|
s({trig="([^%a])oo", regTrig=true, wordTrig=false, snippetType="autosnippet"},
|
|
fmta(
|
|
[[<>\infty]],
|
|
{
|
|
f( function(_, snip) return snip.captures[1] end ),
|
|
}
|
|
),
|
|
{condition = tex_utils.in_mathzone}
|
|
),
|
|
|
|
s({trig="((", wordTrig=false, snippetType="autosnippet"},
|
|
fmta(
|
|
[[\mleft( <> \mright)]],
|
|
{
|
|
i(1),
|
|
}
|
|
),
|
|
{condition = tex_utils.in_mathzone}
|
|
),
|
|
|
|
s({trig="[[", wordTrig=false, snippetType="autosnippet"},
|
|
fmta(
|
|
"\\mleft[ <> \\mright]",
|
|
{
|
|
i(1),
|
|
}
|
|
),
|
|
{condition = tex_utils.in_mathzone}
|
|
),
|
|
|
|
s({trig="{{", wordTrig=false, snippetType="autosnippet"},
|
|
fmta(
|
|
"\\mleft\\{ <> \\mright\\}",
|
|
{
|
|
i(1),
|
|
}
|
|
),
|
|
{condition = tex_utils.in_mathzone}
|
|
),
|
|
|
|
s({trig="||", wordTrig=false, snippetType="autosnippet"},
|
|
fmta(
|
|
"\\lvert <> \\rvert ",
|
|
{
|
|
i(1),
|
|
}
|
|
),
|
|
{condition = tex_utils.in_mathzone}
|
|
),
|
|
|
|
s({trig="([^%a])hat", regTrig=true, wordTrig=false, snippetType="autosnippet"},
|
|
fmta(
|
|
[[<>\hat{<>}]],
|
|
{
|
|
f( function(_, snip) return snip.captures[1] end ),
|
|
i(1),
|
|
}
|
|
),
|
|
{condition = tex_utils.in_mathzone}
|
|
),
|
|
|
|
s({trig="([^%a])tld", regTrig=true, wordTrig=false, snippetType="autosnippet"},
|
|
fmta(
|
|
[[<>\tilde{<>}]],
|
|
{
|
|
f( function(_, snip) return snip.captures[1] end ),
|
|
i(1),
|
|
}
|
|
),
|
|
{condition = tex_utils.in_mathzone}
|
|
),
|
|
|
|
s({trig="([^%a])bar", regTrig=true, wordTrig=false, snippetType="autosnippet"},
|
|
fmta(
|
|
[[<>\overline{<>}]],
|
|
{
|
|
f( function(_, snip) return snip.captures[1] end ),
|
|
i(1),
|
|
}
|
|
),
|
|
{condition = tex_utils.in_mathzone}
|
|
),
|
|
|
|
s({trig="([%a])([%d])", regTrig=true, wordTrig=false, snippetType="autosnippet"},
|
|
fmta(
|
|
[[<>_<>]],
|
|
{
|
|
f( function(_, snip) return snip.captures[1] end ),
|
|
f( function(_, snip) return snip.captures[2] end ),
|
|
}
|
|
),
|
|
{condition = tex_utils.in_mathzone}
|
|
),
|
|
|
|
s({trig="=>", wordTrig=false, snippetType="autosnippet"},
|
|
fmta(
|
|
[[\Rightarrow ]],
|
|
{}
|
|
),
|
|
{condition = tex_utils.in_mathzone}
|
|
),
|
|
|
|
s({trig="->", wordTrig=false, snippetType="autosnippet"},
|
|
fmta(
|
|
[[\rightarrow ]],
|
|
{}
|
|
),
|
|
{condition = tex_utils.in_mathzone}
|
|
),
|
|
|
|
s({trig="([^%a])nab", regTrig=true, wordTrig=false, snippetType="autosnippet"},
|
|
fmta(
|
|
[[<>\nabla ]],
|
|
{
|
|
f( function(_, snip) return snip.captures[1] end ),
|
|
}
|
|
),
|
|
{condition = tex_utils.in_mathzone}
|
|
),
|
|
|
|
|
|
} -- return
|
|
|