]> granicus.if.org Git - vim/commitdiff
updated for version 7.1-227 v7.1.227
authorBram Moolenaar <Bram@vim.org>
Sun, 13 Jan 2008 16:40:19 +0000 (16:40 +0000)
committerBram Moolenaar <Bram@vim.org>
Sun, 13 Jan 2008 16:40:19 +0000 (16:40 +0000)
src/syntax.c
src/version.c

index bc9f0324c6a5777307d5541046f36088425afb4d..5c2d1e4e9a5a9d54cda624230d4939575017248a 100644 (file)
@@ -372,7 +372,7 @@ static void syn_stack_alloc __ARGS((void));
 static int syn_stack_cleanup __ARGS((void));
 static void syn_stack_free_entry __ARGS((buf_T *buf, synstate_T *p));
 static synstate_T *syn_stack_find_entry __ARGS((linenr_T lnum));
-static synstate_T *store_current_state __ARGS((synstate_T *sp));
+static synstate_T *store_current_state __ARGS((void));
 static void load_current_state __ARGS((synstate_T *from));
 static void invalidate_current_state __ARGS((void));
 static int syn_stack_equal __ARGS((synstate_T *sp));
@@ -464,7 +464,7 @@ syntax_start(wp, lnum)
     synstate_T *p;
     synstate_T *last_valid = NULL;
     synstate_T *last_min_valid = NULL;
-    synstate_T *sp, *prev;
+    synstate_T *sp, *prev = NULL;
     linenr_T   parsed_lnum;
     linenr_T   first_stored;
     int                dist;
@@ -502,7 +502,7 @@ syntax_start(wp, lnum)
        if (!current_state_stored)
        {
            ++current_lnum;
-           (void)store_current_state(NULL);
+           (void)store_current_state();
        }
 
        /*
@@ -558,7 +558,6 @@ syntax_start(wp, lnum)
        dist = 999999;
     else
        dist = syn_buf->b_ml.ml_line_count / (syn_buf->b_sst_len - Rows) + 1;
-    prev = syn_stack_find_entry(current_lnum);
     while (current_lnum < lnum)
     {
        syn_start_line();
@@ -572,10 +571,14 @@ syntax_start(wp, lnum)
            /* Check if the saved state entry is for the current line and is
             * equal to the current state.  If so, then validate all saved
             * states that depended on a change before the parsed line. */
+           if (prev == NULL)
+               prev = syn_stack_find_entry(current_lnum - 1);
            if (prev == NULL)
                sp = syn_buf->b_sst_first;
            else
-               sp = prev->sst_next;
+               sp = prev;
+           while (sp != NULL && sp->sst_lnum < current_lnum)
+               sp = sp->sst_next;
            if (sp != NULL
                    && sp->sst_lnum == current_lnum
                    && syn_stack_equal(sp))
@@ -601,7 +604,7 @@ syntax_start(wp, lnum)
            else if (prev == NULL
                        || current_lnum == lnum
                        || current_lnum >= prev->sst_lnum + dist)
-               prev = store_current_state(prev);
+               prev = store_current_state();
        }
 
        /* This can take a long time: break when CTRL-C pressed.  The current
@@ -1353,17 +1356,13 @@ syn_stack_find_entry(lnum)
  * The current state must be valid for the start of the current_lnum line!
  */
     static synstate_T *
-store_current_state(sp)
-    synstate_T *sp;    /* at or before where state is to be saved or
-                                  NULL */
+store_current_state()
 {
     int                i;
     synstate_T *p;
     bufstate_T *bp;
     stateitem_T        *cur_si;
-
-    if (sp == NULL)
-       sp = syn_stack_find_entry(current_lnum);
+    synstate_T *sp = syn_stack_find_entry(current_lnum);
 
     /*
      * If the current state contains a start or end pattern that continues
@@ -1667,7 +1666,7 @@ syntax_check_changed(lnum)
             * Store the current state in b_sst_array[] for later use.
             */
            ++current_lnum;
-           (void)store_current_state(NULL);
+           (void)store_current_state();
        }
     }
 
index 7ba507f75d183e9386b2b2ceac85f6457ab1e2c2..0ab427586b76b2cf3ddad33ef26e6d3321bedc16 100644 (file)
@@ -666,6 +666,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    227,
 /**/
     226,
 /**/