Merge pull request #22303 from zeertzjq/vim-9.0.1315

vim-patch:9.0.1315: escaping for completion of map command not properly tested
This commit is contained in:
zeertzjq 2023-02-18 07:29:41 +08:00 committed by GitHub
commit bb369a14f3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 19 additions and 8 deletions

View File

@ -1194,7 +1194,7 @@ static char *translate_mapping(char_u *str, int cpo_flags)
} }
if (c == ' ' || c == '\t' || c == Ctrl_J || c == Ctrl_V if (c == ' ' || c == '\t' || c == Ctrl_J || c == Ctrl_V
|| (c == '\\' && !cpo_bslash)) { || c == '<' || (c == '\\' && !cpo_bslash)) {
ga_append(&ga, cpo_bslash ? Ctrl_V : '\\'); ga_append(&ga, cpo_bslash ? Ctrl_V : '\\');
} }

View File

@ -2720,7 +2720,7 @@ func Test_autocmd_bufreadpre()
close close
close close
call delete('XAutocmdBufReadPre.txt') call delete('XAutocmdBufReadPre.txt')
" set cpo-=g set cpo-=g
endfunc endfunc
" FileChangedShell tested in test_filechanged.vim " FileChangedShell tested in test_filechanged.vim

View File

@ -330,17 +330,21 @@ func Test_map_completion()
call assert_equal('"map <Left>', getreg(':')) call assert_equal('"map <Left>', getreg(':'))
call feedkeys(":map <A-Left>\<Tab>\<Home>\"\<CR>", 'xt') call feedkeys(":map <A-Left>\<Tab>\<Home>\"\<CR>", 'xt')
call assert_equal("\"map <A-Left>\<Tab>", getreg(':')) call assert_equal("\"map <A-Left>\<Tab>", getreg(':'))
call feedkeys(":map <M-Left>\<Tab>\<Home>\"\<CR>", 'xt')
call assert_equal("\"map <M-Left>x", getreg(':'))
unmap ,f unmap ,f
unmap ,g unmap ,g
unmap <Left> unmap <Left>
unmap <A-Left>x unmap <A-Left>x
set cpo-=< cpo-=B cpo-=k set cpo-=< cpo-=k
map <Left> left map <Left> left
call feedkeys(":map <L\<Tab>\<Home>\"\<CR>", 'xt') call feedkeys(":map <L\<Tab>\<Home>\"\<CR>", 'xt')
call assert_equal('"map <Left>', getreg(':')) call assert_equal('"map <Left>', getreg(':'))
call feedkeys(":map <M\<Tab>\<Home>\"\<CR>", 'xt') call feedkeys(":map <M\<Tab>\<Home>\"\<CR>", 'xt')
" call assert_equal("\"map <M\<Tab>", getreg(':')) call assert_equal("\"map <M\<Tab>", getreg(':'))
call feedkeys(":map \<C-V>\<C-V><M\<Tab>\<Home>\"\<CR>", 'xt')
call assert_equal("\"map \<C-V><Middle>x", getreg(':'))
unmap <Left> unmap <Left>
" set cpo+=< " set cpo+=<
@ -369,7 +373,7 @@ func Test_map_completion()
call feedkeys(":map <L\<Tab>\<Home>\"\<CR>", 'xt') call feedkeys(":map <L\<Tab>\<Home>\"\<CR>", 'xt')
call assert_equal('"map <Left>', getreg(':')) call assert_equal('"map <Left>', getreg(':'))
unmap <Left> unmap <Left>
" set cpo-=k set cpo-=k
call assert_fails('call feedkeys(":map \\\\%(\<Tab>\<Home>\"\<CR>", "xt")', 'E53:') call assert_fails('call feedkeys(":map \\\\%(\<Tab>\<Home>\"\<CR>", "xt")', 'E53:')

View File

@ -68,15 +68,20 @@ endfunc
func Test_cpo_B() func Test_cpo_B()
let save_cpo = &cpo let save_cpo = &cpo
new new
imap <buffer> x<Bslash>k Test
set cpo-=B set cpo-=B
iabbr <buffer> abc ab\<BS>d iabbr <buffer> abc ab\<BS>d
exe "normal iabc " exe "normal iabc "
call assert_equal('ab<BS>d ', getline(1)) call assert_equal('ab<BS>d ', getline(1))
call feedkeys(":imap <buffer> x\<C-A>\<C-B>\"\<CR>", 'tx')
call assert_equal('"imap <buffer> x\\k', @:)
%d %d
set cpo+=B set cpo+=B
iabbr <buffer> abc ab\<BS>d iabbr <buffer> abc ab\<BS>d
exe "normal iabc " exe "normal iabc "
call assert_equal('abd ', getline(1)) call assert_equal('abd ', getline(1))
call feedkeys(":imap <buffer> x\<C-A>\<C-B>\"\<CR>", 'tx')
call assert_equal('"imap <buffer> x\k', @:)
close! close!
let &cpo = save_cpo let &cpo = save_cpo
endfunc endfunc
@ -195,7 +200,8 @@ func Test_cpo_f()
set cpo+=f set cpo+=f
read test_cpoptions.vim read test_cpoptions.vim
call assert_equal('test_cpoptions.vim', @%) call assert_equal('test_cpoptions.vim', @%)
close!
bwipe!
let &cpo = save_cpo let &cpo = save_cpo
endfunc endfunc
@ -428,7 +434,7 @@ func Test_cpo_O()
let &cpo = save_cpo let &cpo = save_cpo
endfunc endfunc
" Test for the 'p' flag in 'cpo' is in the test_lispwords.vim file. " Test for the 'p' flag in 'cpo' is in the test_lispindent.vim file.
" Test for the 'P' flag in 'cpo' (appending to a file sets the current file " Test for the 'P' flag in 'cpo' (appending to a file sets the current file
" name) " name)
@ -444,7 +450,8 @@ func Test_cpo_P()
set cpo+=P set cpo+=P
write >> XfileCpoP write >> XfileCpoP
call assert_equal('XfileCpoP', @%) call assert_equal('XfileCpoP', @%)
close!
bwipe!
call delete('XfileCpoP') call delete('XfileCpoP')
let &cpo = save_cpo let &cpo = save_cpo
endfunc endfunc