diff options
author | Bram Moolenaar <Bram@vim.org> | 2017-08-06 15:22:15 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2017-08-06 15:22:15 +0200 |
commit | cae92dc3d5bdd4009910671328cd01394bfbe2cf (patch) | |
tree | 8c1473faf774b53957d7987c764bbf5147a607db | |
parent | 6d8197485dc84532e37aced2c39292bff374200d (diff) |
patch 8.0.0878: no completion for :mapclearv8.0.0878
Problem: No completion for :mapclear.
Solution: Add completion (Nobuhiro Takasaki et al. closes #1943)
-rw-r--r-- | runtime/doc/eval.txt | 1 | ||||
-rw-r--r-- | runtime/doc/map.txt | 1 | ||||
-rw-r--r-- | src/ex_docmd.c | 22 | ||||
-rw-r--r-- | src/ex_getln.c | 1 | ||||
-rw-r--r-- | src/proto/ex_docmd.pro | 1 | ||||
-rw-r--r-- | src/testdir/test_cmdline.vim | 5 | ||||
-rw-r--r-- | src/version.c | 2 | ||||
-rw-r--r-- | src/vim.h | 1 |
8 files changed, 34 insertions, 0 deletions
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt index 261b5ca666..aa84494e7d 100644 --- a/runtime/doc/eval.txt +++ b/runtime/doc/eval.txt @@ -4368,6 +4368,7 @@ getcompletion({pat}, {type} [, {filtered}]) *getcompletion()* highlight highlight groups history :history suboptions locale locale names (as output of locale -a) + mapclear buffer argument mapping mapping name menu menus messages |:messages| suboptions diff --git a/runtime/doc/map.txt b/runtime/doc/map.txt index 239c7915c9..983fb2db4d 100644 --- a/runtime/doc/map.txt +++ b/runtime/doc/map.txt @@ -1279,6 +1279,7 @@ completion can be enabled: -complete=highlight highlight groups -complete=history :history suboptions -complete=locale locale names (as output of locale -a) + -complete=mapclear buffer argument -complete=mapping mapping name -complete=menu menus -complete=messages |:messages| suboptions diff --git a/src/ex_docmd.c b/src/ex_docmd.c index c61cd2e955..fa5a888d4e 100644 --- a/src/ex_docmd.c +++ b/src/ex_docmd.c @@ -4223,6 +4223,19 @@ set_one_cmd_context( case CMD_xunmap: return set_context_in_map_cmd(xp, cmd, arg, forceit, FALSE, TRUE, ea.cmdidx); + case CMD_mapclear: + case CMD_nmapclear: + case CMD_vmapclear: + case CMD_omapclear: + case CMD_imapclear: + case CMD_cmapclear: + case CMD_lmapclear: + case CMD_smapclear: + case CMD_xmapclear: + xp->xp_context = EXPAND_MAPCLEAR; + xp->xp_pattern = arg; + break; + case CMD_abbreviate: case CMD_noreabbrev: case CMD_cabbrev: case CMD_cnoreabbrev: case CMD_iabbrev: case CMD_inoreabbrev: @@ -5964,6 +5977,7 @@ static struct && (defined(FEAT_GETTEXT) || defined(FEAT_MBYTE)) {EXPAND_LOCALES, "locale"}, #endif + {EXPAND_MAPCLEAR, "mapclear"}, {EXPAND_MAPPINGS, "mapping"}, {EXPAND_MENUS, "menu"}, {EXPAND_MESSAGES, "messages"}, @@ -12083,6 +12097,14 @@ get_messages_arg(expand_T *xp UNUSED, int idx) } #endif + char_u * +get_mapclear_arg(expand_T *xp UNUSED, int idx) +{ + if (idx == 0) + return (char_u *)"<buffer>"; + return NULL; +} + #ifdef FEAT_AUTOCMD static int filetype_detect = FALSE; static int filetype_plugin = FALSE; diff --git a/src/ex_getln.c b/src/ex_getln.c index 894756da27..74d793735b 100644 --- a/src/ex_getln.c +++ b/src/ex_getln.c @@ -4879,6 +4879,7 @@ ExpandFromContext( { {EXPAND_COMMANDS, get_command_name, FALSE, TRUE}, {EXPAND_BEHAVE, get_behave_arg, TRUE, TRUE}, + {EXPAND_MAPCLEAR, get_mapclear_arg, TRUE, TRUE}, {EXPAND_MESSAGES, get_messages_arg, TRUE, TRUE}, #ifdef FEAT_CMDHIST {EXPAND_HISTORY, get_history_arg, TRUE, TRUE}, diff --git a/src/proto/ex_docmd.pro b/src/proto/ex_docmd.pro index 11a3f71aca..1a931e5395 100644 --- a/src/proto/ex_docmd.pro +++ b/src/proto/ex_docmd.pro @@ -62,4 +62,5 @@ int put_line(FILE *fd, char *s); void dialog_msg(char_u *buff, char *format, char_u *fname); char_u *get_behave_arg(expand_T *xp, int idx); char_u *get_messages_arg(expand_T *xp, int idx); +char_u *get_mapclear_arg(expand_T *xp, int idx); /* vim: set ft=c : */ diff --git a/src/testdir/test_cmdline.vim b/src/testdir/test_cmdline.vim index c27237631d..f9499acf09 100644 --- a/src/testdir/test_cmdline.vim +++ b/src/testdir/test_cmdline.vim @@ -222,6 +222,11 @@ func Test_getcompletion() let l = getcompletion('not', 'messages') call assert_equal([], l) + let l = getcompletion('', 'mapclear') + call assert_true(index(l, '<buffer>') >= 0) + let l = getcompletion('not', 'mapclear') + call assert_equal([], l) + if has('cscope') let l = getcompletion('', 'cscope') let cmds = ['add', 'find', 'help', 'kill', 'reset', 'show'] diff --git a/src/version.c b/src/version.c index c85cf1e827..de89ce45af 100644 --- a/src/version.c +++ b/src/version.c @@ -770,6 +770,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 878, +/**/ 877, /**/ 876, @@ -808,6 +808,7 @@ extern int (*dyn_libintl_putenv)(const char *envstring); #define EXPAND_USER_ADDR_TYPE 44 #define EXPAND_PACKADD 45 #define EXPAND_MESSAGES 46 +#define EXPAND_MAPCLEAR 47 /* Values for exmode_active (0 is no exmode) */ #define EXMODE_NORMAL 1 |