diff options
Diffstat (limited to 'nvim/snips/tex/chunks.lua')
| -rw-r--r-- | nvim/snips/tex/chunks.lua | 220 |
1 files changed, 0 insertions, 220 deletions
diff --git a/nvim/snips/tex/chunks.lua b/nvim/snips/tex/chunks.lua deleted file mode 100644 index 617f648..0000000 --- a/nvim/snips/tex/chunks.lua +++ /dev/null @@ -1,220 +0,0 @@ -local n = require("luasnip-nodes") -local h = require("luasnip-helpers") - --- pump snippet input into wolframscript and get the output --- if an error occurs, find out and redo snippet -local mathematica = function (_, snip) - local cmd = "'Check[ToString[" .. snip.captures[1] .. ", TeXForm], Exit[1]]'" - local output = string.sub(vim.fn.system("wolframscript -code " .. cmd), 1, -2) - if string.sub(output, -7, -1) ~= "$Failed" and vim.v.shell_error == 0 then - return n.sn(nil, n.t(output)) - else - print("there was an error") - return n.sn(nil, n.fmta("math " .. snip.captures[1] .. "<> math", { n.i(1) })) - end -end - --- creates a matrix row as a snippet node -local rowGenerator = function (j, rows, columns) - local column = {} - local isSquare = rows == columns - for k=1,columns do - local digit = "0" - if isSquare and j==k then - digit = "1" - end - column[2*k-1] = n.i(k, digit) - column[2*k] = n.t(" & ") - end - column[2*columns] = n.t({ " \\\\", "\t" }) - if j==rows then - column[2*columns] = nil - end - return n.sn(j, column) -end - --- creates a table row as a snippet node -local tableRowGenerator = function (j, rows, columns) - local column = {} - for k=1,columns do - column[2*k-1] = n.i(k) - column[2*k] = n.t(" & ") - end - column[2*columns] = n.t({ " \\\\ \\hline", "\t" }) - if j==rows then - column[2*columns] = n.t({ " \\\\ \\hline" }) - end - return n.sn(j, column) -end - --- generates a matrix with dimensions as snippet capture groups -local matrix = function (_, snip) - local rows = tonumber(snip.captures[1]) - local columns = tonumber(snip.captures[2]) - local nodes = {} - for j=1,rows do - nodes[j] = rowGenerator(j, rows, columns) - end - return n.sn(1, nodes) -end - --- generates a table with dimensions as snippet capture groups -local table = function (_, snip) - local rows = tonumber(snip.captures[1]) - local columns = tonumber(snip.captures[2]) - local nodes = {} - for j=1,rows do - nodes[j] = tableRowGenerator(j, rows, columns) - end - return n.sn(1, nodes) -end - --- generates little partition definition thing for table environment -local tableCols = function (_, snip) - local columns = tonumber(snip.captures[2]) - local output = string.rep("|l", columns) - return output .. "|" -end - --- turns identifier into enum prefix -local enumType = function (_, snip) - local type = snip.captures[1] - if type == "n" then - return "\\arabic*." - elseif type == "a" then - return "(\\alph*)" - elseif type == "i" then - return "(\\roman*)" - end -end - -return { - -- environment - n.s({trig="beg", snippetType="autosnippet"}, - n.fmta( - [[ - \begin{<>} - <> - \end{<>} - ]], - { n.i(1), n.i(0), n.rep(1) }), - { condition = h.line_begin }), - -- named environment - n.s({trig="beng", snippetType="autosnippet"}, - n.fmta( - [[ - \begin{<>}[<>] - <> - \end{<>} - ]], - { n.i(1), n.i(2), n.i(0), n.rep(1) }), - { condition = h.line_begin }), - -- equation - n.s({trig="beq", snippetType="autosnippet"}, - n.fmta( - [[ - \begin{equation} - <> - \end{equation} - ]], - { n.i(0) }), - { condition = h.line_begin }), - -- WIP plot snippet - n.s({trig="plot(", snippetType="autosnippet"}, - n.fmta( - "plot(<>) <> plot", - { n.i(1), n.i(2) }) - ), - -- mathematica snippet - n.s({trig="math", snippetType="autosnippet"}, - n.fmta("math <> math", - { n.i(1) }), - { condition = h.in_mathzone } - ), - n.s({trig="math (.*) math", regTrig=true, wordTrig=false}, - { n.d(1, mathematica) }, - { condition = h.in_mathzone } - ), - -- bmatrix - n.s({trig="bm", snippetType="autosnippet"}, - n.fmta( - [[ - \begin{bmatrix}{<>,<>} \end{bmatrix} - ]], - { n.i(1), n.i(2) }), - { condition = h.line_begin * h.in_mathzone }), - -- matrix with arbitrary brackets - n.s({trig="zmat", snippetType="autosnippet"}, - n.fmta( - [[ - \begin{<>matrix}{<>,<>} \end{<>matrix} - ]], - { n.i(1), n.i(2), n.i(3), n.rep(1) }), - { condition = h.line_begin * h.in_mathzone }), - n.s({trig="\\begin{.matrix}{(%d+),(%d+)} \\end{(.)matrix}", regTrig=true, wordTrig=false}, - n.fmta( - [[ - \begin{<>matrix} - <> - \end{<>matrix} - ]], - { n.f(function(_, parent) return parent.captures[3] end), n.d(1, matrix), n.f(function(_, parent) return parent.captures[3] end) }), - { condition = h.in_mathzone }), - -- table - n.s({trig="tab", snippetType="autosnippet"}, - n.fmta( - [[ - \begin{table}{<>,<>} \end{table} - ]], - { n.i(1), n.i(2) }), - { condition = h.line_begin }), - n.s({trig="\\begin{table}{(%d+),(%d+)} \\end{table}", regTrig=true, wordTrig=false}, - n.fmta( - [[ - \begin{tabular}{<>} - \hline - <> - \end{tabular} - ]], - { n.f(tableCols), n.d(1, table) })), - -- enum with n=numbers, a=alphas, or i=roman numerals - n.s({trig="enum([nai])", regTrig=true, snippetType="autosnippet"}, - n.fmta( - [[ - \begin{enumerate}[label=<>] - \item <> - \end{enumerate} - ]], - { n.f(enumType), n.i(0) }), - { condition = h.in_text * h.line_begin }), - -- itemize - n.s({trig="item", snippetType="autosnippet"}, - n.fmta( - [[ - \begin{itemize} - \item <> - \end{itemize} - ]], - { n.i(0) }), - { condition = h.in_text * h.line_begin }), - -- split equation environment - n.s({trig="slt", snippetType="autosnippet"}, - n.fmta( - [[ - \begin{equation}\begin{split} - <> - \end{split}\end{equation} - ]], - { n.i(0) }), - { condition = h.in_text * h.line_begin }), - -- split display equation - n.s({trig="sld", snippetType="autosnippet"}, - n.fmta( - [[ - \[ \begin{split} - <> - \end{split} \] - ]], - { n.i(0) }), - { condition = h.in_text * h.line_begin }), -} |