summaryrefslogtreecommitdiffstats
path: root/vi
diff options
context:
space:
mode:
authorFlorian Pritz <f-p@gmx.at>2009-03-10 18:39:17 +0100
committerFlorian Pritz <f-p@gmx.at>2009-03-10 18:39:17 +0100
commit60309a9f54e880f9cf0f7d2a2d56c09b673d5558 (patch)
tree4ce43592ba28be68637c514d0437822accc6324b /vi
parent900c8870971449f179fa8adf31b7067164032824 (diff)
downloadaur-packages-60309a9f54e880f9cf0f7d2a2d56c09b673d5558.tar.gz
aur-packages-60309a9f54e880f9cf0f7d2a2d56c09b673d5558.tar.xz
updated vi, vim, gvim
Diffstat (limited to 'vi')
-rw-r--r--vi/PKGBUILD2
-rw-r--r--vi/vim-7.2/7.2.109423
-rw-r--r--vi/vim-7.2/7.2.11053
-rw-r--r--vi/vim-7.2/7.2.11188
-rw-r--r--vi/vim-7.2/7.2.11247
-rw-r--r--vi/vim-7.2/7.2.11399
-rw-r--r--vi/vim-7.2/7.2.11486
-rw-r--r--vi/vim-7.2/7.2.115133
-rw-r--r--vi/vim-7.2/7.2.11655
-rw-r--r--vi/vim-7.2/7.2.117107
-rw-r--r--vi/vim-7.2/7.2.11878
-rw-r--r--vi/vim-7.2/7.2.11951
-rw-r--r--vi/vim-7.2/7.2.120277
-rw-r--r--vi/vim-7.2/7.2.121180
-rw-r--r--vi/vim-7.2/7.2.12280
-rw-r--r--vi/vim-7.2/7.2.12350
-rw-r--r--vi/vim-7.2/7.2.124122
-rw-r--r--vi/vim-7.2/7.2.125161
-rw-r--r--vi/vim-7.2/7.2.126174
-rw-r--r--vi/vim-7.2/7.2.12759
-rw-r--r--vi/vim-7.2/7.2.12852
-rw-r--r--vi/vim-7.2/7.2.12973
-rw-r--r--vi/vim-7.2/7.2.130413
-rw-r--r--vi/vim-7.2/7.2.13183
-rw-r--r--vi/vim-7.2/7.2.132268
25 files changed, 3213 insertions, 1 deletions
diff --git a/vi/PKGBUILD b/vi/PKGBUILD
index e5af325..23bbe4a 100644
--- a/vi/PKGBUILD
+++ b/vi/PKGBUILD
@@ -3,7 +3,7 @@
pkgname=vi
_srcver=7.2
-_patchlevel=108
+_patchlevel=132
pkgver=${_srcver}.${_patchlevel}
pkgrel=1
pkgdesc="a highly configurable, improved version of the vi text editor (basic version)"
diff --git a/vi/vim-7.2/7.2.109 b/vi/vim-7.2/7.2.109
new file mode 100644
index 0000000..8c3866c
--- /dev/null
+++ b/vi/vim-7.2/7.2.109
@@ -0,0 +1,423 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.109
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.109
+Problem: 'langmap' does not work for multi-byte characters.
+Solution: Add a list of mapped multi-byte characters. (based on work by
+ Konstantin Korikov, Agathoklis Hatzimanikas)
+Files: runtime/doc/options.txt, src/edit.c, src/getchar.c, src/macros.h,
+ src/normal.c, src/option.c, src/proto/option.pro, src/window.c
+
+
+*** ../vim-7.2.108/runtime/doc/options.txt Fri Nov 28 10:59:57 2008
+--- runtime/doc/options.txt Wed Feb 11 18:59:34 2009
+***************
+*** 4175,4183 ****
+ be able to execute Normal mode commands.
+ This is the opposite of the 'keymap' option, where characters are
+ mapped in Insert mode.
+- This only works for 8-bit characters. The value of 'langmap' may be
+- specified with multi-byte characters (e.g., UTF-8), but only the lower
+- 8 bits of each character will be used.
+
+ Example (for Greek, in UTF-8): *greek* >
+ :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,υy,ζz
+--- 4188,4193 ----
+*** ../vim-7.2.108/src/edit.c Wed Feb 4 11:19:40 2009
+--- src/edit.c Sat Feb 21 19:54:03 2009
+***************
+*** 7703,7711 ****
+ */
+ ++no_mapping;
+ regname = plain_vgetc();
+- #ifdef FEAT_LANGMAP
+ LANGMAP_ADJUST(regname, TRUE);
+- #endif
+ if (regname == Ctrl_R || regname == Ctrl_O || regname == Ctrl_P)
+ {
+ /* Get a third key for literal register insertion */
+--- 7703,7709 ----
+***************
+*** 7714,7722 ****
+ add_to_showcmd_c(literally);
+ #endif
+ regname = plain_vgetc();
+- #ifdef FEAT_LANGMAP
+ LANGMAP_ADJUST(regname, TRUE);
+- #endif
+ }
+ --no_mapping;
+
+--- 7712,7718 ----
+*** ../vim-7.2.108/src/macros.h Wed Aug 15 20:41:07 2007
+--- src/macros.h Sat Feb 21 19:55:38 2009
+***************
+*** 127,141 ****
+ #ifdef FEAT_LANGMAP
+ /*
+ * Adjust chars in a language according to 'langmap' option.
+! * NOTE that there is NO overhead if 'langmap' is not set; but even
+! * when set we only have to do 2 ifs and an array lookup.
+ * Don't apply 'langmap' if the character comes from the Stuff buffer.
+ * The do-while is just to ignore a ';' after the macro.
+ */
+! # define LANGMAP_ADJUST(c, condition) do { \
+! if (*p_langmap && (condition) && !KeyStuffed && (c) >= 0 && (c) < 256) \
+! c = langmap_mapchar[c]; \
+ } while (0)
+ #endif
+
+ /*
+--- 127,157 ----
+ #ifdef FEAT_LANGMAP
+ /*
+ * Adjust chars in a language according to 'langmap' option.
+! * NOTE that there is no noticeable overhead if 'langmap' is not set.
+! * When set the overhead for characters < 256 is small.
+ * Don't apply 'langmap' if the character comes from the Stuff buffer.
+ * The do-while is just to ignore a ';' after the macro.
+ */
+! # ifdef FEAT_MBYTE
+! # define LANGMAP_ADJUST(c, condition) \
+! do { \
+! if (*p_langmap && (condition) && !KeyStuffed && (c) >= 0) \
+! { \
+! if ((c) < 256) \
+! c = langmap_mapchar[c]; \
+! else \
+! c = langmap_adjust_mb(c); \
+! } \
+ } while (0)
++ # else
++ # define LANGMAP_ADJUST(c, condition) \
++ do { \
++ if (*p_langmap && (condition) && !KeyStuffed && (c) >= 0 && (c) < 256) \
++ c = langmap_mapchar[c]; \
++ } while (0)
++ # endif
++ #else
++ # define LANGMAP_ADJUST(c, condition) /* nop */
+ #endif
+
+ /*
+*** ../vim-7.2.108/src/normal.c Wed Feb 4 11:45:28 2009
+--- src/normal.c Sat Feb 21 19:55:17 2009
+***************
+*** 651,660 ****
+ * Get the command character from the user.
+ */
+ c = safe_vgetc();
+-
+- #ifdef FEAT_LANGMAP
+ LANGMAP_ADJUST(c, TRUE);
+- #endif
+
+ #ifdef FEAT_VISUAL
+ /*
+--- 651,657 ----
+***************
+*** 744,752 ****
+ }
+ ++no_zero_mapping; /* don't map zero here */
+ c = plain_vgetc();
+- #ifdef FEAT_LANGMAP
+ LANGMAP_ADJUST(c, TRUE);
+- #endif
+ --no_zero_mapping;
+ if (ctrl_w)
+ {
+--- 741,747 ----
+***************
+*** 769,777 ****
+ ++no_mapping;
+ ++allow_keys; /* no mapping for nchar, but keys */
+ c = plain_vgetc(); /* get next character */
+- #ifdef FEAT_LANGMAP
+ LANGMAP_ADJUST(c, TRUE);
+- #endif
+ --no_mapping;
+ --allow_keys;
+ #ifdef FEAT_CMDL_INFO
+--- 764,770 ----
+***************
+*** 959,967 ****
+ * "gr", "g'" and "g`".
+ */
+ ca.nchar = plain_vgetc();
+- #ifdef FEAT_LANGMAP
+ LANGMAP_ADJUST(ca.nchar, TRUE);
+- #endif
+ #ifdef FEAT_CMDL_INFO
+ need_flushbuf |= add_to_showcmd(ca.nchar);
+ #endif
+--- 952,958 ----
+***************
+*** 1062,1071 ****
+ }
+ #endif
+
+- #ifdef FEAT_LANGMAP
+ /* adjust chars > 127, except after "tTfFr" commands */
+ LANGMAP_ADJUST(*cp, !lang);
+- #endif
+ #ifdef FEAT_RIGHTLEFT
+ /* adjust Hebrew mapped char */
+ if (p_hkmap && lang && KeyTyped)
+--- 1053,1060 ----
+***************
+*** 4630,4638 ****
+ ++no_mapping;
+ ++allow_keys; /* no mapping for nchar, but allow key codes */
+ nchar = plain_vgetc();
+- #ifdef FEAT_LANGMAP
+ LANGMAP_ADJUST(nchar, TRUE);
+- #endif
+ --no_mapping;
+ --allow_keys;
+ #ifdef FEAT_CMDL_INFO
+--- 4619,4625 ----
+***************
+*** 4988,4996 ****
+ ++no_mapping;
+ ++allow_keys; /* no mapping for nchar, but allow key codes */
+ nchar = plain_vgetc();
+- #ifdef FEAT_LANGMAP
+ LANGMAP_ADJUST(nchar, TRUE);
+- #endif
+ --no_mapping;
+ --allow_keys;
+ #ifdef FEAT_CMDL_INFO
+--- 4975,4981 ----
+*** ../vim-7.2.108/src/option.c Wed Feb 11 22:47:32 2009
+--- src/option.c Sat Feb 21 19:46:13 2009
+***************
+*** 10153,10177 ****
+
+ #ifdef FEAT_LANGMAP
+ /*
+! * Any character has an equivalent character. This is used for keyboards that
+! * have a special language mode that sends characters above 128 (although
+! * other characters can be translated too).
+ */
+
+ /*
+! * char_u langmap_mapchar[256];
+! * Normally maps each of the 128 upper chars to an <128 ascii char; used to
+! * "translate" native lang chars in normal mode or some cases of
+! * insert mode without having to tediously switch lang mode back&forth.
+ */
+
+ static void
+ langmap_init()
+ {
+ int i;
+
+! for (i = 0; i < 256; i++) /* we init with a-one-to one map */
+! langmap_mapchar[i] = i;
+ }
+
+ /*
+--- 10153,10262 ----
+
+ #ifdef FEAT_LANGMAP
+ /*
+! * Any character has an equivalent 'langmap' character. This is used for
+! * keyboards that have a special language mode that sends characters above
+! * 128 (although other characters can be translated too). The "to" field is a
+! * Vim command character. This avoids having to switch the keyboard back to
+! * ASCII mode when leaving Insert mode.
+! *
+! * langmap_mapchar[] maps any of 256 chars to an ASCII char used for Vim
+! * commands.
+! * When FEAT_MBYTE is defined langmap_mapga.ga_data is a sorted table of
+! * langmap_entry_T. This does the same as langmap_mapchar[] for characters >=
+! * 256.
+! */
+! # ifdef FEAT_MBYTE
+! /*
+! * With multi-byte support use growarray for 'langmap' chars >= 256
+ */
++ typedef struct
++ {
++ int from;
++ int to;
++ } langmap_entry_T;
++
++ static garray_T langmap_mapga;
++ static void langmap_set_entry __ARGS((int from, int to));
++
++ /*
++ * Search for an entry in "langmap_mapga" for "from". If found set the "to"
++ * field. If not found insert a new entry at the appropriate location.
++ */
++ static void
++ langmap_set_entry(from, to)
++ int from;
++ int to;
++ {
++ langmap_entry_T *entries = (langmap_entry_T *)(langmap_mapga.ga_data);
++ int a = 0;
++ int b = langmap_mapga.ga_len;
++
++ /* Do a binary search for an existing entry. */
++ while (a != b)
++ {
++ int i = (a + b) / 2;
++ int d = entries[i].from - from;
++
++ if (d == 0)
++ {
++ entries[i].to = to;
++ return;
++ }
++ if (d < 0)
++ a = i + 1;
++ else
++ b = i;
++ }
++
++ if (ga_grow(&langmap_mapga, 1) != OK)
++ return; /* out of memory */
++
++ /* insert new entry at position "a" */
++ entries = (langmap_entry_T *)(langmap_mapga.ga_data) + a;
++ mch_memmove(entries + 1, entries,
++ (langmap_mapga.ga_len - a) * sizeof(langmap_entry_T));
++ ++langmap_mapga.ga_len;
++ entries[0].from = from;
++ entries[0].to = to;
++ }
+
+ /*
+! * Apply 'langmap' to multi-byte character "c" and return the result.
+ */
++ int
++ langmap_adjust_mb(c)
++ int c;
++ {
++ langmap_entry_T *entries = (langmap_entry_T *)(langmap_mapga.ga_data);
++ int a = 0;
++ int b = langmap_mapga.ga_len;
++
++ while (a != b)
++ {
++ int i = (a + b) / 2;
++ int d = entries[i].from - c;
++
++ if (d == 0)
++ return entries[i].to; /* found matching entry */
++ if (d < 0)
++ a = i + 1;
++ else
++ b = i;
++ }
++ return c; /* no entry found, return "c" unmodified */
++ }
++ # endif
+
+ static void
+ langmap_init()
+ {
+ int i;
+
+! for (i = 0; i < 256; i++)
+! langmap_mapchar[i] = i; /* we init with a one-to-one map */
+! # ifdef FEAT_MBYTE
+! ga_init2(&langmap_mapga, sizeof(langmap_entry_T), 8);
+! # endif
+ }
+
+ /*
+***************
+*** 10185,10191 ****
+ char_u *p2;
+ int from, to;
+
+! langmap_init(); /* back to one-to-one map first */
+
+ for (p = p_langmap; p[0] != NUL; )
+ {
+--- 10270,10279 ----
+ char_u *p2;
+ int from, to;
+
+! #ifdef FEAT_MBYTE
+! ga_clear(&langmap_mapga); /* clear the previous map first */
+! #endif
+! langmap_init(); /* back to one-to-one map */
+
+ for (p = p_langmap; p[0] != NUL; )
+ {
+***************
+*** 10235,10241 ****
+ transchar(from));
+ return;
+ }
+! langmap_mapchar[from & 255] = to;
+
+ /* Advance to next pair */
+ mb_ptr_adv(p);
+--- 10323,10335 ----
+ transchar(from));
+ return;
+ }
+!
+! #ifdef FEAT_MBYTE
+! if (from >= 256)
+! langmap_set_entry(from, to);
+! else
+! #endif
+! langmap_mapchar[from & 255] = to;
+
+ /* Advance to next pair */
+ mb_ptr_adv(p);
+*** ../vim-7.2.108/src/proto/option.pro Sat May 5 19:28:04 2007
+--- src/proto/option.pro Wed Feb 11 21:21:05 2009
+***************
+*** 44,49 ****
+--- 44,50 ----
+ void set_context_in_set_cmd __ARGS((expand_T *xp, char_u *arg, int opt_flags));
+ int ExpandSettings __ARGS((expand_T *xp, regmatch_T *regmatch, int *num_file, char_u ***file));
+ int ExpandOldSetting __ARGS((int *num_file, char_u ***file));
++ int langmap_adjust_mb __ARGS((int c));
+ int has_format_option __ARGS((int x));
+ int shortmess __ARGS((int x));
+ void vimrc_found __ARGS((char_u *fname, char_u *envname));
+*** ../vim-7.2.108/src/window.c Fri Nov 28 21:26:50 2008
+--- src/window.c Sat Feb 21 19:55:25 2009
+***************
+*** 594,602 ****
+ ++allow_keys; /* no mapping for xchar, but allow key codes */
+ if (xchar == NUL)
+ xchar = plain_vgetc();
+- #ifdef FEAT_LANGMAP
+ LANGMAP_ADJUST(xchar, TRUE);
+- #endif
+ --no_mapping;
+ --allow_keys;
+ #ifdef FEAT_CMDL_INFO
+--- 594,600 ----
+*** ../vim-7.2.108/src/version.c Wed Feb 11 22:47:32 2009
+--- src/version.c Sat Feb 21 19:34:28 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 109,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+99. The hum of a cooling fan and the click of keys is comforting to you.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vi/vim-7.2/7.2.110 b/vi/vim-7.2/7.2.110
new file mode 100644
index 0000000..4594e78
--- /dev/null
+++ b/vi/vim-7.2/7.2.110
@@ -0,0 +1,53 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.110
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.110
+Problem: Compiler warning for unused variable.
+Solution: Init the variable.
+Files: src/ex_docmd.c
+
+
+*** ../vim-7.2.109/src/ex_docmd.c Wed Jan 28 15:42:07 2009
+--- src/ex_docmd.c Tue Feb 17 03:47:13 2009
+***************
+*** 5916,5922 ****
+ char_u *q;
+
+ char_u *start;
+! char_u *end;
+ char_u *ksp;
+ size_t len, totlen;
+
+--- 5916,5922 ----
+ char_u *q;
+
+ char_u *start;
+! char_u *end = NULL;
+ char_u *ksp;
+ size_t len, totlen;
+
+*** ../vim-7.2.109/src/version.c Sat Feb 21 20:27:00 2009
+--- src/version.c Sat Feb 21 20:35:50 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 110,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+100. The most exciting sporting events you noticed during summer 1996
+ was Netscape vs. Microsoft.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vi/vim-7.2/7.2.111 b/vi/vim-7.2/7.2.111
new file mode 100644
index 0000000..acc0be4
--- /dev/null
+++ b/vi/vim-7.2/7.2.111
@@ -0,0 +1,88 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.111
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.111
+Problem: When using Visual block mode with 'cursorcolumn' it's unclear what
+ is selected.
+Solution: Don't use 'cursorcolumn' highlighting inside the Visual selection.
+ (idea by Dominique Pelle)
+Files: src/screen.c
+
+
+*** ../vim-7.2.110/src/screen.c Wed Oct 1 21:09:02 2008
+--- src/screen.c Sat Feb 21 21:04:19 2009
+***************
+*** 2596,2601 ****
+--- 2596,2602 ----
+ int noinvcur = FALSE; /* don't invert the cursor */
+ #ifdef FEAT_VISUAL
+ pos_T *top, *bot;
++ int lnum_in_visual_area = FALSE;
+ #endif
+ pos_T pos;
+ long v;
+***************
+*** 2792,2800 ****
+ top = &VIsual;
+ bot = &curwin->w_cursor;
+ }
+ if (VIsual_mode == Ctrl_V) /* block mode */
+ {
+! if (lnum >= top->lnum && lnum <= bot->lnum)
+ {
+ fromcol = wp->w_old_cursor_fcol;
+ tocol = wp->w_old_cursor_lcol;
+--- 2793,2802 ----
+ top = &VIsual;
+ bot = &curwin->w_cursor;
+ }
++ lnum_in_visual_area = (lnum >= top->lnum && lnum <= bot->lnum);
+ if (VIsual_mode == Ctrl_V) /* block mode */
+ {
+! if (lnum_in_visual_area)
+ {
+ fromcol = wp->w_old_cursor_fcol;
+ tocol = wp->w_old_cursor_lcol;
+***************
+*** 4557,4563 ****
+ * highlight the cursor position itself. */
+ if (wp->w_p_cuc && vcol == (long)wp->w_virtcol
+ && lnum != wp->w_cursor.lnum
+! && draw_state == WL_LINE)
+ {
+ vcol_save_attr = char_attr;
+ char_attr = hl_combine_attr(char_attr, hl_attr(HLF_CUC));
+--- 4560,4567 ----
+ * highlight the cursor position itself. */
+ if (wp->w_p_cuc && vcol == (long)wp->w_virtcol
+ && lnum != wp->w_cursor.lnum
+! && draw_state == WL_LINE
+! && !lnum_in_visual_area)
+ {
+ vcol_save_attr = char_attr;
+ char_attr = hl_combine_attr(char_attr, hl_attr(HLF_CUC));
+*** ../vim-7.2.110/src/version.c Sat Feb 21 20:36:30 2009
+--- src/version.c Sat Feb 21 21:08:14 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 111,
+ /**/
+
+--
+Contrary to popular belief, Unix is user friendly.
+It just happens to be selective about who it makes friends with.
+ -- Dave Parnas
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vi/vim-7.2/7.2.112 b/vi/vim-7.2/7.2.112
new file mode 100644
index 0000000..6611999
--- /dev/null
+++ b/vi/vim-7.2/7.2.112
@@ -0,0 +1,47 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.112
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.112
+Problem: Cursor invisible in Visual mode when 'number' is set and cursor in
+ first column. (Matti Niemenmaa, Renato Alves)
+Solution: Check that vcol_prev is smaller than vcol.
+Files: src/screen.c
+
+
+*** ../vim-7.2.111/src/screen.c Sat Feb 21 21:10:24 2009
+--- src/screen.c Sat Feb 21 21:04:19 2009
+***************
+*** 3422,3427 ****
+--- 3422,3428 ----
+ && (*mb_ptr2cells)(ptr) > 1)
+ #endif
+ || ((int)vcol_prev == fromcol_prev
++ && vcol_prev < vcol /* not at margin */
+ && vcol < tocol))
+ area_attr = attr; /* start highlighting */
+ else if (area_attr != 0
+*** ../vim-7.2.111/src/version.c Sat Feb 21 21:10:24 2009
+--- src/version.c Sat Feb 21 21:20:51 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 112,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+102. When filling out your driver's license application, you give
+ your IP address.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vi/vim-7.2/7.2.113 b/vi/vim-7.2/7.2.113
new file mode 100644
index 0000000..f0e4ebf
--- /dev/null
+++ b/vi/vim-7.2/7.2.113
@@ -0,0 +1,99 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.113
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.113
+Problem: Crash for substitute() call using submatch(1) while there is no
+ such submatch. (Yukihiro Nakadaira)
+Solution: Also check the start of the submatch is set, it can be NULL when
+ an attempted match didn't work out.
+Files: src/regexp.c
+
+
+*** ../vim-7.2.112/src/regexp.c Fri Aug 8 13:45:31 2008
+--- src/regexp.c Sat Feb 21 21:46:49 2009
+***************
+*** 4532,4538 ****
+ cleanup_subexpr();
+ if (!REG_MULTI) /* Single-line regexp */
+ {
+! if (reg_endp[no] == NULL)
+ {
+ /* Backref was not set: Match an empty string. */
+ len = 0;
+--- 4532,4538 ----
+ cleanup_subexpr();
+ if (!REG_MULTI) /* Single-line regexp */
+ {
+! if (reg_startp[no] == NULL || reg_endp[no] == NULL)
+ {
+ /* Backref was not set: Match an empty string. */
+ len = 0;
+***************
+*** 4548,4554 ****
+ }
+ else /* Multi-line regexp */
+ {
+! if (reg_endpos[no].lnum < 0)
+ {
+ /* Backref was not set: Match an empty string. */
+ len = 0;
+--- 4548,4554 ----
+ }
+ else /* Multi-line regexp */
+ {
+! if (reg_startpos[no].lnum < 0 || reg_endpos[no].lnum < 0)
+ {
+ /* Backref was not set: Match an empty string. */
+ len = 0;
+***************
+*** 7279,7291 ****
+ }
+ else
+ {
+! if (submatch_match->endp[no] == NULL)
+ retval = NULL;
+ else
+- {
+- s = submatch_match->startp[no];
+ retval = vim_strnsave(s, (int)(submatch_match->endp[no] - s));
+- }
+ }
+
+ return retval;
+--- 7279,7289 ----
+ }
+ else
+ {
+! s = submatch_match->startp[no];
+! if (s == NULL || submatch_match->endp[no] == NULL)
+ retval = NULL;
+ else
+ retval = vim_strnsave(s, (int)(submatch_match->endp[no] - s));
+ }
+
+ return retval;
+*** ../vim-7.2.112/src/version.c Sat Feb 21 21:22:44 2009
+--- src/version.c Sat Feb 21 22:01:56 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 113,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+103. When you find yourself in the "Computer" section of Barnes & Noble
+ enjoying yourself.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vi/vim-7.2/7.2.114 b/vi/vim-7.2/7.2.114
new file mode 100644
index 0000000..9742b52
--- /dev/null
+++ b/vi/vim-7.2/7.2.114
@@ -0,0 +1,86 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.114
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.114
+Problem: Using wrong printf format.
+Solution: Use "%ld" instead of "%d". (Dominique Pelle)
+Files: src/netbeans.c
+
+
+*** ../vim-7.2.113/src/netbeans.c Tue Jan 6 16:13:42 2009
+--- src/netbeans.c Tue Feb 17 03:21:33 2009
+***************
+*** 1924,1930 ****
+ vim_free(path);
+ if (bufp == NULL)
+ {
+! nbdebug((" File %s not found in setBufferNumber\n", args));
+ EMSG2("E642: File %s not found in setBufferNumber", args);
+ return FAIL;
+ }
+--- 1924,1930 ----
+ vim_free(path);
+ if (bufp == NULL)
+ {
+! nbdebug((" File %s not found in setBufferNumber\n", args));
+ EMSG2("E642: File %s not found in setBufferNumber", args);
+ return FAIL;
+ }
+***************
+*** 2318,2324 ****
+ }
+ if (pos)
+ {
+! coloncmd(":sign place %d line=%d name=%d buffer=%d",
+ serNum, pos->lnum, typeNum, buf->bufp->b_fnum);
+ if (typeNum == curPCtype)
+ coloncmd(":sign jump %d buffer=%d", serNum,
+--- 2318,2324 ----
+ }
+ if (pos)
+ {
+! coloncmd(":sign place %d line=%ld name=%d buffer=%d",
+ serNum, pos->lnum, typeNum, buf->bufp->b_fnum);
+ if (typeNum == curPCtype)
+ coloncmd(":sign jump %d buffer=%d", serNum,
+***************
+*** 2422,2428 ****
+ GUARDED) == 0)
+ {
+ coloncmd(
+! ":sign place %d line=%d name=%d buffer=%d",
+ guardId++, lnum, GUARDED,
+ buf->bufp->b_fnum);
+ }
+--- 2422,2428 ----
+ GUARDED) == 0)
+ {
+ coloncmd(
+! ":sign place %d line=%ld name=%d buffer=%d",
+ guardId++, lnum, GUARDED,
+ buf->bufp->b_fnum);
+ }
+*** ../vim-7.2.113/src/version.c Sat Feb 21 22:03:06 2009
+--- src/version.c Sat Feb 21 22:11:21 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 114,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+104. When people ask about the Presidential Election you ask "Which country?"
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vi/vim-7.2/7.2.115 b/vi/vim-7.2/7.2.115
new file mode 100644
index 0000000..b51a1f5
--- /dev/null
+++ b/vi/vim-7.2/7.2.115
@@ -0,0 +1,133 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.115
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.115
+Problem: Some debugging code is never used.
+Solution: Remove nbtrace() and nbprt(). (Dominique Pelle)
+Files: src/nbdebug.c, src/nbdebug.h
+
+*** ../vim-7.2.114/src/nbdebug.c Tue Jun 24 23:54:30 2008
+--- src/nbdebug.c Tue Feb 17 03:26:07 2009
+***************
+*** 33,39 ****
+ u_int nb_dlevel = 0; /* nb_debug verbosity level */
+
+ void nbdb(char *, ...);
+- void nbtrace(char *, ...);
+
+ static int lookup(char *);
+ #ifdef USE_NB_ERRORHANDLER
+--- 33,38 ----
+***************
+*** 100,124 ****
+ } /* end nbdebug_log_init */
+
+
+-
+-
+- void
+- nbtrace(
+- char *fmt,
+- ...)
+- {
+- va_list ap;
+-
+- if (nb_debug!= NULL && (nb_dlevel & (NB_TRACE | NB_TRACE_VERBOSE))) {
+- va_start(ap, fmt);
+- vfprintf(nb_debug, fmt, ap);
+- va_end(ap);
+- fflush(nb_debug);
+- }
+-
+- } /* end nbtrace */
+-
+-
+ void
+ nbdbg(
+ char *fmt,
+--- 99,104 ----
+***************
+*** 136,158 ****
+ } /* end nbdbg */
+
+
+- void
+- nbprt(
+- char *fmt,
+- ...)
+- {
+- va_list ap;
+-
+- if (nb_debug != NULL && nb_dlevel & NB_PRINT) {
+- va_start(ap, fmt);
+- vfprintf(nb_debug, fmt, ap);
+- va_end(ap);
+- fflush(nb_debug);
+- }
+-
+- } /* end nbprt */
+-
+-
+ static int
+ lookup(
+ char *file)
+--- 116,121 ----
+*** ../vim-7.2.114/src/nbdebug.h Wed Jun 25 00:47:21 2008
+--- src/nbdebug.h Tue Feb 17 03:26:38 2009
+***************
+*** 43,50 ****
+
+
+ void nbdbg(char *, ...);
+- void nbprt(char *, ...);
+- void nbtrace(char *, ...);
+
+ void nbdebug_wait __ARGS((u_int wait_flags, char *wait_var, u_int wait_secs));
+ void nbdebug_log_init __ARGS((char *log_var, char *level_var));
+--- 43,48 ----
+***************
+*** 70,88 ****
+ {
+ }
+
+- void
+- nbprt(
+- char *fmt,
+- ...)
+- {
+- }
+-
+- void
+- nbtrace(
+- char *fmt,
+- ...)
+- {
+- }
+-
+ #endif /* NBDEBUG */
+ #endif /* NBDEBUG_H */
+--- 68,72 ----
+*** ../vim-7.2.114/src/version.c Sat Feb 21 22:12:43 2009
+--- src/version.c Sat Feb 21 22:28:21 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 115,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+105. When someone asks you for your address, you tell them your URL.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vi/vim-7.2/7.2.116 b/vi/vim-7.2/7.2.116
new file mode 100644
index 0000000..edd2bd1
--- /dev/null
+++ b/vi/vim-7.2/7.2.116
@@ -0,0 +1,55 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.116
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.116
+Problem: Not all memory is freed when EXITFREE is defined.
+Solution: Free allocated memory on exit. (Dominique Pelle)
+Files: src/ex_docmd.c, src/gui_gtk_x11.c, src/misc2.c, src/search.c,
+ src/tag.c
+
+
+*** ../vim-7.2.115/src/tag.c Tue Jan 13 17:27:18 2009
+--- src/tag.c Tue Feb 17 03:43:32 2009
+***************
+*** 2542,2547 ****
+--- 2542,2556 ----
+ {
+ ga_clear_strings(&tag_fnames);
+ do_tag(NULL, DT_FREE, 0, 0, 0);
++ tag_freematch();
++
++ # if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
++ if (ptag_entry.tagname)
++ {
++ vim_free(ptag_entry.tagname);
++ ptag_entry.tagname = NULL;
++ }
++ # endif
+ }
+ #endif
+
+*** ../vim-7.2.115/src/version.c Sat Feb 21 22:29:12 2009
+--- src/version.c Sat Feb 21 22:56:14 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 116,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+106. When told to "go to your room" you inform your parents that you
+ can't...because you were kicked out and banned.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vi/vim-7.2/7.2.117 b/vi/vim-7.2/7.2.117
new file mode 100644
index 0000000..4c4e66a
--- /dev/null
+++ b/vi/vim-7.2/7.2.117
@@ -0,0 +1,107 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.117
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.117
+Problem: Location list incorrectly labelled "Quickfix List".
+Solution: Break out of both loops for finding window for location list
+ buffer. (Lech Lorens)
+Files: src/buffer.c, src/quickfix.c, src/screen.c
+
+
+*** ../vim-7.2.116/src/buffer.c Tue Jan 6 16:13:42 2009
+--- src/buffer.c Tue Feb 17 04:00:51 2009
+***************
+*** 5098,5104 ****
+ */
+ FOR_ALL_TAB_WINDOWS(tp, win)
+ if (win->w_buffer == buf)
+! break;
+ if (win != NULL && win->w_llist_ref != NULL)
+ return _("[Location List]");
+ else
+--- 5098,5105 ----
+ */
+ FOR_ALL_TAB_WINDOWS(tp, win)
+ if (win->w_buffer == buf)
+! goto win_found;
+! win_found:
+ if (win != NULL && win->w_llist_ref != NULL)
+ return _("[Location List]");
+ else
+*** ../vim-7.2.116/src/quickfix.c Sat Nov 15 14:10:23 2008
+--- src/quickfix.c Sat Feb 21 22:54:25 2009
+***************
+*** 1610,1619 ****
+ {
+ goto_tabpage_win(tp, wp);
+ usable_win = 1;
+! break;
+ }
+ }
+ }
+
+ /*
+ * If there is only one window and it is the quickfix window, create a
+--- 1612,1622 ----
+ {
+ goto_tabpage_win(tp, wp);
+ usable_win = 1;
+! goto win_found;
+ }
+ }
+ }
++ win_found:
+
+ /*
+ * If there is only one window and it is the quickfix window, create a
+*** ../vim-7.2.116/src/screen.c Sat Feb 21 21:22:44 2009
+--- src/screen.c Sat Feb 21 21:04:19 2009
+***************
+*** 7452,7461 ****
+ {
+ outofmem = TRUE;
+ #ifdef FEAT_WINDOWS
+! break;
+ #endif
+ }
+ }
+
+ #ifdef FEAT_MBYTE
+ for (i = 0; i < p_mco; ++i)
+--- 7452,7464 ----
+ {
+ outofmem = TRUE;
+ #ifdef FEAT_WINDOWS
+! goto give_up;
+ #endif
+ }
+ }
++ #ifdef FEAT_WINDOWS
++ give_up:
++ #endif
+
+ #ifdef FEAT_MBYTE
+ for (i = 0; i < p_mco; ++i)
+*** ../vim-7.2.116/src/version.c Sat Feb 21 22:57:10 2009
+--- src/version.c Sat Feb 21 23:58:24 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 117,
+ /**/
+
+--
+Laughing helps. It's like jogging on the inside.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vi/vim-7.2/7.2.118 b/vi/vim-7.2/7.2.118
new file mode 100644
index 0000000..73b6cbb
--- /dev/null
+++ b/vi/vim-7.2/7.2.118
@@ -0,0 +1,78 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.118
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.118
+Problem: <PageUp> at the more prompt only does half a page.
+Solution: Make <PageUp> go up a whole page. Also make 'f' go a page
+ forward, but not quit the more prompt. (Markus Heidelberg)
+Files: src/message.c
+
+
+*** ../vim-7.2.117/src/message.c Wed Feb 11 18:46:48 2009
+--- src/message.c Fri Feb 20 05:20:15 2009
+***************
+*** 976,982 ****
+ }
+ }
+ else if (msg_scrolled > Rows - 2
+! && (c == 'j' || c == K_DOWN || c == 'd'))
+ c = K_IGNORE;
+ }
+ } while ((had_got_int && c == Ctrl_C)
+--- 976,982 ----
+ }
+ }
+ else if (msg_scrolled > Rows - 2
+! && (c == 'j' || c == K_DOWN || c == 'd' || c == 'f'))
+ c = K_IGNORE;
+ }
+ } while ((had_got_int && c == Ctrl_C)
+***************
+*** 2504,2510 ****
+ break;
+
+ case 'u': /* Up half a page */
+- case K_PAGEUP:
+ scroll = -(Rows / 2);
+ break;
+
+--- 2504,2509 ----
+***************
+*** 2513,2522 ****
+--- 2512,2523 ----
+ break;
+
+ case 'b': /* one page back */
++ case K_PAGEUP:
+ scroll = -(Rows - 1);
+ break;
+
+ case ' ': /* one extra page */
++ case 'f':
+ case K_PAGEDOWN:
+ case K_LEFTMOUSE:
+ scroll = Rows - 1;
+*** ../vim-7.2.117/src/version.c Sun Feb 22 00:01:42 2009
+--- src/version.c Sun Feb 22 00:57:16 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 118,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+109. You actually read -- and enjoy -- lists like this.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vi/vim-7.2/7.2.119 b/vi/vim-7.2/7.2.119
new file mode 100644
index 0000000..f31f2e6
--- /dev/null
+++ b/vi/vim-7.2/7.2.119
@@ -0,0 +1,51 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.119
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.119
+Problem: Status line is redrawn too often.
+Solution: Check ScreeenLinesUC[] properly. (Yukihiro Nakadaira)
+Files: src/screen.c
+
+
+*** ../vim-7.2.118/src/screen.c Sun Feb 22 00:01:42 2009
+--- src/screen.c Sun Feb 22 01:07:38 2009
+***************
+*** 6362,6368 ****
+ && c == 0x8e
+ && ScreenLines2[off] != ptr[1])
+ || (enc_utf8
+! && (ScreenLinesUC[off] != (u8char_T)u8c
+ || screen_comp_differs(off, u8cc)))
+ #endif
+ || ScreenAttrs[off] != attr
+--- 6362,6368 ----
+ && c == 0x8e
+ && ScreenLines2[off] != ptr[1])
+ || (enc_utf8
+! && (ScreenLinesUC[off] != (u8char_T)(c >= 0x80 ? u8c : 0)
+ || screen_comp_differs(off, u8cc)))
+ #endif
+ || ScreenAttrs[off] != attr
+*** ../vim-7.2.118/src/version.c Sun Feb 22 00:58:03 2009
+--- src/version.c Sun Feb 22 01:09:54 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 119,
+ /**/
+
+--
+In a world without walls and borders, who needs windows and gates?
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vi/vim-7.2/7.2.120 b/vi/vim-7.2/7.2.120
new file mode 100644
index 0000000..cf687f3
--- /dev/null
+++ b/vi/vim-7.2/7.2.120
@@ -0,0 +1,277 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.120
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.120
+Problem: When opening the quickfix window or splitting the window and
+ setting the location list, the location list is copied and then
+ deleted, which is inefficient.
+Solution: Don't copy the location list when not needed. (Lech Lorens)
+Files: src/quickfix.c, src/vim.h, src/window.c
+
+
+*** ../vim-7.2.119/src/quickfix.c Sun Feb 22 00:01:42 2009
+--- src/quickfix.c Sat Feb 21 22:54:25 2009
+***************
+*** 1419,1424 ****
+--- 1419,1425 ----
+ int opened_window = FALSE;
+ win_T *win;
+ win_T *altwin;
++ int flags;
+ #endif
+ win_T *oldwin = curwin;
+ int print_message = TRUE;
+***************
+*** 1531,1537 ****
+ if (qf_ptr->qf_type == 1 && (!curwin->w_buffer->b_help || cmdmod.tab != 0))
+ {
+ win_T *wp;
+- int n;
+
+ if (cmdmod.tab != 0)
+ wp = NULL;
+--- 1532,1537 ----
+***************
+*** 1547,1559 ****
+ * Split off help window; put it at far top if no position
+ * specified, the current window is vertically split and narrow.
+ */
+! n = WSP_HELP;
+ # ifdef FEAT_VERTSPLIT
+ if (cmdmod.split == 0 && curwin->w_width != Columns
+ && curwin->w_width < 80)
+! n |= WSP_TOP;
+ # endif
+! if (win_split(0, n) == FAIL)
+ goto theend;
+ opened_window = TRUE; /* close it when fail */
+
+--- 1547,1562 ----
+ * Split off help window; put it at far top if no position
+ * specified, the current window is vertically split and narrow.
+ */
+! flags = WSP_HELP;
+ # ifdef FEAT_VERTSPLIT
+ if (cmdmod.split == 0 && curwin->w_width != Columns
+ && curwin->w_width < 80)
+! flags |= WSP_TOP;
+ # endif
+! if (qi != &ql_info)
+! flags |= WSP_NEWLOC; /* don't copy the location list */
+!
+! if (win_split(0, flags) == FAIL)
+ goto theend;
+ opened_window = TRUE; /* close it when fail */
+
+***************
+*** 1563,1569 ****
+ if (qi != &ql_info) /* not a quickfix list */
+ {
+ /* The new window should use the supplied location list */
+- qf_free_all(curwin);
+ curwin->w_llist = qi;
+ qi->qf_refcount++;
+ }
+--- 1566,1571 ----
+***************
+*** 1624,1630 ****
+ {
+ ll_ref = curwin->w_llist_ref;
+
+! if (win_split(0, WSP_ABOVE) == FAIL)
+ goto failed; /* not enough room for window */
+ opened_window = TRUE; /* close it when fail */
+ p_swb = empty_option; /* don't split again */
+--- 1626,1635 ----
+ {
+ ll_ref = curwin->w_llist_ref;
+
+! flags = WSP_ABOVE;
+! if (ll_ref != NULL)
+! flags |= WSP_NEWLOC;
+! if (win_split(0, flags) == FAIL)
+ goto failed; /* not enough room for window */
+ opened_window = TRUE; /* close it when fail */
+ p_swb = empty_option; /* don't split again */
+***************
+*** 1636,1642 ****
+ {
+ /* The new window should use the location list from the
+ * location list window */
+- qf_free_all(curwin);
+ curwin->w_llist = ll_ref;
+ ll_ref->qf_refcount++;
+ }
+--- 1641,1646 ----
+***************
+*** 2311,2325 ****
+ if (eap->cmdidx == CMD_copen || eap->cmdidx == CMD_cwindow)
+ /* Create the new window at the very bottom. */
+ win_goto(lastwin);
+! if (win_split(height, WSP_BELOW) == FAIL)
+ return; /* not enough room for window */
+ #ifdef FEAT_SCROLLBIND
+ curwin->w_p_scb = FALSE;
+ #endif
+
+- /* Remove the location list for the quickfix window */
+- qf_free_all(curwin);
+-
+ if (eap->cmdidx == CMD_lopen || eap->cmdidx == CMD_lwindow)
+ {
+ /*
+--- 2315,2326 ----
+ if (eap->cmdidx == CMD_copen || eap->cmdidx == CMD_cwindow)
+ /* Create the new window at the very bottom. */
+ win_goto(lastwin);
+! if (win_split(height, WSP_BELOW | WSP_NEWLOC) == FAIL)
+ return; /* not enough room for window */
+ #ifdef FEAT_SCROLLBIND
+ curwin->w_p_scb = FALSE;
+ #endif
+
+ if (eap->cmdidx == CMD_lopen || eap->cmdidx == CMD_lwindow)
+ {
+ /*
+*** ../vim-7.2.119/src/vim.h Thu Nov 20 14:11:47 2008
+--- src/vim.h Sat Feb 21 22:53:03 2009
+***************
+*** 1057,1062 ****
+--- 1057,1063 ----
+ #define WSP_HELP 16 /* creating the help window */
+ #define WSP_BELOW 32 /* put new window below/right */
+ #define WSP_ABOVE 64 /* put new window above/left */
++ #define WSP_NEWLOC 128 /* don't copy location list */
+
+ /*
+ * arguments for gui_set_shellsize()
+*** ../vim-7.2.119/src/window.c Sat Feb 21 20:27:00 2009
+--- src/window.c Sat Feb 21 23:56:41 2009
+***************
+*** 12,18 ****
+ static int path_is_url __ARGS((char_u *p));
+ #if defined(FEAT_WINDOWS) || defined(PROTO)
+ static int win_split_ins __ARGS((int size, int flags, win_T *newwin, int dir));
+! static void win_init __ARGS((win_T *newp, win_T *oldp));
+ static void frame_comp_pos __ARGS((frame_T *topfrp, int *row, int *col));
+ static void frame_setheight __ARGS((frame_T *curfrp, int height));
+ #ifdef FEAT_VERTSPLIT
+--- 12,18 ----
+ static int path_is_url __ARGS((char_u *p));
+ #if defined(FEAT_WINDOWS) || defined(PROTO)
+ static int win_split_ins __ARGS((int size, int flags, win_T *newwin, int dir));
+! static void win_init __ARGS((win_T *newp, win_T *oldp, int flags));
+ static void frame_comp_pos __ARGS((frame_T *topfrp, int *row, int *col));
+ static void frame_setheight __ARGS((frame_T *curfrp, int height));
+ #ifdef FEAT_VERTSPLIT
+***************
+*** 911,917 ****
+ return FAIL;
+
+ /* make the contents of the new window the same as the current one */
+! win_init(wp, curwin);
+ }
+
+ /*
+--- 911,917 ----
+ return FAIL;
+
+ /* make the contents of the new window the same as the current one */
+! win_init(wp, curwin, flags);
+ }
+
+ /*
+***************
+*** 1160,1170 ****
+ * Initialize window "newp" from window "oldp".
+ * Used when splitting a window and when creating a new tab page.
+ * The windows will both edit the same buffer.
+ */
+ static void
+! win_init(newp, oldp)
+ win_T *newp;
+ win_T *oldp;
+ {
+ int i;
+
+--- 1160,1174 ----
+ * Initialize window "newp" from window "oldp".
+ * Used when splitting a window and when creating a new tab page.
+ * The windows will both edit the same buffer.
++ * WSP_NEWLOC may be specified in flags to prevent the location list from
++ * being copied.
+ */
++ /*ARGSUSED*/
+ static void
+! win_init(newp, oldp, flags)
+ win_T *newp;
+ win_T *oldp;
++ int flags;
+ {
+ int i;
+
+***************
+*** 1189,1195 ****
+ copy_jumplist(oldp, newp);
+ #endif
+ #ifdef FEAT_QUICKFIX
+! copy_loclist(oldp, newp);
+ #endif
+ if (oldp->w_localdir != NULL)
+ newp->w_localdir = vim_strsave(oldp->w_localdir);
+--- 1193,1206 ----
+ copy_jumplist(oldp, newp);
+ #endif
+ #ifdef FEAT_QUICKFIX
+! if (flags & WSP_NEWLOC)
+! {
+! /* Don't copy the location list. */
+! newp->w_llist = NULL;
+! newp->w_llist_ref = NULL;
+! }
+! else
+! copy_loclist(oldp, newp);
+ #endif
+ if (oldp->w_localdir != NULL)
+ newp->w_localdir = vim_strsave(oldp->w_localdir);
+***************
+*** 3219,3225 ****
+ else
+ {
+ /* First window in new tab page, initialize it from "oldwin". */
+! win_init(curwin, oldwin);
+
+ # ifdef FEAT_SCROLLBIND
+ /* We don't want scroll-binding in the first window. */
+--- 3230,3236 ----
+ else
+ {
+ /* First window in new tab page, initialize it from "oldwin". */
+! win_init(curwin, oldwin, 0);
+
+ # ifdef FEAT_SCROLLBIND
+ /* We don't want scroll-binding in the first window. */
+*** ../vim-7.2.119/src/version.c Sun Feb 22 01:13:45 2009
+--- src/version.c Sun Feb 22 02:32:14 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 120,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+110. You actually volunteer to become your employer's webmaster.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vi/vim-7.2/7.2.121 b/vi/vim-7.2/7.2.121
new file mode 100644
index 0000000..ea5306f
--- /dev/null
+++ b/vi/vim-7.2/7.2.121
@@ -0,0 +1,180 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.121
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.121
+Problem: In gvim "!grep a *.c" spews out a lot of text that can't be
+ stopped with CTRL-C.
+Solution: When looping to read and show text, do check for typed characters
+ every two seconds.
+Files: src/os_unix.c
+
+
+*** ../vim-7.2.120/src/os_unix.c Wed Feb 4 14:18:44 2009
+--- src/os_unix.c Sun Feb 22 00:54:05 2009
+***************
+*** 4092,4097 ****
+--- 4092,4100 ----
+ int fromshell_fd;
+ garray_T ga;
+ int noread_cnt;
++ # if defined(HAVE_GETTIMEOFDAY) && defined(HAVE_SYS_TIME_H)
++ struct timeval start_tv;
++ # endif
+
+ # ifdef FEAT_GUI
+ if (pty_master_fd >= 0)
+***************
+*** 4201,4207 ****
+ ga_init2(&ga, 1, BUFLEN);
+
+ noread_cnt = 0;
+!
+ for (;;)
+ {
+ /*
+--- 4204,4212 ----
+ ga_init2(&ga, 1, BUFLEN);
+
+ noread_cnt = 0;
+! # if defined(HAVE_GETTIMEOFDAY) && defined(HAVE_SYS_TIME_H)
+! gettimeofday(&start_tv, NULL);
+! # endif
+ for (;;)
+ {
+ /*
+***************
+*** 4214,4238 ****
+ * that a typed password is echoed for ssh or gpg command.
+ * Don't get characters when the child has already
+ * finished (wait_pid == 0).
+- * Don't get extra characters when we already have one.
+ * Don't read characters unless we didn't get output for a
+! * while, avoids that ":r !ls" eats typeahead.
+ */
+ len = 0;
+ if (!(options & SHELL_EXPAND)
+ && ((options &
+ (SHELL_READ|SHELL_WRITE|SHELL_COOKED))
+ != (SHELL_READ|SHELL_WRITE|SHELL_COOKED)
+! #ifdef FEAT_GUI
+ || gui.in_use
+! #endif
+ )
+ && wait_pid == 0
+! && (ta_len > 0
+! || (noread_cnt > 4
+! && (len = ui_inchar(ta_buf,
+! BUFLEN, 10L, 0)) > 0)))
+ {
+ /*
+ * For pipes:
+ * Check for CTRL-C: send interrupt signal to child.
+--- 4219,4252 ----
+ * that a typed password is echoed for ssh or gpg command.
+ * Don't get characters when the child has already
+ * finished (wait_pid == 0).
+ * Don't read characters unless we didn't get output for a
+! * while (noread_cnt > 4), avoids that ":r !ls" eats
+! * typeahead.
+ */
+ len = 0;
+ if (!(options & SHELL_EXPAND)
+ && ((options &
+ (SHELL_READ|SHELL_WRITE|SHELL_COOKED))
+ != (SHELL_READ|SHELL_WRITE|SHELL_COOKED)
+! # ifdef FEAT_GUI
+ || gui.in_use
+! # endif
+ )
+ && wait_pid == 0
+! && (ta_len > 0 || noread_cnt > 4))
+ {
++ if (ta_len == 0)
++ {
++ /* Get extra characters when we don't have any.
++ * Reset the counter and timer. */
++ noread_cnt = 0;
++ # if defined(HAVE_GETTIMEOFDAY) && defined(HAVE_SYS_TIME_H)
++ gettimeofday(&start_tv, NULL);
++ # endif
++ len = ui_inchar(ta_buf, BUFLEN, 10L, 0);
++ }
++ if (ta_len > 0 || len > 0)
++ {
+ /*
+ * For pipes:
+ * Check for CTRL-C: send interrupt signal to child.
+***************
+*** 4334,4342 ****
+ {
+ ta_len -= len;
+ mch_memmove(ta_buf, ta_buf + len, ta_len);
+- noread_cnt = 0;
+ }
+ }
+ }
+
+ if (got_int)
+--- 4348,4356 ----
+ {
+ ta_len -= len;
+ mch_memmove(ta_buf, ta_buf + len, ta_len);
+ }
+ }
++ }
+ }
+
+ if (got_int)
+***************
+*** 4444,4449 ****
+--- 4458,4482 ----
+ out_flush();
+ if (got_int)
+ break;
++
++ # if defined(HAVE_GETTIMEOFDAY) && defined(HAVE_SYS_TIME_H)
++ {
++ struct timeval now_tv;
++ long msec;
++
++ /* Avoid that we keep looping here without
++ * checking for a CTRL-C for a long time. Don't
++ * break out too often to avoid losing typeahead. */
++ gettimeofday(&now_tv, NULL);
++ msec = (now_tv.tv_sec - start_tv.tv_sec) * 1000L
++ + (now_tv.tv_usec - start_tv.tv_usec) / 1000L;
++ if (msec > 2000)
++ {
++ noread_cnt = 5;
++ break;
++ }
++ }
++ # endif
+ }
+
+ /* If we already detected the child has finished break the
+*** ../vim-7.2.120/src/version.c Sun Feb 22 02:36:36 2009
+--- src/version.c Sun Feb 22 02:48:03 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 121,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+111. You and your friends get together regularly on IRC, even though
+ all of you live in the same city.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vi/vim-7.2/7.2.122 b/vi/vim-7.2/7.2.122
new file mode 100644
index 0000000..18f6989
--- /dev/null
+++ b/vi/vim-7.2/7.2.122
@@ -0,0 +1,80 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.122
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.122
+Problem: Invalid memory access when the VimResized autocommand changes
+ 'columns' and/or 'lines'.
+Solution: After VimResized check for changed values. (Dominique Pelle)
+Files: src/screen.c
+
+
+*** ../vim-7.2.121/src/screen.c Sun Feb 22 01:13:45 2009
+--- src/screen.c Sun Feb 22 01:07:38 2009
+***************
+*** 7368,7374 ****
+--- 7368,7378 ----
+ #endif
+ static int entered = FALSE; /* avoid recursiveness */
+ static int done_outofmem_msg = FALSE; /* did outofmem message */
++ #ifdef FEAT_AUTOCMD
++ int retry_count = 0;
+
++ retry:
++ #endif
+ /*
+ * Allocation of the screen buffers is done only when the size changes and
+ * when Rows and Columns have been set and we have started doing full
+***************
+*** 7643,7650 ****
+ --RedrawingDisabled;
+
+ #ifdef FEAT_AUTOCMD
+! if (starting == 0)
+ apply_autocmds(EVENT_VIMRESIZED, NULL, NULL, FALSE, curbuf);
+ #endif
+ }
+
+--- 7647,7663 ----
+ --RedrawingDisabled;
+
+ #ifdef FEAT_AUTOCMD
+! /*
+! * Do not apply autocommands more than 3 times to avoid an endless loop
+! * in case applying autocommands always changes Rows or Columns.
+! */
+! if (starting == 0 && ++retry_count <= 3)
+! {
+ apply_autocmds(EVENT_VIMRESIZED, NULL, NULL, FALSE, curbuf);
++ /* In rare cases, autocommands may have altered Rows or Columns,
++ * jump back to check if we need to allocate the screen again. */
++ goto retry;
++ }
+ #endif
+ }
+
+*** ../vim-7.2.121/src/version.c Sun Feb 22 02:51:37 2009
+--- src/version.c Sun Feb 22 21:11:14 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 122,
+ /**/
+
+--
+FIXME and XXX are two common keywords used to mark broken or incomplete code
+not only since XXX as a sex reference would grab everbodys attention but
+simply due to the fact that Vim would highlight these words.
+ -- Hendrik Scholz
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vi/vim-7.2/7.2.123 b/vi/vim-7.2/7.2.123
new file mode 100644
index 0000000..4cf9b81
--- /dev/null
+++ b/vi/vim-7.2/7.2.123
@@ -0,0 +1,50 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.123
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.123
+Problem: Typing 'q' at more prompt for ":map" output still displays another
+ line, causing another more prompt. (Markus Heidelberg)
+Solution: Quit listing maps when 'q' typed.
+Files: src/getchar.c
+
+
+*** ../vim-7.2.122/src/getchar.c Fri Nov 28 12:05:07 2008
+--- src/getchar.c Sun Feb 22 23:10:45 2009
+***************
+*** 3816,3822 ****
+--- 3816,3826 ----
+ int len = 1;
+
+ if (msg_didout || msg_silent != 0)
++ {
+ msg_putchar('\n');
++ if (got_int) /* 'q' typed at MORE prompt */
++ return;
++ }
+ if ((mp->m_mode & (INSERT + CMDLINE)) == INSERT + CMDLINE)
+ msg_putchar('!'); /* :map! */
+ else if (mp->m_mode & INSERT)
+*** ../vim-7.2.122/src/version.c Sun Feb 22 21:12:22 2009
+--- src/version.c Sun Feb 22 23:16:29 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 123,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+120. You ask a friend, "What's that big shiny thing?" He says, "It's the sun."
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vi/vim-7.2/7.2.124 b/vi/vim-7.2/7.2.124
new file mode 100644
index 0000000..eca6bec
--- /dev/null
+++ b/vi/vim-7.2/7.2.124
@@ -0,0 +1,122 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.124
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.124
+Problem: Typing 'q' at more prompt for ":tselect" output still displays
+ more lines, causing another more prompt. (Markus Heidelberg)
+Solution: Quit listing tags when 'q' typed.
+Files: src/tag.c
+
+
+*** ../vim-7.2.123/src/tag.c Sat Feb 21 22:57:10 2009
+--- src/tag.c Mon Feb 23 00:07:24 2009
+***************
+*** 618,624 ****
+ taglen_advance(taglen);
+ MSG_PUTS_ATTR(_("file\n"), hl_attr(HLF_T));
+
+! for (i = 0; i < num_matches; ++i)
+ {
+ parse_match(matches[i], &tagp);
+ if (!new_tag && (
+--- 618,624 ----
+ taglen_advance(taglen);
+ MSG_PUTS_ATTR(_("file\n"), hl_attr(HLF_T));
+
+! for (i = 0; i < num_matches && !got_int; ++i)
+ {
+ parse_match(matches[i], &tagp);
+ if (!new_tag && (
+***************
+*** 655,660 ****
+--- 655,662 ----
+ }
+ if (msg_col > 0)
+ msg_putchar('\n');
++ if (got_int)
++ break;
+ msg_advance(15);
+
+ /* print any extra fields */
+***************
+*** 689,694 ****
+--- 691,698 ----
+ if (msg_col + ptr2cells(p) >= Columns)
+ {
+ msg_putchar('\n');
++ if (got_int)
++ break;
+ msg_advance(15);
+ }
+ p = msg_outtrans_one(p, attr);
+***************
+*** 704,709 ****
+--- 708,715 ----
+ if (msg_col > 15)
+ {
+ msg_putchar('\n');
++ if (got_int)
++ break;
+ msg_advance(15);
+ }
+ }
+***************
+*** 734,739 ****
+--- 740,747 ----
+ {
+ if (msg_col + (*p == TAB ? 1 : ptr2cells(p)) > Columns)
+ msg_putchar('\n');
++ if (got_int)
++ break;
+ msg_advance(15);
+
+ /* skip backslash used for escaping command char */
+***************
+*** 760,771 ****
+ if (msg_col)
+ msg_putchar('\n');
+ ui_breakcheck();
+- if (got_int)
+- {
+- got_int = FALSE; /* only stop the listing */
+- break;
+- }
+ }
+ ask_for_selection = TRUE;
+ }
+ #if defined(FEAT_QUICKFIX) && defined(FEAT_EVAL)
+--- 768,776 ----
+ if (msg_col)
+ msg_putchar('\n');
+ ui_breakcheck();
+ }
++ if (got_int)
++ got_int = FALSE; /* only stop the listing */
+ ask_for_selection = TRUE;
+ }
+ #if defined(FEAT_QUICKFIX) && defined(FEAT_EVAL)
+*** ../vim-7.2.123/src/version.c Sun Feb 22 23:42:08 2009
+--- src/version.c Mon Feb 23 00:51:57 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 124,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+123. You ask the car dealer to install an extra cigarette lighter
+ on your new car to power your notebook.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vi/vim-7.2/7.2.125 b/vi/vim-7.2/7.2.125
new file mode 100644
index 0000000..460bdea
--- /dev/null
+++ b/vi/vim-7.2/7.2.125
@@ -0,0 +1,161 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.125
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.125
+Problem: Leaking memory when reading XPM bitmap for a sign.
+Solution: Don't allocate the memory twice. (Dominique Pelle)
+Files: src/gui_x11.c
+
+
+*** ../vim-7.2.124/src/gui_x11.c Wed Nov 12 13:07:48 2008
+--- src/gui_x11.c Sun Feb 22 21:58:19 2009
+***************
+*** 1587,1592 ****
+--- 1587,1594 ----
+ XtCloseDisplay(gui.dpy);
+ gui.dpy = NULL;
+ vimShell = (Widget)0;
++ vim_free(gui_argv);
++ gui_argv = NULL;
+ }
+
+ /*
+***************
+*** 1761,1766 ****
+--- 1763,1770 ----
+ * says that this isn't needed when exiting, so just skip it. */
+ XtCloseDisplay(gui.dpy);
+ #endif
++ vim_free(gui_argv);
++ gui_argv = NULL;
+ }
+
+ /*
+***************
+*** 3439,3485 ****
+ char_u *signfile;
+ {
+ XpmAttributes attrs;
+! XImage *sign;
+ int status;
+
+ /*
+ * Setup the color substitution table.
+ */
+- sign = NULL;
+ if (signfile[0] != NUL && signfile[0] != '-')
+ {
+! sign = (XImage *)alloc(sizeof(XImage));
+! if (sign != NULL)
+ {
+! XpmColorSymbol color[5] =
+! {
+! {"none", NULL, 0},
+! {"iconColor1", NULL, 0},
+! {"bottomShadowColor", NULL, 0},
+! {"topShadowColor", NULL, 0},
+! {"selectColor", NULL, 0}
+! };
+! attrs.valuemask = XpmColorSymbols;
+! attrs.numsymbols = 2;
+! attrs.colorsymbols = color;
+! attrs.colorsymbols[0].pixel = gui.back_pixel;
+! attrs.colorsymbols[1].pixel = gui.norm_pixel;
+! status = XpmReadFileToImage(gui.dpy, (char *)signfile,
+ &sign, NULL, &attrs);
+!
+! if (status == 0)
+! {
+! /* Sign width is fixed at two columns now.
+! if (sign->width > gui.sign_width)
+! gui.sign_width = sign->width + 8; */
+! }
+! else
+! {
+! vim_free(sign);
+! sign = NULL;
+! EMSG(_(e_signdata));
+! }
+ }
+ }
+
+ return (void *)sign;
+--- 3443,3479 ----
+ char_u *signfile;
+ {
+ XpmAttributes attrs;
+! XImage *sign = NULL;
+ int status;
+
+ /*
+ * Setup the color substitution table.
+ */
+ if (signfile[0] != NUL && signfile[0] != '-')
+ {
+! XpmColorSymbol color[5] =
+ {
+! {"none", NULL, 0},
+! {"iconColor1", NULL, 0},
+! {"bottomShadowColor", NULL, 0},
+! {"topShadowColor", NULL, 0},
+! {"selectColor", NULL, 0}
+! };
+! attrs.valuemask = XpmColorSymbols;
+! attrs.numsymbols = 2;
+! attrs.colorsymbols = color;
+! attrs.colorsymbols[0].pixel = gui.back_pixel;
+! attrs.colorsymbols[1].pixel = gui.norm_pixel;
+! status = XpmReadFileToImage(gui.dpy, (char *)signfile,
+ &sign, NULL, &attrs);
+! if (status == 0)
+! {
+! /* Sign width is fixed at two columns now.
+! if (sign->width > gui.sign_width)
+! gui.sign_width = sign->width + 8; */
+ }
++ else
++ EMSG(_(e_signdata));
+ }
+
+ return (void *)sign;
+***************
+*** 3489,3496 ****
+ gui_mch_destroy_sign(sign)
+ void *sign;
+ {
+! XFree(((XImage *)sign)->data);
+! vim_free(sign);
+ }
+ #endif
+
+--- 3483,3489 ----
+ gui_mch_destroy_sign(sign)
+ void *sign;
+ {
+! XDestroyImage((XImage*)sign);
+ }
+ #endif
+
+*** ../vim-7.2.124/src/version.c Mon Feb 23 00:53:35 2009
+--- src/version.c Tue Feb 24 04:09:33 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 125,
+ /**/
+
+--
+I have a watch cat! Just break in and she'll watch.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vi/vim-7.2/7.2.126 b/vi/vim-7.2/7.2.126
new file mode 100644
index 0000000..fe2dd65
--- /dev/null
+++ b/vi/vim-7.2/7.2.126
@@ -0,0 +1,174 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.126
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.126
+Problem: When EXITFREE is defined signs are not freed.
+Solution: Free all signs on exit. Also free keymaps. (Dominique Pelle)
+Files: src/misc2.c, src/ex_cmds.c, src/proto/ex_cmds.pro
+
+
+*** ../vim-7.2.125/src/misc2.c Thu Jan 22 21:31:24 2009
+--- src/misc2.c Sun Feb 22 22:04:53 2009
+***************
+*** 1010,1015 ****
+--- 1010,1018 ----
+ # if defined(FEAT_PROFILE)
+ do_cmdline_cmd((char_u *)"profdel *");
+ # endif
++ # if defined(FEAT_KEYMAP)
++ do_cmdline_cmd((char_u *)"set keymap=");
++ #endif
+
+ # ifdef FEAT_TITLE
+ free_titles();
+***************
+*** 1034,1039 ****
+--- 1037,1045 ----
+ free_regexp_stuff();
+ free_tag_stuff();
+ free_cd_dir();
++ # ifdef FEAT_SIGNS
++ free_signs();
++ # endif
+ # ifdef FEAT_EVAL
+ set_expr_line(NULL);
+ # endif
+*** ../vim-7.2.125/src/ex_cmds.c Wed Feb 11 16:02:29 2009
+--- src/ex_cmds.c Sun Feb 22 22:07:08 2009
+***************
+*** 6541,6546 ****
+--- 6541,6547 ----
+ static int last_sign_typenr = MAX_TYPENR; /* is decremented */
+
+ static void sign_list_defined __ARGS((sign_T *sp));
++ static void sign_undefine __ARGS((sign_T *sp, sign_T *sp_prev));
+
+ /*
+ * ":sign" command
+***************
+*** 6749,6772 ****
+ /* ":sign list {name}" */
+ sign_list_defined(sp);
+ else
+- {
+ /* ":sign undefine {name}" */
+! vim_free(sp->sn_name);
+! vim_free(sp->sn_icon);
+! #ifdef FEAT_SIGN_ICONS
+! if (sp->sn_image != NULL)
+! {
+! out_flush();
+! gui_mch_destroy_sign(sp->sn_image);
+! }
+! #endif
+! vim_free(sp->sn_text);
+! if (sp_prev == NULL)
+! first_sign = sp->sn_next;
+! else
+! sp_prev->sn_next = sp->sn_next;
+! vim_free(sp);
+! }
+ }
+ }
+ else
+--- 6750,6757 ----
+ /* ":sign list {name}" */
+ sign_list_defined(sp);
+ else
+ /* ":sign undefine {name}" */
+! sign_undefine(sp, sp_prev);
+ }
+ }
+ else
+***************
+*** 7015,7020 ****
+--- 7000,7030 ----
+ }
+
+ /*
++ * Undefine a sign and free its memory.
++ */
++ static void
++ sign_undefine(sp, sp_prev)
++ sign_T *sp;
++ sign_T *sp_prev;
++ {
++ vim_free(sp->sn_name);
++ vim_free(sp->sn_icon);
++ #ifdef FEAT_SIGN_ICONS
++ if (sp->sn_image != NULL)
++ {
++ out_flush();
++ gui_mch_destroy_sign(sp->sn_image);
++ }
++ #endif
++ vim_free(sp->sn_text);
++ if (sp_prev == NULL)
++ first_sign = sp->sn_next;
++ else
++ sp_prev->sn_next = sp->sn_next;
++ vim_free(sp);
++ }
++
++ /*
+ * Get highlighting attribute for sign "typenr".
+ * If "line" is TRUE: line highl, if FALSE: text highl.
+ */
+***************
+*** 7088,7093 ****
+--- 7098,7115 ----
+ return (char_u *)_("[Deleted]");
+ }
+
++ #if defined(EXITFREE) || defined(PROTO)
++ /*
++ * Undefine/free all signs.
++ */
++ void
++ free_signs()
++ {
++ while (first_sign != NULL)
++ sign_undefine(first_sign, NULL);
++ }
++ #endif
++
+ #endif
+
+ #if defined(FEAT_GUI) || defined(FEAT_CLIENTSERVER) || defined(PROTO)
+*** ../vim-7.2.125/src/proto/ex_cmds.pro Sat Nov 15 14:10:23 2008
+--- src/proto/ex_cmds.pro Sun Feb 22 22:04:53 2009
+***************
+*** 40,45 ****
+--- 40,46 ----
+ int read_viminfo_sub_string __ARGS((vir_T *virp, int force));
+ void write_viminfo_sub_string __ARGS((FILE *fp));
+ void free_old_sub __ARGS((void));
++ void free_signs __ARGS((void));
+ int prepare_tagpreview __ARGS((int undo_sync));
+ void ex_help __ARGS((exarg_T *eap));
+ char_u *check_help_lang __ARGS((char_u *arg));
+*** ../vim-7.2.125/src/version.c Tue Feb 24 04:11:07 2009
+--- src/version.c Tue Feb 24 04:24:46 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 126,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+125. You begin to wonder how often it REALLY is necessary to get up
+ and shower or bathe.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vi/vim-7.2/7.2.127 b/vi/vim-7.2/7.2.127
new file mode 100644
index 0000000..662fe0f
--- /dev/null
+++ b/vi/vim-7.2/7.2.127
@@ -0,0 +1,59 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.127
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.127
+Problem: When listing mappings and a wrapping line causes the more prompt,
+ after typing 'q' there can be another more prompt. (Markus
+ Heidelberg)
+Solution: Set "lines_left" to allow more lines to be displayed.
+Files: src/message.c
+
+
+*** ../vim-7.2.126/src/message.c Sun Feb 22 00:58:03 2009
+--- src/message.c Mon Feb 23 04:17:39 2009
+***************
+*** 2553,2559 ****
+ {
+ /* Jump to the choices of the dialog. */
+ retval = TRUE;
+- lines_left = Rows - 1;
+ }
+ else
+ #endif
+--- 2553,2558 ----
+***************
+*** 2561,2566 ****
+--- 2560,2568 ----
+ got_int = TRUE;
+ quit_more = TRUE;
+ }
++ /* When there is some more output (wrapping line) display that
++ * without another prompt. */
++ lines_left = Rows - 1;
+ break;
+
+ #ifdef FEAT_CLIPBOARD
+*** ../vim-7.2.126/src/version.c Tue Feb 24 04:28:40 2009
+--- src/version.c Tue Feb 24 04:35:38 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 127,
+ /**/
+
+--
+The difference between theory and practice, is that in theory, there
+is no difference between theory and practice.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vi/vim-7.2/7.2.128 b/vi/vim-7.2/7.2.128
new file mode 100644
index 0000000..0c17f18
--- /dev/null
+++ b/vi/vim-7.2/7.2.128
@@ -0,0 +1,52 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.128
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.128 (after 7.2.055)
+Problem: Using ":lcd" makes session files not work.
+Solution: Compare return value of mch_chdir() properly. (Andreas Bernauer)
+Files: src/ex_docmd.c
+
+
+*** ../vim-7.2.127/src/ex_docmd.c Sat Feb 21 20:36:30 2009
+--- src/ex_docmd.c Sun Mar 1 02:39:38 2009
+***************
+*** 8792,8798 ****
+ else if (*dirnow != NUL
+ && (ssop_flags & SSOP_CURDIR) && globaldir != NULL)
+ {
+! if (mch_chdir((char *)globaldir) == OK)
+ shorten_fnames(TRUE);
+ }
+
+--- 8799,8805 ----
+ else if (*dirnow != NUL
+ && (ssop_flags & SSOP_CURDIR) && globaldir != NULL)
+ {
+! if (mch_chdir((char *)globaldir) == 0)
+ shorten_fnames(TRUE);
+ }
+
+*** ../vim-7.2.127/src/version.c Tue Feb 24 04:36:50 2009
+--- src/version.c Sun Mar 1 02:42:47 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 128,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+138. You develop a liking for cold coffee.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vi/vim-7.2/7.2.129 b/vi/vim-7.2/7.2.129
new file mode 100644
index 0000000..ca756cf
--- /dev/null
+++ b/vi/vim-7.2/7.2.129
@@ -0,0 +1,73 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.129
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.129
+Problem: When opening a command window from input() it uses the search
+ history.
+Solution: Use get_cmdline_type(). (James Vega)
+Files: src/ex_getln.c
+
+
+*** ../vim-7.2.128/src/ex_getln.c Fri Nov 28 10:59:57 2008
+--- src/ex_getln.c Mon Mar 2 00:53:39 2009
+***************
+*** 6047,6055 ****
+ # endif
+ return K_IGNORE;
+ }
+! cmdwin_type = ccline.cmdfirstc;
+! if (cmdwin_type == NUL)
+! cmdwin_type = '-';
+
+ /* Create the command-line buffer empty. */
+ (void)do_ecmd(0, NULL, NULL, NULL, ECMD_ONE, ECMD_HIDE, NULL);
+--- 6062,6068 ----
+ # endif
+ return K_IGNORE;
+ }
+! cmdwin_type = get_cmdline_type();
+
+ /* Create the command-line buffer empty. */
+ (void)do_ecmd(0, NULL, NULL, NULL, ECMD_ONE, ECMD_HIDE, NULL);
+***************
+*** 6073,6079 ****
+ /* Showing the prompt may have set need_wait_return, reset it. */
+ need_wait_return = FALSE;
+
+! histtype = hist_char2type(ccline.cmdfirstc);
+ if (histtype == HIST_CMD || histtype == HIST_DEBUG)
+ {
+ if (p_wc == TAB)
+--- 6086,6092 ----
+ /* Showing the prompt may have set need_wait_return, reset it. */
+ need_wait_return = FALSE;
+
+! histtype = hist_char2type(cmdwin_type);
+ if (histtype == HIST_CMD || histtype == HIST_DEBUG)
+ {
+ if (p_wc == TAB)
+*** ../vim-7.2.128/src/version.c Sun Mar 1 02:43:50 2009
+--- src/version.c Mon Mar 2 02:10:11 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 129,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+146. You experience ACTUAL physical withdrawal symptoms when away
+ from your 'puter and the net.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vi/vim-7.2/7.2.130 b/vi/vim-7.2/7.2.130
new file mode 100644
index 0000000..8d65468
--- /dev/null
+++ b/vi/vim-7.2/7.2.130
@@ -0,0 +1,413 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.130
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.130
+Problem: Vim may haing until CTRL-C is typed when using CTRL-Z.
+Solution: Avoid using pause(). Also use "volatile" for variables used in
+ signal functions. (Dominique Pelle)
+Files: src/auto/configure, src/configure.in, src/config.h.in,
+ src/globals.h, src/os_unix.c
+
+
+*** ../vim-7.2.129/src/auto/configure Thu Nov 20 10:36:04 2008
+--- src/auto/configure Mon Mar 2 02:36:52 2009
+***************
+*** 11565,11570 ****
+--- 11565,11631 ----
+
+ fi
+
++ { $as_echo "$as_me:$LINENO: checking for working volatile" >&5
++ $as_echo_n "checking for working volatile... " >&6; }
++ if test "${ac_cv_c_volatile+set}" = set; then
++ $as_echo_n "(cached) " >&6
++ else
++ cat >conftest.$ac_ext <<_ACEOF
++ /* confdefs.h. */
++ _ACEOF
++ cat confdefs.h >>conftest.$ac_ext
++ cat >>conftest.$ac_ext <<_ACEOF
++ /* end confdefs.h. */
++
++ int
++ main ()
++ {
++
++ volatile int x;
++ int * volatile y = (int *) 0;
++ return !x && !y;
++ ;
++ return 0;
++ }
++ _ACEOF
++ rm -f conftest.$ac_objext
++ if { (ac_try="$ac_compile"
++ case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++ esac
++ eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
++ $as_echo "$ac_try_echo") >&5
++ (eval "$ac_compile") 2>conftest.er1
++ ac_status=$?
++ grep -v '^ *+' conftest.er1 >conftest.err
++ rm -f conftest.er1
++ cat conftest.err >&5
++ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
++ ac_cv_c_volatile=yes
++ else
++ $as_echo "$as_me: failed program was:" >&5
++ sed 's/^/| /' conftest.$ac_ext >&5
++
++ ac_cv_c_volatile=no
++ fi
++
++ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++ fi
++ { $as_echo "$as_me:$LINENO: result: $ac_cv_c_volatile" >&5
++ $as_echo "$ac_cv_c_volatile" >&6; }
++ if test $ac_cv_c_volatile = no; then
++
++ cat >>confdefs.h <<\_ACEOF
++ #define volatile /**/
++ _ACEOF
++
++ fi
++
+ { $as_echo "$as_me:$LINENO: checking for mode_t" >&5
+ $as_echo_n "checking for mode_t... " >&6; }
+ if test "${ac_cv_type_mode_t+set}" = set; then
+*** ../vim-7.2.129/src/configure.in Thu Nov 20 10:36:04 2008
+--- src/configure.in Sun Feb 22 21:47:44 2009
+***************
+*** 2148,2153 ****
+--- 2148,2154 ----
+ dnl Checks for typedefs, structures, and compiler characteristics.
+ AC_PROG_GCC_TRADITIONAL
+ AC_C_CONST
++ AC_C_VOLATILE
+ AC_TYPE_MODE_T
+ AC_TYPE_OFF_T
+ AC_TYPE_PID_T
+*** ../vim-7.2.129/src/config.h.in Tue Jun 24 23:47:46 2008
+--- src/config.h.in Mon Feb 23 00:13:17 2009
+***************
+*** 50,55 ****
+--- 50,58 ----
+ /* Define to empty if the keyword does not work. */
+ #undef const
+
++ /* Define to empty if the keyword does not work. */
++ #undef volatile
++
+ /* Define to `int' if <sys/types.h> doesn't define. */
+ #undef mode_t
+
+*** ../vim-7.2.129/src/globals.h Tue Jan 6 16:13:42 2009
+--- src/globals.h Mon Mar 2 02:40:16 2009
+***************
+*** 482,489 ****
+ /*
+ * While executing external commands or in Ex mode, should not insert GUI
+ * events in the input buffer: Set hold_gui_events to non-zero.
+ */
+! EXTERN int hold_gui_events INIT(= 0);
+
+ /*
+ * When resizing the shell is postponed, remember the new size, and call
+--- 482,491 ----
+ /*
+ * While executing external commands or in Ex mode, should not insert GUI
+ * events in the input buffer: Set hold_gui_events to non-zero.
++ *
++ * volatile because it is used in signal handler sig_sysmouse().
+ */
+! EXTERN volatile int hold_gui_events INIT(= 0);
+
+ /*
+ * When resizing the shell is postponed, remember the new size, and call
+***************
+*** 597,603 ****
+ EXTERN int really_exiting INIT(= FALSE);
+ /* TRUE when we are sure to exit, e.g., after
+ * a deadly signal */
+! EXTERN int full_screen INIT(= FALSE);
+ /* TRUE when doing full-screen output
+ * otherwise only writing some messages */
+
+--- 599,606 ----
+ EXTERN int really_exiting INIT(= FALSE);
+ /* TRUE when we are sure to exit, e.g., after
+ * a deadly signal */
+! /* volatile because it is used in signal handler deathtrap(). */
+! EXTERN volatile int full_screen INIT(= FALSE);
+ /* TRUE when doing full-screen output
+ * otherwise only writing some messages */
+
+***************
+*** 739,748 ****
+ */
+ EXTERN JMP_BUF lc_jump_env; /* argument to SETJMP() */
+ # ifdef SIGHASARG
+! EXTERN int lc_signal; /* catched signal number, 0 when no was signal
+! catched; used for mch_libcall() */
+ # endif
+! EXTERN int lc_active INIT(= FALSE); /* TRUE when lc_jump_env is valid. */
+ #endif
+
+ #if defined(FEAT_MBYTE) || defined(FEAT_POSTSCRIPT)
+--- 747,758 ----
+ */
+ EXTERN JMP_BUF lc_jump_env; /* argument to SETJMP() */
+ # ifdef SIGHASARG
+! /* volatile because it is used in signal handlers. */
+! EXTERN volatile int lc_signal; /* caught signal number, 0 when no was signal
+! caught; used for mch_libcall() */
+ # endif
+! /* volatile because it is used in signal handler deathtrap(). */
+! EXTERN volatile int lc_active INIT(= FALSE); /* TRUE when lc_jump_env is valid. */
+ #endif
+
+ #if defined(FEAT_MBYTE) || defined(FEAT_POSTSCRIPT)
+***************
+*** 986,992 ****
+ EXTERN FILE *scriptout INIT(= NULL); /* stream to write script to */
+ EXTERN int read_cmd_fd INIT(= 0); /* fd to read commands from */
+
+! EXTERN int got_int INIT(= FALSE); /* set to TRUE when interrupt
+ signal occurred */
+ #ifdef USE_TERM_CONSOLE
+ EXTERN int term_console INIT(= FALSE); /* set to TRUE when console used */
+--- 996,1003 ----
+ EXTERN FILE *scriptout INIT(= NULL); /* stream to write script to */
+ EXTERN int read_cmd_fd INIT(= 0); /* fd to read commands from */
+
+! /* volatile because it is used in signal handler catch_sigint(). */
+! EXTERN volatile int got_int INIT(= FALSE); /* set to TRUE when interrupt
+ signal occurred */
+ #ifdef USE_TERM_CONSOLE
+ EXTERN int term_console INIT(= FALSE); /* set to TRUE when console used */
+*** ../vim-7.2.129/src/os_unix.c Sun Feb 22 02:51:37 2009
+--- src/os_unix.c Mon Mar 2 01:05:50 2009
+***************
+*** 181,187 ****
+ && defined(FEAT_TITLE) && !defined(FEAT_GUI_GTK)
+ # define SET_SIG_ALARM
+ static RETSIGTYPE sig_alarm __ARGS(SIGPROTOARG);
+! static int sig_alarm_called;
+ #endif
+ static RETSIGTYPE deathtrap __ARGS(SIGPROTOARG);
+
+--- 181,188 ----
+ && defined(FEAT_TITLE) && !defined(FEAT_GUI_GTK)
+ # define SET_SIG_ALARM
+ static RETSIGTYPE sig_alarm __ARGS(SIGPROTOARG);
+! /* volatile because it is used in signal handler sig_alarm(). */
+! static volatile int sig_alarm_called;
+ #endif
+ static RETSIGTYPE deathtrap __ARGS(SIGPROTOARG);
+
+***************
+*** 201,213 ****
+ # define SIG_ERR ((RETSIGTYPE (*)())-1)
+ #endif
+
+! static int do_resize = FALSE;
+ #ifndef __EMX__
+ static char_u *extra_shell_arg = NULL;
+ static int show_shell_mess = TRUE;
+ #endif
+! static int deadly_signal = 0; /* The signal we caught */
+! static int in_mch_delay = FALSE; /* sleeping in mch_delay() */
+
+ static int curr_tmode = TMODE_COOK; /* contains current terminal mode */
+
+--- 202,217 ----
+ # define SIG_ERR ((RETSIGTYPE (*)())-1)
+ #endif
+
+! /* volatile because it is used in signal handler sig_winch(). */
+! static volatile int do_resize = FALSE;
+ #ifndef __EMX__
+ static char_u *extra_shell_arg = NULL;
+ static int show_shell_mess = TRUE;
+ #endif
+! /* volatile because it is used in signal handler deathtrap(). */
+! static volatile int deadly_signal = 0; /* The signal we caught */
+! /* volatile because it is used in signal handler deathtrap(). */
+! static volatile int in_mch_delay = FALSE; /* sleeping in mch_delay() */
+
+ static int curr_tmode = TMODE_COOK; /* contains current terminal mode */
+
+***************
+*** 802,808 ****
+ #endif
+
+ /*
+! * We need correct potatotypes for a signal function, otherwise mean compilers
+ * will barf when the second argument to signal() is ``wrong''.
+ * Let me try it with a few tricky defines from my own osdef.h (jw).
+ */
+--- 806,812 ----
+ #endif
+
+ /*
+! * We need correct prototypes for a signal function, otherwise mean compilers
+ * will barf when the second argument to signal() is ``wrong''.
+ * Let me try it with a few tricky defines from my own osdef.h (jw).
+ */
+***************
+*** 1068,1080 ****
+ SIGRETURN;
+ }
+
+! #ifdef _REENTRANT
+ /*
+ * On Solaris with multi-threading, suspending might not work immediately.
+ * Catch the SIGCONT signal, which will be used as an indication whether the
+ * suspending has been done or not.
+ */
+! static int sigcont_received;
+ static RETSIGTYPE sigcont_handler __ARGS(SIGPROTOARG);
+
+ /*
+--- 1072,1089 ----
+ SIGRETURN;
+ }
+
+! #if defined(_REENTRANT) && defined(SIGCONT)
+ /*
+ * On Solaris with multi-threading, suspending might not work immediately.
+ * Catch the SIGCONT signal, which will be used as an indication whether the
+ * suspending has been done or not.
++ *
++ * On Linux, signal is not always handled immediately either.
++ * See https://bugs.launchpad.net/bugs/291373
++ *
++ * volatile because it is used in in signal handler sigcont_handler().
+ */
+! static volatile int sigcont_received;
+ static RETSIGTYPE sigcont_handler __ARGS(SIGPROTOARG);
+
+ /*
+***************
+*** 1118,1132 ****
+ }
+ # endif
+
+! # ifdef _REENTRANT
+ sigcont_received = FALSE;
+ # endif
+ kill(0, SIGTSTP); /* send ourselves a STOP signal */
+! # ifdef _REENTRANT
+! /* When we didn't suspend immediately in the kill(), do it now. Happens
+! * on multi-threaded Solaris. */
+! if (!sigcont_received)
+! pause();
+ # endif
+
+ # ifdef FEAT_TITLE
+--- 1127,1154 ----
+ }
+ # endif
+
+! # if defined(_REENTRANT) && defined(SIGCONT)
+ sigcont_received = FALSE;
+ # endif
+ kill(0, SIGTSTP); /* send ourselves a STOP signal */
+! # if defined(_REENTRANT) && defined(SIGCONT)
+! /*
+! * Wait for the SIGCONT signal to be handled. It generally happens
+! * immediately, but somehow not all the time. Do not call pause()
+! * because there would be race condition which would hang Vim if
+! * signal happened in between the test of sigcont_received and the
+! * call to pause(). If signal is not yet received, call sleep(0)
+! * to just yield CPU. Signal should then be received. If somehow
+! * it's still not received, sleep 1, 2, 3 ms. Don't bother waiting
+! * further if signal is not received after 1+2+3+4 ms (not expected
+! * to happen).
+! */
+! {
+! long wait;
+! for (wait = 0; !sigcont_received && wait <= 3L; wait++)
+! /* Loop is not entered most of the time */
+! mch_delay(wait, FALSE);
+! }
+ # endif
+
+ # ifdef FEAT_TITLE
+***************
+*** 1175,1181 ****
+ #ifdef SIGTSTP
+ signal(SIGTSTP, restricted ? SIG_IGN : SIG_DFL);
+ #endif
+! #ifdef _REENTRANT
+ signal(SIGCONT, sigcont_handler);
+ #endif
+
+--- 1197,1203 ----
+ #ifdef SIGTSTP
+ signal(SIGTSTP, restricted ? SIG_IGN : SIG_DFL);
+ #endif
+! #if defined(_REENTRANT) && defined(SIGCONT)
+ signal(SIGCONT, sigcont_handler);
+ #endif
+
+***************
+*** 1234,1240 ****
+ reset_signals()
+ {
+ catch_signals(SIG_DFL, SIG_DFL);
+! #ifdef _REENTRANT
+ /* SIGCONT isn't in the list, because its default action is ignore */
+ signal(SIGCONT, SIG_DFL);
+ #endif
+--- 1256,1262 ----
+ reset_signals()
+ {
+ catch_signals(SIG_DFL, SIG_DFL);
+! #if defined(_REENTRANT) && defined(SIGCONT)
+ /* SIGCONT isn't in the list, because its default action is ignore */
+ signal(SIGCONT, SIG_DFL);
+ #endif
+***************
+*** 5899,5905 ****
+--- 5921,5929 ----
+ * we are going to suspend or starting an external process
+ * so we shouldn't have problem with this
+ */
++ # ifdef SIGTSTP
+ signal(SIGTSTP, restricted ? SIG_IGN : SIG_DFL);
++ # endif
+ return 1; /* succeed */
+ }
+ if (gpm_fd == -2)
+*** ../vim-7.2.129/src/version.c Mon Mar 2 02:11:09 2009
+--- src/version.c Mon Mar 2 02:36:00 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 130,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+148. You find it easier to dial-up the National Weather Service
+ Weather/your_town/now.html than to simply look out the window.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vi/vim-7.2/7.2.131 b/vi/vim-7.2/7.2.131
new file mode 100644
index 0000000..fec2b5e
--- /dev/null
+++ b/vi/vim-7.2/7.2.131
@@ -0,0 +1,83 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.131
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.131
+Problem: When 'keymap' is cleared may still use the cursor highlighting for
+ when it's enabled.
+Solution: Reset 'iminsert' and 'imsearch'. (partly by Dominique Pelle)
+ Also avoid ":setlocal" for these options have a global effect.
+Files: src/option.c
+
+
+*** ../vim-7.2.130/src/option.c Sat Feb 21 20:27:00 2009
+--- src/option.c Wed Mar 4 04:09:51 2009
+***************
+*** 5797,5810 ****
+ /* load or unload key mapping tables */
+ errmsg = keymap_init();
+
+! /* When successfully installed a new keymap switch on using it. */
+! if (*curbuf->b_p_keymap != NUL && errmsg == NULL)
+ {
+! curbuf->b_p_iminsert = B_IMODE_LMAP;
+! if (curbuf->b_p_imsearch != B_IMODE_USE_INSERT)
+! curbuf->b_p_imsearch = B_IMODE_LMAP;
+! set_iminsert_global();
+! set_imsearch_global();
+ # ifdef FEAT_WINDOWS
+ status_redraw_curbuf();
+ # endif
+--- 5797,5824 ----
+ /* load or unload key mapping tables */
+ errmsg = keymap_init();
+
+! if (errmsg == NULL)
+ {
+! if (*curbuf->b_p_keymap != NUL)
+! {
+! /* Installed a new keymap, switch on using it. */
+! curbuf->b_p_iminsert = B_IMODE_LMAP;
+! if (curbuf->b_p_imsearch != B_IMODE_USE_INSERT)
+! curbuf->b_p_imsearch = B_IMODE_LMAP;
+! }
+! else
+! {
+! /* Cleared the keymap, may reset 'iminsert' and 'imsearch'. */
+! if (curbuf->b_p_iminsert == B_IMODE_LMAP)
+! curbuf->b_p_iminsert = B_IMODE_NONE;
+! if (curbuf->b_p_imsearch == B_IMODE_LMAP)
+! curbuf->b_p_imsearch = B_IMODE_USE_INSERT;
+! }
+! if ((opt_flags & OPT_LOCAL) == 0)
+! {
+! set_iminsert_global();
+! set_imsearch_global();
+! }
+ # ifdef FEAT_WINDOWS
+ status_redraw_curbuf();
+ # endif
+*** ../vim-7.2.130/src/version.c Mon Mar 2 02:44:54 2009
+--- src/version.c Wed Mar 4 04:10:32 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 131,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+157. You fum through a magazine, you first check to see if it has a web
+ address.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
diff --git a/vi/vim-7.2/7.2.132 b/vi/vim-7.2/7.2.132
new file mode 100644
index 0000000..69e19ee
--- /dev/null
+++ b/vi/vim-7.2/7.2.132
@@ -0,0 +1,268 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.132
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.132
+Problem: When changing directory during a SwapExists autocmd freed memory
+ may be accessed. (Dominique Pelle)
+Solution: Add the allbuf_lock flag.
+Files: src/ex_getln.c, src/globals.h, src/fileio.c,
+ src/proto/ex_getln.pro
+
+
+*** ../vim-7.2.131/src/ex_getln.c Mon Mar 2 02:11:09 2009
+--- src/ex_getln.c Mon Mar 2 00:53:39 2009
+***************
+*** 2000,2007 ****
+
+ #if defined(FEAT_AUTOCMD) || defined(PROTO)
+ /*
+! * Check if "curbuf_lock" is set and return TRUE when it is and give an error
+! * message.
+ */
+ int
+ curbuf_locked()
+--- 2000,2007 ----
+
+ #if defined(FEAT_AUTOCMD) || defined(PROTO)
+ /*
+! * Check if "curbuf_lock" or "allbuf_lock" is set and return TRUE when it is
+! * and give an error message.
+ */
+ int
+ curbuf_locked()
+***************
+*** 2011,2016 ****
+--- 2011,2031 ----
+ EMSG(_("E788: Not allowed to edit another buffer now"));
+ return TRUE;
+ }
++ return allbuf_locked();
++ }
++
++ /*
++ * Check if "allbuf_lock" is set and return TRUE when it is and give an error
++ * message.
++ */
++ int
++ allbuf_locked()
++ {
++ if (allbuf_lock > 0)
++ {
++ EMSG(_("E811: Not allowed to change buffer information now"));
++ return TRUE;
++ }
+ return FALSE;
+ }
+ #endif
+*** ../vim-7.2.131/src/globals.h Mon Mar 2 02:44:54 2009
+--- src/globals.h Mon Mar 2 02:40:16 2009
+***************
+*** 619,624 ****
+--- 619,629 ----
+ EXTERN int curbuf_lock INIT(= 0);
+ /* non-zero when the current buffer can't be
+ * changed. Used for FileChangedRO. */
++ EXTERN int allbuf_lock INIT(= 0);
++ /* non-zero when no buffer name can be
++ * changed, no buffer can be deleted and
++ * current directory can't be changed.
++ * Used for SwapExists et al. */
+ #endif
+ #ifdef FEAT_EVAL
+ # define HAVE_SANDBOX
+*** ../vim-7.2.131/src/fileio.c Wed Dec 31 16:20:54 2008
+--- src/fileio.c Sun Mar 1 23:37:10 2009
+***************
+*** 69,75 ****
+ static int au_find_group __ARGS((char_u *name));
+
+ # define AUGROUP_DEFAULT -1 /* default autocmd group */
+! # define AUGROUP_ERROR -2 /* errornouse autocmd group */
+ # define AUGROUP_ALL -3 /* all autocmd groups */
+ #endif
+
+--- 69,75 ----
+ static int au_find_group __ARGS((char_u *name));
+
+ # define AUGROUP_DEFAULT -1 /* default autocmd group */
+! # define AUGROUP_ERROR -2 /* erroneous autocmd group */
+ # define AUGROUP_ALL -3 /* all autocmd groups */
+ #endif
+
+***************
+*** 144,150 ****
+ # endif
+ #endif
+ static int move_lines __ARGS((buf_T *frombuf, buf_T *tobuf));
+!
+
+ void
+ filemess(buf, name, s, attr)
+--- 144,152 ----
+ # endif
+ #endif
+ static int move_lines __ARGS((buf_T *frombuf, buf_T *tobuf));
+! #ifdef FEAT_AUTOCMD
+! static char *e_auchangedbuf = N_("E812: Autocommands changed buffer or buffer name");
+! #endif
+
+ void
+ filemess(buf, name, s, attr)
+***************
+*** 295,300 ****
+--- 297,315 ----
+ int conv_restlen = 0; /* nr of bytes in conv_rest[] */
+ #endif
+
++ #ifdef FEAT_AUTOCMD
++ /* Remember the initial values of curbuf, curbuf->b_ffname and
++ * curbuf->b_fname to detect whether they are altered as a result of
++ * executing nasty autocommands. Also check if "fname" and "sfname"
++ * point to one of these values. */
++ buf_T *old_curbuf = curbuf;
++ char_u *old_b_ffname = curbuf->b_ffname;
++ char_u *old_b_fname = curbuf->b_fname;
++ int using_b_ffname = (fname == curbuf->b_ffname)
++ || (sfname == curbuf->b_ffname);
++ int using_b_fname = (fname == curbuf->b_fname)
++ || (sfname == curbuf->b_fname);
++ #endif
+ write_no_eol_lnum = 0; /* in case it was set by the previous read */
+
+ /*
+***************
+*** 589,595 ****
+--- 604,624 ----
+ #ifdef FEAT_QUICKFIX
+ if (!bt_dontwrite(curbuf))
+ #endif
++ {
+ check_need_swap(newfile);
++ #ifdef FEAT_AUTOCMD
++ /* SwapExists autocommand may mess things up */
++ if (curbuf != old_curbuf
++ || (using_b_ffname
++ && (old_b_ffname != curbuf->b_ffname))
++ || (using_b_fname
++ && (old_b_fname != curbuf->b_fname)))
++ {
++ EMSG(_(e_auchangedbuf));
++ return FAIL;
++ }
++ #endif
++ }
+ if (dir_of_file_exists(fname))
+ filemess(curbuf, sfname, (char_u *)_("[New File]"), 0);
+ else
+***************
+*** 668,673 ****
+--- 697,713 ----
+ #endif
+ {
+ check_need_swap(newfile);
++ #ifdef FEAT_AUTOCMD
++ if (!read_stdin && (curbuf != old_curbuf
++ || (using_b_ffname && (old_b_ffname != curbuf->b_ffname))
++ || (using_b_fname && (old_b_fname != curbuf->b_fname))))
++ {
++ EMSG(_(e_auchangedbuf));
++ if (!read_buffer)
++ close(fd);
++ return FAIL;
++ }
++ #endif
+ #ifdef UNIX
+ /* Set swap file protection bits after creating it. */
+ if (swap_mode > 0 && curbuf->b_ml.ml_mfp->mf_fname != NULL)
+***************
+*** 698,704 ****
+ {
+ int m = msg_scroll;
+ int n = msg_scrolled;
+- buf_T *old_curbuf = curbuf;
+
+ /*
+ * The file must be closed again, the autocommands may want to change
+--- 738,743 ----
+***************
+*** 740,747 ****
+--- 779,791 ----
+ /*
+ * Don't allow the autocommands to change the current buffer.
+ * Try to re-open the file.
++ *
++ * Don't allow the autocommands to change the buffer name either
++ * (cd for example) if it invalidates fname or sfname.
+ */
+ if (!read_stdin && (curbuf != old_curbuf
++ || (using_b_ffname && (old_b_ffname != curbuf->b_ffname))
++ || (using_b_fname && (old_b_fname != curbuf->b_fname))
+ || (fd = mch_open((char *)fname, O_RDONLY | O_EXTRA, 0)) < 0))
+ {
+ --no_wait_return;
+***************
+*** 6320,6326 ****
+
+ if (!stuff_empty() || global_busy || !typebuf_typed()
+ #ifdef FEAT_AUTOCMD
+! || autocmd_busy || curbuf_lock > 0
+ #endif
+ )
+ need_check_timestamps = TRUE; /* check later */
+--- 6364,6370 ----
+
+ if (!stuff_empty() || global_busy || !typebuf_typed()
+ #ifdef FEAT_AUTOCMD
+! || autocmd_busy || curbuf_lock > 0 || allbuf_lock > 0
+ #endif
+ )
+ need_check_timestamps = TRUE; /* check later */
+***************
+*** 6522,6529 ****
+--- 6566,6575 ----
+ set_vim_var_string(VV_FCS_REASON, (char_u *)reason, -1);
+ set_vim_var_string(VV_FCS_CHOICE, (char_u *)"", -1);
+ # endif
++ ++allbuf_lock;
+ n = apply_autocmds(EVENT_FILECHANGEDSHELL,
+ buf->b_fname, buf->b_fname, FALSE, buf);
++ --allbuf_lock;
+ busy = FALSE;
+ if (n)
+ {
+*** ../vim-7.2.131/src/proto/ex_getln.pro Fri Nov 28 10:59:57 2008
+--- src/proto/ex_getln.pro Sun Mar 1 00:27:12 2009
+***************
+*** 4,9 ****
+--- 4,10 ----
+ int text_locked __ARGS((void));
+ void text_locked_msg __ARGS((void));
+ int curbuf_locked __ARGS((void));
++ int allbuf_locked __ARGS((void));
+ char_u *getexline __ARGS((int c, void *dummy, int indent));
+ char_u *getexmodeline __ARGS((int promptc, void *dummy, int indent));
+ int cmdline_overstrike __ARGS((void));
+*** ../vim-7.2.131/src/version.c Wed Mar 4 04:11:56 2009
+--- src/version.c Thu Mar 5 03:08:54 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 132,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+168. You have your own domain name.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///