local remap = vim.api.nvim_set_keymap local npairs = require('nvim-autopairs') npairs.setup({ map_bs = false, map_cr = false }) 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 }) -- put this to setup function and press to use fast_wrap npairs.setup({ fast_wrap = {}, }) -- change default fast_wrap npairs.setup({ fast_wrap = { map = '', chars = { '{', '[', '(', '"', "'" }, pattern = [=[[%'%"%>%]%)%}%,]]=], end_key = '$', before_key = 'h', after_key = 'l', cursor_pos_before = true, keys = 'qwertyuiopzxcvbnmasdfghjkl', manual_position = true, highlight = 'Search', highlight_grey='Comment' }, }) npairs.remove_rule('`')