From 0ebfef16ec942fe86535c3c4c40e2d998b33b897 Mon Sep 17 00:00:00 2001 From: Yarden Sod-Moriah Date: Wed, 20 Apr 2022 11:55:39 +0300 Subject: [PATCH] Use replace_endpair when expanding with endwise --- lua/nvim-autopairs.lua | 30 +++++++++++++++++------------ tests/nvim-autopairs_spec.lua | 36 +++++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+), 12 deletions(-) diff --git a/lua/nvim-autopairs.lua b/lua/nvim-autopairs.lua index cfc8e0c..2a13c37 100644 --- a/lua/nvim-autopairs.lua +++ b/lua/nvim-autopairs.lua @@ -553,26 +553,32 @@ M.autopairs_cr = function(bufnr) #rule.end_pair, rule.is_regex ) + + local cond_opt = { + ts_node = M.state.ts_node, + check_endwise_ts = true, + rule = rule, + bufnr = bufnr, + col = col + 1, + line = line, + prev_char = prev_char, + next_char = next_char, + } + + local end_pair = rule:get_end_pair(cond_opt) + local end_pair_length = rule:get_end_pair_length(end_pair) + -- log.debug('prev_char' .. rule.start_pair) -- log.debug('prev_char' .. prev_char) -- log.debug('next_char' .. next_char) if rule.is_endwise and utils.compare(rule.start_pair, prev_char, rule.is_regex) - and rule:can_cr({ - ts_node = M.state.ts_node, - check_endwise_ts = true, - bufnr = bufnr, - rule = rule, - col = col, - prev_char = prev_char, - next_char = next_char, - line = line, - }) + and rule:can_cr(cond_opt) then return utils.esc( - rule.end_pair - .. utils.repeat_key(utils.key.join_left, #rule.end_pair) + end_pair + .. utils.repeat_key(utils.key.join_left, end_pair_length) -- FIXME do i need to re indent twice #118 .. '====O' ) diff --git a/tests/nvim-autopairs_spec.lua b/tests/nvim-autopairs_spec.lua index a4c83d9..ab4e777 100644 --- a/tests/nvim-autopairs_spec.lua +++ b/tests/nvim-autopairs_spec.lua @@ -596,6 +596,42 @@ local data = { before = [[ | aaa]], after = [[ "ab| aaa]] }, + { + setup_func = function() + npairs.clear_rules() + npairs.add_rule(Rule("{", "}"):end_wise()) + end, + filetype = 'javascript', + name = 'custom endwise rule', + key = [[]], + before = [[function () {| ]], + after = { + [[function () {]], + [[|]], + [[}]], + }, + }, + { + setup_func = function() + npairs.clear_rules() + npairs.add_rule( + Rule("{", "") + :replace_endpair(function () + return "}" + end) + :end_wise() + ) + end, + filetype = 'javascript', + name = 'custom endwise rule with custom end_pair', + key = [[]], + before = [[function () {| ]], + after = { + [[function () {]], + [[|]], + [[}]], + }, + }, } local run_data = _G.Test_filter(data)