mirror of
https://github.com/ilyakooo0/nvim-autopairs.git
synced 2024-09-11 07:15:44 +03:00
test fastwrap not finish
This commit is contained in:
parent
4b218c4e38
commit
86050e29dc
@ -18,6 +18,8 @@ local default = {
|
|||||||
enable_moveright = true,
|
enable_moveright = true,
|
||||||
enable_afterquote = true,
|
enable_afterquote = true,
|
||||||
enable_check_bracket_line = true,
|
enable_check_bracket_line = true,
|
||||||
|
enable_fastwrap_key = "<M-e>",
|
||||||
|
fastwrap_previous_char = string.gsub([[ [%'%"%)%>%]%)%}] ]],"%s+", ""),
|
||||||
ts_config = {
|
ts_config = {
|
||||||
lua = {'string', 'source'},
|
lua = {'string', 'source'},
|
||||||
javascript = {'string', 'template_string'}
|
javascript = {'string', 'template_string'}
|
||||||
@ -186,6 +188,14 @@ M.on_attach = function(bufnr)
|
|||||||
augroup end ]],
|
augroup end ]],
|
||||||
bufnr, bufnr, bufnr), false)
|
bufnr, bufnr, bufnr), false)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if M.config.enable_fastwrap_key then
|
||||||
|
api.nvim_buf_set_keymap(bufnr,"i",
|
||||||
|
M.config.enable_fastwrap_key,
|
||||||
|
"<cmd>lua require('nvim-autopairs').autopairs_fastwrap()<cr>",
|
||||||
|
{noremap = true})
|
||||||
|
end
|
||||||
|
|
||||||
api.nvim_buf_set_keymap(bufnr,
|
api.nvim_buf_set_keymap(bufnr,
|
||||||
'i',
|
'i',
|
||||||
"<bs>",
|
"<bs>",
|
||||||
@ -450,7 +460,61 @@ M.autopairs_afterquote = function(line, key_char)
|
|||||||
return utils.esc(key_char)
|
return utils.esc(key_char)
|
||||||
end
|
end
|
||||||
|
|
||||||
M.autopairs_closequote_expr=function ()
|
M.autopairs_fastwrap = function(line)
|
||||||
|
line = line or utils.text_get_current_line(0)
|
||||||
|
local _, col = utils.get_cursor()
|
||||||
|
local prev_char, next_char = utils.text_cusor_line(line, col, 1, 1, false)
|
||||||
|
local end_pair = ''
|
||||||
|
if
|
||||||
|
utils.is_bracket(prev_char)
|
||||||
|
and not utils.is_in_quote(line, col, next_char)
|
||||||
|
then
|
||||||
|
for _, rule in pairs(M.state.rules) do
|
||||||
|
if rule.start_pair == prev_char then
|
||||||
|
end_pair = rule.end_pair
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if end_pair == '' then return end
|
||||||
|
local is_prev_slash = false
|
||||||
|
local end_pair_pos = 0
|
||||||
|
local target_pos = 0
|
||||||
|
for i = col + 3, #line, 1 do
|
||||||
|
local char = line:sub(i, i )
|
||||||
|
if not is_prev_slash and char == end_pair then
|
||||||
|
end_pair_pos = i
|
||||||
|
end
|
||||||
|
if string.match(char, M.config.fastwrap_previous_char) then
|
||||||
|
if target_pos == 0 then
|
||||||
|
target_pos = i + 1
|
||||||
|
elseif end_pair_pos > 0 and i > end_pair_pos then
|
||||||
|
target_pos = i + 1
|
||||||
|
else
|
||||||
|
target_pos = 0
|
||||||
|
end
|
||||||
|
end
|
||||||
|
-- if char == ' ' then
|
||||||
|
-- if target_pos == 0 then
|
||||||
|
-- target_pos = i -1
|
||||||
|
-- elseif end_pair_pos > 0 and i > end_pair_pos then
|
||||||
|
-- target_pos = i -1
|
||||||
|
-- break
|
||||||
|
-- end
|
||||||
|
-- end
|
||||||
|
is_prev_slash = char == '\\'
|
||||||
|
end
|
||||||
|
if target_pos > 0 then
|
||||||
|
if end_pair_pos > 0 then
|
||||||
|
line = line:sub(1, end_pair_pos -1) .. line:sub(end_pair_pos + 1,#line)
|
||||||
|
end
|
||||||
|
line = line:sub(1, target_pos -1) .. end_pair .. line:sub(target_pos,#line)
|
||||||
|
else
|
||||||
|
line = line .. end_pair
|
||||||
|
end
|
||||||
|
vim.fn.setline('.', line)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
M.autopairs_closequote_expr = function ()
|
||||||
vim.fn.setline('.', M.state.expr_quote)
|
vim.fn.setline('.', M.state.expr_quote)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
54
tests/fastwrap_spec.lua
Normal file
54
tests/fastwrap_spec.lua
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
local npairs = require('nvim-autopairs')
|
||||||
|
|
||||||
|
_G.npairs = npairs
|
||||||
|
|
||||||
|
npairs.setup({
|
||||||
|
enable_afterquote = true,
|
||||||
|
})
|
||||||
|
local data = {
|
||||||
|
{
|
||||||
|
name = 'move end wise after quote ',
|
||||||
|
filepath = './tests/endwise/init.lua',
|
||||||
|
filetype = 'lua',
|
||||||
|
linenr = 5,
|
||||||
|
key = [[<M-e>]],
|
||||||
|
before = [[const abc=(|"test",data ]],
|
||||||
|
after = [[const abc=(|"test"),data ]],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name = 'move end wise after quote ',
|
||||||
|
filepath = './tests/endwise/init.lua',
|
||||||
|
filetype = 'lua',
|
||||||
|
linenr = 5,
|
||||||
|
key = [[<M-e>]],
|
||||||
|
before = [[const abc=(|"test"),data ]],
|
||||||
|
after = [[const abc=(|"test",data) ]],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name = 'move end wise after quote ',
|
||||||
|
filepath = './tests/endwise/init.lua',
|
||||||
|
filetype = 'lua',
|
||||||
|
linenr = 5,
|
||||||
|
key = [[<M-e>]],
|
||||||
|
before = [[const abc=(|"test",data),dadas ]],
|
||||||
|
after = [[const abc=(|"test",data,dadas) ]],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name = 'move end wise after quote ',
|
||||||
|
filepath = './tests/endwise/init.lua',
|
||||||
|
filetype = 'lua',
|
||||||
|
linenr = 5,
|
||||||
|
key = [[<M-e>]],
|
||||||
|
before = [[Plug {(|'dsfdsa',) on = 'aaa'} ]],
|
||||||
|
after = [[Plug {('dsfdsa', on = 'aaa')} ]],
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
local run_data = _G.Test_filter(data)
|
||||||
|
|
||||||
|
local _, ts_utils = pcall(require, 'nvim-treesitter.ts_utils')
|
||||||
|
_G.TU = ts_utils
|
||||||
|
|
||||||
|
describe('[endwise tag]', function()
|
||||||
|
_G.Test_withfile(run_data, {})
|
||||||
|
end)
|
Loading…
Reference in New Issue
Block a user