Changeset 95f1c95 in clfs-sysroot for patches/vim-7.0-fixes-22.patch


Ignore:
Timestamp:
Feb 6, 2007, 12:57:56 PM (19 years ago)
Author:
Joe Ciccone <jciccone@…>
Branches:
master
Children:
b8f0f75
Parents:
7ea0123
Message:

Update patches.

File:
1 moved

Legend:

Unmodified
Added
Removed
  • patches/vim-7.0-fixes-22.patch

    r7ea0123 r95f1c95  
    11Submitted By: Jim Gifford (jim at linuxfromscratch dot org)
    2 Date: 12-05-2006
     2Date: 01-23-2007
    33Initial Package Version: 7.0
    44Origin: Upstream
    55Upstream Status: Applied
    6 Description: Contains all upstream patches up to 7.0.178
     6Description: Contains all upstream patches up to 7.0.188
    77             The following patches were skipped
    8              005 027 028 032 045 057 065 074 108 130 131 132 138 156 161 170 171
     8             005 027 028 032 045 057 065 074 108 130 131 132 138 156 161 170 171 180
    99
    1010diff -Naur vim70.orig/configure vim70/configure
    1111--- vim70.orig/configure        2004-07-05 02:02:24.000000000 -0700
    12 +++ vim70/configure     2006-12-05 19:57:51.000000000 -0800
     12+++ vim70/configure     2007-01-23 17:14:51.000000000 -0800
    1313@@ -3,4 +3,4 @@
    1414 # This is just a stub for the Unix configure script, to provide support for
     
    1919diff -Naur vim70.orig/runtime/autoload/ccomplete.vim vim70/runtime/autoload/ccomplete.vim
    2020--- vim70.orig/runtime/autoload/ccomplete.vim   2006-05-03 07:35:56.000000000 -0700
    21 +++ vim70/runtime/autoload/ccomplete.vim        2006-12-05 19:57:40.000000000 -0800
     21+++ vim70/runtime/autoload/ccomplete.vim        2007-01-23 17:14:45.000000000 -0800
    2222@@ -1,7 +1,7 @@
    2323 " Vim completion script
     
    4040diff -Naur vim70.orig/runtime/autoload/gzip.vim vim70/runtime/autoload/gzip.vim
    4141--- vim70.orig/runtime/autoload/gzip.vim        2006-03-31 07:12:15.000000000 -0800
    42 +++ vim70/runtime/autoload/gzip.vim     2006-12-05 19:58:04.000000000 -0800
     42+++ vim70/runtime/autoload/gzip.vim     2007-01-23 17:15:02.000000000 -0800
    4343@@ -1,6 +1,6 @@
    4444 " Vim autoload file for editing compressed files.
     
    101101diff -Naur vim70.orig/runtime/autoload/paste.vim vim70/runtime/autoload/paste.vim
    102102--- vim70.orig/runtime/autoload/paste.vim       2006-04-21 11:31:01.000000000 -0700
    103 +++ vim70/runtime/autoload/paste.vim    2006-12-05 19:57:46.000000000 -0800
     103+++ vim70/runtime/autoload/paste.vim    2007-01-23 17:14:49.000000000 -0800
    104104@@ -1,6 +1,6 @@
    105105 " Vim support file to help with paste mappings and menus
     
    121121diff -Naur vim70.orig/runtime/autoload/spellfile.vim vim70/runtime/autoload/spellfile.vim
    122122--- vim70.orig/runtime/autoload/spellfile.vim   2006-02-01 04:12:24.000000000 -0800
    123 +++ vim70/runtime/autoload/spellfile.vim        2006-12-05 19:57:58.000000000 -0800
     123+++ vim70/runtime/autoload/spellfile.vim        2007-01-23 17:14:56.000000000 -0800
    124124@@ -1,9 +1,9 @@
    125125 " Vim script to download a missing spell file
     
    175175+  endif
    176176+endfunc
     177diff -Naur vim70.orig/runtime/doc/autocmd.txt vim70/runtime/doc/autocmd.txt
     178--- vim70.orig/runtime/doc/autocmd.txt  2006-05-07 05:16:44.000000000 -0700
     179+++ vim70/runtime/doc/autocmd.txt       2007-01-23 17:15:23.000000000 -0800
     180@@ -1,4 +1,4 @@
     181-*autocmd.txt*   For Vim version 7.0.  Last change: 2006 May 06
     182+*autocmd.txt*   For Vim version 7.0.  Last change: 2007 Jan 16
     183 
     184 
     185                  VIM REFERENCE MANUAL    by Bram Moolenaar
     186@@ -279,6 +279,7 @@
     187 |FuncUndefined|                a user function is used but it isn't defined
     188 |SpellFileMissing|     a spell file is used but it can't be found
     189 |SourcePre|            before sourcing a Vim script
     190+|SourceCmd|            before sourcing a Vim script |Cmd-event|
     191 
     192 |VimResized|           after the Vim window size changed
     193 |FocusGained|          Vim got input focus
     194@@ -690,10 +691,17 @@
     195                                Can be used to check for any changed files.
     196                                                        *SourcePre*
     197 SourcePre                      Before sourcing a Vim script. |:source|
     198+                               <afile> is the name of the file being sourced.
     199+                                                       *SourceCmd*
     200+SourceCmd                      When sourcing a Vim script. |:source|
     201+                               <afile> is the name of the file being sourced.
     202+                               The autocommand must source this file.
     203+                               |Cmd-event|
     204                                                        *SpellFileMissing*
     205 SpellFileMissing               When trying to load a spell checking file and
     206-                               it can't be found.  <amatch> is the language,
     207-                               'encoding' also matters.  See
     208+                               it can't be found.  The pattern is matched
     209+                               against the language.  <amatch> is the
     210+                               language, 'encoding' also matters.  See
     211                                |spell-SpellFileMissing|.
     212                                                        *StdinReadPost*
     213 StdinReadPost                  After reading from the stdin into the buffer,
     214@@ -1219,8 +1227,8 @@
     215 
     216                                                        *Cmd-event*
     217 When using one of the "*Cmd" events, the matching autocommands are expected to
     218-do the file reading or writing.  This can be used when working with a special
     219-kind of file, for example on a remote system.
     220+do the file reading, writing or sourcing.  This can be used when working with
     221+a special kind of file, for example on a remote system.
     222 CAREFUL: If you use these events in a wrong way, it may have the effect of
     223 making it impossible to read or write the matching files!  Make sure you test
     224 your autocommands properly.  Best is to use a pattern that will never match a
     225@@ -1233,9 +1241,10 @@
     226 original file isn't needed for recovery.  You might want to do this only when
     227 you expect the file to be modified.
     228 
     229-The |v:cmdarg| variable holds the "++enc=" and "++ff=" argument that are
     230-effective.  These should be used for the command that reads/writes the file.
     231-The |v:cmdbang| variable is one when "!" was used, zero otherwise.
     232+For file read and write commands the |v:cmdarg| variable holds the "++enc="
     233+and "++ff=" argument that are effective.  These should be used for the command
     234+that reads/writes the file.  The |v:cmdbang| variable is one when "!" was
     235+used, zero otherwise.
     236 
     237 See the $VIMRUNTIME/plugin/netrw.vim for examples.
     238 
    177239diff -Naur vim70.orig/runtime/doc/eval.txt vim70/runtime/doc/eval.txt
    178240--- vim70.orig/runtime/doc/eval.txt     2006-05-07 05:16:44.000000000 -0700
    179 +++ vim70/runtime/doc/eval.txt  2006-12-05 19:58:10.000000000 -0800
     241+++ vim70/runtime/doc/eval.txt  2007-01-23 17:15:09.000000000 -0800
    180242@@ -1,4 +1,4 @@
    181243-*eval.txt*      For Vim version 7.0.  Last change: 2006 May 06
     
    257319diff -Naur vim70.orig/runtime/doc/netbeans.txt vim70/runtime/doc/netbeans.txt
    258320--- vim70.orig/runtime/doc/netbeans.txt 2006-05-07 05:16:45.000000000 -0700
    259 +++ vim70/runtime/doc/netbeans.txt      2006-12-05 19:58:11.000000000 -0800
     321+++ vim70/runtime/doc/netbeans.txt      2007-01-23 17:15:10.000000000 -0800
    260322@@ -1,4 +1,4 @@
    261323-*netbeans.txt*  For Vim version 7.0.  Last change: 2006 Mar 09
     
    293355diff -Naur vim70.orig/runtime/menu.vim vim70/runtime/menu.vim
    294356--- vim70.orig/runtime/menu.vim 2006-04-17 06:47:28.000000000 -0700
    295 +++ vim70/runtime/menu.vim      2006-12-05 19:58:04.000000000 -0800
     357+++ vim70/runtime/menu.vim      2007-01-23 17:15:02.000000000 -0800
    296358@@ -2,7 +2,7 @@
    297359 " You can also use this as a start for your own set of menus.
     
    360422diff -Naur vim70.orig/runtime/plugin/matchparen.vim vim70/runtime/plugin/matchparen.vim
    361423--- vim70.orig/runtime/plugin/matchparen.vim    2006-04-27 06:31:26.000000000 -0700
    362 +++ vim70/runtime/plugin/matchparen.vim 2006-12-05 19:58:01.000000000 -0800
     424+++ vim70/runtime/plugin/matchparen.vim 2007-01-23 17:15:00.000000000 -0800
    363425@@ -1,6 +1,6 @@
    364426 " Vim plugin for showing matching parens
     
    403465diff -Naur vim70.orig/runtime/scripts.vim vim70/runtime/scripts.vim
    404466--- vim70.orig/runtime/scripts.vim      2006-03-28 11:30:49.000000000 -0800
    405 +++ vim70/runtime/scripts.vim   2006-12-05 19:57:51.000000000 -0800
     467+++ vim70/runtime/scripts.vim   2007-01-23 17:14:51.000000000 -0800
    406468@@ -1,7 +1,7 @@
    407469 " Vim support file to detect file types in scripts
     
    428490diff -Naur vim70.orig/runtime/tutor/Makefile vim70/runtime/tutor/Makefile
    429491--- vim70.orig/runtime/tutor/Makefile   2004-06-07 07:32:39.000000000 -0700
    430 +++ vim70/runtime/tutor/Makefile        2006-12-05 19:58:01.000000000 -0800
     492+++ vim70/runtime/tutor/Makefile        2007-01-23 17:15:00.000000000 -0800
    431493@@ -2,8 +2,13 @@
    432494 #
     
    462524diff -Naur vim70.orig/runtime/tutor/tutor.gr.utf-8 vim70/runtime/tutor/tutor.gr.utf-8
    463525--- vim70.orig/runtime/tutor/tutor.gr.utf-8     1969-12-31 16:00:00.000000000 -0800
    464 +++ vim70/runtime/tutor/tutor.gr.utf-8  2006-12-05 19:58:01.000000000 -0800
     526+++ vim70/runtime/tutor/tutor.gr.utf-8  2007-01-23 17:15:00.000000000 -0800
    465527@@ -0,0 +1,815 @@
    466528+===============================================================================
     
    14951557diff -Naur vim70.orig/runtime/tutor/tutor.ru.utf-8 vim70/runtime/tutor/tutor.ru.utf-8
    14961558--- vim70.orig/runtime/tutor/tutor.ru.utf-8     1969-12-31 16:00:00.000000000 -0800
    1497 +++ vim70/runtime/tutor/tutor.ru.utf-8  2006-12-05 19:57:59.000000000 -0800
     1559+++ vim70/runtime/tutor/tutor.ru.utf-8  2007-01-23 17:14:56.000000000 -0800
    14981560@@ -0,0 +1,834 @@
    14991561+===============================================================================
     
    24162478diff -Naur vim70.orig/runtime/tutor/tutor.vim vim70/runtime/tutor/tutor.vim
    24172479--- vim70.orig/runtime/tutor/tutor.vim  2006-03-18 12:20:36.000000000 -0800
    2418 +++ vim70/runtime/tutor/tutor.vim       2006-12-05 19:58:01.000000000 -0800
     2480+++ vim70/runtime/tutor/tutor.vim       2007-01-23 17:15:00.000000000 -0800
    24192481@@ -1,6 +1,6 @@
    24202482 " Vim tutor support file
     
    24682530diff -Naur vim70.orig/src/auto/configure vim70/src/auto/configure
    24692531--- vim70.orig/src/auto/configure       2006-05-04 03:46:19.000000000 -0700
    2470 +++ vim70/src/auto/configure    2006-12-05 19:58:07.000000000 -0800
     2532+++ vim70/src/auto/configure    2007-01-23 17:15:06.000000000 -0800
    24712533@@ -4014,7 +4014,7 @@
    24722534       LDFLAGS=$ldflags_save
     
    25092571diff -Naur vim70.orig/src/buffer.c vim70/src/buffer.c
    25102572--- vim70.orig/src/buffer.c     2006-04-26 14:37:23.000000000 -0700
    2511 +++ vim70/src/buffer.c  2006-12-05 19:58:11.000000000 -0800
     2573+++ vim70/src/buffer.c  2007-01-23 17:15:10.000000000 -0800
    25122574@@ -434,12 +434,8 @@
    25132575     if (usingNetbeans)
     
    26602722diff -Naur vim70.orig/src/configure vim70/src/configure
    26612723--- vim70.orig/src/configure    2006-05-07 07:17:49.000000000 -0700
    2662 +++ vim70/src/configure 2006-12-05 19:57:51.000000000 -0800
     2724+++ vim70/src/configure 2007-01-23 17:14:51.000000000 -0800
    26632725@@ -2,5 +2,9 @@
    26642726 # run the automatically generated configure script
     
    26732735diff -Naur vim70.orig/src/configure.in vim70/src/configure.in
    26742736--- vim70.orig/src/configure.in 2006-05-04 03:46:11.000000000 -0700
    2675 +++ vim70/src/configure.in      2006-12-05 19:58:07.000000000 -0800
     2737+++ vim70/src/configure.in      2007-01-23 17:15:06.000000000 -0800
    26762738@@ -508,7 +508,8 @@
    26772739       LDFLAGS=$ldflags_save
     
    27162778diff -Naur vim70.orig/src/edit.c vim70/src/edit.c
    27172779--- vim70.orig/src/edit.c       2006-05-07 04:48:51.000000000 -0700
    2718 +++ vim70/src/edit.c    2006-12-05 19:58:11.000000000 -0800
     2780+++ vim70/src/edit.c    2007-01-23 17:15:10.000000000 -0800
    27192781@@ -129,7 +129,7 @@
    27202782 
     
    33373399diff -Naur vim70.orig/src/eval.c vim70/src/eval.c
    33383400--- vim70.orig/src/eval.c       2006-05-05 10:15:26.000000000 -0700
    3339 +++ vim70/src/eval.c    2006-12-05 19:58:24.000000000 -0800
     3401+++ vim70/src/eval.c    2007-01-23 17:15:12.000000000 -0800
    33403402@@ -166,7 +166,6 @@
    33413403     int                uf_tm_count;    /* nr of calls */
     
    33993461 static void copy_tv __ARGS((typval_T *from, typval_T *to));
    34003462 static int item_copy __ARGS((typval_T *from, typval_T *to, int deep, int copyID));
    3401 @@ -2260,7 +2262,7 @@
     3463@@ -896,6 +898,7 @@
     3464 }
     3465 
     3466 static lval_T  *redir_lval = NULL;
     3467+static garray_T redir_ga;      /* only valid when redir_lval is not NULL */
     3468 static char_u  *redir_endp = NULL;
     3469 static char_u  *redir_varname = NULL;
     3470 
     3471@@ -930,6 +933,9 @@
     3472        return FAIL;
     3473     }
     3474 
     3475+    /* The output is stored in growarray "redir_ga" until redirection ends. */
     3476+    ga_init2(&redir_ga, (int)sizeof(char), 500);
     3477+
     3478     /* Parse the variable name (can be a dict or list entry). */
     3479     redir_endp = get_lval(redir_varname, NULL, redir_lval, FALSE, FALSE, FALSE,
     3480                                                             FNE_CHECK_START);
     3481@@ -972,42 +978,36 @@
     3482 }
     3483 
     3484 /*
     3485- * Append "value[len]" to the variable set by var_redir_start().
     3486+ * Append "value[value_len]" to the variable set by var_redir_start().
     3487+ * The actual appending is postponed until redirection ends, because the value
     3488+ * appended may in fact be the string we write to, changing it may cause freed
     3489+ * memory to be used:
     3490+ *   :redir => foo
     3491+ *   :let foo
     3492+ *   :redir END
     3493  */
     3494     void
     3495-var_redir_str(value, len)
     3496+var_redir_str(value, value_len)
     3497     char_u     *value;
     3498-    int                len;
     3499+    int                value_len;
     3500 {
     3501-    char_u     *val;
     3502-    typval_T   tv;
     3503-    int                save_emsg;
     3504-    int                err;
     3505+    size_t     len;
     3506 
     3507     if (redir_lval == NULL)
     3508        return;
     3509 
     3510-    if (len == -1)
     3511-       /* Append the entire string */
     3512-       val = vim_strsave(value);
     3513+    if (value_len == -1)
     3514+       len = STRLEN(value);    /* Append the entire string */
     3515     else
     3516-       /* Append only the specified number of characters */
     3517-       val = vim_strnsave(value, len);
     3518-    if (val == NULL)
     3519-       return;
     3520+       len = value_len;        /* Append only "value_len" characters */
     3521 
     3522-    tv.v_type = VAR_STRING;
     3523-    tv.vval.v_string = val;
     3524-
     3525-    save_emsg = did_emsg;
     3526-    did_emsg = FALSE;
     3527-    set_var_lval(redir_lval, redir_endp, &tv, FALSE, (char_u *)".");
     3528-    err = did_emsg;
     3529-    did_emsg |= save_emsg;
     3530-    if (err)
     3531+    if (ga_grow(&redir_ga, (int)len) == OK)
     3532+    {
     3533+       mch_memmove((char *)redir_ga.ga_data + redir_ga.ga_len, value, len);
     3534+       redir_ga.ga_len += len;
     3535+    }
     3536+    else
     3537        var_redir_stop();
     3538-
     3539-    vim_free(tv.vval.v_string);
     3540 }
     3541 
     3542 /*
     3543@@ -1016,8 +1016,19 @@
     3544     void
     3545 var_redir_stop()
     3546 {
     3547+    typval_T   tv;
     3548+
     3549     if (redir_lval != NULL)
     3550     {
     3551+       /* Append the trailing NUL. */
     3552+       ga_append(&redir_ga, NUL);
     3553+
     3554+       /* Assign the text to the variable. */
     3555+       tv.v_type = VAR_STRING;
     3556+       tv.vval.v_string = redir_ga.ga_data;
     3557+       set_var_lval(redir_lval, redir_endp, &tv, FALSE, (char_u *)".");
     3558+       vim_free(tv.vval.v_string);
     3559+
     3560        clear_lval(redir_lval);
     3561        vim_free(redir_lval);
     3562        redir_lval = NULL;
     3563@@ -2260,7 +2271,7 @@
    34023564            EMSG(_(e_letunexp));
    34033565        else
     
    34083570 
    34093571            p = get_tv_string_chk(tv);
    3410 @@ -2269,7 +2271,7 @@
     3572@@ -2269,7 +2280,7 @@
    34113573                s = get_reg_contents(*arg == '@' ? '"' : *arg, TRUE, TRUE);
    34123574                if (s != NULL)
     
    34173579                }
    34183580            }
    3419 @@ -2278,7 +2280,7 @@
     3581@@ -2278,7 +2289,7 @@
    34203582                write_reg_contents(*arg == '@' ? '"' : *arg, p, -1, FALSE);
    34213583                arg_end = arg + 1;
     
    34263588     }
    34273589 
    3428 @@ -3125,7 +3127,12 @@
     3590@@ -3125,7 +3136,12 @@
    34293591     funcdict_T fudi;
    34303592 
     
    34403602        return;
    34413603 
    3442 @@ -3177,9 +3184,18 @@
     3604@@ -3177,9 +3193,18 @@
    34433605            failed = TRUE;
    34443606            break;
     
    34593621         * occurred or an exception was thrown but not caught.
    34603622         * get_func_tv() returned OK, so that the check for trailing
    3461 @@ -3364,6 +3380,8 @@
     3623@@ -3364,6 +3389,8 @@
    34623624        hi = hash_find(ht, varname);
    34633625        if (!HASHITEM_EMPTY(hi))
     
    34683630                return FAIL;
    34693631            delete_var(ht, hi);
    3470 @@ -4895,7 +4913,7 @@
     3632@@ -4895,7 +4922,7 @@
    34713633                    {
    34723634                        if (list_append_tv(l, &item->li_tv) == FAIL)
     
    34773639                        }
    34783640                        item = item->li_next;
    3479 @@ -5295,7 +5313,7 @@
     3641@@ -5295,7 +5322,7 @@
    34803642        EMSG2(_("E697: Missing end of List ']': %s"), *arg);
    34813643 failret:
     
    34863648     }
    34873649 
    3488 @@ -5359,8 +5377,8 @@
     3650@@ -5359,8 +5386,8 @@
    34893651 list_unref(l)
    34903652     list_T *l;
     
    34973659 
    34983660 /*
    3499 @@ -5368,14 +5386,12 @@
     3661@@ -5368,14 +5395,12 @@
    35003662  * Ignores the reference count.
    35013663  */
     
    35153677     if (l->lv_used_prev == NULL)
    35163678        first_list = l->lv_used_next;
    3517 @@ -5388,7 +5404,10 @@
     3679@@ -5388,7 +5413,10 @@
    35183680     {
    35193681        /* Remove the item before deleting it. */
     
    35273689     vim_free(l);
    35283690 }
    3529 @@ -5448,6 +5467,8 @@
     3691@@ -5448,6 +5476,8 @@
    35303692 {
    35313693     listitem_T *item1, *item2;
     
    35363698        return FALSE;
    35373699 
    3538 @@ -5484,6 +5505,8 @@
     3700@@ -5484,6 +5514,8 @@
    35393701     dictitem_T *item2;
    35403702     int                todo;
     
    35453707        return FALSE;
    35463708 
    3547 @@ -5516,19 +5539,29 @@
     3709@@ -5516,19 +5548,29 @@
    35483710 {
    35493711     char_u     buf1[NUMBUFLEN], buf2[NUMBUFLEN];
     
    35793741        case VAR_FUNC:
    35803742            return (tv1->vval.v_string != NULL
    3581 @@ -6059,6 +6092,10 @@
     3743@@ -6059,6 +6101,10 @@
    35823744     tabpage_T  *tp;
    35833745 #endif
     
    35903752      * 1. Go through all accessible variables and mark all lists and dicts
    35913753      *    with copyID.
    3592 @@ -6097,7 +6134,10 @@
     3754@@ -6097,7 +6143,10 @@
    35933755     for (dd = first_dict; dd != NULL; )
    35943756        if (dd->dv_copyID != copyID)
     
    36023764 
    36033765            /* restart, next dict may also have been freed */
    3604 @@ -6114,7 +6154,10 @@
     3766@@ -6114,7 +6163,10 @@
    36053767     for (ll = first_list; ll != NULL; )
    36063768        if (ll->lv_copyID != copyID && ll->lv_watch == NULL)
     
    36143776 
    36153777            /* restart, next list may also have been freed */
    3616 @@ -6207,11 +6250,12 @@
     3778@@ -6207,11 +6259,12 @@
    36173779     d = (dict_T *)alloc(sizeof(dict_T));
    36183780     if (d != NULL)
     
    36283790        hash_init(&d->dv_hashtab);
    36293791        d->dv_lock = 0;
    3630 @@ -6229,8 +6273,8 @@
     3792@@ -6229,8 +6282,8 @@
    36313793 dict_unref(d)
    36323794     dict_T *d;
     
    36393801 
    36403802 /*
    3641 @@ -6238,16 +6282,14 @@
     3803@@ -6238,16 +6291,14 @@
    36423804  * Ignores the reference count.
    36433805  */
     
    36593821     if (d->dv_used_prev == NULL)
    36603822        first_dict = d->dv_used_next;
    3661 @@ -6267,7 +6309,10 @@
     3823@@ -6267,7 +6318,10 @@
    36623824             * something recursive causing trouble. */
    36633825            di = HI2DI(hi);
     
    36713833        }
    36723834     }
    3673 @@ -6718,7 +6763,7 @@
     3835@@ -6718,7 +6772,7 @@
    36743836        EMSG2(_("E723: Missing end of Dictionary '}': %s"), *arg);
    36753837 failret:
     
    36803842     }
    36813843 
    3682 @@ -7139,6 +7184,7 @@
     3844@@ -7139,6 +7193,7 @@
    36833845     {"setreg",         2, 3, f_setreg},
    36843846     {"settabwinvar",   4, 4, f_settabwinvar},
     
    36883850     {"sort",           1, 2, f_sort},
    36893851     {"soundfold",      1, 1, f_soundfold},
    3690 @@ -7595,8 +7641,8 @@
     3852@@ -7595,8 +7650,8 @@
    36913853  * Give an error message with a function name.  Handle <SNR> things.
    36923854  */
     
    36993861 {
    37003862     char_u     *p;
    3701 @@ -7605,7 +7651,7 @@
     3863@@ -7605,7 +7660,7 @@
    37023864        p = concat_str((char_u *)"<SNR>", name + 3);
    37033865     else
     
    37083870        vim_free(p);
    37093871 }
    3710 @@ -8252,6 +8298,12 @@
     3872@@ -8252,6 +8307,12 @@
    37113873        EMSG(_("E785: complete() can only be used in Insert mode"));
    37123874        return;
     
    37213883     {
    37223884        EMSG(_(e_invarg));
    3723 @@ -9173,25 +9225,25 @@
     3885@@ -9173,25 +9234,25 @@
    37243886     typval_T   save_key;
    37253887     int                rem;
     
    37513913     }
    37523914 
    3753 @@ -9223,7 +9275,7 @@
     3915@@ -9223,7 +9284,7 @@
    37543916                {
    37553917                    --todo;
     
    37603922                    vimvars[VV_KEY].vv_str = vim_strsave(di->di_key);
    37613923                    if (filter_map_one(&di->di_tv, expr, map, &rem) == FAIL
    3762 @@ -9242,7 +9294,7 @@
     3924@@ -9242,7 +9303,7 @@
    37633925        {
    37643926            for (li = l->lv_first; li != NULL; li = nli)
     
    37693931                nli = li->li_next;
    37703932                if (filter_map_one(&li->li_tv, expr, map, &rem) == FAIL
    3771 @@ -9598,7 +9650,9 @@
     3933@@ -9598,7 +9659,9 @@
    37723934     typval_T   *argvars;
    37733935     typval_T   *rettv;
     
    37803942 
    37813943 /*
    3782 @@ -9792,6 +9846,9 @@
     3944@@ -9792,6 +9855,9 @@
    37833945     varnumber_T                n;
    37843946     int                        error = FALSE;
     
    37903952     ++allow_keys;
    37913953     if (argvars[0].v_type == VAR_UNKNOWN)
    3792 @@ -9809,6 +9866,10 @@
     3954@@ -9809,6 +9875,10 @@
    37933955     --no_mapping;
    37943956     --allow_keys;
     
    38013963     if (IS_SPECIAL(n) || mod_mask != 0)
    38023964     {
    3803 @@ -9837,6 +9898,53 @@
     3965@@ -9837,6 +9907,53 @@
    38043966        temp[i++] = NUL;
    38053967        rettv->v_type = VAR_STRING;
     
    38554017 }
    38564018 
    3857 @@ -10412,20 +10520,14 @@
     4019@@ -10412,20 +10529,14 @@
    38584020 
    38594021     if (win != NULL && varname != NULL)
     
    38824044        {
    38834045            if (*varname == NUL)
    3884 @@ -10438,6 +10540,10 @@
     4046@@ -10438,6 +10549,10 @@
    38854047            if (v != NULL)
    38864048                copy_tv(&v->di_tv, rettv);
     
    38934055 
    38944056     --emsg_off;
    3895 @@ -11312,14 +11418,19 @@
     4057@@ -11312,14 +11427,19 @@
    38964058 
    38974059 static int inputsecret_flag = 0;
     
    39164078     char_u     *prompt = get_tv_string_chk(&argvars[0]);
    39174079     char_u     *p = NULL;
    3918 @@ -11369,10 +11480,10 @@
     4080@@ -11369,10 +11489,10 @@
    39194081            if (defstr != NULL)
    39204082                stuffReadbuffSpec(defstr);
     
    39294091 
    39304092                rettv->vval.v_string = NULL;
    3931 @@ -11404,6 +11515,18 @@
     4093@@ -11404,6 +11524,18 @@
    39324094 }
    39334095 
     
    39484110  */
    39494111     static void
    3950 @@ -11443,7 +11566,7 @@
     4112@@ -11443,7 +11575,7 @@
    39514113     }
    39524114     else
     
    39574119 
    39584120 /*
    3959 @@ -11471,6 +11594,7 @@
     4121@@ -11471,6 +11603,7 @@
    39604122     }
    39614123 
     
    39654127     msg_scroll = TRUE;
    39664128     msg_clr_eos();
    3967 @@ -13250,7 +13374,7 @@
     4129@@ -13250,7 +13383,7 @@
    39684130        if (argvars[2].v_type != VAR_UNKNOWN)
    39694131            EMSG2(_(e_toomanyarg), "remove()");
     
    39744136            key = get_tv_string_chk(&argvars[1]);
    39754137            if (key != NULL)
    3976 @@ -13270,7 +13394,7 @@
     4138@@ -13270,7 +13403,7 @@
    39774139     else if (argvars[0].v_type != VAR_LIST)
    39784140        EMSG2(_(e_listdictarg), "remove()");
     
    39834145        int         error = FALSE;
    39844146 
    3985 @@ -14157,11 +14281,7 @@
     4147@@ -14157,11 +14290,7 @@
    39864148     typval_T   *rettv;
    39874149 {
     
    39954157     typval_T   *varp;
    39964158     char_u     nbuf[NUMBUFLEN];
    3997 @@ -14178,12 +14298,7 @@
     4159@@ -14178,12 +14307,7 @@
    39984160     if (buf != NULL && varname != NULL && varp != NULL)
    39994161     {
     
    40084170        if (*varname == '&')
    40094171        {
    4010 @@ -14210,11 +14325,7 @@
     4172@@ -14210,11 +14334,7 @@
    40114173        }
    40124174 
     
    40204182 }
    40214183 
    4022 @@ -14582,6 +14693,18 @@
     4184@@ -14582,6 +14702,18 @@
    40234185 }
    40244186 
     
    40394201  */
    40404202     static void
    4041 @@ -15950,6 +16073,10 @@
     4203@@ -15950,6 +16082,10 @@
    40424204        }
    40434205     }
     
    40504212 }
    40514213 
    4052 @@ -16173,7 +16300,7 @@
     4214@@ -16173,7 +16309,7 @@
    40534215        curwin->w_curswant = get_dict_number(dict, (char_u *)"curswant");
    40544216        curwin->w_set_curswant = FALSE;
     
    40594221        curwin->w_topfill = get_dict_number(dict, (char_u *)"topfill");
    40604222 #endif
    4061 @@ -16218,6 +16345,7 @@
     4223@@ -16218,6 +16354,7 @@
    40624224 #ifdef FEAT_VIRTUALEDIT
    40634225     dict_add_nr_str(dict, "coladd", (long)curwin->w_cursor.coladd, NULL);
     
    40674229 
    40684230     dict_add_nr_str(dict, "topline", (long)curwin->w_topline, NULL);
    4069 @@ -16438,9 +16566,12 @@
     4231@@ -16438,9 +16575,12 @@
    40704232     long       i = 0;
    40714233     long       n;
     
    40834245 
    40844246     if (fnump != NULL)
    4085 @@ -16466,8 +16597,9 @@
     4247@@ -16466,8 +16606,9 @@
    40864248 #ifdef FEAT_VIRTUALEDIT
    40874249     n = list_find_nr(l, i, NULL);
     
    40954257 
    40964258     return OK;
    4097 @@ -17759,6 +17891,13 @@
     4259@@ -17759,6 +17900,13 @@
    40984260     }
    40994261     else                   /* add a new variable */
     
    41094271        for (p = varname; *p != NUL; ++p)
    41104272            if (!eval_isnamec1(*p) && (p == varname || !VIM_ISDIGIT(*p))
    4111 @@ -17792,7 +17931,7 @@
     4273@@ -17792,7 +17940,7 @@
    41124274 }
    41134275 
     
    41184280  */
    41194281     static int
    4120 @@ -17814,6 +17953,23 @@
     4282@@ -17814,6 +17962,23 @@
    41214283 }
    41224284 
     
    41424304  * Also give an error message, using "name".
    41434305  */
    4144 @@ -18396,12 +18552,14 @@
     4306@@ -18396,12 +18561,14 @@
    41454307 
    41464308     if (!eap->skip)
     
    41594321            if (*arg == K_SPECIAL)
    41604322                j = 3;
    4161 @@ -18786,6 +18944,7 @@
     4323@@ -18786,6 +18953,7 @@
    41624324                if (dict_add(fudi.fd_dict, fudi.fd_di) == FAIL)
    41634325                {
     
    41674329                }
    41684330            }
    4169 @@ -18963,7 +19122,8 @@
     4331@@ -18963,7 +19131,8 @@
    41704332     else if (lead > 0)
    41714333     {
     
    41774339            /* It's "s:" or "<SID>" */
    41784340            if (current_SID <= 0)
    4179 @@ -19618,6 +19778,7 @@
     4341@@ -19618,6 +19787,7 @@
    41804342     char_u     *name;
    41814343 #ifdef FEAT_PROFILE
     
    41854347 
    41864348     /* If depth of calling is getting too high, don't execute the function */
    4187 @@ -19685,6 +19846,7 @@
     4349@@ -19685,6 +19855,7 @@
    41884350     v->di_tv.vval.v_list = &fc.l_varlist;
    41894351     vim_memset(&fc.l_varlist, 0, sizeof(list_T));
     
    41934355     /*
    41944356      * Set a:firstline to "firstline" and a:lastline to "lastline".
    4195 @@ -19761,7 +19923,7 @@
     4357@@ -19761,7 +19932,7 @@
    41964358            if (p_verbose >= 14)
    41974359            {
     
    42024364 
    42034365                msg_puts((char_u *)"(");
    4204 @@ -19773,8 +19935,8 @@
     4366@@ -19773,8 +19944,8 @@
    42054367                        msg_outnum((long)argvars[i].vval.v_number);
    42064368                    else
     
    42134375                        vim_free(tofree);
    42144376                    }
    4215 @@ -19796,7 +19958,7 @@
     4377@@ -19796,7 +19967,7 @@
    42164378                       || (fc.caller != NULL && &fc.caller->func->uf_profiling))
    42174379        {
     
    42224384        }
    42234385        script_prof_save(&wait_start);
    4224 @@ -19826,14 +19988,14 @@
     4386@@ -19826,14 +19997,14 @@
    42254387     if (do_profiling == PROF_YES && (fp->uf_profiling
    42264388                    || (fc.caller != NULL && &fc.caller->func->uf_profiling)))
     
    42434405     }
    42444406 #endif
    4245 @@ -19852,13 +20014,13 @@
     4407@@ -19852,13 +20023,13 @@
    42464408        else
    42474409        {
     
    42614423diff -Naur vim70.orig/src/ex_cmds2.c vim70/src/ex_cmds2.c
    42624424--- vim70.orig/src/ex_cmds2.c   2006-04-17 03:19:07.000000000 -0700
    4263 +++ vim70/src/ex_cmds2.c        2006-12-05 19:57:56.000000000 -0800
    4264 @@ -3648,13 +3648,13 @@
     4425+++ vim70/src/ex_cmds2.c        2007-01-23 17:15:23.000000000 -0800
     4426@@ -2811,6 +2811,17 @@
     4427     }
     4428 
     4429 #ifdef FEAT_AUTOCMD
     4430+    /* Apply SourceCmd autocommands, they should get the file and source it. */
     4431+    if (has_autocmd(EVENT_SOURCECMD, fname_exp, NULL)
     4432+           && apply_autocmds(EVENT_SOURCECMD, fname_exp, fname_exp,
     4433+                                                              FALSE, curbuf))
     4434+# ifdef FEAT_EVAL
     4435+       return aborting() ? FAIL : OK;
     4436+# else
     4437+       return OK;
     4438+# endif
     4439+
     4440+    /* Apply SourcePre autocommands, they may get the file. */
     4441     apply_autocmds(EVENT_SOURCEPRE, fname_exp, fname_exp, FALSE, curbuf);
     4442 #endif
     4443 
     4444@@ -3648,13 +3659,13 @@
    42654445  * Return FALSE when not sourcing a file.
    42664446  */
     
    42824462diff -Naur vim70.orig/src/ex_cmds.c vim70/src/ex_cmds.c
    42834463--- vim70.orig/src/ex_cmds.c    2006-04-22 11:56:56.000000000 -0700
    4284 +++ vim70/src/ex_cmds.c 2006-12-05 19:58:00.000000000 -0800
     4464+++ vim70/src/ex_cmds.c 2007-01-23 17:14:59.000000000 -0800
    42854465@@ -95,7 +95,10 @@
    42864466                _("<%s>%s%s  %d,  Hex %02x,  Octal %03o"),
     
    43934573diff -Naur vim70.orig/src/ex_cmds.h vim70/src/ex_cmds.h
    43944574--- vim70.orig/src/ex_cmds.h    2006-04-07 02:44:46.000000000 -0700
    4395 +++ vim70/src/ex_cmds.h 2006-12-05 19:57:46.000000000 -0800
     4575+++ vim70/src/ex_cmds.h 2007-01-23 17:14:49.000000000 -0800
    43964576@@ -262,7 +262,7 @@
    43974577 EX(CMD_comclear,       "comclear",     ex_comclear,
     
    44054585diff -Naur vim70.orig/src/ex_docmd.c vim70/src/ex_docmd.c
    44064586--- vim70.orig/src/ex_docmd.c   2006-05-05 09:33:19.000000000 -0700
    4407 +++ vim70/src/ex_docmd.c        2006-12-05 19:58:21.000000000 -0800
     4587+++ vim70/src/ex_docmd.c        2007-01-23 17:15:11.000000000 -0800
    44084588@@ -58,9 +58,9 @@
    44094589 #endif
     
    48685048diff -Naur vim70.orig/src/ex_eval.c vim70/src/ex_eval.c
    48695049--- vim70.orig/src/ex_eval.c    2006-04-22 12:22:27.000000000 -0700
    4870 +++ vim70/src/ex_eval.c 2006-12-05 19:58:21.000000000 -0800
     5050+++ vim70/src/ex_eval.c 2007-01-23 17:15:11.000000000 -0800
    48715051@@ -340,7 +340,7 @@
    48725052 
     
    48945074diff -Naur vim70.orig/src/ex_getln.c vim70/src/ex_getln.c
    48955075--- vim70.orig/src/ex_getln.c   2006-04-30 08:32:01.000000000 -0700
    4896 +++ vim70/src/ex_getln.c        2006-12-05 19:58:12.000000000 -0800
     5076+++ vim70/src/ex_getln.c        2007-01-23 17:15:10.000000000 -0800
    48975077@@ -34,7 +34,7 @@
    48985078     int                xp_context;     /* type of expansion */
     
    50445224diff -Naur vim70.orig/src/fileio.c vim70/src/fileio.c
    50455225--- vim70.orig/src/fileio.c     2006-04-30 08:28:57.000000000 -0700
    5046 +++ vim70/src/fileio.c  2006-12-05 19:58:02.000000000 -0800
     5226+++ vim70/src/fileio.c  2007-01-23 17:15:23.000000000 -0800
    50475227@@ -316,6 +316,9 @@
    50485228      * display the line. */
     
    50555235      * For Unix: Use the short file name whenever possible.
    50565236      * Avoids problems with networks and when directory names are changed.
     5237@@ -6151,8 +6154,8 @@
     5238     if (retval != FAIL)
     5239     {
     5240        curbuf = frombuf;
     5241-       while (!bufempty())
     5242-           if (ml_delete(curbuf->b_ml.ml_line_count, FALSE) == FAIL)
     5243+       for (lnum = curbuf->b_ml.ml_line_count; lnum > 0; --lnum)
     5244+           if (ml_delete(lnum, FALSE) == FAIL)
     5245            {
     5246                /* Oops!  We could try putting back the saved lines, but that
     5247                 * might fail again... */
    50575248@@ -6450,17 +6453,10 @@
    50585249     int                old_ro = buf->b_p_ro;
     
    50965287     {"InsertEnter",    EVENT_INSERTENTER},
    50975288     {"InsertLeave",    EVENT_INSERTLEAVE},
    5098 @@ -8088,6 +8080,7 @@
     5289@@ -7003,6 +6995,7 @@
     5290     {"ShellCmdPost",   EVENT_SHELLCMDPOST},
     5291     {"ShellFilterPost",        EVENT_SHELLFILTERPOST},
     5292     {"SourcePre",      EVENT_SOURCEPRE},
     5293+    {"SourceCmd",      EVENT_SOURCECMD},
     5294     {"SpellFileMissing",EVENT_SPELLFILEMISSING},
     5295     {"StdinReadPost",  EVENT_STDINREADPOST},
     5296     {"StdinReadPre",   EVENT_STDINREADPRE},
     5297@@ -8088,6 +8081,7 @@
    50995298  * Search a window for the current buffer.  Save the cursor position and
    51005299  * screen offset.
     
    51045303     void
    51055304 aucmd_prepbuf(aco, buf)
    5106 @@ -8151,6 +8144,7 @@
     5305@@ -8151,6 +8145,7 @@
    51075306 /*
    51085307  * Cleanup after executing autocommands for a (hidden) buffer.
     
    51125311     void
    51135312 aucmd_restbuf(aco)
    5114 @@ -8295,7 +8289,11 @@
     5313@@ -8295,7 +8290,11 @@
    51155314 {
    51165315     int                state;
     
    51255324        state = get_real_state();
    51265325        if (state == NORMAL_BUSY || (state & INSERT) != 0)
    5127 @@ -9063,8 +9061,38 @@
     5326@@ -9063,8 +9062,38 @@
    51285327     return retval;
    51295328 }
     
    51665365diff -Naur vim70.orig/src/fold.c vim70/src/fold.c
    51675366--- vim70.orig/src/fold.c       2006-04-22 12:35:56.000000000 -0700
    5168 +++ vim70/src/fold.c    2006-12-05 19:58:10.000000000 -0800
     5367+++ vim70/src/fold.c    2007-01-23 17:15:09.000000000 -0800
    51695368@@ -2971,7 +2971,11 @@
    51705369     else
     
    51815380diff -Naur vim70.orig/src/getchar.c vim70/src/getchar.c
    51825381--- vim70.orig/src/getchar.c    2006-05-03 10:29:21.000000000 -0700
    5183 +++ vim70/src/getchar.c 2006-12-05 19:58:33.000000000 -0800
     5382+++ vim70/src/getchar.c 2007-01-23 17:15:12.000000000 -0800
    51845383@@ -76,7 +76,7 @@
    51855384  */
     
    53165515diff -Naur vim70.orig/src/globals.h vim70/src/globals.h
    53175516--- vim70.orig/src/globals.h    2006-04-30 06:16:23.000000000 -0700
    5318 +++ vim70/src/globals.h 2006-12-05 19:58:06.000000000 -0800
     5517+++ vim70/src/globals.h 2007-01-23 17:15:05.000000000 -0800
    53195518@@ -166,6 +166,7 @@
    53205519 EXTERN int     emsg_off INIT(= 0);         /* don't display errors for now,
     
    53565555diff -Naur vim70.orig/src/gui_at_fs.c vim70/src/gui_at_fs.c
    53575556--- vim70.orig/src/gui_at_fs.c  2005-07-09 04:30:17.000000000 -0700
    5358 +++ vim70/src/gui_at_fs.c       2006-12-05 19:57:43.000000000 -0800
     5557+++ vim70/src/gui_at_fs.c       2007-01-23 17:14:47.000000000 -0800
    53595558@@ -1861,27 +1861,27 @@
    53605559     XtPointer  pnew;
     
    54725671diff -Naur vim70.orig/src/gui_beval.c vim70/src/gui_beval.c
    54735672--- vim70.orig/src/gui_beval.c  2006-05-04 12:29:51.000000000 -0700
    5474 +++ vim70/src/gui_beval.c       2006-12-05 19:57:56.000000000 -0800
     5673+++ vim70/src/gui_beval.c       2007-01-23 17:14:55.000000000 -0800
    54755674@@ -926,7 +926,7 @@
    54765675 #  define IS_NONPRINTABLE(c) (((c) < 0x20 && (c) != TAB && (c) != NL) \
     
    55115710diff -Naur vim70.orig/src/gui.c vim70/src/gui.c
    55125711--- vim70.orig/src/gui.c        2006-05-03 04:00:59.000000000 -0700
    5513 +++ vim70/src/gui.c     2006-12-05 19:58:06.000000000 -0800
     5712+++ vim70/src/gui.c     2007-01-23 17:15:05.000000000 -0800
    55145713@@ -187,9 +187,10 @@
    55155714 #endif
     
    56145813diff -Naur vim70.orig/src/gui_gtk.c vim70/src/gui_gtk.c
    56155814--- vim70.orig/src/gui_gtk.c    2006-05-05 04:52:52.000000000 -0700
    5616 +++ vim70/src/gui_gtk.c 2006-12-05 19:58:10.000000000 -0800
     5815+++ vim70/src/gui_gtk.c 2007-01-23 17:15:08.000000000 -0800
    56175816@@ -957,15 +957,15 @@
    56185817 get_menu_position(vimmenu_T *menu)
     
    57125911diff -Naur vim70.orig/src/gui_gtk_x11.c vim70/src/gui_gtk_x11.c
    57135912--- vim70.orig/src/gui_gtk_x11.c        2006-05-04 23:58:59.000000000 -0700
    5714 +++ vim70/src/gui_gtk_x11.c     2006-12-05 19:57:56.000000000 -0800
     5913+++ vim70/src/gui_gtk_x11.c     2007-01-23 17:14:55.000000000 -0800
    57155914@@ -3233,12 +3233,12 @@
    57165915 on_select_tab(
     
    57775976diff -Naur vim70.orig/src/gui_xmebw.c vim70/src/gui_xmebw.c
    57785977--- vim70.orig/src/gui_xmebw.c  2006-04-30 08:32:32.000000000 -0700
    5779 +++ vim70/src/gui_xmebw.c       2006-12-05 19:58:10.000000000 -0800
     5978+++ vim70/src/gui_xmebw.c       2007-01-23 17:15:08.000000000 -0800
    57805979@@ -47,13 +47,13 @@
    57815980 #include "gui_xmebwp.h"
     
    59066105diff -Naur vim70.orig/src/hardcopy.c vim70/src/hardcopy.c
    59076106--- vim70.orig/src/hardcopy.c   2006-05-04 03:09:58.000000000 -0700
    5908 +++ vim70/src/hardcopy.c        2006-12-05 19:57:56.000000000 -0800
     6107+++ vim70/src/hardcopy.c        2007-01-23 17:14:55.000000000 -0800
    59096108@@ -1794,29 +1794,27 @@
    59106109     static int
     
    60096208diff -Naur vim70.orig/src/if_cscope.c vim70/src/if_cscope.c
    60106209--- vim70.orig/src/if_cscope.c  2006-04-18 01:54:15.000000000 -0700
    6011 +++ vim70/src/if_cscope.c       2006-12-05 19:58:12.000000000 -0800
    6012 @@ -989,8 +989,7 @@
     6210+++ vim70/src/if_cscope.c       2007-01-23 17:15:15.000000000 -0800
     6211@@ -627,10 +627,11 @@
     6212         * If the database is out of date, or there's some other problem,
     6213         * cscope will output error messages before the number-of-lines output.
     6214         * Display/discard any output that doesn't match what we want.
     6215+        * Accept "\S*cscope: X lines", also matches "mlcscope".
     6216         */
     6217        if ((stok = strtok(buf, (const char *)" ")) == NULL)
     6218            continue;
     6219-       if (strcmp((const char *)stok, "cscope:"))
     6220+       if (strstr((const char *)stok, "cscope:") == NULL)
     6221            continue;
     6222 
     6223        if ((stok = strtok(NULL, (const char *)" ")) == NULL)
     6224@@ -989,8 +990,7 @@
    60136225 {
    60146226     int i;
     
    60206232     char cmdletter;
    60216233     char *qfpos;
    6022 @@ -1009,7 +1008,7 @@
     6234@@ -1009,7 +1009,7 @@
    60236235     totmatches = 0;
    60246236     for (i = 0; i < CSCOPE_MAX_CONNECTIONS; i++)
     
    60296241 
    60306242        /* send cmd to cscope */
    6031 @@ -1101,38 +1100,44 @@
     6243@@ -1101,38 +1101,44 @@
    60326244     if (qfpos != NULL && *qfpos != '0' && totmatches > 0)
    60336245     {
     
    60966308        mch_remove(tmp);
    60976309        vim_free(tmp);
    6098 @@ -1141,6 +1146,9 @@
     6310@@ -1141,6 +1147,9 @@
    60996311     else
    61006312 #endif /* FEAT_QUICKFIX */
     
    61066318        cs_fill_results((char *)pat, totmatches, nummatches, &matches,
    61076319                                                         &contexts, &matched);
    6108 @@ -1721,7 +1729,7 @@
     6320@@ -1721,7 +1730,7 @@
    61096321               continue;
    61106322 
     
    61156327 
    61166328           if (strcmp(cntx, "<global>")==0)
    6117 @@ -1729,7 +1737,7 @@
     6329@@ -1729,7 +1738,7 @@
    61186330           else
    61196331               sprintf(context, "<<%s>>", cntx);
     
    61266338diff -Naur vim70.orig/src/if_perl.xs vim70/src/if_perl.xs
    61276339--- vim70.orig/src/if_perl.xs   2006-03-06 10:57:16.000000000 -0800
    6128 +++ vim70/src/if_perl.xs        2006-12-05 19:57:54.000000000 -0800
     6340+++ vim70/src/if_perl.xs        2007-01-23 17:14:52.000000000 -0800
    61296341@@ -155,8 +155,8 @@
    61306342 static int (*perl_run)(PerlInterpreter*);
     
    62416453diff -Naur vim70.orig/src/if_python.c vim70/src/if_python.c
    62426454--- vim70.orig/src/if_python.c  2006-04-30 08:31:36.000000000 -0700
    6243 +++ vim70/src/if_python.c       2006-12-05 19:58:04.000000000 -0800
     6455+++ vim70/src/if_python.c       2007-01-23 17:15:02.000000000 -0800
    62446456@@ -1463,7 +1463,7 @@
    62456457     if (this->buf && this->buf != INVALID_BUFFER_VALUE)
     
    62806492diff -Naur vim70.orig/src/if_ruby.c vim70/src/if_ruby.c
    62816493--- vim70.orig/src/if_ruby.c    2006-04-30 08:37:52.000000000 -0700
    6282 +++ vim70/src/if_ruby.c 2006-12-05 19:57:54.000000000 -0800
     6494+++ vim70/src/if_ruby.c 2007-01-23 17:14:52.000000000 -0800
    62836495@@ -643,11 +643,14 @@
    62846496 
     
    63956607diff -Naur vim70.orig/src/macros.h vim70/src/macros.h
    63966608--- vim70.orig/src/macros.h     2006-03-01 04:01:10.000000000 -0800
    6397 +++ vim70/src/macros.h  2006-12-05 19:58:00.000000000 -0800
     6609+++ vim70/src/macros.h  2007-01-23 17:14:57.000000000 -0800
    63986610@@ -276,3 +276,9 @@
    63996611 # define MB_CHARLEN(p)         STRLEN(p)
     
    64086620diff -Naur vim70.orig/src/main.c vim70/src/main.c
    64096621--- vim70.orig/src/main.c       2006-05-03 10:36:44.000000000 -0700
    6410 +++ vim70/src/main.c    2006-12-05 19:58:11.000000000 -0800
     6622+++ vim70/src/main.c    2007-01-23 17:15:10.000000000 -0800
    64116623@@ -564,7 +564,11 @@
    64126624      */
     
    66026814diff -Naur vim70.orig/src/Makefile vim70/src/Makefile
    66036815--- vim70.orig/src/Makefile     2006-05-07 06:25:27.000000000 -0700
    6604 +++ vim70/src/Makefile  2006-12-05 19:57:59.000000000 -0800
     6816+++ vim70/src/Makefile  2007-01-23 17:14:56.000000000 -0800
    66056817@@ -2177,6 +2177,7 @@
    66066818        cd $(SHADOWDIR)/xxd; ln -s ../../xxd/*.[ch] ../../xxd/Make* .
     
    66226834diff -Naur vim70.orig/src/mbyte.c vim70/src/mbyte.c
    66236835--- vim70.orig/src/mbyte.c      2006-04-30 04:51:01.000000000 -0700
    6624 +++ vim70/src/mbyte.c   2006-12-05 19:58:39.000000000 -0800
     6836+++ vim70/src/mbyte.c   2007-01-23 17:15:12.000000000 -0800
    66256837@@ -311,7 +311,11 @@
    66266838 
     
    67196931diff -Naur vim70.orig/src/memfile.c vim70/src/memfile.c
    67206932--- vim70.orig/src/memfile.c    2006-03-06 00:59:15.000000000 -0800
    6721 +++ vim70/src/memfile.c 2006-12-05 19:58:11.000000000 -0800
     6933+++ vim70/src/memfile.c 2007-01-23 17:15:10.000000000 -0800
    67226934@@ -517,7 +517,7 @@
    67236935        mf_ins_free(mfp, hp);   /* put *hp in the free list */
     
    67766988diff -Naur vim70.orig/src/memline.c vim70/src/memline.c
    67776989--- vim70.orig/src/memline.c    2006-04-20 14:00:21.000000000 -0700
    6778 +++ vim70/src/memline.c 2006-12-05 19:58:12.000000000 -0800
     6990+++ vim70/src/memline.c 2007-01-23 17:15:12.000000000 -0800
    67796991@@ -215,7 +215,7 @@
    67806992 #define ML_FLUSH       0x02        /* flush locked block */
     
    68077019        else
    68087020            set_b0_dir_flag(b0p, buf);
    6809 @@ -1325,6 +1325,7 @@
     7021@@ -1325,7 +1325,11 @@
    68107022            mf_put(mfp, hp, FALSE, FALSE);
    68117023        mf_close(mfp, FALSE);       /* will also vim_free(mfp->mf_fname) */
    68127024     }
    6813 +    vim_free(buf->b_ml.ml_stack);
    6814      vim_free(buf);
     7025-    vim_free(buf);
     7026+    if (buf != NULL)
     7027+    {
     7028+       vim_free(buf->b_ml.ml_stack);
     7029+       vim_free(buf);
     7030+    }
    68157031     if (serious_error && called_from_main)
    68167032        ml_close(curbuf, TRUE);
    6817 @@ -1633,6 +1634,7 @@
     7033 #ifdef FEAT_AUTOCMD
     7034@@ -1633,6 +1637,7 @@
    68187035     int                    fd;
    68197036     struct block0   b0;
     
    68237040     char_u         uname[B0_UNAME_SIZE];
    68247041 #endif
    6825 @@ -1652,8 +1654,11 @@
     7042@@ -1652,8 +1657,11 @@
    68267043 #endif
    68277044            MSG_PUTS(_("             dated: "));
     
    68377054 
    68387055     /*
    6839 @@ -3652,6 +3657,7 @@
     7056@@ -3652,6 +3660,7 @@
    68407057 {
    68417058     struct stat st;
     
    68457062     ++no_wait_return;
    68467063     (void)EMSG(_("E325: ATTENTION"));
    6847 @@ -3666,7 +3672,11 @@
     7064@@ -3666,7 +3675,11 @@
    68487065     {
    68497066        MSG_PUTS(_("             dated: "));
     
    68607077diff -Naur vim70.orig/src/menu.c vim70/src/menu.c
    68617078--- vim70.orig/src/menu.c       2006-05-03 10:30:48.000000000 -0700
    6862 +++ vim70/src/menu.c    2006-12-05 19:58:28.000000000 -0800
     7079+++ vim70/src/menu.c    2007-01-23 17:15:12.000000000 -0800
    68637080@@ -511,6 +511,14 @@
    68647081         * name (without mnemonic and accelerator text). */
     
    69467163diff -Naur vim70.orig/src/message.c vim70/src/message.c
    69477164--- vim70.orig/src/message.c    2006-05-06 13:07:37.000000000 -0700
    6948 +++ vim70/src/message.c 2006-12-05 19:58:06.000000000 -0800
     7165+++ vim70/src/message.c 2007-01-23 17:15:17.000000000 -0800
    69497166@@ -53,7 +53,6 @@
    69507167 static struct msg_hist *first_msg_hist = NULL;
     
    69557172 /*
    69567173  * When writing messages to the screen, there are many different situations.
    6957 @@ -1925,7 +1924,8 @@
     7174@@ -1557,7 +1556,7 @@
     7175     int                c_extra = 0;
     7176     char_u     *p_extra = NULL;            /* init to make SASC shut up */
     7177     int                n;
     7178-    int                attr= 0;
     7179+    int                attr = 0;
     7180     char_u     *trail = NULL;
     7181 #ifdef FEAT_MBYTE
     7182     int                l;
     7183@@ -1582,7 +1581,7 @@
     7184 
     7185     while (!got_int)
     7186     {
     7187-       if (n_extra)
     7188+       if (n_extra > 0)
     7189        {
     7190            --n_extra;
     7191            if (c_extra)
     7192@@ -1596,7 +1595,7 @@
     7193            col += (*mb_ptr2cells)(s);
     7194            mch_memmove(buf, s, (size_t)l);
     7195            buf[l] = NUL;
     7196-           msg_puts_attr(buf, attr);
     7197+           msg_puts(buf);
     7198            s += l;
     7199            continue;
     7200        }
     7201@@ -1636,6 +1635,9 @@
     7202                p_extra = transchar_byte(c);
     7203                c_extra = NUL;
     7204                c = *p_extra++;
     7205+               /* Use special coloring to be able to distinguish <hex> from
     7206+                * the same in plain text. */
     7207+               attr = hl_attr(HLF_8);
     7208            }
     7209            else if (c == ' ' && trail != NULL && s > trail)
     7210            {
     7211@@ -1925,7 +1927,8 @@
    69587212             * If screen is completely filled and 'more' is set then wait
    69597213             * for a character.
     
    69657219            {
    69667220 #ifdef FEAT_CON_DIALOG
    6967 @@ -4123,8 +4123,6 @@
     7221@@ -4123,8 +4126,6 @@
    69687222            case 'c':
    69697223            case 's':
     
    69747228                switch (fmt_spec)
    69757229                {
    6976 @@ -4175,15 +4173,16 @@
     7230@@ -4175,15 +4176,16 @@
    69777231                        str_arg_l = 0;
    69787232                    else
     
    69997253diff -Naur vim70.orig/src/misc1.c vim70/src/misc1.c
    70007254--- vim70.orig/src/misc1.c      2006-04-30 08:30:02.000000000 -0700
    7001 +++ vim70/src/misc1.c   2006-12-05 19:58:10.000000000 -0800
     7255+++ vim70/src/misc1.c   2007-01-23 17:15:07.000000000 -0800
    70027256@@ -1761,15 +1761,13 @@
    70037257      * Add column offset for 'number', 'foldcolumn', etc.
     
    71147368diff -Naur vim70.orig/src/misc2.c vim70/src/misc2.c
    71157369--- vim70.orig/src/misc2.c      2006-05-04 05:12:38.000000000 -0700
    7116 +++ vim70/src/misc2.c   2006-12-05 19:58:04.000000000 -0800
     7370+++ vim70/src/misc2.c   2007-01-23 17:15:02.000000000 -0800
    71177371@@ -1229,6 +1229,94 @@
    71187372     return escaped_string;
     
    72127466diff -Naur vim70.orig/src/netbeans.c vim70/src/netbeans.c
    72137467--- vim70.orig/src/netbeans.c   2006-04-22 11:00:05.000000000 -0700
    7214 +++ vim70/src/netbeans.c        2006-12-05 19:58:11.000000000 -0800
     7468+++ vim70/src/netbeans.c        2007-01-23 17:15:10.000000000 -0800
    72157469@@ -61,7 +61,7 @@
    72167470 
     
    74217675diff -Naur vim70.orig/src/normal.c vim70/src/normal.c
    74227676--- vim70.orig/src/normal.c     2006-04-29 06:11:18.000000000 -0700
    7423 +++ vim70/src/normal.c  2006-12-05 19:58:33.000000000 -0800
     7677+++ vim70/src/normal.c  2007-01-23 17:15:12.000000000 -0800
    74247678@@ -651,9 +651,8 @@
    74257679        /* Fake a "c"hange command.  When "restart_edit" is set (e.g., because
     
    75207774diff -Naur vim70.orig/src/ops.c vim70/src/ops.c
    75217775--- vim70.orig/src/ops.c        2006-04-30 08:13:44.000000000 -0700
    7522 +++ vim70/src/ops.c     2006-12-05 19:58:11.000000000 -0800
     7776+++ vim70/src/ops.c     2007-01-23 17:15:10.000000000 -0800
    75237777@@ -95,8 +95,8 @@
    75247778 static void block_insert __ARGS((oparg_T *oap, char_u *s, int b_insert, struct block_def*bdp));
     
    77207974diff -Naur vim70.orig/src/option.c vim70/src/option.c
    77217975--- vim70.orig/src/option.c     2006-05-03 10:32:28.000000000 -0700
    7722 +++ vim70/src/option.c  2006-12-05 19:58:09.000000000 -0800
     7976+++ vim70/src/option.c  2007-01-23 17:15:07.000000000 -0800
    77237977@@ -2294,7 +2294,7 @@
    77247978                            {(char_u *)0L, (char_u *)0L}
     
    78368090diff -Naur vim70.orig/src/os_unix.c vim70/src/os_unix.c
    78378091--- vim70.orig/src/os_unix.c    2006-05-01 01:13:15.000000000 -0700
    7838 +++ vim70/src/os_unix.c 2006-12-05 19:57:56.000000000 -0800
     8092+++ vim70/src/os_unix.c 2007-01-23 17:14:55.000000000 -0800
    78398093@@ -3934,7 +3934,7 @@
    78408094                    {
     
    78958149diff -Naur vim70.orig/src/popupmnu.c vim70/src/popupmnu.c
    78968150--- vim70.orig/src/popupmnu.c   2006-04-20 13:18:37.000000000 -0700
    7897 +++ vim70/src/popupmnu.c        2006-12-05 19:57:54.000000000 -0800
     8151+++ vim70/src/popupmnu.c        2007-01-23 17:14:53.000000000 -0800
    78988152@@ -552,6 +552,9 @@
    78998153 {
     
    79088162diff -Naur vim70.orig/src/proto/buffer.pro vim70/src/proto/buffer.pro
    79098163--- vim70.orig/src/proto/buffer.pro     2006-05-07 06:08:29.000000000 -0700
    7910 +++ vim70/src/proto/buffer.pro  2006-12-05 19:58:00.000000000 -0800
     8164+++ vim70/src/proto/buffer.pro  2007-01-23 17:14:57.000000000 -0800
    79118165@@ -10,6 +10,7 @@
    79128166 extern int do_buffer __ARGS((int action, int start, int dir, int count, int forceit));
     
    79198173diff -Naur vim70.orig/src/proto/eval.pro vim70/src/proto/eval.pro
    79208174--- vim70.orig/src/proto/eval.pro       2006-05-07 06:08:33.000000000 -0700
    7921 +++ vim70/src/proto/eval.pro    2006-12-05 19:58:07.000000000 -0800
     8175+++ vim70/src/proto/eval.pro    2007-01-23 17:15:06.000000000 -0800
    79228176@@ -44,7 +44,7 @@
    79238177 extern char_u *get_user_var_name __ARGS((expand_T *xp, int idx));
     
    79318185diff -Naur vim70.orig/src/proto/menu.pro vim70/src/proto/menu.pro
    79328186--- vim70.orig/src/proto/menu.pro       2006-05-07 06:08:51.000000000 -0700
    7933 +++ vim70/src/proto/menu.pro    2006-12-05 19:57:54.000000000 -0800
     8187+++ vim70/src/proto/menu.pro    2007-01-23 17:14:53.000000000 -0800
    79348188@@ -10,6 +10,7 @@
    79358189 extern int menu_is_child_of_popup __ARGS((vimmenu_T *menu));
     
    79428196diff -Naur vim70.orig/src/proto/misc2.pro vim70/src/proto/misc2.pro
    79438197--- vim70.orig/src/proto/misc2.pro      2006-05-07 06:08:54.000000000 -0700
    7944 +++ vim70/src/proto/misc2.pro   2006-12-05 19:58:04.000000000 -0800
     8198+++ vim70/src/proto/misc2.pro   2007-01-23 17:15:02.000000000 -0800
    79458199@@ -29,6 +29,7 @@
    79468200 extern char_u *vim_strnsave __ARGS((char_u *string, int len));
     
    79538207diff -Naur vim70.orig/src/proto/ops.pro vim70/src/proto/ops.pro
    79548208--- vim70.orig/src/proto/ops.pro        2006-05-07 06:08:58.000000000 -0700
    7955 +++ vim70/src/proto/ops.pro     2006-12-05 19:58:11.000000000 -0800
     8209+++ vim70/src/proto/ops.pro     2007-01-23 17:15:10.000000000 -0800
    79568210@@ -17,10 +17,10 @@
    79578211 extern void put_register __ARGS((int name, void *reg));
     
    79698223diff -Naur vim70.orig/src/proto/undo.pro vim70/src/proto/undo.pro
    79708224--- vim70.orig/src/proto/undo.pro       2006-05-07 06:09:11.000000000 -0700
    7971 +++ vim70/src/proto/undo.pro    2006-12-05 19:57:47.000000000 -0800
     8225+++ vim70/src/proto/undo.pro    2007-01-23 17:14:49.000000000 -0800
    79728226@@ -4,6 +4,7 @@
    79738227 extern int u_savesub __ARGS((linenr_T lnum));
     
    79808234diff -Naur vim70.orig/src/quickfix.c vim70/src/quickfix.c
    79818235--- vim70.orig/src/quickfix.c   2006-05-03 00:47:42.000000000 -0700
    7982 +++ vim70/src/quickfix.c        2006-12-05 19:58:09.000000000 -0800
     8236+++ vim70/src/quickfix.c        2007-01-23 17:15:07.000000000 -0800
    79838237@@ -500,8 +500,6 @@
    79848238        {
     
    82358489diff -Naur vim70.orig/src/regexp.c vim70/src/regexp.c
    82368490--- vim70.orig/src/regexp.c     2006-04-30 08:31:50.000000000 -0700
    8237 +++ vim70/src/regexp.c  2006-12-05 19:58:09.000000000 -0800
     8491+++ vim70/src/regexp.c  2007-01-23 17:15:07.000000000 -0800
    82388492@@ -3777,8 +3777,8 @@
    82398493 
     
    83728626diff -Naur vim70.orig/src/screen.c vim70/src/screen.c
    83738627--- vim70.orig/src/screen.c     2006-05-05 03:13:55.000000000 -0700
    8374 +++ vim70/src/screen.c  2006-12-05 19:58:12.000000000 -0800
     8628+++ vim70/src/screen.c  2007-01-23 17:15:11.000000000 -0800
    83758629@@ -455,6 +455,7 @@
    83768630                    && curwin->w_topline == curwin->w_lines[0].wl_lnum)
     
    85568810diff -Naur vim70.orig/src/search.c vim70/src/search.c
    85578811--- vim70.orig/src/search.c     2006-05-05 05:12:13.000000000 -0700
    8558 +++ vim70/src/search.c  2006-12-05 19:58:06.000000000 -0800
    8559 @@ -1259,7 +1259,7 @@
     8812+++ vim70/src/search.c  2007-01-23 17:15:26.000000000 -0800
     8813@@ -812,7 +812,11 @@
     8814 #ifdef FEAT_MBYTE
     8815                        if (has_mbyte)
     8816                        {
     8817-                           ptr = ml_get_buf(buf, pos->lnum, FALSE);
     8818+                           /* 'e' offset may put us just below the last line */
     8819+                           if (pos->lnum > buf->b_ml.ml_line_count)
     8820+                               ptr = (char_u *)"";
     8821+                           else
     8822+                               ptr = ml_get_buf(buf, pos->lnum, FALSE);
     8823                            pos->col -= (*mb_head_off)(ptr, ptr + pos->col);
     8824                        }
     8825 #endif
     8826@@ -1259,7 +1263,7 @@
    85608827        /*
    85618828         * Add character and/or line offset
     
    85668833            if (spats[0].off.line)      /* Add the offset to the line number. */
    85678834            {
    8568 @@ -4688,6 +4688,7 @@
     8835@@ -4688,6 +4692,7 @@
    85698836 #ifdef FEAT_INS_EXPAND
    85708837                    if (action == ACTION_EXPAND)
     
    85748841                                _("Scanning included file: %s"),
    85758842                                (char *)new_fname);
    8576 @@ -4826,15 +4827,20 @@
     8843@@ -4826,15 +4831,20 @@
    85778844 
    85788845                if ((compl_cont_status & CONT_ADDING) && i == compl_length)
     
    86028869 
    86038870                    /* we read a line, set "already" to check this "line" later
    8604 @@ -4871,7 +4877,7 @@
     8871@@ -4871,7 +4881,7 @@
    86058872                        goto exit_matched;
    86068873                }
     
    86138880diff -Naur vim70.orig/src/spell.c vim70/src/spell.c
    86148881--- vim70.orig/src/spell.c      2006-05-05 00:49:58.000000000 -0700
    8615 +++ vim70/src/spell.c   2006-12-05 19:58:02.000000000 -0800
     8882+++ vim70/src/spell.c   2007-01-23 17:15:01.000000000 -0800
    86168883@@ -1483,7 +1483,7 @@
    86178884            else if ((mode == FIND_COMPOUND || mode == FIND_KEEPCOMPOUND
     
    89449211diff -Naur vim70.orig/src/structs.h vim70/src/structs.h
    89459212--- vim70.orig/src/structs.h    2006-04-09 10:57:46.000000000 -0700
    8946 +++ vim70/src/structs.h 2006-12-05 19:57:54.000000000 -0800
     9213+++ vim70/src/structs.h 2007-01-23 17:14:52.000000000 -0800
    89479214@@ -2213,18 +2213,20 @@
    89489215 
     
    89709237diff -Naur vim70.orig/src/syntax.c vim70/src/syntax.c
    89719238--- vim70.orig/src/syntax.c     2006-04-26 05:49:45.000000000 -0700
    8972 +++ vim70/src/syntax.c  2006-12-05 19:58:10.000000000 -0800
     9239+++ vim70/src/syntax.c  2007-01-23 17:15:09.000000000 -0800
    89739240@@ -977,6 +977,7 @@
    89749241 {
     
    90749341diff -Naur vim70.orig/src/tag.c vim70/src/tag.c
    90759342--- vim70.orig/src/tag.c        2006-04-27 06:11:21.000000000 -0700
    9076 +++ vim70/src/tag.c     2006-12-05 19:58:07.000000000 -0800
     9343+++ vim70/src/tag.c     2007-01-23 17:15:06.000000000 -0800
    90779344@@ -911,7 +911,7 @@
    90789345 
     
    91169383diff -Naur vim70.orig/src/term.c vim70/src/term.c
    91179384--- vim70.orig/src/term.c       2006-05-03 10:34:57.000000000 -0700
    9118 +++ vim70/src/term.c    2006-12-05 19:58:10.000000000 -0800
     9385+++ vim70/src/term.c    2007-01-23 17:15:08.000000000 -0800
    91199386@@ -3137,25 +3137,32 @@
    91209387            screenalloc(FALSE);
     
    91809447diff -Naur vim70.orig/src/testdir/test56.in vim70/src/testdir/test56.in
    91819448--- vim70.orig/src/testdir/test56.in    2005-05-18 08:37:37.000000000 -0700
    9182 +++ vim70/src/testdir/test56.in 2006-12-05 19:58:00.000000000 -0800
     9449+++ vim70/src/testdir/test56.in 2007-01-23 17:14:57.000000000 -0800
    91839450@@ -3,7 +3,7 @@
    91849451 STARTTEST
     
    91929459diff -Naur vim70.orig/src/ui.c vim70/src/ui.c
    91939460--- vim70.orig/src/ui.c 2006-03-27 11:15:09.000000000 -0800
    9194 +++ vim70/src/ui.c      2006-12-05 19:57:56.000000000 -0800
     9461+++ vim70/src/ui.c      2007-01-23 17:14:55.000000000 -0800
    91959462@@ -1137,7 +1137,6 @@
    91969463     int                len;
     
    92129479diff -Naur vim70.orig/src/undo.c vim70/src/undo.c
    92139480--- vim70.orig/src/undo.c       2006-04-21 02:30:59.000000000 -0700
    9214 +++ vim70/src/undo.c    2006-12-05 19:57:56.000000000 -0800
     9481+++ vim70/src/undo.c    2007-01-23 17:15:12.000000000 -0800
    92159482@@ -84,7 +84,6 @@
    92169483 static void u_unch_branch __ARGS((u_header_T *uhp));
     
    92309497 {
    92319498     /* Don't allow changes when 'modifiable' is off.  */
    9232 @@ -1188,7 +1187,7 @@
     9499@@ -342,11 +341,15 @@
     9500        uhp->uh_alt_next = old_curhead;
     9501        if (old_curhead != NULL)
     9502        {
     9503+           uhp->uh_alt_prev = old_curhead->uh_alt_prev;
     9504+           if (uhp->uh_alt_prev != NULL)
     9505+               uhp->uh_alt_prev->uh_alt_next = uhp;
     9506            old_curhead->uh_alt_prev = uhp;
     9507            if (curbuf->b_u_oldhead == old_curhead)
     9508                curbuf->b_u_oldhead = uhp;
     9509        }
     9510-       uhp->uh_alt_prev = NULL;
     9511+       else
     9512+           uhp->uh_alt_prev = NULL;
     9513        if (curbuf->b_u_newhead != NULL)
     9514            curbuf->b_u_newhead->uh_prev = uhp;
     9515 
     9516@@ -857,6 +860,11 @@
     9517        uhp = curbuf->b_u_curhead;
     9518        while (uhp != NULL)
     9519        {
     9520+           /* Go back to the first branch with a mark. */
     9521+           while (uhp->uh_alt_prev != NULL
     9522+                                       && uhp->uh_alt_prev->uh_walk == mark)
     9523+               uhp = uhp->uh_alt_prev;
     9524+
     9525            /* Find the last branch with a mark, that's the one. */
     9526            last = uhp;
     9527            while (last->uh_alt_next != NULL
     9528@@ -866,6 +874,8 @@
     9529            {
     9530                /* Make the used branch the first entry in the list of
     9531                 * alternatives to make "u" and CTRL-R take this branch. */
     9532+               while (uhp->uh_alt_prev != NULL)
     9533+                   uhp = uhp->uh_alt_prev;
     9534                if (last->uh_alt_next != NULL)
     9535                    last->uh_alt_next->uh_alt_prev = last->uh_alt_prev;
     9536                last->uh_alt_prev->uh_alt_next = last->uh_alt_next;
     9537@@ -1188,7 +1198,7 @@
    92339538     int                did_undo;       /* just did an undo */
    92349539     int                absolute;       /* used ":undo N" */
     
    92399544     char_u     msgbuf[80];
    92409545 
    9241 @@ -1206,20 +1205,20 @@
     9546@@ -1206,20 +1216,20 @@
    92429547 
    92439548     u_oldcount -= u_newcount;
     
    92669571 
    92679572     if (curbuf->b_u_curhead != NULL)
    9268 @@ -1245,7 +1244,7 @@
     9573@@ -1245,7 +1255,7 @@
    92699574 
    92709575     smsg((char_u *)_("%ld %s; %s #%ld  %s"),
     
    92779582diff -Naur vim70.orig/src/version.c vim70/src/version.c
    92789583--- vim70.orig/src/version.c    2006-05-03 00:50:42.000000000 -0700
    9279 +++ vim70/src/version.c 2006-12-05 19:58:39.000000000 -0800
    9280 @@ -667,6 +667,328 @@
     9584+++ vim70/src/version.c 2007-01-23 17:15:26.000000000 -0800
     9585@@ -667,6 +667,346 @@
    92819586 static int included_patches[] =
    92829587 {   /* Add new patch number below this line */
    92839588 /**/
     9589+    188,
     9590+/**/
     9591+    187,
     9592+/**/
     9593+    186,
     9594+/**/
     9595+    185,
     9596+/**/
     9597+    184,
     9598+/**/
     9599+    183,
     9600+/**/
     9601+    182,
     9602+/**/
     9603+    181,
     9604+/**/
     9605+    179,
     9606+/**/
    92849607+    178,
    92859608+/**/
     
    96079930 };
    96089931 
    9609 @@ -731,7 +1053,11 @@
     9932@@ -731,7 +1071,11 @@
    96109933     /* Only MS VC 4.1 and earlier can do Win32s */
    96119934     MSG_PUTS(_("\nMS-Windows 16/32 bit GUI version"));
     
    96219944diff -Naur vim70.orig/src/vim.h vim70/src/vim.h
    96229945--- vim70.orig/src/vim.h        2006-04-30 08:32:38.000000000 -0700
    9623 +++ vim70/src/vim.h     2006-12-05 19:58:11.000000000 -0800
     9946+++ vim70/src/vim.h     2007-01-23 17:15:23.000000000 -0800
    96249947@@ -585,7 +585,6 @@
    96259948 #define INSERT         0x10    /* Insert mode */
     
    96409963 #define FORWARD                        1
    96419964 #define BACKWARD               (-1)
     9965@@ -1100,7 +1102,7 @@
     9966     EVENT_COLORSCHEME,         /* after loading a colorscheme */
     9967     EVENT_FILEAPPENDPOST,      /* after appending to a file */
     9968     EVENT_FILEAPPENDPRE,       /* before appending to a file */
     9969-    EVENT_FILEAPPENDCMD,       /* appende to a file using command */
     9970+    EVENT_FILEAPPENDCMD,       /* append to a file using command */
     9971     EVENT_FILECHANGEDSHELL,    /* after shell command that changed file */
     9972     EVENT_FILECHANGEDSHELLPOST,        /* after (not) reloading changed file */
     9973     EVENT_FILECHANGEDRO,       /* before first change to read-only file */
    96429974@@ -1118,6 +1120,7 @@
    96439975     EVENT_FOCUSGAINED,         /* got the focus */
     
    96489980     EVENT_INSERTENTER,         /* when entering Insert mode */
    96499981     EVENT_INSERTLEAVE,         /* when leaving Insert mode */
    9650 @@ -1666,7 +1669,10 @@
     9982@@ -1144,6 +1147,7 @@
     9983     EVENT_REMOTEREPLY,         /* upon string reception from a remote vim */
     9984     EVENT_SWAPEXISTS,          /* found existing swap file */
     9985     EVENT_SOURCEPRE,           /* before sourcing a Vim script */
     9986+    EVENT_SOURCECMD,           /* sourcing a Vim script using command */
     9987     EVENT_SPELLFILEMISSING,    /* spell file missing */
     9988     EVENT_CURSORMOVED,         /* cursor was moved */
     9989     EVENT_CURSORMOVEDI,                /* cursor was moved in Insert mode */
     9990@@ -1666,7 +1670,10 @@
    96519991 #define VV_SWAPCHOICE  46
    96529992 #define VV_SWAPCOMMAND 47
     
    966210002diff -Naur vim70.orig/src/window.c vim70/src/window.c
    966310003--- vim70.orig/src/window.c     2006-05-06 03:54:51.000000000 -0700
    9664 +++ vim70/src/window.c  2006-12-05 19:58:12.000000000 -0800
     10004+++ vim70/src/window.c  2007-01-23 17:15:11.000000000 -0800
    966510005@@ -340,10 +340,10 @@
    966610006                {
Note: See TracChangeset for help on using the changeset viewer.