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_datetime, {}) } ), 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_date, {}), 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_date, {}), 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 } ) ) }