198 lines
4.1 KiB
Lua
198 lines
4.1 KiB
Lua
local ls = require("luasnip")
|
|
local s = ls.snippet
|
|
local sn = ls.snippet_node
|
|
local isn = ls.indent_snippet_node
|
|
local t = ls.text_node
|
|
local i = ls.insert_node
|
|
local f = ls.function_node
|
|
local c = ls.choice_node
|
|
local d = ls.dynamic_node
|
|
local r = ls.restore_node
|
|
local events = require("luasnip.util.events")
|
|
local ai = require("luasnip.nodes.absolute_indexer")
|
|
local extras = require("luasnip.extras")
|
|
local l = extras.lambda
|
|
local rep = extras.rep
|
|
local p = extras.partial
|
|
local m = extras.match
|
|
local n = extras.nonempty
|
|
local dl = extras.dynamic_lambda
|
|
local fmt = require("luasnip.extras.fmt").fmt
|
|
local fmta = require("luasnip.extras.fmt").fmta
|
|
local conds = require("luasnip.extras.expand_conditions")
|
|
local postfix = require("luasnip.extras.postfix").postfix
|
|
local types = require("luasnip.util.types")
|
|
local parse = require("luasnip.util.parser").parse_snippet
|
|
local ms = ls.multi_snippet
|
|
local k = require("luasnip.nodes.key_indexer").new_key
|
|
local line_begin = require("luasnip.extras.expand_conditions").line_begin
|
|
|
|
ls.filetype_extend("plaintex", {"tex"})
|
|
|
|
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 -- If LS_SELECT_RAW is empty, return a blank insert node
|
|
return sn(nil, i(1))
|
|
end
|
|
end
|
|
|
|
local in_mathzone = function()
|
|
-- The `in_mathzone` function requires the VimTeX plugin
|
|
return vim.fn['vimtex#syntax#in_mathzone']() == 1
|
|
end
|
|
|
|
-- exampe of a multiline snippet
|
|
|
|
-- ls.add_snippets("tex", {
|
|
-- s("template", fmta([[
|
|
-- <> <>
|
|
-- ]], {i(1), i(0)}, {
|
|
-- indent_string = ""
|
|
-- }))
|
|
-- })
|
|
|
|
|
|
ls.add_snippets("tex", {
|
|
s("template", fmta([[
|
|
\documentclass[11pt]{article}
|
|
\usepackage{amssymb}
|
|
\usepackage{amsmath}
|
|
\usepackage{listings}
|
|
\usepackage[utf8]{inputenc}
|
|
\usepackage{parskip}
|
|
\usepackage{hyperref}
|
|
\usepackage{bookmark}
|
|
\usepackage[linguistics]{forest}
|
|
\usepackage{tikz}
|
|
|
|
\usepackage{amsmath}
|
|
\usepackage{amsthm}
|
|
\usepackage{amssymb}
|
|
\usepackage{enumitem}
|
|
|
|
\usepackage{import}
|
|
\usepackage{pdfpages}
|
|
\usepackage{transparent}
|
|
\usepackage{xcolor}
|
|
|
|
\newtheorem{all}{Theorem}[section]
|
|
\newtheorem{corollary}[all]{Corollary}
|
|
\newtheorem{lemma}[all]{Lemma}
|
|
\newtheorem{definition}[all]{Definition}
|
|
\newtheorem{exercise}[all]{Exercise}
|
|
\newtheorem{proposition}[all]{Proposition}
|
|
\newtheorem{example}[all]{Example}
|
|
\newtheorem{theorem}{Theorem}
|
|
|
|
\newenvironment{lecture}[1]{
|
|
\t\section{\MakeUppercase{#1}}
|
|
\t\vspace{-0.5em}
|
|
\t\hrule
|
|
\t\vspace{1em}
|
|
\t\begin{list}{}{
|
|
\t\t\setlength{\leftmargin}{1.5em}
|
|
\t}
|
|
\t\item[]
|
|
}{
|
|
\t\end{list}
|
|
}
|
|
|
|
\title{<>}
|
|
\author{Jake Ginesin}
|
|
\date{}
|
|
|
|
\begin{document}
|
|
\maketitle
|
|
<>
|
|
\end{document}
|
|
]], {i(1), i(0)}, {
|
|
indent_string = ""
|
|
}))
|
|
})
|
|
|
|
ls.add_snippets("tex", {
|
|
s("template-math", fmta([[
|
|
\documentclass[11pt]{article}
|
|
\usepackage{amssymb}
|
|
\usepackage{amsmath}
|
|
\usepackage{amsthm}
|
|
\usepackage{fullpage}
|
|
\usepackage{listings}
|
|
\usepackage[utf8]{inputenc}
|
|
\usepackage{parskip}
|
|
\usepackage{hyperref}
|
|
\usepackage{bookmark}
|
|
\usepackage[linguistics]{forest}
|
|
\usepackage{tikz}
|
|
|
|
\usepackage{enumitem}
|
|
\usepackage{euler}
|
|
\usepackage{libertine}
|
|
|
|
\usepackage{import}
|
|
\usepackage{pdfpages}
|
|
\usepackage{transparent}
|
|
\usepackage{xcolor}
|
|
|
|
\newtheoremstyle{definitionstyle}
|
|
{}
|
|
{}
|
|
{\normalfont}
|
|
{}
|
|
{\bfseries}
|
|
{:}
|
|
{0.5em}
|
|
{}
|
|
|
|
\theoremstyle{definitionstyle}
|
|
\newtheorem{definition}{Definition}[section]
|
|
|
|
\newtheorem{all}{Theorem}[section]
|
|
\newtheorem{corollary}[all]{Corollary}
|
|
\newtheorem{lemma}[all]{Lemma}
|
|
\newtheorem{exercise}[all]{Exercise}
|
|
\newtheorem{proposition}[all]{Proposition}
|
|
\newtheorem{example}[all]{Example}
|
|
\newtheorem{theorem}{Theorem}
|
|
|
|
\title{<>}
|
|
\author{Jake Ginesin}
|
|
\date{}
|
|
|
|
\begin{document}
|
|
\maketitle
|
|
<>
|
|
\end{document}
|
|
]], {i(1), i(0)}, {
|
|
indent_string = ""
|
|
}))
|
|
})
|
|
|
|
-- ----
|
|
|
|
|
|
ls.add_snippets("tex", {
|
|
s({trig = "ita", dscr = "Expands 'tii' into LaTeX's textit{} command."},
|
|
fmta("\\textit{<>}",
|
|
{
|
|
d(1, get_visual),
|
|
}
|
|
)
|
|
),
|
|
|
|
|
|
-- s({trig = "ff"},
|
|
-- fmta(
|
|
-- "\\frac{<>}{<>}",
|
|
-- {
|
|
-- i(1),
|
|
-- i(2),
|
|
-- }
|
|
-- ),
|
|
-- {condition = in_mathzone} -- `condition` option passed in the snippet `opts` table
|
|
-- ),
|
|
|
|
})
|
|
|