require('nvim-autopairs').setup({ check_ts = true })

--- Auto-space rules
local npairs = require 'nvim-autopairs'
local Rule = require 'nvim-autopairs.rule'

npairs.setup({
    check_ts = true,
    ts_config = {
        lua = { 'string' }, -- it will not add a pair on that treesitter node
        javascript = { 'template_string' },
        java = false -- don't check treesitter on java
    }
})

local ts_conds = require('nvim-autopairs.ts-conds')

-- press % => %% only while inside a comment or string
npairs.add_rules({
    Rule("%", "%", "lua"):with_pair(ts_conds.is_ts_node({ 'string', 'comment' })),
    Rule("$", "$", "lua"):with_pair(ts_conds.is_not_ts_node({ 'function' }))
})

npairs.add_rules {
    Rule(' ', ' '):with_pair(function(opts)
        local pair = opts.line:sub(opts.col, opts.col + 1)
        return vim.tbl_contains({ '()', '[]', '{}' }, pair)
    end)
}
local cmp_autopairs = require('nvim-autopairs.completion.cmp')
local cmp = require('cmp')
cmp.event:on('confirm_done',
    cmp_autopairs.on_confirm_done({ map_char = { tex = '' } }))
