376 current 2025-05-03 18:04:12 25.05.20250424.f771eb4 6.12.24 *
This commit is contained in:
284
home/programs/nvim/snippets/markdown.lua
Normal file
284
home/programs/nvim/snippets/markdown.lua
Normal file
@@ -0,0 +1,284 @@
|
||||
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.add_snippets("markdown", {
|
||||
s("date", {
|
||||
t("# "), f(function() return os.date("%y-%m-%d") end, {}),
|
||||
t({ "", "- " }),
|
||||
}),
|
||||
|
||||
-- s({
|
||||
-- trig = [[\v(https?://(?:www\.)?([-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b[-a-zA-Z0-9()@:%_\+.~#?&//=]*))]],
|
||||
-- regTrig = true,
|
||||
-- wordTrig = false,
|
||||
-- },
|
||||
-- fmt("[{}]({})", {
|
||||
-- f(function(_, snip) return snip.captures[2] end),
|
||||
-- f(function(_, snip) return snip.captures[1] end),
|
||||
-- })
|
||||
-- ),
|
||||
|
||||
s({
|
||||
trig = [[%f[%S](https?://([^/%s]+)[^%s]*)]],
|
||||
regTrig = true,
|
||||
wordTrig = false,
|
||||
}, fmt("[{}]({})", {
|
||||
-- link text → host
|
||||
f(function(_, snip) return snip.captures[2] end),
|
||||
-- link target → full url
|
||||
f(function(_, snip) return snip.captures[1] end),
|
||||
}))
|
||||
|
||||
|
||||
})
|
||||
-- local ls = require('luasnip')
|
||||
-- local fmt = require('luasnip.extras.fmt').fmt
|
||||
-- local fmta = require('luasnip.extras.fmt').fmta
|
||||
-- local rep = require('luasnip.extras').rep
|
||||
-- local dl = require('luasnip.extras').dynamic_lambda
|
||||
-- local l = require('luasnip.extras').lambda
|
||||
-- local autosnippet = ls.extend_decorator.apply(s, { snippetType = 'autosnippet' })
|
||||
|
||||
-- -- some shorthands...
|
||||
-- local s = ls.snippet
|
||||
-- local n = ls.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
|
||||
|
||||
-- ls.config.set_config({
|
||||
-- history = true,
|
||||
-- -- treesitter-hl has 100, use something higher (default is 200).
|
||||
-- ext_base_prio = 200,
|
||||
-- -- minimal increase in priority.
|
||||
-- ext_prio_increase = 1,
|
||||
-- enable_autosnippets = true,
|
||||
-- store_selection_keys = '<Tab>',
|
||||
-- })
|
||||
|
||||
-- vim.keymap.set({ 'i', 's' }, '<C-l>', function()
|
||||
-- if ls.choice_active() then ls.change_choice(1) end
|
||||
-- end)
|
||||
|
||||
-- vim.keymap.set({ 'i', 's' }, '<C-h>', function()
|
||||
-- if ls.choice_active() then ls.change_choice(-1) end
|
||||
-- end)
|
||||
|
||||
-- local function get_line_iter(str)
|
||||
-- if str:sub(-1) ~= '\n' then str = str .. '\n' end
|
||||
|
||||
-- return str:gmatch('(.-)\n')
|
||||
-- end
|
||||
-- local function box_trim_lines(str)
|
||||
-- local new_str = ''
|
||||
|
||||
-- for line in get_line_iter(str) do
|
||||
-- line = line:gsub('^%s+', '')
|
||||
-- line = string.gsub(line, '%s+$', '')
|
||||
-- new_str = new_str .. '\n' .. line
|
||||
-- end
|
||||
|
||||
-- return new_str
|
||||
-- end
|
||||
|
||||
-- -- local return_filename = function()
|
||||
-- -- return vim.fn.fnamemodify(vim.fn.expand('%'), ':p')
|
||||
-- -- end
|
||||
|
||||
-- local return_filename = function()
|
||||
-- -- return vim.fn.fnamemodify(vim.fn.expand('%'), ':p')
|
||||
-- local filename = vim.fn.fnamemodify(vim.fn.expand('%'), ':p')
|
||||
-- local home_dir = vim.fn.expand('~')
|
||||
-- if filename:sub(1, #home_dir) == home_dir then filename = '~/' .. filename:sub(#home_dir + 2) end
|
||||
-- return filename
|
||||
-- end
|
||||
|
||||
-- local date = function() return { os.date('%Y-%m-%d') } end
|
||||
|
||||
-- local fulldate = function() return { os.date('%a, %b %Y/%m/%d - %H:%M:%S') } end
|
||||
|
||||
-- -- lua print(os.date("%a, %b %Y/%m/%d - %H:%M:%S"))
|
||||
|
||||
-- local get_visual = function(args, parent)
|
||||
-- if #parent.snippet.env.SELECT_RAW > 0 then
|
||||
-- return sn(nil, i(1, parent.snippet.env.SELECT_RAW))
|
||||
-- else -- If SELECT_RAW is empty, return a blank insert node
|
||||
-- return sn(nil, i(1))
|
||||
-- end
|
||||
-- end
|
||||
|
||||
-- local filename = function() return { vim.fn.expand('%:p') } end
|
||||
|
||||
-- local clipboard = function() return { vim.fn.getreg('+') } end
|
||||
|
||||
-- -- Make sure to not pass an invalid command, as io.popen() may write over nvim-text.
|
||||
-- local function bash(_, _, command)
|
||||
-- local file = io.popen(command, 'r')
|
||||
-- local res = {}
|
||||
-- for line in file:lines() do
|
||||
-- table.insert(res, line)
|
||||
-- end
|
||||
-- return res
|
||||
-- end
|
||||
|
||||
-- local function get_port_snip(args)
|
||||
-- if #args < 1 and not args[1][1] then return n(nil, t('hello world')) end
|
||||
|
||||
-- local type = args[1][1]
|
||||
-- local indent = ' '
|
||||
|
||||
-- if type == 'NodePort' or type == 'LoadBalancer' then
|
||||
-- return n(
|
||||
-- nil,
|
||||
-- fmt(
|
||||
-- box_trim_lines([[
|
||||
-- - port: {}
|
||||
-- {}targetPort: {}
|
||||
-- {}nodePort: {}
|
||||
-- ]]),
|
||||
-- {
|
||||
-- i(1, '30000'),
|
||||
-- indent,
|
||||
-- i(2, '80'),
|
||||
-- indent,
|
||||
-- i(3, '30000'),
|
||||
-- }
|
||||
-- )
|
||||
-- )
|
||||
-- end
|
||||
|
||||
-- if type == 'ClusterIP' then
|
||||
-- return n(
|
||||
-- nil,
|
||||
-- fmt(
|
||||
-- [[
|
||||
-- - port: {}
|
||||
-- {}targetPort: {}
|
||||
-- ]],
|
||||
-- {
|
||||
-- i(1, '30000'),
|
||||
-- indent,
|
||||
-- i(2, '80'),
|
||||
-- }
|
||||
-- )
|
||||
-- )
|
||||
-- end
|
||||
-- end
|
||||
|
||||
-- ls.add_snippets(nil, {
|
||||
|
||||
-- markdown = {
|
||||
-- s({
|
||||
-- trig = 'link',
|
||||
-- namr = 'markdown_link [selection]',
|
||||
-- dscr = 'Create markdown link [txt](url) Select description + TAB',
|
||||
-- }, {
|
||||
-- t('['),
|
||||
-- i(1),
|
||||
-- t(']('),
|
||||
-- d(2, get_visual),
|
||||
-- t(')'),
|
||||
-- i(0),
|
||||
-- }),
|
||||
|
||||
-- s({
|
||||
-- trig = 't',
|
||||
-- namr = 'check list',
|
||||
-- desc = 'Create item of a checklist',
|
||||
-- }, fmt('- [{}] {}', { c(2, { t(' '), t('-'), t('') }), i(1, 'task') })),
|
||||
|
||||
-- autosnippet(
|
||||
-- {
|
||||
-- trig = 'qw',
|
||||
-- name = 'trig',
|
||||
-- dscr = 'inline code',
|
||||
-- },
|
||||
-- fmt(
|
||||
-- [[
|
||||
-- `<>` <>
|
||||
-- ]],
|
||||
-- { d(1, get_visual), i(0) },
|
||||
-- { delimiters = '<>' }
|
||||
-- )
|
||||
-- ),
|
||||
|
||||
-- s({
|
||||
-- trig = 'code',
|
||||
-- namr = 'markdown_code_fenced',
|
||||
-- desc = 'code backsticks',
|
||||
-- priority = 2000,
|
||||
-- }, {
|
||||
-- t('```'),
|
||||
-- i(1, 'Lang'),
|
||||
-- t({ '', '' }),
|
||||
-- d(2, get_visual),
|
||||
-- t({ '', '```', '' }),
|
||||
-- i(0),
|
||||
-- }),
|
||||
|
||||
-- s({
|
||||
-- trig = 'meta',
|
||||
-- namr = 'Metadata',
|
||||
-- dscr = 'Yaml metadata format for markdown',
|
||||
-- }, {
|
||||
-- t({ '---', 'title: ' }),
|
||||
-- i(1, 'note_title'),
|
||||
-- t({ '', 'author: ' }),
|
||||
-- i(2, 'author'),
|
||||
-- t({ '', 'date: ' }),
|
||||
-- f(date, {}),
|
||||
-- t({ '', 'cathegories: [' }),
|
||||
-- i(3, ''),
|
||||
-- t({ ']', 'lastmod: ' }),
|
||||
-- f(date, {}),
|
||||
-- t({ '', 'tags: [' }),
|
||||
-- i(4),
|
||||
-- t({ ']', 'comments: true', '---', '' }),
|
||||
-- i(0),
|
||||
-- }),
|
||||
|
||||
-- s({
|
||||
-- trig = '_skel',
|
||||
-- namr = 'File_skeleton',
|
||||
-- dscr = 'File header (dynamic)',
|
||||
-- }, {
|
||||
-- t({ '---', 'File: ' }),
|
||||
-- f(return_filename, {}),
|
||||
-- t({ '', 'Last Change: ' }),
|
||||
-- f(fulldate, {}),
|
||||
-- t({ '', 'tags: [' }),
|
||||
-- i(1),
|
||||
-- t({ ']', '---', '' }),
|
||||
-- i(0),
|
||||
-- }),
|
||||
-- },
|
||||
-- })
|
||||
Reference in New Issue
Block a user