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("") return npairs.esc("") else vim.defer_fn(function() vim.fn["compe#confirm"]("") end, 20) return npairs.esc("") 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("") end else return npairs.check_break_line_char() end end MUtils.tab = function() if vim.fn.pumvisible() ~= 0 then return npairs.esc("") 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("") end end end MUtils.s_tab = function() if vim.fn.pumvisible() ~= 0 then return npairs.esc("") 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("") end end end -- Autocompletion and snippets vim.api.nvim_set_keymap('i', '', 'v:lua.MUtils.completion_confirm()', {expr = true, noremap = true}) -- imap("", "v:lua.MUtils.completion_confirm()", {expr = true, noremap = true}) imap("", "v:lua.MUtils.tab()", {expr = true, noremap = true}) imap("", "v:lua.MUtils.s_tab()", {expr = true, noremap = true})