diff options
Diffstat (limited to 'lua/lv-autopairs/init.lua')
-rw-r--r-- | lua/lv-autopairs/init.lua | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/lua/lv-autopairs/init.lua b/lua/lv-autopairs/init.lua new file mode 100644 index 00000000..5d0adf85 --- /dev/null +++ b/lua/lv-autopairs/init.lua @@ -0,0 +1,77 @@ +require('nvim-autopairs').setup() +local npairs = require('nvim-autopairs') + +local function imap(lhs, rhs, opts) + local options = {noremap = false} + if opts then options = vim.tbl_extend('force', options, opts) end + vim.api.nvim_set_keymap('i', lhs, rhs, options) +end + +_G.MUtils = {} + +-- TEST +vim.g.completion_confirm_key = "" +MUtils.completion_confirm = function() + if vim.fn.pumvisible() ~= 0 then + if vim.fn.complete_info()["selected"] ~= -1 then + vim.fn["compe#confirm"]() + -- return npairs.esc("<c-y>") + return npairs.esc("") + else + vim.defer_fn(function() + vim.fn["compe#confirm"]("<cr>") + end, 20) + return npairs.esc("<c-n>") + end + else + return npairs.check_break_line_char() + end +end +-- TEST + +MUtils.completion_confirm = function() + if vim.fn.pumvisible() ~= 0 then + if vim.fn.complete_info()["selected"] ~= -1 then + vim.fn["compe#confirm"]() + return npairs.esc("") + else + vim.api.nvim_select_popupmenu_item(0, false, false, {}) + vim.fn["compe#confirm"]() + return npairs.esc("<c-n>") + end + else + return npairs.check_break_line_char() + end +end + +MUtils.tab = function() + if vim.fn.pumvisible() ~= 0 then + return npairs.esc("<C-n>") + else + if vim.fn["vsnip#available"](1) ~= 0 then + vim.fn.feedkeys(string.format('%c%c%c(vsnip-expand-or-jump)', 0x80, 253, 83)) + return npairs.esc("") + else + return npairs.esc("<Tab>") + end + end +end + +MUtils.s_tab = function() + if vim.fn.pumvisible() ~= 0 then + return npairs.esc("<C-p>") + else + if vim.fn["vsnip#jumpable"](-1) ~= 0 then + vim.fn.feedkeys(string.format('%c%c%c(vsnip-jump-prev)', 0x80, 253, 83)) + return npairs.esc("") + else + return npairs.esc("<C-h>") + end + end +end + +-- Autocompletion and snippets +vim.api.nvim_set_keymap('i', '<CR>', 'v:lua.MUtils.completion_confirm()', {expr = true, noremap = true}) +-- imap("<CR>", "v:lua.MUtils.completion_confirm()", {expr = true, noremap = true}) +imap("<Tab>", "v:lua.MUtils.tab()", {expr = true, noremap = true}) +imap("<S-Tab>", "v:lua.MUtils.s_tab()", {expr = true, noremap = true}) |