diff --git a/7.1.036 b/7.1.036 new file mode 100644 index 0000000..5366b3e --- /dev/null +++ b/7.1.036 @@ -0,0 +1,461 @@ +To: vim-dev@vim.org +Subject: patch 7.1.036 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.036 +Problem: Completing ":echohl" argument should include "None". (Ori + Avtalion) ":match" should have "none" too. +Solution: Add flags to use expand_highlight(). Also fix that when disabling + FEAT_CMDL_COMPL compilation fails. (Chris Lubinski) +Files: src/eval.c, src/ex_docmd.c, src/ex_getln.c, src/proto/syntax.pro + src/syntax.c + + +*** ../vim-7.1.035/src/eval.c Tue Jul 24 10:44:10 2007 +--- src/eval.c Wed Jul 11 19:50:27 2007 +*************** +*** 1411,1417 **** + } + + +! #if (defined(FEAT_USR_CMDS) && defined(FEAT_CMDL_COMPL)) || defined(PROTO) + /* + * Call some vimL function and return the result in "*rettv". + * Uses argv[argc] for the function arguments. +--- 1411,1418 ---- + } + + +! #if (defined(FEAT_USR_CMDS) && defined(FEAT_CMDL_COMPL)) \ +! || defined(FEAT_COMPL_FUNC) || defined(PROTO) + /* + * Call some vimL function and return the result in "*rettv". + * Uses argv[argc] for the function arguments. +*************** +*** 1484,1489 **** +--- 1485,1491 ---- + return ret; + } + ++ # if (defined(FEAT_USR_CMDS) && defined(FEAT_CMDL_COMPL)) || defined(PROTO) + /* + * Call vimL function "func" and return the result as a string. + * Returns NULL when calling the function fails. +*************** +*** 1506,1513 **** + clear_tv(&rettv); + return retval; + } + +! #if defined(FEAT_COMPL_FUNC) || defined(PROTO) + /* + * Call vimL function "func" and return the result as a number. + * Returns -1 when calling the function fails. +--- 1508,1516 ---- + clear_tv(&rettv); + return retval; + } ++ # endif + +! # if defined(FEAT_COMPL_FUNC) || defined(PROTO) + /* + * Call vimL function "func" and return the result as a number. + * Returns -1 when calling the function fails. +*************** +*** 1530,1536 **** + clear_tv(&rettv); + return retval; + } +! #endif + + /* + * Call vimL function "func" and return the result as a list +--- 1533,1539 ---- + clear_tv(&rettv); + return retval; + } +! # endif + + /* + * Call vimL function "func" and return the result as a list +*************** +*** 1556,1563 **** + + return rettv.vval.v_list; + } +- + #endif + + /* + * Save the current function call pointer, and set it to NULL. +--- 1559,1566 ---- + + return rettv.vval.v_list; + } + #endif ++ + + /* + * Save the current function call pointer, and set it to NULL. +*** ../vim-7.1.035/src/ex_docmd.c Mon Jul 16 20:38:56 2007 +--- src/ex_docmd.c Sun Jul 15 17:20:09 2007 +*************** +*** 3406,3419 **** + case CMD_windo: + return arg; + +! #ifdef FEAT_SEARCH_EXTRA + case CMD_match: + if (*arg == NUL || !ends_excmd(*arg)) + { +! /* Dummy call to clear variables. */ +! set_context_in_highlight_cmd(xp, (char_u *)"link n"); +! xp->xp_context = EXPAND_HIGHLIGHT; +! xp->xp_pattern = arg; + arg = skipwhite(skiptowhite(arg)); + if (*arg != NUL) + { +--- 3406,3418 ---- + case CMD_windo: + return arg; + +! #ifdef FEAT_CMDL_COMPL +! # ifdef FEAT_SEARCH_EXTRA + case CMD_match: + if (*arg == NUL || !ends_excmd(*arg)) + { +! /* also complete "None" */ +! set_context_in_echohl_cmd(xp, arg); + arg = skipwhite(skiptowhite(arg)); + if (*arg != NUL) + { +*************** +*** 3422,3430 **** + } + } + return find_nextcmd(arg); +! #endif + +- #ifdef FEAT_CMDL_COMPL + /* + * All completion for the +cmdline_compl feature goes here. + */ +--- 3421,3428 ---- + } + } + return find_nextcmd(arg); +! # endif + + /* + * All completion for the +cmdline_compl feature goes here. + */ +*************** +*** 3622,3629 **** + break; + + case CMD_echohl: +! xp->xp_context = EXPAND_HIGHLIGHT; +! xp->xp_pattern = arg; + break; + #endif + case CMD_highlight: +--- 3620,3626 ---- + break; + + case CMD_echohl: +! set_context_in_echohl_cmd(xp, arg); + break; + #endif + case CMD_highlight: +*** ../vim-7.1.035/src/ex_getln.c Tue Jul 17 18:14:14 2007 +--- src/ex_getln.c Tue Jul 17 18:05:49 2007 +*************** +*** 268,274 **** +--- 268,276 ---- + { + xpc.xp_context = ccline.xp_context; + xpc.xp_pattern = ccline.cmdbuff; ++ # if defined(FEAT_USR_CMDS) && defined(FEAT_CMDL_COMPL) + xpc.xp_arg = ccline.xp_arg; ++ # endif + } + #endif + +*************** +*** 4151,4163 **** +--- 4153,4171 ---- + + #ifdef FEAT_EVAL + if (ccline.cmdfirstc == '=') ++ { ++ # ifdef FEAT_CMDL_COMPL + /* pass CMD_SIZE because there is no real command */ + set_context_for_expression(xp, str, CMD_SIZE); ++ # endif ++ } + else if (ccline.input_fn) + { + xp->xp_context = ccline.xp_context; + xp->xp_pattern = ccline.cmdbuff; ++ # if defined(FEAT_USR_CMDS) && defined(FEAT_CMDL_COMPL) + xp->xp_arg = ccline.xp_arg; ++ # endif + } + else + #endif +*************** +*** 4504,4509 **** +--- 4512,4523 ---- + /* Sort the results. Keep menu's in the specified order. */ + if (xp->xp_context != EXPAND_MENUNAMES && xp->xp_context != EXPAND_MENUS) + sort_strings(*file, *num_file); ++ ++ #ifdef FEAT_CMDL_COMPL ++ /* Reset the variables used for special highlight names expansion, so that ++ * they don't show up when getting normal highlight names by ID. */ ++ reset_expand_highlight(); ++ #endif + + return OK; + } +*** ../vim-7.1.035/src/proto/syntax.pro Sat May 5 19:23:52 2007 +--- src/proto/syntax.pro Fri Jul 13 19:51:43 2007 +*************** +*** 8,13 **** +--- 8,15 ---- + void syntax_clear __ARGS((buf_T *buf)); + void ex_syntax __ARGS((exarg_T *eap)); + int syntax_present __ARGS((buf_T *buf)); ++ void reset_expand_highlight __ARGS((void)); ++ void set_context_in_echohl_cmd __ARGS((expand_T *xp, char_u *arg)); + void set_context_in_syntax_cmd __ARGS((expand_T *xp, char_u *arg)); + char_u *get_syntax_name __ARGS((expand_T *xp, int idx)); + int syn_get_id __ARGS((win_T *wp, long lnum, colnr_T col, int trans, int *spellp)); +*** ../vim-7.1.035/src/syntax.c Thu Jun 28 11:59:13 2007 +--- src/syntax.c Fri Jul 13 19:51:39 2007 +*************** +*** 66,73 **** + #define HL_TABLE() ((struct hl_group *)((highlight_ga.ga_data))) + + #ifdef FEAT_CMDL_COMPL +! static int include_default = FALSE; /* include "default" for expansion */ +! static int include_link = FALSE; /* include "link" for expansion */ + #endif + + /* +--- 66,75 ---- + #define HL_TABLE() ((struct hl_group *)((highlight_ga.ga_data))) + + #ifdef FEAT_CMDL_COMPL +! /* Flags to indicate an additional string for highlight name completion. */ +! static int include_none = 0; /* when 1 include "None" */ +! static int include_default = 0; /* when 1 include "default" */ +! static int include_link = 0; /* when 2 include "link" and "clear" */ + #endif + + /* +*************** +*** 5968,5973 **** +--- 5970,5998 ---- + EXP_CASE /* expand ":syn case" arguments */ + } expand_what; + ++ /* ++ * Reset include_link, include_default, include_none to 0. ++ * Called when we are done expanding. ++ */ ++ void ++ reset_expand_highlight() ++ { ++ include_link = include_default = include_none = 0; ++ } ++ ++ /* ++ * Handle command line completion for :match and :echohl command: Add "None" ++ * as highlight group. ++ */ ++ void ++ set_context_in_echohl_cmd(xp, arg) ++ expand_T *xp; ++ char_u *arg; ++ { ++ xp->xp_context = EXPAND_HIGHLIGHT; ++ xp->xp_pattern = arg; ++ include_none = 1; ++ } + + /* + * Handle command line completion for :syntax command. +*************** +*** 5983,5990 **** + xp->xp_context = EXPAND_SYNTAX; + expand_what = EXP_SUBCMD; + xp->xp_pattern = arg; +! include_link = FALSE; +! include_default = FALSE; + + /* (part of) subcommand already typed */ + if (*arg != NUL) +--- 6008,6015 ---- + xp->xp_context = EXPAND_SYNTAX; + expand_what = EXP_SUBCMD; + xp->xp_pattern = arg; +! include_link = 0; +! include_default = 0; + + /* (part of) subcommand already typed */ + if (*arg != NUL) +*************** +*** 8949,8955 **** + return OK; + } + +! #ifdef FEAT_CMDL_COMPL + + static void highlight_list __ARGS((void)); + static void highlight_list_two __ARGS((int cnt, int attr)); +--- 8974,8980 ---- + return OK; + } + +! #if defined(FEAT_CMDL_COMPL) || defined(PROTO) + + static void highlight_list __ARGS((void)); + static void highlight_list_two __ARGS((int cnt, int attr)); +*************** +*** 8967,8974 **** + /* Default: expand group names */ + xp->xp_context = EXPAND_HIGHLIGHT; + xp->xp_pattern = arg; +! include_link = TRUE; +! include_default = TRUE; + + /* (part of) subcommand already typed */ + if (*arg != NUL) +--- 8992,8999 ---- + /* Default: expand group names */ + xp->xp_context = EXPAND_HIGHLIGHT; + xp->xp_pattern = arg; +! include_link = 2; +! include_default = 1; + + /* (part of) subcommand already typed */ + if (*arg != NUL) +*************** +*** 8976,8982 **** + p = skiptowhite(arg); + if (*p != NUL) /* past "default" or group name */ + { +! include_default = FALSE; + if (STRNCMP("default", arg, p - arg) == 0) + { + arg = skipwhite(p); +--- 9001,9007 ---- + p = skiptowhite(arg); + if (*p != NUL) /* past "default" or group name */ + { +! include_default = 0; + if (STRNCMP("default", arg, p - arg) == 0) + { + arg = skipwhite(p); +*************** +*** 8985,8991 **** + } + if (*p != NUL) /* past group name */ + { +! include_link = FALSE; + if (arg[1] == 'i' && arg[0] == 'N') + highlight_list(); + if (STRNCMP("link", arg, p - arg) == 0 +--- 9010,9016 ---- + } + if (*p != NUL) /* past group name */ + { +! include_link = 0; + if (arg[1] == 'i' && arg[0] == 'N') + highlight_list(); + if (STRNCMP("link", arg, p - arg) == 0 +*************** +*** 9045,9075 **** + expand_T *xp; + int idx; + { +- if (idx == highlight_ga.ga_len + #ifdef FEAT_CMDL_COMPL +! && include_link +! #endif +! ) + return (char_u *)"link"; +! if (idx == highlight_ga.ga_len + 1 +! #ifdef FEAT_CMDL_COMPL +! && include_link +! #endif +! ) + return (char_u *)"clear"; +- if (idx == highlight_ga.ga_len + 2 +- #ifdef FEAT_CMDL_COMPL +- && include_default + #endif +- ) +- return (char_u *)"default"; + if (idx < 0 || idx >= highlight_ga.ga_len) + return NULL; + return HL_TABLE()[idx].sg_name; + } + #endif + +! #ifdef FEAT_GUI + /* + * Free all the highlight group fonts. + * Used when quitting for systems which need it. +--- 9070,9094 ---- + expand_T *xp; + int idx; + { + #ifdef FEAT_CMDL_COMPL +! if (idx == highlight_ga.ga_len && include_none != 0) +! return (char_u *)"none"; +! if (idx == highlight_ga.ga_len + include_none && include_default != 0) +! return (char_u *)"default"; +! if (idx == highlight_ga.ga_len + include_none + include_default +! && include_link != 0) + return (char_u *)"link"; +! if (idx == highlight_ga.ga_len + include_none + include_default + 1 +! && include_link != 0) + return (char_u *)"clear"; + #endif + if (idx < 0 || idx >= highlight_ga.ga_len) + return NULL; + return HL_TABLE()[idx].sg_name; + } + #endif + +! #if defined(FEAT_GUI) || defined(PROTO) + /* + * Free all the highlight group fonts. + * Used when quitting for systems which need it. +*** ../vim-7.1.035/src/version.c Tue Jul 24 11:15:46 2007 +--- src/version.c Tue Jul 24 14:30:18 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 36, + /**/ + +-- +Apparently, 1 in 5 people in the world are Chinese. And there are 5 +people in my family, so it must be one of them. It's either my mum +or my dad. Or my older brother Colin. Or my younger brother +Ho-Cha-Chu. But I think it's Colin. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org ///