462 lines
12 KiB
Plaintext
462 lines
12 KiB
Plaintext
|
To: vim-dev@vim.org
|
||
|
Subject: patch 7.1.036
|
||
|
Fcc: outbox
|
||
|
From: Bram Moolenaar <Bram@moolenaar.net>
|
||
|
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 ///
|