(local mysnip {})
(local M {})
(local map vim.keymap.set)
(fn M.set-snip [sn]
(tset mysnip sn.abbr sn.snip))
(fn M.setup-keymap []
(map :i :<tab>
#(let [[row col] (vim.api.nvim_win_get_cursor 0)]
(if (= 0 col)
:<tab>
(let [newpos [row (- col 1)]
cword (vim.fn.expand :<cword>)
snip (. mysnip cword)]
(vim.api.nvim_win_set_cursor 0 newpos)
(if snip
(.. "<esc>ciw<cmd>lua vim.snippet.expand'" (snip:gsub "\n" "\\n") "'<cr>")
(do (vim.api.nvim_win_set_cursor 0 curpos)
(if (vim.snippet.active { :direction 1 })
"<cmd>lua vim.snippet.jump(1)"
"<tab>"))))))
{ :expr true })
(map [:i :s] :<s-tab>
#(if (vim.snippet.active { :direction 1 })
(vim.snippet.jump -1)
:<s-tab>)
{ :expr true }))
M