Mercurial > vim
changeset 2863:8d8bd6307b1a v7.3.205
updated for version 7.3.205
Problem: Syntax "extend" doesn't work correctly.
Solution: Avoid calling check_state_ends() recursively (Ben Schmidt)
author | Bram Moolenaar <bram@vim.org> |
---|---|
date | Wed, 25 May 2011 17:56:27 +0200 |
parents | eaf92a6745ec |
children | 4d7870e159ce |
files | src/syntax.c src/version.c |
diffstat | 2 files changed, 7 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/src/syntax.c +++ b/src/syntax.c @@ -990,7 +990,10 @@ syn_start_line() * previous line and regions that have "keepend". */ if (current_state.ga_len > 0) + { syn_update_ends(TRUE); + check_state_ends(); + } next_match_idx = -1; ++current_line_id; @@ -1064,7 +1067,6 @@ syn_update_ends(startofline) } } check_keepend(); - check_state_ends(); } /**************************************** @@ -2533,7 +2535,7 @@ push_next_match(cur_si) check_state_ends() { stateitem_T *cur_si; - int had_extend = FALSE; + int had_extend; cur_si = &CUR_STATE(current_state.ga_len - 1); for (;;) @@ -2586,8 +2588,7 @@ check_state_ends() /* When the ended item has "extend", another item with * "keepend" now needs to check for its end. */ - if (cur_si->si_flags & HL_EXTEND) - had_extend = TRUE; + had_extend = (cur_si->si_flags & HL_EXTEND); pop_current_state();