summary refs log tree commit diff
path: root/.vim/snippets/all.lua
blob: a8157ccfaec7b351807edcb22714bd03ce787ab4 (plain) (blame)
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
50
51
52
53
local todo_comment = function(key)
  local nodes = {}
  if type(key) == 'string' then
    table.insert(nodes, t(key))
  elseif type(key) == 'table' then
    table.insert(nodes, c(1, vim.tbl_map(function(e) return t(e) end, key)))
  end
  local wrapped = autowrap(t('('), t(')'), {
    c(#nodes, {
      t(''), -- bare
      sn(1, user_email),
      f(function() return os.date('%Y-%m-%d') end, {}), -- time
    }),
  })
  for _, n in ipairs(wrapped) do table.insert(nodes, n) end
  table.insert(nodes, t(': '))
  return comment(nodes)
end

return {
  s('me', user_email),
  s('today', f(function() return os.date('%Y-%m-%d') end, {})),
  s('now'  , f(function() return os.date('%Y-%m-%dT%H:%M:%SZ') end, {})),

  -- todo comments
  s('todo', todo_comment('TODO')),
  s('note', todo_comment('NOTE')),
  s('hack', todo_comment('HACK')),
  s('warn', todo_comment({'WARN', 'XXX'})),
  s('fix' , todo_comment({'FIX', 'FIXME', 'ISSUE', 'BUG'})),

  s({trig='#!', name='Shell script skeleton'},
    fmt([=[
      #!/bin/sh

      set -e
      [ -n "$DEBUG" ] && set -x
      [ -n "$DESC" ] && desc() {{
      	printf "{}"
      	exit 0
      }}

    ]=], {i(1, 'what does this script do')}),
    {
      callbacks = {
        [-1] = {
          [events.enter] = function(_, _) vim.opt_local.filetype = 'sh' end
        }
      }
    }
  ),
}