Mercurial > vim
changeset 11026:fa69f6272692 v8.0.0402
patch 8.0.0402: :map completion does not have <special>
commit https://github.com/vim/vim/commit/cf5fdf7d1689ecb145b634dcb9c6e9fc60f63869
Author: Bram Moolenaar <Bram@vim.org>
Date: Thu Mar 2 23:05:51 2017 +0100
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.
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Thu, 02 Mar 2017 23:15:05 +0100 |
parents | fc32a43631c2 |
children | ad18cd462fdd |
files | src/getchar.c src/testdir/test_cmdline.vim src/version.c |
diffstat | 3 files changed, 30 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/getchar.c +++ b/src/getchar.c @@ -4216,6 +4216,11 @@ set_context_in_map_cmd( arg = skipwhite(arg + 8); continue; } + if (STRNCMP(arg, "<special>", 9) == 0) + { + arg = skipwhite(arg + 9); + continue; + } #ifdef FEAT_EVAL if (STRNCMP(arg, "<script>", 8) == 0) { @@ -4267,7 +4272,7 @@ ExpandMappings( { count = 0; - for (i = 0; i < 6; ++i) + for (i = 0; i < 7; ++i) { if (i == 0) p = (char_u *)"<silent>"; @@ -4285,6 +4290,8 @@ ExpandMappings( #endif else if (i == 5) p = (char_u *)"<nowait>"; + else if (i == 6) + p = (char_u *)"<special>"; else continue;
--- a/src/testdir/test_cmdline.vim +++ b/src/testdir/test_cmdline.vim @@ -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_match_completion() if !has('cmdline_compl') return