Ignore:
Timestamp:
Feb 23, 2009, 5:59:27 AM (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:
f81e00b
Parents:
2a64e8b
Message:

Updated Vim Branch Update Patch to -9

File:
1 moved

Legend:

Unmodified
Added
Removed
  • patches/vim-7.2-branch_update-9.patch

    r2a64e8b r54f612f  
    11Submitted By: Jim Gifford (jim at cross-lfs dot org)
    2 Date: 02-15-2009
     2Date: 02-22-2009
    33Initial Package Version: 7.2
    44Origin: Upstream
    55Upstream Status: Applied
    6 Description: Contains all upstream patches up to 7.2.108
     6Description: Contains all upstream patches up to 7.2.124
    77             The following patches were skipped
    88             007 036 041 049 071 072 074 088 089 093 101
     
    1010diff -Naur vim72.orig/Filelist vim72/Filelist
    1111--- vim72.orig/Filelist 2008-07-06 11:02:23.000000000 -0700
    12 +++ vim72/Filelist      2009-02-15 23:26:03.078324067 -0800
     12+++ vim72/Filelist      2009-02-22 21:57:28.764584997 -0800
    1313@@ -285,6 +285,7 @@
    1414                src/proto/os_win32.pro \
     
    2121diff -Naur vim72.orig/runtime/doc/cmdline.txt vim72/runtime/doc/cmdline.txt
    2222--- vim72.orig/runtime/doc/cmdline.txt  2008-08-09 07:22:59.000000000 -0700
    23 +++ vim72/runtime/doc/cmdline.txt       2009-02-15 23:26:29.516017600 -0800
     23+++ vim72/runtime/doc/cmdline.txt       2009-02-22 21:57:28.892594217 -0800
    2424@@ -1,4 +1,4 @@
    2525-*cmdline.txt*   For Vim version 7.2.  Last change: 2008 Jul 29
     
    8080diff -Naur vim72.orig/runtime/doc/eval.txt vim72/runtime/doc/eval.txt
    8181--- vim72.orig/runtime/doc/eval.txt     2008-08-09 07:22:59.000000000 -0700
    82 +++ vim72/runtime/doc/eval.txt  2009-02-15 23:28:13.518683894 -0800
     82+++ vim72/runtime/doc/eval.txt  2009-02-22 21:57:40.793357172 -0800
    8383@@ -1,4 +1,4 @@
    8484-*eval.txt*     For Vim version 7.2.  Last change: 2008 Aug 09
     
    200200diff -Naur vim72.orig/runtime/doc/netbeans.txt vim72/runtime/doc/netbeans.txt
    201201--- vim72.orig/runtime/doc/netbeans.txt 2008-08-09 07:22:59.000000000 -0700
    202 +++ vim72/runtime/doc/netbeans.txt      2009-02-15 23:28:48.044895935 -0800
     202+++ vim72/runtime/doc/netbeans.txt      2009-02-22 21:57:51.694055594 -0800
    203203@@ -1,4 +1,4 @@
    204204-*netbeans.txt*  For Vim version 7.2.  Last change: 2008 Jun 28
     
    222222diff -Naur vim72.orig/runtime/doc/options.txt vim72/runtime/doc/options.txt
    223223--- vim72.orig/runtime/doc/options.txt  2008-08-09 07:22:59.000000000 -0700
    224 +++ vim72/runtime/doc/options.txt       2009-02-15 23:27:23.659489593 -0800
     224+++ vim72/runtime/doc/options.txt       2009-02-22 21:58:02.958777762 -0800
    225225@@ -1,4 +1,4 @@
    226226-*options.txt*  For Vim version 7.2.  Last change: 2008 Aug 06
     
    229229 
    230230                  VIM REFERENCE MANUAL    by Bram Moolenaar
    231 @@ -7472,7 +7472,9 @@
     231@@ -4175,9 +4175,6 @@
     232        be able to execute Normal mode commands.
     233        This is the opposite of the 'keymap' option, where characters are
     234        mapped in Insert mode.
     235-       This only works for 8-bit characters.  The value of 'langmap' may be
     236-       specified with multi-byte characters (e.g., UTF-8), but only the lower
     237-       8 bits of each character will be used.
     238 
     239        Example (for Greek, in UTF-8):                          *greek*  >
     240            :set langmap=ΑA,ΒB,ΚC,ΔD,ΕE,ΊF,ΓG,ΗH,ΙI,ΞJ,ΚK,ΛL,ΜM,ΝN,ΟO,ΠP,QQ,ΡR,ΣS,΀T,ΘU,ΩV,WW,ΧX,Î¥Y,ΖZ,αa,βb,ψc,ÎŽd,εe,φf,γg,ηh,ιi,Οj,κk,λl,ÎŒm,Îœn,οo,πp,qq,ρr,σs,τt,Ξu,ωv,ςw,χx,Ï
     241y,ζz
     242@@ -7472,7 +7469,9 @@
    232243                        {not available when compiled without the |+wildignore|
    233244                        feature}
     
    242253diff -Naur vim72.orig/runtime/doc/spell.txt vim72/runtime/doc/spell.txt
    243254--- vim72.orig/runtime/doc/spell.txt    2008-08-09 07:23:00.000000000 -0700
    244 +++ vim72/runtime/doc/spell.txt 2009-02-15 23:27:49.861165805 -0800
     255+++ vim72/runtime/doc/spell.txt 2009-02-22 21:57:40.717352144 -0800
    245256@@ -1,4 +1,4 @@
    246257-*spell.txt*    For Vim version 7.2.  Last change: 2008 Jun 21
     
    372383diff -Naur vim72.orig/runtime/doc/starting.txt vim72/runtime/doc/starting.txt
    373384--- vim72.orig/runtime/doc/starting.txt 2008-08-09 07:23:00.000000000 -0700
    374 +++ vim72/runtime/doc/starting.txt      2009-02-15 23:26:29.520020393 -0800
     385+++ vim72/runtime/doc/starting.txt      2009-02-22 21:57:28.896592820 -0800
    375386@@ -1,4 +1,4 @@
    376387-*starting.txt*  For Vim version 7.2.  Last change: 2008 Jun 21
     
    434445diff -Naur vim72.orig/runtime/doc/usr_21.txt vim72/runtime/doc/usr_21.txt
    435446--- vim72.orig/runtime/doc/usr_21.txt   2008-08-09 07:23:01.000000000 -0700
    436 +++ vim72/runtime/doc/usr_21.txt        2009-02-15 23:26:29.520020393 -0800
     447+++ vim72/runtime/doc/usr_21.txt        2009-02-22 21:57:28.896592820 -0800
    437448@@ -1,4 +1,4 @@
    438449-*usr_21.txt*   For Vim version 7.2.  Last change: 2007 May 01
     
    501512diff -Naur vim72.orig/runtime/scripts.vim vim72/runtime/scripts.vim
    502513--- vim72.orig/runtime/scripts.vim      2008-08-08 15:27:21.000000000 -0700
    503 +++ vim72/runtime/scripts.vim   2009-02-15 23:25:14.879235088 -0800
     514+++ vim72/runtime/scripts.vim   2009-02-22 21:57:25.668388043 -0800
    504515@@ -234,6 +234,10 @@
    505516   elseif s:line1 =~ '\<DTD\s\+XHTML\s'
     
    515526diff -Naur vim72.orig/src/auto/configure vim72/src/auto/configure
    516527--- vim72.orig/src/auto/configure       2008-07-24 05:40:36.000000000 -0700
    517 +++ vim72/src/auto/configure    2009-02-15 23:27:04.022228523 -0800
     528+++ vim72/src/auto/configure    2009-02-22 21:57:36.313067746 -0800
    518529@@ -16819,21 +16819,29 @@
    519530   LDFLAGS="$LDFLAGS -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
     
    556567diff -Naur vim72.orig/src/buffer.c vim72/src/buffer.c
    557568--- vim72.orig/src/buffer.c     2008-08-06 04:00:48.000000000 -0700
    558 +++ vim72/src/buffer.c  2009-02-15 23:28:48.044895935 -0800
     569+++ vim72/src/buffer.c  2009-02-22 21:58:03.050783349 -0800
    559570@@ -437,10 +437,6 @@
    560571        return;
     
    663674        if (itemcnt == 0)
    664675            s = out;
    665 @@ -5062,7 +5064,7 @@
     676@@ -5048,7 +5050,8 @@
     677         */
     678        FOR_ALL_TAB_WINDOWS(tp, win)
     679            if (win->w_buffer == buf)
     680-               break;
     681+               goto win_found;
     682+win_found:
     683        if (win != NULL && win->w_llist_ref != NULL)
     684            return _("[Location List]");
     685        else
     686@@ -5062,7 +5065,7 @@
    666687     {
    667688        if (buf->b_sfname != NULL)
     
    674695diff -Naur vim72.orig/src/configure.in vim72/src/configure.in
    675696--- vim72.orig/src/configure.in 2008-07-24 05:40:26.000000000 -0700
    676 +++ vim72/src/configure.in      2009-02-15 23:27:04.022228523 -0800
     697+++ vim72/src/configure.in      2009-02-22 21:57:36.313067746 -0800
    677698@@ -3152,18 +3152,25 @@
    678699 dnl But only when making dependencies, cproto and lint don't take "-isystem".
     
    709730diff -Naur vim72.orig/src/diff.c vim72/src/diff.c
    710731--- vim72.orig/src/diff.c       2008-03-05 03:16:56.000000000 -0800
    711 +++ vim72/src/diff.c    2009-02-15 23:29:07.186120966 -0800
     732+++ vim72/src/diff.c    2009-02-22 21:57:51.762059784 -0800
    712733@@ -8,7 +8,7 @@
    713734  */
     
    835856diff -Naur vim72.orig/src/edit.c vim72/src/edit.c
    836857--- vim72.orig/src/edit.c       2008-08-06 05:51:17.000000000 -0700
    837 +++ vim72/src/edit.c    2009-02-15 23:29:31.179660846 -0800
     858+++ vim72/src/edit.c    2009-02-22 21:58:02.962778041 -0800
    838859@@ -147,6 +147,7 @@
    839860 static int  ins_compl_bs __ARGS((void));
     
    10461067 
    10471068 #ifdef FEAT_CINDENT
    1048 @@ -8150,7 +8207,7 @@
     1069@@ -7646,9 +7703,7 @@
     1070      */
     1071     ++no_mapping;
     1072     regname = plain_vgetc();
     1073-#ifdef FEAT_LANGMAP
     1074     LANGMAP_ADJUST(regname, TRUE);
     1075-#endif
     1076     if (regname == Ctrl_R || regname == Ctrl_O || regname == Ctrl_P)
     1077     {
     1078        /* Get a third key for literal register insertion */
     1079@@ -7657,9 +7712,7 @@
     1080        add_to_showcmd_c(literally);
     1081 #endif
     1082        regname = plain_vgetc();
     1083-#ifdef FEAT_LANGMAP
     1084        LANGMAP_ADJUST(regname, TRUE);
     1085-#endif
     1086     }
     1087     --no_mapping;
     1088 
     1089@@ -8150,7 +8203,7 @@
    10491090 /*
    10501091  * If the cursor is on an indent, ^T/^D insert/delete one
     
    10551096  * autoindent, we support it everywhere.
    10561097  */
    1057 @@ -8239,7 +8296,7 @@
     1098@@ -8239,7 +8292,7 @@
    10581099         * Replace mode */
    10591100        if (curwin->w_cursor.lnum != Insstart.lnum
     
    10641105     else
    10651106        (void)del_char(FALSE);
    1066 @@ -8556,7 +8613,7 @@
     1107@@ -8556,7 +8609,7 @@
    10671108                break;
    10681109            }
     
    10751116diff -Naur vim72.orig/src/eval.c vim72/src/eval.c
    10761117--- vim72.orig/src/eval.c       2008-08-07 12:37:22.000000000 -0700
    1077 +++ vim72/src/eval.c    2009-02-15 23:29:43.448444754 -0800
     1118+++ vim72/src/eval.c    2009-02-22 21:58:00.290604274 -0800
    10781119@@ -32,6 +32,9 @@
    10791120 
     
    19642005diff -Naur vim72.orig/src/ex_cmds2.c vim72/src/ex_cmds2.c
    19652006--- vim72.orig/src/ex_cmds2.c   2008-07-13 09:18:22.000000000 -0700
    1966 +++ vim72/src/ex_cmds2.c        2009-02-15 23:29:53.533092890 -0800
     2007+++ vim72/src/ex_cmds2.c        2009-02-22 21:58:02.862770777 -0800
    19672008@@ -2842,6 +2842,7 @@
    19682009     linenr_T               save_sourcing_lnum;
     
    20572098diff -Naur vim72.orig/src/ex_cmds.c vim72/src/ex_cmds.c
    20582099--- vim72.orig/src/ex_cmds.c    2008-08-04 12:15:00.000000000 -0700
    2059 +++ vim72/src/ex_cmds.c 2009-02-15 23:29:58.597415281 -0800
     2100+++ vim72/src/ex_cmds.c 2009-02-22 21:58:02.886772733 -0800
    20602101@@ -24,7 +24,7 @@
    20612102 static void do_filter __ARGS((linenr_T line1, linenr_T line2, exarg_T *eap, char_u *cmd, int do_in, int do_out));
     
    22372278diff -Naur vim72.orig/src/ex_cmds.h vim72/src/ex_cmds.h
    22382279--- vim72.orig/src/ex_cmds.h    2008-06-21 11:47:57.000000000 -0700
    2239 +++ vim72/src/ex_cmds.h 2009-02-15 23:26:29.532020952 -0800
     2280+++ vim72/src/ex_cmds.h 2009-02-22 21:57:28.904593099 -0800
    22402281@@ -278,7 +278,7 @@
    22412282 EX(CMD_crewind,                "crewind",      ex_cc,
     
    22852326diff -Naur vim72.orig/src/ex_docmd.c vim72/src/ex_docmd.c
    22862327--- vim72.orig/src/ex_docmd.c   2008-07-26 04:51:05.000000000 -0700
    2287 +++ vim72/src/ex_docmd.c        2009-02-15 23:29:17.390774968 -0800
     2328+++ vim72/src/ex_docmd.c        2009-02-22 21:58:02.982779158 -0800
    22882329@@ -364,6 +364,7 @@
    22892330 # define ex_function           ex_ni
     
    23292370 ex_command(eap)
    23302371     exarg_T   *eap;
    2331 @@ -5911,6 +5917,7 @@
     2372@@ -5910,7 +5916,8 @@
     2373     char_u     *q;
    23322374 
    23332375     char_u     *start;
    2334      char_u     *end;
     2376-    char_u     *end;
     2377+    char_u     *end = NULL;
    23352378+    char_u     *ksp;
    23362379     size_t     len, totlen;
     
    25022545diff -Naur vim72.orig/src/ex_getln.c vim72/src/ex_getln.c
    25032546--- vim72.orig/src/ex_getln.c   2008-08-08 02:31:33.000000000 -0700
    2504 +++ vim72/src/ex_getln.c        2009-02-15 23:27:23.655489034 -0800
     2547+++ vim72/src/ex_getln.c        2009-02-22 21:57:40.525339851 -0800
    25052548@@ -31,6 +31,8 @@
    25062549     int                cmdattr;        /* attributes for prompt */
     
    26362679diff -Naur vim72.orig/src/feature.h vim72/src/feature.h
    26372680--- vim72.orig/src/feature.h    2008-08-06 04:00:39.000000000 -0700
    2638 +++ vim72/src/feature.h 2009-02-15 23:26:29.532020952 -0800
     2681+++ vim72/src/feature.h 2009-02-22 21:57:28.908593378 -0800
    26392682@@ -767,9 +767,13 @@
    26402683 
     
    26552698diff -Naur vim72.orig/src/fileio.c vim72/src/fileio.c
    26562699--- vim72.orig/src/fileio.c     2008-08-06 04:01:03.000000000 -0700
    2657 +++ vim72/src/fileio.c  2009-02-15 23:28:42.524542813 -0800
     2700+++ vim72/src/fileio.c  2009-02-22 21:57:51.674054756 -0800
    26582701@@ -932,7 +932,10 @@
    26592702     else
     
    28852928diff -Naur vim72.orig/src/fold.c vim72/src/fold.c
    28862929--- vim72.orig/src/fold.c       2008-08-06 04:01:12.000000000 -0700
    2887 +++ vim72/src/fold.c    2009-02-15 23:28:45.352722167 -0800
     2930+++ vim72/src/fold.c    2009-02-22 21:57:51.682054476 -0800
    28882931@@ -48,7 +48,7 @@
    28892932 static int foldFind __ARGS((garray_T *gap, linenr_T lnum, fold_T **fpp));
     
    29743017diff -Naur vim72.orig/src/getchar.c vim72/src/getchar.c
    29753018--- vim72.orig/src/getchar.c    2008-07-22 09:57:48.000000000 -0700
    2976 +++ vim72/src/getchar.c 2009-02-15 23:27:32.644064534 -0800
    2977 @@ -4702,7 +4702,7 @@
     3019+++ vim72/src/getchar.c 2009-02-22 21:58:03.122787819 -0800
     3020@@ -3816,7 +3816,11 @@
     3021     int len = 1;
     3022 
     3023     if (msg_didout || msg_silent != 0)
     3024+    {
     3025        msg_putchar('\n');
     3026+       if (got_int)        /* 'q' typed at MORE prompt */
     3027+           return;
     3028+    }
     3029     if ((mp->m_mode & (INSERT + CMDLINE)) == INSERT + CMDLINE)
     3030        msg_putchar('!');                       /* :map! */
     3031     else if (mp->m_mode & INSERT)
     3032@@ -4702,7 +4706,7 @@
    29783033                        return FAIL;
    29793034                    if (mp->m_noremap != REMAP_YES && fprintf(fd, "nore") < 0)
     
    29843039                    if (buf != NULL && fputs(" <buffer>", fd) < 0)
    29853040                        return FAIL;
    2986 @@ -4801,7 +4801,7 @@
     3041@@ -4801,7 +4805,7 @@
    29873042            }
    29883043            if (IS_SPECIAL(c) || modifiers)     /* special key */
     
    29953050diff -Naur vim72.orig/src/globals.h vim72/src/globals.h
    29963051--- vim72.orig/src/globals.h    2008-07-26 04:53:29.000000000 -0700
    2997 +++ vim72/src/globals.h 2009-02-15 23:28:48.044895935 -0800
     3052+++ vim72/src/globals.h 2009-02-22 21:57:51.694055594 -0800
    29983053@@ -1022,6 +1022,7 @@
    29993054 #endif
     
    30293084diff -Naur vim72.orig/src/gui_at_sb.c vim72/src/gui_at_sb.c
    30303085--- vim72.orig/src/gui_at_sb.c  2004-06-07 07:32:25.000000000 -0700
    3031 +++ vim72/src/gui_at_sb.c       2009-02-15 23:27:36.144289425 -0800
     3086+++ vim72/src/gui_at_sb.c       2009-02-22 21:57:40.637347115 -0800
    30323087@@ -1078,6 +1078,12 @@
    30333088     Cardinal   *num_params;    /* unused */
     
    30553110diff -Naur vim72.orig/src/gui.c vim72/src/gui.c
    30563111--- vim72.orig/src/gui.c        2008-07-27 12:32:14.000000000 -0700
    3057 +++ vim72/src/gui.c     2009-02-15 23:28:10.986519625 -0800
     3112+++ vim72/src/gui.c     2009-02-22 21:57:40.773355217 -0800
    30583113@@ -139,7 +139,7 @@
    30593114                /* The read returns when the child closes the pipe (or when
     
    31483203diff -Naur vim72.orig/src/gui_gtk_x11.c vim72/src/gui_gtk_x11.c
    31493204--- vim72.orig/src/gui_gtk_x11.c        2008-07-04 03:46:24.000000000 -0700
    3150 +++ vim72/src/gui_gtk_x11.c     2009-02-15 23:27:36.148289425 -0800
     3205+++ vim72/src/gui_gtk_x11.c     2009-02-22 21:57:40.637347115 -0800
    31513206@@ -4070,14 +4070,14 @@
    31523207 
     
    31723227diff -Naur vim72.orig/src/gui_x11.c vim72/src/gui_x11.c
    31733228--- vim72.orig/src/gui_x11.c    2008-06-08 08:13:45.000000000 -0700
    3174 +++ vim72/src/gui_x11.c 2009-02-15 23:26:39.688669925 -0800
     3229+++ vim72/src/gui_x11.c 2009-02-22 21:57:28.972599804 -0800
    31753230@@ -2450,7 +2450,7 @@
    31763231        *colorPtr = colortable[closest];
     
    31843239diff -Naur vim72.orig/src/gui_xmdlg.c vim72/src/gui_xmdlg.c
    31853240--- vim72.orig/src/gui_xmdlg.c  2008-06-21 09:05:32.000000000 -0700
    3186 +++ vim72/src/gui_xmdlg.c       2009-02-15 23:27:36.148289425 -0800
     3241+++ vim72/src/gui_xmdlg.c       2009-02-22 21:57:40.637347115 -0800
    31873242@@ -369,10 +369,10 @@
    31883243     char       buf[TEMP_BUF_SIZE];
     
    33403395diff -Naur vim72.orig/src/gui_xmebw.c vim72/src/gui_xmebw.c
    33413396--- vim72.orig/src/gui_xmebw.c  2007-09-06 03:57:51.000000000 -0700
    3342 +++ vim72/src/gui_xmebw.c       2009-02-15 23:27:36.148289425 -0800
     3397+++ vim72/src/gui_xmebw.c       2009-02-22 21:57:40.637347115 -0800
    33433398@@ -1256,7 +1256,7 @@
    33443399     }
     
    33673422diff -Naur vim72.orig/src/if_cscope.c vim72/src/if_cscope.c
    33683423--- vim72.orig/src/if_cscope.c  2008-06-24 09:32:34.000000000 -0700
    3369 +++ vim72/src/if_cscope.c       2009-02-15 23:29:20.378966335 -0800
     3424+++ vim72/src/if_cscope.c       2009-02-22 21:57:57.086400893 -0800
    33703425@@ -74,7 +74,7 @@
    33713426     { "add",   cs_add,
     
    34103465diff -Naur vim72.orig/src/if_cscope.h vim72/src/if_cscope.h
    34113466--- vim72.orig/src/if_cscope.h  2007-09-02 07:51:08.000000000 -0700
    3412 +++ vim72/src/if_cscope.h       2009-02-15 23:25:07.934792289 -0800
     3467+++ vim72/src/if_cscope.h       2009-02-22 21:57:25.644386646 -0800
    34133468@@ -42,17 +42,6 @@
    34143469  * f 7name     Find this file
     
    34313486diff -Naur vim72.orig/src/if_perl.xs vim72/src/if_perl.xs
    34323487--- vim72.orig/src/if_perl.xs   2008-07-17 13:55:09.000000000 -0700
    3433 +++ vim72/src/if_perl.xs        2009-02-15 23:28:02.421970945 -0800
     3488+++ vim72/src/if_perl.xs        2009-02-22 21:57:40.757353820 -0800
    34343489@@ -136,6 +136,9 @@
    34353490 #  define Perl_newXS_flags dll_Perl_newXS_flags
     
    34823537diff -Naur vim72.orig/src/if_python.c vim72/src/if_python.c
    34833538--- vim72.orig/src/if_python.c  2008-07-17 14:09:32.000000000 -0700
    3484 +++ vim72/src/if_python.c       2009-02-15 23:29:02.149800251 -0800
     3539+++ vim72/src/if_python.c       2009-02-22 21:57:51.746058667 -0800
    34853540@@ -531,6 +531,12 @@
    34863541        if (PythonMod_Init())
     
    35843639diff -Naur vim72.orig/src/if_xcmdsrv.c vim72/src/if_xcmdsrv.c
    35853640--- vim72.orig/src/if_xcmdsrv.c 2008-07-18 06:05:03.000000000 -0700
    3586 +++ vim72/src/if_xcmdsrv.c      2009-02-15 23:26:47.873194300 -0800
     3641+++ vim72/src/if_xcmdsrv.c      2009-02-22 21:57:32.260810448 -0800
    35873642@@ -736,7 +736,7 @@
    35883643                + serverReply.ga_len;
     
    36123667                p = entry;
    36133668                continue;
     3669diff -Naur vim72.orig/src/macros.h vim72/src/macros.h
     3670--- vim72.orig/src/macros.h     2007-08-04 04:44:18.000000000 -0700
     3671+++ vim72/src/macros.h  2009-02-22 21:58:02.962778041 -0800
     3672@@ -127,15 +127,31 @@
     3673 #ifdef FEAT_LANGMAP
     3674 /*
     3675  * Adjust chars in a language according to 'langmap' option.
     3676- * NOTE that there is NO overhead if 'langmap' is not set; but even
     3677- * when set we only have to do 2 ifs and an array lookup.
     3678+ * NOTE that there is no noticeable overhead if 'langmap' is not set.
     3679+ * When set the overhead for characters < 256 is small.
     3680  * Don't apply 'langmap' if the character comes from the Stuff buffer.
     3681  * The do-while is just to ignore a ';' after the macro.
     3682  */
     3683-# define LANGMAP_ADJUST(c, condition) do { \
     3684-       if (*p_langmap && (condition) && !KeyStuffed && (c) >= 0 && (c) < 256) \
     3685-           c = langmap_mapchar[c]; \
     3686+# ifdef FEAT_MBYTE
     3687+#  define LANGMAP_ADJUST(c, condition) \
     3688+    do { \
     3689+        if (*p_langmap && (condition) && !KeyStuffed && (c) >= 0) \
     3690+       { \
     3691+           if ((c) < 256) \
     3692+               c = langmap_mapchar[c]; \
     3693+           else \
     3694+               c = langmap_adjust_mb(c); \
     3695+       } \
     3696     } while (0)
     3697+# else
     3698+#  define LANGMAP_ADJUST(c, condition) \
     3699+    do { \
     3700+        if (*p_langmap && (condition) && !KeyStuffed && (c) >= 0 && (c) < 256) \
     3701+            c = langmap_mapchar[c]; \
     3702+    } while (0)
     3703+# endif
     3704+#else
     3705+# define LANGMAP_ADJUST(c, condition) /* nop */
     3706 #endif
     3707 
     3708 /*
    36143709diff -Naur vim72.orig/src/main.c vim72/src/main.c
    36153710--- vim72.orig/src/main.c       2008-07-24 01:40:56.000000000 -0700
    3616 +++ vim72/src/main.c    2009-02-15 23:27:36.148289425 -0800
     3711+++ vim72/src/main.c    2009-02-22 21:57:40.641347674 -0800
    36173712@@ -645,11 +645,12 @@
    36183713 
     
    36763771diff -Naur vim72.orig/src/mark.c vim72/src/mark.c
    36773772--- vim72.orig/src/mark.c       2008-08-08 15:06:49.000000000 -0700
    3678 +++ vim72/src/mark.c    2009-02-15 23:26:29.540021232 -0800
     3773+++ vim72/src/mark.c    2009-02-22 21:57:28.912593658 -0800
    36793774@@ -1627,15 +1627,17 @@
    36803775 
     
    37453840diff -Naur vim72.orig/src/mbyte.c vim72/src/mbyte.c
    37463841--- vim72.orig/src/mbyte.c      2008-07-14 05:38:05.000000000 -0700
    3747 +++ vim72/src/mbyte.c   2009-02-15 23:27:36.152289705 -0800
     3842+++ vim72/src/mbyte.c   2009-02-22 21:57:40.641347674 -0800
    37483843@@ -717,7 +717,7 @@
    37493844                     * where mblen() returns 0 for invalid character.
     
    38273922diff -Naur vim72.orig/src/menu.c vim72/src/menu.c
    38283923--- vim72.orig/src/menu.c       2008-06-21 12:53:43.000000000 -0700
    3829 +++ vim72/src/menu.c    2009-02-15 23:25:01.126353959 -0800
     3924+++ vim72/src/menu.c    2009-02-22 21:57:25.620383014 -0800
    38303925@@ -1120,6 +1120,7 @@
    38313926        parent = menu;
     
    38383933diff -Naur vim72.orig/src/message.c vim72/src/message.c
    38393934--- vim72.orig/src/message.c    2008-07-09 11:24:55.000000000 -0700
    3840 +++ vim72/src/message.c 2009-02-15 23:30:06.305911160 -0800
    3841 @@ -3309,7 +3309,10 @@
     3935+++ vim72/src/message.c 2009-02-22 21:58:03.062784187 -0800
     3936@@ -976,7 +976,7 @@
     3937                    }
     3938                }
     3939                else if (msg_scrolled > Rows - 2
     3940-                                    && (c == 'j' || c == K_DOWN || c == 'd'))
     3941+                        && (c == 'j' || c == K_DOWN || c == 'd' || c == 'f'))
     3942                    c = K_IGNORE;
     3943            }
     3944        } while ((had_got_int && c == Ctrl_C)
     3945@@ -2504,7 +2504,6 @@
     3946            break;
     3947 
     3948        case 'u':               /* Up half a page */
     3949-       case K_PAGEUP:
     3950            scroll = -(Rows / 2);
     3951            break;
     3952 
     3953@@ -2513,10 +2512,12 @@
     3954            break;
     3955 
     3956        case 'b':               /* one page back */
     3957+       case K_PAGEUP:
     3958            scroll = -(Rows - 1);
     3959            break;
     3960 
     3961        case ' ':               /* one extra page */
     3962+       case 'f':
     3963        case K_PAGEDOWN:
     3964        case K_LEFTMOUSE:
     3965            scroll = Rows - 1;
     3966@@ -3309,7 +3310,10 @@
    38423967     {
    38433968        c = gui_mch_dialog(type, title, message, buttons, dfltbutton,
     
    38513976        /* Flush output to avoid that further messages and redrawing is done
    38523977         * in the wrong order. */
    3853 @@ -4556,7 +4559,13 @@
     3978@@ -4556,7 +4560,13 @@
    38543979                        remove_trailing_zeroes = TRUE;
    38553980                    }
     
    38663991                        /* Avoid a buffer overflow */
    38673992                        strcpy(tmp, "inf");
    3868 @@ -4585,61 +4594,62 @@
     3993@@ -4585,61 +4595,62 @@
    38693994                        if (remove_trailing_zeroes)
    38703995                        {
     
    39524077diff -Naur vim72.orig/src/misc1.c vim72/src/misc1.c
    39534078--- vim72.orig/src/misc1.c      2008-07-12 12:20:53.000000000 -0700
    3954 +++ vim72/src/misc1.c   2009-02-15 23:26:29.540021232 -0800
     4079+++ vim72/src/misc1.c   2009-02-22 21:57:28.916594496 -0800
    39554080@@ -3245,9 +3245,9 @@
    39564081 
     
    39674092diff -Naur vim72.orig/src/misc2.c vim72/src/misc2.c
    39684093--- vim72.orig/src/misc2.c      2008-07-23 12:12:56.000000000 -0700
    3969 +++ vim72/src/misc2.c   2009-02-15 23:29:09.750285235 -0800
     4094+++ vim72/src/misc2.c   2009-02-22 21:57:51.770060343 -0800
    39704095@@ -873,7 +873,7 @@
    39714096            /* 3. check for available memory: call mch_avail_mem() */
     
    40484173diff -Naur vim72.orig/src/move.c vim72/src/move.c
    40494174--- vim72.orig/src/move.c       2008-07-12 09:26:47.000000000 -0700
    4050 +++ vim72/src/move.c    2009-02-15 23:26:58.897901382 -0800
     4175+++ vim72/src/move.c    2009-02-22 21:57:36.281067746 -0800
    40514176@@ -280,18 +280,20 @@
    40524177 
     
    40964221     wp->w_topfill = 0;
    40974222 #endif
     4223diff -Naur vim72.orig/src/nbdebug.c vim72/src/nbdebug.c
     4224--- vim72.orig/src/nbdebug.c    2008-06-22 08:38:58.000000000 -0700
     4225+++ vim72/src/nbdebug.c 2009-02-22 21:58:03.030781673 -0800
     4226@@ -33,7 +33,6 @@
     4227 u_int           nb_dlevel = 0;         /* nb_debug verbosity level */
     4228 
     4229 void            nbdb(char *, ...);
     4230-void            nbtrace(char *, ...);
     4231 
     4232 static int      lookup(char *);
     4233 #ifdef USE_NB_ERRORHANDLER
     4234@@ -100,25 +99,6 @@
     4235 }    /* end nbdebug_log_init */
     4236 
     4237 
     4238-
     4239-
     4240-void
     4241-nbtrace(
     4242-       char            *fmt,
     4243-       ...)
     4244-{
     4245-       va_list          ap;
     4246-
     4247-       if (nb_debug!= NULL && (nb_dlevel & (NB_TRACE | NB_TRACE_VERBOSE))) {
     4248-               va_start(ap, fmt);
     4249-               vfprintf(nb_debug, fmt, ap);
     4250-               va_end(ap);
     4251-               fflush(nb_debug);
     4252-       }
     4253-
     4254-}    /* end nbtrace */
     4255-
     4256-
     4257 void
     4258 nbdbg(
     4259        char            *fmt,
     4260@@ -136,23 +116,6 @@
     4261 }    /* end nbdbg */
     4262 
     4263 
     4264-void
     4265-nbprt(
     4266-       char            *fmt,
     4267-       ...)
     4268-{
     4269-       va_list          ap;
     4270-
     4271-       if (nb_debug != NULL && nb_dlevel & NB_PRINT) {
     4272-               va_start(ap, fmt);
     4273-               vfprintf(nb_debug, fmt, ap);
     4274-               va_end(ap);
     4275-               fflush(nb_debug);
     4276-       }
     4277-
     4278-}    /* end nbprt */
     4279-
     4280-
     4281 static int
     4282 lookup(
     4283        char            *file)
     4284diff -Naur vim72.orig/src/nbdebug.h vim72/src/nbdebug.h
     4285--- vim72.orig/src/nbdebug.h    2008-06-22 07:31:50.000000000 -0700
     4286+++ vim72/src/nbdebug.h 2009-02-22 21:58:03.030781673 -0800
     4287@@ -43,8 +43,6 @@
     4288 
     4289 
     4290 void            nbdbg(char *, ...);
     4291-void            nbprt(char *, ...);
     4292-void            nbtrace(char *, ...);
     4293 
     4294 void nbdebug_wait __ARGS((u_int wait_flags, char *wait_var, u_int wait_secs));
     4295 void nbdebug_log_init __ARGS((char *log_var, char *level_var));
     4296@@ -70,19 +68,5 @@
     4297 {
     4298 }
     4299 
     4300-void
     4301-nbprt(
     4302-       char            *fmt,
     4303-       ...)
     4304-{
     4305-}
     4306-
     4307-void
     4308-nbtrace(
     4309-       char            *fmt,
     4310-       ...)
     4311-{
     4312-}
     4313-
     4314 #endif /* NBDEBUG */
     4315 #endif /* NBDEBUG_H */
    40984316diff -Naur vim72.orig/src/netbeans.c vim72/src/netbeans.c
    40994317--- vim72.orig/src/netbeans.c   2008-07-13 09:19:54.000000000 -0700
    4100 +++ vim72/src/netbeans.c        2009-02-15 23:28:48.048896773 -0800
     4318+++ vim72/src/netbeans.c        2009-02-22 21:58:03.022781673 -0800
    41014319@@ -1043,7 +1043,7 @@
    41024320        nbdebug(("EVT: %s", buf));
     
    41084326 }
    41094327 
     4328@@ -1921,7 +1921,7 @@
     4329            vim_free(path);
     4330            if (bufp == NULL)
     4331            {
     4332-               nbdebug(("    File %s not found in setBufferNumber\n", args));
     4333+               nbdebug(("    File %s not found in setBufferNumber\n", args));
     4334                EMSG2("E642: File %s not found in setBufferNumber", args);
     4335                return FAIL;
     4336            }
    41104337@@ -2277,9 +2277,6 @@
    41114338            int serNum;
     
    41344361                nbdebug(("    partial line annotation -- Not Yet Implemented!\n"));
    41354362            }
     4363@@ -2321,7 +2315,7 @@
     4364            }
     4365            if (pos)
     4366            {
     4367-               coloncmd(":sign place %d line=%d name=%d buffer=%d",
     4368+               coloncmd(":sign place %d line=%ld name=%d buffer=%d",
     4369                           serNum, pos->lnum, typeNum, buf->bufp->b_fnum);
     4370                if (typeNum == curPCtype)
     4371                    coloncmd(":sign jump %d buffer=%d", serNum,
     4372@@ -2425,7 +2419,7 @@
     4373                                GUARDED) == 0)
     4374                            {
     4375                                coloncmd(
     4376-                                   ":sign place %d line=%d name=%d buffer=%d",
     4377+                                   ":sign place %d line=%ld name=%d buffer=%d",
     4378                                     guardId++, lnum, GUARDED,
     4379                                     buf->bufp->b_fnum);
     4380                            }
    41364381@@ -2924,44 +2918,26 @@
    41374382 }
     
    41874432diff -Naur vim72.orig/src/normal.c vim72/src/normal.c
    41884433--- vim72.orig/src/normal.c     2008-07-31 13:03:08.000000000 -0700
    4189 +++ vim72/src/normal.c  2009-02-15 23:29:35.431930716 -0800
     4434+++ vim72/src/normal.c  2009-02-22 21:58:02.962778041 -0800
    41904435@@ -183,6 +183,8 @@
    41914436 static void    nv_cursorhold __ARGS((cmdarg_T *cap));
     
    42204465 #ifdef FEAT_AUTOCMD
    42214466     /* Restore counts from before receiving K_CURSORHOLD.  This means after
    4222 @@ -717,7 +727,15 @@
     4467@@ -641,10 +651,7 @@
     4468      * Get the command character from the user.
     4469      */
     4470     c = safe_vgetc();
     4471-
     4472-#ifdef FEAT_LANGMAP
     4473     LANGMAP_ADJUST(c, TRUE);
     4474-#endif
     4475 
     4476 #ifdef FEAT_VISUAL
     4477     /*
     4478@@ -717,7 +724,15 @@
    42234479             * command, so that v:count can be used in an expression mapping
    42244480             * right after the count. */
     
    42374493            if (ctrl_w)
    42384494            {
    4239 @@ -804,7 +822,7 @@
     4495@@ -726,9 +741,7 @@
     4496            }
     4497            ++no_zero_mapping;          /* don't map zero here */
     4498            c = plain_vgetc();
     4499-#ifdef FEAT_LANGMAP
     4500            LANGMAP_ADJUST(c, TRUE);
     4501-#endif
     4502            --no_zero_mapping;
     4503            if (ctrl_w)
     4504            {
     4505@@ -751,9 +764,7 @@
     4506            ++no_mapping;
     4507            ++allow_keys;               /* no mapping for nchar, but keys */
     4508            c = plain_vgetc();          /* get next character */
     4509-#ifdef FEAT_LANGMAP
     4510            LANGMAP_ADJUST(c, TRUE);
     4511-#endif
     4512            --no_mapping;
     4513            --allow_keys;
     4514 #ifdef FEAT_CMDL_INFO
     4515@@ -804,7 +815,7 @@
    42404516      * Only set v:count when called from main() and not a stuffed command.
    42414517      */
     
    42464522 
    42474523     /*
    4248 @@ -1132,7 +1150,8 @@
     4524@@ -941,9 +952,7 @@
     4525             * "gr", "g'" and "g`".
     4526             */
     4527            ca.nchar = plain_vgetc();
     4528-#ifdef FEAT_LANGMAP
     4529            LANGMAP_ADJUST(ca.nchar, TRUE);
     4530-#endif
     4531 #ifdef FEAT_CMDL_INFO
     4532            need_flushbuf |= add_to_showcmd(ca.nchar);
     4533 #endif
     4534@@ -1044,10 +1053,8 @@
     4535                }
     4536 #endif
     4537 
     4538-#ifdef FEAT_LANGMAP
     4539                /* adjust chars > 127, except after "tTfFr" commands */
     4540                LANGMAP_ADJUST(*cp, !lang);
     4541-#endif
     4542 #ifdef FEAT_RIGHTLEFT
     4543                /* adjust Hebrew mapped char */
     4544                if (p_hkmap && lang && KeyTyped)
     4545@@ -1132,7 +1139,8 @@
    42494546        out_flush();
    42504547 #endif
     
    42564553 
    42574554     State = NORMAL;
    4258 @@ -3509,7 +3528,7 @@
     4555@@ -3509,7 +3517,7 @@
    42594556        if (find_type & FIND_STRING)
    42604557            EMSG(_("E348: No string under cursor"));
     
    42654562     }
    42664563     ptr += col;
    4267 @@ -5469,6 +5488,20 @@
     4564@@ -4611,9 +4619,7 @@
     4565            ++no_mapping;
     4566            ++allow_keys;   /* no mapping for nchar, but allow key codes */
     4567            nchar = plain_vgetc();
     4568-#ifdef FEAT_LANGMAP
     4569            LANGMAP_ADJUST(nchar, TRUE);
     4570-#endif
     4571            --no_mapping;
     4572            --allow_keys;
     4573 #ifdef FEAT_CMDL_INFO
     4574@@ -4969,9 +4975,7 @@
     4575                ++no_mapping;
     4576                ++allow_keys;   /* no mapping for nchar, but allow key codes */
     4577                nchar = plain_vgetc();
     4578-#ifdef FEAT_LANGMAP
     4579                LANGMAP_ADJUST(nchar, TRUE);
     4580-#endif
     4581                --no_mapping;
     4582                --allow_keys;
     4583 #ifdef FEAT_CMDL_INFO
     4584@@ -5469,6 +5473,20 @@
    42684585                STRCPY(buf, "he! ");
    42694586            else
     
    42864603                 * really what we want? */
    42874604                isman = (STRCMP(kp, "man") == 0);
    4288 @@ -5511,37 +5544,59 @@
     4605@@ -5511,37 +5529,59 @@
    42894606     /*
    42904607      * Now grab the chars in the identifier
     
    43254642+           vim_free(buf);
    43264643+           return;
    4327         }
     4644+       }
    43284645+       buf = (char_u *)vim_realloc(buf, STRLEN(buf) + STRLEN(p) + 1);
    43294646+       if (buf == NULL)
     
    43324649+           vim_free(p);
    43334650+           return;
    4334 +       }
     4651        }
    43354652+       STRCAT(buf, p);
    43364653+       vim_free(p);
     
    43734690     /*
    43744691      * Execute the command.
    4375 @@ -6728,6 +6783,8 @@
     4692@@ -6728,6 +6768,8 @@
    43764693     /* Visual mode "r" */
    43774694     if (VIsual_active)
     
    43824699        return;
    43834700     }
    4384 @@ -7784,7 +7841,7 @@
     4701@@ -7784,7 +7826,7 @@
    43854702        else
    43864703            i = curwin->w_leftcol;
     
    43934710diff -Naur vim72.orig/src/ops.c vim72/src/ops.c
    43944711--- vim72.orig/src/ops.c        2008-06-21 13:08:59.000000000 -0700
    4395 +++ vim72/src/ops.c     2009-02-15 23:28:04.942134376 -0800
     4712+++ vim72/src/ops.c     2009-02-22 21:57:40.765356613 -0800
    43964713@@ -2209,12 +2209,15 @@
    43974714     {
     
    44144731diff -Naur vim72.orig/src/option.c vim72/src/option.c
    44154732--- vim72.orig/src/option.c     2008-07-18 06:05:33.000000000 -0700
    4416 +++ vim72/src/option.c  2009-02-15 23:30:11.834265120 -0800
     4733+++ vim72/src/option.c  2009-02-22 21:58:02.966778320 -0800
    44174734@@ -2593,13 +2593,13 @@
    44184735 #ifdef FEAT_VIMINFO
     
    46835000            key = 0;
    46845001     }
     5002@@ -10093,25 +10153,110 @@
     5003 
     5004 #ifdef FEAT_LANGMAP
     5005 /*
     5006- * Any character has an equivalent character.  This is used for keyboards that
     5007- * have a special language mode that sends characters above 128 (although
     5008- * other characters can be translated too).
     5009+ * Any character has an equivalent 'langmap' character.  This is used for
     5010+ * keyboards that have a special language mode that sends characters above
     5011+ * 128 (although other characters can be translated too).  The "to" field is a
     5012+ * Vim command character.  This avoids having to switch the keyboard back to
     5013+ * ASCII mode when leaving Insert mode.
     5014+ *
     5015+ * langmap_mapchar[] maps any of 256 chars to an ASCII char used for Vim
     5016+ * commands.
     5017+ * When FEAT_MBYTE is defined langmap_mapga.ga_data is a sorted table of
     5018+ * langmap_entry_T.  This does the same as langmap_mapchar[] for characters >=
     5019+ * 256.
     5020+ */
     5021+# ifdef FEAT_MBYTE
     5022+/*
     5023+ * With multi-byte support use growarray for 'langmap' chars >= 256
     5024  */
     5025+typedef struct
     5026+{
     5027+    int            from;
     5028+    int     to;
     5029+} langmap_entry_T;
     5030+
     5031+static garray_T langmap_mapga;
     5032+static void langmap_set_entry __ARGS((int from, int to));
     5033 
     5034 /*
     5035- * char_u langmap_mapchar[256];
     5036- * Normally maps each of the 128 upper chars to an <128 ascii char; used to
     5037- * "translate" native lang chars in normal mode or some cases of
     5038- * insert mode without having to tediously switch lang mode back&forth.
     5039+ * Search for an entry in "langmap_mapga" for "from".  If found set the "to"
     5040+ * field.  If not found insert a new entry at the appropriate location.
     5041  */
     5042+    static void
     5043+langmap_set_entry(from, to)
     5044+    int    from;
     5045+    int    to;
     5046+{
     5047+    langmap_entry_T *entries = (langmap_entry_T *)(langmap_mapga.ga_data);
     5048+    int             a = 0;
     5049+    int             b = langmap_mapga.ga_len;
     5050+
     5051+    /* Do a binary search for an existing entry. */
     5052+    while (a != b)
     5053+    {
     5054+       int i = (a + b) / 2;
     5055+       int d = entries[i].from - from;
     5056+
     5057+       if (d == 0)
     5058+       {
     5059+           entries[i].to = to;
     5060+           return;
     5061+       }
     5062+       if (d < 0)
     5063+           a = i + 1;
     5064+       else
     5065+           b = i;
     5066+    }
     5067+
     5068+    if (ga_grow(&langmap_mapga, 1) != OK)
     5069+       return;  /* out of memory */
     5070+
     5071+    /* insert new entry at position "a" */
     5072+    entries = (langmap_entry_T *)(langmap_mapga.ga_data) + a;
     5073+    mch_memmove(entries + 1, entries,
     5074+                       (langmap_mapga.ga_len - a) * sizeof(langmap_entry_T));
     5075+    ++langmap_mapga.ga_len;
     5076+    entries[0].from = from;
     5077+    entries[0].to = to;
     5078+}
     5079+
     5080+/*
     5081+ * Apply 'langmap' to multi-byte character "c" and return the result.
     5082+ */
     5083+    int
     5084+langmap_adjust_mb(c)
     5085+    int c;
     5086+{
     5087+    langmap_entry_T *entries = (langmap_entry_T *)(langmap_mapga.ga_data);
     5088+    int a = 0;
     5089+    int b = langmap_mapga.ga_len;
     5090+
     5091+    while (a != b)
     5092+    {
     5093+       int i = (a + b) / 2;
     5094+       int d = entries[i].from - c;
     5095+
     5096+       if (d == 0)
     5097+           return entries[i].to;  /* found matching entry */
     5098+       if (d < 0)
     5099+           a = i + 1;
     5100+       else
     5101+           b = i;
     5102+    }
     5103+    return c;  /* no entry found, return "c" unmodified */
     5104+}
     5105+# endif
     5106 
     5107     static void
     5108 langmap_init()
     5109 {
     5110     int i;
     5111 
     5112-    for (i = 0; i < 256; i++)          /* we init with a-one-to one map */
     5113-       langmap_mapchar[i] = i;
     5114+    for (i = 0; i < 256; i++)
     5115+       langmap_mapchar[i] = i;  /* we init with a one-to-one map */
     5116+# ifdef FEAT_MBYTE
     5117+    ga_init2(&langmap_mapga, sizeof(langmap_entry_T), 8);
     5118+# endif
     5119 }
     5120 
     5121 /*
     5122@@ -10125,7 +10270,10 @@
     5123     char_u  *p2;
     5124     int            from, to;
     5125 
     5126-    langmap_init();                        /* back to one-to-one map first */
     5127+#ifdef FEAT_MBYTE
     5128+    ga_clear(&langmap_mapga);              /* clear the previous map first */
     5129+#endif
     5130+    langmap_init();                        /* back to one-to-one map */
     5131 
     5132     for (p = p_langmap; p[0] != NUL; )
     5133     {
     5134@@ -10175,7 +10323,13 @@
     5135                                                             transchar(from));
     5136                return;
     5137            }
     5138-           langmap_mapchar[from & 255] = to;
     5139+
     5140+#ifdef FEAT_MBYTE
     5141+           if (from >= 256)
     5142+               langmap_set_entry(from, to);
     5143+           else
     5144+#endif
     5145+               langmap_mapchar[from & 255] = to;
     5146 
     5147            /* Advance to next pair */
     5148            mb_ptr_adv(p);
    46855149diff -Naur vim72.orig/src/os_unix.c vim72/src/os_unix.c
    46865150--- vim72.orig/src/os_unix.c    2008-08-06 04:01:40.000000000 -0700
    4687 +++ vim72/src/os_unix.c 2009-02-15 23:29:40.908282162 -0800
     5151+++ vim72/src/os_unix.c 2009-02-22 21:58:03.102786422 -0800
    46885152@@ -315,12 +315,15 @@
    46895153     {-1,           "Unknown!", FALSE}
     
    47955259 # endif
    47965260                }
    4797 @@ -4158,7 +4172,8 @@
     5261@@ -4078,6 +4092,9 @@
     5262                int         fromshell_fd;
     5263                garray_T    ga;
     5264                int         noread_cnt;
     5265+# if defined(HAVE_GETTIMEOFDAY) && defined(HAVE_SYS_TIME_H)
     5266+               struct timeval  start_tv;
     5267+# endif
     5268 
     5269 # ifdef FEAT_GUI
     5270                if (pty_master_fd >= 0)
     5271@@ -4158,7 +4175,8 @@
    47985272                                            && (lnum !=
    47995273                                                    curbuf->b_ml.ml_line_count
     
    48055279                                if (lnum > curbuf->b_op_end.lnum)
    48065280                                {
    4807 @@ -6814,7 +6829,8 @@
     5281@@ -4186,7 +4204,9 @@
     5282                    ga_init2(&ga, 1, BUFLEN);
     5283 
     5284                noread_cnt = 0;
     5285-
     5286+# if defined(HAVE_GETTIMEOFDAY) && defined(HAVE_SYS_TIME_H)
     5287+               gettimeofday(&start_tv, NULL);
     5288+# endif
     5289                for (;;)
     5290                {
     5291                    /*
     5292@@ -4199,25 +4219,34 @@
     5293                     * that a typed password is echoed for ssh or gpg command.
     5294                     * Don't get characters when the child has already
     5295                     * finished (wait_pid == 0).
     5296-                    * Don't get extra characters when we already have one.
     5297                     * Don't read characters unless we didn't get output for a
     5298-                    * while, avoids that ":r !ls" eats typeahead.
     5299+                    * while (noread_cnt > 4), avoids that ":r !ls" eats
     5300+                    * typeahead.
     5301                     */
     5302                    len = 0;
     5303                    if (!(options & SHELL_EXPAND)
     5304                            && ((options &
     5305                                         (SHELL_READ|SHELL_WRITE|SHELL_COOKED))
     5306                                      != (SHELL_READ|SHELL_WRITE|SHELL_COOKED)
     5307-#ifdef FEAT_GUI
     5308+# ifdef FEAT_GUI
     5309                                                    || gui.in_use
     5310-#endif
     5311+# endif
     5312                                                    )
     5313                            && wait_pid == 0
     5314-                           && (ta_len > 0
     5315-                               || (noread_cnt > 4
     5316-                                   && (len = ui_inchar(ta_buf,
     5317-                                                      BUFLEN, 10L, 0)) > 0)))
     5318+                           && (ta_len > 0 || noread_cnt > 4))
     5319                    {
     5320+                     if (ta_len == 0)
     5321+                     {
     5322+                         /* Get extra characters when we don't have any.
     5323+                          * Reset the counter and timer. */
     5324+                         noread_cnt = 0;
     5325+# if defined(HAVE_GETTIMEOFDAY) && defined(HAVE_SYS_TIME_H)
     5326+                         gettimeofday(&start_tv, NULL);
     5327+# endif
     5328+                         len = ui_inchar(ta_buf, BUFLEN, 10L, 0);
     5329+                     }
     5330+                     if (ta_len > 0 || len > 0)
     5331+                     {
     5332                        /*
     5333                         * For pipes:
     5334                         * Check for CTRL-C: send interrupt signal to child.
     5335@@ -4319,9 +4348,9 @@
     5336                            {
     5337                                ta_len -= len;
     5338                                mch_memmove(ta_buf, ta_buf + len, ta_len);
     5339-                               noread_cnt = 0;
     5340                            }
     5341                        }
     5342+                     }
     5343                    }
     5344 
     5345                    if (got_int)
     5346@@ -4429,6 +4458,25 @@
     5347                        out_flush();
     5348                        if (got_int)
     5349                            break;
     5350+
     5351+# if defined(HAVE_GETTIMEOFDAY) && defined(HAVE_SYS_TIME_H)
     5352+                       {
     5353+                           struct timeval  now_tv;
     5354+                           long            msec;
     5355+
     5356+                           /* Avoid that we keep looping here without
     5357+                            * checking for a CTRL-C for a long time.  Don't
     5358+                            * break out too often to avoid losing typeahead. */
     5359+                           gettimeofday(&now_tv, NULL);
     5360+                           msec = (now_tv.tv_sec - start_tv.tv_sec) * 1000L
     5361+                               + (now_tv.tv_usec - start_tv.tv_usec) / 1000L;
     5362+                           if (msec > 2000)
     5363+                           {
     5364+                               noread_cnt = 5;
     5365+                               break;
     5366+                           }
     5367+                       }
     5368+# endif
     5369                    }
     5370 
     5371                    /* If we already detected the child has finished break the
     5372@@ -6814,7 +6862,8 @@
    48085373     if (xsmp_icefd != -1)
    48095374     {
     
    48175382diff -Naur vim72.orig/src/proto/eval.pro vim72/src/proto/eval.pro
    48185383--- vim72.orig/src/proto/eval.pro       2008-08-09 07:31:25.000000000 -0700
    4819 +++ vim72/src/proto/eval.pro    2009-02-15 23:27:14.702915211 -0800
     5384+++ vim72/src/proto/eval.pro    2009-02-22 21:57:36.373071657 -0800
    48205385@@ -17,7 +17,7 @@
    48215386 int eval_to_bool __ARGS((char_u *arg, int *error, char_u **nextcmd, int skip));
     
    48595424diff -Naur vim72.orig/src/proto/ex_cmds.pro vim72/src/proto/ex_cmds.pro
    48605425--- vim72.orig/src/proto/ex_cmds.pro    2008-08-09 07:31:25.000000000 -0700
    4861 +++ vim72/src/proto/ex_cmds.pro 2009-02-15 23:26:29.540021232 -0800
     5426+++ vim72/src/proto/ex_cmds.pro 2009-02-22 21:57:28.916594496 -0800
    48625427@@ -11,7 +11,7 @@
    48635428 char_u *make_filter_cmd __ARGS((char_u *cmd, char_u *itmp, char_u *otmp));
     
    48715436diff -Naur vim72.orig/src/proto/ex_getln.pro vim72/src/proto/ex_getln.pro
    48725437--- vim72.orig/src/proto/ex_getln.pro   2008-08-09 07:31:28.000000000 -0700
    4873 +++ vim72/src/proto/ex_getln.pro        2009-02-15 23:27:23.655489034 -0800
     5438+++ vim72/src/proto/ex_getln.pro        2009-02-22 21:57:40.525339851 -0800
    48745439@@ -31,7 +31,7 @@
    48755440 void set_cmd_context __ARGS((expand_T *xp, char_u *str, int len, int col));
     
    48835448diff -Naur vim72.orig/src/proto/mark.pro vim72/src/proto/mark.pro
    48845449--- vim72.orig/src/proto/mark.pro       2008-08-09 07:31:36.000000000 -0700
    4885 +++ vim72/src/proto/mark.pro    2009-02-15 23:26:29.540021232 -0800
     5450+++ vim72/src/proto/mark.pro    2009-02-22 21:57:28.916594496 -0800
    48865451@@ -26,5 +26,5 @@
    48875452 void write_viminfo_filemarks __ARGS((FILE *fp));
     
    48935458diff -Naur vim72.orig/src/proto/misc2.pro vim72/src/proto/misc2.pro
    48945459--- vim72.orig/src/proto/misc2.pro      2008-08-09 07:31:40.000000000 -0700
    4895 +++ vim72/src/proto/misc2.pro   2009-02-15 23:28:32.423895795 -0800
     5460+++ vim72/src/proto/misc2.pro   2009-02-22 21:57:46.089694370 -0800
    48965461@@ -59,7 +59,7 @@
    48975462 int handle_x_keys __ARGS((int key));
     
    49055470diff -Naur vim72.orig/src/proto/netbeans.pro vim72/src/proto/netbeans.pro
    49065471--- vim72.orig/src/proto/netbeans.pro   2008-08-09 07:31:56.000000000 -0700
    4907 +++ vim72/src/proto/netbeans.pro        2009-02-15 23:28:48.048896773 -0800
     5472+++ vim72/src/proto/netbeans.pro        2009-02-22 21:57:51.698055873 -0800
    49085473@@ -11,7 +11,7 @@
    49095474 void netbeans_frame_moved __ARGS((int new_x, int new_y));
     
    49155480 void netbeans_removed __ARGS((buf_T *bufp, linenr_T linenr, colnr_T col, long len));
    49165481 void netbeans_unmodified __ARGS((buf_T *bufp));
     5482diff -Naur vim72.orig/src/proto/option.pro vim72/src/proto/option.pro
     5483--- vim72.orig/src/proto/option.pro     2008-08-09 07:31:43.000000000 -0700
     5484+++ vim72/src/proto/option.pro  2009-02-22 21:58:02.966778320 -0800
     5485@@ -44,6 +44,7 @@
     5486 void set_context_in_set_cmd __ARGS((expand_T *xp, char_u *arg, int opt_flags));
     5487 int ExpandSettings __ARGS((expand_T *xp, regmatch_T *regmatch, int *num_file, char_u ***file));
     5488 int ExpandOldSetting __ARGS((int *num_file, char_u ***file));
     5489+int langmap_adjust_mb __ARGS((int c));
     5490 int has_format_option __ARGS((int x));
     5491 int shortmess __ARGS((int x));
     5492 void vimrc_found __ARGS((char_u *fname, char_u *envname));
    49175493diff -Naur vim72.orig/src/pty.c vim72/src/pty.c
    49185494--- vim72.orig/src/pty.c        2008-06-21 11:52:58.000000000 -0700
    4919 +++ vim72/src/pty.c     2009-02-15 23:24:57.546124598 -0800
     5495+++ vim72/src/pty.c     2009-02-22 21:57:25.600383852 -0800
    49205496@@ -270,9 +270,10 @@
    49215497 }
     
    49315507     int
    49325508 OpenPTY(ttyn)
     5509diff -Naur vim72.orig/src/quickfix.c vim72/src/quickfix.c
     5510--- vim72.orig/src/quickfix.c   2008-07-18 05:53:02.000000000 -0700
     5511+++ vim72/src/quickfix.c        2009-02-22 21:58:03.086785863 -0800
     5512@@ -1419,6 +1419,7 @@
     5513     int                        opened_window = FALSE;
     5514     win_T              *win;
     5515     win_T              *altwin;
     5516+    int                        flags;
     5517 #endif
     5518     int                        print_message = TRUE;
     5519     int                        len;
     5520@@ -1530,7 +1531,6 @@
     5521     if (qf_ptr->qf_type == 1 && (!curwin->w_buffer->b_help || cmdmod.tab != 0))
     5522     {
     5523        win_T   *wp;
     5524-       int     n;
     5525 
     5526        if (cmdmod.tab != 0)
     5527            wp = NULL;
     5528@@ -1546,13 +1546,16 @@
     5529             * Split off help window; put it at far top if no position
     5530             * specified, the current window is vertically split and narrow.
     5531             */
     5532-           n = WSP_HELP;
     5533+           flags = WSP_HELP;
     5534 # ifdef FEAT_VERTSPLIT
     5535            if (cmdmod.split == 0 && curwin->w_width != Columns
     5536                                                      && curwin->w_width < 80)
     5537-               n |= WSP_TOP;
     5538+               flags |= WSP_TOP;
     5539 # endif
     5540-           if (win_split(0, n) == FAIL)
     5541+           if (qi != &ql_info)
     5542+               flags |= WSP_NEWLOC;  /* don't copy the location list */
     5543+
     5544+           if (win_split(0, flags) == FAIL)
     5545                goto theend;
     5546            opened_window = TRUE;       /* close it when fail */
     5547 
     5548@@ -1562,7 +1565,6 @@
     5549            if (qi != &ql_info)     /* not a quickfix list */
     5550            {
     5551                /* The new window should use the supplied location list */
     5552-               qf_free_all(curwin);
     5553                curwin->w_llist = qi;
     5554                qi->qf_refcount++;
     5555            }
     5556@@ -1609,10 +1611,11 @@
     5557                {
     5558                    goto_tabpage_win(tp, wp);
     5559                    usable_win = 1;
     5560-                   break;
     5561+                   goto win_found;
     5562                }
     5563            }
     5564        }
     5565+win_found:
     5566 
     5567        /*
     5568         * If there is only one window and it is the quickfix window, create a
     5569@@ -1622,7 +1625,10 @@
     5570        {
     5571            ll_ref = curwin->w_llist_ref;
     5572 
     5573-           if (win_split(0, WSP_ABOVE) == FAIL)
     5574+           flags = WSP_ABOVE;
     5575+           if (ll_ref != NULL)
     5576+               flags |= WSP_NEWLOC;
     5577+           if (win_split(0, flags) == FAIL)
     5578                goto failed;            /* not enough room for window */
     5579            opened_window = TRUE;       /* close it when fail */
     5580            p_swb = empty_option;       /* don't split again */
     5581@@ -1634,7 +1640,6 @@
     5582            {
     5583                /* The new window should use the location list from the
     5584                 * location list window */
     5585-               qf_free_all(curwin);
     5586                curwin->w_llist = ll_ref;
     5587                ll_ref->qf_refcount++;
     5588            }
     5589@@ -2307,15 +2312,12 @@
     5590        if (eap->cmdidx == CMD_copen || eap->cmdidx == CMD_cwindow)
     5591            /* Create the new window at the very bottom. */
     5592            win_goto(lastwin);
     5593-       if (win_split(height, WSP_BELOW) == FAIL)
     5594+       if (win_split(height, WSP_BELOW | WSP_NEWLOC) == FAIL)
     5595            return;             /* not enough room for window */
     5596 #ifdef FEAT_SCROLLBIND
     5597        curwin->w_p_scb = FALSE;
     5598 #endif
     5599 
     5600-       /* Remove the location list for the quickfix window */
     5601-       qf_free_all(curwin);
     5602-
     5603        if (eap->cmdidx == CMD_lopen || eap->cmdidx == CMD_lwindow)
     5604        {
     5605            /*
     5606diff -Naur vim72.orig/src/regexp.c vim72/src/regexp.c
     5607--- vim72.orig/src/regexp.c     2008-08-07 12:58:50.000000000 -0700
     5608+++ vim72/src/regexp.c  2009-02-22 21:58:03.014779438 -0800
     5609@@ -4532,7 +4532,7 @@
     5610                cleanup_subexpr();
     5611                if (!REG_MULTI)         /* Single-line regexp */
     5612                {
     5613-                   if (reg_endp[no] == NULL)
     5614+                   if (reg_startp[no] == NULL || reg_endp[no] == NULL)
     5615                    {
     5616                        /* Backref was not set: Match an empty string. */
     5617                        len = 0;
     5618@@ -4548,7 +4548,7 @@
     5619                }
     5620                else                            /* Multi-line regexp */
     5621                {
     5622-                   if (reg_endpos[no].lnum < 0)
     5623+                   if (reg_startpos[no].lnum < 0 || reg_endpos[no].lnum < 0)
     5624                    {
     5625                        /* Backref was not set: Match an empty string. */
     5626                        len = 0;
     5627@@ -7279,13 +7279,11 @@
     5628     }
     5629     else
     5630     {
     5631-       if (submatch_match->endp[no] == NULL)
     5632+       s = submatch_match->startp[no];
     5633+       if (s == NULL || submatch_match->endp[no] == NULL)
     5634            retval = NULL;
     5635        else
     5636-       {
     5637-           s = submatch_match->startp[no];
     5638            retval = vim_strnsave(s, (int)(submatch_match->endp[no] - s));
     5639-       }
     5640     }
     5641 
     5642     return retval;
    49335643diff -Naur vim72.orig/src/screen.c vim72/src/screen.c
    49345644--- vim72.orig/src/screen.c     2008-07-24 07:45:07.000000000 -0700
    4935 +++ vim72/src/screen.c  2009-02-15 23:26:05.654490571 -0800
     5645+++ vim72/src/screen.c  2009-02-22 21:58:03.114787819 -0800
    49365646@@ -2439,9 +2439,17 @@
    49375647 
     
    49555665 
    49565666     SCREEN_LINE(row + W_WINROW(wp), W_WINCOL(wp), (int)W_WIDTH(wp),
     5667@@ -2588,6 +2596,7 @@
     5668     int                noinvcur = FALSE;       /* don't invert the cursor */
     5669 #ifdef FEAT_VISUAL
     5670     pos_T      *top, *bot;
     5671+    int                lnum_in_visual_area = FALSE;
     5672 #endif
     5673     pos_T      pos;
     5674     long       v;
     5675@@ -2784,9 +2793,10 @@
     5676            top = &VIsual;
     5677            bot = &curwin->w_cursor;
     5678        }
     5679+       lnum_in_visual_area = (lnum >= top->lnum && lnum <= bot->lnum);
     5680        if (VIsual_mode == Ctrl_V)      /* block mode */
     5681        {
     5682-           if (lnum >= top->lnum && lnum <= bot->lnum)
     5683+           if (lnum_in_visual_area)
     5684            {
     5685                fromcol = wp->w_old_cursor_fcol;
     5686                tocol = wp->w_old_cursor_lcol;
     5687@@ -3412,6 +3422,7 @@
     5688                        && (*mb_ptr2cells)(ptr) > 1)
     5689 #endif
     5690                    || ((int)vcol_prev == fromcol_prev
     5691+                       && vcol_prev < vcol     /* not at margin */
     5692                        && vcol < tocol))
     5693                area_attr = attr;               /* start highlighting */
     5694            else if (area_attr != 0
     5695@@ -4549,7 +4560,8 @@
     5696         * highlight the cursor position itself. */
     5697        if (wp->w_p_cuc && vcol == (long)wp->w_virtcol
     5698                && lnum != wp->w_cursor.lnum
     5699-               && draw_state == WL_LINE)
     5700+               && draw_state == WL_LINE
     5701+               && !lnum_in_visual_area)
     5702        {
     5703            vcol_save_attr = char_attr;
     5704            char_attr = hl_combine_attr(char_attr, hl_attr(HLF_CUC));
     5705@@ -6350,7 +6362,7 @@
     5706                    && c == 0x8e
     5707                    && ScreenLines2[off] != ptr[1])
     5708                || (enc_utf8
     5709-                   && (ScreenLinesUC[off] != (u8char_T)u8c
     5710+                   && (ScreenLinesUC[off] != (u8char_T)(c >= 0x80 ? u8c : 0)
     5711                        || screen_comp_differs(off, u8cc)))
     5712 #endif
     5713                || ScreenAttrs[off] != attr
     5714@@ -7356,7 +7368,11 @@
     5715 #endif
     5716     static int     entered = FALSE;            /* avoid recursiveness */
     5717     static int     done_outofmem_msg = FALSE;  /* did outofmem message */
     5718+#ifdef FEAT_AUTOCMD
     5719+    int                    retry_count = 0;
     5720 
     5721+retry:
     5722+#endif
     5723     /*
     5724      * Allocation of the screen buffers is done only when the size changes and
     5725      * when Rows and Columns have been set and we have started doing full
     5726@@ -7440,10 +7456,13 @@
     5727        {
     5728            outofmem = TRUE;
     5729 #ifdef FEAT_WINDOWS
     5730-           break;
     5731+           goto give_up;
     5732 #endif
     5733        }
     5734     }
     5735+#ifdef FEAT_WINDOWS
     5736+give_up:
     5737+#endif
     5738 
     5739 #ifdef FEAT_MBYTE
     5740     for (i = 0; i < p_mco; ++i)
     5741@@ -7628,8 +7647,17 @@
     5742     --RedrawingDisabled;
     5743 
     5744 #ifdef FEAT_AUTOCMD
     5745-    if (starting == 0)
     5746+    /*
     5747+     * Do not apply autocommands more than 3 times to avoid an endless loop
     5748+     * in case applying autocommands always changes Rows or Columns.
     5749+     */
     5750+    if (starting == 0 && ++retry_count <= 3)
     5751+    {
     5752        apply_autocmds(EVENT_VIMRESIZED, NULL, NULL, FALSE, curbuf);
     5753+       /* In rare cases, autocommands may have altered Rows or Columns,
     5754+        * jump back to check if we need to allocate the screen again. */
     5755+       goto retry;
     5756+    }
     5757 #endif
     5758 }
     5759 
    49575760diff -Naur vim72.orig/src/spell.c vim72/src/spell.c
    49585761--- vim72.orig/src/spell.c      2008-07-12 12:20:55.000000000 -0700
    4959 +++ vim72/src/spell.c   2009-02-15 23:30:03.705744656 -0800
     5762+++ vim72/src/spell.c   2009-02-22 21:58:02.914775247 -0800
    49605763@@ -77,7 +77,7 @@
    49615764 
     
    58286631diff -Naur vim72.orig/src/structs.h vim72/src/structs.h
    58296632--- vim72.orig/src/structs.h    2008-07-30 13:02:50.000000000 -0700
    5830 +++ vim72/src/structs.h 2009-02-15 23:26:58.897901382 -0800
     6633+++ vim72/src/structs.h 2009-02-22 21:57:36.281067746 -0800
    58316634@@ -459,7 +459,7 @@
    58326635 typedef struct
     
    58576660diff -Naur vim72.orig/src/tag.c vim72/src/tag.c
    58586661--- vim72.orig/src/tag.c        2008-07-16 14:31:30.000000000 -0700
    5859 +++ vim72/src/tag.c     2009-02-15 23:28:59.441624807 -0800
     6662+++ vim72/src/tag.c     2009-02-22 21:58:03.130788378 -0800
    58606663@@ -515,7 +515,7 @@
    58616664             * If a count is supplied to the ":tag <name>" command, then
     
    58676670 
    58686671            if (type == DT_SELECT || type == DT_JUMP
    5869 @@ -2725,7 +2725,24 @@
     6672@@ -618,7 +618,7 @@
     6673                taglen_advance(taglen);
     6674                MSG_PUTS_ATTR(_("file\n"), hl_attr(HLF_T));
     6675 
     6676-               for (i = 0; i < num_matches; ++i)
     6677+               for (i = 0; i < num_matches && !got_int; ++i)
     6678                {
     6679                    parse_match(matches[i], &tagp);
     6680                    if (!new_tag && (
     6681@@ -655,6 +655,8 @@
     6682                    }
     6683                    if (msg_col > 0)
     6684                        msg_putchar('\n');
     6685+                   if (got_int)
     6686+                       break;
     6687                    msg_advance(15);
     6688 
     6689                    /* print any extra fields */
     6690@@ -689,6 +691,8 @@
     6691                                if (msg_col + ptr2cells(p) >= Columns)
     6692                                {
     6693                                    msg_putchar('\n');
     6694+                                   if (got_int)
     6695+                                       break;
     6696                                    msg_advance(15);
     6697                                }
     6698                                p = msg_outtrans_one(p, attr);
     6699@@ -704,6 +708,8 @@
     6700                        if (msg_col > 15)
     6701                        {
     6702                            msg_putchar('\n');
     6703+                           if (got_int)
     6704+                               break;
     6705                            msg_advance(15);
     6706                        }
     6707                    }
     6708@@ -734,6 +740,8 @@
     6709                    {
     6710                        if (msg_col + (*p == TAB ? 1 : ptr2cells(p)) > Columns)
     6711                            msg_putchar('\n');
     6712+                       if (got_int)
     6713+                           break;
     6714                        msg_advance(15);
     6715 
     6716                        /* skip backslash used for escaping command char */
     6717@@ -760,12 +768,9 @@
     6718                    if (msg_col)
     6719                        msg_putchar('\n');
     6720                    ui_breakcheck();
     6721-                   if (got_int)
     6722-                   {
     6723-                       got_int = FALSE;        /* only stop the listing */
     6724-                       break;
     6725-                   }
     6726                }
     6727+               if (got_int)
     6728+                   got_int = FALSE;    /* only stop the listing */
     6729                ask_for_selection = TRUE;
     6730            }
     6731 #if defined(FEAT_QUICKFIX) && defined(FEAT_EVAL)
     6732@@ -2542,6 +2547,15 @@
     6733 {
     6734     ga_clear_strings(&tag_fnames);
     6735     do_tag(NULL, DT_FREE, 0, 0, 0);
     6736+    tag_freematch();
     6737+
     6738+# if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
     6739+    if (ptag_entry.tagname)
     6740+    {
     6741+        vim_free(ptag_entry.tagname);
     6742+        ptag_entry.tagname = NULL;
     6743+    }
     6744+# endif
     6745 }
     6746 #endif
     6747 
     6748@@ -2725,7 +2739,24 @@
    58706749         */
    58716750        p_7f = vim_strchr(lbuf, 0x7f);
     
    58926771        /* Find ^A.  If not found the line number is after the 0x7f */
    58936772        p = vim_strchr(p_7f, Ctrl_A);
    5894 @@ -2735,7 +2752,7 @@
     6773@@ -2735,7 +2766,7 @@
    58956774            ++p;
    58966775 
     
    59016780 
    59026781 
    5903 @@ -2749,7 +2766,7 @@
     6782@@ -2749,7 +2780,7 @@
    59046783            /* find end of tagname */
    59056784            for (p = p_7f - 1; !vim_iswordc(*p); --p)
     
    59126791diff -Naur vim72.orig/src/term.c vim72/src/term.c
    59136792--- vim72.orig/src/term.c       2008-07-27 04:48:06.000000000 -0700
    5914 +++ vim72/src/term.c    2009-02-15 23:29:04.669961167 -0800
     6793+++ vim72/src/term.c    2009-02-22 21:57:51.754057829 -0800
    59156794@@ -4920,7 +4920,15 @@
    59166795        key_name[0] = KEY2TERMCAP0(key);
     
    59326811diff -Naur vim72.orig/src/testdir/Makefile vim72/src/testdir/Makefile
    59336812--- vim72.orig/src/testdir/Makefile     2008-06-19 13:29:46.000000000 -0700
    5934 +++ vim72/src/testdir/Makefile  2009-02-15 23:25:42.545008241 -0800
     6813+++ vim72/src/testdir/Makefile  2009-02-22 21:57:28.688580807 -0800
    59356814@@ -26,15 +26,17 @@
    59366815 
     
    59666845diff -Naur vim72.orig/src/testdir/Make_ming.mak vim72/src/testdir/Make_ming.mak
    59676846--- vim72.orig/src/testdir/Make_ming.mak        1969-12-31 16:00:00.000000000 -0800
    5968 +++ vim72/src/testdir/Make_ming.mak     2009-02-15 23:26:03.078324067 -0800
     6847+++ vim72/src/testdir/Make_ming.mak     2009-02-22 21:57:28.764584997 -0800
    59696848@@ -0,0 +1,91 @@
    59706849+# Makefile to run tests for Vim, on Dos-like machines
     
    60616940diff -Naur vim72.orig/src/testdir/test42.ok vim72/src/testdir/test42.ok
    60626941--- vim72.orig/src/testdir/test42.ok    2008-02-20 04:27:37.000000000 -0800
    6063 +++ vim72/src/testdir/test42.ok 2009-02-15 23:26:34.640348093 -0800
     6942+++ vim72/src/testdir/test42.ok 2009-02-22 21:57:28.948596172 -0800
    60646943@@ -20,7 +20,7 @@
    60656944 ucs-2
     
    60736952diff -Naur vim72.orig/src/ui.c vim72/src/ui.c
    60746953--- vim72.orig/src/ui.c 2008-07-14 11:14:56.000000000 -0700
    6075 +++ vim72/src/ui.c      2009-02-15 23:27:36.164291102 -0800
     6954+++ vim72/src/ui.c      2009-02-22 21:57:40.653347953 -0800
    60766955@@ -1820,7 +1820,7 @@
    60776956 #ifdef HAVE_DUP
     
    61817060diff -Naur vim72.orig/src/version.c vim72/src/version.c
    61827061--- vim72.orig/src/version.c    2008-08-09 07:24:52.000000000 -0700
    6183 +++ vim72/src/version.c 2009-02-15 23:30:11.834265120 -0800
    6184 @@ -677,9 +677,216 @@
     7062+++ vim72/src/version.c 2009-02-22 21:58:03.130788378 -0800
     7063@@ -677,9 +677,248 @@
    61857064 static int included_patches[] =
    61867065 {   /* Add new patch number below this line */
    61877066 /**/
     7067+    124,
     7068+/**/
     7069+    123,
     7070+/**/
     7071+    122,
     7072+/**/
     7073+    121,
     7074+/**/
     7075+    120,
     7076+/**/
     7077+    119,
     7078+/**/
     7079+    118,
     7080+/**/
     7081+    117,
     7082+/**/
     7083+    116,
     7084+/**/
     7085+    115,
     7086+/**/
     7087+    114,
     7088+/**/
     7089+    113,
     7090+/**/
     7091+    112,
     7092+/**/
     7093+    111,
     7094+/**/
     7095+    110,
     7096+/**/
     7097+    109,
     7098+/**/
    61887099+    108,
    61897100+/**/
     
    63997310 highest_patch()
    64007311 {
    6401 @@ -786,7 +993,7 @@
     7312@@ -786,7 +1025,7 @@
    64027313     MSG_PUTS(_("\nRISC OS version"));
    64037314 #endif
     
    64087319     if (*compiled_arch != NUL)
    64097320     {
    6410 @@ -825,6 +1032,19 @@
     7321@@ -825,6 +1064,19 @@
    64117322        }
    64127323     }
     
    64307341diff -Naur vim72.orig/src/vim.h vim72/src/vim.h
    64317342--- vim72.orig/src/vim.h        2008-08-09 09:03:38.000000000 -0700
    6432 +++ vim72/src/vim.h     2009-02-15 23:27:12.174753177 -0800
     7343+++ vim72/src/vim.h     2009-02-22 21:58:03.090785025 -0800
    64337344@@ -341,8 +341,14 @@
    64347345 #ifdef BACKSLASH_IN_FILENAME
     
    64577368 typedef unsigned long __w64    long_u;
    64587369 typedef                 long __w64     long_i;
    6459 @@ -1728,7 +1734,8 @@
     7370@@ -1051,6 +1057,7 @@
     7371 #define WSP_HELP       16      /* creating the help window */
     7372 #define WSP_BELOW      32      /* put new window below/right */
     7373 #define WSP_ABOVE      64      /* put new window above/left */
     7374+#define WSP_NEWLOC     128     /* don't copy location list */
     7375 
     7376 /*
     7377  * arguments for gui_set_shellsize()
     7378@@ -1728,7 +1735,8 @@
    64607379 #define VV_MOUSE_COL   51
    64617380 #define VV_OP          52
     
    64677386 #ifdef FEAT_CLIPBOARD
    64687387 
    6469 @@ -1979,6 +1986,9 @@
     7388@@ -1979,6 +1987,9 @@
    64707389 # endif
    64717390 #endif
     
    64777396 # include "nbdebug.h"
    64787397 #else
    6479 @@ -2054,4 +2064,10 @@
     7398@@ -2054,4 +2065,10 @@
    64807399 #define DOSO_VIMRC     1       /* loading vimrc file */
    64817400 #define DOSO_GVIMRC    2       /* loading gvimrc file */
     
    64907409diff -Naur vim72.orig/src/window.c vim72/src/window.c
    64917410--- vim72.orig/src/window.c     2008-08-06 04:00:30.000000000 -0700
    6492 +++ vim72/src/window.c  2009-02-15 23:27:36.164291102 -0800
    6493 @@ -4028,14 +4028,14 @@
     7411+++ vim72/src/window.c  2009-02-22 21:58:03.090785025 -0800
     7412@@ -12,7 +12,7 @@
     7413 static int path_is_url __ARGS((char_u *p));
     7414 #if defined(FEAT_WINDOWS) || defined(PROTO)
     7415 static int win_split_ins __ARGS((int size, int flags, win_T *newwin, int dir));
     7416-static void win_init __ARGS((win_T *newp, win_T *oldp));
     7417+static void win_init __ARGS((win_T *newp, win_T *oldp, int flags));
     7418 static void frame_comp_pos __ARGS((frame_T *topfrp, int *row, int *col));
     7419 static void frame_setheight __ARGS((frame_T *curfrp, int height));
     7420 #ifdef FEAT_VERTSPLIT
     7421@@ -593,9 +593,7 @@
     7422                ++allow_keys;   /* no mapping for xchar, but allow key codes */
     7423                if (xchar == NUL)
     7424                    xchar = plain_vgetc();
     7425-#ifdef FEAT_LANGMAP
     7426                LANGMAP_ADJUST(xchar, TRUE);
     7427-#endif
     7428                --no_mapping;
     7429                --allow_keys;
     7430 #ifdef FEAT_CMDL_INFO
     7431@@ -912,7 +910,7 @@
     7432            return FAIL;
     7433 
     7434        /* make the contents of the new window the same as the current one */
     7435-       win_init(wp, curwin);
     7436+       win_init(wp, curwin, flags);
     7437     }
     7438 
     7439     /*
     7440@@ -1161,11 +1159,15 @@
     7441  * Initialize window "newp" from window "oldp".
     7442  * Used when splitting a window and when creating a new tab page.
     7443  * The windows will both edit the same buffer.
     7444+ * WSP_NEWLOC may be specified in flags to prevent the location list from
     7445+ * being copied.
     7446  */
     7447+/*ARGSUSED*/
     7448     static void
     7449-win_init(newp, oldp)
     7450+win_init(newp, oldp, flags)
     7451     win_T      *newp;
     7452     win_T      *oldp;
     7453+    int                 flags;
     7454 {
     7455     int                i;
     7456 
     7457@@ -1190,7 +1192,14 @@
     7458     copy_jumplist(oldp, newp);
     7459 #endif
     7460 #ifdef FEAT_QUICKFIX
     7461-    copy_loclist(oldp, newp);
     7462+    if (flags & WSP_NEWLOC)
     7463+    {
     7464+       /* Don't copy the location list.  */
     7465+       newp->w_llist = NULL;
     7466+       newp->w_llist_ref = NULL;
     7467+    }
     7468+    else
     7469+       copy_loclist(oldp, newp);
     7470 #endif
     7471     if (oldp->w_localdir != NULL)
     7472        newp->w_localdir = vim_strsave(oldp->w_localdir);
     7473@@ -3220,7 +3229,7 @@
     7474     else
     7475     {
     7476        /* First window in new tab page, initialize it from "oldwin". */
     7477-       win_init(curwin, oldwin);
     7478+       win_init(curwin, oldwin, 0);
     7479 
     7480 # ifdef FEAT_SCROLLBIND
     7481        /* We don't want scroll-binding in the first window. */
     7482@@ -4028,14 +4037,14 @@
    64947483            if (mch_dirname(cwd, MAXPATHL) == OK)
    64957484                globaldir = vim_strsave(cwd);
     
    65117500diff -Naur vim72.orig/src/workshop.c vim72/src/workshop.c
    65127501--- vim72.orig/src/workshop.c   2008-06-21 11:53:26.000000000 -0700
    6513 +++ vim72/src/workshop.c        2009-02-15 23:27:29.719875680 -0800
     7502+++ vim72/src/workshop.c        2009-02-22 21:57:40.565341248 -0800
    65147503@@ -1121,8 +1121,12 @@
    65157504                                      ? (char *)curbuf->b_sfname : "<None>");
Note: See TracChangeset for help on using the changeset viewer.