local remap = vim.api.nvim_set_keymap local npairs = require('nvim-autopairs') npairs.setup({map_bs = true, map_cr = true}) vim.g.coq_settings = {keymap = {recommended = false}} -- these mappings are coq recommended mappings unrelated to nvim-autopairs remap('i', '', [[pumvisible() ? "" : ""]], {expr = true, noremap = true}) remap('i', '', [[pumvisible() ? "" : ""]], {expr = true, noremap = true}) remap('i', '', [[pumvisible() ? "" : ""]], {expr = true, noremap = true}) remap('i', '', [[pumvisible() ? "" : ""]], {expr = true, noremap = true}) -- skip it, if you use another global object _G.MUtils = {} MUtils.CR = function() if vim.fn.pumvisible() ~= 0 then if vim.fn.complete_info({'selected'}).selected ~= -1 then return npairs.esc('') else return npairs.esc('') .. npairs.autopairs_cr() end else return npairs.autopairs_cr() end end remap('i', '', 'v:lua.MUtils.CR()', {expr = true, noremap = true}) MUtils.BS = function() if vim.fn.pumvisible() ~= 0 and vim.fn.complete_info({'mode'}).mode == 'eval' then return npairs.esc('') .. npairs.autopairs_bs() else return npairs.autopairs_bs() end end remap('i', '', 'v:lua.MUtils.BS()', {expr = true, noremap = true})