summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFlorian Pritz <f-p@gmx.at>2009-06-25 19:16:21 +0200
committerFlorian Pritz <f-p@gmx.at>2009-06-25 19:16:21 +0200
commite4d1068c06190de5dd46727c1f2f1249786dd13b (patch)
treef910da35053e214d9520de2745fcc22d2693d23d
parentb9210356e8c9746828161dffa451f4d48a455018 (diff)
downloadaur-packages-e4d1068c06190de5dd46727c1f2f1249786dd13b.tar.gz
aur-packages-e4d1068c06190de5dd46727c1f2f1249786dd13b.tar.xz
update vim
-rw-r--r--vim/PKGBUILD2
-rw-r--r--vim/vim-7.2/7.2.19860
-rw-r--r--vim/vim-7.2/7.2.19952
-rw-r--r--vim/vim-7.2/7.2.200348
-rw-r--r--vim/vim-7.2/7.2.201494
-rw-r--r--vim/vim-7.2/7.2.20262
-rw-r--r--vim/vim-7.2/7.2.2031496
-rw-r--r--vim/vim-7.2/7.2.204137
-rw-r--r--vim/vim-7.2/7.2.20581
-rw-r--r--vim/vim-7.2/7.2.20646
-rw-r--r--vim/vim-7.2/7.2.20769
-rw-r--r--vim/vim-7.2/7.2.20882
-rw-r--r--vim/vim-7.2/7.2.20982
-rw-r--r--vim/vim-7.2/7.2.21058
-rw-r--r--vim/vim-7.2/7.2.21152
-rw-r--r--vim/vim-7.2/7.2.21262
-rw-r--r--vim/vim-7.2/7.2.21353
-rw-r--r--vim/vim-7.2/7.2.21465
-rw-r--r--vim/vim-7.2/7.2.215310
-rw-r--r--vim/vim-7.2/7.2.216137
-rw-r--r--vim/vim-7.2/7.2.21757
-rw-r--r--vim/vim-7.2/7.2.21852
22 files changed, 3856 insertions, 1 deletions
diff --git a/vim/PKGBUILD b/vim/PKGBUILD
index acaa4f4..e0605a0 100644
--- a/vim/PKGBUILD
+++ b/vim/PKGBUILD
@@ -3,7 +3,7 @@
pkgname=vim
_srcver=7.2
-_patchlevel=197
+_patchlevel=218
pkgver=${_srcver}.${_patchlevel}
pkgrel=1
pkgdesc='Vi Improved, a highly configurable, improved version of the vi text editor'
diff --git a/vim/vim-7.2/7.2.198 b/vim/vim-7.2/7.2.198
new file mode 100644
index 0000000..cae27ac
--- /dev/null
+++ b/vim/vim-7.2/7.2.198
@@ -0,0 +1,60 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.198
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.198
+Problem: Size of buffer used for tgetent() may be too small.
+Solution: Use the largest known size everywhere.
+Files: src/vim.h
+
+
+*** ../vim-7.2.197/src/vim.h 2009-05-14 22:19:19.000000000 +0200
+--- src/vim.h 2009-06-07 20:37:48.000000000 +0200
+***************
+*** 1345,1355 ****
+ # define MSG_BUF_CLEN MSG_BUF_LEN /* cell length */
+ #endif
+
+! #if defined(AMIGA) || defined(__linux__) || defined(__QNX__) || defined(__CYGWIN32__) || defined(_AIX)
+! # define TBUFSZ 2048 /* buffer size for termcap entry */
+! #else
+! # define TBUFSZ 1024 /* buffer size for termcap entry */
+! #endif
+
+ /*
+ * Maximum length of key sequence to be mapped.
+--- 1345,1355 ----
+ # define MSG_BUF_CLEN MSG_BUF_LEN /* cell length */
+ #endif
+
+! /* Size of the buffer used for tgetent(). Unfortunately this is largely
+! * undocumented, some systems use 1024. Using a buffer that is too small
+! * causes a buffer overrun and a crash. Use the maximum known value to stay
+! * on the safe side. */
+! #define TBUFSZ 2048 /* buffer size for termcap entry */
+
+ /*
+ * Maximum length of key sequence to be mapped.
+*** ../vim-7.2.197/src/version.c 2009-06-10 18:15:49.000000000 +0200
+--- src/version.c 2009-06-16 11:06:45.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 198,
+ /**/
+
+--
+How To Keep A Healthy Level Of Insanity:
+7. Finish all your sentences with "in accordance with the prophecy".
+
+ /// 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/vim/vim-7.2/7.2.199 b/vim/vim-7.2/7.2.199
new file mode 100644
index 0000000..391ede6
--- /dev/null
+++ b/vim/vim-7.2/7.2.199
@@ -0,0 +1,52 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.199
+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.199
+Problem: Strange character in comment.
+Solution: Change to "message". (Yongwei Wu)
+Files: src/term.c
+
+
+*** ../vim-7.2.198/src/term.c 2009-05-17 13:30:58.000000000 +0200
+--- src/term.c 2009-06-16 11:16:17.000000000 +0200
+***************
+*** 5555,5561 ****
+ * respects the current B/k/< settings of 'cpoption'.
+ *
+ * This function is called when expanding mappings/abbreviations on the
+! * command-line, and for building the "Ambiguous mapping..." error messæge.
+ *
+ * It uses a growarray to build the translation string since the
+ * latter can be wider than the original description. The caller has to
+--- 5555,5561 ----
+ * respects the current B/k/< settings of 'cpoption'.
+ *
+ * This function is called when expanding mappings/abbreviations on the
+! * command-line, and for building the "Ambiguous mapping..." error message.
+ *
+ * It uses a growarray to build the translation string since the
+ * latter can be wider than the original description. The caller has to
+*** ../vim-7.2.198/src/version.c 2009-06-16 11:08:13.000000000 +0200
+--- src/version.c 2009-06-16 14:31:03.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 199,
+ /**/
+
+--
+How To Keep A Healthy Level Of Insanity:
+10. Ask people what sex they are. Laugh hysterically after they answer.
+
+ /// 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/vim/vim-7.2/7.2.200 b/vim/vim-7.2/7.2.200
new file mode 100644
index 0000000..65cc598
--- /dev/null
+++ b/vim/vim-7.2/7.2.200
@@ -0,0 +1,348 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.200
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.200
+Problem: Reading past end of string when navigating the menu bar or
+ resizing the window.
+Solution: Add and use mb_ptr2len_len(). (partly by Dominique Pelle)
+ Also add mb_ptr2cells_len() to prevent more trouble.
+Files: src/gui_gtk_x11.c, src/os_unix.c, src/globals.h, src/mbyte.c,
+ src/proto/mbyte.pro
+
+
+*** ../vim-7.2.199/src/gui_gtk_x11.c 2009-06-03 16:20:09.000000000 +0200
+--- src/gui_gtk_x11.c 2009-06-16 14:44:19.000000000 +0200
+***************
+*** 6077,6088 ****
+ # ifdef FEAT_MBYTE
+ if (enc_utf8)
+ {
+! c = utf_ptr2char(p);
+ if (c >= 0x10000) /* show chars > 0xffff as ? */
+ c = 0xbf;
+ buf[textlen].byte1 = c >> 8;
+ buf[textlen].byte2 = c;
+! p += utf_ptr2len(p);
+ width += utf_char2cells(c);
+ }
+ else
+--- 6135,6149 ----
+ # ifdef FEAT_MBYTE
+ if (enc_utf8)
+ {
+! int pcc[MAX_MCO];
+!
+! /* TODO: use the composing characters */
+! c = utfc_ptr2char_len(p, &pcc, len - (p - s));
+ if (c >= 0x10000) /* show chars > 0xffff as ? */
+ c = 0xbf;
+ buf[textlen].byte1 = c >> 8;
+ buf[textlen].byte2 = c;
+! p += utfc_ptr2len_len(p, len - (p - s));
+ width += utf_char2cells(c);
+ }
+ else
+***************
+*** 6106,6113 ****
+ if (has_mbyte)
+ {
+ width = 0;
+! for (p = s; p < s + len; p += (*mb_ptr2len)(p))
+! width += (*mb_ptr2cells)(p);
+ }
+ else
+ # endif
+--- 6167,6174 ----
+ if (has_mbyte)
+ {
+ width = 0;
+! for (p = s; p < s + len; p += (*mb_ptr2len_len)(p, len - (p - s)))
+! width += (*mb_ptr2cells_len)(p, len - (p - s));
+ }
+ else
+ # endif
+*** ../vim-7.2.199/src/os_unix.c 2009-05-17 13:30:58.000000000 +0200
+--- src/os_unix.c 2009-06-03 12:35:59.000000000 +0200
+***************
+*** 4305,4311 ****
+ ta_buf[i] = '\n';
+ # ifdef FEAT_MBYTE
+ if (has_mbyte)
+! i += (*mb_ptr2len)(ta_buf + i) - 1;
+ # endif
+ }
+
+--- 4305,4312 ----
+ ta_buf[i] = '\n';
+ # ifdef FEAT_MBYTE
+ if (has_mbyte)
+! i += (*mb_ptr2len_len)(ta_buf + i,
+! ta_len + len - i) - 1;
+ # endif
+ }
+
+*** ../vim-7.2.199/src/globals.h 2009-06-10 18:15:49.000000000 +0200
+--- src/globals.h 2009-06-12 21:10:30.000000000 +0200
+***************
+*** 810,820 ****
+--- 815,828 ----
+ */
+ /* length of char in bytes, including following composing chars */
+ EXTERN int (*mb_ptr2len) __ARGS((char_u *p)) INIT(= latin_ptr2len);
++ /* idem, with limit on string length */
++ EXTERN int (*mb_ptr2len_len) __ARGS((char_u *p, int size)) INIT(= latin_ptr2len_len);
+ /* byte length of char */
+ EXTERN int (*mb_char2len) __ARGS((int c)) INIT(= latin_char2len);
+ /* convert char to bytes, return the length */
+ EXTERN int (*mb_char2bytes) __ARGS((int c, char_u *buf)) INIT(= latin_char2bytes);
+ EXTERN int (*mb_ptr2cells) __ARGS((char_u *p)) INIT(= latin_ptr2cells);
++ EXTERN int (*mb_ptr2cells_len) __ARGS((char_u *p, int size)) INIT(= latin_ptr2cells_len);
+ EXTERN int (*mb_char2cells) __ARGS((int c)) INIT(= latin_char2cells);
+ EXTERN int (*mb_off2cells) __ARGS((unsigned off, unsigned max_off)) INIT(= latin_off2cells);
+ EXTERN int (*mb_ptr2char) __ARGS((char_u *p)) INIT(= latin_ptr2char);
+*** ../vim-7.2.199/src/mbyte.c 2009-05-17 13:30:58.000000000 +0200
+--- src/mbyte.c 2009-06-16 15:01:30.000000000 +0200
+***************
+*** 127,133 ****
+--- 127,136 ----
+ static int dbcs_char2len __ARGS((int c));
+ static int dbcs_char2bytes __ARGS((int c, char_u *buf));
+ static int dbcs_ptr2len __ARGS((char_u *p));
++ static int dbcs_ptr2len_len __ARGS((char_u *p, int size));
++ static int utf_ptr2cells_len __ARGS((char_u *p, int size));
+ static int dbcs_char2cells __ARGS((int c));
++ static int dbcs_ptr2cells_len __ARGS((char_u *p, int size));
+ static int dbcs_ptr2char __ARGS((char_u *p));
+
+ /* Lookup table to quickly get the length in bytes of a UTF-8 character from
+***************
+*** 606,614 ****
+--- 609,619 ----
+ if (enc_utf8)
+ {
+ mb_ptr2len = utfc_ptr2len;
++ mb_ptr2len_len = utfc_ptr2len_len;
+ mb_char2len = utf_char2len;
+ mb_char2bytes = utf_char2bytes;
+ mb_ptr2cells = utf_ptr2cells;
++ mb_ptr2cells_len = utf_ptr2cells_len;
+ mb_char2cells = utf_char2cells;
+ mb_off2cells = utf_off2cells;
+ mb_ptr2char = utf_ptr2char;
+***************
+*** 617,625 ****
+--- 622,632 ----
+ else if (enc_dbcs != 0)
+ {
+ mb_ptr2len = dbcs_ptr2len;
++ mb_ptr2len_len = dbcs_ptr2len_len;
+ mb_char2len = dbcs_char2len;
+ mb_char2bytes = dbcs_char2bytes;
+ mb_ptr2cells = dbcs_ptr2cells;
++ mb_ptr2cells_len = dbcs_ptr2cells_len;
+ mb_char2cells = dbcs_char2cells;
+ mb_off2cells = dbcs_off2cells;
+ mb_ptr2char = dbcs_ptr2char;
+***************
+*** 628,636 ****
+--- 635,645 ----
+ else
+ {
+ mb_ptr2len = latin_ptr2len;
++ mb_ptr2len_len = latin_ptr2len_len;
+ mb_char2len = latin_char2len;
+ mb_char2bytes = latin_char2bytes;
+ mb_ptr2cells = latin_ptr2cells;
++ mb_ptr2cells_len = latin_ptr2cells_len;
+ mb_char2cells = latin_char2cells;
+ mb_off2cells = latin_off2cells;
+ mb_ptr2char = latin_ptr2char;
+***************
+*** 1069,1075 ****
+ * Get byte length of character at "*p" but stop at a NUL.
+ * For UTF-8 this includes following composing characters.
+ * Returns 0 when *p is NUL.
+- *
+ */
+ int
+ latin_ptr2len(p)
+--- 1078,1083 ----
+***************
+*** 1091,1096 ****
+--- 1099,1138 ----
+ return len;
+ }
+
++ /*
++ * mb_ptr2len_len() function pointer.
++ * Like mb_ptr2len(), but limit to read "size" bytes.
++ * Returns 0 for an empty string.
++ * Returns 1 for an illegal char or an incomplete byte sequence.
++ */
++ int
++ latin_ptr2len_len(p, size)
++ char_u *p;
++ int size;
++ {
++ if (size < 1 || *p == NUL)
++ return 0;
++ return 1;
++ }
++
++ static int
++ dbcs_ptr2len_len(p, size)
++ char_u *p;
++ int size;
++ {
++ int len;
++
++ if (size < 1 || *p == NUL)
++ return 0;
++ if (size == 1)
++ return 1;
++ /* Check that second byte is not missing. */
++ len = MB_BYTE2LEN(*p);
++ if (len == 2 && p[1] == NUL)
++ len = 1;
++ return len;
++ }
++
+ struct interval
+ {
+ unsigned short first;
+***************
+*** 1287,1292 ****
+--- 1329,1383 ----
+ }
+
+ /*
++ * mb_ptr2cells_len() function pointer.
++ * Like mb_ptr2cells(), but limit string length to "size".
++ * For an empty string or truncated character returns 1.
++ */
++ int
++ latin_ptr2cells_len(p, size)
++ char_u *p UNUSED;
++ int size UNUSED;
++ {
++ return 1;
++ }
++
++ static int
++ utf_ptr2cells_len(p, size)
++ char_u *p;
++ int size;
++ {
++ int c;
++
++ /* Need to convert to a wide character. */
++ if (size > 0 && *p >= 0x80)
++ {
++ if (utf_ptr2len_len(p, size) < utf8len_tab[*p])
++ return 1;
++ c = utf_ptr2char(p);
++ /* An illegal byte is displayed as <xx>. */
++ if (utf_ptr2len(p) == 1 || c == NUL)
++ return 4;
++ /* If the char is ASCII it must be an overlong sequence. */
++ if (c < 0x80)
++ return char2cells(c);
++ return utf_char2cells(c);
++ }
++ return 1;
++ }
++
++ static int
++ dbcs_ptr2cells_len(p, size)
++ char_u *p;
++ int size;
++ {
++ /* Number of cells is equal to number of bytes, except for euc-jp when
++ * the first byte is 0x8e. */
++ if (size <= 1 || (enc_dbcs == DBCS_JPNU && *p == 0x8e))
++ return 1;
++ return MB_BYTE2LEN(*p);
++ }
++
++ /*
+ * mb_char2cells() function pointer.
+ * Return the number of display cells character "c" occupies.
+ * Only takes care of multi-byte chars, not "^C" and such.
+***************
+*** 1716,1721 ****
+--- 1807,1813 ----
+ /*
+ * Return the number of bytes the UTF-8 encoding of the character at "p[size]"
+ * takes. This includes following composing characters.
++ * Returns 0 for an empty string.
+ * Returns 1 for an illegal char or an incomplete byte sequence.
+ */
+ int
+***************
+*** 1728,1734 ****
+ int prevlen;
+ #endif
+
+! if (*p == NUL)
+ return 0;
+ if (p[0] < 0x80 && (size == 1 || p[1] < 0x80)) /* be quick for ASCII */
+ return 1;
+--- 1820,1826 ----
+ int prevlen;
+ #endif
+
+! if (size < 1 || *p == NUL)
+ return 0;
+ if (p[0] < 0x80 && (size == 1 || p[1] < 0x80)) /* be quick for ASCII */
+ return 1;
+*** ../vim-7.2.199/src/proto/mbyte.pro 2008-07-13 19:34:19.000000000 +0200
+--- src/proto/mbyte.pro 2009-06-16 14:58:39.000000000 +0200
+***************
+*** 7,16 ****
+--- 7,18 ----
+ int latin_char2len __ARGS((int c));
+ int latin_char2bytes __ARGS((int c, char_u *buf));
+ int latin_ptr2len __ARGS((char_u *p));
++ int latin_ptr2len_len __ARGS((char_u *p, int size));
+ int utf_char2cells __ARGS((int c));
+ int latin_ptr2cells __ARGS((char_u *p));
+ int utf_ptr2cells __ARGS((char_u *p));
+ int dbcs_ptr2cells __ARGS((char_u *p));
++ int latin_ptr2cells_len __ARGS((char_u *p, int size));
+ int latin_char2cells __ARGS((int c));
+ int latin_off2cells __ARGS((unsigned off, unsigned max_off));
+ int dbcs_off2cells __ARGS((unsigned off, unsigned max_off));
+***************
+*** 85,90 ****
+--- 87,93 ----
+ int preedit_get_status __ARGS((void));
+ int im_is_preediting __ARGS((void));
+ int convert_setup __ARGS((vimconv_T *vcp, char_u *from, char_u *to));
++ int convert_setup_ext __ARGS((vimconv_T *vcp, char_u *from, int from_unicode_is_utf8, char_u *to, int to_unicode_is_utf8));
+ int convert_input __ARGS((char_u *ptr, int len, int maxlen));
+ int convert_input_safe __ARGS((char_u *ptr, int len, int maxlen, char_u **restp, int *restlenp));
+ char_u *string_convert __ARGS((vimconv_T *vcp, char_u *ptr, int *lenp));
+*** ../vim-7.2.199/src/version.c 2009-06-16 14:31:56.000000000 +0200
+--- src/version.c 2009-06-16 14:37:38.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 200,
+ /**/
+
+--
+How To Keep A Healthy Level Of Insanity:
+12. Sing along at the opera.
+
+ /// 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/vim/vim-7.2/7.2.201 b/vim/vim-7.2/7.2.201
new file mode 100644
index 0000000..cd2df07
--- /dev/null
+++ b/vim/vim-7.2/7.2.201
@@ -0,0 +1,494 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.201
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.201
+Problem: Cannot copy/paste HTML to/from Firefox via the clipboard.
+Solution: Implement this for GTK. Add the "html" value to 'clipboard'.
+Files: runtime/doc/options.txt, src/globals.h, src/gui_gtk_x11.c,
+ src/mbyte.c, src/proto/mbyte.pro, src/option.c
+
+
+*** ../vim-7.2.200/runtime/doc/options.txt 2009-02-21 20:27:00.000000000 +0100
+--- runtime/doc/options.txt 2009-06-12 22:25:22.000000000 +0200
+***************
+*** 1443,1448 ****
+--- 1444,1457 ----
+ autoselectml Like "autoselect", but for the modeless selection
+ only. Compare to the 'A' flag in 'guioptions'.
+
++ html When the clipboard contains HTML, use this when
++ pasting. When putting text on the clipboard, mark it
++ as HTML. This works to copy rendered HTML from
++ Firefox, paste it as raw HTML in Vim, select the HTML
++ in Vim and paste it in a rich edit box in Firefox.
++ Only supported for GTK version 2 and later.
++ Only available with the |+multi_byte| feature.
++
+ exclude:{pattern}
+ Defines a pattern that is matched against the name of
+ the terminal 'term'. If there is a match, no
+*** ../vim-7.2.200/src/globals.h 2009-06-16 15:12:11.000000000 +0200
+--- src/globals.h 2009-06-12 21:10:30.000000000 +0200
+***************
+*** 509,514 ****
+--- 509,515 ----
+ EXTERN int clip_unnamed INIT(= FALSE);
+ EXTERN int clip_autoselect INIT(= FALSE);
+ EXTERN int clip_autoselectml INIT(= FALSE);
++ EXTERN int clip_html INIT(= FALSE);
+ EXTERN regprog_T *clip_exclude_prog INIT(= NULL);
+ #endif
+
+*** ../vim-7.2.200/src/gui_gtk_x11.c 2009-06-16 15:12:11.000000000 +0200
+--- src/gui_gtk_x11.c 2009-06-16 14:44:19.000000000 +0200
+***************
+*** 107,112 ****
+--- 107,113 ----
+ TARGET_UTF8_STRING,
+ TARGET_STRING,
+ TARGET_COMPOUND_TEXT,
++ TARGET_HTML,
+ TARGET_TEXT,
+ TARGET_TEXT_URI_LIST,
+ TARGET_TEXT_PLAIN,
+***************
+*** 123,128 ****
+--- 124,130 ----
+ {VIMENC_ATOM_NAME, 0, TARGET_VIMENC},
+ {VIM_ATOM_NAME, 0, TARGET_VIM},
+ #ifdef FEAT_MBYTE
++ {"text/html", 0, TARGET_HTML},
+ {"UTF8_STRING", 0, TARGET_UTF8_STRING},
+ #endif
+ {"COMPOUND_TEXT", 0, TARGET_COMPOUND_TEXT},
+***************
+*** 140,145 ****
+--- 142,148 ----
+ {
+ {"text/uri-list", 0, TARGET_TEXT_URI_LIST},
+ # ifdef FEAT_MBYTE
++ {"text/html", 0, TARGET_HTML},
+ {"UTF8_STRING", 0, TARGET_UTF8_STRING},
+ # endif
+ {"STRING", 0, TARGET_STRING},
+***************
+*** 178,183 ****
+--- 181,187 ----
+ * Atoms used to control/reference X11 selections.
+ */
+ #ifdef FEAT_MBYTE
++ static GdkAtom html_atom = GDK_NONE;
+ static GdkAtom utf8_string_atom = GDK_NONE;
+ #endif
+ #ifndef HAVE_GTK2
+***************
+*** 1364,1369 ****
+--- 1368,1391 ----
+ else
+ text = tmpbuf_utf8;
+ }
++ else if (len >= 2 && text[0] == 0xff && text[1] == 0xfe)
++ {
++ vimconv_T conv;
++
++ /* UTF-16, we get this for HTML */
++ conv.vc_type = CONV_NONE;
++ convert_setup_ext(&conv, (char_u *)"utf-16le", FALSE, p_enc, TRUE);
++
++ if (conv.vc_type != CONV_NONE)
++ {
++ text += 2;
++ len -= 2;
++ tmpbuf = string_convert(&conv, text, &len);
++ convert_setup(&conv, NULL, NULL);
++ }
++ if (tmpbuf != NULL)
++ text = tmpbuf;
++ }
+ }
+ #else /* !HAVE_GTK2 */
+ # ifdef FEAT_MBYTE
+***************
+*** 1451,1456 ****
+--- 1473,1479 ----
+
+ if (info != (guint)TARGET_STRING
+ #ifdef FEAT_MBYTE
++ && (!clip_html || info != (guint)TARGET_HTML)
+ && info != (guint)TARGET_UTF8_STRING
+ && info != (guint)TARGET_VIMENC
+ #endif
+***************
+*** 1486,1491 ****
+--- 1509,1548 ----
+ }
+
+ #ifdef FEAT_MBYTE
++ else if (info == (guint)TARGET_HTML)
++ {
++ vimconv_T conv;
++
++ /* Since we get utf-16, we probably should set it as well. */
++ conv.vc_type = CONV_NONE;
++ convert_setup_ext(&conv, p_enc, TRUE, (char_u *)"utf-16le", FALSE);
++ if (conv.vc_type != CONV_NONE)
++ {
++ tmpbuf = string_convert(&conv, string, &length);
++ convert_setup(&conv, NULL, NULL);
++ vim_free(string);
++ string = tmpbuf;
++ }
++
++ /* Prepend the BOM: "fffe" */
++ if (string != NULL)
++ {
++ tmpbuf = alloc(length + 2);
++ tmpbuf[0] = 0xff;
++ tmpbuf[1] = 0xfe;
++ mch_memmove(tmpbuf + 2, string, (size_t)length);
++ vim_free(string);
++ string = tmpbuf;
++ length += 2;
++
++ selection_data->type = selection_data->target;
++ selection_data->format = 16; /* 16 bits per char */
++ gtk_selection_data_set(selection_data, html_atom, 16,
++ string, length);
++ vim_free(string);
++ }
++ return;
++ }
+ else if (info == (guint)TARGET_VIMENC)
+ {
+ int l = STRLEN(p_enc);
+***************
+*** 3464,3469 ****
+--- 3521,3527 ----
+
+ /* Initialise atoms */
+ #ifdef FEAT_MBYTE
++ html_atom = gdk_atom_intern("text/html", FALSE);
+ utf8_string_atom = gdk_atom_intern("UTF8_STRING", FALSE);
+ #endif
+ #ifndef HAVE_GTK2
+***************
+*** 6665,6670 ****
+--- 6723,6732 ----
+
+ for (i = 0; i < N_SELECTION_TARGETS; ++i)
+ {
++ #ifdef FEAT_MBYTE
++ if (!clip_html && selection_targets[i].info == TARGET_HTML)
++ continue;
++ #endif
+ received_selection = RS_NONE;
+ target = gdk_atom_intern(selection_targets[i].target, FALSE);
+
+*** ../vim-7.2.200/src/mbyte.c 2009-06-16 15:12:11.000000000 +0200
+--- src/mbyte.c 2009-06-16 15:01:30.000000000 +0200
+***************
+*** 3265,3271 ****
+
+ # if defined(USE_ICONV) || defined(PROTO)
+
+! static char_u *iconv_string __ARGS((vimconv_T *vcp, char_u *str, int slen, int *unconvlenp));
+
+ /*
+ * Call iconv_open() with a check if iconv() works properly (there are broken
+--- 3265,3271 ----
+
+ # if defined(USE_ICONV) || defined(PROTO)
+
+! static char_u *iconv_string __ARGS((vimconv_T *vcp, char_u *str, int slen, int *unconvlenp, int *resultlenp));
+
+ /*
+ * Call iconv_open() with a check if iconv() works properly (there are broken
+***************
+*** 3326,3338 ****
+ * If "unconvlenp" is not NULL handle the string ending in an incomplete
+ * sequence and set "*unconvlenp" to the length of it.
+ * Returns the converted string in allocated memory. NULL for an error.
+ */
+ static char_u *
+! iconv_string(vcp, str, slen, unconvlenp)
+ vimconv_T *vcp;
+ char_u *str;
+ int slen;
+ int *unconvlenp;
+ {
+ const char *from;
+ size_t fromlen;
+--- 3326,3340 ----
+ * If "unconvlenp" is not NULL handle the string ending in an incomplete
+ * sequence and set "*unconvlenp" to the length of it.
+ * Returns the converted string in allocated memory. NULL for an error.
++ * If resultlenp is not NULL, sets it to the result length in bytes.
+ */
+ static char_u *
+! iconv_string(vcp, str, slen, unconvlenp, resultlenp)
+ vimconv_T *vcp;
+ char_u *str;
+ int slen;
+ int *unconvlenp;
++ int *resultlenp;
+ {
+ const char *from;
+ size_t fromlen;
+***************
+*** 3418,3423 ****
+--- 3420,3428 ----
+ /* Not enough room or skipping illegal sequence. */
+ done = to - (char *)result;
+ }
++
++ if (resultlenp != NULL)
++ *resultlenp = (int)(to - (char *)result);
+ return result;
+ }
+
+***************
+*** 5837,5844 ****
+--- 5842,5866 ----
+ char_u *from;
+ char_u *to;
+ {
++ return convert_setup_ext(vcp, from, TRUE, to, TRUE);
++ }
++
++ /*
++ * As convert_setup(), but only when from_unicode_is_utf8 is TRUE will all
++ * "from" unicode charsets be considered utf-8. Same for "to".
++ */
++ int
++ convert_setup_ext(vcp, from, from_unicode_is_utf8, to, to_unicode_is_utf8)
++ vimconv_T *vcp;
++ char_u *from;
++ int from_unicode_is_utf8;
++ char_u *to;
++ int to_unicode_is_utf8;
++ {
+ int from_prop;
+ int to_prop;
++ int from_is_utf8;
++ int to_is_utf8;
+
+ /* Reset to no conversion. */
+ # ifdef USE_ICONV
+***************
+*** 5856,5892 ****
+
+ from_prop = enc_canon_props(from);
+ to_prop = enc_canon_props(to);
+! if ((from_prop & ENC_LATIN1) && (to_prop & ENC_UNICODE))
+ {
+ /* Internal latin1 -> utf-8 conversion. */
+ vcp->vc_type = CONV_TO_UTF8;
+ vcp->vc_factor = 2; /* up to twice as long */
+ }
+! else if ((from_prop & ENC_LATIN9) && (to_prop & ENC_UNICODE))
+ {
+ /* Internal latin9 -> utf-8 conversion. */
+ vcp->vc_type = CONV_9_TO_UTF8;
+ vcp->vc_factor = 3; /* up to three as long (euro sign) */
+ }
+! else if ((from_prop & ENC_UNICODE) && (to_prop & ENC_LATIN1))
+ {
+ /* Internal utf-8 -> latin1 conversion. */
+ vcp->vc_type = CONV_TO_LATIN1;
+ }
+! else if ((from_prop & ENC_UNICODE) && (to_prop & ENC_LATIN9))
+ {
+ /* Internal utf-8 -> latin9 conversion. */
+ vcp->vc_type = CONV_TO_LATIN9;
+ }
+ #ifdef WIN3264
+ /* Win32-specific codepage <-> codepage conversion without iconv. */
+! else if (((from_prop & ENC_UNICODE) || encname2codepage(from) > 0)
+! && ((to_prop & ENC_UNICODE) || encname2codepage(to) > 0))
+ {
+ vcp->vc_type = CONV_CODEPAGE;
+ vcp->vc_factor = 2; /* up to twice as long */
+! vcp->vc_cpfrom = (from_prop & ENC_UNICODE) ? 0 : encname2codepage(from);
+! vcp->vc_cpto = (to_prop & ENC_UNICODE) ? 0 : encname2codepage(to);
+ }
+ #endif
+ #ifdef MACOS_X
+--- 5878,5923 ----
+
+ from_prop = enc_canon_props(from);
+ to_prop = enc_canon_props(to);
+! if (from_unicode_is_utf8)
+! from_is_utf8 = from_prop & ENC_UNICODE;
+! else
+! from_is_utf8 = from_prop == ENC_UNICODE;
+! if (to_unicode_is_utf8)
+! to_is_utf8 = to_prop & ENC_UNICODE;
+! else
+! to_is_utf8 = to_prop == ENC_UNICODE;
+!
+! if ((from_prop & ENC_LATIN1) && to_is_utf8)
+ {
+ /* Internal latin1 -> utf-8 conversion. */
+ vcp->vc_type = CONV_TO_UTF8;
+ vcp->vc_factor = 2; /* up to twice as long */
+ }
+! else if ((from_prop & ENC_LATIN9) && to_is_utf8)
+ {
+ /* Internal latin9 -> utf-8 conversion. */
+ vcp->vc_type = CONV_9_TO_UTF8;
+ vcp->vc_factor = 3; /* up to three as long (euro sign) */
+ }
+! else if (from_is_utf8 && (to_prop & ENC_LATIN1))
+ {
+ /* Internal utf-8 -> latin1 conversion. */
+ vcp->vc_type = CONV_TO_LATIN1;
+ }
+! else if (from_is_utf8 && (to_prop & ENC_LATIN9))
+ {
+ /* Internal utf-8 -> latin9 conversion. */
+ vcp->vc_type = CONV_TO_LATIN9;
+ }
+ #ifdef WIN3264
+ /* Win32-specific codepage <-> codepage conversion without iconv. */
+! else if ((from_is_utf8 || encname2codepage(from) > 0)
+! && (to_is_utf8 || encname2codepage(to) > 0))
+ {
+ vcp->vc_type = CONV_CODEPAGE;
+ vcp->vc_factor = 2; /* up to twice as long */
+! vcp->vc_cpfrom = from_is_utf8 ? 0 : encname2codepage(from);
+! vcp->vc_cpto = to_is_utf8 ? 0 : encname2codepage(to);
+ }
+ #endif
+ #ifdef MACOS_X
+***************
+*** 5894,5900 ****
+ {
+ vcp->vc_type = CONV_MAC_LATIN1;
+ }
+! else if ((from_prop & ENC_MACROMAN) && (to_prop & ENC_UNICODE))
+ {
+ vcp->vc_type = CONV_MAC_UTF8;
+ vcp->vc_factor = 2; /* up to twice as long */
+--- 5925,5931 ----
+ {
+ vcp->vc_type = CONV_MAC_LATIN1;
+ }
+! else if ((from_prop & ENC_MACROMAN) && to_is_utf8)
+ {
+ vcp->vc_type = CONV_MAC_UTF8;
+ vcp->vc_factor = 2; /* up to twice as long */
+***************
+*** 5903,5909 ****
+ {
+ vcp->vc_type = CONV_LATIN1_MAC;
+ }
+! else if ((from_prop & ENC_UNICODE) && (to_prop & ENC_MACROMAN))
+ {
+ vcp->vc_type = CONV_UTF8_MAC;
+ }
+--- 5934,5940 ----
+ {
+ vcp->vc_type = CONV_LATIN1_MAC;
+ }
+! else if (from_is_utf8 && (to_prop & ENC_MACROMAN))
+ {
+ vcp->vc_type = CONV_UTF8_MAC;
+ }
+***************
+*** 5913,5920 ****
+ {
+ /* Use iconv() for conversion. */
+ vcp->vc_fd = (iconv_t)my_iconv_open(
+! (to_prop & ENC_UNICODE) ? (char_u *)"utf-8" : to,
+! (from_prop & ENC_UNICODE) ? (char_u *)"utf-8" : from);
+ if (vcp->vc_fd != (iconv_t)-1)
+ {
+ vcp->vc_type = CONV_ICONV;
+--- 5944,5951 ----
+ {
+ /* Use iconv() for conversion. */
+ vcp->vc_fd = (iconv_t)my_iconv_open(
+! to_is_utf8 ? (char_u *)"utf-8" : to,
+! from_is_utf8 ? (char_u *)"utf-8" : from);
+ if (vcp->vc_fd != (iconv_t)-1)
+ {
+ vcp->vc_type = CONV_ICONV;
+***************
+*** 6170,6178 ****
+
+ # ifdef USE_ICONV
+ case CONV_ICONV: /* conversion with output_conv.vc_fd */
+! retval = iconv_string(vcp, ptr, len, unconvlenp);
+! if (retval != NULL && lenp != NULL)
+! *lenp = (int)STRLEN(retval);
+ break;
+ # endif
+ # ifdef WIN3264
+--- 6201,6207 ----
+
+ # ifdef USE_ICONV
+ case CONV_ICONV: /* conversion with output_conv.vc_fd */
+! retval = iconv_string(vcp, ptr, len, unconvlenp, lenp);
+ break;
+ # endif
+ # ifdef WIN3264
+*** ../vim-7.2.200/src/option.c 2009-05-17 13:30:58.000000000 +0200
+--- src/option.c 2009-06-12 21:09:51.000000000 +0200
+***************
+*** 7024,7029 ****
+--- 7024,7030 ----
+ int new_unnamed = FALSE;
+ int new_autoselect = FALSE;
+ int new_autoselectml = FALSE;
++ int new_html = FALSE;
+ regprog_T *new_exclude_prog = NULL;
+ char_u *errmsg = NULL;
+ char_u *p;
+***************
+*** 7047,7052 ****
+--- 7048,7058 ----
+ new_autoselectml = TRUE;
+ p += 12;
+ }
++ else if (STRNCMP(p, "html", 4) == 0 && (p[4] == ',' || p[4] == NUL))
++ {
++ new_html = TRUE;
++ p += 4;
++ }
+ else if (STRNCMP(p, "exclude:", 8) == 0 && new_exclude_prog == NULL)
+ {
+ p += 8;
+***************
+*** 7068,7073 ****
+--- 7074,7080 ----
+ clip_unnamed = new_unnamed;
+ clip_autoselect = new_autoselect;
+ clip_autoselectml = new_autoselectml;
++ clip_html = new_html;
+ vim_free(clip_exclude_prog);
+ clip_exclude_prog = new_exclude_prog;
+ }
+*** ../vim-7.2.200/src/version.c 2009-06-16 15:12:11.000000000 +0200
+--- src/version.c 2009-06-16 15:14:02.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 201,
+ /**/
+
+--
+How To Keep A Healthy Level Of Insanity:
+13. Go to a poetry recital and ask why the poems don't rhyme.
+
+ /// 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/vim/vim-7.2/7.2.202 b/vim/vim-7.2/7.2.202
new file mode 100644
index 0000000..2c24909
--- /dev/null
+++ b/vim/vim-7.2/7.2.202
@@ -0,0 +1,62 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.202
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.202
+Problem: BufWipeout autocommand that edits another buffer causes problems.
+Solution: Check for the situation, give an error and quit the operation.
+Files: src/fileio.c
+
+
+*** ../vim-7.2.201/src/fileio.c 2009-05-16 17:29:37.000000000 +0200
+--- src/fileio.c 2009-06-11 21:22:37.000000000 +0200
+***************
+*** 4824,4829 ****
+--- 4824,4831 ----
+ char_u *sfname;
+ {
+ #ifdef FEAT_AUTOCMD
++ buf_T *buf = curbuf;
++
+ /* It's like the unnamed buffer is deleted.... */
+ if (curbuf->b_p_bl)
+ apply_autocmds(EVENT_BUFDELETE, NULL, NULL, FALSE, curbuf);
+***************
+*** 4832,4837 ****
+--- 4834,4845 ----
+ if (aborting()) /* autocmds may abort script processing */
+ return FAIL;
+ # endif
++ if (curbuf != buf)
++ {
++ /* We are in another buffer now, don't do the renaming. */
++ EMSG(_(e_auchangedbuf));
++ return FAIL;
++ }
+ #endif
+
+ if (setfname(curbuf, fname, sfname, FALSE) == OK)
+*** ../vim-7.2.201/src/version.c 2009-06-16 15:23:07.000000000 +0200
+--- src/version.c 2009-06-16 15:28:31.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 202,
+ /**/
+
+--
+How To Keep A Healthy Level Of Insanity:
+14. Put mosquito netting around your work area. Play a tape of jungle
+ sounds all day.
+
+ /// 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/vim/vim-7.2/7.2.203 b/vim/vim-7.2/7.2.203
new file mode 100644
index 0000000..c132248
--- /dev/null
+++ b/vim/vim-7.2/7.2.203
@@ -0,0 +1,1496 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.203
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.203
+Problem: When reloading a buffer or doing anything else with a buffer that
+ is not displayed in a visible window, autocommands may be applied
+ to the current window, folds messed up, etc.
+Solution: Instead of using the current window for the hidden buffer use a
+ special window, splitting the current one temporarily.
+Files: src/fileio.c, src/globals.h, src/gui.c, src/if_perl.xs,
+ src/proto/gui.pro, src/proto/window.pro, src/screen.c,
+ src/structs.h, src/window.c
+
+
+*** ../vim-7.2.202/src/fileio.c 2009-06-16 15:35:46.000000000 +0200
+--- src/fileio.c 2009-06-11 21:22:37.000000000 +0200
+***************
+*** 8365,8371 ****
+
+ /* Execute the modeline settings, but don't set window-local
+ * options if we are using the current window for another buffer. */
+! do_modelines(aco.save_curwin == NULL ? OPT_NOWIN : 0);
+
+ /* restore the current window */
+ aucmd_restbuf(&aco);
+--- 8365,8371 ----
+
+ /* Execute the modeline settings, but don't set window-local
+ * options if we are using the current window for another buffer. */
+! do_modelines(curwin == aucmd_win ? OPT_NOWIN : 0);
+
+ /* restore the current window */
+ aucmd_restbuf(&aco);
+***************
+*** 8381,8388 ****
+
+ /*
+ * Prepare for executing autocommands for (hidden) buffer "buf".
+! * Search a window for the current buffer. Save the cursor position and
+! * screen offset.
+ * Set "curbuf" and "curwin" to match "buf".
+ * When FEAT_AUTOCMD is not defined another version is used, see below.
+ */
+--- 8381,8388 ----
+
+ /*
+ * Prepare for executing autocommands for (hidden) buffer "buf".
+! * Search for a visible window containing the current buffer. If there isn't
+! * one then use "aucmd_win".
+ * Set "curbuf" and "curwin" to match "buf".
+ * When FEAT_AUTOCMD is not defined another version is used, see below.
+ */
+***************
+*** 8392,8399 ****
+ buf_T *buf; /* new curbuf */
+ {
+ win_T *win;
+!
+! aco->new_curbuf = buf;
+
+ /* Find a window that is for the new buffer */
+ if (buf == curbuf) /* be quick when buf is curbuf */
+--- 8392,8400 ----
+ buf_T *buf; /* new curbuf */
+ {
+ win_T *win;
+! #ifdef FEAT_WINDOWS
+! int save_ea;
+! #endif
+
+ /* Find a window that is for the new buffer */
+ if (buf == curbuf) /* be quick when buf is curbuf */
+***************
+*** 8407,8448 ****
+ win = NULL;
+ #endif
+
+! /*
+! * Prefer to use an existing window for the buffer, it has the least side
+! * effects (esp. if "buf" is curbuf).
+! * Otherwise, use curwin for "buf". It might make some items in the
+! * window invalid. At least save the cursor and topline.
+! */
+ if (win != NULL)
+ {
+! /* there is a window for "buf", make it the curwin */
+! aco->save_curwin = curwin;
+ curwin = win;
+- aco->save_buf = win->w_buffer;
+- aco->new_curwin = win;
+ }
+ else
+ {
+! /* there is no window for "buf", use curwin */
+! aco->save_curwin = NULL;
+! aco->save_buf = curbuf;
+! --curbuf->b_nwindows;
+ curwin->w_buffer = buf;
+ ++buf->b_nwindows;
+
+! /* save cursor and topline, set them to safe values */
+! aco->save_cursor = curwin->w_cursor;
+! curwin->w_cursor.lnum = 1;
+! curwin->w_cursor.col = 0;
+! aco->save_topline = curwin->w_topline;
+! curwin->w_topline = 1;
+! #ifdef FEAT_DIFF
+! aco->save_topfill = curwin->w_topfill;
+! curwin->w_topfill = 0;
+ #endif
+ }
+-
+ curbuf = buf;
+ }
+
+ /*
+--- 8408,8460 ----
+ win = NULL;
+ #endif
+
+! /* Allocate "aucmd_win" when needed. If this fails (out of memory) fall
+! * back to using the current window. */
+! if (win == NULL && aucmd_win == NULL)
+! {
+! win_alloc_aucmd_win();
+! if (aucmd_win == NULL)
+! win = curwin;
+! }
+!
+! aco->save_curwin = curwin;
+! aco->save_curbuf = curbuf;
+ if (win != NULL)
+ {
+! /* There is a window for "buf" in the current tab page, make it the
+! * curwin. This is preferred, it has the least side effects (esp. if
+! * "buf" is curbuf). */
+ curwin = win;
+ }
+ else
+ {
+! /* There is no window for "buf", use "aucmd_win". To minimize the side
+! * effects, insert it in a the current tab page.
+! * Anything related to a window (e.g., setting folds) may have
+! * unexpected results. */
+! curwin = aucmd_win;
+ curwin->w_buffer = buf;
+ ++buf->b_nwindows;
+
+! #ifdef FEAT_WINDOWS
+! /* Split the current window, put the aucmd_win in the upper half. */
+! make_snapshot(SNAP_AUCMD_IDX);
+! save_ea = p_ea;
+! p_ea = FALSE;
+! (void)win_split_ins(0, WSP_TOP, aucmd_win, 0);
+! (void)win_comp_pos(); /* recompute window positions */
+! p_ea = save_ea;
+! #endif
+! /* set cursor and topline to safe values */
+! curwin_init();
+! #ifdef FEAT_VERTSPLIT
+! curwin->w_wincol = 0;
+! curwin->w_width = Columns;
+ #endif
+ }
+ curbuf = buf;
++ aco->new_curwin = curwin;
++ aco->new_curbuf = curbuf;
+ }
+
+ /*
+***************
+*** 8454,8474 ****
+ aucmd_restbuf(aco)
+ aco_save_T *aco; /* structure holding saved values */
+ {
+! if (aco->save_curwin != NULL)
+ {
+ /* restore curwin */
+ #ifdef FEAT_WINDOWS
+ if (win_valid(aco->save_curwin))
+ #endif
+ {
+! /* restore the buffer which was previously edited by curwin, if
+! * it's still the same window and it's valid */
+ if (curwin == aco->new_curwin
+! && buf_valid(aco->save_buf)
+! && aco->save_buf->b_ml.ml_mfp != NULL)
+ {
+ --curbuf->b_nwindows;
+! curbuf = aco->save_buf;
+ curwin->w_buffer = curbuf;
+ ++curbuf->b_nwindows;
+ }
+--- 8466,8551 ----
+ aucmd_restbuf(aco)
+ aco_save_T *aco; /* structure holding saved values */
+ {
+! #ifdef FEAT_WINDOWS
+! int dummy;
+! #endif
+!
+! if (aco->new_curwin == aucmd_win)
+! {
+! --curbuf->b_nwindows;
+! #ifdef FEAT_WINDOWS
+! /* Find "aucmd_win", it can't be closed, but it may be in another tab
+! * page. */
+! if (curwin != aucmd_win)
+! {
+! tabpage_T *tp;
+! win_T *wp;
+!
+! FOR_ALL_TAB_WINDOWS(tp, wp)
+! {
+! if (wp == aucmd_win)
+! {
+! if (tp != curtab)
+! goto_tabpage_tp(tp);
+! win_goto(aucmd_win);
+! break;
+! }
+! }
+! }
+!
+! /* Remove the window and frame from the tree of frames. */
+! (void)winframe_remove(curwin, &dummy, NULL);
+! win_remove(curwin, NULL);
+! last_status(FALSE); /* may need to remove last status line */
+! restore_snapshot(SNAP_AUCMD_IDX, FALSE);
+! (void)win_comp_pos(); /* recompute window positions */
+!
+! if (win_valid(aco->save_curwin))
+! curwin = aco->save_curwin;
+! else
+! /* Hmm, original window disappeared. Just use the first one. */
+! curwin = firstwin;
+! # ifdef FEAT_EVAL
+! vars_clear(&aucmd_win->w_vars.dv_hashtab); /* free all w: variables */
+! # endif
+! #else
+! curwin = aco->save_curwin;
+! #endif
+! curbuf = curwin->w_buffer;
+!
+! /* the buffer contents may have changed */
+! check_cursor();
+! if (curwin->w_topline > curbuf->b_ml.ml_line_count)
+! {
+! curwin->w_topline = curbuf->b_ml.ml_line_count;
+! #ifdef FEAT_DIFF
+! curwin->w_topfill = 0;
+! #endif
+! }
+! #if defined(FEAT_GUI)
+! /* Hide the scrollbars from the aucmd_win and update. */
+! gui_mch_enable_scrollbar(&aucmd_win->w_scrollbars[SBAR_LEFT], FALSE);
+! gui_mch_enable_scrollbar(&aucmd_win->w_scrollbars[SBAR_RIGHT], FALSE);
+! gui_may_update_scrollbars();
+! #endif
+! }
+! else
+ {
+ /* restore curwin */
+ #ifdef FEAT_WINDOWS
+ if (win_valid(aco->save_curwin))
+ #endif
+ {
+! /* Restore the buffer which was previously edited by curwin, if
+! * it was chagned, we are still the same window and the buffer is
+! * valid. */
+ if (curwin == aco->new_curwin
+! && curbuf != aco->new_curbuf
+! && buf_valid(aco->new_curbuf)
+! && aco->new_curbuf->b_ml.ml_mfp != NULL)
+ {
+ --curbuf->b_nwindows;
+! curbuf = aco->new_curbuf;
+ curwin->w_buffer = curbuf;
+ ++curbuf->b_nwindows;
+ }
+***************
+*** 8477,8510 ****
+ curbuf = curwin->w_buffer;
+ }
+ }
+- else
+- {
+- /* restore buffer for curwin if it still exists and is loaded */
+- if (buf_valid(aco->save_buf) && aco->save_buf->b_ml.ml_mfp != NULL)
+- {
+- --curbuf->b_nwindows;
+- curbuf = aco->save_buf;
+- curwin->w_buffer = curbuf;
+- ++curbuf->b_nwindows;
+- curwin->w_cursor = aco->save_cursor;
+- check_cursor();
+- /* check topline < line_count, in case lines got deleted */
+- if (aco->save_topline <= curbuf->b_ml.ml_line_count)
+- {
+- curwin->w_topline = aco->save_topline;
+- #ifdef FEAT_DIFF
+- curwin->w_topfill = aco->save_topfill;
+- #endif
+- }
+- else
+- {
+- curwin->w_topline = curbuf->b_ml.ml_line_count;
+- #ifdef FEAT_DIFF
+- curwin->w_topfill = 0;
+- #endif
+- }
+- }
+- }
+ }
+
+ static int autocmd_nested = FALSE;
+--- 8554,8559 ----
+***************
+*** 9419,9427 ****
+ aco_save_T *aco; /* structure to save values in */
+ buf_T *buf; /* new curbuf */
+ {
+! aco->save_buf = curbuf;
+ curbuf = buf;
+ curwin->w_buffer = buf;
+ }
+
+ /*
+--- 9468,9478 ----
+ aco_save_T *aco; /* structure to save values in */
+ buf_T *buf; /* new curbuf */
+ {
+! aco->save_curbuf = curbuf;
+! --curbuf->b_nwindows;
+ curbuf = buf;
+ curwin->w_buffer = buf;
++ ++curbuf->b_nwindows;
+ }
+
+ /*
+***************
+*** 9432,9439 ****
+ aucmd_restbuf(aco)
+ aco_save_T *aco; /* structure holding saved values */
+ {
+! curbuf = aco->save_buf;
+ curwin->w_buffer = curbuf;
+ }
+
+ #endif /* FEAT_AUTOCMD */
+--- 9483,9492 ----
+ aucmd_restbuf(aco)
+ aco_save_T *aco; /* structure holding saved values */
+ {
+! --curbuf->b_nwindows;
+! curbuf = aco->save_curbuf;
+ curwin->w_buffer = curbuf;
++ ++curbuf->b_nwindows;
+ }
+
+ #endif /* FEAT_AUTOCMD */
+*** ../vim-7.2.202/src/globals.h 2009-06-16 15:23:07.000000000 +0200
+--- src/globals.h 2009-06-12 21:10:30.000000000 +0200
+***************
+*** 539,544 ****
+--- 539,548 ----
+
+ EXTERN win_T *curwin; /* currently active window */
+
++ #ifdef FEAT_AUTOCMD
++ EXTERN win_T *aucmd_win; /* window used in aucmd_prepbuf() */
++ #endif
++
+ /*
+ * The window layout is kept in a tree of frames. topframe points to the top
+ * of the tree.
+*** ../vim-7.2.202/src/gui.c 2009-05-21 23:25:38.000000000 +0200
+--- src/gui.c 2009-06-11 20:58:05.000000000 +0200
+***************
+*** 3879,3884 ****
+--- 3879,3899 ----
+ * Scrollbar stuff:
+ */
+
++ /*
++ * Called when something in the window layout has changed.
++ */
++ void
++ gui_may_update_scrollbars()
++ {
++ if (gui.in_use && starting == 0)
++ {
++ out_flush();
++ gui_init_which_components(NULL);
++ gui_update_scrollbars(TRUE);
++ }
++ need_mouse_correct = TRUE;
++ }
++
+ void
+ gui_update_scrollbars(force)
+ int force; /* Force all scrollbars to get updated */
+*** ../vim-7.2.202/src/if_perl.xs 2008-12-03 13:18:16.000000000 +0100
+--- src/if_perl.xs 2009-06-03 17:52:51.000000000 +0200
+***************
+*** 1234,1240 ****
+ {
+ ml_delete(lnum, 0);
+ deleted_lines_mark(lnum, 1L);
+! if (aco.save_buf == curbuf)
+ check_cursor();
+ }
+
+--- 1236,1242 ----
+ {
+ ml_delete(lnum, 0);
+ deleted_lines_mark(lnum, 1L);
+! if (aco.save_curbuf == curbuf)
+ check_cursor();
+ }
+
+*** ../vim-7.2.202/src/proto/gui.pro 2007-05-05 19:42:19.000000000 +0200
+--- src/proto/gui.pro 2009-06-11 20:58:08.000000000 +0200
+***************
+*** 43,48 ****
+--- 43,49 ----
+ void gui_create_scrollbar __ARGS((scrollbar_T *sb, int type, win_T *wp));
+ scrollbar_T *gui_find_scrollbar __ARGS((long ident));
+ void gui_drag_scrollbar __ARGS((scrollbar_T *sb, long value, int still_dragging));
++ void gui_may_update_scrollbars __ARGS((void));
+ void gui_update_scrollbars __ARGS((int force));
+ int gui_do_scroll __ARGS((void));
+ int gui_do_horiz_scroll __ARGS((void));
+*** ../vim-7.2.202/src/proto/window.pro 2007-07-26 22:57:45.000000000 +0200
+--- src/proto/window.pro 2009-06-10 21:20:39.000000000 +0200
+***************
+*** 1,6 ****
+--- 1,7 ----
+ /* window.c */
+ void do_window __ARGS((int nchar, long Prenum, int xchar));
+ int win_split __ARGS((int size, int flags));
++ int win_split_ins __ARGS((int size, int flags, win_T *newwin, int dir));
+ int win_valid __ARGS((win_T *win));
+ int win_count __ARGS((void));
+ int make_windows __ARGS((int count, int vertical));
+***************
+*** 10,18 ****
+--- 11,21 ----
+ void win_close __ARGS((win_T *win, int free_buf));
+ void win_close_othertab __ARGS((win_T *win, int free_buf, tabpage_T *tp));
+ void win_free_all __ARGS((void));
++ win_T *winframe_remove __ARGS((win_T *win, int *dirp, tabpage_T *tp));
+ void close_others __ARGS((int message, int forceit));
+ void curwin_init __ARGS((void));
+ int win_alloc_first __ARGS((void));
++ void win_alloc_aucmd_win __ARGS((void));
+ void win_init_size __ARGS((void));
+ void free_tabpage __ARGS((tabpage_T *tp));
+ int win_new_tabpage __ARGS((int after));
+***************
+*** 30,35 ****
+--- 33,40 ----
+ void win_enter __ARGS((win_T *wp, int undo_sync));
+ win_T *buf_jump_open_win __ARGS((buf_T *buf));
+ win_T *buf_jump_open_tab __ARGS((buf_T *buf));
++ void win_append __ARGS((win_T *after, win_T *wp));
++ void win_remove __ARGS((win_T *wp, tabpage_T *tp));
+ int win_alloc_lines __ARGS((win_T *wp));
+ void win_free_lsize __ARGS((win_T *wp));
+ void shell_new_rows __ARGS((void));
+***************
+*** 58,63 ****
+--- 63,70 ----
+ int min_rows __ARGS((void));
+ int only_one_window __ARGS((void));
+ void check_lnums __ARGS((int do_curwin));
++ void make_snapshot __ARGS((int idx));
++ void restore_snapshot __ARGS((int idx, int close_curwin));
+ int win_hasvertsplit __ARGS((void));
+ int match_add __ARGS((win_T *wp, char_u *grp, char_u *pat, int prio, int id));
+ int match_delete __ARGS((win_T *wp, int id, int perr));
+*** ../vim-7.2.202/src/screen.c 2009-05-17 13:30:58.000000000 +0200
+--- src/screen.c 2009-06-10 16:41:45.000000000 +0200
+***************
+*** 7495,7500 ****
+--- 7495,7504 ----
+ #endif
+ }
+ }
++ #ifdef FEAT_AUTOCMD
++ if (aucmd_win != NULL && win_alloc_lines(aucmd_win) == FAIL)
++ outofmem = TRUE;
++ #endif
+ #ifdef FEAT_WINDOWS
+ give_up:
+ #endif
+*** ../vim-7.2.202/src/structs.h 2009-05-16 16:36:25.000000000 +0200
+--- src/structs.h 2009-06-13 12:51:56.000000000 +0200
+***************
+*** 1621,1626 ****
+--- 1621,1634 ----
+ };
+ #endif
+
++ #define SNAP_HELP_IDX 0
++ #ifdef FEAT_AUTOCMD
++ # define SNAP_AUCMD_IDX 1
++ # define SNAP_COUNT 2
++ #else
++ # define SNAP_COUNT 1
++ #endif
++
+ /*
+ * Tab pages point to the top frame of each tab page.
+ * Note: Most values are NOT valid for the current tab page! Use "curwin",
+***************
+*** 1649,1655 ****
+ buf_T *(tp_diffbuf[DB_COUNT]);
+ int tp_diff_invalid; /* list of diffs is outdated */
+ #endif
+! frame_T *tp_snapshot; /* window layout snapshot */
+ #ifdef FEAT_EVAL
+ dictitem_T tp_winvar; /* variable for "t:" Dictionary */
+ dict_T tp_vars; /* internal variables, local to tab page */
+--- 1657,1663 ----
+ buf_T *(tp_diffbuf[DB_COUNT]);
+ int tp_diff_invalid; /* list of diffs is outdated */
+ #endif
+! frame_T *(tp_snapshot[SNAP_COUNT]); /* window layout snapshots */
+ #ifdef FEAT_EVAL
+ dictitem_T tp_winvar; /* variable for "t:" Dictionary */
+ dict_T tp_vars; /* internal variables, local to tab page */
+***************
+*** 2276,2291 ****
+ */
+ typedef struct
+ {
+! buf_T *save_buf; /* saved curbuf */
+ #ifdef FEAT_AUTOCMD
+! buf_T *new_curbuf; /* buffer to be used */
+! win_T *save_curwin; /* saved curwin, NULL if it didn't change */
+! win_T *new_curwin; /* new curwin if save_curwin != NULL */
+! pos_T save_cursor; /* saved cursor pos of save_curwin */
+! linenr_T save_topline; /* saved topline of save_curwin */
+! # ifdef FEAT_DIFF
+! int save_topfill; /* saved topfill of save_curwin */
+! # endif
+ #endif
+ } aco_save_T;
+
+--- 2284,2294 ----
+ */
+ typedef struct
+ {
+! buf_T *save_curbuf; /* saved curbuf */
+ #ifdef FEAT_AUTOCMD
+! win_T *save_curwin; /* saved curwin */
+! win_T *new_curwin; /* new curwin */
+! buf_T *new_curbuf; /* new curbuf */
+ #endif
+ } aco_save_T;
+
+*** ../vim-7.2.202/src/window.c 2009-05-21 23:25:38.000000000 +0200
+--- src/window.c 2009-06-12 22:29:33.000000000 +0200
+***************
+*** 11,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
+--- 11,18 ----
+
+ static int path_is_url __ARGS((char_u *p));
+ #if defined(FEAT_WINDOWS) || defined(PROTO)
+ static void win_init __ARGS((win_T *newp, win_T *oldp, int flags));
++ static void win_init_some __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
+***************
+*** 23,30 ****
+ static void win_totop __ARGS((int size, int flags));
+ static void win_equal_rec __ARGS((win_T *next_curwin, int current, frame_T *topfr, int dir, int col, int row, int width, int height));
+ static int last_window __ARGS((void));
+ static win_T *win_free_mem __ARGS((win_T *win, int *dirp, tabpage_T *tp));
+- static win_T *winframe_remove __ARGS((win_T *win, int *dirp, tabpage_T *tp));
+ static frame_T *win_altframe __ARGS((win_T *win, tabpage_T *tp));
+ static tabpage_T *alt_tabpage __ARGS((void));
+ static win_T *frame2win __ARGS((frame_T *frp));
+--- 23,30 ----
+ static void win_totop __ARGS((int size, int flags));
+ static void win_equal_rec __ARGS((win_T *next_curwin, int current, frame_T *topfr, int dir, int col, int row, int width, int height));
+ static int last_window __ARGS((void));
++ static int one_window __ARGS((void));
+ static win_T *win_free_mem __ARGS((win_T *win, int *dirp, tabpage_T *tp));
+ static frame_T *win_altframe __ARGS((win_T *win, tabpage_T *tp));
+ static tabpage_T *alt_tabpage __ARGS((void));
+ static win_T *frame2win __ARGS((frame_T *frp));
+***************
+*** 41,46 ****
+--- 41,47 ----
+ #endif
+ #endif
+ static int win_alloc_firstwin __ARGS((win_T *oldwin));
++ static void new_frame __ARGS((win_T *wp));
+ #if defined(FEAT_WINDOWS) || defined(PROTO)
+ static tabpage_T *alloc_tabpage __ARGS((void));
+ static int leave_tabpage __ARGS((buf_T *new_curbuf));
+***************
+*** 49,56 ****
+ static int frame_minheight __ARGS((frame_T *topfrp, win_T *next_curwin));
+ static void win_enter_ext __ARGS((win_T *wp, int undo_sync, int no_curwin));
+ static void win_free __ARGS((win_T *wp, tabpage_T *tp));
+- static void win_append __ARGS((win_T *, win_T *));
+- static void win_remove __ARGS((win_T *, tabpage_T *tp));
+ static void frame_append __ARGS((frame_T *after, frame_T *frp));
+ static void frame_insert __ARGS((frame_T *before, frame_T *frp));
+ static void frame_remove __ARGS((frame_T *frp));
+--- 50,55 ----
+***************
+*** 62,78 ****
+ static void frame_add_height __ARGS((frame_T *frp, int n));
+ static void last_status_rec __ARGS((frame_T *fr, int statusline));
+
+- static void make_snapshot __ARGS((void));
+ static void make_snapshot_rec __ARGS((frame_T *fr, frame_T **frp));
+! static void clear_snapshot __ARGS((tabpage_T *tp));
+ static void clear_snapshot_rec __ARGS((frame_T *fr));
+- static void restore_snapshot __ARGS((int close_curwin));
+ static int check_snapshot_rec __ARGS((frame_T *sn, frame_T *fr));
+ static win_T *restore_snapshot_rec __ARGS((frame_T *sn, frame_T *fr));
+
+ #endif /* FEAT_WINDOWS */
+
+! static win_T *win_alloc __ARGS((win_T *after));
+ static void win_new_height __ARGS((win_T *, int));
+
+ #define URL_SLASH 1 /* path_is_url() has found "://" */
+--- 61,75 ----
+ static void frame_add_height __ARGS((frame_T *frp, int n));
+ static void last_status_rec __ARGS((frame_T *fr, int statusline));
+
+ static void make_snapshot_rec __ARGS((frame_T *fr, frame_T **frp));
+! static void clear_snapshot __ARGS((tabpage_T *tp, int idx));
+ static void clear_snapshot_rec __ARGS((frame_T *fr));
+ static int check_snapshot_rec __ARGS((frame_T *sn, frame_T *fr));
+ static win_T *restore_snapshot_rec __ARGS((frame_T *sn, frame_T *fr));
+
+ #endif /* FEAT_WINDOWS */
+
+! static win_T *win_alloc __ARGS((win_T *after, int hidden));
+ static void win_new_height __ARGS((win_T *, int));
+
+ #define URL_SLASH 1 /* path_is_url() has found "://" */
+***************
+*** 259,265 ****
+ /* cursor to previous window with wrap around */
+ case 'W':
+ CHECK_CMDWIN
+! if (lastwin == firstwin && Prenum != 1) /* just one window */
+ beep_flush();
+ else
+ {
+--- 256,262 ----
+ /* cursor to previous window with wrap around */
+ case 'W':
+ CHECK_CMDWIN
+! if (firstwin == lastwin && Prenum != 1) /* just one window */
+ beep_flush();
+ else
+ {
+***************
+*** 343,349 ****
+
+ /* move window to new tab page */
+ case 'T':
+! if (firstwin == lastwin)
+ MSG(_(m_onlyone));
+ else
+ {
+--- 340,346 ----
+
+ /* move window to new tab page */
+ case 'T':
+! if (one_window())
+ MSG(_(m_onlyone));
+ else
+ {
+***************
+*** 679,687 ****
+ /* When creating the help window make a snapshot of the window layout.
+ * Otherwise clear the snapshot, it's now invalid. */
+ if (flags & WSP_HELP)
+! make_snapshot();
+ else
+! clear_snapshot(curtab);
+
+ return win_split_ins(size, flags, NULL, 0);
+ }
+--- 676,684 ----
+ /* When creating the help window make a snapshot of the window layout.
+ * Otherwise clear the snapshot, it's now invalid. */
+ if (flags & WSP_HELP)
+! make_snapshot(SNAP_HELP_IDX);
+ else
+! clear_snapshot(curtab, SNAP_HELP_IDX);
+
+ return win_split_ins(size, flags, NULL, 0);
+ }
+***************
+*** 692,698 ****
+ * top/left/right/bottom.
+ * return FAIL for failure, OK otherwise
+ */
+! static int
+ win_split_ins(size, flags, newwin, dir)
+ int size;
+ int flags;
+--- 689,695 ----
+ * top/left/right/bottom.
+ * return FAIL for failure, OK otherwise
+ */
+! int
+ win_split_ins(size, flags, newwin, dir)
+ int size;
+ int flags;
+***************
+*** 893,906 ****
+ {
+ /* new window below/right of current one */
+ if (newwin == NULL)
+! wp = win_alloc(oldwin);
+ else
+ win_append(oldwin, wp);
+ }
+ else
+ {
+ if (newwin == NULL)
+! wp = win_alloc(oldwin->w_prev);
+ else
+ win_append(oldwin->w_prev, wp);
+ }
+--- 890,903 ----
+ {
+ /* new window below/right of current one */
+ if (newwin == NULL)
+! wp = win_alloc(oldwin, FALSE);
+ else
+ win_append(oldwin, wp);
+ }
+ else
+ {
+ if (newwin == NULL)
+! wp = win_alloc(oldwin->w_prev, FALSE);
+ else
+ win_append(oldwin->w_prev, wp);
+ }
+***************
+*** 910,915 ****
+--- 907,919 ----
+ if (wp == NULL)
+ return FAIL;
+
++ new_frame(wp);
++ if (wp->w_frame == NULL)
++ {
++ win_free(wp, NULL);
++ return FAIL;
++ }
++
+ /* make the contents of the new window the same as the current one */
+ win_init(wp, curwin, flags);
+ }
+***************
+*** 970,982 ****
+ }
+
+ if (newwin == NULL)
+! {
+! /* Create a frame for the new window. */
+! frp = (frame_T *)alloc_clear((unsigned)sizeof(frame_T));
+! frp->fr_layout = FR_LEAF;
+! frp->fr_win = wp;
+! wp->w_frame = frp;
+! }
+ else
+ frp = newwin->w_frame;
+ frp->fr_parent = curfrp->fr_parent;
+--- 974,980 ----
+ }
+
+ if (newwin == NULL)
+! frp = wp->w_frame;
+ else
+ frp = newwin->w_frame;
+ frp->fr_parent = curfrp->fr_parent;
+***************
+*** 1156,1161 ****
+--- 1154,1160 ----
+ return OK;
+ }
+
++
+ /*
+ * Initialize window "newp" from window "oldp".
+ * Used when splitting a window and when creating a new tab page.
+***************
+*** 1204,1217 ****
+ if (oldp->w_localdir != NULL)
+ newp->w_localdir = vim_strsave(oldp->w_localdir);
+
+! /* Use the same argument list. */
+! newp->w_alist = oldp->w_alist;
+! ++newp->w_alist->al_refcount;
+! newp->w_arg_idx = oldp->w_arg_idx;
+!
+! /*
+! * copy tagstack and options from existing window
+! */
+ for (i = 0; i < oldp->w_tagstacklen; i++)
+ {
+ newp->w_tagstack[i] = oldp->w_tagstack[i];
+--- 1203,1209 ----
+ if (oldp->w_localdir != NULL)
+ newp->w_localdir = vim_strsave(oldp->w_localdir);
+
+! /* copy tagstack and folds */
+ for (i = 0; i < oldp->w_tagstacklen; i++)
+ {
+ newp->w_tagstack[i] = oldp->w_tagstack[i];
+***************
+*** 1221,1230 ****
+ }
+ newp->w_tagstackidx = oldp->w_tagstackidx;
+ newp->w_tagstacklen = oldp->w_tagstacklen;
+- win_copy_options(oldp, newp);
+ # ifdef FEAT_FOLDING
+ copyFoldingState(oldp, newp);
+ # endif
+ }
+
+ #endif /* FEAT_WINDOWS */
+--- 1213,1241 ----
+ }
+ newp->w_tagstackidx = oldp->w_tagstackidx;
+ newp->w_tagstacklen = oldp->w_tagstacklen;
+ # ifdef FEAT_FOLDING
+ copyFoldingState(oldp, newp);
+ # endif
++
++ win_init_some(newp, oldp);
++ }
++
++ /*
++ * Initialize window "newp" from window"old".
++ * Only the essential things are copied.
++ */
++ static void
++ win_init_some(newp, oldp)
++ win_T *newp;
++ win_T *oldp;
++ {
++ /* Use the same argument list. */
++ newp->w_alist = oldp->w_alist;
++ ++newp->w_alist->al_refcount;
++ newp->w_arg_idx = oldp->w_arg_idx;
++
++ /* copy options from existing window */
++ win_copy_options(oldp, newp);
+ }
+
+ #endif /* FEAT_WINDOWS */
+***************
+*** 1565,1579 ****
+ #if defined(FEAT_GUI) && defined(FEAT_VERTSPLIT)
+ /* When 'guioptions' includes 'L' or 'R' may have to remove or add
+ * scrollbars. Have to update them anyway. */
+! if (gui.in_use)
+! {
+! out_flush();
+! gui_init_which_components(NULL);
+! gui_update_scrollbars(TRUE);
+! }
+! need_mouse_correct = TRUE;
+ #endif
+-
+ }
+
+ /*
+--- 1576,1583 ----
+ #if defined(FEAT_GUI) && defined(FEAT_VERTSPLIT)
+ /* When 'guioptions' includes 'L' or 'R' may have to remove or add
+ * scrollbars. Have to update them anyway. */
+! gui_may_update_scrollbars();
+ #endif
+ }
+
+ /*
+***************
+*** 2048,2060 ****
+ }
+
+ /*
+! * Return TRUE if the current window is the only window that exists.
+ * Returns FALSE if there is a window, possibly in another tab page.
+ */
+ static int
+ last_window()
+ {
+! return (lastwin == firstwin && first_tabpage->tp_next == NULL);
+ }
+
+ /*
+--- 2052,2091 ----
+ }
+
+ /*
+! * Return TRUE if the current window is the only window that exists (ignoring
+! * "aucmd_win").
+ * Returns FALSE if there is a window, possibly in another tab page.
+ */
+ static int
+ last_window()
+ {
+! return (one_window() && first_tabpage->tp_next == NULL);
+! }
+!
+! /*
+! * Return TRUE if there is only one window other than "aucmd_win" in the
+! * current tab page.
+! */
+! static int
+! one_window()
+! {
+! #ifdef FEAT_AUTOCMD
+! win_T *wp;
+! int seen_one = FALSE;
+!
+! FOR_ALL_WINDOWS(wp)
+! {
+! if (wp != aucmd_win)
+! {
+! if (seen_one)
+! return FALSE;
+! seen_one = TRUE;
+! }
+! }
+! return TRUE;
+! #else
+! return firstwin == lastwin;
+! #endif
+ }
+
+ /*
+***************
+*** 2083,2088 ****
+--- 2114,2132 ----
+ return;
+ }
+
++ #ifdef FEAT_AUTOCMD
++ if (win == aucmd_win)
++ {
++ EMSG(_("E813: Cannot close autocmd window"));
++ return;
++ }
++ if ((firstwin == aucmd_win || lastwin == aucmd_win) && one_window())
++ {
++ EMSG(_("E814: Cannot close window, only autocmd window would remain"));
++ return;
++ }
++ #endif
++
+ /*
+ * When closing the last window in a tab page first go to another tab
+ * page and then close the window and the tab page. This avoids that
+***************
+*** 2112,2118 ****
+ if (win->w_buffer->b_help)
+ help_window = TRUE;
+ else
+! clear_snapshot(curtab);
+
+ #ifdef FEAT_AUTOCMD
+ if (win == curwin)
+--- 2156,2162 ----
+ if (win->w_buffer->b_help)
+ help_window = TRUE;
+ else
+! clear_snapshot(curtab, SNAP_HELP_IDX);
+
+ #ifdef FEAT_AUTOCMD
+ if (win == curwin)
+***************
+*** 2229,2235 ****
+ /* After closing the help window, try restoring the window layout from
+ * before it was opened. */
+ if (help_window)
+! restore_snapshot(close_curwin);
+
+ #if defined(FEAT_GUI) && defined(FEAT_VERTSPLIT)
+ /* When 'guioptions' includes 'L' or 'R' may have to remove scrollbars. */
+--- 2273,2279 ----
+ /* After closing the help window, try restoring the window layout from
+ * before it was opened. */
+ if (help_window)
+! restore_snapshot(SNAP_HELP_IDX, close_curwin);
+
+ #if defined(FEAT_GUI) && defined(FEAT_VERTSPLIT)
+ /* When 'guioptions' includes 'L' or 'R' may have to remove scrollbars. */
+***************
+*** 2344,2349 ****
+--- 2388,2401 ----
+
+ while (firstwin != NULL)
+ (void)win_free_mem(firstwin, &dummy, NULL);
++
++ # ifdef FEAT_AUTOCMD
++ if (aucmd_win != NULL)
++ {
++ (void)win_free_mem(aucmd_win, &dummy, NULL);
++ aucmd_win = NULL;
++ }
++ # endif
+ }
+ #endif
+
+***************
+*** 2351,2357 ****
+ * Remove a window and its frame from the tree of frames.
+ * Returns a pointer to the window that got the freed up space.
+ */
+! static win_T *
+ winframe_remove(win, dirp, tp)
+ win_T *win;
+ int *dirp UNUSED; /* set to 'v' or 'h' for direction if 'ea' */
+--- 2403,2409 ----
+ * Remove a window and its frame from the tree of frames.
+ * Returns a pointer to the window that got the freed up space.
+ */
+! win_T *
+ winframe_remove(win, dirp, tp)
+ win_T *win;
+ int *dirp UNUSED; /* set to 'v' or 'h' for direction if 'ea' */
+***************
+*** 3090,3096 ****
+ win_T *nextwp;
+ int r;
+
+! if (lastwin == firstwin)
+ {
+ if (message
+ #ifdef FEAT_AUTOCMD
+--- 3142,3148 ----
+ win_T *nextwp;
+ int r;
+
+! if (one_window())
+ {
+ if (message
+ #ifdef FEAT_AUTOCMD
+***************
+*** 3194,3202 ****
+--- 3246,3275 ----
+ first_tabpage->tp_topframe = topframe;
+ curtab = first_tabpage;
+ #endif
++
+ return OK;
+ }
+
++ #if defined(FEAT_AUTOCMD) || defined(PROTO)
++ /*
++ * Init "aucmd_win". This can only be done after the first
++ * window is fully initialized, thus it can't be in win_alloc_first().
++ */
++ void
++ win_alloc_aucmd_win()
++ {
++ aucmd_win = win_alloc(NULL, TRUE);
++ if (aucmd_win != NULL)
++ {
++ win_init_some(aucmd_win, curwin);
++ # ifdef FEAT_SCROLLBIND
++ aucmd_win->w_p_scb = FALSE;
++ # endif
++ new_frame(aucmd_win);
++ }
++ }
++ #endif
++
+ /*
+ * Allocate the first window or the first window in a new tab page.
+ * When "oldwin" is NULL create an empty buffer for it.
+***************
+*** 3208,3214 ****
+ win_alloc_firstwin(oldwin)
+ win_T *oldwin;
+ {
+! curwin = win_alloc(NULL);
+ if (oldwin == NULL)
+ {
+ /* Very first window, need to create an empty buffer for it and
+--- 3281,3287 ----
+ win_alloc_firstwin(oldwin)
+ win_T *oldwin;
+ {
+! curwin = win_alloc(NULL, FALSE);
+ if (oldwin == NULL)
+ {
+ /* Very first window, need to create an empty buffer for it and
+***************
+*** 3236,3256 ****
+ }
+ #endif
+
+! topframe = (frame_T *)alloc_clear((unsigned)sizeof(frame_T));
+! if (topframe == NULL)
+ return FAIL;
+! topframe->fr_layout = FR_LEAF;
+ #ifdef FEAT_VERTSPLIT
+ topframe->fr_width = Columns;
+ #endif
+ topframe->fr_height = Rows - p_ch;
+ topframe->fr_win = curwin;
+- curwin->w_frame = topframe;
+
+ return OK;
+ }
+
+ /*
+ * Initialize the window and frame size to the maximum.
+ */
+ void
+--- 3309,3344 ----
+ }
+ #endif
+
+! new_frame(curwin);
+! if (curwin->w_frame == NULL)
+ return FAIL;
+! topframe = curwin->w_frame;
+ #ifdef FEAT_VERTSPLIT
+ topframe->fr_width = Columns;
+ #endif
+ topframe->fr_height = Rows - p_ch;
+ topframe->fr_win = curwin;
+
+ return OK;
+ }
+
+ /*
++ * Create a frame for window "wp".
++ */
++ static void
++ new_frame(win_T *wp)
++ {
++ frame_T *frp = (frame_T *)alloc_clear((unsigned)sizeof(frame_T));
++
++ wp->w_frame = frp;
++ if (frp != NULL)
++ {
++ frp->fr_layout = FR_LEAF;
++ frp->fr_win = wp;
++ }
++ }
++
++ /*
+ * Initialize the window and frame size to the maximum.
+ */
+ void
+***************
+*** 3300,3309 ****
+ free_tabpage(tp)
+ tabpage_T *tp;
+ {
+ # ifdef FEAT_DIFF
+ diff_clear(tp);
+ # endif
+! clear_snapshot(tp);
+ #ifdef FEAT_EVAL
+ vars_clear(&tp->tp_vars.dv_hashtab); /* free all t: variables */
+ #endif
+--- 3388,3400 ----
+ free_tabpage(tp)
+ tabpage_T *tp;
+ {
++ int idx;
++
+ # ifdef FEAT_DIFF
+ diff_clear(tp);
+ # endif
+! for (idx = 0; idx < SNAP_COUNT; ++idx)
+! clear_snapshot(tp, idx);
+ #ifdef FEAT_EVAL
+ vars_clear(&tp->tp_vars.dv_hashtab); /* free all t: variables */
+ #endif
+***************
+*** 3370,3381 ****
+ #if defined(FEAT_GUI)
+ /* When 'guioptions' includes 'L' or 'R' may have to remove or add
+ * scrollbars. Have to update them anyway. */
+! if (gui.in_use && starting == 0)
+! {
+! gui_init_which_components(NULL);
+! gui_update_scrollbars(TRUE);
+! }
+! need_mouse_correct = TRUE;
+ #endif
+
+ redraw_all_later(CLEAR);
+--- 3461,3467 ----
+ #if defined(FEAT_GUI)
+ /* When 'guioptions' includes 'L' or 'R' may have to remove or add
+ * scrollbars. Have to update them anyway. */
+! gui_may_update_scrollbars();
+ #endif
+
+ redraw_all_later(CLEAR);
+***************
+*** 3593,3604 ****
+ #if defined(FEAT_GUI)
+ /* When 'guioptions' includes 'L' or 'R' may have to remove or add
+ * scrollbars. Have to update them anyway. */
+! if (gui.in_use && starting == 0)
+! {
+! gui_init_which_components(NULL);
+! gui_update_scrollbars(TRUE);
+! }
+! need_mouse_correct = TRUE;
+ #endif
+
+ redraw_all_later(CLEAR);
+--- 3679,3685 ----
+ #if defined(FEAT_GUI)
+ /* When 'guioptions' includes 'L' or 'R' may have to remove or add
+ * scrollbars. Have to update them anyway. */
+! gui_may_update_scrollbars();
+ #endif
+
+ redraw_all_later(CLEAR);
+***************
+*** 4150,4160 ****
+ #endif
+
+ /*
+! * allocate a window structure and link it in the window list
+ */
+ static win_T *
+! win_alloc(after)
+ win_T *after UNUSED;
+ {
+ win_T *newwin;
+
+--- 4231,4243 ----
+ #endif
+
+ /*
+! * Allocate a window structure and link it in the window list when "hidden" is
+! * FALSE.
+ */
+ static win_T *
+! win_alloc(after, hidden)
+ win_T *after UNUSED;
++ int hidden UNUSED;
+ {
+ win_T *newwin;
+
+***************
+*** 4180,4186 ****
+ * link the window in the window list
+ */
+ #ifdef FEAT_WINDOWS
+! win_append(after, newwin);
+ #endif
+ #ifdef FEAT_VERTSPLIT
+ newwin->w_wincol = 0;
+--- 4263,4270 ----
+ * link the window in the window list
+ */
+ #ifdef FEAT_WINDOWS
+! if (!hidden)
+! win_append(after, newwin);
+ #endif
+ #ifdef FEAT_VERTSPLIT
+ newwin->w_wincol = 0;
+***************
+*** 4314,4320 ****
+ /*
+ * Append window "wp" in the window list after window "after".
+ */
+! static void
+ win_append(after, wp)
+ win_T *after, *wp;
+ {
+--- 4398,4404 ----
+ /*
+ * Append window "wp" in the window list after window "after".
+ */
+! void
+ win_append(after, wp)
+ win_T *after, *wp;
+ {
+***************
+*** 4340,4346 ****
+ /*
+ * Remove a window from the window list.
+ */
+! static void
+ win_remove(wp, tp)
+ win_T *wp;
+ tabpage_T *tp; /* tab page "win" is in, NULL for current */
+--- 4424,4430 ----
+ /*
+ * Remove a window from the window list.
+ */
+! void
+ win_remove(wp, tp)
+ win_T *wp;
+ tabpage_T *tp; /* tab page "win" is in, NULL for current */
+***************
+*** 6040,6045 ****
+--- 6124,6130 ----
+ /*
+ * Return TRUE if there is only one window (in the current tab page), not
+ * counting a help or preview window, unless it is the current window.
++ * Does not count "aucmd_win".
+ */
+ int
+ only_one_window()
+***************
+*** 6053,6063 ****
+ return FALSE;
+
+ for (wp = firstwin; wp != NULL; wp = wp->w_next)
+! if (!((wp->w_buffer->b_help && !curbuf->b_help)
+ # ifdef FEAT_QUICKFIX
+ || wp->w_p_pvw
+ # endif
+ ) || wp == curwin)
+ ++count;
+ return (count <= 1);
+ #else
+--- 6138,6152 ----
+ return FALSE;
+
+ for (wp = firstwin; wp != NULL; wp = wp->w_next)
+! if ((!((wp->w_buffer->b_help && !curbuf->b_help)
+ # ifdef FEAT_QUICKFIX
+ || wp->w_p_pvw
+ # endif
+ ) || wp == curwin)
++ # ifdef FEAT_AUTOCMD
++ && wp != aucmd_win
++ # endif
++ )
+ ++count;
+ return (count <= 1);
+ #else
+***************
+*** 6112,6122 ****
+ /*
+ * Create a snapshot of the current frame sizes.
+ */
+! static void
+! make_snapshot()
+ {
+! clear_snapshot(curtab);
+! make_snapshot_rec(topframe, &curtab->tp_snapshot);
+ }
+
+ static void
+--- 6201,6212 ----
+ /*
+ * Create a snapshot of the current frame sizes.
+ */
+! void
+! make_snapshot(idx)
+! int idx;
+ {
+! clear_snapshot(curtab, idx);
+! make_snapshot_rec(topframe, &curtab->tp_snapshot[idx]);
+ }
+
+ static void
+***************
+*** 6144,6154 ****
+ * Remove any existing snapshot.
+ */
+ static void
+! clear_snapshot(tp)
+ tabpage_T *tp;
+ {
+! clear_snapshot_rec(tp->tp_snapshot);
+! tp->tp_snapshot = NULL;
+ }
+
+ static void
+--- 6234,6245 ----
+ * Remove any existing snapshot.
+ */
+ static void
+! clear_snapshot(tp, idx)
+ tabpage_T *tp;
++ int idx;
+ {
+! clear_snapshot_rec(tp->tp_snapshot[idx]);
+! tp->tp_snapshot[idx] = NULL;
+ }
+
+ static void
+***************
+*** 6168,6193 ****
+ * This is only done if the screen size didn't change and the window layout is
+ * still the same.
+ */
+! static void
+! restore_snapshot(close_curwin)
+ int close_curwin; /* closing current window */
+ {
+ win_T *wp;
+
+! if (curtab->tp_snapshot != NULL
+ # ifdef FEAT_VERTSPLIT
+! && curtab->tp_snapshot->fr_width == topframe->fr_width
+ # endif
+! && curtab->tp_snapshot->fr_height == topframe->fr_height
+! && check_snapshot_rec(curtab->tp_snapshot, topframe) == OK)
+ {
+! wp = restore_snapshot_rec(curtab->tp_snapshot, topframe);
+ win_comp_pos();
+ if (wp != NULL && close_curwin)
+ win_goto(wp);
+ redraw_all_later(CLEAR);
+ }
+! clear_snapshot(curtab);
+ }
+
+ /*
+--- 6259,6285 ----
+ * This is only done if the screen size didn't change and the window layout is
+ * still the same.
+ */
+! void
+! restore_snapshot(idx, close_curwin)
+! int idx;
+ int close_curwin; /* closing current window */
+ {
+ win_T *wp;
+
+! if (curtab->tp_snapshot[idx] != NULL
+ # ifdef FEAT_VERTSPLIT
+! && curtab->tp_snapshot[idx]->fr_width == topframe->fr_width
+ # endif
+! && curtab->tp_snapshot[idx]->fr_height == topframe->fr_height
+! && check_snapshot_rec(curtab->tp_snapshot[idx], topframe) == OK)
+ {
+! wp = restore_snapshot_rec(curtab->tp_snapshot[idx], topframe);
+ win_comp_pos();
+ if (wp != NULL && close_curwin)
+ win_goto(wp);
+ redraw_all_later(CLEAR);
+ }
+! clear_snapshot(curtab, idx);
+ }
+
+ /*
+*** ../vim-7.2.202/src/version.c 2009-06-16 15:35:46.000000000 +0200
+--- src/version.c 2009-06-16 15:37:16.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 203,
+ /**/
+
+--
+How To Keep A Healthy Level Of Insanity:
+15. Five days in advance, tell your friends you can't attend their
+ party because you're not in the mood.
+
+ /// 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/vim/vim-7.2/7.2.204 b/vim/vim-7.2/7.2.204
new file mode 100644
index 0000000..ef99c51
--- /dev/null
+++ b/vim/vim-7.2/7.2.204
@@ -0,0 +1,137 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.204 (extra)
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.204 (extra)
+Problem: Win32: Can't build with Visual Studio 2010 beta 1.
+Solution: Fix the makefile. (George Reilly)
+Files: src/Make_mvc.mak
+
+
+*** ../vim-7.2.203/src/Make_mvc.mak 2009-05-26 22:58:43.000000000 +0200
+--- src/Make_mvc.mak 2009-06-16 16:27:59.000000000 +0200
+***************
+*** 1,18 ****
+ # Makefile for Vim on Win32 (Windows NT/2000/XP/2003 and Windows 95/98/Me)
+ # and Win64, using the Microsoft Visual C++ compilers. Known to work with
+ # VC5, VC6 (VS98), VC7.0 (VS2002), VC7.1 (VS2003), VC8 (VS2005),
+! # and VC9 (VS2008).
+ #
+ # To build using other Windows compilers, see INSTALLpc.txt
+ #
+ # This makefile can build the console, GUI, OLE-enable, Perl-enabled and
+! # Python-enabled versions of vim for Win32 platforms.
+ #
+! # The basic command line to build vim is:
+ #
+ # nmake -f Make_mvc.mak
+ #
+! # This will build the console version of vim with no additional interfaces.
+ # To add features, define any of the following:
+ #
+ # !!!! After changing features do "nmake clean" first !!!!
+--- 1,18 ----
+ # Makefile for Vim on Win32 (Windows NT/2000/XP/2003 and Windows 95/98/Me)
+ # and Win64, using the Microsoft Visual C++ compilers. Known to work with
+ # VC5, VC6 (VS98), VC7.0 (VS2002), VC7.1 (VS2003), VC8 (VS2005),
+! # VC9 (VS2008), and VC10 (VS2010).
+ #
+ # To build using other Windows compilers, see INSTALLpc.txt
+ #
+ # This makefile can build the console, GUI, OLE-enable, Perl-enabled and
+! # Python-enabled versions of Vim for Win32 platforms.
+ #
+! # The basic command line to build Vim is:
+ #
+ # nmake -f Make_mvc.mak
+ #
+! # This will build the console version of Vim with no additional interfaces.
+ # To add features, define any of the following:
+ #
+ # !!!! After changing features do "nmake clean" first !!!!
+***************
+*** 358,363 ****
+--- 358,366 ----
+ !if "$(_NMAKE_VER)" == "9.00.30729.01"
+ MSVCVER = 9.0
+ !endif
++ !if "$(_NMAKE_VER)" == "10.00.20506.01"
++ MSVCVER = 10.0
++ !endif
+ !endif
+
+ # Abort bulding VIM if version of VC is unrecognised.
+***************
+*** 372,378 ****
+ !endif
+
+ # Convert processor ID to MVC-compatible number
+! !if ("$(MSVCVER)" != "8.0") && ("$(MSVCVER)" != "9.0")
+ !if "$(CPUNR)" == "i386"
+ CPUARG = /G3
+ !elseif "$(CPUNR)" == "i486"
+--- 375,381 ----
+ !endif
+
+ # Convert processor ID to MVC-compatible number
+! !if ("$(MSVCVER)" != "8.0") && ("$(MSVCVER)" != "9.0") && ("$(MSVCVER)" != "10.0")
+ !if "$(CPUNR)" == "i386"
+ CPUARG = /G3
+ !elseif "$(CPUNR)" == "i486"
+***************
+*** 405,411 ****
+ !else # MAXSPEED
+ OPTFLAG = /Ox
+ !endif
+! !if ("$(MSVCVER)" == "8.0") || ("$(MSVCVER)" == "9.0")
+ # Use link time code generation if not worried about size
+ !if "$(OPTIMIZE)" != "SPACE"
+ OPTFLAG = $(OPTFLAG) /GL
+--- 408,414 ----
+ !else # MAXSPEED
+ OPTFLAG = /Ox
+ !endif
+! !if ("$(MSVCVER)" == "8.0") || ("$(MSVCVER)" == "9.0") || ("$(MSVCVER)" == "10.0")
+ # Use link time code generation if not worried about size
+ !if "$(OPTIMIZE)" != "SPACE"
+ OPTFLAG = $(OPTFLAG) /GL
+***************
+*** 793,799 ****
+
+ # Report link time code generation progress if used.
+ !ifdef NODEBUG
+! !if ("$(MSVCVER)" == "8.0") || ("$(MSVCVER)" == "9.0")
+ !if "$(OPTIMIZE)" != "SPACE"
+ LINKARGS1 = $(LINKARGS1) /LTCG:STATUS
+ !endif
+--- 796,802 ----
+
+ # Report link time code generation progress if used.
+ !ifdef NODEBUG
+! !if ("$(MSVCVER)" == "8.0") || ("$(MSVCVER)" == "9.0") || ("$(MSVCVER)" == "10.0")
+ !if "$(OPTIMIZE)" != "SPACE"
+ LINKARGS1 = $(LINKARGS1) /LTCG:STATUS
+ !endif
+*** ../vim-7.2.203/src/version.c 2009-06-16 16:01:34.000000000 +0200
+--- src/version.c 2009-06-16 16:32:41.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 204,
+ /**/
+
+--
+How To Keep A Healthy Level Of Insanity:
+16. Have your coworkers address you by your wrestling name, Rock Hard Kim.
+
+ /// 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/vim/vim-7.2/7.2.205 b/vim/vim-7.2/7.2.205
new file mode 100644
index 0000000..2af5067
--- /dev/null
+++ b/vim/vim-7.2/7.2.205
@@ -0,0 +1,81 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.205 (extra)
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.205 (extra)
+Problem: Win32: No support for High DPI awarenes.
+Solution: Fix the manifest file. (George Reilly)
+Files: src/Make_mvc.mak, src/gvim.exe.mnf
+
+
+*** ../vim-7.2.204/src/Make_mvc.mak 2009-06-16 16:34:12.000000000 +0200
+--- src/Make_mvc.mak 2009-06-16 16:36:32.000000000 +0200
+***************
+*** 1040,1046 ****
+ $(OUTDIR)/xpm_w32.obj: $(OUTDIR) xpm_w32.c
+ $(CC) $(CFLAGS) $(XPM_INC) xpm_w32.c
+
+! $(OUTDIR)/vim.res: $(OUTDIR) vim.rc version.h tools.bmp tearoff.bmp \
+ vim.ico vim_error.ico vim_alert.ico vim_info.ico vim_quest.ico
+ $(RC) /l 0x409 /Fo$(OUTDIR)/vim.res $(RCFLAGS) vim.rc
+
+--- 1040,1046 ----
+ $(OUTDIR)/xpm_w32.obj: $(OUTDIR) xpm_w32.c
+ $(CC) $(CFLAGS) $(XPM_INC) xpm_w32.c
+
+! $(OUTDIR)/vim.res: $(OUTDIR) vim.rc gvim.exe.mnf version.h tools.bmp tearoff.bmp \
+ vim.ico vim_error.ico vim_alert.ico vim_info.ico vim_quest.ico
+ $(RC) /l 0x409 /Fo$(OUTDIR)/vim.res $(RCFLAGS) vim.rc
+
+*** ../vim-7.2.204/src/gvim.exe.mnf 2008-08-09 19:37:29.000000000 +0200
+--- src/gvim.exe.mnf 2009-06-16 16:36:32.000000000 +0200
+***************
+*** 1,5 ****
+ <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+! <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
+ <assemblyIdentity
+ processorArchitecture="*"
+ version="7.2.0.0"
+--- 1,5 ----
+ <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+! <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" >
+ <assemblyIdentity
+ processorArchitecture="*"
+ version="7.2.0.0"
+***************
+*** 29,32 ****
+--- 29,38 ----
+ </requestedPrivileges>
+ </security>
+ </trustInfo>
++ <!-- Vista High DPI aware -->
++ <asmv3:application>
++ <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
++ <dpiAware>true</dpiAware>
++ </asmv3:windowsSettings>
++ </asmv3:application>
+ </assembly>
+*** ../vim-7.2.204/src/version.c 2009-06-16 16:34:12.000000000 +0200
+--- src/version.c 2009-06-16 16:43:04.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 205,
+ /**/
+
+--
+How To Keep A Healthy Level Of Insanity:
+17. When the money comes out the ATM, scream "I won!, I won! 3rd
+ time this week!!!!!"
+
+ /// 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/vim/vim-7.2/7.2.206 b/vim/vim-7.2/7.2.206
new file mode 100644
index 0000000..e16fb7e
--- /dev/null
+++ b/vim/vim-7.2/7.2.206
@@ -0,0 +1,46 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.206
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.206
+Problem: Win32: Can't build netbeans interface with Visual Studio 2010.
+Solution: Undefine ECONNREFUSED. (George Reilly)
+Files: src/netbeans.c
+
+
+*** ../vim-7.2.205/src/netbeans.c 2009-05-17 23:25:16.000000000 +0200
+--- src/netbeans.c 2009-06-16 16:39:17.000000000 +0200
+***************
+*** 32,37 ****
+--- 32,38 ----
+ /* WinSock API is separated from C API, thus we can't use read(), write(),
+ * errno... */
+ # define sock_errno WSAGetLastError()
++ # undef ECONNREFUSED
+ # define ECONNREFUSED WSAECONNREFUSED
+ # ifdef EINTR
+ # undef EINTR
+*** ../vim-7.2.205/src/version.c 2009-06-16 16:45:14.000000000 +0200
+--- src/version.c 2009-06-16 16:57:45.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 206,
+ /**/
+
+--
+How To Keep A Healthy Level Of Insanity:
+18. When leaving the zoo, start running towards the parking lot,
+ yelling "run for your lives, they're loose!!"
+
+ /// 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/vim/vim-7.2/7.2.207 b/vim/vim-7.2/7.2.207
new file mode 100644
index 0000000..528d35d
--- /dev/null
+++ b/vim/vim-7.2/7.2.207
@@ -0,0 +1,69 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.207
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.207
+Problem: Using freed memory with ":redrawstatus" when it works recursively.
+Solution: Prevent recursively updating the status line. (partly by Dominique
+ Pelle)
+Files: src/screen.c
+
+
+*** ../vim-7.2.206/src/screen.c 2009-06-16 16:01:34.000000000 +0200
+--- src/screen.c 2009-06-16 17:04:53.000000000 +0200
+***************
+*** 5743,5748 ****
+--- 5743,5755 ----
+ int fillchar;
+ int attr;
+ int this_ru_col;
++ static int busy = FALSE;
++
++ /* It's possible to get here recursively when 'statusline' (indirectly)
++ * invokes ":redrawstatus". Simply ignore the call then. */
++ if (busy)
++ return;
++ busy = TRUE;
+
+ wp->w_redr_status = FALSE;
+ if (wp->w_status_height == 0)
+***************
+*** 5881,5886 ****
+--- 5888,5894 ----
+ attr);
+ }
+ #endif
++ busy = FALSE;
+ }
+
+ #ifdef FEAT_STL_OPT
+*** ../vim-7.2.206/src/version.c 2009-06-16 16:57:53.000000000 +0200
+--- src/version.c 2009-06-16 17:21:56.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 207,
+ /**/
+
+--
+In many of the more relaxed civilizations on the Outer Eastern Rim of the
+Galaxy, "The Hitchhiker's Guide to the Galaxy" has already supplanted the
+great "Encyclopedia Galactica" as the standard repository of all knowledge
+and wisdom, for though it has many omissions and contains much that is
+apocryphal, or at least wildly inaccurate, it scores over the older, more
+pedestrian work in two important respects.
+First, it is slightly cheaper; and second, it has the words "DON'T PANIC"
+inscribed in large friendly letters on its cover.
+ -- Douglas Adams, "The Hitchhiker's Guide to the Galaxy"
+
+ /// 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/vim/vim-7.2/7.2.208 b/vim/vim-7.2/7.2.208
new file mode 100644
index 0000000..930770d
--- /dev/null
+++ b/vim/vim-7.2/7.2.208
@@ -0,0 +1,82 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.208
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.208
+Problem: "set novice" gives an error message, it should be ignored.
+Solution: Don't see "no" in "novice" as unsetting an option. (Patrick
+ Texier)
+Files: src/option.c
+
+
+*** ../vim-7.2.207/src/option.c 2009-06-16 15:23:07.000000000 +0200
+--- src/option.c 2009-06-16 17:35:08.000000000 +0200
+***************
+*** 4006,4012 ****
+ else
+ {
+ prefix = 1;
+! if (STRNCMP(arg, "no", 2) == 0)
+ {
+ prefix = 0;
+ arg += 2;
+--- 4006,4012 ----
+ else
+ {
+ prefix = 1;
+! if (STRNCMP(arg, "no", 2) == 0 && STRNCMP(arg, "novice", 6) != 0)
+ {
+ prefix = 0;
+ arg += 2;
+***************
+*** 9757,9763 ****
+ }
+ --p;
+ }
+! if (STRNCMP(p, "no", 2) == 0)
+ {
+ xp->xp_context = EXPAND_BOOL_SETTINGS;
+ p += 2;
+--- 9757,9763 ----
+ }
+ --p;
+ }
+! if (STRNCMP(p, "no", 2) == 0 && STRNCMP(p, "novice", 6) != 0)
+ {
+ xp->xp_context = EXPAND_BOOL_SETTINGS;
+ p += 2;
+*** ../vim-7.2.207/src/version.c 2009-06-16 17:22:38.000000000 +0200
+--- src/version.c 2009-06-16 17:50:33.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 208,
+ /**/
+
+--
+Now it is such a bizarrely improbable coincidence that anything as
+mind-bogglingly useful as the Babel fish could have evolved purely by chance
+that some thinkers have chosen to see it as a final and clinching proof of the
+NON-existence of God.
+The argument goes something like this: 'I refuse to prove that I exist,' says
+God, 'for proof denies faith, and without faith I am nothing.'
+'But,' says Man, 'the Babel fish is a dead giveaway, isn't it? It could not
+have evolved by chance. It proves you exist, and so therefore, by your own
+arguments, you don't. QED.'
+'Oh dear,' says God, 'I hadn't thought of that,' and promptly vanishes in a
+puff of logic.
+'Oh, that was easy,' says Man, and for an encore goes on to prove that black
+is white and gets himself killed on the next pedestrian crossing.
+ -- Douglas Adams, "The Hitchhiker's Guide to the Galaxy"
+
+ /// 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/vim/vim-7.2/7.2.209 b/vim/vim-7.2/7.2.209
new file mode 100644
index 0000000..1cc3393
--- /dev/null
+++ b/vim/vim-7.2/7.2.209
@@ -0,0 +1,82 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.209
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.209
+Problem: For xxd setmode() is undefined on Cygwin.
+Solution: Include io.h. (Dominique Pelle)
+Files: src/xxd/xxd.c
+
+
+*** ../vim-7.2.208/src/xxd/xxd.c 2007-12-03 21:32:21.000000000 +0100
+--- src/xxd/xxd.c 2009-06-16 18:03:14.000000000 +0200
+***************
+*** 64,69 ****
+--- 64,72 ----
+ # define _CRT_SECURE_NO_DEPRECATE
+ # define _CRT_NONSTDC_NO_DEPRECATE
+ #endif
++ #if !defined(CYGWIN) && (defined(CYGWIN32) || defined(__CYGWIN__) || defined(__CYGWIN32__))
++ # define CYGWIN
++ #endif
+
+ #include <stdio.h>
+ #ifdef VAXC
+***************
+*** 77,83 ****
+ #if !defined(OS2) && defined(__EMX__)
+ # define OS2
+ #endif
+! #if defined(MSDOS) || defined(WIN32) || defined(OS2) || defined(__BORLANDC__)
+ # include <io.h> /* for setmode() */
+ #else
+ # ifdef UNIX
+--- 80,87 ----
+ #if !defined(OS2) && defined(__EMX__)
+ # define OS2
+ #endif
+! #if defined(MSDOS) || defined(WIN32) || defined(OS2) || defined(__BORLANDC__) \
+! || defined(CYGWIN)
+ # include <io.h> /* for setmode() */
+ #else
+ # ifdef UNIX
+***************
+*** 150,158 ****
+ # endif
+ #endif
+
+- #if !defined(CYGWIN) && (defined(CYGWIN32) || defined(__CYGWIN__) || defined(__CYGWIN32__))
+- # define CYGWIN
+- #endif
+ #if defined(MSDOS) || defined(WIN32) || defined(OS2)
+ # define BIN_READ(yes) ((yes) ? "rb" : "rt")
+ # define BIN_WRITE(yes) ((yes) ? "wb" : "wt")
+--- 154,159 ----
+*** ../vim-7.2.208/src/version.c 2009-06-16 17:50:56.000000000 +0200
+--- src/version.c 2009-06-16 18:16:08.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 209,
+ /**/
+
+--
+"So this is it," said Arthur, "we are going to die."
+"Yes," said Ford, "except...no! Wait a minute!" He suddenly lunged across
+the chamber at something behind Arthur's line of vision. "What's this
+switch?" he cried.
+"What? Where?" cried Arthur, twisting around.
+"No, I was only fooling," said Ford, "we are going to die after all."
+ -- Douglas Adams, "The Hitchhiker's Guide to the Galaxy"
+
+ /// 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/vim/vim-7.2/7.2.210 b/vim/vim-7.2/7.2.210
new file mode 100644
index 0000000..9c51a13
--- /dev/null
+++ b/vim/vim-7.2/7.2.210
@@ -0,0 +1,58 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.210
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.210
+Problem: When a file that is being edited has its timestamp updated outside
+ of Vim and ":checktime" is used still get a warning when writing
+ the file. (Matt Mueller)
+Solution: Store the timestamp in b_mtime_read when the timestamp is the only
+ thing that changed.
+Files: src/fileio.c
+
+
+*** ../vim-7.2.209/src/fileio.c 2009-06-16 16:01:34.000000000 +0200
+--- src/fileio.c 2009-06-20 13:29:41.000000000 +0200
+***************
+*** 6627,6633 ****
+ mesg = _("W16: Warning: Mode of file \"%s\" has changed since editing started");
+ mesg2 = _("See \":help W16\" for more info.");
+ }
+! /* Else: only timestamp changed, ignored */
+ }
+ }
+ }
+--- 6627,6636 ----
+ mesg = _("W16: Warning: Mode of file \"%s\" has changed since editing started");
+ mesg2 = _("See \":help W16\" for more info.");
+ }
+! else
+! /* Only timestamp changed, store it to avoid a warning
+! * in check_mtime() later. */
+! buf->b_mtime_read = buf->b_mtime;
+ }
+ }
+ }
+*** ../vim-7.2.209/src/version.c 2009-06-16 18:29:37.000000000 +0200
+--- src/version.c 2009-06-24 11:57:08.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 210,
+ /**/
+
+--
+Have you heard about the new Beowulf cluster? It's so fast, it executes
+an infinite loop in 6 seconds.
+
+ /// 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/vim/vim-7.2/7.2.211 b/vim/vim-7.2/7.2.211
new file mode 100644
index 0000000..0510198
--- /dev/null
+++ b/vim/vim-7.2/7.2.211
@@ -0,0 +1,52 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.211
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.211
+Problem: Memory leak when expanding a series of file names.
+Solution: Use ga_clear_strings() instead of ga_clear().
+Files: src/misc1.c
+
+
+*** ../vim-7.2.210/src/misc1.c 2009-05-17 13:30:58.000000000 +0200
+--- src/misc1.c 2009-06-24 16:16:17.000000000 +0200
+***************
+*** 9193,9199 ****
+ else if (vim_strpbrk(p, (char_u *)"$~") != NULL)
+ {
+ vim_free(p);
+! ga_clear(&ga);
+ i = mch_expand_wildcards(num_pat, pat, num_file, file,
+ flags);
+ recursive = FALSE;
+--- 9193,9199 ----
+ else if (vim_strpbrk(p, (char_u *)"$~") != NULL)
+ {
+ vim_free(p);
+! ga_clear_strings(&ga);
+ i = mch_expand_wildcards(num_pat, pat, num_file, file,
+ flags);
+ recursive = FALSE;
+*** ../vim-7.2.210/src/version.c 2009-06-24 11:57:53.000000000 +0200
+--- src/version.c 2009-06-24 16:24:32.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 211,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+34. You laugh at people with 14400 baud modems.
+
+ /// 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/vim/vim-7.2/7.2.212 b/vim/vim-7.2/7.2.212
new file mode 100644
index 0000000..33fcb5c
--- /dev/null
+++ b/vim/vim-7.2/7.2.212
@@ -0,0 +1,62 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.212 (extra)
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.212 (extra)
+Problem: Warnings for redefining SIG macros.
+Solution: Don't define them if already defined. (Bjorn Winckler)
+Files: src/os_mac.h
+
+
+*** ../vim-7.2.211/src/os_mac.h 2008-06-24 22:27:34.000000000 +0200
+--- src/os_mac.h 2009-06-19 21:21:57.000000000 +0200
+***************
+*** 268,276 ****
+ */
+
+ #ifdef MACOS_X_UNIX
+! # define SIGPROTOARG (int)
+! # define SIGDEFARG(s) (s) int s;
+! # define SIGDUMMYARG 0
+ # undef HAVE_AVAIL_MEM
+ # ifndef HAVE_CONFIG_H
+ # define RETSIGTYPE void
+--- 268,282 ----
+ */
+
+ #ifdef MACOS_X_UNIX
+! # ifndef SIGPROTOARG
+! # define SIGPROTOARG (int)
+! # endif
+! # ifndef SIGDEFARG
+! # define SIGDEFARG(s) (s) int s UNUSED;
+! # endif
+! # ifndef SIGDUMMYARG
+! # define SIGDUMMYARG 0
+! # endif
+ # undef HAVE_AVAIL_MEM
+ # ifndef HAVE_CONFIG_H
+ # define RETSIGTYPE void
+*** ../vim-7.2.211/src/version.c 2009-06-24 16:25:23.000000000 +0200
+--- src/version.c 2009-06-24 16:40:18.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 212,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+37. You start looking for hot HTML addresses in public restrooms.
+
+ /// 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/vim/vim-7.2/7.2.213 b/vim/vim-7.2/7.2.213
new file mode 100644
index 0000000..74a0e16
--- /dev/null
+++ b/vim/vim-7.2/7.2.213
@@ -0,0 +1,53 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.213
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.213
+Problem: Warning for using vsprintf().
+Solution: Use vim_vsnprintf().
+Files: src/netbeans.c
+
+
+*** ../vim-7.2.212/src/netbeans.c 2009-06-16 16:57:53.000000000 +0200
+--- src/netbeans.c 2009-06-24 11:26:43.000000000 +0200
+***************
+*** 2586,2592 ****
+ va_list ap;
+
+ va_start(ap, cmd);
+! vsprintf(buf, cmd, ap);
+ va_end(ap);
+
+ nbdebug((" COLONCMD %s\n", buf));
+--- 2586,2592 ----
+ va_list ap;
+
+ va_start(ap, cmd);
+! vim_vsnprintf(buf, sizeof(buf), cmd, ap, NULL);
+ va_end(ap);
+
+ nbdebug((" COLONCMD %s\n", buf));
+*** ../vim-7.2.212/src/version.c 2009-06-24 16:41:01.000000000 +0200
+--- src/version.c 2009-06-24 16:49:06.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 213,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+38. You wake up at 3 a.m. to go to the bathroom and stop and check your e-mail
+ on the way back to bed.
+
+ /// 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/vim/vim-7.2/7.2.214 b/vim/vim-7.2/7.2.214
new file mode 100644
index 0000000..17cb156
--- /dev/null
+++ b/vim/vim-7.2/7.2.214
@@ -0,0 +1,65 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.214
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.214
+Problem: Crash with complete function for user command. (Andy Wokula)
+Solution: Avoid using a NULL pointer (Dominique Pelle)
+Files: src/ex_getln.c
+
+
+*** ../vim-7.2.213/src/ex_getln.c 2009-05-16 17:29:37.000000000 +0200
+--- src/ex_getln.c 2009-06-24 16:57:28.000000000 +0200
+***************
+*** 4874,4887 ****
+ /* Loop over the items in the list. */
+ for (li = retlist->lv_first; li != NULL; li = li->li_next)
+ {
+! if (li->li_tv.v_type != VAR_STRING)
+! continue; /* Skip non-string items */
+
+ if (ga_grow(&ga, 1) == FAIL)
+ break;
+
+ ((char_u **)ga.ga_data)[ga.ga_len] =
+! vim_strsave(li->li_tv.vval.v_string);
+ ++ga.ga_len;
+ }
+ list_unref(retlist);
+--- 4874,4887 ----
+ /* Loop over the items in the list. */
+ for (li = retlist->lv_first; li != NULL; li = li->li_next)
+ {
+! if (li->li_tv.v_type != VAR_STRING || li->li_tv.vval.v_string == NULL)
+! continue; /* Skip non-string items and empty strings */
+
+ if (ga_grow(&ga, 1) == FAIL)
+ break;
+
+ ((char_u **)ga.ga_data)[ga.ga_len] =
+! vim_strsave(li->li_tv.vval.v_string);
+ ++ga.ga_len;
+ }
+ list_unref(retlist);
+*** ../vim-7.2.213/src/version.c 2009-06-24 16:49:50.000000000 +0200
+--- src/version.c 2009-06-24 17:03:58.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 214,
+ /**/
+
+--
+He who laughs last, thinks slowest.
+
+ /// 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/vim/vim-7.2/7.2.215 b/vim/vim-7.2/7.2.215
new file mode 100644
index 0000000..90e746c
--- /dev/null
+++ b/vim/vim-7.2/7.2.215
@@ -0,0 +1,310 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.215
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.215
+Problem: ml_get error when using ":vimgrep".
+Solution: Load the memfile for the hidden buffer before putting it in a
+ window. Correct the order of splitting the window and filling
+ the window and buffer with data.
+Files: src/fileio.c, src/proto/window.pro, src/quickfix.c, src/window.c
+
+
+*** ../vim-7.2.214/src/fileio.c 2009-06-24 11:57:53.000000000 +0200
+--- src/fileio.c 2009-06-24 12:53:19.000000000 +0200
+***************
+*** 710,716 ****
+ #endif
+ #ifdef UNIX
+ /* Set swap file protection bits after creating it. */
+! if (swap_mode > 0 && curbuf->b_ml.ml_mfp->mf_fname != NULL)
+ (void)mch_setperm(curbuf->b_ml.ml_mfp->mf_fname, (long)swap_mode);
+ #endif
+ }
+--- 710,717 ----
+ #endif
+ #ifdef UNIX
+ /* Set swap file protection bits after creating it. */
+! if (swap_mode > 0 && curbuf->b_ml.ml_mfp != NULL
+! && curbuf->b_ml.ml_mfp->mf_fname != NULL)
+ (void)mch_setperm(curbuf->b_ml.ml_mfp->mf_fname, (long)swap_mode);
+ #endif
+ }
+***************
+*** 8435,8443 ****
+ * effects, insert it in a the current tab page.
+ * Anything related to a window (e.g., setting folds) may have
+ * unexpected results. */
+! curwin = aucmd_win;
+! curwin->w_buffer = buf;
+ ++buf->b_nwindows;
+
+ #ifdef FEAT_WINDOWS
+ /* Split the current window, put the aucmd_win in the upper half. */
+--- 8436,8444 ----
+ * effects, insert it in a the current tab page.
+ * Anything related to a window (e.g., setting folds) may have
+ * unexpected results. */
+! aucmd_win->w_buffer = buf;
+ ++buf->b_nwindows;
++ win_init_empty(aucmd_win); /* set cursor and topline to safe values */
+
+ #ifdef FEAT_WINDOWS
+ /* Split the current window, put the aucmd_win in the upper half. */
+***************
+*** 8448,8459 ****
+ (void)win_comp_pos(); /* recompute window positions */
+ p_ea = save_ea;
+ #endif
+! /* set cursor and topline to safe values */
+! curwin_init();
+! #ifdef FEAT_VERTSPLIT
+! curwin->w_wincol = 0;
+! curwin->w_width = Columns;
+! #endif
+ }
+ curbuf = buf;
+ aco->new_curwin = curwin;
+--- 8449,8455 ----
+ (void)win_comp_pos(); /* recompute window positions */
+ p_ea = save_ea;
+ #endif
+! curwin = aucmd_win;
+ }
+ curbuf = buf;
+ aco->new_curwin = curwin;
+*** ../vim-7.2.214/src/proto/window.pro 2009-06-16 16:01:34.000000000 +0200
+--- src/proto/window.pro 2009-06-24 12:53:13.000000000 +0200
+***************
+*** 14,19 ****
+--- 14,20 ----
+ win_T *winframe_remove __ARGS((win_T *win, int *dirp, tabpage_T *tp));
+ void close_others __ARGS((int message, int forceit));
+ void curwin_init __ARGS((void));
++ void win_init_empty __ARGS((win_T *wp));
+ int win_alloc_first __ARGS((void));
+ void win_alloc_aucmd_win __ARGS((void));
+ void win_init_size __ARGS((void));
+*** ../vim-7.2.214/src/quickfix.c 2009-05-17 13:30:58.000000000 +0200
+--- src/quickfix.c 2009-06-24 15:30:06.000000000 +0200
+***************
+*** 3411,3424 ****
+ /* Init the options. */
+ buf_copy_options(newbuf, BCO_ENTER | BCO_NOHELP);
+
+! /* set curwin/curbuf to buf and save a few things */
+! aucmd_prepbuf(&aco, newbuf);
+
+! /* Need to set the filename for autocommands. */
+! (void)setfname(curbuf, fname, NULL, FALSE);
+
+- if (ml_open(curbuf) == OK)
+- {
+ /* Create swap file now to avoid the ATTENTION message. */
+ check_need_swap(TRUE);
+
+--- 3411,3425 ----
+ /* Init the options. */
+ buf_copy_options(newbuf, BCO_ENTER | BCO_NOHELP);
+
+! /* need to open the memfile before putting the buffer in a window */
+! if (ml_open(newbuf) == OK)
+! {
+! /* set curwin/curbuf to buf and save a few things */
+! aucmd_prepbuf(&aco, newbuf);
+
+! /* Need to set the filename for autocommands. */
+! (void)setfname(curbuf, fname, NULL, FALSE);
+
+ /* Create swap file now to avoid the ATTENTION message. */
+ check_need_swap(TRUE);
+
+***************
+*** 3441,3450 ****
+ newbuf = curbuf;
+ }
+ }
+- }
+
+! /* restore curwin/curbuf and a few other things */
+! aucmd_restbuf(&aco);
+
+ if (!buf_valid(newbuf))
+ return NULL;
+--- 3442,3451 ----
+ newbuf = curbuf;
+ }
+ }
+
+! /* restore curwin/curbuf and a few other things */
+! aucmd_restbuf(&aco);
+! }
+
+ if (!buf_valid(newbuf))
+ return NULL;
+*** ../vim-7.2.214/src/window.c 2009-06-16 16:01:34.000000000 +0200
+--- src/window.c 2009-06-24 14:35:16.000000000 +0200
+***************
+*** 2354,2366 ****
+ frame_T *frp;
+ win_T *wp;
+
+- #ifdef FEAT_FOLDING
+- clearFolding(win);
+- #endif
+-
+- /* reduce the reference count to the argument list. */
+- alist_unlink(win->w_alist);
+-
+ /* Remove the window and its frame from the tree of frames. */
+ frp = win->w_frame;
+ wp = winframe_remove(win, dirp, tp);
+--- 2354,2359 ----
+***************
+*** 2386,2394 ****
+ tabpage_close(TRUE);
+ # endif
+
+- while (firstwin != NULL)
+- (void)win_free_mem(firstwin, &dummy, NULL);
+-
+ # ifdef FEAT_AUTOCMD
+ if (aucmd_win != NULL)
+ {
+--- 2379,2384 ----
+***************
+*** 2396,2401 ****
+--- 2386,2394 ----
+ aucmd_win = NULL;
+ }
+ # endif
++
++ while (firstwin != NULL)
++ (void)win_free_mem(firstwin, &dummy, NULL);
+ }
+ #endif
+
+***************
+*** 3204,3230 ****
+ void
+ curwin_init()
+ {
+! redraw_win_later(curwin, NOT_VALID);
+! curwin->w_lines_valid = 0;
+! curwin->w_cursor.lnum = 1;
+! curwin->w_curswant = curwin->w_cursor.col = 0;
+ #ifdef FEAT_VIRTUALEDIT
+! curwin->w_cursor.coladd = 0;
+ #endif
+! curwin->w_pcmark.lnum = 1; /* pcmark not cleared but set to line 1 */
+! curwin->w_pcmark.col = 0;
+! curwin->w_prev_pcmark.lnum = 0;
+! curwin->w_prev_pcmark.col = 0;
+! curwin->w_topline = 1;
+ #ifdef FEAT_DIFF
+! curwin->w_topfill = 0;
+ #endif
+! curwin->w_botline = 2;
+ #ifdef FEAT_FKMAP
+! if (curwin->w_p_rl)
+! curwin->w_farsi = W_CONV + W_R_L;
+ else
+! curwin->w_farsi = W_CONV;
+ #endif
+ }
+
+--- 3197,3230 ----
+ void
+ curwin_init()
+ {
+! win_init_empty(curwin);
+! }
+!
+! void
+! win_init_empty(wp)
+! win_T *wp;
+! {
+! redraw_win_later(wp, NOT_VALID);
+! wp->w_lines_valid = 0;
+! wp->w_cursor.lnum = 1;
+! wp->w_curswant = wp->w_cursor.col = 0;
+ #ifdef FEAT_VIRTUALEDIT
+! wp->w_cursor.coladd = 0;
+ #endif
+! wp->w_pcmark.lnum = 1; /* pcmark not cleared but set to line 1 */
+! wp->w_pcmark.col = 0;
+! wp->w_prev_pcmark.lnum = 0;
+! wp->w_prev_pcmark.col = 0;
+! wp->w_topline = 1;
+ #ifdef FEAT_DIFF
+! wp->w_topfill = 0;
+ #endif
+! wp->w_botline = 2;
+ #ifdef FEAT_FKMAP
+! if (wp->w_p_rl)
+! wp->w_farsi = W_CONV + W_R_L;
+ else
+! wp->w_farsi = W_CONV;
+ #endif
+ }
+
+***************
+*** 4325,4330 ****
+--- 4325,4337 ----
+ {
+ int i;
+
++ #ifdef FEAT_FOLDING
++ clearFolding(wp);
++ #endif
++
++ /* reduce the reference count to the argument list. */
++ alist_unlink(wp->w_alist);
++
+ #ifdef FEAT_AUTOCMD
+ /* Don't execute autocommands while the window is halfway being deleted.
+ * gui_mch_destroy_scrollbar() may trigger a FocusGained event. */
+***************
+*** 4387,4393 ****
+ }
+ #endif /* FEAT_GUI */
+
+! win_remove(wp, tp);
+ vim_free(wp);
+
+ #ifdef FEAT_AUTOCMD
+--- 4394,4403 ----
+ }
+ #endif /* FEAT_GUI */
+
+! #ifdef FEAT_AUTOCMD
+! if (wp != aucmd_win)
+! #endif
+! win_remove(wp, tp);
+ vim_free(wp);
+
+ #ifdef FEAT_AUTOCMD
+*** ../vim-7.2.214/src/version.c 2009-06-24 17:04:40.000000000 +0200
+--- src/version.c 2009-06-24 17:27:38.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 215,
+ /**/
+
+--
+Micro$oft: where do you want to go today?
+ Linux: where do you want to go tomorrow?
+ FreeBSD: are you guys coming, or what?
+
+ /// 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/vim/vim-7.2/7.2.216 b/vim/vim-7.2/7.2.216
new file mode 100644
index 0000000..5a7afdf
--- /dev/null
+++ b/vim/vim-7.2/7.2.216
@@ -0,0 +1,137 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.216
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.216
+Problem: Two error messages have the same number E812.
+Solution: Give one message a different number.
+Files: runtime/doc/autocmd.txt, runtime/doc/if_mzsch.txt, src/if_mzsch.c
+
+
+*** ../vim-7.2.215/runtime/doc/autocmd.txt 2008-08-09 19:36:46.000000000 +0200
+--- runtime/doc/autocmd.txt 2009-06-24 17:49:04.000000000 +0200
+***************
+*** 335,340 ****
+--- 335,342 ----
+ NOTE: When this autocommand is executed, the
+ current buffer "%" may be different from the
+ buffer being deleted "<afile>" and "<abuf>".
++ Don't change to another buffer, it will cause
++ problems.
+ *BufEnter*
+ BufEnter After entering a buffer. Useful for setting
+ options for a file type. Also executed when
+***************
+*** 397,402 ****
+--- 399,406 ----
+ NOTE: When this autocommand is executed, the
+ current buffer "%" may be different from the
+ buffer being unloaded "<afile>".
++ Don't change to another buffer, it will cause
++ problems.
+ *BufWinEnter*
+ BufWinEnter After a buffer is displayed in a window. This
+ can be when the buffer is loaded (after
+***************
+*** 428,433 ****
+--- 432,439 ----
+ NOTE: When this autocommand is executed, the
+ current buffer "%" may be different from the
+ buffer being deleted "<afile>".
++ Don't change to another buffer, it will cause
++ problems.
+ *BufWrite* *BufWritePre*
+ BufWrite or BufWritePre Before writing the whole buffer to a file.
+ *BufWriteCmd*
+***************
+*** 748,755 ****
+ 'a' abort, like hitting CTRL-C
+ When set to an empty string the user will be
+ asked, as if there was no SwapExists autocmd.
+! Note: Do not try to change the buffer, the
+! results are unpredictable.
+ *Syntax*
+ Syntax When the 'syntax' option has been set. The
+ pattern is matched against the syntax name.
+--- 754,763 ----
+ 'a' abort, like hitting CTRL-C
+ When set to an empty string the user will be
+ asked, as if there was no SwapExists autocmd.
+! *E812*
+! It is not allowed to change to another buffer,
+! change a buffer name or change directory
+! here.
+ *Syntax*
+ Syntax When the 'syntax' option has been set. The
+ pattern is matched against the syntax name.
+*** ../vim-7.2.215/runtime/doc/if_mzsch.txt 2009-05-26 22:58:43.000000000 +0200
+--- runtime/doc/if_mzsch.txt 2009-06-24 12:08:20.000000000 +0200
+***************
+*** 1,4 ****
+! *if_mzsch.txt* For Vim version 7.2. Last change: 2009 May 26
+
+
+ VIM REFERENCE MANUAL by Sergey Khorev
+--- 1,4 ----
+! *if_mzsch.txt* For Vim version 7.2. Last change: 2009 Jun 24
+
+
+ VIM REFERENCE MANUAL by Sergey Khorev
+***************
+*** 231,237 ****
+ (set-cursor (line . col) [window]) Set cursor position.
+
+ ==============================================================================
+! 5. Dynamic loading *mzscheme-dynamic* *E812*
+
+ On MS-Windows the MzScheme libraries can be loaded dynamically. The |:version|
+ output then includes |+mzscheme/dyn|.
+--- 231,237 ----
+ (set-cursor (line . col) [window]) Set cursor position.
+
+ ==============================================================================
+! 5. Dynamic loading *mzscheme-dynamic* *E815*
+
+ On MS-Windows the MzScheme libraries can be loaded dynamically. The |:version|
+ output then includes |+mzscheme/dyn|.
+*** ../vim-7.2.215/src/if_mzsch.c 2009-05-26 22:58:43.000000000 +0200
+--- src/if_mzsch.c 2009-06-24 12:08:23.000000000 +0200
+***************
+*** 1040,1046 ****
+ #ifdef DYNAMIC_MZSCHEME
+ if (!mzscheme_enabled(TRUE))
+ {
+! EMSG(_("E812: Sorry, this command is disabled, the MzScheme libraries could not be loaded."));
+ return -1;
+ }
+ #endif
+--- 1040,1046 ----
+ #ifdef DYNAMIC_MZSCHEME
+ if (!mzscheme_enabled(TRUE))
+ {
+! EMSG(_("E815: Sorry, this command is disabled, the MzScheme libraries could not be loaded."));
+ return -1;
+ }
+ #endif
+*** ../vim-7.2.215/src/version.c 2009-06-24 17:31:27.000000000 +0200
+--- src/version.c 2009-06-24 17:46:56.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 216,
+ /**/
+
+--
+Everyone has a photographic memory. Some don't have film.
+
+ /// 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/vim/vim-7.2/7.2.217 b/vim/vim-7.2/7.2.217
new file mode 100644
index 0000000..30d8aa6
--- /dev/null
+++ b/vim/vim-7.2/7.2.217
@@ -0,0 +1,57 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.217
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.217
+Problem: Running tests with valgrind doesn't work as advertised.
+Solution: Fix the line in the Makefile.
+Files: src/testdir/Makefile
+
+
+*** ../vim-7.2.216/src/testdir/Makefile 2009-03-11 16:26:01.000000000 +0100
+--- src/testdir/Makefile 2009-06-24 14:59:42.000000000 +0200
+***************
+*** 4,12 ****
+
+ VIMPROG = ../vim
+
+! # Uncomment this line for using valgrind.
+! # The output goes into a file "valgrind.$PID" (sorry, no test number).
+! # VALGRIND = valgrind --tool=memcheck --leak-check=yes --num-callers=15 --logfile=valgrind
+
+ SCRIPTS = test1.out test2.out test3.out test4.out test5.out test6.out \
+ test7.out test8.out test9.out test10.out test11.out \
+--- 4,14 ----
+
+ VIMPROG = ../vim
+
+! # Uncomment this line to use valgrind for memory leaks and extra warnings.
+! # The output goes into a file "valgrind.testN"
+! # Vim should be compiled with EXITFREE to avoid false warnings.
+! # This will make testing about 10 times as slow.
+! # VALGRIND = valgrind --tool=memcheck --leak-check=yes --num-callers=15 --log-file=valgrind.$*
+
+ SCRIPTS = test1.out test2.out test3.out test4.out test5.out test6.out \
+ test7.out test8.out test9.out test10.out test11.out \
+*** ../vim-7.2.216/src/version.c 2009-06-24 17:51:01.000000000 +0200
+--- src/version.c 2009-06-24 18:07:07.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 217,
+ /**/
+
+--
+A day without sunshine is like, well, night.
+
+ /// 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/vim/vim-7.2/7.2.218 b/vim/vim-7.2/7.2.218
new file mode 100644
index 0000000..b48d718
--- /dev/null
+++ b/vim/vim-7.2/7.2.218
@@ -0,0 +1,52 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.218
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.218
+Problem: Cannot build GTK with hangul_input feature. (Dominique Pelle)
+Solution: Adjuste #ifdef. (SungHyun Nam)
+Files: src/gui.c
+
+
+*** ../vim-7.2.217/src/gui.c 2009-06-16 16:01:34.000000000 +0200
+--- src/gui.c 2009-06-24 17:45:01.000000000 +0200
+***************
+*** 959,965 ****
+ guicolor_T fg, bg;
+
+ if (
+! # ifdef HAVE_GTK2
+ preedit_get_status()
+ # else
+ im_get_status()
+--- 959,965 ----
+ guicolor_T fg, bg;
+
+ if (
+! # if defined(HAVE_GTK2) && !defined(FEAT_HANGULIN)
+ preedit_get_status()
+ # else
+ im_get_status()
+*** ../vim-7.2.217/src/version.c 2009-06-24 18:07:55.000000000 +0200
+--- src/version.c 2009-06-24 18:31:06.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 218,
+ /**/
+
+--
+The users that I support would double-click on a landmine to find out
+what happens. -- A system administrator
+
+ /// 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 ///