patch 8.0.0878: no completion for :mapclear
Problem: No completion for :mapclear.
Solution: Add completion (Nobuhiro Takasaki et al. closes #1943)
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index c61cd2e..fa5a888 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -4223,6 +4223,19 @@
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 @@
&& (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 @@
}
#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 894756d..74d7937 100644
--- a/src/ex_getln.c
+++ b/src/ex_getln.c
@@ -4879,6 +4879,7 @@
{
{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 11a3f71..1a931e5 100644
--- a/src/proto/ex_docmd.pro
+++ b/src/proto/ex_docmd.pro
@@ -62,4 +62,5 @@
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 c272376..f9499ac 100644
--- a/src/testdir/test_cmdline.vim
+++ b/src/testdir/test_cmdline.vim
@@ -222,6 +222,11 @@
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 c85cf1e..de89ce4 100644
--- a/src/version.c
+++ b/src/version.c
@@ -770,6 +770,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 878,
+/**/
877,
/**/
876,
diff --git a/src/vim.h b/src/vim.h
index 2562d9e..d7d3556 100644
--- a/src/vim.h
+++ b/src/vim.h
@@ -808,6 +808,7 @@
#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