all repos — dotfiles @ 22b436ec5d011f3e0b75fcd759576433190902de

linux dotfiles

config/nvim/lua/snippets.lua

local snip_status_ok, ls = pcall(require, 'luasnip')
if not snip_status_ok then
  return
end

local s = ls.snippet
local fmt = require('luasnip.extras.fmt').fmt
-- 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 get_title = function(nodes)
  local url = nodes[1][1]
  vim.notify('Url: ' .. url)
  local out = ''
  local jobid = vim.fn.jobstart({ 'fetchtitle', url }, {
    stdout_buffered = true,
    on_stdout = function(_, data)
      if data then
        print(vim.inspect(data))
        out = data[1]
      end
    end,
  })
  vim.fn.jobwait({ jobid }, 3000)
  return out
end

ls.add_snippets('markdown', {
  s(
    'mdlink',
    fmt('[{}]({})', {
      f(get_title, { 1 }),
      i(1),
    })
  ),
  s(
    'll',
    fmt('#### {}', {
      f(function()
        return os.date '%Y-%m-%d %H:%M'
      end),
    })
  ),
})