Changeset 13457b7


Ignore:
Timestamp:
Oct 25, 2006, 8:01:17 PM (16 years ago)
Author:
Jim Gifford <clfs@…>
Branches:
clfs-1.2, clfs-2.1, clfs-3.0.0-systemd, clfs-3.0.0-sysvinit, master, systemd, sysvinit
Children:
af2511e
Parents:
658cb1c
Message:

Updated Vim 7.0 patch

File:
1 moved

Legend:

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

    r658cb1c r13457b7  
    11Submitted By: Jim Gifford (jim at linuxfromscratch dot org)
    2 Date: 2006-10-21
     2Date: 2006-10-25
    33Initial Package Version: 7.0
    44Origin: Upstream
    55Upstream Status: Applied
    6 Description: Contains all upstream patches up to 7.0.146
     6Description: Contains all upstream patches up to 7.0.152
    77             The following patches were skipped
    88                005 027 028 032 045 057 065 074 108 130 131 132 138
     9
    910diff -Naur vim70.orig/configure vim70/configure
    1011--- vim70.orig/configure        2004-07-05 02:02:24.000000000 -0700
    11 +++ vim70/configure     2006-10-21 21:08:54.000000000 -0700
     12+++ vim70/configure     2006-10-25 19:55:26.000000000 -0700
    1213@@ -3,4 +3,4 @@
    1314 # This is just a stub for the Unix configure script, to provide support for
     
    1819diff -Naur vim70.orig/runtime/autoload/ccomplete.vim vim70/runtime/autoload/ccomplete.vim
    1920--- vim70.orig/runtime/autoload/ccomplete.vim   2006-05-03 07:35:56.000000000 -0700
    20 +++ vim70/runtime/autoload/ccomplete.vim        2006-10-21 21:08:49.000000000 -0700
     21+++ vim70/runtime/autoload/ccomplete.vim        2006-10-25 19:55:18.000000000 -0700
    2122@@ -1,7 +1,7 @@
    2223 " Vim completion script
     
    3940diff -Naur vim70.orig/runtime/autoload/gzip.vim vim70/runtime/autoload/gzip.vim
    4041--- vim70.orig/runtime/autoload/gzip.vim        2006-03-31 07:12:15.000000000 -0800
    41 +++ vim70/runtime/autoload/gzip.vim     2006-10-21 21:09:06.000000000 -0700
     42+++ vim70/runtime/autoload/gzip.vim     2006-10-25 19:55:42.000000000 -0700
    4243@@ -1,6 +1,6 @@
    4344 " Vim autoload file for editing compressed files.
     
    100101diff -Naur vim70.orig/runtime/autoload/paste.vim vim70/runtime/autoload/paste.vim
    101102--- vim70.orig/runtime/autoload/paste.vim       2006-04-21 11:31:01.000000000 -0700
    102 +++ vim70/runtime/autoload/paste.vim    2006-10-21 21:08:52.000000000 -0700
     103+++ vim70/runtime/autoload/paste.vim    2006-10-25 19:55:22.000000000 -0700
    103104@@ -1,6 +1,6 @@
    104105 " Vim support file to help with paste mappings and menus
     
    120121diff -Naur vim70.orig/runtime/autoload/spellfile.vim vim70/runtime/autoload/spellfile.vim
    121122--- vim70.orig/runtime/autoload/spellfile.vim   2006-02-01 04:12:24.000000000 -0800
    122 +++ vim70/runtime/autoload/spellfile.vim        2006-10-21 21:09:00.000000000 -0700
     123+++ vim70/runtime/autoload/spellfile.vim        2006-10-25 19:55:36.000000000 -0700
    123124@@ -1,9 +1,9 @@
    124125 " Vim script to download a missing spell file
     
    176177diff -Naur vim70.orig/runtime/doc/eval.txt vim70/runtime/doc/eval.txt
    177178--- vim70.orig/runtime/doc/eval.txt     2006-05-07 05:16:44.000000000 -0700
    178 +++ vim70/runtime/doc/eval.txt  2006-10-21 21:09:06.000000000 -0700
     179+++ vim70/runtime/doc/eval.txt  2006-10-25 19:55:42.000000000 -0700
    179180@@ -1,4 +1,4 @@
    180181-*eval.txt*      For Vim version 7.0.  Last change: 2006 May 06
     
    216217diff -Naur vim70.orig/runtime/menu.vim vim70/runtime/menu.vim
    217218--- vim70.orig/runtime/menu.vim 2006-04-17 06:47:28.000000000 -0700
    218 +++ vim70/runtime/menu.vim      2006-10-21 21:09:05.000000000 -0700
     219+++ vim70/runtime/menu.vim      2006-10-25 19:55:41.000000000 -0700
    219220@@ -2,7 +2,7 @@
    220221 " You can also use this as a start for your own set of menus.
     
    283284diff -Naur vim70.orig/runtime/plugin/matchparen.vim vim70/runtime/plugin/matchparen.vim
    284285--- vim70.orig/runtime/plugin/matchparen.vim    2006-04-27 06:31:26.000000000 -0700
    285 +++ vim70/runtime/plugin/matchparen.vim 2006-10-21 21:09:04.000000000 -0700
     286+++ vim70/runtime/plugin/matchparen.vim 2006-10-25 19:55:39.000000000 -0700
    286287@@ -1,6 +1,6 @@
    287288 " Vim plugin for showing matching parens
     
    326327diff -Naur vim70.orig/runtime/scripts.vim vim70/runtime/scripts.vim
    327328--- vim70.orig/runtime/scripts.vim      2006-03-28 11:30:49.000000000 -0800
    328 +++ vim70/runtime/scripts.vim   2006-10-21 21:08:54.000000000 -0700
     329+++ vim70/runtime/scripts.vim   2006-10-25 19:55:27.000000000 -0700
    329330@@ -1,7 +1,7 @@
    330331 " Vim support file to detect file types in scripts
     
    351352diff -Naur vim70.orig/runtime/tutor/Makefile vim70/runtime/tutor/Makefile
    352353--- vim70.orig/runtime/tutor/Makefile   2004-06-07 07:32:39.000000000 -0700
    353 +++ vim70/runtime/tutor/Makefile        2006-10-21 21:09:04.000000000 -0700
     354+++ vim70/runtime/tutor/Makefile        2006-10-25 19:55:40.000000000 -0700
    354355@@ -2,8 +2,13 @@
    355356 #
     
    385386diff -Naur vim70.orig/runtime/tutor/tutor.gr.utf-8 vim70/runtime/tutor/tutor.gr.utf-8
    386387--- vim70.orig/runtime/tutor/tutor.gr.utf-8     1969-12-31 16:00:00.000000000 -0800
    387 +++ vim70/runtime/tutor/tutor.gr.utf-8  2006-10-21 21:09:04.000000000 -0700
     388+++ vim70/runtime/tutor/tutor.gr.utf-8  2006-10-25 19:55:40.000000000 -0700
    388389@@ -0,0 +1,815 @@
    389390+===============================================================================
     
    14181419diff -Naur vim70.orig/runtime/tutor/tutor.ru.utf-8 vim70/runtime/tutor/tutor.ru.utf-8
    14191420--- vim70.orig/runtime/tutor/tutor.ru.utf-8     1969-12-31 16:00:00.000000000 -0800
    1420 +++ vim70/runtime/tutor/tutor.ru.utf-8  2006-10-21 21:09:00.000000000 -0700
     1421+++ vim70/runtime/tutor/tutor.ru.utf-8  2006-10-25 19:55:36.000000000 -0700
    14211422@@ -0,0 +1,834 @@
    14221423+===============================================================================
     
    23392340diff -Naur vim70.orig/runtime/tutor/tutor.vim vim70/runtime/tutor/tutor.vim
    23402341--- vim70.orig/runtime/tutor/tutor.vim  2006-03-18 12:20:36.000000000 -0800
    2341 +++ vim70/runtime/tutor/tutor.vim       2006-10-21 21:09:04.000000000 -0700
     2342+++ vim70/runtime/tutor/tutor.vim       2006-10-25 19:55:40.000000000 -0700
    23422343@@ -1,6 +1,6 @@
    23432344 " Vim tutor support file
     
    23912392diff -Naur vim70.orig/src/auto/configure vim70/src/auto/configure
    23922393--- vim70.orig/src/auto/configure       2006-05-04 03:46:19.000000000 -0700
    2393 +++ vim70/src/auto/configure    2006-10-21 21:09:10.000000000 -0700
     2394+++ vim70/src/auto/configure    2006-10-25 19:55:46.000000000 -0700
    23942395@@ -4014,7 +4014,7 @@
    23952396       LDFLAGS=$ldflags_save
     
    24322433diff -Naur vim70.orig/src/buffer.c vim70/src/buffer.c
    24332434--- vim70.orig/src/buffer.c     2006-04-26 14:37:23.000000000 -0700
    2434 +++ vim70/src/buffer.c  2006-10-21 21:09:11.000000000 -0700
     2435+++ vim70/src/buffer.c  2006-10-25 19:55:48.000000000 -0700
    24352436@@ -434,12 +434,8 @@
    24362437     if (usingNetbeans)
     
    25742575diff -Naur vim70.orig/src/configure vim70/src/configure
    25752576--- vim70.orig/src/configure    2006-05-07 07:17:49.000000000 -0700
    2576 +++ vim70/src/configure 2006-10-21 21:08:54.000000000 -0700
     2577+++ vim70/src/configure 2006-10-25 19:55:26.000000000 -0700
    25772578@@ -2,5 +2,9 @@
    25782579 # run the automatically generated configure script
     
    25872588diff -Naur vim70.orig/src/configure.in vim70/src/configure.in
    25882589--- vim70.orig/src/configure.in 2006-05-04 03:46:11.000000000 -0700
    2589 +++ vim70/src/configure.in      2006-10-21 21:09:10.000000000 -0700
     2590+++ vim70/src/configure.in      2006-10-25 19:55:46.000000000 -0700
    25902591@@ -508,7 +508,8 @@
    25912592       LDFLAGS=$ldflags_save
     
    26302631diff -Naur vim70.orig/src/edit.c vim70/src/edit.c
    26312632--- vim70.orig/src/edit.c       2006-05-07 04:48:51.000000000 -0700
    2632 +++ vim70/src/edit.c    2006-10-21 21:09:10.000000000 -0700
     2633+++ vim70/src/edit.c    2006-10-25 19:55:46.000000000 -0700
    26332634@@ -129,7 +129,7 @@
    26342635 
     
    32403241diff -Naur vim70.orig/src/eval.c vim70/src/eval.c
    32413242--- vim70.orig/src/eval.c       2006-05-05 10:15:26.000000000 -0700
    3242 +++ vim70/src/eval.c    2006-10-21 21:09:11.000000000 -0700
     3243+++ vim70/src/eval.c    2006-10-25 19:55:55.000000000 -0700
    32433244@@ -191,8 +191,6 @@
    32443245 #define FC_RANGE    2          /* function accepts range */
     
    33113312     }
    33123313 
    3313 @@ -3364,6 +3364,8 @@
     3314@@ -3125,7 +3125,12 @@
     3315     funcdict_T fudi;
     3316 
     3317     tofree = trans_function_name(&arg, eap->skip, TFN_INT, &fudi);
     3318-    vim_free(fudi.fd_newkey);
     3319+    if (fudi.fd_newkey != NULL)
     3320+    {
     3321+       /* Still need to give an error message for missing key. */
     3322+       EMSG2(_(e_dictkey), fudi.fd_newkey);
     3323+       vim_free(fudi.fd_newkey);
     3324+    }
     3325     if (tofree == NULL)
     3326        return;
     3327 
     3328@@ -3364,6 +3369,8 @@
    33143329        hi = hash_find(ht, varname);
    33153330        if (!HASHITEM_EMPTY(hi))
     
    33203335                return FAIL;
    33213336            delete_var(ht, hi);
    3322 @@ -4895,7 +4897,7 @@
     3337@@ -4895,7 +4902,7 @@
    33233338                    {
    33243339                        if (list_append_tv(l, &item->li_tv) == FAIL)
     
    33293344                        }
    33303345                        item = item->li_next;
    3331 @@ -5295,7 +5297,7 @@
     3346@@ -5295,7 +5302,7 @@
    33323347        EMSG2(_("E697: Missing end of List ']': %s"), *arg);
    33333348 failret:
     
    33383353     }
    33393354 
    3340 @@ -5359,8 +5361,8 @@
     3355@@ -5359,8 +5366,8 @@
    33413356 list_unref(l)
    33423357     list_T *l;
     
    33493364 
    33503365 /*
    3351 @@ -5368,14 +5370,12 @@
     3366@@ -5368,14 +5375,12 @@
    33523367  * Ignores the reference count.
    33533368  */
     
    33673382     if (l->lv_used_prev == NULL)
    33683383        first_list = l->lv_used_next;
    3369 @@ -5388,7 +5388,10 @@
     3384@@ -5388,7 +5393,10 @@
    33703385     {
    33713386        /* Remove the item before deleting it. */
     
    33793394     vim_free(l);
    33803395 }
    3381 @@ -5448,6 +5451,8 @@
     3396@@ -5448,6 +5456,8 @@
    33823397 {
    33833398     listitem_T *item1, *item2;
     
    33883403        return FALSE;
    33893404 
    3390 @@ -5484,6 +5489,8 @@
     3405@@ -5484,6 +5494,8 @@
    33913406     dictitem_T *item2;
    33923407     int                todo;
     
    33973412        return FALSE;
    33983413 
    3399 @@ -5516,19 +5523,29 @@
     3414@@ -5516,19 +5528,29 @@
    34003415 {
    34013416     char_u     buf1[NUMBUFLEN], buf2[NUMBUFLEN];
     
    34313446        case VAR_FUNC:
    34323447            return (tv1->vval.v_string != NULL
    3433 @@ -6059,6 +6076,10 @@
     3448@@ -6059,6 +6081,10 @@
    34343449     tabpage_T  *tp;
    34353450 #endif
     
    34423457      * 1. Go through all accessible variables and mark all lists and dicts
    34433458      *    with copyID.
    3444 @@ -6097,7 +6118,10 @@
     3459@@ -6097,7 +6123,10 @@
    34453460     for (dd = first_dict; dd != NULL; )
    34463461        if (dd->dv_copyID != copyID)
     
    34543469 
    34553470            /* restart, next dict may also have been freed */
    3456 @@ -6114,7 +6138,10 @@
     3471@@ -6114,7 +6143,10 @@
    34573472     for (ll = first_list; ll != NULL; )
    34583473        if (ll->lv_copyID != copyID && ll->lv_watch == NULL)
     
    34663481 
    34673482            /* restart, next list may also have been freed */
    3468 @@ -6207,11 +6234,12 @@
     3483@@ -6207,11 +6239,12 @@
    34693484     d = (dict_T *)alloc(sizeof(dict_T));
    34703485     if (d != NULL)
     
    34803495        hash_init(&d->dv_hashtab);
    34813496        d->dv_lock = 0;
    3482 @@ -6229,8 +6257,8 @@
     3497@@ -6229,8 +6262,8 @@
    34833498 dict_unref(d)
    34843499     dict_T *d;
     
    34913506 
    34923507 /*
    3493 @@ -6238,16 +6266,14 @@
     3508@@ -6238,16 +6271,14 @@
    34943509  * Ignores the reference count.
    34953510  */
     
    35113526     if (d->dv_used_prev == NULL)
    35123527        first_dict = d->dv_used_next;
    3513 @@ -6267,7 +6293,10 @@
     3528@@ -6267,7 +6298,10 @@
    35143529             * something recursive causing trouble. */
    35153530            di = HI2DI(hi);
     
    35233538        }
    35243539     }
    3525 @@ -6718,7 +6747,7 @@
     3540@@ -6718,7 +6752,7 @@
    35263541        EMSG2(_("E723: Missing end of Dictionary '}': %s"), *arg);
    35273542 failret:
     
    35323547     }
    35333548 
    3534 @@ -7139,6 +7168,7 @@
     3549@@ -7139,6 +7173,7 @@
    35353550     {"setreg",         2, 3, f_setreg},
    35363551     {"settabwinvar",   4, 4, f_settabwinvar},
     
    35403555     {"sort",           1, 2, f_sort},
    35413556     {"soundfold",      1, 1, f_soundfold},
    3542 @@ -7595,8 +7625,8 @@
     3557@@ -7595,8 +7630,8 @@
    35433558  * Give an error message with a function name.  Handle <SNR> things.
    35443559  */
     
    35513566 {
    35523567     char_u     *p;
    3553 @@ -7605,7 +7635,7 @@
     3568@@ -7605,7 +7640,7 @@
    35543569        p = concat_str((char_u *)"<SNR>", name + 3);
    35553570     else
     
    35603575        vim_free(p);
    35613576 }
    3562 @@ -8252,6 +8282,12 @@
     3577@@ -8252,6 +8287,12 @@
    35633578        EMSG(_("E785: complete() can only be used in Insert mode"));
    35643579        return;
     
    35733588     {
    35743589        EMSG(_(e_invarg));
    3575 @@ -9173,25 +9209,25 @@
     3590@@ -9173,25 +9214,25 @@
    35763591     typval_T   save_key;
    35773592     int                rem;
     
    36033618     }
    36043619 
    3605 @@ -9223,7 +9259,7 @@
     3620@@ -9223,7 +9264,7 @@
    36063621                {
    36073622                    --todo;
     
    36123627                    vimvars[VV_KEY].vv_str = vim_strsave(di->di_key);
    36133628                    if (filter_map_one(&di->di_tv, expr, map, &rem) == FAIL
    3614 @@ -9242,7 +9278,7 @@
     3629@@ -9242,7 +9283,7 @@
    36153630        {
    36163631            for (li = l->lv_first; li != NULL; li = nli)
     
    36213636                nli = li->li_next;
    36223637                if (filter_map_one(&li->li_tv, expr, map, &rem) == FAIL
    3623 @@ -9598,7 +9634,9 @@
     3638@@ -9598,7 +9639,9 @@
    36243639     typval_T   *argvars;
    36253640     typval_T   *rettv;
     
    36323647 
    36333648 /*
    3634 @@ -9792,6 +9830,9 @@
     3649@@ -9792,6 +9835,9 @@
    36353650     varnumber_T                n;
    36363651     int                        error = FALSE;
     
    36423657     ++allow_keys;
    36433658     if (argvars[0].v_type == VAR_UNKNOWN)
    3644 @@ -10412,20 +10453,14 @@
     3659@@ -10412,20 +10458,14 @@
    36453660 
    36463661     if (win != NULL && varname != NULL)
     
    36693684        {
    36703685            if (*varname == NUL)
    3671 @@ -10438,6 +10473,10 @@
     3686@@ -10438,6 +10478,10 @@
    36723687            if (v != NULL)
    36733688                copy_tv(&v->di_tv, rettv);
     
    36803695 
    36813696     --emsg_off;
    3682 @@ -11312,14 +11351,19 @@
     3697@@ -11312,14 +11356,19 @@
    36833698 
    36843699 static int inputsecret_flag = 0;
     
    37033718     char_u     *prompt = get_tv_string_chk(&argvars[0]);
    37043719     char_u     *p = NULL;
    3705 @@ -11369,10 +11413,10 @@
     3720@@ -11369,10 +11418,10 @@
    37063721            if (defstr != NULL)
    37073722                stuffReadbuffSpec(defstr);
     
    37163731 
    37173732                rettv->vval.v_string = NULL;
    3718 @@ -11404,6 +11448,18 @@
     3733@@ -11404,6 +11453,18 @@
    37193734 }
    37203735 
     
    37353750  */
    37363751     static void
    3737 @@ -11443,7 +11499,7 @@
     3752@@ -11443,7 +11504,7 @@
    37383753     }
    37393754     else
     
    37443759 
    37453760 /*
    3746 @@ -11471,6 +11527,7 @@
     3761@@ -11471,6 +11532,7 @@
    37473762     }
    37483763 
     
    37523767     msg_scroll = TRUE;
    37533768     msg_clr_eos();
    3754 @@ -13250,7 +13307,7 @@
     3769@@ -13250,7 +13312,7 @@
    37553770        if (argvars[2].v_type != VAR_UNKNOWN)
    37563771            EMSG2(_(e_toomanyarg), "remove()");
     
    37613776            key = get_tv_string_chk(&argvars[1]);
    37623777            if (key != NULL)
    3763 @@ -13270,7 +13327,7 @@
     3778@@ -13270,7 +13332,7 @@
    37643779     else if (argvars[0].v_type != VAR_LIST)
    37653780        EMSG2(_(e_listdictarg), "remove()");
     
    37703785        int         error = FALSE;
    37713786 
    3772 @@ -14157,11 +14214,7 @@
     3787@@ -14157,11 +14219,7 @@
    37733788     typval_T   *rettv;
    37743789 {
     
    37823797     typval_T   *varp;
    37833798     char_u     nbuf[NUMBUFLEN];
    3784 @@ -14178,12 +14231,7 @@
     3799@@ -14178,12 +14236,7 @@
    37853800     if (buf != NULL && varname != NULL && varp != NULL)
    37863801     {
     
    37953810        if (*varname == '&')
    37963811        {
    3797 @@ -14210,11 +14258,7 @@
     3812@@ -14210,11 +14263,7 @@
    37983813        }
    37993814 
     
    38073822 }
    38083823 
    3809 @@ -14582,6 +14626,18 @@
     3824@@ -14582,6 +14631,18 @@
    38103825 }
    38113826 
     
    38263841  */
    38273842     static void
    3828 @@ -16173,7 +16229,7 @@
     3843@@ -16173,7 +16234,7 @@
    38293844        curwin->w_curswant = get_dict_number(dict, (char_u *)"curswant");
    38303845        curwin->w_set_curswant = FALSE;
     
    38353850        curwin->w_topfill = get_dict_number(dict, (char_u *)"topfill");
    38363851 #endif
    3837 @@ -16218,6 +16274,7 @@
     3852@@ -16218,6 +16279,7 @@
    38383853 #ifdef FEAT_VIRTUALEDIT
    38393854     dict_add_nr_str(dict, "coladd", (long)curwin->w_cursor.coladd, NULL);
     
    38433858 
    38443859     dict_add_nr_str(dict, "topline", (long)curwin->w_topline, NULL);
    3845 @@ -16438,9 +16495,12 @@
     3860@@ -16438,9 +16500,12 @@
    38463861     long       i = 0;
    38473862     long       n;
     
    38593874 
    38603875     if (fnump != NULL)
    3861 @@ -16466,8 +16526,9 @@
     3876@@ -16466,8 +16531,9 @@
    38623877 #ifdef FEAT_VIRTUALEDIT
    38633878     n = list_find_nr(l, i, NULL);
     
    38713886 
    38723887     return OK;
    3873 @@ -17759,6 +17820,13 @@
     3888@@ -17759,6 +17825,13 @@
    38743889     }
    38753890     else                   /* add a new variable */
     
    38853900        for (p = varname; *p != NUL; ++p)
    38863901            if (!eval_isnamec1(*p) && (p == varname || !VIM_ISDIGIT(*p))
    3887 @@ -17792,7 +17860,7 @@
     3902@@ -17792,7 +17865,7 @@
    38883903 }
    38893904 
     
    38943909  */
    38953910     static int
    3896 @@ -17814,6 +17882,23 @@
     3911@@ -17814,6 +17887,23 @@
    38973912 }
    38983913 
     
    39183933  * Also give an error message, using "name".
    39193934  */
    3920 @@ -18786,6 +18871,7 @@
     3935@@ -18786,6 +18876,7 @@
    39213936                if (dict_add(fudi.fd_dict, fudi.fd_di) == FAIL)
    39223937                {
     
    39263941                }
    39273942            }
    3928 @@ -18963,7 +19049,8 @@
     3943@@ -18963,7 +19054,8 @@
    39293944     else if (lead > 0)
    39303945     {
     
    39363951            /* It's "s:" or "<SID>" */
    39373952            if (current_SID <= 0)
    3938 @@ -19685,6 +19772,7 @@
     3953@@ -19685,6 +19777,7 @@
    39393954     v->di_tv.vval.v_list = &fc.l_varlist;
    39403955     vim_memset(&fc.l_varlist, 0, sizeof(list_T));
     
    39443959     /*
    39453960      * Set a:firstline to "firstline" and a:lastline to "lastline".
    3946 @@ -19761,7 +19849,7 @@
     3961@@ -19761,7 +19854,7 @@
    39473962            if (p_verbose >= 14)
    39483963            {
     
    39533968 
    39543969                msg_puts((char_u *)"(");
    3955 @@ -19773,8 +19861,8 @@
     3970@@ -19773,8 +19866,8 @@
    39563971                        msg_outnum((long)argvars[i].vval.v_number);
    39573972                    else
     
    39643979                        vim_free(tofree);
    39653980                    }
    3966 @@ -19852,13 +19940,13 @@
     3981@@ -19852,13 +19945,13 @@
    39673982        else
    39683983        {
     
    39823997diff -Naur vim70.orig/src/ex_cmds2.c vim70/src/ex_cmds2.c
    39833998--- vim70.orig/src/ex_cmds2.c   2006-04-17 03:19:07.000000000 -0700
    3984 +++ vim70/src/ex_cmds2.c        2006-10-21 21:08:58.000000000 -0700
     3999+++ vim70/src/ex_cmds2.c        2006-10-25 19:55:34.000000000 -0700
    39854000@@ -3648,13 +3648,13 @@
    39864001  * Return FALSE when not sourcing a file.
     
    40034018diff -Naur vim70.orig/src/ex_cmds.c vim70/src/ex_cmds.c
    40044019--- vim70.orig/src/ex_cmds.c    2006-04-22 11:56:56.000000000 -0700
    4005 +++ vim70/src/ex_cmds.c 2006-10-21 21:09:02.000000000 -0700
     4020+++ vim70/src/ex_cmds.c 2006-10-25 19:55:39.000000000 -0700
    40064021@@ -95,7 +95,10 @@
    40074022                _("<%s>%s%s  %d,  Hex %02x,  Octal %03o"),
     
    41144129diff -Naur vim70.orig/src/ex_cmds.h vim70/src/ex_cmds.h
    41154130--- vim70.orig/src/ex_cmds.h    2006-04-07 02:44:46.000000000 -0700
    4116 +++ vim70/src/ex_cmds.h 2006-10-21 21:08:52.000000000 -0700
     4131+++ vim70/src/ex_cmds.h 2006-10-25 19:55:22.000000000 -0700
    41174132@@ -262,7 +262,7 @@
    41184133 EX(CMD_comclear,       "comclear",     ex_comclear,
     
    41264141diff -Naur vim70.orig/src/ex_docmd.c vim70/src/ex_docmd.c
    41274142--- vim70.orig/src/ex_docmd.c   2006-05-05 09:33:19.000000000 -0700
    4128 +++ vim70/src/ex_docmd.c        2006-10-21 21:09:04.000000000 -0700
     4143+++ vim70/src/ex_docmd.c        2006-10-25 19:55:51.000000000 -0700
    41294144@@ -58,9 +58,9 @@
    41304145 #endif
     
    43964411 
    43974412 /*
     4413@@ -9629,7 +9643,8 @@
     4414 #endif
     4415 
     4416 #ifdef FEAT_SESSION
     4417-static int ses_winsizes __ARGS((FILE *fd, int restore_size));
     4418+static int ses_winsizes __ARGS((FILE *fd, int restore_size,
     4419+                                                       win_T *tab_firstwin));
     4420 static int ses_win_rec __ARGS((FILE *fd, frame_T *fr));
     4421 static frame_T *ses_skipframe __ARGS((frame_T *fr));
     4422 static int ses_do_frame __ARGS((frame_T *fr));
     4423@@ -9655,8 +9670,8 @@
     4424     win_T      *wp;
     4425     char_u     *sname;
     4426     win_T      *edited_win = NULL;
     4427-    tabpage_T  *old_curtab = curtab;
     4428     int                tabnr;
     4429+    win_T      *tab_firstwin;
     4430 
     4431     if (ssop_flags & SSOP_BUFFERS)
     4432        only_save_windows = FALSE;              /* Save ALL buffers */
     4433@@ -9764,14 +9779,26 @@
     4434     /*
     4435      * May repeat putting Windows for each tab, when "tabpages" is in
     4436      * 'sessionoptions'.
     4437+     * Don't use goto_tabpage(), it may change directory and trigger
     4438+     * autocommands.
     4439      */
     4440+    tab_firstwin = firstwin;   /* first window in tab page "tabnr" */
     4441     for (tabnr = 1; ; ++tabnr)
     4442     {
     4443+       int  need_tabnew = FALSE;
     4444+
     4445        if ((ssop_flags & SSOP_TABPAGES))
     4446        {
     4447-           goto_tabpage(tabnr);
     4448-           if (tabnr > 1 && put_line(fd, "tabnew") == FAIL)
     4449-               return FAIL;
     4450+           tabpage_T *tp = find_tabpage(tabnr);
     4451+
     4452+           if (tp == NULL)
     4453+               break;          /* done all tab pages */
     4454+           if (tp == curtab)
     4455+               tab_firstwin = firstwin;
     4456+           else
     4457+               tab_firstwin = tp->tp_firstwin;
     4458+           if (tabnr > 1)
     4459+               need_tabnew = TRUE;
     4460        }
     4461 
     4462        /*
     4463@@ -9779,7 +9806,7 @@
     4464         * is aborted we don't end up with a number of useless windows.
     4465         * This may have side effects! (e.g., compressed or network file).
     4466         */
     4467-       for (wp = firstwin; wp != NULL; wp = wp->w_next)
     4468+       for (wp = tab_firstwin; wp != NULL; wp = wp->w_next)
     4469        {
     4470            if (ses_do_win(wp)
     4471                    && wp->w_buffer->b_ffname != NULL
     4472@@ -9789,15 +9816,20 @@
     4473 #endif
     4474                    )
     4475            {
     4476-               if (fputs("edit ", fd) < 0
     4477+               if (fputs(need_tabnew ? "tabedit " : "edit ", fd) < 0
     4478                        || ses_fname(fd, wp->w_buffer, &ssop_flags) == FAIL)
     4479                    return FAIL;
     4480+               need_tabnew = FALSE;
     4481                if (!wp->w_arg_idx_invalid)
     4482                    edited_win = wp;
     4483                break;
     4484            }
     4485        }
     4486 
     4487+       /* If no file got edited create an empty tab page. */
     4488+       if (need_tabnew && put_line(fd, "tabnew") == FAIL)
     4489+           return FAIL;
     4490+
     4491        /*
     4492         * Save current window layout.
     4493         */
     4494@@ -9815,7 +9847,7 @@
     4495         * Remember the window number of the current window after restoring.
     4496         */
     4497        nr = 0;
     4498-       for (wp = firstwin; wp != NULL; wp = W_NEXT(wp))
     4499+       for (wp = tab_firstwin; wp != NULL; wp = W_NEXT(wp))
     4500        {
     4501            if (ses_do_win(wp))
     4502                ++nr;
     4503@@ -9838,13 +9870,13 @@
     4504         */
     4505        if (put_line(fd, "set winheight=1 winwidth=1") == FAIL)
     4506            return FAIL;
     4507-       if (nr > 1 && ses_winsizes(fd, restore_size) == FAIL)
     4508+       if (nr > 1 && ses_winsizes(fd, restore_size, tab_firstwin) == FAIL)
     4509            return FAIL;
     4510 
     4511        /*
     4512         * Restore the view of the window (options, file, cursor, etc.).
     4513         */
     4514-       for (wp = firstwin; wp != NULL; wp = wp->w_next)
     4515+       for (wp = tab_firstwin; wp != NULL; wp = wp->w_next)
     4516        {
     4517            if (!ses_do_win(wp))
     4518                continue;
     4519@@ -9865,19 +9897,17 @@
     4520         * Restore window sizes again after jumping around in windows, because
     4521         * the current window has a minimum size while others may not.
     4522         */
     4523-       if (nr > 1 && ses_winsizes(fd, restore_size) == FAIL)
     4524+       if (nr > 1 && ses_winsizes(fd, restore_size, tab_firstwin) == FAIL)
     4525            return FAIL;
     4526 
     4527        /* Don't continue in another tab page when doing only the current one
     4528         * or when at the last tab page. */
     4529-       if (!(ssop_flags & SSOP_TABPAGES) || curtab->tp_next == NULL)
     4530+       if (!(ssop_flags & SSOP_TABPAGES))
     4531            break;
     4532     }
     4533 
     4534     if (ssop_flags & SSOP_TABPAGES)
     4535     {
     4536-       if (valid_tabpage(old_curtab))
     4537-           goto_tabpage_tp(old_curtab);
     4538        if (fprintf(fd, "tabnext %d", tabpage_index(curtab)) < 0
     4539                || put_eol(fd) == FAIL)
     4540            return FAIL;
     4541@@ -9913,16 +9943,17 @@
     4542 }
     4543 
     4544     static int
     4545-ses_winsizes(fd, restore_size)
     4546+ses_winsizes(fd, restore_size, tab_firstwin)
     4547     FILE       *fd;
     4548     int                restore_size;
     4549+    win_T      *tab_firstwin;
     4550 {
     4551     int                n = 0;
     4552     win_T      *wp;
     4553 
     4554     if (restore_size && (ssop_flags & SSOP_WINSIZE))
     4555     {
     4556-       for (wp = firstwin; wp != NULL; wp = wp->w_next)
     4557+       for (wp = tab_firstwin; wp != NULL; wp = wp->w_next)
     4558        {
     4559            if (!ses_do_win(wp))
     4560                continue;
    43984561diff -Naur vim70.orig/src/ex_getln.c vim70/src/ex_getln.c
    43994562--- vim70.orig/src/ex_getln.c   2006-04-30 08:32:01.000000000 -0700
    4400 +++ vim70/src/ex_getln.c        2006-10-21 21:09:11.000000000 -0700
     4563+++ vim70/src/ex_getln.c        2006-10-25 19:55:47.000000000 -0700
    44014564@@ -86,7 +86,7 @@
    44024565 static void    draw_cmdline __ARGS((int start, int len));
     
    45214684diff -Naur vim70.orig/src/fileio.c vim70/src/fileio.c
    45224685--- vim70.orig/src/fileio.c     2006-04-30 08:28:57.000000000 -0700
    4523 +++ vim70/src/fileio.c  2006-10-21 21:09:05.000000000 -0700
     4686+++ vim70/src/fileio.c  2006-10-25 19:55:41.000000000 -0700
    45244687@@ -316,6 +316,9 @@
    45254688      * display the line. */
     
    46434806diff -Naur vim70.orig/src/getchar.c vim70/src/getchar.c
    46444807--- vim70.orig/src/getchar.c    2006-05-03 10:29:21.000000000 -0700
    4645 +++ vim70/src/getchar.c 2006-10-21 21:09:07.000000000 -0700
     4808+++ vim70/src/getchar.c 2006-10-25 19:55:43.000000000 -0700
    46464809@@ -1451,7 +1451,8 @@
    46474810 {
     
    47294892diff -Naur vim70.orig/src/globals.h vim70/src/globals.h
    47304893--- vim70.orig/src/globals.h    2006-04-30 06:16:23.000000000 -0700
    4731 +++ vim70/src/globals.h 2006-10-21 21:09:09.000000000 -0700
     4894+++ vim70/src/globals.h 2006-10-25 19:55:45.000000000 -0700
    47324895@@ -166,6 +166,7 @@
    47334896 EXTERN int     emsg_off INIT(= 0);         /* don't display errors for now,
     
    47694932diff -Naur vim70.orig/src/gui_at_fs.c vim70/src/gui_at_fs.c
    47704933--- vim70.orig/src/gui_at_fs.c  2005-07-09 04:30:17.000000000 -0700
    4771 +++ vim70/src/gui_at_fs.c       2006-10-21 21:08:51.000000000 -0700
     4934+++ vim70/src/gui_at_fs.c       2006-10-25 19:55:20.000000000 -0700
    47724935@@ -1861,27 +1861,27 @@
    47734936     XtPointer  pnew;
     
    48855048diff -Naur vim70.orig/src/gui_beval.c vim70/src/gui_beval.c
    48865049--- vim70.orig/src/gui_beval.c  2006-05-04 12:29:51.000000000 -0700
    4887 +++ vim70/src/gui_beval.c       2006-10-21 21:08:58.000000000 -0700
     5050+++ vim70/src/gui_beval.c       2006-10-25 19:55:34.000000000 -0700
    48885051@@ -926,7 +926,7 @@
    48895052 #  define IS_NONPRINTABLE(c) (((c) < 0x20 && (c) != TAB && (c) != NL) \
     
    49245087diff -Naur vim70.orig/src/gui.c vim70/src/gui.c
    49255088--- vim70.orig/src/gui.c        2006-05-03 04:00:59.000000000 -0700
    4926 +++ vim70/src/gui.c     2006-10-21 21:09:09.000000000 -0700
     5089+++ vim70/src/gui.c     2006-10-25 19:55:45.000000000 -0700
    49275090@@ -187,9 +187,10 @@
    49285091 #endif
     
    50275190diff -Naur vim70.orig/src/gui_gtk.c vim70/src/gui_gtk.c
    50285191--- vim70.orig/src/gui_gtk.c    2006-05-05 04:52:52.000000000 -0700
    5029 +++ vim70/src/gui_gtk.c 2006-10-21 21:09:09.000000000 -0700
     5192+++ vim70/src/gui_gtk.c 2006-10-25 19:56:06.000000000 -0700
    50305193@@ -957,15 +957,15 @@
    50315194 get_menu_position(vimmenu_T *menu)
     
    50685231     /* If our pointer is currently hidden, then we should show it. */
    50695232     gui_mch_mousehide(FALSE);
     5233@@ -1298,8 +1293,8 @@
     5234            GTK_WINDOW(gui.mainwin),
     5235            saving ? GTK_FILE_CHOOSER_ACTION_SAVE
     5236                                           : GTK_FILE_CHOOSER_ACTION_OPEN,
     5237-           saving ? GTK_STOCK_SAVE : GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
     5238            GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
     5239+           saving ? GTK_STOCK_SAVE : GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
     5240            NULL);
     5241     gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(fc),
     5242                                                       (const gchar *)dirbuf);
    50705243@@ -1341,6 +1336,11 @@
    50715244     else
     
    51155288diff -Naur vim70.orig/src/gui_gtk_x11.c vim70/src/gui_gtk_x11.c
    51165289--- vim70.orig/src/gui_gtk_x11.c        2006-05-04 23:58:59.000000000 -0700
    5117 +++ vim70/src/gui_gtk_x11.c     2006-10-21 21:08:58.000000000 -0700
     5290+++ vim70/src/gui_gtk_x11.c     2006-10-25 19:55:34.000000000 -0700
    51185291@@ -3233,12 +3233,12 @@
    51195292 on_select_tab(
     
    51805353diff -Naur vim70.orig/src/gui_xmebw.c vim70/src/gui_xmebw.c
    51815354--- vim70.orig/src/gui_xmebw.c  2006-04-30 08:32:32.000000000 -0700
    5182 +++ vim70/src/gui_xmebw.c       2006-10-21 21:08:51.000000000 -0700
     5355+++ vim70/src/gui_xmebw.c       2006-10-25 19:56:09.000000000 -0700
    51835356@@ -47,13 +47,13 @@
    51845357 #include "gui_xmebwp.h"
     
    51975370 #  define Lab_IsMenupane(w) (Lab_MenuType(w) == (int)XmMENU_POPUP || \
    51985371                    Lab_MenuType(w) == (int)XmMENU_PULLDOWN)
    5199 @@ -480,7 +480,7 @@
     5372@@ -138,6 +138,19 @@
     5373     }
     5374 };
     5375 
     5376+/* This is needed to work around a bug in Lesstif 2, leaving the extension
     5377+ * NULL somehow results in getting it set to an invalid pointer. */
     5378+XmPrimitiveClassExtRec xmEnhancedButtonPrimClassExtRec =
     5379+{
     5380+    /* next_extension      */ NULL,
     5381+    /* record_type         */ NULLQUARK,
     5382+    /* version             */ XmPrimitiveClassExtVersion,
     5383+    /* record_size         */ sizeof(XmPrimitiveClassExtRec),
     5384+    /* widget_baseline     */ XmInheritBaselineProc,
     5385+    /* widget_display_rect */ XmInheritDisplayRectProc,
     5386+    /* widget_margins      */ NULL
     5387+};
     5388+
     5389 XmEnhancedButtonClassRec xmEnhancedButtonClassRec =
     5390 {
     5391     {
     5392@@ -184,7 +197,7 @@
     5393        /* arm and activate      */ XmInheritArmAndActivate,
     5394        /* synthetic resources   */ NULL,
     5395        /* number of syn res     */ 0,
     5396-       /* extension             */ NULL,
     5397+       /* extension             */ (XtPointer)&xmEnhancedButtonPrimClassExtRec,
     5398     },
     5399 
     5400     /* label_class fields */
     5401@@ -480,7 +493,7 @@
    52005402            || (eb->core.height <= 2 * eb->primitive.highlight_thickness))
    52015403        return;
     
    52065408        XmDisplay       dpy;
    52075409 
    5208 @@ -641,7 +641,7 @@
     5410@@ -641,7 +654,7 @@
    52095411     GC         tmp_gc = NULL;
    52105412     Boolean    replaceGC = False;
     
    52155417     Boolean    etched_in = dpy->display.enable_etched_in_menu;
    52165418 #else
    5217 @@ -726,7 +726,7 @@
     5419@@ -726,7 +739,7 @@
    52185420        if ((((ShellWidget) XtParent(XtParent(eb)))->shell.popped_up)
    52195421                && _XmGetInDragMode((Widget) eb))
     
    52245426            Boolean etched_in = dpy->display.enable_etched_in_menu;
    52255427 #else
    5226 @@ -810,7 +810,7 @@
     5428@@ -810,7 +823,7 @@
    52275429 
    52285430     if (Lab_IsMenupane(eb))
     
    52335435        Boolean etched_in = dpy->display.enable_etched_in_menu;
    52345436 #else
    5235 @@ -1150,7 +1150,7 @@
     5437@@ -1150,7 +1163,7 @@
    52365438 Redisplay(Widget w, XEvent *event, Region region)
    52375439 {
     
    52425444     XtEnum                 default_button_emphasis;
    52435445 #endif
    5244 @@ -1162,7 +1162,7 @@
     5446@@ -1162,7 +1175,7 @@
    52455447     if (!XtIsRealized((Widget)eb))
    52465448        return;
     
    52515453     default_button_emphasis = dpy->display.default_button_emphasis;
    52525454 #endif
    5253 @@ -1241,7 +1241,7 @@
     5455@@ -1241,7 +1254,7 @@
    52545456     {
    52555457        int adjust = 0;
     
    52605462         *  NOTE: PushButton has two types of shadows: primitive-shadow and
    52615463         *  default-button-shadow.  If pushbutton is in a menu only primitive
    5262 @@ -1289,7 +1289,7 @@
     5464@@ -1289,7 +1302,7 @@
    52635465                          adjust, adjust, rectwidth, rectheight, borderwidth);
    52645466            }
     
    52695471            {
    52705472                case XmINTERNAL_HIGHLIGHT:
    5271 @@ -1365,7 +1365,7 @@
     5473@@ -1365,7 +1378,7 @@
    52725474                    default_button_shadow_thickness =
    52735475                               eb->pushbutton.default_button_shadow_thickness;
     
    52805482diff -Naur vim70.orig/src/hardcopy.c vim70/src/hardcopy.c
    52815483--- vim70.orig/src/hardcopy.c   2006-05-04 03:09:58.000000000 -0700
    5282 +++ vim70/src/hardcopy.c        2006-10-21 21:08:58.000000000 -0700
     5484+++ vim70/src/hardcopy.c        2006-10-25 19:55:34.000000000 -0700
    52835485@@ -1794,29 +1794,27 @@
    52845486     static int
     
    53835585diff -Naur vim70.orig/src/if_cscope.c vim70/src/if_cscope.c
    53845586--- vim70.orig/src/if_cscope.c  2006-04-18 01:54:15.000000000 -0700
    5385 +++ vim70/src/if_cscope.c       2006-10-21 21:08:58.000000000 -0700
     5587+++ vim70/src/if_cscope.c       2006-10-25 19:55:34.000000000 -0700
    53865588@@ -989,8 +989,7 @@
    53875589 {
     
    54065608diff -Naur vim70.orig/src/if_perl.xs vim70/src/if_perl.xs
    54075609--- vim70.orig/src/if_perl.xs   2006-03-06 10:57:16.000000000 -0800
    5408 +++ vim70/src/if_perl.xs        2006-10-21 21:08:55.000000000 -0700
     5610+++ vim70/src/if_perl.xs        2006-10-25 19:55:31.000000000 -0700
    54095611@@ -155,8 +155,8 @@
    54105612 static int (*perl_run)(PerlInterpreter*);
     
    55215723diff -Naur vim70.orig/src/if_python.c vim70/src/if_python.c
    55225724--- vim70.orig/src/if_python.c  2006-04-30 08:31:36.000000000 -0700
    5523 +++ vim70/src/if_python.c       2006-10-21 21:09:06.000000000 -0700
     5725+++ vim70/src/if_python.c       2006-10-25 19:55:42.000000000 -0700
    55245726@@ -1463,7 +1463,7 @@
    55255727     if (this->buf && this->buf != INVALID_BUFFER_VALUE)
     
    55605762diff -Naur vim70.orig/src/if_ruby.c vim70/src/if_ruby.c
    55615763--- vim70.orig/src/if_ruby.c    2006-04-30 08:37:52.000000000 -0700
    5562 +++ vim70/src/if_ruby.c 2006-10-21 21:08:55.000000000 -0700
     5764+++ vim70/src/if_ruby.c 2006-10-25 19:55:31.000000000 -0700
    55635765@@ -643,11 +643,14 @@
    55645766 
     
    56755877diff -Naur vim70.orig/src/macros.h vim70/src/macros.h
    56765878--- vim70.orig/src/macros.h     2006-03-01 04:01:10.000000000 -0800
    5677 +++ vim70/src/macros.h  2006-10-21 21:09:01.000000000 -0700
     5879+++ vim70/src/macros.h  2006-10-25 19:55:39.000000000 -0700
    56785880@@ -276,3 +276,9 @@
    56795881 # define MB_CHARLEN(p)         STRLEN(p)
     
    56885890diff -Naur vim70.orig/src/main.c vim70/src/main.c
    56895891--- vim70.orig/src/main.c       2006-05-03 10:36:44.000000000 -0700
    5690 +++ vim70/src/main.c    2006-10-21 21:09:01.000000000 -0700
     5892+++ vim70/src/main.c    2006-10-25 19:55:38.000000000 -0700
    56915893@@ -564,7 +564,11 @@
    56925894      */
     
    57775979diff -Naur vim70.orig/src/Makefile vim70/src/Makefile
    57785980--- vim70.orig/src/Makefile     2006-05-07 06:25:27.000000000 -0700
    5779 +++ vim70/src/Makefile  2006-10-21 21:09:00.000000000 -0700
     5981+++ vim70/src/Makefile  2006-10-25 19:55:36.000000000 -0700
    57805982@@ -2177,6 +2177,7 @@
    57815983        cd $(SHADOWDIR)/xxd; ln -s ../../xxd/*.[ch] ../../xxd/Make* .
     
    57975999diff -Naur vim70.orig/src/mbyte.c vim70/src/mbyte.c
    57986000--- vim70.orig/src/mbyte.c      2006-04-30 04:51:01.000000000 -0700
    5799 +++ vim70/src/mbyte.c   2006-10-21 21:08:58.000000000 -0700
     6001+++ vim70/src/mbyte.c   2006-10-25 19:55:34.000000000 -0700
    58006002@@ -311,7 +311,11 @@
    58016003 
     
    58796081diff -Naur vim70.orig/src/memfile.c vim70/src/memfile.c
    58806082--- vim70.orig/src/memfile.c    2006-03-06 00:59:15.000000000 -0800
    5881 +++ vim70/src/memfile.c 2006-10-21 21:09:06.000000000 -0700
     6083+++ vim70/src/memfile.c 2006-10-25 19:55:41.000000000 -0700
    58826084@@ -517,7 +517,7 @@
    58836085        mf_ins_free(mfp, hp);   /* put *hp in the free list */
     
    59126114diff -Naur vim70.orig/src/memline.c vim70/src/memline.c
    59136115--- vim70.orig/src/memline.c    2006-04-20 14:00:21.000000000 -0700
    5914 +++ vim70/src/memline.c 2006-10-21 21:09:09.000000000 -0700
     6116+++ vim70/src/memline.c 2006-10-25 19:55:45.000000000 -0700
    59156117@@ -215,7 +215,7 @@
    59166118 #define ML_FLUSH       0x02        /* flush locked block */
     
    59886190diff -Naur vim70.orig/src/menu.c vim70/src/menu.c
    59896191--- vim70.orig/src/menu.c       2006-05-03 10:30:48.000000000 -0700
    5990 +++ vim70/src/menu.c    2006-10-21 21:08:56.000000000 -0700
     6192+++ vim70/src/menu.c    2006-10-25 19:55:31.000000000 -0700
    59916193@@ -511,6 +511,14 @@
    59926194         * name (without mnemonic and accelerator text). */
     
    60656267diff -Naur vim70.orig/src/message.c vim70/src/message.c
    60666268--- vim70.orig/src/message.c    2006-05-06 13:07:37.000000000 -0700
    6067 +++ vim70/src/message.c 2006-10-21 21:09:09.000000000 -0700
     6269+++ vim70/src/message.c 2006-10-25 19:55:45.000000000 -0700
    60686270@@ -53,7 +53,6 @@
    60696271 static struct msg_hist *first_msg_hist = NULL;
     
    61186320diff -Naur vim70.orig/src/misc1.c vim70/src/misc1.c
    61196321--- vim70.orig/src/misc1.c      2006-04-30 08:30:02.000000000 -0700
    6120 +++ vim70/src/misc1.c   2006-10-21 21:09:10.000000000 -0700
    6121 @@ -2842,7 +2842,8 @@
     6322+++ vim70/src/misc1.c   2006-10-25 19:55:59.000000000 -0700
     6323@@ -1761,15 +1761,13 @@
     6324      * Add column offset for 'number', 'foldcolumn', etc.
     6325      */
     6326     width = W_WIDTH(wp) - win_col_off(wp);
     6327-    if (width > 0)
     6328-    {
     6329-       lines += 1;
     6330-       if (col >= width)
     6331-           lines += (col - width) / (width + win_col_off2(wp));
     6332-       if (lines <= wp->w_height)
     6333-           return lines;
     6334-    }
     6335-    return (int)(wp->w_height);            /* maximum length */
     6336+    if (width <= 0)
     6337+       return 9999;
     6338+
     6339+    lines += 1;
     6340+    if (col > width)
     6341+       lines += (col - width) / (width + win_col_off2(wp)) + 1;
     6342+    return lines;
     6343 }
     6344 
     6345     int
     6346@@ -2842,7 +2840,8 @@
    61226347 
    61236348 #ifdef FEAT_AUTOCMD
     
    61296354 #endif
    61306355 }
    6131 @@ -3016,6 +3017,7 @@
     6356@@ -3016,6 +3015,7 @@
    61326357     int                len = 0;
    61336358     int                n;
     
    61376362     mapped_ctrl_c = FALSE;     /* mappings are not used here */
    61386363     for (;;)
    6139 @@ -3034,11 +3036,16 @@
     6364@@ -3034,11 +3034,16 @@
    61406365            /* Replace zero and CSI by a special key code. */
    61416366            n = fix_input_buffer(buf + len, n, FALSE);
     
    61566381        if (n > 0)
    61576382            len = n;
    6158 @@ -3196,14 +3203,12 @@
     6383@@ -3196,14 +3201,12 @@
    61596384     else
    61606385        MSG_PUTS(_("Choice number (<Enter> cancels): "));
     
    61756400     i = get_number(TRUE, mouse_used);
    61766401     if (KeyTyped)
    6177 @@ -4492,7 +4497,7 @@
     6402@@ -4492,7 +4495,7 @@
    61786403                int l = mb_ptr2len(s);
    61796404 
     
    61846409 # endif
    61856410        }
    6186 @@ -8070,9 +8075,20 @@
     6411@@ -8070,9 +8073,20 @@
    61876412                }
    61886413                if (*that == '"' && *(that + 1) != NUL)
     
    62106435diff -Naur vim70.orig/src/misc2.c vim70/src/misc2.c
    62116436--- vim70.orig/src/misc2.c      2006-05-04 05:12:38.000000000 -0700
    6212 +++ vim70/src/misc2.c   2006-10-21 21:09:06.000000000 -0700
     6437+++ vim70/src/misc2.c   2006-10-25 19:55:42.000000000 -0700
    62136438@@ -1229,6 +1229,94 @@
    62146439     return escaped_string;
     
    63086533diff -Naur vim70.orig/src/netbeans.c vim70/src/netbeans.c
    63096534--- vim70.orig/src/netbeans.c   2006-04-22 11:00:05.000000000 -0700
    6310 +++ vim70/src/netbeans.c        2006-10-21 21:08:58.000000000 -0700
     6535+++ vim70/src/netbeans.c        2006-10-25 19:55:34.000000000 -0700
    63116536@@ -103,7 +103,7 @@
    63126537 static int  inputHandler = -1;         /* simply ret.value of WSAAsyncSelect() */
     
    64786703diff -Naur vim70.orig/src/normal.c vim70/src/normal.c
    64796704--- vim70.orig/src/normal.c     2006-04-29 06:11:18.000000000 -0700
    6480 +++ vim70/src/normal.c  2006-10-21 21:09:11.000000000 -0700
     6705+++ vim70/src/normal.c  2006-10-25 19:55:48.000000000 -0700
    64816706@@ -1477,14 +1477,17 @@
    64826707        }
     
    65566781diff -Naur vim70.orig/src/ops.c vim70/src/ops.c
    65576782--- vim70.orig/src/ops.c        2006-04-30 08:13:44.000000000 -0700
    6558 +++ vim70/src/ops.c     2006-10-21 21:09:11.000000000 -0700
     6783+++ vim70/src/ops.c     2006-10-25 19:55:47.000000000 -0700
    65596784@@ -770,6 +770,7 @@
    65606785 {
     
    66346859diff -Naur vim70.orig/src/option.c vim70/src/option.c
    66356860--- vim70.orig/src/option.c     2006-05-03 10:32:28.000000000 -0700
    6636 +++ vim70/src/option.c  2006-10-21 21:09:11.000000000 -0700
     6861+++ vim70/src/option.c  2006-10-25 19:55:47.000000000 -0700
    66376862@@ -2294,7 +2294,7 @@
    66386863                            {(char_u *)0L, (char_u *)0L}
     
    67506975diff -Naur vim70.orig/src/os_unix.c vim70/src/os_unix.c
    67516976--- vim70.orig/src/os_unix.c    2006-05-01 01:13:15.000000000 -0700
    6752 +++ vim70/src/os_unix.c 2006-10-21 21:08:58.000000000 -0700
     6977+++ vim70/src/os_unix.c 2006-10-25 19:55:34.000000000 -0700
    67536978@@ -3934,7 +3934,7 @@
    67546979                    {
     
    68097034diff -Naur vim70.orig/src/popupmnu.c vim70/src/popupmnu.c
    68107035--- vim70.orig/src/popupmnu.c   2006-04-20 13:18:37.000000000 -0700
    6811 +++ vim70/src/popupmnu.c        2006-10-21 21:08:56.000000000 -0700
     7036+++ vim70/src/popupmnu.c        2006-10-25 19:55:32.000000000 -0700
    68127037@@ -552,6 +552,9 @@
    68137038 {
     
    68227047diff -Naur vim70.orig/src/proto/buffer.pro vim70/src/proto/buffer.pro
    68237048--- vim70.orig/src/proto/buffer.pro     2006-05-07 06:08:29.000000000 -0700
    6824 +++ vim70/src/proto/buffer.pro  2006-10-21 21:09:01.000000000 -0700
     7049+++ vim70/src/proto/buffer.pro  2006-10-25 19:55:38.000000000 -0700
    68257050@@ -10,6 +10,7 @@
    68267051 extern int do_buffer __ARGS((int action, int start, int dir, int count, int forceit));
     
    68337058diff -Naur vim70.orig/src/proto/eval.pro vim70/src/proto/eval.pro
    68347059--- vim70.orig/src/proto/eval.pro       2006-05-07 06:08:33.000000000 -0700
    6835 +++ vim70/src/proto/eval.pro    2006-10-21 21:09:10.000000000 -0700
     7060+++ vim70/src/proto/eval.pro    2006-10-25 19:55:46.000000000 -0700
    68367061@@ -44,7 +44,7 @@
    68377062 extern char_u *get_user_var_name __ARGS((expand_T *xp, int idx));
     
    68457070diff -Naur vim70.orig/src/proto/menu.pro vim70/src/proto/menu.pro
    68467071--- vim70.orig/src/proto/menu.pro       2006-05-07 06:08:51.000000000 -0700
    6847 +++ vim70/src/proto/menu.pro    2006-10-21 21:08:56.000000000 -0700
     7072+++ vim70/src/proto/menu.pro    2006-10-25 19:55:31.000000000 -0700
    68487073@@ -10,6 +10,7 @@
    68497074 extern int menu_is_child_of_popup __ARGS((vimmenu_T *menu));
     
    68567081diff -Naur vim70.orig/src/proto/misc2.pro vim70/src/proto/misc2.pro
    68577082--- vim70.orig/src/proto/misc2.pro      2006-05-07 06:08:54.000000000 -0700
    6858 +++ vim70/src/proto/misc2.pro   2006-10-21 21:09:06.000000000 -0700
     7083+++ vim70/src/proto/misc2.pro   2006-10-25 19:55:42.000000000 -0700
    68597084@@ -29,6 +29,7 @@
    68607085 extern char_u *vim_strnsave __ARGS((char_u *string, int len));
     
    68677092diff -Naur vim70.orig/src/proto/ops.pro vim70/src/proto/ops.pro
    68687093--- vim70.orig/src/proto/ops.pro        2006-05-07 06:08:58.000000000 -0700
    6869 +++ vim70/src/proto/ops.pro     2006-10-21 21:09:11.000000000 -0700
     7094+++ vim70/src/proto/ops.pro     2006-10-25 19:55:47.000000000 -0700
    68707095@@ -20,7 +20,7 @@
    68717096 extern int do_execreg __ARGS((int regname, int colon, int addcr));
     
    68797104diff -Naur vim70.orig/src/proto/undo.pro vim70/src/proto/undo.pro
    68807105--- vim70.orig/src/proto/undo.pro       2006-05-07 06:09:11.000000000 -0700
    6881 +++ vim70/src/proto/undo.pro    2006-10-21 21:08:53.000000000 -0700
     7106+++ vim70/src/proto/undo.pro    2006-10-25 19:55:23.000000000 -0700
    68827107@@ -4,6 +4,7 @@
    68837108 extern int u_savesub __ARGS((linenr_T lnum));
     
    68907115diff -Naur vim70.orig/src/quickfix.c vim70/src/quickfix.c
    68917116--- vim70.orig/src/quickfix.c   2006-05-03 00:47:42.000000000 -0700
    6892 +++ vim70/src/quickfix.c        2006-10-21 21:09:11.000000000 -0700
     7117+++ vim70/src/quickfix.c        2006-10-25 19:55:48.000000000 -0700
    68937118@@ -500,8 +500,6 @@
    68947119        {
     
    71457370diff -Naur vim70.orig/src/regexp.c vim70/src/regexp.c
    71467371--- vim70.orig/src/regexp.c     2006-04-30 08:31:50.000000000 -0700
    7147 +++ vim70/src/regexp.c  2006-10-21 21:09:11.000000000 -0700
     7372+++ vim70/src/regexp.c  2006-10-25 19:55:47.000000000 -0700
    71487373@@ -3777,8 +3777,8 @@
    71497374 
     
    72827507diff -Naur vim70.orig/src/screen.c vim70/src/screen.c
    72837508--- vim70.orig/src/screen.c     2006-05-05 03:13:55.000000000 -0700
    7284 +++ vim70/src/screen.c  2006-10-21 21:09:08.000000000 -0700
     7509+++ vim70/src/screen.c  2006-10-25 19:55:44.000000000 -0700
    72857510@@ -1228,7 +1228,14 @@
    72867511        {
     
    74587683diff -Naur vim70.orig/src/search.c vim70/src/search.c
    74597684--- vim70.orig/src/search.c     2006-05-05 05:12:13.000000000 -0700
    7460 +++ vim70/src/search.c  2006-10-21 21:09:09.000000000 -0700
     7685+++ vim70/src/search.c  2006-10-25 19:55:45.000000000 -0700
    74617686@@ -1259,7 +1259,7 @@
    74627687        /*
     
    75157740diff -Naur vim70.orig/src/spell.c vim70/src/spell.c
    75167741--- vim70.orig/src/spell.c      2006-05-05 00:49:58.000000000 -0700
    7517 +++ vim70/src/spell.c   2006-10-21 21:09:05.000000000 -0700
     7742+++ vim70/src/spell.c   2006-10-25 19:55:41.000000000 -0700
    75187743@@ -1483,7 +1483,7 @@
    75197744            else if ((mode == FIND_COMPOUND || mode == FIND_KEEPCOMPOUND
     
    78468071diff -Naur vim70.orig/src/structs.h vim70/src/structs.h
    78478072--- vim70.orig/src/structs.h    2006-04-09 10:57:46.000000000 -0700
    7848 +++ vim70/src/structs.h 2006-10-21 21:08:55.000000000 -0700
     8073+++ vim70/src/structs.h 2006-10-25 19:55:31.000000000 -0700
    78498074@@ -2213,18 +2213,20 @@
    78508075 
     
    78728097diff -Naur vim70.orig/src/syntax.c vim70/src/syntax.c
    78738098--- vim70.orig/src/syntax.c     2006-04-26 05:49:45.000000000 -0700
    7874 +++ vim70/src/syntax.c  2006-10-21 21:09:07.000000000 -0700
     8099+++ vim70/src/syntax.c  2006-10-25 19:55:44.000000000 -0700
    78758100@@ -977,6 +977,7 @@
    78768101 {
     
    79648189diff -Naur vim70.orig/src/tag.c vim70/src/tag.c
    79658190--- vim70.orig/src/tag.c        2006-04-27 06:11:21.000000000 -0700
    7966 +++ vim70/src/tag.c     2006-10-21 21:09:10.000000000 -0700
     8191+++ vim70/src/tag.c     2006-10-25 19:55:46.000000000 -0700
    79678192@@ -911,7 +911,7 @@
    79688193 
     
    80068231diff -Naur vim70.orig/src/term.c vim70/src/term.c
    80078232--- vim70.orig/src/term.c       2006-05-03 10:34:57.000000000 -0700
    8008 +++ vim70/src/term.c    2006-10-21 21:08:56.000000000 -0700
    8009 @@ -4783,6 +4783,14 @@
     8233+++ vim70/src/term.c    2006-10-25 19:56:02.000000000 -0700
     8234@@ -3137,25 +3137,32 @@
     8235            screenalloc(FALSE);
     8236            repeat_message();
     8237        }
     8238-       else if (State & CMDLINE)
     8239-       {
     8240-           update_screen(NOT_VALID);
     8241-           redrawcmdline();
     8242-       }
     8243        else
     8244        {
     8245-           update_topline();
     8246-#if defined(FEAT_INS_EXPAND)
     8247-           if (pum_visible())
     8248+#ifdef FEAT_SCROLLBIND
     8249+           if (curwin->w_p_scb)
     8250+               do_check_scrollbind(TRUE);
     8251+#endif
     8252+           if (State & CMDLINE)
     8253            {
     8254-               redraw_later(NOT_VALID);
     8255-               ins_compl_show_pum(); /* This includes the redraw. */
     8256+               update_screen(NOT_VALID);
     8257+               redrawcmdline();
     8258            }
     8259            else
     8260+           {
     8261+               update_topline();
     8262+#if defined(FEAT_INS_EXPAND)
     8263+               if (pum_visible())
     8264+               {
     8265+                   redraw_later(NOT_VALID);
     8266+                   ins_compl_show_pum(); /* This includes the redraw. */
     8267+               }
     8268+               else
     8269 #endif
     8270-               update_screen(NOT_VALID);
     8271-           if (redrawing())
     8272-               setcursor();
     8273+                   update_screen(NOT_VALID);
     8274+               if (redrawing())
     8275+                   setcursor();
     8276+           }
     8277        }
     8278        cursor_on();        /* redrawing may have switched it off */
     8279     }
     8280@@ -4783,6 +4790,14 @@
    80108281                return -1;
    80118282            current_menu = (vimmenu_T *)val;
     
    80248295diff -Naur vim70.orig/src/testdir/test56.in vim70/src/testdir/test56.in
    80258296--- vim70.orig/src/testdir/test56.in    2005-05-18 08:37:37.000000000 -0700
    8026 +++ vim70/src/testdir/test56.in 2006-10-21 21:09:01.000000000 -0700
     8297+++ vim70/src/testdir/test56.in 2006-10-25 19:55:38.000000000 -0700
    80278298@@ -3,7 +3,7 @@
    80288299 STARTTEST
     
    80368307diff -Naur vim70.orig/src/ui.c vim70/src/ui.c
    80378308--- vim70.orig/src/ui.c 2006-03-27 11:15:09.000000000 -0800
    8038 +++ vim70/src/ui.c      2006-10-21 21:08:58.000000000 -0700
     8309+++ vim70/src/ui.c      2006-10-25 19:55:35.000000000 -0700
    80398310@@ -1137,7 +1137,6 @@
    80408311     int                len;
     
    80568327diff -Naur vim70.orig/src/undo.c vim70/src/undo.c
    80578328--- vim70.orig/src/undo.c       2006-04-21 02:30:59.000000000 -0700
    8058 +++ vim70/src/undo.c    2006-10-21 21:08:58.000000000 -0700
     8329+++ vim70/src/undo.c    2006-10-25 19:55:35.000000000 -0700
    80598330@@ -84,7 +84,6 @@
    80608331 static void u_unch_branch __ARGS((u_header_T *uhp));
     
    81218392diff -Naur vim70.orig/src/version.c vim70/src/version.c
    81228393--- vim70.orig/src/version.c    2006-05-03 00:50:42.000000000 -0700
    8123 +++ vim70/src/version.c 2006-10-21 21:09:11.000000000 -0700
    8124 @@ -667,6 +667,272 @@
     8394+++ vim70/src/version.c 2006-10-25 19:56:09.000000000 -0700
     8395@@ -667,6 +667,284 @@
    81258396 static int included_patches[] =
    81268397 {   /* Add new patch number below this line */
    81278398 /**/
     8399+    152,
     8400+/**/
     8401+    151,
     8402+/**/
     8403+    150,
     8404+/**/
     8405+    149,
     8406+/**/
     8407+    148,
     8408+/**/
     8409+    147,
     8410+/**/
    81288411+    146,
    81298412+/**/
     
    83958678 };
    83968679 
    8397 @@ -731,7 +997,11 @@
     8680@@ -731,7 +1009,11 @@
    83988681     /* Only MS VC 4.1 and earlier can do Win32s */
    83998682     MSG_PUTS(_("\nMS-Windows 16/32 bit GUI version"));
     
    84098692diff -Naur vim70.orig/src/vim.h vim70/src/vim.h
    84108693--- vim70.orig/src/vim.h        2006-04-30 08:32:38.000000000 -0700
    8411 +++ vim70/src/vim.h     2006-10-21 21:08:59.000000000 -0700
     8694+++ vim70/src/vim.h     2006-10-25 19:55:35.000000000 -0700
    84128695@@ -585,7 +585,6 @@
    84138696 #define INSERT         0x10    /* Insert mode */
     
    84388721diff -Naur vim70.orig/src/window.c vim70/src/window.c
    84398722--- vim70.orig/src/window.c     2006-05-06 03:54:51.000000000 -0700
    8440 +++ vim70/src/window.c  2006-10-21 21:09:02.000000000 -0700
     8723+++ vim70/src/window.c  2006-10-25 19:55:59.000000000 -0700
    84418724@@ -340,10 +340,10 @@
    84428725                {
     
    84678750 
    84688751 #endif /* FEAT_WINDOWS */
     8752@@ -5194,11 +5189,7 @@
     8753     int                height;
     8754 {
     8755     linenr_T   lnum;
     8756-    linenr_T   bot;
     8757     int                sline, line_size;
     8758-    int                space;
     8759-    int                did_below = FALSE;
     8760-    int                old_height = wp->w_height;
     8761 #define FRACTION_MULT  16384L
     8762 
     8763     /* Don't want a negative height.  Happens when splitting a tiny window.
     8764@@ -5233,54 +5224,44 @@
     8765        wp->w_wrow = ((long)wp->w_fraction * (long)height - 1L) / FRACTION_MULT;
     8766        line_size = plines_win_col(wp, lnum, (long)(wp->w_cursor.col)) - 1;
     8767        sline = wp->w_wrow - line_size;
     8768+
     8769+       if (sline >= 0)
     8770+       {
     8771+           /* Make sure the whole cursor line is visible, if possible. */
     8772+           int rows = plines_win(wp, lnum, FALSE);
     8773+
     8774+           if (sline > wp->w_height - rows)
     8775+           {
     8776+               sline = wp->w_height - rows;
     8777+               wp->w_wrow -= rows - line_size;
     8778+           }
     8779+       }
     8780+
     8781        if (sline < 0)
     8782        {
     8783            /*
     8784             * Cursor line would go off top of screen if w_wrow was this high.
     8785+            * Make cursor line the first line in the window.  If not enough
     8786+            * room use w_skipcol;
     8787             */
     8788            wp->w_wrow = line_size;
     8789+           if (wp->w_wrow >= wp->w_height
     8790+                                      && (W_WIDTH(wp) - win_col_off(wp)) > 0)
     8791+           {
     8792+               wp->w_skipcol += W_WIDTH(wp) - win_col_off(wp);
     8793+               --wp->w_wrow;
     8794+               while (wp->w_wrow >= wp->w_height)
     8795+               {
     8796+                   wp->w_skipcol += W_WIDTH(wp) - win_col_off(wp)
     8797+                                                          + win_col_off2(wp);
     8798+                   --wp->w_wrow;
     8799+               }
     8800+           }
     8801        }
     8802        else
     8803        {
     8804-           space = height - 1;
     8805-
     8806-           while (lnum > 1)
     8807+           while (sline > 0 && lnum > 1)
     8808            {
     8809-               /* When using "~" lines stop when at the old topline, don't
     8810-                * scroll down. */
     8811-               if (did_below && height < old_height && lnum <= wp->w_topline)
     8812-                   sline = 0;
     8813-
     8814-               space -= line_size;
     8815-               if (space > 0 && sline <= 0 && !did_below)
     8816-               {
     8817-                   /* Try to use "~" lines below the text to avoid that text
     8818-                    * is above the window while there are empty lines.
     8819-                    * Subtract the rows below the cursor from "space" and
     8820-                    * give the rest to "sline". */
     8821-                   did_below = TRUE;
     8822-                   bot = wp->w_cursor.lnum;
     8823-                   while (space > 0)
     8824-                   {
     8825-                       if (wp->w_buffer->b_ml.ml_line_count - bot >= space)
     8826-                           space = 0;
     8827-                       else
     8828-                       {
     8829-#ifdef FEAT_FOLDING
     8830-                           hasFoldingWin(wp, bot, NULL, &bot, TRUE, NULL);
     8831-#endif
     8832-                           if (bot >= wp->w_buffer->b_ml.ml_line_count)
     8833-                               break;
     8834-                           ++bot;
     8835-                           space -= plines_win(wp, bot, TRUE);
     8836-                       }
     8837-                   }
     8838-                   if (bot == wp->w_buffer->b_ml.ml_line_count && space > 0)
     8839-                       sline += space;
     8840-               }
     8841-               if (sline <= 0)
     8842-                   break;
     8843-
     8844 #ifdef FEAT_FOLDING
     8845                hasFoldingWin(wp, lnum, &lnum, NULL, TRUE, NULL);
     8846                if (lnum == 1)
    84698847
Note: See TracChangeset for help on using the changeset viewer.