-- Setup nvim-cmp. local status_ok, npairs = pcall(require, "nvim-autopairs") if not status_ok then return end npairs.setup { check_ts = true, ts_config = { lua = { "string", "source" }, javascript = { "string", "template_string" }, java = false, }, disable_filetype = { "TelescopePrompt", "spectre_panel" }, fast_wrap = { map = "", chars = { "{", "[", "(", '"', "'" }, pattern = string.gsub([[ [%'%"%)%>%]%)%}%,] ]], "%s+", ""), offset = 0, -- Offset from pattern match end_key = "$", keys = "qwertyuiopzxcvbnmasdfghjkl", check_comma = true, highlight = "PmenuSel", highlight_grey = "LineNr", }, } local cmp_autopairs = require "nvim-autopairs.completion.cmp" local cmp_status_ok, cmp = pcall(require, "cmp") if not cmp_status_ok then return end cmp.event:on("confirm_done", cmp_autopairs.on_confirm_done { map_char = { tex = "" } }) local npairs = require'nvim-autopairs' local Rule = require'nvim-autopairs.rule' local brackets = { { '(', ')' }, { '[', ']' }, { '{', '}' } } npairs.add_rules { Rule(' ', ' ') :with_pair(function (opts) local pair = opts.line:sub(opts.col - 1, opts.col) return vim.tbl_contains({ brackets[1][1]..brackets[1][2], brackets[2][1]..brackets[2][2], brackets[3][1]..brackets[3][2], }, pair) end) } for _,bracket in pairs(brackets) do npairs.add_rules { Rule(bracket[1]..' ', ' '..bracket[2]) :with_pair(function() return false end) :with_move(function(opts) return opts.prev_char:match('.%'..bracket[2]) ~= nil end) :use_key(bracket[2]) } end