all repos — dotfiles @ b8a84fa92372c8601a973a253fdc95c4083f9bba

linux dotfiles

config/nvim/lua/snippets.lua (view raw)

 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
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),
    })
  ),
})