diff options
author | Bram Moolenaar <bram@vim.org> | 2011-05-25 17:56:27 +0200 |
---|---|---|
committer | Bram Moolenaar <bram@vim.org> | 2011-05-25 17:56:27 +0200 |
commit | 6ee9f5dc9c7714ee7e485f1c955ab54f32b1d5b5 (patch) | |
tree | 21451822250f612cfbeec0796367b3b663177524 | |
parent | b0e551a0256ddcfeed7cd78da87bf9dc4b1e568a (diff) | |
download | vim-6ee9f5dc9c7714ee7e485f1c955ab54f32b1d5b5.tar.gz |
Problem: Syntax "extend" doesn't work correctly.
Solution: Avoid calling check_state_ends() recursively (Ben Schmidt)
-rw-r--r-- | src/syntax.c | 9 | ||||
-rw-r--r-- | src/version.c | 2 |
2 files changed, 7 insertions, 4 deletions
diff --git a/src/syntax.c b/src/syntax.c index da648e39..a9a2e862 100644 --- 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(); diff --git a/src/version.c b/src/version.c index 8de124f2..14c2b850 100644 --- a/src/version.c +++ b/src/version.c @@ -710,6 +710,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 205, +/**/ 204, /**/ 203, |