| To: vim_dev@googlegroups.com |
| Subject: Patch 7.3.514 |
| Fcc: outbox |
| From: Bram Moolenaar <Bram@moolenaar.net> |
| 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 |
| |
| |
| |
| |
| |
| *** 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 |
| |
| |
| |
| *** 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 |
| |
| |
| |
| *** 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"}, |
| |
| |
| |
| *** 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. |
| |
| |
| |
| *** 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 |
| |
| |
| |
| *** 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 /// |