feat(luasnip): add custom snippet
Add a custom snippet for markdown to insert a YAML metadata block This is a highly targeted snippet as it works for my blog template only. There is some work to do on neatening this snippet up
This commit is contained in:
parent
2a25c1cc8d
commit
f2161af221
109
luasnip/markdown.lua
Normal file
109
luasnip/markdown.lua
Normal file
|
|
@ -0,0 +1,109 @@
|
||||||
|
-- Markdown snippets
|
||||||
|
|
||||||
|
-- We manually create these as the LSP doesn't understand
|
||||||
|
-- if they are loaded properly.
|
||||||
|
local ls = require('luasnip')
|
||||||
|
local lsf = require('luasnip.extras.fmt')
|
||||||
|
local s = ls.snippet
|
||||||
|
local t = ls.text_node
|
||||||
|
local i = ls.insert_node
|
||||||
|
local c = ls.choice_node
|
||||||
|
local sn = ls.snippet_node
|
||||||
|
local fmt = lsf.fmt
|
||||||
|
local fmta = lsf.fmta
|
||||||
|
local currentUser
|
||||||
|
|
||||||
|
|
||||||
|
if vim.fn.has('linux') == 1 then
|
||||||
|
--- Get the current users full name
|
||||||
|
---@return string @The users full name OR NAME
|
||||||
|
currentUser = function ()
|
||||||
|
local status, res = require('sherlock5512.scriptutils').shellexec("getent passwd $USER | cut -d: -f5 | cut -d, -f1")
|
||||||
|
if status.ok then
|
||||||
|
-- We know there will only be stdout if the command runs successfully
|
||||||
|
---@diagnostic disable-next-line: return-type-mismatch, need-check-nil
|
||||||
|
return res:match("^[\r\n]*(.-)[\r\n]*$")
|
||||||
|
end
|
||||||
|
return "NAME"
|
||||||
|
end
|
||||||
|
elseif vim.fn.has('mac') == 1 then
|
||||||
|
--- Get the current users full name
|
||||||
|
---@return string @The users full name OR NAME
|
||||||
|
currentUser = function ()
|
||||||
|
local status, res = require('sherlock5512.scriptutils').shellexec("id -F")
|
||||||
|
if status.ok then
|
||||||
|
-- We know there will only be stdout if the command runs successfully
|
||||||
|
---@diagnostic disable-next-line: return-type-mismatch, need-check-nil
|
||||||
|
return res:match("^[\r\n]*(.-)[\r\n]*$")
|
||||||
|
end
|
||||||
|
return "NAME"
|
||||||
|
end
|
||||||
|
else
|
||||||
|
--- Get the current users full name
|
||||||
|
---@return string @The users full name OR NAME
|
||||||
|
currentUser = function ()
|
||||||
|
return "NAME"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
--- @module 'luasnip'
|
||||||
|
--- @type LuaSnip.Snippet[]
|
||||||
|
return {
|
||||||
|
s(
|
||||||
|
{ trig = '\\yaml', dscr = 'YAML frontmatter block'}, {
|
||||||
|
t {'---',''}, -- end with empty block to force a newline
|
||||||
|
t {'author: "' },
|
||||||
|
i(1, currentUser()),
|
||||||
|
t {'"',''},
|
||||||
|
t {'title: "'},
|
||||||
|
i(2),
|
||||||
|
t {'"', ''},
|
||||||
|
t {'date: '},
|
||||||
|
i(3),
|
||||||
|
t {'',''},
|
||||||
|
t {'description: "'},
|
||||||
|
i(4),
|
||||||
|
t {'"', ''},
|
||||||
|
c(5,
|
||||||
|
{
|
||||||
|
t '',
|
||||||
|
sn(nil,{
|
||||||
|
t {"keywords: [ "},
|
||||||
|
i(1),
|
||||||
|
t { ' ]', '' },
|
||||||
|
})
|
||||||
|
}
|
||||||
|
),
|
||||||
|
t {"lang: "},
|
||||||
|
i(6, 'en-gb'),
|
||||||
|
t {'', ''},
|
||||||
|
c(7, {
|
||||||
|
sn(nil, {
|
||||||
|
t {'math: true', ''},
|
||||||
|
i(1),
|
||||||
|
c(2, {
|
||||||
|
t {'mathjax: true', ''},
|
||||||
|
t {'mathjax: false', ''}
|
||||||
|
}),
|
||||||
|
}),
|
||||||
|
t {'math: false', ''},
|
||||||
|
}),
|
||||||
|
c(8, {
|
||||||
|
t {'needs-syntax-highlighting: true', ''},
|
||||||
|
t {'needs-syntax-highlighting: false', ''},
|
||||||
|
}),
|
||||||
|
c(9, {
|
||||||
|
t {'allow-comments: true', ''},
|
||||||
|
t {'allow-comments: false', ''},
|
||||||
|
}),
|
||||||
|
c(10, {
|
||||||
|
t '',
|
||||||
|
sn(nil, {
|
||||||
|
t {'style: "', ''},
|
||||||
|
i(1),
|
||||||
|
t {'','"', ''}
|
||||||
|
})
|
||||||
|
}),
|
||||||
|
t {'---',''}
|
||||||
|
})
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user