dotfiles/config/nvim/lua/plugins/autopairs.lua
2024-07-08 07:37:54 +03:30

60 lines
1.6 KiB
Lua

-- 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 = "<M-e>",
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