neovim/my_snippets/markdown.lua

167 lines
3.2 KiB
Lua
Raw Normal View History

local ls = require("luasnip")
local s = ls.snippet
local t = ls.text_node
local i = ls.insert_node
local f = ls.function_node
local fmt = require("luasnip.extras.fmt").fmt
-- Function to get the datetime
-- with daylight saving time
-- according to the locale
local get_datetime = function()
return os.date("%Y-%m-%dT%H:%M:%S%z")
end
-- Function to get the current date
local get_date = function()
return os.date("%Y-%m-%d")
end
-- Function to get the current month
local get_month = function()
return os.date("%B")
end
-- Function to get the current year
local get_month_year = function()
return os.date("%B-%Y")
end
-- Function to get an id based on the datetime
local get_id = function()
return os.date("%Y%m%d%H%M%S")
end
-- Function to get the number of the current day
local get_day = function()
return os.date("%d")
end
return {
s(
{
trig = "datetime",
name = "Datetime",
dscr = "Insert the current datetime with locale daylight saving."
},
{
f(get_datetime, {})
}
),
s(
{
trig = "date",
name = "Date",
dscr = "Insert the current date."
},
{
f(get_date, {})
}
),
s(
{
trig = "id",
Name = "ID",
dscr = "Insert an id based on the current datetime."
},
{
f(get_id, {})
}
),
s(
{
trig = "today",
Name = "Today",
dscr = "Insert the number of the current day."
},
{
f(get_day, {})
}
),
s(
{
trig = "fm",
name = "YAML frontmatter",
dscr = "Insert a YAML frontmatter for markdown files.\n\nIt has a datetime with the locale daylight saving time, and an ID based on the datetime.\nTab to jump to next text input."
},
fmt(
[[
---
title: {1}
date: {3}
id: {4}
tags: [{2}]
---
]],
{
i(1, "title"),
i(2, "tags"),
f(get_datetime, {}),
f(get_id, {})
}
)
),
s(
{
trig = "inc",
name = "INC YAML frontmatter",
dscr = "Insert a YAML frontmatter for INC notes.\n\nIt has a datetime with the locale daylight saving time, prefilled title, author, categories and tags.\nAdjust the title manually."
},
fmt(
[[
---
title: {1}
creation_date: {2}
author: iGor milhit
categories: [inc]
tags: [notes, quotidien, {3}]
---
]],
{
f(get_month_year, {}),
f(get_datetime, {}),
f(get_month, {})
}
)
),
s(
{
trig="reflink",
name = "Reference link",
dscr="Insert a link with reference syntax",
docstring = "[Link text][Reference]\n\n[Reference]: Link Target \"Title\"\n\nTab to jump to next text input. \"Reference\" is automatically repeated."
},
fmt(
[[
[{1}][{2}]
[{2}]: {3} "{4}"
]],
{
i(1, "Link text"),
i(2, "Reference"),
i(3, "Link target"),
i(4, "Title")
},
{ repeat_duplicates = true }
)
),
s(
{
trig = "tags",
name = "Tags",
dscr = "Insert a one-line tags array, in a text file (markdown)."
},
fmt(
[[
tags: [{}]
]],
{
i(1, "tags")
}
)
)
}