nvim: migrated typst snippets to luasnip
this was the most absolutely painful experience ever why did i do this it was already working with ultisnips it's literally 20x more convoluted with luasnip than ultisnips for no benefit at all https://xkcd.com/1205/
This commit is contained in:
parent
32c4b99498
commit
4884f144d0
@ -140,7 +140,7 @@ local servers = {
|
|||||||
},
|
},
|
||||||
diagnostics = {
|
diagnostics = {
|
||||||
-- get it to stop complaining about luasnip
|
-- get it to stop complaining about luasnip
|
||||||
globals = {'s', 'f', 't', "fmt", "c", "sn", "i", "rep", "d"},
|
globals = {'s', 'f', 't', "fmt", "c", "sn", "i", "rep", "d", "k"},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -74,7 +74,6 @@ return {
|
|||||||
{surr1}
|
{surr1}
|
||||||
{comm} {cont}
|
{comm} {cont}
|
||||||
{surr2}
|
{surr2}
|
||||||
|
|
||||||
]], {
|
]], {
|
||||||
surr1 = f(rep_node, { 1 }),
|
surr1 = f(rep_node, { 1 }),
|
||||||
comm = d(1, function()
|
comm = d(1, function()
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
return {
|
return {
|
||||||
s({ trig = "snip", desc = "meta snippet (snippet for making snippets)" }, fmt([[
|
s({ trig = "snipf", desc = "meta snippet (snippet for making snippets)" }, fmt([[
|
||||||
s({{trig="{}", desc="{}"}}, {}),
|
s({{trig="{}", desc="{}"}}, {}),
|
||||||
]], { i(1, "trigger"), i(2, "human-readable description"), i(3, "<body nodes>") }))
|
]], { i(1, "trigger"), i(2, "human-readable description"), i(3, "<body nodes>") }))
|
||||||
}
|
}
|
||||||
|
101
src/.config/nvim/snippets/typst.lua
Normal file
101
src/.config/nvim/snippets/typst.lua
Normal file
@ -0,0 +1,101 @@
|
|||||||
|
return {
|
||||||
|
--------------------------------
|
||||||
|
--------------------------------
|
||||||
|
-- quick markup utilities
|
||||||
|
--------------------------------
|
||||||
|
--------------------------------
|
||||||
|
|
||||||
|
s({ trig = "ss", desc = "superscript", wordTrig = false }, fmt("^({}) ", { i(1) })),
|
||||||
|
s({ trig = "qu", desc = "square (qu-artic) exponent", wordTrig = false }, t("^2 ")),
|
||||||
|
s({ trig = "cub", desc = "cub-ed exponent", wordTrig = false }, t("^3 ")),
|
||||||
|
|
||||||
|
s({ trig = "link", desc = "labelled link" }, fmt('#link("{}{}")[{}]', {
|
||||||
|
i(1),
|
||||||
|
f(function(args, _)
|
||||||
|
-- use clipboard contents as a placeholder
|
||||||
|
if not args[1][1] or args[1][1] == "" then
|
||||||
|
return vim.fn.getreg("+")
|
||||||
|
else
|
||||||
|
return ""
|
||||||
|
end
|
||||||
|
end, { 1 }),
|
||||||
|
i(2),
|
||||||
|
})),
|
||||||
|
|
||||||
|
--------------------------------
|
||||||
|
--------------------------------
|
||||||
|
-- figures
|
||||||
|
-- (biggest waste of time ever)
|
||||||
|
-- (supposedly advanced snippet practice)
|
||||||
|
--------------------------------
|
||||||
|
--------------------------------
|
||||||
|
s({ trig = "fig(%a?)", regTrig = true, desc = "create a figure" }, fmt([[
|
||||||
|
#figure(
|
||||||
|
{content}
|
||||||
|
caption: [{caption}],
|
||||||
|
) <{label}>
|
||||||
|
]], {
|
||||||
|
caption = i(2, "Caption"),
|
||||||
|
label = i(1, "label"),
|
||||||
|
content = d(3, function(args, snip)
|
||||||
|
if not snip.captures[1] or snip.captures[1] == "" then
|
||||||
|
-- regular figure
|
||||||
|
return sn(nil,
|
||||||
|
fmt([[
|
||||||
|
image("{path}.{ext}"),
|
||||||
|
]], {
|
||||||
|
path = f(function()
|
||||||
|
return "fig/" .. vim.fn.expand("%:r") .. "/" .. (args[1][1] or nil)
|
||||||
|
end),
|
||||||
|
ext = c(1, { t("svg"), t("jpg") })
|
||||||
|
})
|
||||||
|
)
|
||||||
|
elseif snip.captures[1] == "t" then
|
||||||
|
return sn(nil,
|
||||||
|
fmt([[
|
||||||
|
tablef(
|
||||||
|
columns: {cols},
|
||||||
|
table.header{head},
|
||||||
|
{content}
|
||||||
|
),
|
||||||
|
]], {
|
||||||
|
head = i(1, "[Header][Header]"),
|
||||||
|
content = i(2, "[Content], [Content],"),
|
||||||
|
cols = f(function(largs)
|
||||||
|
-- the number of columns is the number of left brackets [ in the header
|
||||||
|
local _, cnt = string.gsub(largs[1][1], "%[", "")
|
||||||
|
-- the error for not converting to string was cryptic
|
||||||
|
-- wasted 10 minutes on this :(
|
||||||
|
return tostring(cnt)
|
||||||
|
end, { 1 })
|
||||||
|
})
|
||||||
|
)
|
||||||
|
end
|
||||||
|
end, { 1 }),
|
||||||
|
})),
|
||||||
|
|
||||||
|
--------------------------------
|
||||||
|
--------------------------------
|
||||||
|
-- document templates
|
||||||
|
--------------------------------
|
||||||
|
--------------------------------
|
||||||
|
s({ trig = "general", desc = "General document template" }, fmt([[
|
||||||
|
#import "/templates/general.typ": template, lref
|
||||||
|
#import "/templates/libs.typ": *
|
||||||
|
#show: template.with(
|
||||||
|
title: "{}",
|
||||||
|
prefix: "{}",
|
||||||
|
suffix: "{}",
|
||||||
|
)
|
||||||
|
]], { i(1), i(2), i(3) })),
|
||||||
|
|
||||||
|
s({ trig = "problem", desc = "Problem write-up template" }, fmt([[
|
||||||
|
#import "/templates/problems.typ": template, source_code, status, lref
|
||||||
|
#import "/templates/libs.typ": *
|
||||||
|
#show: template.with(
|
||||||
|
problem_url: "{}",
|
||||||
|
title: "{}",
|
||||||
|
stat: "{}",
|
||||||
|
)
|
||||||
|
]], { i(1), i(2), i(3, "incomplete") })),
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user