updated for version 7.1-219

This commit is contained in:
Bram Moolenaar
2008-01-12 15:47:10 +00:00
parent 81993f4744
commit 56cefaf15a
8 changed files with 31 additions and 23 deletions

View File

@@ -1,4 +1,4 @@
*eval.txt* For Vim version 7.1. Last change: 2008 Jan 10 *eval.txt* For Vim version 7.1. Last change: 2008 Jan 11
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@@ -4967,10 +4967,6 @@ synstack({lnum}, {col}) *synstack()*
Return a |List|, which is the stack of syntax items at the Return a |List|, which is the stack of syntax items at the
position {lnum} and {col} in the current window. Each item in position {lnum} and {col} in the current window. Each item in
the List is an ID like what |synID()| returns. the List is an ID like what |synID()| returns.
The stack is the situation in between the character at "col"
and the next character. Note that a region of only one
character will not show up, it only exists inside that
character, not in between characters.
The first item in the List is the outer region, following are The first item in the List is the outer region, following are
items contained in that one. The last one is what |synID()| items contained in that one. The last one is what |synID()|
returns, unless not the whole item is highlighted or it is a returns, unless not the whole item is highlighted or it is a

View File

@@ -15725,7 +15725,7 @@ f_synID(argvars, rettv)
if (!transerr && lnum >= 1 && lnum <= curbuf->b_ml.ml_line_count if (!transerr && lnum >= 1 && lnum <= curbuf->b_ml.ml_line_count
&& col >= 0 && col < (long)STRLEN(ml_get(lnum))) && col >= 0 && col < (long)STRLEN(ml_get(lnum)))
id = syn_get_id(curwin, lnum, (colnr_T)col, trans, NULL); id = syn_get_id(curwin, lnum, (colnr_T)col, trans, NULL, FALSE);
#endif #endif
rettv->vval.v_number = id; rettv->vval.v_number = id;
@@ -15874,7 +15874,7 @@ f_synstack(argvars, rettv)
&& col >= 0 && col < (long)STRLEN(ml_get(lnum)) && col >= 0 && col < (long)STRLEN(ml_get(lnum))
&& rettv_list_alloc(rettv) != FAIL) && rettv_list_alloc(rettv) != FAIL)
{ {
(void)syn_get_id(curwin, lnum, (colnr_T)col, FALSE, NULL); (void)syn_get_id(curwin, lnum, (colnr_T)col, FALSE, NULL, TRUE);
for (i = 0; ; ++i) for (i = 0; ; ++i)
{ {
id = syn_get_stack_item(i); id = syn_get_stack_item(i);

View File

@@ -876,7 +876,7 @@ hardcopy_line(psettings, page_line, ppos)
*/ */
if (psettings->do_syntax) if (psettings->do_syntax)
{ {
id = syn_get_id(curwin, ppos->file_line, col, 1, NULL); id = syn_get_id(curwin, ppos->file_line, col, 1, NULL, FALSE);
if (id > 0) if (id > 0)
id = syn_get_final_id(id); id = syn_get_final_id(id);
else else

View File

@@ -4,7 +4,7 @@ void syn_stack_free_all __ARGS((buf_T *buf));
void syn_stack_apply_changes __ARGS((buf_T *buf)); void syn_stack_apply_changes __ARGS((buf_T *buf));
void syntax_end_parsing __ARGS((linenr_T lnum)); void syntax_end_parsing __ARGS((linenr_T lnum));
int syntax_check_changed __ARGS((linenr_T lnum)); int syntax_check_changed __ARGS((linenr_T lnum));
int get_syntax_attr __ARGS((colnr_T col, int *can_spell)); int get_syntax_attr __ARGS((colnr_T col, int *can_spell, int keep_state));
void syntax_clear __ARGS((buf_T *buf)); void syntax_clear __ARGS((buf_T *buf));
void ex_syntax __ARGS((exarg_T *eap)); void ex_syntax __ARGS((exarg_T *eap));
int syntax_present __ARGS((buf_T *buf)); int syntax_present __ARGS((buf_T *buf));
@@ -12,7 +12,7 @@ void reset_expand_highlight __ARGS((void));
void set_context_in_echohl_cmd __ARGS((expand_T *xp, char_u *arg)); 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)); void set_context_in_syntax_cmd __ARGS((expand_T *xp, char_u *arg));
char_u *get_syntax_name __ARGS((expand_T *xp, int idx)); 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)); int syn_get_id __ARGS((win_T *wp, long lnum, colnr_T col, int trans, int *spellp, int keep_state));
int syn_get_stack_item __ARGS((int i)); int syn_get_stack_item __ARGS((int i));
int syn_get_foldlevel __ARGS((win_T *wp, long lnum)); int syn_get_foldlevel __ARGS((win_T *wp, long lnum));
void init_highlight __ARGS((int both, int reset)); void init_highlight __ARGS((int both, int reset));

View File

@@ -3885,7 +3885,7 @@ win_line(wp, lnum, startrow, endrow, nochange)
# ifdef FEAT_SPELL # ifdef FEAT_SPELL
has_spell ? &can_spell : has_spell ? &can_spell :
# endif # endif
NULL); NULL, FALSE);
if (did_emsg) if (did_emsg)
{ {

View File

@@ -2146,7 +2146,7 @@ spell_move_to(wp, dir, allwords, curline, attrp)
{ {
col = (int)(p - buf); col = (int)(p - buf);
(void)syn_get_id(wp, lnum, (colnr_T)col, (void)syn_get_id(wp, lnum, (colnr_T)col,
FALSE, &can_spell); FALSE, &can_spell, FALSE);
if (!can_spell) if (!can_spell)
attr = HLF_COUNT; attr = HLF_COUNT;
} }

View File

@@ -378,7 +378,7 @@ static void invalidate_current_state __ARGS((void));
static int syn_stack_equal __ARGS((synstate_T *sp)); static int syn_stack_equal __ARGS((synstate_T *sp));
static void validate_current_state __ARGS((void)); static void validate_current_state __ARGS((void));
static int syn_finish_line __ARGS((int syncing)); static int syn_finish_line __ARGS((int syncing));
static int syn_current_attr __ARGS((int syncing, int displaying, int *can_spell)); static int syn_current_attr __ARGS((int syncing, int displaying, int *can_spell, int keep_state));
static int did_match_already __ARGS((int idx, garray_T *gap)); static int did_match_already __ARGS((int idx, garray_T *gap));
static stateitem_T *push_next_match __ARGS((stateitem_T *cur_si)); static stateitem_T *push_next_match __ARGS((stateitem_T *cur_si));
static void check_state_ends __ARGS((void)); static void check_state_ends __ARGS((void));
@@ -1691,7 +1691,7 @@ syn_finish_line(syncing)
{ {
while (!current_finished) while (!current_finished)
{ {
(void)syn_current_attr(syncing, FALSE, NULL); (void)syn_current_attr(syncing, FALSE, NULL, FALSE);
/* /*
* When syncing, and found some item, need to check the item. * When syncing, and found some item, need to check the item.
*/ */
@@ -1731,9 +1731,10 @@ syn_finish_line(syncing)
* done. * done.
*/ */
int int
get_syntax_attr(col, can_spell) get_syntax_attr(col, can_spell, keep_state)
colnr_T col; colnr_T col;
int *can_spell; int *can_spell;
int keep_state; /* keep state of char at "col" */
{ {
int attr = 0; int attr = 0;
@@ -1768,7 +1769,8 @@ get_syntax_attr(col, can_spell)
*/ */
while (current_col <= col) while (current_col <= col)
{ {
attr = syn_current_attr(FALSE, TRUE, can_spell); attr = syn_current_attr(FALSE, TRUE, can_spell,
current_col == col ? keep_state : FALSE);
++current_col; ++current_col;
} }
@@ -1779,10 +1781,11 @@ get_syntax_attr(col, can_spell)
* Get syntax attributes for current_lnum, current_col. * Get syntax attributes for current_lnum, current_col.
*/ */
static int static int
syn_current_attr(syncing, displaying, can_spell) syn_current_attr(syncing, displaying, can_spell, keep_state)
int syncing; /* When 1: called for syncing */ int syncing; /* When 1: called for syncing */
int displaying; /* result will be displayed */ int displaying; /* result will be displayed */
int *can_spell; /* return: do spell checking */ int *can_spell; /* return: do spell checking */
int keep_state; /* keep syntax stack afterwards */
{ {
int syn_id; int syn_id;
lpos_T endpos; /* was: char_u *endp; */ lpos_T endpos; /* was: char_u *endp; */
@@ -2298,7 +2301,7 @@ syn_current_attr(syncing, displaying, can_spell)
* may be for an empty match and a containing item might end in the * may be for an empty match and a containing item might end in the
* current column. * current column.
*/ */
if (!syncing) if (!syncing && !keep_state)
{ {
check_state_ends(); check_state_ends();
if (current_state.ga_len > 0 if (current_state.ga_len > 0
@@ -6086,12 +6089,13 @@ get_syntax_name(xp, idx)
* Function called for expression evaluation: get syntax ID at file position. * Function called for expression evaluation: get syntax ID at file position.
*/ */
int int
syn_get_id(wp, lnum, col, trans, spellp) syn_get_id(wp, lnum, col, trans, spellp, keep_state)
win_T *wp; win_T *wp;
long lnum; long lnum;
colnr_T col; colnr_T col;
int trans; /* remove transparancy */ int trans; /* remove transparancy */
int *spellp; /* return: can do spell checking */ int *spellp; /* return: can do spell checking */
int keep_state; /* keep state of char at "col" */
{ {
/* When the position is not after the current position and in the same /* When the position is not after the current position and in the same
* line of the same buffer, need to restart parsing. */ * line of the same buffer, need to restart parsing. */
@@ -6100,7 +6104,7 @@ syn_get_id(wp, lnum, col, trans, spellp)
|| col < current_col) || col < current_col)
syntax_start(wp, lnum); syntax_start(wp, lnum);
(void)get_syntax_attr(col, spellp); (void)get_syntax_attr(col, spellp, keep_state);
return (trans ? current_trans_id : current_id); return (trans ? current_trans_id : current_id);
} }
@@ -6115,8 +6119,14 @@ syn_get_id(wp, lnum, col, trans, spellp)
syn_get_stack_item(i) syn_get_stack_item(i)
int i; int i;
{ {
if (i >= current_state.ga_len ) if (i >= current_state.ga_len)
{
/* Need to invalidate the state, because we didn't properly finish it
* for the last character, "keep_state" was TRUE. */
invalidate_current_state();
current_col = MAXCOL;
return -1; return -1;
}
return CUR_STATE(i).si_id; return CUR_STATE(i).si_id;
} }
#endif #endif

View File

@@ -666,6 +666,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
219,
/**/ /**/
218, 218,
/**/ /**/