summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2007-08-21 15:29:56 +0000
committerBram Moolenaar <Bram@vim.org>2007-08-21 15:29:56 +0000
commit3a36cf7bca2c12dd6372fc6b0308e995b3f75f29 (patch)
tree6dc17dcb227696c2174d23ab4c05c371bd878cc4
parenteb1b6790676b0e0577aeee350ca66e1919c27369 (diff)
downloadvim-git-3a36cf7bca2c12dd6372fc6b0308e995b3f75f29.tar.gz
updated for version 7.1-086v7.1.086
-rw-r--r--src/syntax.c30
-rw-r--r--src/version.c2
2 files changed, 28 insertions, 4 deletions
diff --git a/src/syntax.c b/src/syntax.c
index 2cef9782c..290b6be47 100644
--- a/src/syntax.c
+++ b/src/syntax.c
@@ -279,7 +279,8 @@ static int keepend_level = -1;
*/
typedef struct state_item
{
- int si_idx; /* index of syntax pattern */
+ int si_idx; /* index of syntax pattern or
+ KEYWORD_IDX */
int si_id; /* highlight group ID for keywords */
int si_trans_id; /* idem, transparancy removed */
int si_m_lnum; /* lnum of the match */
@@ -837,9 +838,18 @@ syn_sync(wp, start_lnum, last_valid)
current_lnum = end_lnum;
break;
}
- spp = &(SYN_ITEMS(syn_buf)[cur_si->si_idx]);
- found_flags = spp->sp_flags;
- found_match_idx = spp->sp_sync_idx;
+ if (cur_si->si_idx < 0)
+ {
+ /* Cannot happen? */
+ found_flags = 0;
+ found_match_idx = KEYWORD_IDX;
+ }
+ else
+ {
+ spp = &(SYN_ITEMS(syn_buf)[cur_si->si_idx]);
+ found_flags = spp->sp_flags;
+ found_match_idx = spp->sp_sync_idx;
+ }
found_current_lnum = current_lnum;
found_current_col = current_col;
found_m_endpos = cur_si->si_m_endpos;
@@ -2533,6 +2543,10 @@ update_si_attr(idx)
stateitem_T *sip = &CUR_STATE(idx);
synpat_T *spp;
+ /* This should not happen... */
+ if (sip->si_idx < 0)
+ return;
+
spp = &(SYN_ITEMS(syn_buf)[sip->si_idx]);
if (sip->si_flags & HL_MATCH)
sip->si_id = spp->sp_syn_match_id;
@@ -2648,6 +2662,10 @@ update_si_end(sip, startcol, force)
lpos_T end_endpos;
int end_idx;
+ /* return quickly for a keyword */
+ if (sip->si_idx < 0)
+ return;
+
/* Don't update when it's already done. Can be a match of an end pattern
* that started in a previous line. Watch out: can also be a "keepend"
* from a containing item. */
@@ -2760,6 +2778,10 @@ find_endpos(idx, startpos, m_endpos, hl_endpos, flagsp, end_endpos,
char_u *line;
int had_match = FALSE;
+ /* just in case we are invoked for a keyword */
+ if (idx < 0)
+ return;
+
/*
* Check for being called with a START pattern.
* Can happen with a match that continues to the next line, because it
diff --git a/src/version.c b/src/version.c
index 21f7237e2..9f952c47a 100644
--- a/src/version.c
+++ b/src/version.c
@@ -667,6 +667,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 86,
+/**/
85,
/**/
84,