summary refs log tree commit diff
path: root/.vim/lua
diff options
context:
space:
mode:
authorRobert Günzler <r@gnzler.io>2022-05-27 13:06:29 +0200
committerRobert Günzler <r@gnzler.io>2022-05-27 13:16:16 +0200
commitf30f81b70593b4bbf639d93565dcbe000bb32734 (patch)
tree04ce3a36adf8398bf250674168c219806b2bfe47 /.vim/lua
parent0d29bc8abc8df494e0e6659fd04b305dd39d4dea (diff)
vim: update lua snippets
Diffstat (limited to '.vim/lua')
-rw-r--r--.vim/lua/snips.lua64
1 files changed, 45 insertions, 19 deletions
diff --git a/.vim/lua/snips.lua b/.vim/lua/snips.lua
index c4a58af..32e97d1 100644
--- a/.vim/lua/snips.lua
+++ b/.vim/lua/snips.lua
@@ -3,9 +3,11 @@ local ls = require("luasnip")
 local fmt = require('luasnip.extras.fmt').fmt
 
 local s = ls.s
+local sn = ls.sn
 local t = ls.text_node
 local f = ls.function_node
--- local i = ls.insert_node
+local i = ls.insert_node
+local c = ls.choice_node
 
 local exec = function(command)
   return f(function(_, _, arg)
@@ -18,18 +20,32 @@ local exec = function(command)
   end, {}, { user_args = { command }})
 end
 
+local calculate_commentstring = require('Comment.ft').calculate
+local get_region = require('Comment.utils').get_region
+
+---@param ctype number|(ex.: 1 (line), 2 (block))
+local comment = function(ctype, inner)
+  local get_cstring = function()
+    local cs = calculate_commentstring({ ctype = ctype, range = get_region() }) or ''
+    local tbl = vim.split(cs, '%s', {plain = true, trimempty = true})
+    return (#tbl == 0) and {'', ''}
+      or ((#tbl == 1) and {tbl[1], ''}
+        or {tbl[1], tbl[2]})
+  end
+  return sn(nil, {
+    f(function() return get_cstring()[1] end),
+    t(' '),
+    inner,
+    f(function() return get_cstring()[2] end),
+  })
+end
+
 -- snipmate snippets
-require('luasnip.loaders.from_snipmate').load({ paths = {'~/.config/nvim/after/snippets'} })
+-- require('luasnip.loaders.from_snipmate').load({ paths = {'~/.config/nvim/after/snippets'} })
 
--- luasnip snippets
 ls.add_snippets('all', {
-  s(
-    'sign',
-    t('Robert Günzler <r@gnzler.io>')
-  ),
-
-  s(
-    'me',
+  s('sign', t('Robert Günzler <r@gnzler.io>')),
+  s('me',
     fmt(
       [[{} <{}>]], {
         exec('git config --get user.name'),
@@ -37,14 +53,24 @@ ls.add_snippets('all', {
       }
     )
   ),
+}, { type = 'snippets', key = 'signature_helpers'})
 
-  s(
-    'today',
-    f(function() return os.date('%Y-%m-%d') end, {})
-  ),
+ls.add_snippets('all', {
+  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, {}))
+}, { type = 'snippets', key = 'date_helpers'})
 
-  s(
-    'now',
-    f(function() return os.date('%Y-%m-%dT%H:%M:%SZ') end, {})
-  )
-})
+ls.add_snippets('all', {
+  s({ trig = 'todo', docstring = 'TODO:' }, comment(1, fmt([[{}: ]], { t('TODO') }))),
+  -- s({ trig = 'todo', docstring = '{1:TODO}: {2}' }, comment(1, fmt([[{}: {}]], { c(1, {t('TODO')}), i(2) }))),
+  -- s('note', comment(1, fmt([[NOTE: {}]], { i(0) }))),
+  -- s('hack', comment(1, fmt([[HACK: {}]], { i(0) }))),
+  -- s('warn', comment(1, fmt([[{}: {}]], {
+  --   c(1, {t('WARN'), t('WARNING'), t('XXX')}),
+  --   i(0),
+  -- }))),
+  -- s('fix', comment(1, fmt([[{}: {}]], {
+  --   c(1, {t('FIX'), t('FIXME'), t('ISSUE'), t('BUG')}),
+  --   i(0),
+  -- }))),
+}, { type = 'snippets', key = 'todo_comments'})