mirror of
https://github.com/neovim/neovim.git
synced 2025-09-27 13:38:34 +00:00
vim-patch:8.0.0402: :map completion does not have <special>
Problem: :map completion does not have <special>. (Dominique Pelle)
Solution: Recognize <special> in completion. Add a test.
cf5fdf7d16
This commit is contained in:
@@ -3366,6 +3366,10 @@ set_context_in_map_cmd (
|
||||
arg = skipwhite(arg + 8);
|
||||
continue;
|
||||
}
|
||||
if (STRNCMP(arg, "<special>", 9) == 0) {
|
||||
arg = skipwhite(arg + 9);
|
||||
continue;
|
||||
}
|
||||
if (STRNCMP(arg, "<script>", 8) == 0) {
|
||||
arg = skipwhite(arg + 8);
|
||||
continue;
|
||||
@@ -3408,21 +3412,24 @@ int ExpandMappings(regmatch_T *regmatch, int *num_file, char_u ***file)
|
||||
for (round = 1; round <= 2; ++round) {
|
||||
count = 0;
|
||||
|
||||
for (i = 0; i < 6; ++i) {
|
||||
if (i == 0)
|
||||
for (i = 0; i < 7; i++) {
|
||||
if (i == 0) {
|
||||
p = (char_u *)"<silent>";
|
||||
else if (i == 1)
|
||||
} else if (i == 1) {
|
||||
p = (char_u *)"<unique>";
|
||||
else if (i == 2)
|
||||
} else if (i == 2) {
|
||||
p = (char_u *)"<script>";
|
||||
else if (i == 3)
|
||||
} else if (i == 3) {
|
||||
p = (char_u *)"<expr>";
|
||||
else if (i == 4 && !expand_buffer)
|
||||
} else if (i == 4 && !expand_buffer) {
|
||||
p = (char_u *)"<buffer>";
|
||||
else if (i == 5)
|
||||
} else if (i == 5) {
|
||||
p = (char_u *)"<nowait>";
|
||||
else
|
||||
} else if (i == 6) {
|
||||
p = (char_u *)"<special>";
|
||||
} else {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (vim_regexec(regmatch, p, (colnr_T)0)) {
|
||||
if (round == 1)
|
||||
|
@@ -25,6 +25,26 @@ func Test_complete_wildmenu()
|
||||
set nowildmenu
|
||||
endfunc
|
||||
|
||||
func Test_map_completion()
|
||||
if !has('cmdline_compl')
|
||||
return
|
||||
endif
|
||||
call feedkeys(":map <unique> <si\<Tab>\<Home>\"\<CR>", 'xt')
|
||||
call assert_equal('"map <unique> <silent>', getreg(':'))
|
||||
call feedkeys(":map <script> <un\<Tab>\<Home>\"\<CR>", 'xt')
|
||||
call assert_equal('"map <script> <unique>', getreg(':'))
|
||||
call feedkeys(":map <expr> <sc\<Tab>\<Home>\"\<CR>", 'xt')
|
||||
call assert_equal('"map <expr> <script>', getreg(':'))
|
||||
call feedkeys(":map <buffer> <e\<Tab>\<Home>\"\<CR>", 'xt')
|
||||
call assert_equal('"map <buffer> <expr>', getreg(':'))
|
||||
call feedkeys(":map <nowait> <b\<Tab>\<Home>\"\<CR>", 'xt')
|
||||
call assert_equal('"map <nowait> <buffer>', getreg(':'))
|
||||
call feedkeys(":map <special> <no\<Tab>\<Home>\"\<CR>", 'xt')
|
||||
call assert_equal('"map <special> <nowait>', getreg(':'))
|
||||
call feedkeys(":map <silent> <sp\<Tab>\<Home>\"\<CR>", 'xt')
|
||||
call assert_equal('"map <silent> <special>', getreg(':'))
|
||||
endfunc
|
||||
|
||||
func Test_expr_completion()
|
||||
if !(has('cmdline_compl') && has('eval'))
|
||||
return
|
||||
|
Reference in New Issue
Block a user