]> granicus.if.org Git - vim/commitdiff
patch 8.0.0878: no completion for :mapclear v8.0.0878
authorBram Moolenaar <Bram@vim.org>
Sun, 6 Aug 2017 13:22:15 +0000 (15:22 +0200)
committerBram Moolenaar <Bram@vim.org>
Sun, 6 Aug 2017 13:22:15 +0000 (15:22 +0200)
Problem:    No completion for :mapclear.
Solution:   Add completion (Nobuhiro Takasaki et al. closes #1943)

runtime/doc/eval.txt
runtime/doc/map.txt
src/ex_docmd.c
src/ex_getln.c
src/proto/ex_docmd.pro
src/testdir/test_cmdline.vim
src/version.c
src/vim.h

index 261b5ca6666a8ecf0bcc04207bb773afe8b64b72..aa84494e7d3305a81fbce512fef8485c51ae5178 100644 (file)
@@ -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
index 239c7915c981c1192cb6125449b7ec6e07fd0927..983fb2db4d490bcd38fa90f712be7c958b551778 100644 (file)
@@ -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
index c61cd2e95546eb4c2a7dd99916b10d303800fa47..fa5a888d4ee111638e88818f77b8a6a14e993c21 100644 (file)
@@ -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;
index 894756da27db19d7cff104afdf465d8257256bb2..74d793735bf075874d8da44c60212b93227334da 100644 (file)
@@ -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},
index 11a3f71aca600aef0e912eebd62573ddd630449b..1a931e5395f289aa9e083d534c9f151ab472b245 100644 (file)
@@ -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 : */
index c27237631dfae5abc997f5c01ab4854e98f7e66a..f9499acf09b5698109199114df209c975879329f 100644 (file)
@@ -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']
index c85cf1e8277941842cf0dc67604eec12b24e57c1..de89ce45af2ea4083bc2fc815101d4278eaec5b9 100644 (file)
@@ -769,6 +769,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    878,
 /**/
     877,
 /**/
index 2562d9e8b0c323349dbbb5894fa100465b48b417..d7d3556c1fed6dea526c2828c714533631e32afd 100644 (file)
--- a/src/vim.h
+++ b/src/vim.h
@@ -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