--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 7.2.084
+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.084
+Problem: Recursive structures are not handled properly in Python
+ vim.eval().
+Solution: Keep track of references in a better way. (Yukihiro Nakadaira)
+Files: src/if_python.c
+
+
+*** ../vim-7.2.083/src/if_python.c Thu Nov 20 11:04:01 2008
+--- src/if_python.c Tue Jan 13 18:08:06 2009
+***************
+*** 1151,1164 ****
+
+ /* Check if we run into a recursive loop. The item must be in lookupDict
+ * then and we can use it again. */
+! sprintf(ptrBuf, PRINTF_DECIMAL_LONG_U, (long_u)our_tv);
+! result = PyDict_GetItemString(lookupDict, ptrBuf);
+! if (result != NULL)
+! Py_INCREF(result);
+! else if (our_tv->v_type == VAR_STRING)
+ {
+ result = Py_BuildValue("s", our_tv->vval.v_string);
+- PyDict_SetItemString(lookupDict, ptrBuf, result);
+ }
+ else if (our_tv->v_type == VAR_NUMBER)
+ {
+--- 1151,1173 ----
+
+ /* Check if we run into a recursive loop. The item must be in lookupDict
+ * then and we can use it again. */
+! if ((our_tv->v_type == VAR_LIST && our_tv->vval.v_list != NULL)
+! || (our_tv->v_type == VAR_DICT && our_tv->vval.v_dict != NULL))
+! {
+! sprintf(ptrBuf, PRINTF_DECIMAL_LONG_U,
+! our_tv->v_type == VAR_LIST ? (long_u)our_tv->vval.v_list
+! : (long_u)our_tv->vval.v_dict);
+! result = PyDict_GetItemString(lookupDict, ptrBuf);
+! if (result != NULL)
+! {
+! Py_INCREF(result);
+! return result;
+! }
+! }
+!
+! if (our_tv->v_type == VAR_STRING)
+ {
+ result = Py_BuildValue("s", our_tv->vval.v_string);
+ }
+ else if (our_tv->v_type == VAR_NUMBER)
+ {
+***************
+*** 1167,1173 ****
+ /* For backwards compatibility numbers are stored as strings. */
+ sprintf(buf, "%ld", (long)our_tv->vval.v_number);
+ result = Py_BuildValue("s", buf);
+- PyDict_SetItemString(lookupDict, ptrBuf, result);
+ }
+ # ifdef FEAT_FLOAT
+ else if (our_tv->v_type == VAR_FLOAT)
+--- 1176,1181 ----
+***************
+*** 1176,1182 ****
+
+ sprintf(buf, "%f", our_tv->vval.v_float);
+ result = Py_BuildValue("s", buf);
+- PyDict_SetItemString(lookupDict, ptrBuf, result);
+ }
+ # endif
+ else if (our_tv->v_type == VAR_LIST)
+--- 1184,1189 ----
+***************
+*** 1185,1194 ****
+ listitem_T *curr;
+
+ result = PyList_New(0);
+- PyDict_SetItemString(lookupDict, ptrBuf, result);
+
+ if (list != NULL)
+ {
+ for (curr = list->lv_first; curr != NULL; curr = curr->li_next)
+ {
+ newObj = VimToPython(&curr->li_tv, depth + 1, lookupDict);
+--- 1192,1202 ----
+ listitem_T *curr;
+
+ result = PyList_New(0);
+
+ if (list != NULL)
+ {
++ PyDict_SetItemString(lookupDict, ptrBuf, result);
++
+ for (curr = list->lv_first; curr != NULL; curr = curr->li_next)
+ {
+ newObj = VimToPython(&curr->li_tv, depth + 1, lookupDict);
+***************
+*** 1200,1206 ****
+ else if (our_tv->v_type == VAR_DICT)
+ {
+ result = PyDict_New();
+- PyDict_SetItemString(lookupDict, ptrBuf, result);
+
+ if (our_tv->vval.v_dict != NULL)
+ {
+--- 1208,1213 ----
+***************
+*** 1209,1214 ****
+--- 1216,1223 ----
+ hashitem_T *hi;
+ dictitem_T *di;
+
++ PyDict_SetItemString(lookupDict, ptrBuf, result);
++
+ for (hi = ht->ht_array; todo > 0; ++hi)
+ {
+ if (!HASHITEM_EMPTY(hi))
+*** ../vim-7.2.083/src/version.c Tue Jan 13 17:27:18 2009
+--- src/version.c Tue Jan 13 17:54:14 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 84,
+ /**/
+
+--
+Article in the first Free Software Magazine: "Bram Moolenaar studied electrical
+engineering at the Technical University of Delft and graduated in 1985 on a
+multi-processor Unix architecture."
+Response by "dimator": Could the school not afford a proper stage for the
+ceremony?
+
+ /// 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 ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 7.2.085
+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.085
+Problem: ":set <M-b>=<Esc>b" does not work when 'encoding' is utf-8.
+Solution: Put the <M-b> character in the input buffer as valid utf-8.
+ (partly by Matt Wosniski)
+Files: src/term.c
+
+
+*** ../vim-7.2.084/src/term.c Tue Jul 29 12:22:12 2008
+--- src/term.c Thu Jan 22 18:18:29 2009
+***************
+*** 4920,4926 ****
+ key_name[0] = KEY2TERMCAP0(key);
+ key_name[1] = KEY2TERMCAP1(key);
+ if (key_name[0] == KS_KEY)
+! string[new_slen++] = key_name[1]; /* from ":set <M-b>=xx" */
+ else
+ {
+ string[new_slen++] = K_SPECIAL;
+--- 4920,4934 ----
+ key_name[0] = KEY2TERMCAP0(key);
+ key_name[1] = KEY2TERMCAP1(key);
+ if (key_name[0] == KS_KEY)
+! {
+! /* from ":set <M-b>=xx" */
+! #ifdef FEAT_MBYTE
+! if (has_mbyte)
+! new_slen += (*mb_char2bytes)(key_name[1], string + new_slen);
+! else
+! #endif
+! string[new_slen++] = key_name[1];
+! }
+ else
+ {
+ string[new_slen++] = K_SPECIAL;
+*** ../vim-7.2.084/src/version.c Tue Jan 13 18:10:21 2009
+--- src/version.c Thu Jan 22 18:31:50 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 85,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+20. When looking at a pageful of someone else's links, you notice all of them
+ are already highlighted in purple.
+
+ /// 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 ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 7.2.086
+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.086
+Problem: Using ":diffget 1" in buffer 1 corrupts the text.
+Solution: Don't do anything when source and destination of ":diffget" or
+ ":diffput" is the same buffer. (Dominique Pelle)
+Files: src/diff.c
+
+
+*** ../vim-7.2.085/src/diff.c Sun Nov 30 15:15:56 2008
+--- src/diff.c Wed Jan 14 20:40:25 2009
+***************
+*** 8,14 ****
+ */
+
+ /*
+! * diff.c: code for diff'ing two or three buffers.
+ */
+
+ #include "vim.h"
+--- 8,14 ----
+ */
+
+ /*
+! * diff.c: code for diff'ing two, three or four buffers.
+ */
+
+ #include "vim.h"
+***************
+*** 116,122 ****
+ * Add a buffer to make diffs for.
+ * Call this when a new buffer is being edited in the current window where
+ * 'diff' is set.
+! * Marks the current buffer as being part of the diff and requireing updating.
+ * This must be done before any autocmd, because a command may use info
+ * about the screen contents.
+ */
+--- 116,122 ----
+ * Add a buffer to make diffs for.
+ * Call this when a new buffer is being edited in the current window where
+ * 'diff' is set.
+! * Marks the current buffer as being part of the diff and requiring updating.
+ * This must be done before any autocmd, because a command may use info
+ * about the screen contents.
+ */
+***************
+*** 929,935 ****
+ goto theend;
+
+ #ifdef UNIX
+! /* Temporaraly chdir to /tmp, to avoid patching files in the current
+ * directory when the patch file contains more than one patch. When we
+ * have our own temp dir use that instead, it will be cleaned up when we
+ * exit (any .rej files created). Don't change directory if we can't
+--- 929,935 ----
+ goto theend;
+
+ #ifdef UNIX
+! /* Temporarily chdir to /tmp, to avoid patching files in the current
+ * directory when the patch file contains more than one patch. When we
+ * have our own temp dir use that instead, it will be cleaned up when we
+ * exit (any .rej files created). Don't change directory if we can't
+***************
+*** 2129,2134 ****
+--- 2129,2136 ----
+ EMSG2(_("E102: Can't find buffer \"%s\""), eap->arg);
+ return;
+ }
++ if (buf == curbuf)
++ return; /* nothing to do */
+ idx_other = diff_buf_idx(buf);
+ if (idx_other == DB_COUNT)
+ {
+*** ../vim-7.2.085/src/version.c Thu Jan 22 18:32:55 2009
+--- src/version.c Thu Jan 22 20:46:54 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 86,
+ /**/
+
+--
+Shift happens.
+ -- Doppler
+
+ /// 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 ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 7.2.087
+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.087
+Problem: Adding URL to 'path' doesn't work to edit a file.
+Solution: Skip simplify_filename() for URLs. (Matt Wosniski)
+Files: src/misc2.c
+
+
+*** ../vim-7.2.086/src/misc2.c Wed Dec 24 12:53:33 2008
+--- src/misc2.c Sun Jan 18 12:26:20 2009
+***************
+*** 4696,4702 ****
+ stackp->ffs_filearray_cur = i + 1;
+ ff_push(search_ctx, stackp);
+
+! simplify_filename(file_path);
+ if (mch_dirname(ff_expand_buffer, MAXPATHL)
+ == OK)
+ {
+--- 4696,4703 ----
+ stackp->ffs_filearray_cur = i + 1;
+ ff_push(search_ctx, stackp);
+
+! if (!path_with_url(file_path))
+! simplify_filename(file_path);
+ if (mch_dirname(ff_expand_buffer, MAXPATHL)
+ == OK)
+ {
+*** ../vim-7.2.086/src/version.c Thu Jan 22 20:48:07 2009
+--- src/version.c Thu Jan 22 21:30:36 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 87,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+21. Your dog has its own home page.
+
+ /// 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 ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 7.2.088 (extra)
+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.088 (extra)
+Problem: OpenClipboard() may fail when another application is using the
+ clipboard.
+Solution: Retry OpenClipboard() a few times. (Jianrong Yu)
+Files: src/os_mswin.c
+
+
+*** ../vim-7.2.087/src/os_mswin.c Thu Nov 20 17:09:09 2008
+--- src/os_mswin.c Thu Jan 22 18:38:12 2009
+***************
+*** 1224,1229 ****
+--- 1224,1248 ----
+ #endif /* FEAT_MBYTE */
+
+ /*
++ * Wait for another process to Close the Clipboard.
++ * Returns TRUE for success.
++ */
++ int
++ vim_open_clipboard()
++ {
++ int delay = 10;
++
++ while (!OpenClipboard(NULL))
++ {
++ if (delay > 500)
++ return FALSE; /* waited too long, give up */
++ Sleep(delay);
++ delay *= 2; /* wait for 10, 20, 40, 80, etc. msec */
++ }
++ return TRUE;
++ }
++
++ /*
+ * Get the current selection and put it in the clipboard register.
+ *
+ * NOTE: Must use GlobalLock/Unlock here to ensure Win32s compatibility.
+***************
+*** 1254,1260 ****
+ * Don't pass GetActiveWindow() as an argument to OpenClipboard() because
+ * then we can't paste back into the same window for some reason - webb.
+ */
+! if (!OpenClipboard(NULL))
+ return;
+
+ /* Check for vim's own clipboard format first. This only gets the type of
+--- 1273,1279 ----
+ * Don't pass GetActiveWindow() as an argument to OpenClipboard() because
+ * then we can't paste back into the same window for some reason - webb.
+ */
+! if (!vim_open_clipboard())
+ return;
+
+ /* Check for vim's own clipboard format first. This only gets the type of
+***************
+*** 1562,1568 ****
+ * because then we can't paste back into the same window for some
+ * reason - webb.
+ */
+! if (OpenClipboard(NULL))
+ {
+ if (EmptyClipboard())
+ {
+--- 1581,1587 ----
+ * because then we can't paste back into the same window for some
+ * reason - webb.
+ */
+! if (vim_open_clipboard())
+ {
+ if (EmptyClipboard())
+ {
+*** ../vim-7.2.087/src/version.c Thu Jan 22 21:31:24 2009
+--- src/version.c Thu Jan 22 21:47:52 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 88,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+22. You've already visited all the links at Yahoo and you're halfway through
+ Lycos.
+
+ /// 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 ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 7.2.089 (extra)
+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.089 (extra)
+Problem: Win32: crash when using Ultramon buttons.
+Solution: Don't use a WM_OLE message of zero size. (Ray Megal)
+Files: src/if_ole.cpp, src/gui_w48.c
+
+
+*** ../vim-7.2.088/src/if_ole.cpp Sun Mar 16 14:53:11 2008
+--- src/if_ole.cpp Mon Jan 19 21:16:33 2009
+***************
+*** 353,361 ****
+ }
+
+ /* Pass the string to the main input loop. The memory will be freed when
+! * the message is processed.
+ */
+! PostMessage(NULL, WM_OLE, 0, (LPARAM)str);
+
+ return S_OK;
+ }
+--- 353,365 ----
+ }
+
+ /* Pass the string to the main input loop. The memory will be freed when
+! * the message is processed. Except for an empty message, we don't need
+! * to post it then.
+ */
+! if (*str == NUL)
+! vim_free(str);
+! else
+! PostMessage(NULL, WM_OLE, 0, (LPARAM)str);
+
+ return S_OK;
+ }
+*** ../vim-7.2.088/src/gui_w48.c Wed Dec 24 12:20:10 2008
+--- src/gui_w48.c Mon Jan 19 21:19:30 2009
+***************
+*** 1663,1670 ****
+ if (msg.message == WM_OLE)
+ {
+ char_u *str = (char_u *)msg.lParam;
+! add_to_input_buf(str, (int)STRLEN(str));
+! vim_free(str);
+ return;
+ }
+ #endif
+--- 1663,1679 ----
+ if (msg.message == WM_OLE)
+ {
+ char_u *str = (char_u *)msg.lParam;
+! if (str == NULL || *str == NUL)
+! {
+! /* Message can't be ours, forward it. Fixes problem with Ultramon
+! * 3.0.4 */
+! DispatchMessage(&msg);
+! }
+! else
+! {
+! add_to_input_buf(str, (int)STRLEN(str));
+! vim_free(str); /* was allocated in CVim::SendKeys() */
+! }
+ return;
+ }
+ #endif
+*** ../vim-7.2.088/src/version.c Thu Jan 22 21:49:21 2009
+--- src/version.c Wed Jan 28 14:16:01 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 89,
+ /**/
+
+
+--
+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 ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 7.2.090
+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.090
+Problem: User command containing 0x80 in multi-byte character does not work
+ properly. (Yasuhiro Matsumoto)
+Solution: Undo replacement of K_SPECIAL and CSI characters when executing
+ the command.
+Files: src/ex_docmd.c
+
+
+*** ../vim-7.2.089/src/ex_docmd.c Tue Dec 9 11:17:23 2008
+--- src/ex_docmd.c Wed Jan 28 15:34:19 2009
+***************
+*** 5482,5487 ****
+--- 5482,5490 ----
+ return OK;
+ }
+
++ /*
++ * ":command ..."
++ */
+ static void
+ ex_command(eap)
+ exarg_T *eap;
+***************
+*** 5914,5919 ****
+--- 5917,5923 ----
+
+ char_u *start;
+ char_u *end;
++ char_u *ksp;
+ size_t len, totlen;
+
+ size_t split_len = 0;
+***************
+*** 5930,5945 ****
+
+ /*
+ * Replace <> in the command by the arguments.
+ */
+ buf = NULL;
+ for (;;)
+ {
+! p = cmd->uc_rep;
+! q = buf;
+ totlen = 0;
+! while ((start = vim_strchr(p, '<')) != NULL
+! && (end = vim_strchr(start + 1, '>')) != NULL)
+ {
+ /* Include the '>' */
+ ++end;
+
+--- 5934,5984 ----
+
+ /*
+ * Replace <> in the command by the arguments.
++ * First round: "buf" is NULL, compute length, allocate "buf".
++ * Second round: copy result into "buf".
+ */
+ buf = NULL;
+ for (;;)
+ {
+! p = cmd->uc_rep; /* source */
+! q = buf; /* destinateion */
+ totlen = 0;
+!
+! for (;;)
+ {
++ start = vim_strchr(p, '<');
++ if (start != NULL)
++ end = vim_strchr(start + 1, '>');
++ if (buf != NULL)
++ {
++ ksp = vim_strchr(p, K_SPECIAL);
++ if (ksp != NULL && (start == NULL || ksp < start || end == NULL)
++ && ((ksp[1] == KS_SPECIAL && ksp[2] == KE_FILLER)
++ # ifdef FEAT_GUI
++ || (ksp[1] == KS_EXTRA && ksp[2] == (int)KE_CSI)
++ # endif
++ ))
++ {
++ /* K_SPECIAL han been put in the buffer as K_SPECIAL
++ * KS_SPECIAL KE_FILLER, like for mappings, but
++ * do_cmdline() doesn't handle that, so convert it back.
++ * Also change K_SPECIAL KS_EXTRA KE_CSI into CSI. */
++ len = ksp - p;
++ if (len > 0)
++ {
++ mch_memmove(q, p, len);
++ q += len;
++ }
++ *q++ = ksp[1] == KS_SPECIAL ? K_SPECIAL : CSI;
++ p = ksp + 3;
++ continue;
++ }
++ }
++
++ /* break if there no <item> is found */
++ if (start == NULL || end == NULL)
++ break;
++
+ /* Include the '>' */
+ ++end;
+
+*** ../vim-7.2.089/src/version.c Wed Jan 28 14:17:21 2009
+--- src/version.c Wed Jan 28 15:37:40 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 90,
+ /**/
+
+--
+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 ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 7.2.091
+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.091
+Problem: ":cs help" output is not aligned for some languages.
+Solution: Compute character size instead of byte size. (Dominique Pelle)
+Files: src/if_cscope.c
+
+
+*** ../vim-7.2.090/src/if_cscope.c Mon Aug 25 04:35:13 2008
+--- src/if_cscope.c Thu Jan 22 18:44:46 2009
+***************
+*** 1177,1184 ****
+ (void)MSG_PUTS(_("cscope commands:\n"));
+ while (cmdp->name != NULL)
+ {
+! (void)smsg((char_u *)_("%-5s: %-30s (Usage: %s)"),
+! cmdp->name, _(cmdp->help), cmdp->usage);
+ if (strcmp(cmdp->name, "find") == 0)
+ MSG_PUTS(_("\n"
+ " c: Find functions calling this function\n"
+--- 1177,1192 ----
+ (void)MSG_PUTS(_("cscope commands:\n"));
+ while (cmdp->name != NULL)
+ {
+! char *help = _(cmdp->help);
+! int space_cnt = 30 - vim_strsize((char_u *)help);
+!
+! /* Use %*s rather than %30s to ensure proper alignment in utf-8 */
+! if (space_cnt < 0)
+! space_cnt = 0;
+! (void)smsg((char_u *)_("%-5s: %s%*s (Usage: %s)"),
+! cmdp->name,
+! help, space_cnt, " ",
+! cmdp->usage);
+ if (strcmp(cmdp->name, "find") == 0)
+ MSG_PUTS(_("\n"
+ " c: Find functions calling this function\n"
+*** ../vim-7.2.090/src/version.c Wed Jan 28 15:42:07 2009
+--- src/version.c Wed Jan 28 16:02:25 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 91,
+ /**/
+
+--
+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 ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 7.2.092
+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.092
+Problem: Some error messages are not translated.
+Solution: Add _() around the messages. (Dominique Pelle)
+Files: src/eval.c
+
+
+*** ../vim-7.2.091/src/eval.c Sun Dec 21 13:02:47 2008
+--- src/eval.c Sat Jan 24 12:22:47 2009
+***************
+*** 7918,7926 ****
+ else if (!aborting())
+ {
+ if (argcount == MAX_FUNC_ARGS)
+! emsg_funcname("E740: Too many arguments for function %s", name);
+ else
+! emsg_funcname("E116: Invalid arguments for function %s", name);
+ }
+
+ while (--argcount >= 0)
+--- 7918,7926 ----
+ else if (!aborting())
+ {
+ if (argcount == MAX_FUNC_ARGS)
+! emsg_funcname(N_("E740: Too many arguments for function %s"), name);
+ else
+! emsg_funcname(N_("E116: Invalid arguments for function %s"), name);
+ }
+
+ while (--argcount >= 0)
+***************
+*** 8153,8158 ****
+--- 8153,8159 ----
+
+ /*
+ * Give an error message with a function name. Handle <SNR> things.
++ * "ermsg" is to be passed without translation, use N_() instead of _().
+ */
+ static void
+ emsg_funcname(ermsg, name)
+***************
+*** 19867,19873 ****
+ }
+ }
+ else
+! emsg_funcname("E123: Undefined function: %s", name);
+ }
+ goto ret_free;
+ }
+--- 19868,19874 ----
+ }
+ }
+ else
+! emsg_funcname(N_("E123: Undefined function: %s"), name);
+ }
+ goto ret_free;
+ }
+***************
+*** 19911,19917 ****
+ : eval_isnamec(arg[j])))
+ ++j;
+ if (arg[j] != NUL)
+! emsg_funcname(_(e_invarg2), arg);
+ }
+ }
+
+--- 19912,19918 ----
+ : eval_isnamec(arg[j])))
+ ++j;
+ if (arg[j] != NUL)
+! emsg_funcname(e_invarg2, arg);
+ }
+ }
+
+***************
+*** 20183,20189 ****
+ v = find_var(name, &ht);
+ if (v != NULL && v->di_tv.v_type == VAR_FUNC)
+ {
+! emsg_funcname("E707: Function name conflicts with variable: %s",
+ name);
+ goto erret;
+ }
+--- 20184,20190 ----
+ v = find_var(name, &ht);
+ if (v != NULL && v->di_tv.v_type == VAR_FUNC)
+ {
+! emsg_funcname(N_("E707: Function name conflicts with variable: %s"),
+ name);
+ goto erret;
+ }
+***************
+*** 20198,20204 ****
+ }
+ if (fp->uf_calls > 0)
+ {
+! emsg_funcname("E127: Cannot redefine function %s: It is in use",
+ name);
+ goto erret;
+ }
+--- 20199,20205 ----
+ }
+ if (fp->uf_calls > 0)
+ {
+! emsg_funcname(N_("E127: Cannot redefine function %s: It is in use"),
+ name);
+ goto erret;
+ }
+***************
+*** 21477,21483 ****
+
+ /*
+ * Return TRUE if items in "fc" do not have "copyID". That means they are not
+! * referenced from anywyere.
+ */
+ static int
+ can_free_funccal(fc, copyID)
+--- 21478,21484 ----
+
+ /*
+ * Return TRUE if items in "fc" do not have "copyID". That means they are not
+! * referenced from anywhere.
+ */
+ static int
+ can_free_funccal(fc, copyID)
+*** ../vim-7.2.091/src/version.c Wed Jan 28 16:03:51 2009
+--- src/version.c Wed Jan 28 19:05:47 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 92,
+ /**/
+
+
+--
+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 ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 7.2.093 (extra)
+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.093 (extra)
+Problem: Win32: inputdialog() and find/replace dialogs can't handle
+ multi-byte text.
+Solution: Use the wide version of dialog functions when available. (Yanwei
+ Jia)
+Files: src/gui_w32.c, src/gui_w48.c
+
+
+*** ../vim-7.2.092/src/gui_w32.c Thu Nov 20 17:09:09 2008
+--- src/gui_w32.c Wed Jan 28 21:15:29 2009
+***************
+*** 1582,1587 ****
+--- 1582,1598 ----
+ s_findrep_struct.lpstrReplaceWith[0] = NUL;
+ s_findrep_struct.wFindWhatLen = MSWIN_FR_BUFSIZE;
+ s_findrep_struct.wReplaceWithLen = MSWIN_FR_BUFSIZE;
++ # if defined(FEAT_MBYTE) && defined(WIN3264)
++ s_findrep_struct_w.lStructSize = sizeof(s_findrep_struct_w);
++ s_findrep_struct_w.lpstrFindWhat =
++ (LPWSTR)alloc(MSWIN_FR_BUFSIZE * sizeof(WCHAR));
++ s_findrep_struct_w.lpstrFindWhat[0] = NUL;
++ s_findrep_struct_w.lpstrReplaceWith =
++ (LPWSTR)alloc(MSWIN_FR_BUFSIZE * sizeof(WCHAR));
++ s_findrep_struct_w.lpstrReplaceWith[0] = NUL;
++ s_findrep_struct_w.wFindWhatLen = MSWIN_FR_BUFSIZE;
++ s_findrep_struct_w.wReplaceWithLen = MSWIN_FR_BUFSIZE;
++ # endif
+ #endif
+
+ theend:
+***************
+*** 2938,2945 ****
+
+ /* If the edit box exists, copy the string. */
+ if (s_textfield != NULL)
+! GetDlgItemText(hwnd, DLG_NONBUTTON_CONTROL + 2,
+ s_textfield, IOSIZE);
+
+ /*
+ * Need to check for IDOK because if the user just hits Return to
+--- 2949,2975 ----
+
+ /* If the edit box exists, copy the string. */
+ if (s_textfield != NULL)
+! {
+! # if defined(FEAT_MBYTE) && defined(WIN3264)
+! /* If the OS is Windows NT, and 'encoding' differs from active
+! * codepage: use wide function and convert text. */
+! if (os_version.dwPlatformId == VER_PLATFORM_WIN32_NT
+! && enc_codepage >= 0 && (int)GetACP() != enc_codepage)
+! {
+! WCHAR *wp = (WCHAR *)alloc(IOSIZE * sizeof(WCHAR));
+! char_u *p;
+!
+! GetDlgItemTextW(hwnd, DLG_NONBUTTON_CONTROL + 2, wp, IOSIZE);
+! p = utf16_to_enc(wp, NULL);
+! vim_strncpy(s_textfield, p, IOSIZE);
+! vim_free(p);
+! vim_free(wp);
+! }
+! else
+! # endif
+! GetDlgItemText(hwnd, DLG_NONBUTTON_CONTROL + 2,
+ s_textfield, IOSIZE);
++ }
+
+ /*
+ * Need to check for IDOK because if the user just hits Return to
+*** ../vim-7.2.092/src/gui_w48.c Wed Jan 28 14:17:21 2009
+--- src/gui_w48.c Wed Jan 28 21:10:26 2009
+***************
+*** 153,158 ****
+--- 153,161 ----
+ #ifdef MSWIN_FIND_REPLACE
+ static UINT s_findrep_msg = 0; /* set in gui_w[16/32].c */
+ static FINDREPLACE s_findrep_struct;
++ # if defined(FEAT_MBYTE) && defined(WIN3264)
++ static FINDREPLACEW s_findrep_struct_w;
++ # endif
+ static HWND s_findrep_hwnd = NULL;
+ static int s_findrep_is_find; /* TRUE for find dialog, FALSE
+ for find/replace dialog */
+***************
+*** 884,889 ****
+--- 887,931 ----
+ #endif
+
+ #ifdef MSWIN_FIND_REPLACE
++ # if defined(FEAT_MBYTE) && defined(WIN3264)
++ /*
++ * copy useful data from structure LPFINDREPLACE to structure LPFINDREPLACEW
++ */
++ static void
++ findrep_atow(LPFINDREPLACEW lpfrw, LPFINDREPLACE lpfr)
++ {
++ WCHAR *wp;
++
++ lpfrw->hwndOwner = lpfr->hwndOwner;
++ lpfrw->Flags = lpfr->Flags;
++
++ wp = enc_to_utf16(lpfr->lpstrFindWhat, NULL);
++ wcsncpy(lpfrw->lpstrFindWhat, wp, lpfrw->wFindWhatLen - 1);
++ vim_free(wp);
++
++ /* the field "lpstrReplaceWith" doesn't need to be copied */
++ }
++
++ /*
++ * copy useful data from structure LPFINDREPLACEW to structure LPFINDREPLACE
++ */
++ static void
++ findrep_wtoa(LPFINDREPLACE lpfr, LPFINDREPLACEW lpfrw)
++ {
++ char_u *p;
++
++ lpfr->Flags = lpfrw->Flags;
++
++ p = utf16_to_enc(lpfrw->lpstrFindWhat, NULL);
++ vim_strncpy(lpfr->lpstrFindWhat, p, lpfr->wFindWhatLen - 1);
++ vim_free(p);
++
++ p = utf16_to_enc(lpfrw->lpstrReplaceWith, NULL);
++ vim_strncpy(lpfr->lpstrReplaceWith, p, lpfr->wReplaceWithLen - 1);
++ vim_free(p);
++ }
++ # endif
++
+ /*
+ * Handle a Find/Replace window message.
+ */
+***************
+*** 893,898 ****
+--- 935,950 ----
+ int flags = 0;
+ int down;
+
++ # if defined(FEAT_MBYTE) && defined(WIN3264)
++ /* If the OS is Windows NT, and 'encoding' differs from active codepage:
++ * convert text from wide string. */
++ if (os_version.dwPlatformId == VER_PLATFORM_WIN32_NT
++ && enc_codepage >= 0 && (int)GetACP() != enc_codepage)
++ {
++ findrep_wtoa(&s_findrep_struct, &s_findrep_struct_w);
++ }
++ # endif
++
+ if (s_findrep_struct.Flags & FR_DIALOGTERM)
+ /* Give main window the focus back. */
+ (void)SetFocus(s_hwnd);
+***************
+*** 2562,2568 ****
+ if (!IsWindow(s_findrep_hwnd))
+ {
+ initialise_findrep(eap->arg);
+! s_findrep_hwnd = FindText((LPFINDREPLACE) &s_findrep_struct);
+ }
+
+ set_window_title(s_findrep_hwnd,
+--- 2614,2632 ----
+ if (!IsWindow(s_findrep_hwnd))
+ {
+ initialise_findrep(eap->arg);
+! # if defined(FEAT_MBYTE) && defined(WIN3264)
+! /* If the OS is Windows NT, and 'encoding' differs from active
+! * codepage: convert text and use wide function. */
+! if (os_version.dwPlatformId == VER_PLATFORM_WIN32_NT
+! && enc_codepage >= 0 && (int)GetACP() != enc_codepage)
+! {
+! findrep_atow(&s_findrep_struct_w, &s_findrep_struct);
+! s_findrep_hwnd = FindTextW(
+! (LPFINDREPLACEW) &s_findrep_struct_w);
+! }
+! else
+! # endif
+! s_findrep_hwnd = FindText((LPFINDREPLACE) &s_findrep_struct);
+ }
+
+ set_window_title(s_findrep_hwnd,
+***************
+*** 2587,2593 ****
+ if (!IsWindow(s_findrep_hwnd))
+ {
+ initialise_findrep(eap->arg);
+! s_findrep_hwnd = ReplaceText((LPFINDREPLACE) &s_findrep_struct);
+ }
+
+ set_window_title(s_findrep_hwnd,
+--- 2651,2668 ----
+ if (!IsWindow(s_findrep_hwnd))
+ {
+ initialise_findrep(eap->arg);
+! # if defined(FEAT_MBYTE) && defined(WIN3264)
+! if (os_version.dwPlatformId == VER_PLATFORM_WIN32_NT
+! && enc_codepage >= 0 && (int)GetACP() != enc_codepage)
+! {
+! findrep_atow(&s_findrep_struct_w, &s_findrep_struct);
+! s_findrep_hwnd = ReplaceTextW(
+! (LPFINDREPLACEW) &s_findrep_struct_w);
+! }
+! else
+! # endif
+! s_findrep_hwnd = ReplaceText(
+! (LPFINDREPLACE) &s_findrep_struct);
+ }
+
+ set_window_title(s_findrep_hwnd,
+*** ../vim-7.2.092/src/version.c Wed Jan 28 19:08:31 2009
+--- src/version.c Wed Jan 28 21:19:56 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 93,
+ /**/
+
+--
+I'm not familiar with this proof, but I'm aware of a significant
+following of toddlers who believe that peanut butter is the solution
+to all of life's problems... -- Tim Hammerquist
+
+ /// 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 ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 7.2.094
+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.094
+Problem: Compiler warning for signed/unsigned compare.
+Solution: Add type cast. Also fix a few typos.
+Files: src/edit.c
+
+
+*** ../vim-7.2.093/src/edit.c Tue Jan 13 12:29:03 2009
+--- src/edit.c Wed Jan 28 21:13:51 2009
+***************
+*** 1958,1963 ****
+--- 1958,1964 ----
+ * Only matters when there are composing characters.
+ * Return TRUE when something was deleted.
+ */
++ /*ARGSUSED*/
+ static int
+ del_char_after_col(limit_col)
+ int limit_col;
+***************
+*** 1971,1977 ****
+ * skip forward again when going too far back because of a
+ * composing character. */
+ mb_adjust_cursor();
+! while (curwin->w_cursor.col < limit_col)
+ {
+ int l = utf_ptr2len(ml_get_cursor());
+
+--- 1972,1978 ----
+ * skip forward again when going too far back because of a
+ * composing character. */
+ mb_adjust_cursor();
+! while (curwin->w_cursor.col < (colnr_T)limit_col)
+ {
+ int l = utf_ptr2len(ml_get_cursor());
+
+***************
+*** 4240,4246 ****
+ }
+
+ /* check if compl_curr_match has changed, (e.g. other type of
+! * expansion added somenthing) */
+ if (type != 0 && compl_curr_match != old_match)
+ found_new_match = OK;
+
+--- 4241,4247 ----
+ }
+
+ /* check if compl_curr_match has changed, (e.g. other type of
+! * expansion added something) */
+ if (type != 0 && compl_curr_match != old_match)
+ found_new_match = OK;
+
+***************
+*** 4741,4747 ****
+ }
+ compl_length = curwin->w_cursor.col - (int)compl_col;
+ /* IObuff is used to add a "word from the next line" would we
+! * have enough space? just being paranoic */
+ #define MIN_SPACE 75
+ if (compl_length > (IOSIZE - MIN_SPACE))
+ {
+--- 4742,4748 ----
+ }
+ compl_length = curwin->w_cursor.col - (int)compl_col;
+ /* IObuff is used to add a "word from the next line" would we
+! * have enough space? just being paranoid */
+ #define MIN_SPACE 75
+ if (compl_length > (IOSIZE - MIN_SPACE))
+ {
+***************
+*** 8206,8212 ****
+ /*
+ * If the cursor is on an indent, ^T/^D insert/delete one
+ * shiftwidth. Otherwise ^T/^D behave like a "<<" or ">>".
+! * Always round the indent to 'shiftwith', this is compatible
+ * with vi. But vi only supports ^T and ^D after an
+ * autoindent, we support it everywhere.
+ */
+--- 8207,8213 ----
+ /*
+ * If the cursor is on an indent, ^T/^D insert/delete one
+ * shiftwidth. Otherwise ^T/^D behave like a "<<" or ">>".
+! * Always round the indent to 'shiftwidth', this is compatible
+ * with vi. But vi only supports ^T and ^D after an
+ * autoindent, we support it everywhere.
+ */
+*** ../vim-7.2.093/src/version.c Wed Jan 28 21:22:20 2009
+--- src/version.c Wed Feb 4 11:17:02 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 94,
+ /**/
+
+--
+Despite the cost of living, have you noticed how it remains so popular?
+
+ /// 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 ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 7.2.095
+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.095
+Problem: With Visual selection, "r" and then CTRL-C Visual mode is stopped
+ but the highlighting is not removed.
+Solution: Call reset_VIsual().
+Files: src/normal.c
+
+
+*** ../vim-7.2.094/src/normal.c Thu Nov 20 16:11:03 2008
+--- src/normal.c Fri Jan 30 20:37:01 2009
+***************
+*** 6783,6788 ****
+--- 6783,6790 ----
+ /* Visual mode "r" */
+ if (VIsual_active)
+ {
++ if (got_int)
++ reset_VIsual();
+ nv_operator(cap);
+ return;
+ }
+***************
+*** 7839,7845 ****
+ else
+ i = curwin->w_leftcol;
+ /* Go to the middle of the screen line. When 'number' is on and lines
+! * are wrapping the middle can be more to the left.*/
+ if (cap->nchar == 'm')
+ i += (W_WIDTH(curwin) - curwin_col_off()
+ + ((curwin->w_p_wrap && i > 0)
+--- 7841,7847 ----
+ else
+ i = curwin->w_leftcol;
+ /* Go to the middle of the screen line. When 'number' is on and lines
+! * are wrapping the middle can be more to the left. */
+ if (cap->nchar == 'm')
+ i += (W_WIDTH(curwin) - curwin_col_off()
+ + ((curwin->w_p_wrap && i > 0)
+*** ../vim-7.2.094/src/version.c Wed Feb 4 11:19:40 2009
+--- src/version.c Wed Feb 4 11:43:28 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 95,
+ /**/
+
+--
+Nothing is fool-proof to a sufficiently talented fool.
+
+ /// 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 ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 7.2.096
+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.096
+Problem: After ":number" the "Press Enter" message may be on the wrong
+ screen, if switching screens for shell commands.
+Solution: Reset info_message. (James Vega)
+Files: src/ex_cmds.c
+
+
+*** ../vim-7.2.095/src/ex_cmds.c Tue Jan 13 16:57:09 2009
+--- src/ex_cmds.c Fri Jan 30 21:01:54 2009
+***************
+*** 2417,2424 ****
+ cursor_on(); /* msg_start() switches it off */
+ out_flush();
+ silent_mode = save_silent;
+- info_message = FALSE;
+ }
+ }
+
+ /*
+--- 2417,2424 ----
+ cursor_on(); /* msg_start() switches it off */
+ out_flush();
+ silent_mode = save_silent;
+ }
++ info_message = FALSE;
+ }
+
+ /*
+*** ../vim-7.2.095/src/version.c Wed Feb 4 11:45:28 2009
+--- src/version.c Wed Feb 4 13:12:55 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 96,
+ /**/
+
+--
+A fine is a tax for doing wrong. A tax is a fine for doing well.
+
+ /// 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 ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 7.2.097
+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.097
+Problem: "!xterm&" doesn't work when 'shell' is "bash".
+Solution: Ignore SIGHUP after calling setsid(). (Simon Schubert)
+Files: src/os_unix.c
+
+
+*** ../vim-7.2.096/src/os_unix.c Fri Nov 28 21:26:50 2008
+--- src/os_unix.c Wed Feb 4 12:09:55 2009
+***************
+*** 3950,3956 ****
+--- 3950,3966 ----
+ * children can be kill()ed. Don't do this when using pipes,
+ * because stdin is not a tty, we would lose /dev/tty. */
+ if (p_stmp)
++ {
+ (void)setsid();
++ # if defined(SIGHUP)
++ /* When doing "!xterm&" and 'shell' is bash: the shell
++ * will exit and send SIGHUP to all processes in its
++ * group, killing the just started process. Ignore SIGHUP
++ * to avoid that. (suggested by Simon Schubert)
++ */
++ signal(SIGHUP, SIG_IGN);
++ # endif
++ }
+ # endif
+ # ifdef FEAT_GUI
+ if (pty_slave_fd >= 0)
+*** ../vim-7.2.096/src/version.c Wed Feb 4 13:13:42 2009
+--- src/version.c Wed Feb 4 14:16:37 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 97,
+ /**/
+
+--
+It was recently discovered that research causes cancer in rats.
+
+ /// 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 ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 7.2.098
+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.098
+Problem: Warning for signed/unsigned pointer.
+Solution: Add type cast.
+Files: src/eval.c
+
+
+*** ../vim-7.2.097/src/eval.c Wed Jan 28 19:08:31 2009
+--- src/eval.c Wed Feb 4 13:09:01 2009
+***************
+*** 3928,3934 ****
+
+ /*
+ * Handle top level expression:
+! * expr1 ? expr0 : expr0
+ *
+ * "arg" must point to the first non-white of the expression.
+ * "arg" is advanced to the next non-white after the recognized expression.
+--- 3928,3934 ----
+
+ /*
+ * Handle top level expression:
+! * expr2 ? expr1 : expr1
+ *
+ * "arg" must point to the first non-white of the expression.
+ * "arg" is advanced to the next non-white after the recognized expression.
+***************
+*** 19912,19918 ****
+ : eval_isnamec(arg[j])))
+ ++j;
+ if (arg[j] != NUL)
+! emsg_funcname(e_invarg2, arg);
+ }
+ }
+
+--- 19912,19918 ----
+ : eval_isnamec(arg[j])))
+ ++j;
+ if (arg[j] != NUL)
+! emsg_funcname((char *)e_invarg2, arg);
+ }
+ }
+
+*** ../vim-7.2.097/src/version.c Wed Feb 4 14:18:44 2009
+--- src/version.c Wed Feb 4 16:24:06 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 98,
+ /**/
+
+--
+Everybody lies, but it doesn't matter since nobody listens.
+ -- Lieberman's Law
+
+ /// 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 ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 7.2.099
+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.099
+Problem: Changing GUI options causes an unnecessary redraw when the GUI
+ isn't active.
+Solution: Avoid the redraw. (Lech Lorens)
+Files: src/option.c
+
+
+*** ../vim-7.2.098/src/option.c Wed Dec 24 12:53:33 2008
+--- src/option.c Wed Feb 4 16:59:56 2009
+***************
+*** 5407,5412 ****
+--- 5407,5416 ----
+ int did_chartab = FALSE;
+ char_u **gvarp;
+ long_u free_oldval = (options[opt_idx].flags & P_ALLOCED);
++ #ifdef FEAT_GUI
++ /* set when changing an option that only requires a redraw in the GUI */
++ int redraw_gui_only = FALSE;
++ #endif
+
+ /* Get the global option to compare with, otherwise we would have to check
+ * two values for all local options. */
+***************
+*** 6055,6060 ****
+--- 6059,6065 ----
+ errmsg = (char_u *)N_("E596: Invalid font(s)");
+ }
+ }
++ redraw_gui_only = TRUE;
+ }
+ # ifdef FEAT_XFONTSET
+ else if (varp == &p_guifontset)
+***************
+*** 6063,6068 ****
+--- 6068,6074 ----
+ errmsg = (char_u *)N_("E597: can't select fontset");
+ else if (gui.in_use && gui_init_font(p_guifontset, TRUE) != OK)
+ errmsg = (char_u *)N_("E598: Invalid fontset");
++ redraw_gui_only = TRUE;
+ }
+ # endif
+ # ifdef FEAT_MBYTE
+***************
+*** 6072,6077 ****
+--- 6078,6084 ----
+ errmsg = (char_u *)N_("E533: can't select wide font");
+ else if (gui_get_wide_font() == FAIL)
+ errmsg = (char_u *)N_("E534: Invalid wide font");
++ redraw_gui_only = TRUE;
+ }
+ # endif
+ #endif
+***************
+*** 6133,6145 ****
+--- 6140,6163 ----
+ #ifdef FEAT_GUI
+ /* 'guioptions' */
+ else if (varp == &p_go)
++ {
+ gui_init_which_components(oldval);
++ redraw_gui_only = TRUE;
++ }
+ #endif
+
+ #if defined(FEAT_GUI_TABLINE)
+ /* 'guitablabel' */
+ else if (varp == &p_gtl)
++ {
+ redraw_tabline = TRUE;
++ redraw_gui_only = TRUE;
++ }
++ /* 'guitabtooltip' */
++ else if (varp == &p_gtt)
++ {
++ redraw_gui_only = TRUE;
++ }
+ #endif
+
+ #if defined(FEAT_MOUSE_TTY) && (defined(UNIX) || defined(VMS))
+***************
+*** 6717,6723 ****
+
+ if (curwin->w_curswant != MAXCOL)
+ curwin->w_set_curswant = TRUE; /* in case 'showbreak' changed */
+! check_redraw(options[opt_idx].flags);
+
+ return errmsg;
+ }
+--- 6735,6745 ----
+
+ if (curwin->w_curswant != MAXCOL)
+ curwin->w_set_curswant = TRUE; /* in case 'showbreak' changed */
+! #ifdef FEAT_GUI
+! /* check redraw when it's not a GUI option or the GUI is active. */
+! if (!redraw_gui_only || gui.in_use)
+! #endif
+! check_redraw(options[opt_idx].flags);
+
+ return errmsg;
+ }
+*** ../vim-7.2.098/src/version.c Wed Feb 4 16:25:53 2009
+--- src/version.c Wed Feb 4 17:24:11 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 99,
+ /**/
+
+--
+I started out with nothing, and I still have most of it.
+ -- Michael Davis -- "Tonight Show"
+
+ /// 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 ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 7.2.100
+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.100
+Problem: When using ":source" on a FIFO or something else that can't rewind
+ the first three bytes are skipped.
+Solution: Instead of rewinding read the first line and detect a BOM in that.
+ (mostly by James Vega)
+Files: src/ex_cmds2.c
+
+
+*** ../vim-7.2.099/src/ex_cmds2.c Sat Nov 15 14:10:23 2008
+--- src/ex_cmds2.c Wed Feb 4 16:05:51 2009
+***************
+*** 2842,2847 ****
+--- 2842,2848 ----
+ linenr_T save_sourcing_lnum;
+ char_u *p;
+ char_u *fname_exp;
++ char_u *firstline = NULL;
+ int retval = FAIL;
+ #ifdef FEAT_EVAL
+ scid_T save_current_SID;
+***************
+*** 2992,3014 ****
+
+ cookie.level = ex_nesting_level;
+ #endif
+- #ifdef FEAT_MBYTE
+- cookie.conv.vc_type = CONV_NONE; /* no conversion */
+-
+- /* Try reading the first few bytes to check for a UTF-8 BOM. */
+- {
+- char_u buf[3];
+-
+- if (fread((char *)buf, sizeof(char_u), (size_t)3, cookie.fp)
+- == (size_t)3
+- && buf[0] == 0xef && buf[1] == 0xbb && buf[2] == 0xbf)
+- /* Found BOM, setup conversion and skip over it. */
+- convert_setup(&cookie.conv, (char_u *)"utf-8", p_enc);
+- else
+- /* No BOM found, rewind. */
+- fseek(cookie.fp, 0L, SEEK_SET);
+- }
+- #endif
+
+ /*
+ * Keep the sourcing name/lnum, for recursive calls.
+--- 2993,2998 ----
+***************
+*** 3018,3023 ****
+--- 3002,3026 ----
+ save_sourcing_lnum = sourcing_lnum;
+ sourcing_lnum = 0;
+
++ #ifdef FEAT_MBYTE
++ cookie.conv.vc_type = CONV_NONE; /* no conversion */
++
++ /* Read the first line so we can check for a UTF-8 BOM. */
++ firstline = getsourceline(0, (void *)&cookie, 0);
++ if (firstline != NULL && STRLEN(firstline) >= 3 && firstline[0] == 0xef
++ && firstline[1] == 0xbb && firstline[2] == 0xbf)
++ {
++ /* Found BOM; setup conversion, skip over BOM and recode the line. */
++ convert_setup(&cookie.conv, (char_u *)"utf-8", p_enc);
++ p = string_convert(&cookie.conv, firstline + 3, NULL);
++ if (p != NULL)
++ {
++ vim_free(firstline);
++ firstline = p;
++ }
++ }
++ #endif
++
+ #ifdef STARTUPTIME
+ time_push(&tv_rel, &tv_start);
+ #endif
+***************
+*** 3111,3119 ****
+ /*
+ * Call do_cmdline, which will call getsourceline() to get the lines.
+ */
+! do_cmdline(NULL, getsourceline, (void *)&cookie,
+ DOCMD_VERBOSE|DOCMD_NOWAIT|DOCMD_REPEAT);
+-
+ retval = OK;
+
+ #ifdef FEAT_PROFILE
+--- 3114,3121 ----
+ /*
+ * Call do_cmdline, which will call getsourceline() to get the lines.
+ */
+! do_cmdline(firstline, getsourceline, (void *)&cookie,
+ DOCMD_VERBOSE|DOCMD_NOWAIT|DOCMD_REPEAT);
+ retval = OK;
+
+ #ifdef FEAT_PROFILE
+***************
+*** 3171,3176 ****
+--- 3173,3179 ----
+ #endif
+ fclose(cookie.fp);
+ vim_free(cookie.nextline);
++ vim_free(firstline);
+ #ifdef FEAT_MBYTE
+ convert_setup(&cookie.conv, NULL, NULL);
+ #endif
+*** ../vim-7.2.099/src/version.c Wed Feb 4 17:27:50 2009
+--- src/version.c Wed Feb 4 17:48:47 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 100,
+ /**/
+
+--
+Well, you come from nothing, you go back to nothing... What have you
+lost? Nothing!
+ -- Monty Python: The life of Brian
+
+ /// 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 ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 7.2.101 (extra)
+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.101 (extra)
+Problem: MSVC version not recognized.
+Solution: Add the version number to the list. (Zhong Zhang)
+Files: src/Make_mvc.mak
+
+
+*** ../vim-7.2.100/src/Make_mvc.mak Thu Jul 24 20:49:58 2008
+--- src/Make_mvc.mak Wed Feb 4 18:32:47 2009
+***************
+*** 354,359 ****
+--- 354,362 ----
+ !if "$(_NMAKE_VER)" == "9.00.21022.08"
+ MSVCVER = 9.0
+ !endif
++ !if "$(_NMAKE_VER)" == "9.00.30729.01"
++ MSVCVER = 9.0
++ !endif
+ !endif
+
+ # Abort bulding VIM if version of VC is unrecognised.
+*** ../vim-7.2.100/src/version.c Wed Feb 4 17:49:46 2009
+--- src/version.c Wed Feb 4 18:34:12 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 101,
+ /**/
+
+--
+Light travels faster than sound. This is why some people
+appear bright until you hear them speak
+
+ /// 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 ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 7.2.102
+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.102 (after 7.2.100)
+Problem: When 'encoding' is "utf-8" a BOM at the start of a Vim script is
+ not removed. (Tony Mechelynck)
+Solution: When no conversion is taking place make a copy of the line without
+ the BOM.
+Files: src/ex_cmds2.c
+
+
+*** ../vim-7.2.101/src/ex_cmds2.c Wed Feb 4 17:49:46 2009
+--- src/ex_cmds2.c Thu Feb 5 20:41:56 2009
+***************
+*** 3013,3018 ****
+--- 3013,3020 ----
+ /* Found BOM; setup conversion, skip over BOM and recode the line. */
+ convert_setup(&cookie.conv, (char_u *)"utf-8", p_enc);
+ p = string_convert(&cookie.conv, firstline + 3, NULL);
++ if (p == NULL)
++ p = vim_strsave(firstline + 3);
+ if (p != NULL)
+ {
+ vim_free(firstline);
+*** ../vim-7.2.101/src/version.c Wed Feb 4 18:34:54 2009
+--- src/version.c Thu Feb 5 20:44:55 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 102,
+ /**/
+
+--
+CVS sux, men don't like commitment
+
+ /// 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 ///