---------------- -- 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="funcplot"}, fmta( [[ \begin{figure}[H] \centering \begin{tikzpicture} \begin{axis}[ domain=<>, width=\textwidth, height=0.75\textwidth, ] \addplot+[mark=none, line width=1pt] {<>}; \end{axis} \end{tikzpicture} \end{figure} ]], { i(1, "-5:5"), i(2), } ) ), s({trig="csvplot"}, fmta( [[ \begin{figure}[H] \centering \begin{tikzpicture} \begin{axis}[ width=\textwidth, height=0.75\textwidth, ] \addplot+[mark=none, line width=1pt] table[col sep=comma, x=<>, y=<>] {<>}; \end{axis} \end{tikzpicture} \end{figure} ]], { i(1, "x"), i(2, "y"), i(3), } ) ), s({trig="fig"}, fmta( [[ \begin{figure}[H] \centering <> \caption{<>} \label{fig:<>} \end{figure} ]], { i(0), i(1), i(2), } ) ), } -- return