To: vim_dev@googlegroups.com Subject: Patch 7.3.514 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 7.3.514 Problem: No completion for :history command. Solution: Add the completion and update the docs. Also fix ":behave" completion. (Dominique Pelle) Files: runtime/doc/cmdline.txt, runtime/doc/map.txt, src/ex_docmd.c, src/ex_getln.c, src/vim.h *** ../vim-7.3.513/runtime/doc/cmdline.txt 2010-08-15 21:57:17.000000000 +0200 --- runtime/doc/cmdline.txt 2012-04-30 18:30:00.000000000 +0200 *************** *** 330,341 **** :his[tory] [{name}] [{first}][, [{last}]] List the contents of history {name} which can be: ! c[md] or : command-line history ! s[earch] or / search string history ! e[xpr] or = expression register history ! i[nput] or @ input line history ! d[ebug] or > debug command history ! a[ll] all of the above {not in Vi} If the numbers {first} and/or {last} are given, the respective --- 330,341 ---- :his[tory] [{name}] [{first}][, [{last}]] List the contents of history {name} which can be: ! c[md] or : command-line history ! s[earch] or / or ? search string history ! e[xpr] or = expression register history ! i[nput] or @ input line history ! d[ebug] or > debug command history ! a[ll] all of the above {not in Vi} If the numbers {first} and/or {last} are given, the respective *** ../vim-7.3.513/runtime/doc/map.txt 2011-07-20 16:36:35.000000000 +0200 --- runtime/doc/map.txt 2012-04-30 18:30:00.000000000 +0200 *************** *** 1202,1207 **** --- 1219,1225 ---- -complete=augroup autocmd groups -complete=buffer buffer names + -complete=behave :behave suboptions -complete=color color schemes -complete=command Ex command (and arguments) -complete=compiler compilers *************** *** 1216,1221 **** --- 1234,1240 ---- -complete=function function name -complete=help help subjects -complete=highlight highlight groups + -complete=history :history suboptions -complete=locale locale names (as output of locale -a) -complete=mapping mapping name -complete=menu menus *** ../vim-7.3.513/src/ex_docmd.c 2012-02-12 20:13:55.000000000 +0100 --- src/ex_docmd.c 2012-04-30 18:33:27.000000000 +0200 *************** *** 3920,3927 **** --- 3920,3935 ---- #endif case CMD_behave: xp->xp_context = EXPAND_BEHAVE; + xp->xp_pattern = arg; break; + #if defined(FEAT_CMDHIST) + case CMD_history: + xp->xp_context = EXPAND_HISTORY; + xp->xp_pattern = arg; + break; + #endif + #endif /* FEAT_CMDL_COMPL */ default: *************** *** 5329,5334 **** --- 5337,5343 ---- } command_complete[] = { {EXPAND_AUGROUP, "augroup"}, + {EXPAND_BEHAVE, "behave"}, {EXPAND_BUFFERS, "buffer"}, {EXPAND_COLORS, "color"}, {EXPAND_COMMANDS, "command"}, *************** *** 5350,5357 **** {EXPAND_FUNCTIONS, "function"}, {EXPAND_HELP, "help"}, {EXPAND_HIGHLIGHT, "highlight"}, #if (defined(HAVE_LOCALE_H) || defined(X_LOCALE)) \ ! && (defined(FEAT_GETTEXT) || defined(FEAT_MBYTE)) {EXPAND_LOCALES, "locale"}, #endif {EXPAND_MAPPINGS, "mapping"}, --- 5359,5369 ---- {EXPAND_FUNCTIONS, "function"}, {EXPAND_HELP, "help"}, {EXPAND_HIGHLIGHT, "highlight"}, + #if defined(FEAT_CMDHIST) + {EXPAND_HISTORY, "history"}, + #endif #if (defined(HAVE_LOCALE_H) || defined(X_LOCALE)) \ ! && (defined(FEAT_GETTEXT) || defined(FEAT_MBYTE)) {EXPAND_LOCALES, "locale"}, #endif {EXPAND_MAPPINGS, "mapping"}, *** ../vim-7.3.513/src/ex_getln.c 2012-03-07 19:16:49.000000000 +0100 --- src/ex_getln.c 2012-04-30 18:36:04.000000000 +0200 *************** *** 25,31 **** int cmdlen; /* number of chars in command line */ int cmdpos; /* current cursor position */ int cmdspos; /* cursor column on screen */ ! int cmdfirstc; /* ':', '/', '?', '=' or NUL */ int cmdindent; /* number of spaces before cmdline */ char_u *cmdprompt; /* message in front of cmdline */ int cmdattr; /* attributes for prompt */ --- 25,31 ---- int cmdlen; /* number of chars in command line */ int cmdpos; /* current cursor position */ int cmdspos; /* cursor column on screen */ ! int cmdfirstc; /* ':', '/', '?', '=', '>' or NUL */ int cmdindent; /* number of spaces before cmdline */ char_u *cmdprompt; /* message in front of cmdline */ int cmdattr; /* attributes for prompt */ *************** *** 111,116 **** --- 111,119 ---- #ifdef FEAT_CMDL_COMPL static int expand_shellcmd __ARGS((char_u *filepat, int *num_file, char_u ***file, int flagsarg)); static int ExpandRTDir __ARGS((char_u *pat, int *num_file, char_u ***file, char *dirname[])); + # ifdef FEAT_CMDHIST + static char_u *get_history_arg __ARGS((expand_T *xp, int idx)); + # endif # if defined(FEAT_USR_CMDS) && defined(FEAT_EVAL) static int ExpandUserDefined __ARGS((expand_T *xp, regmatch_T *regmatch, int *num_file, char_u ***file)); static int ExpandUserList __ARGS((expand_T *xp, int *num_file, char_u ***file)); *************** *** 4628,4633 **** --- 4631,4639 ---- { {EXPAND_COMMANDS, get_command_name, FALSE, TRUE}, {EXPAND_BEHAVE, get_behave_arg, TRUE, TRUE}, + #ifdef FEAT_CMDHIST + {EXPAND_HISTORY, get_history_arg, TRUE, TRUE}, + #endif #ifdef FEAT_USR_CMDS {EXPAND_USER_COMMANDS, get_user_commands, FALSE, TRUE}, {EXPAND_USER_CMD_FLAGS, get_user_cmd_flags, FALSE, TRUE}, *************** *** 5245,5250 **** --- 5251,5284 ---- NULL }; + #if defined(FEAT_CMDL_COMPL) || defined(PROTO) + /* + * Function given to ExpandGeneric() to obtain the possible first + * arguments of the ":history command. + */ + static char_u * + get_history_arg(xp, idx) + expand_T *xp UNUSED; + int idx; + { + static char_u compl[2] = { NUL, NUL }; + char *short_names = ":=@>?/"; + int short_names_count = STRLEN(short_names); + int history_name_count = sizeof(history_names) / sizeof(char *) - 1; + + if (idx < short_names_count) + { + compl[0] = (char_u)short_names[idx]; + return compl; + } + if (idx < short_names_count + history_name_count) + return (char_u *)history_names[idx - short_names_count]; + if (idx == short_names_count + history_name_count) + return (char_u *)"all"; + return NULL; + } + #endif + /* * init_history() - Initialize the command line history. * Also used to re-allocate the history when the size changes. *** ../vim-7.3.513/src/vim.h 2012-03-23 16:25:13.000000000 +0100 --- src/vim.h 2012-04-30 18:30:00.000000000 +0200 *************** *** 781,786 **** --- 781,787 ---- #define EXPAND_FILES_IN_PATH 38 #define EXPAND_OWNSYNTAX 39 #define EXPAND_LOCALES 40 + #define EXPAND_HISTORY 41 /* Values for exmode_active (0 is no exmode) */ #define EXMODE_NORMAL 1 *** ../vim-7.3.513/src/version.c 2012-04-30 18:18:43.000000000 +0200 --- src/version.c 2012-04-30 18:36:19.000000000 +0200 *************** *** 716,717 **** --- 716,719 ---- { /* Add new patch number below this line */ + /**/ + 514, /**/ -- You can be stopped by the police for biking over 65 miles per hour. You are not allowed to walk across a street on your hands. [real standing laws in Connecticut, United States of America] /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ \\\ an exciting new programming language -- http://www.Zimbu.org /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///