--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 6.2.339
+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 6.2.339
+Problem: Crash when using many different highlight groups and a User
+ highlight group. (Juergen Kraemer)
+Solution: Do not use the sg_name_u pointer when it is NULL. Also simplify
+ use of the highlight group table.
+Files: src/syntax.c
+
+
+*** ../vim-6.2.338/src/syntax.c Sun Feb 1 20:02:19 2004
+--- src/syntax.c Wed Mar 10 15:53:39 2004
+***************
+*** 7738,7747 ****
+ set_hl_attr(idx)
+ int idx; /* index in array */
+ {
+! attrentry_T at_en;
+
+ /* The "Normal" group doesn't need an attribute number */
+! if (STRCMP(HL_TABLE()[idx].sg_name_u, "NORMAL") == 0)
+ return;
+
+ #ifdef FEAT_GUI
+--- 7738,7748 ----
+ set_hl_attr(idx)
+ int idx; /* index in array */
+ {
+! attrentry_T at_en;
+! struct hl_group *sgp = HL_TABLE() + idx;
+
+ /* The "Normal" group doesn't need an attribute number */
+! if (sgp->sg_name_u != NULL && STRCMP(sgp->sg_name_u, "NORMAL") == 0)
+ return;
+
+ #ifdef FEAT_GUI
+***************
+*** 7749,7803 ****
+ * For the GUI mode: If there are other than "normal" highlighting
+ * attributes, need to allocate an attr number.
+ */
+! if (HL_TABLE()[idx].sg_gui_fg == INVALCOLOR
+! && HL_TABLE()[idx].sg_gui_bg == INVALCOLOR
+! && HL_TABLE()[idx].sg_font == NOFONT
+ # ifdef FEAT_XFONTSET
+! && HL_TABLE()[idx].sg_fontset == NOFONTSET
+ # endif
+ )
+ {
+! HL_TABLE()[idx].sg_gui_attr = HL_TABLE()[idx].sg_gui;
+ }
+ else
+ {
+! at_en.ae_attr = HL_TABLE()[idx].sg_gui;
+! at_en.ae_u.gui.fg_color = HL_TABLE()[idx].sg_gui_fg;
+! at_en.ae_u.gui.bg_color = HL_TABLE()[idx].sg_gui_bg;
+! at_en.ae_u.gui.font = HL_TABLE()[idx].sg_font;
+ # ifdef FEAT_XFONTSET
+! at_en.ae_u.gui.fontset = HL_TABLE()[idx].sg_fontset;
+ # endif
+! HL_TABLE()[idx].sg_gui_attr = get_attr_entry(&gui_attr_table, &at_en);
+ }
+ #endif
+ /*
+ * For the term mode: If there are other than "normal" highlighting
+ * attributes, need to allocate an attr number.
+ */
+! if (HL_TABLE()[idx].sg_start == NULL && HL_TABLE()[idx].sg_stop == NULL)
+! HL_TABLE()[idx].sg_term_attr = HL_TABLE()[idx].sg_term;
+ else
+ {
+! at_en.ae_attr = HL_TABLE()[idx].sg_term;
+! at_en.ae_u.term.start = HL_TABLE()[idx].sg_start;
+! at_en.ae_u.term.stop = HL_TABLE()[idx].sg_stop;
+! HL_TABLE()[idx].sg_term_attr = get_attr_entry(&term_attr_table, &at_en);
+ }
+
+ /*
+ * For the color term mode: If there are other than "normal"
+ * highlighting attributes, need to allocate an attr number.
+ */
+! if (HL_TABLE()[idx].sg_cterm_fg == 0 && HL_TABLE()[idx].sg_cterm_bg == 0)
+! HL_TABLE()[idx].sg_cterm_attr = HL_TABLE()[idx].sg_cterm;
+ else
+ {
+! at_en.ae_attr = HL_TABLE()[idx].sg_cterm;
+! at_en.ae_u.cterm.fg_color = HL_TABLE()[idx].sg_cterm_fg;
+! at_en.ae_u.cterm.bg_color = HL_TABLE()[idx].sg_cterm_bg;
+! HL_TABLE()[idx].sg_cterm_attr =
+! get_attr_entry(&cterm_attr_table, &at_en);
+ }
+ }
+
+--- 7750,7803 ----
+ * For the GUI mode: If there are other than "normal" highlighting
+ * attributes, need to allocate an attr number.
+ */
+! if (sgp->sg_gui_fg == INVALCOLOR
+! && sgp->sg_gui_bg == INVALCOLOR
+! && sgp->sg_font == NOFONT
+ # ifdef FEAT_XFONTSET
+! && sgp->sg_fontset == NOFONTSET
+ # endif
+ )
+ {
+! sgp->sg_gui_attr = sgp->sg_gui;
+ }
+ else
+ {
+! at_en.ae_attr = sgp->sg_gui;
+! at_en.ae_u.gui.fg_color = sgp->sg_gui_fg;
+! at_en.ae_u.gui.bg_color = sgp->sg_gui_bg;
+! at_en.ae_u.gui.font = sgp->sg_font;
+ # ifdef FEAT_XFONTSET
+! at_en.ae_u.gui.fontset = sgp->sg_fontset;
+ # endif
+! sgp->sg_gui_attr = get_attr_entry(&gui_attr_table, &at_en);
+ }
+ #endif
+ /*
+ * For the term mode: If there are other than "normal" highlighting
+ * attributes, need to allocate an attr number.
+ */
+! if (sgp->sg_start == NULL && sgp->sg_stop == NULL)
+! sgp->sg_term_attr = sgp->sg_term;
+ else
+ {
+! at_en.ae_attr = sgp->sg_term;
+! at_en.ae_u.term.start = sgp->sg_start;
+! at_en.ae_u.term.stop = sgp->sg_stop;
+! sgp->sg_term_attr = get_attr_entry(&term_attr_table, &at_en);
+ }
+
+ /*
+ * For the color term mode: If there are other than "normal"
+ * highlighting attributes, need to allocate an attr number.
+ */
+! if (sgp->sg_cterm_fg == 0 && sgp->sg_cterm_bg == 0)
+! sgp->sg_cterm_attr = sgp->sg_cterm;
+ else
+ {
+! at_en.ae_attr = sgp->sg_cterm;
+! at_en.ae_u.cterm.fg_color = sgp->sg_cterm_fg;
+! at_en.ae_u.cterm.bg_color = sgp->sg_cterm_bg;
+! sgp->sg_cterm_attr = get_attr_entry(&cterm_attr_table, &at_en);
+ }
+ }
+
+*** ../vim-6.2.338/src/version.c Tue Mar 9 19:49:08 2004
+--- src/version.c Wed Mar 10 16:21:38 2004
+***************
+*** 639,640 ****
+--- 639,642 ----
+ { /* Add new patch number below this line */
++ /**/
++ 339,
+ /**/
+
+--
+Engineers are always delighted to share wisdom, even in areas in which they
+have no experience whatsoever. Their logic provides them with inherent
+insight into any field of expertise. This can be a problem when dealing with
+the illogical people who believe that knowledge can only be derived through
+experience.
+ (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// Sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ Project leader for A-A-P -- http://www.A-A-P.org ///
+ \\\ Buy at Amazon and help AIDS victims -- http://ICCF.nl/click1.html ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 6.2.340
+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 6.2.340
+Problem: ":reg" doesn't show the actual contents of the clipboard if it was
+ filled outside of Vim. (Stuart MacDonald)
+Solution: Obtain the clipboard contents before displaying it.
+Files: src/ops.c
+
+
+*** ../vim-6.2.339/src/ops.c Tue Mar 9 19:49:08 2004
+--- src/ops.c Thu Mar 11 17:40:10 2004
+***************
+*** 3649,3655 ****
+ long j;
+ char_u *p;
+ struct yankreg *yb;
+! char_u name;
+ int attr;
+ char_u *arg = eap->arg;
+
+--- 3649,3655 ----
+ long j;
+ char_u *p;
+ struct yankreg *yb;
+! int name;
+ int attr;
+ char_u *arg = eap->arg;
+
+***************
+*** 3661,3666 ****
+--- 3661,3678 ----
+ MSG_PUTS_TITLE(_("\n--- Registers ---"));
+ for (i = -1; i < NUM_REGISTERS && !got_int; ++i)
+ {
++ name = get_register_name(i);
++ if (arg != NULL && vim_strchr(arg, name) == NULL)
++ continue; /* did not ask for this register */
++
++ #ifdef FEAT_CLIPBOARD
++ /* Adjust register name for "unnamed" in 'clipboard'.
++ * When it's a clipboard register, fill it with the current contents
++ * of the clipboard. */
++ adjust_clip_reg(&name);
++ (void)may_get_selection(name);
++ #endif
++
+ if (i == -1)
+ {
+ if (y_previous != NULL)
+***************
+*** 3670,3678 ****
+ }
+ else
+ yb = &(y_regs[i]);
+! name = get_register_name(i);
+! if (yb->y_array != NULL
+! && (arg == NULL || vim_strchr(arg, name) != NULL))
+ {
+ msg_putchar('\n');
+ msg_putchar('"');
+--- 3682,3688 ----
+ }
+ else
+ yb = &(y_regs[i]);
+! if (yb->y_array != NULL)
+ {
+ msg_putchar('\n');
+ msg_putchar('"');
+*** ../vim-6.2.339/src/version.c Wed Mar 10 16:22:45 2004
+--- src/version.c Thu Mar 11 17:47:28 2004
+***************
+*** 639,640 ****
+--- 639,642 ----
+ { /* Add new patch number below this line */
++ /**/
++ 340,
+ /**/
+
+--
+login: yes
+password: I don't know, please tell me
+password is incorrect
+login: yes
+password: incorrect
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// Sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ Project leader for A-A-P -- http://www.A-A-P.org ///
+ \\\ Buy at Amazon and help AIDS victims -- http://ICCF.nl/click1.html ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 6.2.341 (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 6.2.341 (extra)
+Problem: Win32: When the path to diff.exe contains a space and using the
+ vimrc generated by the install program, diff mode does not work.
+Solution: Put the first double quote just before the space instead of before
+ the path.
+Files: src/dosinst.c
+
+
+*** ../vim-6.2.340/src/dosinst.c Fri Jul 25 22:43:59 2003
+--- src/dosinst.c Wed Mar 10 12:42:30 2004
+***************
+*** 1122,1127 ****
+--- 1122,1128 ----
+ {
+ FILE *fd, *tfd;
+ char *fname;
++ char *p;
+
+ /* If an old vimrc file exists, overwrite it.
+ * Otherwise create a new one. */
+***************
+*** 1176,1186 ****
+ fprintf(fd, " let opt = ''\n");
+ fprintf(fd, " if &diffopt =~ 'icase' | let opt = opt . '-i ' | endif\n");
+ fprintf(fd, " if &diffopt =~ 'iwhite' | let opt = opt . '-b ' | endif\n");
+! /* Use quotes here if the path includes a space. */
+! if (strchr(installdir, ' ') != NULL)
+! fprintf(fd, " silent execute '!\"%s\\diff\" -a ' . opt . '\"' . v:fname_in . '\" \"' . v:fname_new . '\" > \"' . v:fname_out . '\"'\n", installdir);
+ else
+! fprintf(fd, " silent execute '!%s\\diff -a ' . opt . '\"' . v:fname_in . '\" \"' . v:fname_new . '\" > \"' . v:fname_out . '\"'\n", installdir);
+ fprintf(fd, "endfunction\n");
+ fprintf(fd, "\n");
+ }
+--- 1177,1196 ----
+ fprintf(fd, " let opt = ''\n");
+ fprintf(fd, " if &diffopt =~ 'icase' | let opt = opt . '-i ' | endif\n");
+ fprintf(fd, " if &diffopt =~ 'iwhite' | let opt = opt . '-b ' | endif\n");
+! fprintf(fd, " silent execute '!");
+! p = strchr(installdir, ' ');
+! if (p != NULL)
+! {
+! /* The path has a space. Put a double quote just before the space
+! * and at the end of the command. Putting quotes around the whole
+! * thing doesn't work. */
+! *p = NUL;
+! fprintf(fd, "%s\" %s\\diff\"", installdir, p + 1);
+! *p = ' ';
+! }
+ else
+! fprintf(fd, "%s\\diff", installdir);
+! fprintf(fd, " -a ' . opt . '\"' . v:fname_in . '\" \"' . v:fname_new . '\" > \"' . v:fname_out . '\"'\n");
+ fprintf(fd, "endfunction\n");
+ fprintf(fd, "\n");
+ }
+*** ../vim-6.2.340/src/version.c Thu Mar 11 17:48:22 2004
+--- src/version.c Thu Mar 11 20:45:16 2004
+***************
+*** 639,640 ****
+--- 639,642 ----
+ { /* Add new patch number below this line */
++ /**/
++ 341,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+4. Your eyeglasses have a web site burned in on them.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// Sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ Project leader for A-A-P -- http://www.A-A-P.org ///
+ \\\ Buy at Amazon and help AIDS victims -- http://ICCF.nl/click1.html ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 6.2.342 (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 6.2.342 (extra)
+Problem: Win32: macros are not always used as expected.
+Solution: Define WINVER to 0x0400 instead of 0x400. (Alejandro
+ Lopez-Valencia)
+Files: src/Make_bc5.mak, src/Make_cyg.mak, src/Make_mvc.mak
+
+
+*** ../vim-6.2.341/src/Make_bc5.mak Mon Mar 1 21:40:02 2004
+--- src/Make_bc5.mak Tue Mar 9 16:47:21 2004
+***************
+*** 72,78 ****
+ # POSTSCRIPT no or yes: set to yes for PostScript printing
+ # FEATURES TINY, SMALL, NORMAL, BIG or HUGE
+ # (BIG for WIN32, SMALL for DOS16)
+! # WINVER 0x400 or 0x500: minimum Win32 version to support (0x400)
+ # CSCOPE no or yes: include support for Cscope interface (yes)
+ # NETBEANS no or yes: include support for Netbeans interface (yes if GUI
+ # is yes)
+--- 72,78 ----
+ # POSTSCRIPT no or yes: set to yes for PostScript printing
+ # FEATURES TINY, SMALL, NORMAL, BIG or HUGE
+ # (BIG for WIN32, SMALL for DOS16)
+! # WINVER 0x0400 or 0x0500: minimum Win32 version to support (0x0400)
+ # CSCOPE no or yes: include support for Cscope interface (yes)
+ # NETBEANS no or yes: include support for Netbeans interface (yes if GUI
+ # is yes)
+***************
+*** 230,236 ****
+
+ ### Set the default $(WINVER) to make it work with Bcc 5.5.
+ !ifndef WINVER
+! WINVER = 0x400
+ !endif
+
+ #
+--- 230,236 ----
+
+ ### Set the default $(WINVER) to make it work with Bcc 5.5.
+ !ifndef WINVER
+! WINVER = 0x0400
+ !endif
+
+ #
+*** ../vim-6.2.341/src/Make_cyg.mak Tue Feb 3 16:20:37 2004
+--- src/Make_cyg.mak Tue Mar 9 15:41:56 2004
+***************
+*** 1,6 ****
+ #
+ # Makefile for VIM on Win32, using Cygnus gcc
+! # Last updated by Dan Sharp. Last Change: 2004 Feb 03
+ #
+ # This compiles Vim as a Windows application. If you want Vim to run as a
+ # Cygwin application use the Makefile (just like on Unix).
+--- 1,6 ----
+ #
+ # Makefile for VIM on Win32, using Cygnus gcc
+! # Last updated by Dan Sharp. Last Change: 2004 Mar 09
+ #
+ # This compiles Vim as a Windows application. If you want Vim to run as a
+ # Cygwin application use the Makefile (just like on Unix).
+***************
+*** 31,37 ****
+ # For USEDLL=yes the cygwin1.dll is required to run Vim.
+ # POSTSCRIPT no or yes: set to yes for PostScript printing (no)
+ # FEATURES TINY, SMALL, NORMAL, BIG or HUGE (BIG)
+! # WINVER Lowest Win32 version to support. (0x400)
+ # CSCOPE no or yes: to include cscope interface support (yes)
+ # OPTIMIZE SPACE, SPEED, or MAXSPEED: set optimization level (MAXSPEED)
+ # NETBEANS no or yes: to include netbeans interface support (yes when GUI
+--- 31,37 ----
+ # For USEDLL=yes the cygwin1.dll is required to run Vim.
+ # POSTSCRIPT no or yes: set to yes for PostScript printing (no)
+ # FEATURES TINY, SMALL, NORMAL, BIG or HUGE (BIG)
+! # WINVER Lowest Win32 version to support. (0x0400)
+ # CSCOPE no or yes: to include cscope interface support (yes)
+ # OPTIMIZE SPACE, SPEED, or MAXSPEED: set optimization level (MAXSPEED)
+ # NETBEANS no or yes: to include netbeans interface support (yes when GUI
+***************
+*** 71,77 ****
+ endif
+
+ ifndef WINVER
+! WINVER = 0x400
+ endif
+
+ ifndef CSCOPE
+--- 71,77 ----
+ endif
+
+ ifndef WINVER
+! WINVER = 0x0400
+ endif
+
+ ifndef CSCOPE
+*** ../vim-6.2.341/src/Make_mvc.mak Tue Feb 3 16:14:03 2004
+--- src/Make_mvc.mak Tue Mar 9 16:47:42 2004
+***************
+*** 53,59 ****
+ # See http://sourceforge.net/projects/gettext/
+ # PostScript printing: POSTSCRIPT=yes (default is no)
+ # Feature Set: FEATURES=[TINY, SMALL, NORMAL, BIG, or HUGE] (default is BIG)
+! # Version Support: WINVER=[0x400, 0x500] (default is 0x400)
+ # Processor Version: CPUNR=[i386, i486, i586, i686] (default is i386)
+ # Optimization: OPTIMIZE=[SPACE, SPEED, MAXSPEED] (default is MAXSPEED)
+ # Netbeans Support: NETBEANS=[yes or no] (default is yes if GUI is yes)
+--- 53,59 ----
+ # See http://sourceforge.net/projects/gettext/
+ # PostScript printing: POSTSCRIPT=yes (default is no)
+ # Feature Set: FEATURES=[TINY, SMALL, NORMAL, BIG, or HUGE] (default is BIG)
+! # Version Support: WINVER=[0x0400, 0x0500] (default is 0x0400)
+ # Processor Version: CPUNR=[i386, i486, i586, i686] (default is i386)
+ # Optimization: OPTIMIZE=[SPACE, SPEED, MAXSPEED] (default is MAXSPEED)
+ # Netbeans Support: NETBEANS=[yes or no] (default is yes if GUI is yes)
+***************
+*** 230,236 ****
+
+ ### Set the default $(WINVER) to make it work with VC++7.0 (VS.NET)
+ !ifndef WINVER
+! WINVER = 0x400
+ !endif
+
+ # If you have a fixed directory for $VIM or $VIMRUNTIME, other than the normal
+--- 230,236 ----
+
+ ### Set the default $(WINVER) to make it work with VC++7.0 (VS.NET)
+ !ifndef WINVER
+! WINVER = 0x0400
+ !endif
+
+ # If you have a fixed directory for $VIM or $VIMRUNTIME, other than the normal
+*** ../vim-6.2.341/src/version.c Thu Mar 11 20:46:51 2004
+--- src/version.c Thu Mar 11 20:48:04 2004
+***************
+*** 639,640 ****
+--- 639,642 ----
+ { /* Add new patch number below this line */
++ /**/
++ 342,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+5. You find yourself brainstorming for new subjects to search.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// Sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ Project leader for A-A-P -- http://www.A-A-P.org ///
+ \\\ Buy at Amazon and help AIDS victims -- http://ICCF.nl/click1.html ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 6.2.343
+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 6.2.343
+Problem: Title doesn't work with some window managers. X11: Setting the
+ text property for the window title is hard coded.
+Solution: Use STRING format when possible. Use the UTF-8 function when
+ it's available and 'encoding' is utf-8. Use
+ XStringListToTextProperty(). Do the same for the icon name.
+ (David Harrison)
+Files: src/os_unix.c
+
+
+*** ../vim-6.2.342/src/os_unix.c Fri Mar 5 15:21:09 2004
+--- src/os_unix.c Thu Mar 11 20:54:54 2004
+***************
+*** 1607,1612 ****
+--- 1607,1619 ----
+ return retval;
+ }
+
++ /* Are Xutf8 functions available? Avoid error from old compilers. */
++ #if defined(X_HAVE_UTF8_STRING) && defined(FEAT_MBYTE)
++ # if X_HAVE_UTF8_STRING
++ # define USE_UTF8_STRING
++ # endif
++ #endif
++
+ /*
+ * Set x11 Window Title
+ *
+***************
+*** 1616,1646 ****
+ set_x11_title(title)
+ char_u *title;
+ {
+ #if XtSpecificationRelease >= 4
+- XTextProperty text_prop;
+ # ifdef FEAT_XFONTSET
+! Status status;
+
+! status = XmbTextListToTextProperty(x11_display, (char **)&title, 1,
+! XCompoundTextStyle, &text_prop);
+! /* Status is a positive number when some chars could not be converted.
+! * Accept that, we don't know what to do otherwise. */
+! if (status < Success)
+! # endif
+! {
+! text_prop.value = title;
+! text_prop.nitems = STRLEN(title);
+! text_prop.encoding = XA_STRING;
+! text_prop.format = 8;
+! }
+! XSetWMName(x11_display, x11_window, &text_prop);
+! # ifdef FEAT_XFONTSET
+! if (status >= Success)
+! XFree((void *)text_prop.value);
+ # endif
+ #else
+! XStoreName(x11_display, x11_window, (char *)title);
+ #endif
+ XFlush(x11_display);
+ }
+
+--- 1623,1655 ----
+ set_x11_title(title)
+ char_u *title;
+ {
++ /* XmbSetWMProperties() and Xutf8SetWMProperties() should use a STRING
++ * when possible, COMPOUND_TEXT otherwise. COMPOUND_TEXT isn't
++ * supported everywhere and STRING doesn't work for multi-byte titles.
++ */
++ #ifdef USE_UTF8_STRING
++ if (enc_utf8)
++ Xutf8SetWMProperties(x11_display, x11_window, (const char *)title,
++ NULL, NULL, 0, NULL, NULL, NULL);
++ else
++ #endif
++ {
+ #if XtSpecificationRelease >= 4
+ # ifdef FEAT_XFONTSET
+! XmbSetWMProperties(x11_display, x11_window, (const char *)title,
+! NULL, NULL, 0, NULL, NULL, NULL);
+! # else
+! XTextProperty text_prop;
+
+! /* directly from example 3-18 "basicwin" of Xlib Programming Manual */
+! (void)XStringListToTextProperty((char **)&title, 1, &text_prop);
+! XSetWMProperties(x11_display, x11_window, &text_prop,
+! NULL, NULL, 0, NULL, NULL, NULL);
+ # endif
+ #else
+! XStoreName(x11_display, x11_window, (char *)title);
+ #endif
++ }
+ XFlush(x11_display);
+ }
+
+***************
+*** 1653,1683 ****
+ set_x11_icon(icon)
+ char_u *icon;
+ {
+ #if XtSpecificationRelease >= 4
+- XTextProperty text_prop;
+ # ifdef FEAT_XFONTSET
+! Status status;
+
+! status = XmbTextListToTextProperty(x11_display, (char **)&icon, 1,
+! XCompoundTextStyle, &text_prop);
+! /* Status is a positive number when some chars could not be converted.
+! * Accept that, we don't know what to do otherwise. */
+! if (status < Success)
+! # endif
+! {
+! text_prop.value = icon;
+! text_prop.nitems = STRLEN(icon);
+! text_prop.encoding = XA_STRING;
+! text_prop.format = 8;
+! }
+! XSetWMIconName(x11_display, x11_window, &text_prop);
+! # ifdef FEAT_XFONTSET
+! if (status >= Success)
+! XFree((void *)text_prop.value);
+ # endif
+ #else
+! XSetIconName(x11_display, x11_window, (char *)icon);
+ #endif
+ XFlush(x11_display);
+ }
+
+--- 1662,1690 ----
+ set_x11_icon(icon)
+ char_u *icon;
+ {
++ /* See above for comments about using X*SetWMProperties(). */
++ #ifdef USE_UTF8_STRING
++ if (enc_utf8)
++ Xutf8SetWMProperties(x11_display, x11_window, NULL, (const char *)icon,
++ NULL, 0, NULL, NULL, NULL);
++ else
++ #endif
++ {
+ #if XtSpecificationRelease >= 4
+ # ifdef FEAT_XFONTSET
+! XmbSetWMProperties(x11_display, x11_window, NULL, (const char *)icon,
+! NULL, 0, NULL, NULL, NULL);
+! # else
+! XTextProperty text_prop;
+
+! (void)XStringListToTextProperty((char **)&icon, 1, &text_prop);
+! XSetWMProperties(x11_display, x11_window, NULL, &text_prop,
+! NULL, 0, NULL, NULL, NULL);
+ # endif
+ #else
+! XSetIconName(x11_display, x11_window, (char *)icon);
+ #endif
++ }
+ XFlush(x11_display);
+ }
+
+*** ../vim-6.2.342/src/version.c Thu Mar 11 20:49:02 2004
+--- src/version.c Thu Mar 11 20:50:31 2004
+***************
+*** 639,640 ****
+--- 639,642 ----
+ { /* Add new patch number below this line */
++ /**/
++ 343,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+6. You refuse to go to a vacation spot with no electricity and no phone lines.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// Sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ Project leader for A-A-P -- http://www.A-A-P.org ///
+ \\\ Buy at Amazon and help AIDS victims -- http://ICCF.nl/click1.html ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 6.2.344 (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 6.2.344 (extra, after 6.2.337)
+Problem: Cannot build gvimext.dll with MingW on Linux.
+Solution: Add support for cross compiling. (Ronald Hoellwarth)
+Files: src/GvimExt/Make_ming.mak
+
+
+*** ../vim-6.2.343/src/GvimExt/Make_ming.mak Tue Mar 9 19:41:00 2004
+--- src/GvimExt/Make_ming.mak Wed Mar 10 21:26:36 2004
+***************
+*** 7,19 ****
+ # already loaded in memory. The binary image contains as well information
+ # for automatic pseudo-rebasing, if needed by the system. ALV 2004-02-29
+
+! CXX := g++
+ CXXFLAGS := -O2 -mno-cygwin
+! LIBS := -luuid
+ WINDRES := windres.exe
+ RES := gvimext.res
+ DEFFILE = gvimext_ming.def
+! OBJ := gvimext.o
+
+ DLL := gvimext.dll
+
+--- 7,41 ----
+ # already loaded in memory. The binary image contains as well information
+ # for automatic pseudo-rebasing, if needed by the system. ALV 2004-02-29
+
+! # If cross-compiling set this to yes, else set it to no
+! CROSS = no
+! #CROSS = yes
+! # For the old MinGW 2.95 (the one you get e.g. with debian woody)
+! # set the following variable to yes and check if the executables are
+! # really named that way.
+! # If you have a newer MinGW or you are using cygwin set it to no and
+! # check also the executables
+! MINGWOLD = no
+!
+! ifeq ($(CROSS),yes)
+! ifeq ($(MINGWOLD),yes)
+! CXX = i586-mingw32msvc-g++
+! CXXFLAGS := -O2 -mno-cygwin -fvtable-thunks
+! WINDRES = i586-mingw32msvc-windres
+! else
+! CXX = i386-mingw32msvc-g++
+ CXXFLAGS := -O2 -mno-cygwin
+! WINDRES = i386-mingw32msvc-windres
+! endif
+! else
+! CXX := g++.exe
+ WINDRES := windres.exe
++ CXXFLAGS := -O2 -mno-cygwin
++ endif
++ LIBS := -luuid
+ RES := gvimext.res
+ DEFFILE = gvimext_ming.def
+! OBJ := gvimext.o
+
+ DLL := gvimext.dll
+
+***************
+*** 22,40 ****
+ all: all-before $(DLL) all-after
+
+ $(DLL): $(OBJ) $(RES) $(DEFFILE)
+! $(CXX) -shared $(CXXFLAGS) -s -o $@ \
+ -Wl,--enable-auto-image-base \
+! -Wl,--enable-auto-import \
+! -Wl,--whole-archive \
+! $^ \
+! -Wl,--no-whole-archive \
+ $(LIBS)
+
+ gvimext.o: gvimext.cpp
+! $(CXX) $(CXXFLAGS) -DFEAT_GETTEXT -c $^ -o $@
+
+ $(RES): gvimext_ming.rc
+! $(WINDRES) --input-format=rc --output-format=coff -DMING $^ -o $@
+
+ clean: clean-custom
+ $(RM) $(OBJ) $(RES) $(DLL)
+--- 44,62 ----
+ all: all-before $(DLL) all-after
+
+ $(DLL): $(OBJ) $(RES) $(DEFFILE)
+! $(CXX) -shared $(CXXFLAGS) -s -o $@ \
+ -Wl,--enable-auto-image-base \
+! -Wl,--enable-auto-import \
+! -Wl,--whole-archive \
+! $^ \
+! -Wl,--no-whole-archive \
+ $(LIBS)
+
+ gvimext.o: gvimext.cpp
+! $(CXX) $(CXXFLAGS) -DFEAT_GETTEXT -c $? -o $@
+
+ $(RES): gvimext_ming.rc
+! $(WINDRES) --input-format=rc --output-format=coff -DMING $? -o $@
+
+ clean: clean-custom
+ $(RM) $(OBJ) $(RES) $(DLL)
+*** ../vim-6.2.343/src/version.c Thu Mar 11 20:55:09 2004
+--- src/version.c Thu Mar 11 20:58:09 2004
+***************
+*** 639,640 ****
+--- 639,642 ----
+ { /* Add new patch number below this line */
++ /**/
++ 344,
+ /**/
+
+--
+The goal of science is to build better mousetraps.
+The goal of nature is to build better mice.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// Sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ Project leader for A-A-P -- http://www.A-A-P.org ///
+ \\\ Buy at Amazon and help AIDS victims -- http://ICCF.nl/click1.html ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 6.2.345 (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 6.2.345 (extra)
+Problem: Win32: Copy/paste between two Vims fails if 'encoding' is not set
+ properly or there are illegal bytes.
+Solution: Use a raw byte format. Always set it when copying. When pasting
+ use the raw format if 'encoding' is the same.
+Files: src/os_mswin.c, src/os_win16.c, src/os_win32.c, src/vim.h
+
+
+*** ../vim-6.2.344/src/os_mswin.c Tue Mar 9 14:24:17 2004
+--- src/os_mswin.c Wed Mar 10 21:11:19 2004
+***************
+*** 929,934 ****
+--- 929,936 ----
+ int type; /* MCHAR, MBLOCK or MLINE */
+ int txtlen; /* length of CF_TEXT in bytes */
+ int ucslen; /* length of CF_UNICODETEXT in words */
++ int rawlen; /* length of clip_star.format_raw, including encoding,
++ excluding terminating NUL */
+ } VimClipType_t;
+
+ /*
+***************
+*** 1123,1137 ****
+ void
+ clip_mch_request_selection(VimClipboard *cbd)
+ {
+! VimClipType_t metadata = { -1, -1, -1 };
+ HGLOBAL hMem = NULL;
+ char_u *str = NULL;
+ #if defined(FEAT_MBYTE) && defined(WIN3264)
+ char_u *to_free = NULL;
+ #endif
+ char_u *hMemStr = NULL;
+ int str_size = 0;
+ int maxlen;
+
+ /*
+ * Don't pass GetActiveWindow() as an argument to OpenClipboard() because
+--- 1125,1143 ----
+ void
+ clip_mch_request_selection(VimClipboard *cbd)
+ {
+! VimClipType_t metadata = { -1, -1, -1, -1 };
+ HGLOBAL hMem = NULL;
+ char_u *str = NULL;
+ #if defined(FEAT_MBYTE) && defined(WIN3264)
+ char_u *to_free = NULL;
+ #endif
++ #ifdef FEAT_MBYTE
++ HGLOBAL rawh = NULL;
++ #endif
+ char_u *hMemStr = NULL;
+ int str_size = 0;
+ int maxlen;
++ size_t n;
+
+ /*
+ * Don't pass GetActiveWindow() as an argument to OpenClipboard() because
+***************
+*** 1151,1162 ****
+ if ((meta_h = GetClipboardData(cbd->format)) != NULL
+ && (meta_p = (VimClipType_t *)GlobalLock(meta_h)) != NULL)
+ {
+! if (GlobalSize(meta_h) >= sizeof(VimClipType_t))
+! memcpy(&metadata, meta_p, sizeof(metadata));
+ GlobalUnlock(meta_h);
+ }
+ }
+
+ #if defined(FEAT_MBYTE) && defined(WIN3264)
+ /* Try to get the clipboard in Unicode if it's not an empty string. */
+ if (IsClipboardFormatAvailable(CF_UNICODETEXT) && metadata.ucslen != 0)
+--- 1157,1201 ----
+ if ((meta_h = GetClipboardData(cbd->format)) != NULL
+ && (meta_p = (VimClipType_t *)GlobalLock(meta_h)) != NULL)
+ {
+! /* The size of "VimClipType_t" changed, "rawlen" was added later.
+! * Only copy what is available for backwards compatibility. */
+! n = sizeof(VimClipType_t);
+! if (GlobalSize(meta_h) < n)
+! n = GlobalSize(meta_h);
+! memcpy(&metadata, meta_p, n);
+ GlobalUnlock(meta_h);
+ }
+ }
+
++ #ifdef FEAT_MBYTE
++ /* Check for Vim's raw clipboard format first. This is used without
++ * conversion, but only if 'encoding' matches. */
++ if (IsClipboardFormatAvailable(cbd->format_raw)
++ && metadata.rawlen > (int)STRLEN(p_enc))
++ {
++ /* We have raw data on the clipboard; try to get it. */
++ if ((rawh = GetClipboardData(cbd->format_raw)) != NULL)
++ {
++ char_u *rawp;
++
++ rawp = (char_u *)GlobalLock(rawh);
++ if (rawp != NULL && STRCMP(p_enc, rawp) == 0)
++ {
++ n = STRLEN(p_enc) + 1;
++ str = rawp + n;
++ str_size = metadata.rawlen - n;
++ }
++ else
++ {
++ GlobalUnlock(rawh);
++ rawh = NULL;
++ }
++ }
++ }
++ if (str == NULL)
++ {
++ #endif
++
+ #if defined(FEAT_MBYTE) && defined(WIN3264)
+ /* Try to get the clipboard in Unicode if it's not an empty string. */
+ if (IsClipboardFormatAvailable(CF_UNICODETEXT) && metadata.ucslen != 0)
+***************
+*** 1231,1236 ****
+--- 1270,1278 ----
+ #endif
+ }
+ }
++ #ifdef FEAT_MBYTE
++ }
++ #endif
+
+ if (str != NULL && *str != NUL)
+ {
+***************
+*** 1250,1257 ****
+ }
+
+ /* unlock the global object */
+! if (hMemStr != NULL)
+ GlobalUnlock(hMem);
+ CloseClipboard();
+ #if defined(FEAT_MBYTE) && defined(WIN3264)
+ vim_free(to_free);
+--- 1292,1303 ----
+ }
+
+ /* unlock the global object */
+! if (hMem != NULL)
+ GlobalUnlock(hMem);
++ #ifdef FEAT_MBYTE
++ if (rawh != NULL)
++ GlobalUnlock(rawh);
++ #endif
+ CloseClipboard();
+ #if defined(FEAT_MBYTE) && defined(WIN3264)
+ vim_free(to_free);
+***************
+*** 1267,1272 ****
+--- 1313,1319 ----
+ char_u *str = NULL;
+ VimClipType_t metadata;
+ long_u txtlen;
++ HGLOBAL hMemRaw = NULL;
+ HGLOBAL hMem = NULL;
+ HGLOBAL hMemVim = NULL;
+ # if defined(FEAT_MBYTE) && defined(WIN3264)
+***************
+*** 1284,1289 ****
+--- 1331,1359 ----
+ return;
+ metadata.txtlen = (int)txtlen;
+ metadata.ucslen = 0;
++ metadata.rawlen = 0;
++
++ #ifdef FEAT_MBYTE
++ /* Always set the raw bytes: 'encoding', NUL and the text. This is used
++ * when copy/paste from/to Vim with the same 'encoding', so that illegal
++ * bytes can also be copied and no conversion is needed. */
++ {
++ LPSTR lpszMemRaw;
++
++ metadata.rawlen = txtlen + STRLEN(p_enc) + 1;
++ hMemRaw = (LPSTR)GlobalAlloc(GMEM_MOVEABLE | GMEM_DDESHARE,
++ metadata.rawlen + 1);
++ lpszMemRaw = (LPSTR)GlobalLock(hMemRaw);
++ if (lpszMemRaw != NULL)
++ {
++ STRCPY(lpszMemRaw, p_enc);
++ memcpy(lpszMemRaw + STRLEN(p_enc) + 1, str, txtlen + 1);
++ GlobalUnlock(hMemRaw);
++ }
++ else
++ metadata.rawlen = 0;
++ }
++ #endif
+
+ # if defined(FEAT_MBYTE) && defined(WIN3264)
+ {
+***************
+*** 1385,1390 ****
+--- 1455,1462 ----
+
+ vim_free(str);
+ /* Free any allocations we didn't give to the clipboard: */
++ if (hMemRaw)
++ GlobalFree(hMemRaw);
+ if (hMem)
+ GlobalFree(hMem);
+ # if defined(FEAT_MBYTE) && defined(WIN3264)
+*** ../vim-6.2.344/src/os_win16.c Sat May 24 17:19:47 2003
+--- src/os_win16.c Wed Mar 10 18:32:17 2004
+***************
+*** 179,184 ****
+--- 179,185 ----
+ * character to specify MCHAR, MLINE or MBLOCK.
+ */
+ clip_star.format = RegisterClipboardFormat("VimClipboard2");
++ clip_star.format_raw = RegisterClipboardFormat("VimRawBytes");
+ #endif
+ }
+
+*** ../vim-6.2.344/src/os_win32.c Sun Mar 7 17:03:27 2004
+--- src/os_win32.c Wed Mar 10 18:26:06 2004
+***************
+*** 1540,1545 ****
+--- 1540,1546 ----
+ * character to specify MCHAR, MLINE or MBLOCK.
+ */
+ clip_star.format = RegisterClipboardFormat("VimClipboard2");
++ clip_star.format_raw = RegisterClipboardFormat("VimRawBytes");
+ #endif
+ }
+
+***************
+*** 2038,2043 ****
+--- 2039,2045 ----
+ * character to specify MCHAR, MLINE or MBLOCK.
+ */
+ clip_star.format = RegisterClipboardFormat("VimClipboard2");
++ clip_star.format_raw = RegisterClipboardFormat("VimRawBytes");
+ #endif
+
+ /* This will be NULL on anything but NT 4.0 */
+*** ../vim-6.2.344/src/vim.h Mon Mar 8 12:27:39 2004
+--- src/vim.h Wed Mar 10 18:28:34 2004
+***************
+*** 1520,1525 ****
+--- 1520,1526 ----
+
+ # ifdef MSWIN
+ int_u format; /* Vim's own special clipboard format */
++ int_u format_raw; /* Vim's raw text clipboard format */
+ # endif
+ # ifdef FEAT_GUI_BEOS
+ /* no clipboard at the moment */
+*** ../vim-6.2.344/src/version.c Thu Mar 11 20:59:13 2004
+--- src/version.c Thu Mar 11 21:01:16 2004
+***************
+*** 639,640 ****
+--- 639,642 ----
+ { /* Add new patch number below this line */
++ /**/
++ 345,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+7. You finally do take that vacation, but only after buying a cellular modem
+ and a laptop.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// Sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ Project leader for A-A-P -- http://www.A-A-P.org ///
+ \\\ Buy at Amazon and help AIDS victims -- http://ICCF.nl/click1.html ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 6.2.346
+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 6.2.346
+Problem: Win32 console: After using "chcp" Vim does not detect the
+ different codepage.
+Solution: Use GetConsoleCP() and when it is different from GetACP() set
+ 'termencoding'.
+Files: src/option.c
+
+
+*** ../vim-6.2.345/src/option.c Sun Mar 7 19:33:37 2004
+--- src/option.c Thu Mar 11 17:25:32 2004
+***************
+*** 2803,2808 ****
+--- 2803,2828 ----
+ opt_idx = findoption((char_u *)"encoding");
+ options[opt_idx].def_val[VI_DEFAULT] = p_enc;
+ options[opt_idx].flags |= P_DEF_ALLOCED;
++
++ # if defined(WIN3264) && !defined(FEAT_GUI)
++ /* Win32 console: When GetACP() returns a different value from
++ * GetConsoleCP() set 'termencoding'. */
++ if (GetACP() != GetConsoleCP())
++ {
++ char buf[50];
++
++ sprintf(buf, "cp%ld", (long)GetConsoleCP());
++ p_tenc = vim_strsave((char_u *)buf);
++ if (p_tenc != NULL)
++ {
++ opt_idx = findoption((char_u *)"termencoding");
++ options[opt_idx].def_val[VI_DEFAULT] = p_tenc;
++ options[opt_idx].flags |= P_DEF_ALLOCED;
++ }
++ else
++ p_tenc = empty_option;
++ }
++ # endif
+ }
+ else
+ {
+*** ../vim-6.2.345/src/version.c Thu Mar 11 21:03:40 2004
+--- src/version.c Thu Mar 11 21:07:08 2004
+***************
+*** 639,640 ****
+--- 639,642 ----
+ { /* Add new patch number below this line */
++ /**/
++ 346,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+8. You spend half of the plane trip with your laptop on your lap...and your
+ child in the overhead compartment.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// Sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ Project leader for A-A-P -- http://www.A-A-P.org ///
+ \\\ Buy at Amazon and help AIDS victims -- http://ICCF.nl/click1.html ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 6.2.347 (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 6.2.347 (extra)
+Problem: Win32: XP theme support is missing.
+Solution: Add a manifest and refer to it from the resource file. (Michael
+ Wookey)
+Files: Makefile, src/gvim.exe.mnf, src/vim.rc
+
+
+*** ../vim-6.2.346/Makefile Sun Nov 2 15:37:11 2003
+--- Makefile Fri Mar 12 15:22:57 2004
+***************
+*** 431,436 ****
+--- 433,439 ----
+ src/uninstal.c \
+ src/vim.def \
+ src/vim.rc \
++ src/gvim.exe.mnf \
+ src/vim16.def \
+ src/vim16.rc \
+ src/vimrun.c \
+*** ../vim-6.2.346/src/gvim.exe.mnf Fri Mar 12 15:24:30 2004
+--- src/gvim.exe.mnf Wed Mar 10 17:25:22 2004
+***************
+*** 0 ****
+--- 1,22 ----
++ <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
++ <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
++ <assemblyIdentity
++ processorArchitecture="x86"
++ version="6.2.0.0"
++ type="win32"
++ name="Vim"
++ />
++ <description>Vi Improved - A Text Editor</description>
++ <dependency>
++ <dependentAssembly>
++ <assemblyIdentity
++ type="win32"
++ name="Microsoft.Windows.Common-Controls"
++ version="6.0.0.0"
++ publicKeyToken="6595b64144ccf1df"
++ language="*"
++ processorArchitecture="x86"
++ />
++ </dependentAssembly>
++ </dependency>
++ </assembly>
+*** ../vim-6.2.346/src/vim.rc Wed May 14 20:35:14 2003
+--- src/vim.rc Fri Mar 12 15:22:40 2004
+***************
+*** 46,51 ****
+--- 46,63 ----
+ //
+ IDB_TEAROFF BITMAP DISCARDABLE "tearoff.bmp"
+ IDR_TOOLBAR1 BITMAP DISCARDABLE "tools.bmp"
++
++ //
++ // WinXP theme support
++ //
++ #ifndef CREATEPROCESS_MANIFEST_RESOURCE_ID
++ # define CREATEPROCESS_MANIFEST_RESOURCE_ID 1
++ #endif
++ #ifndef RT_MANIFEST
++ # define RT_MANIFEST 24
++ #endif
++
++ CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "gvim.exe.mnf"
+ #endif // FEAT_GUI_W32
+
+ //
+*** ../vim-6.2.346/src/version.c Thu Mar 11 21:08:44 2004
+--- src/version.c Fri Mar 12 15:23:33 2004
+***************
+*** 639,640 ****
+--- 639,642 ----
+ { /* Add new patch number below this line */
++ /**/
++ 347,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+14. You start introducing yourself as "Jim at I-I-Net dot net dot au"
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// Sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ Project leader for A-A-P -- http://www.A-A-P.org ///
+ \\\ Buy at Amazon and help AIDS victims -- http://ICCF.nl/click1.html ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 6.2.348
+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 6.2.348
+Problem: Win32: "vim c:\dir\(test)" doesn't work, because the 'isfname'
+ default value doesn't contain parenthesis.
+Solution: Temporarily add '(' and ')' to 'isfname' when expanding file name
+ arguments.
+Files: src/main.c
+
+
+*** ../vim-6.2.347/src/main.c Sun Feb 29 14:45:49 2004
+--- src/main.c Fri Mar 12 20:35:03 2004
+***************
+*** 1108,1114 ****
+--- 1108,1121 ----
+ * Expand wildcards in file names.
+ */
+ if (!literal)
++ {
++ /* Temporarily add '(' and ')' to 'isfname'. These are valid
++ * filename characters but are excluded from 'isfname' to make
++ * "gf" work on a file name in parenthesis (e.g.: see vim.h). */
++ do_cmdline_cmd((char_u *)":set isf+=(,)");
+ alist_expand();
++ do_cmdline_cmd((char_u *)":set isf&");
++ }
+ #endif
+ fname = alist_name(&GARGLIST[0]);
+ }
+*** ../vim-6.2.347/src/version.c Fri Mar 12 15:26:18 2004
+--- src/version.c Fri Mar 12 20:41:01 2004
+***************
+*** 639,640 ****
+--- 639,642 ----
+ { /* Add new patch number below this line */
++ /**/
++ 348,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+19. All of your friends have an @ in their names.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// Sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ Project leader for A-A-P -- http://www.A-A-P.org ///
+ \\\ Buy at Amazon and help AIDS victims -- http://ICCF.nl/click1.html ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 6.2.349
+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 6.2.349
+Problem: Finding a match using 'matchpairs' may cause a crash.
+ 'matchpairs' is not used for 'showmatch'.
+Solution: Don't look past the NUL in 'matchpairs'. Use 'matchpairs' for
+ 'showmatch'. (Dave Olszewkski)
+Files: src/misc1.c, src/normal.c, src/proto/search.pro, src/search.c
+
+
+*** ../vim-6.2.348/src/misc1.c Mon Mar 8 12:27:39 2004
+--- src/misc1.c Fri Mar 12 11:45:19 2004
+***************
+*** 1943,1958 ****
+ #ifdef FEAT_MBYTE
+ && charlen == 1
+ #endif
+! #ifdef FEAT_RIGHTLEFT
+! && ((!(curwin->w_p_rl ^ p_ri)
+! && (c == ')' || c == '}' || c == ']'))
+! || ((curwin->w_p_rl ^ p_ri)
+! && (c == '(' || c == '{' || c == '[')))
+! #else
+! && (c == ')' || c == '}' || c == ']')
+! #endif
+! )
+! showmatch();
+
+ #ifdef FEAT_RIGHTLEFT
+ if (!p_ri || (State & REPLACE_FLAG))
+--- 1943,1950 ----
+ #ifdef FEAT_MBYTE
+ && charlen == 1
+ #endif
+! )
+! showmatch(c);
+
+ #ifdef FEAT_RIGHTLEFT
+ if (!p_ri || (State & REPLACE_FLAG))
+*** ../vim-6.2.348/src/normal.c Tue Mar 9 19:49:08 2004
+--- src/normal.c Fri Mar 12 11:46:51 2004
+***************
+*** 6188,6199 ****
+ */
+ ptr = ml_get_buf(curbuf, curwin->w_cursor.lnum, TRUE);
+ ptr[curwin->w_cursor.col] = cap->nchar;
+! if ( p_sm
+! && msg_silent == 0
+! && (cap->nchar == ')'
+! || cap->nchar == '}'
+! || cap->nchar == ']'))
+! showmatch();
+ ++curwin->w_cursor.col;
+ }
+ #ifdef FEAT_NETBEANS_INTG
+--- 6191,6198 ----
+ */
+ ptr = ml_get_buf(curbuf, curwin->w_cursor.lnum, TRUE);
+ ptr[curwin->w_cursor.col] = cap->nchar;
+! if (p_sm && msg_silent == 0)
+! showmatch(cap->nchar);
+ ++curwin->w_cursor.col;
+ }
+ #ifdef FEAT_NETBEANS_INTG
+*** ../vim-6.2.348/src/proto/search.pro Sun Jun 1 12:26:19 2003
+--- src/proto/search.pro Fri Mar 12 11:54:07 2004
+***************
+*** 14,20 ****
+ int searchc __ARGS((cmdarg_T *cap, int t_cmd));
+ pos_T *findmatch __ARGS((oparg_T *oap, int initc));
+ pos_T *findmatchlimit __ARGS((oparg_T *oap, int initc, int flags, int maxtravel));
+! void showmatch __ARGS((void));
+ int findsent __ARGS((int dir, long count));
+ int findpar __ARGS((oparg_T *oap, int dir, long count, int what, int both));
+ int startPS __ARGS((linenr_T lnum, int para, int both));
+--- 14,20 ----
+ int searchc __ARGS((cmdarg_T *cap, int t_cmd));
+ pos_T *findmatch __ARGS((oparg_T *oap, int initc));
+ pos_T *findmatchlimit __ARGS((oparg_T *oap, int initc, int flags, int maxtravel));
+! void showmatch __ARGS((int c));
+ int findsent __ARGS((int dir, long count));
+ int findpar __ARGS((oparg_T *oap, int dir, long count, int what, int both));
+ int startPS __ARGS((linenr_T lnum, int para, int both));
+*** ../vim-6.2.348/src/search.c Sun Feb 15 13:49:38 2004
+--- src/search.c Fri Mar 12 20:48:34 2004
+***************
+*** 1580,1585 ****
+--- 1580,1587 ----
+ backwards = FALSE;
+ break;
+ }
++ if (ptr[1] != ',')
++ break;
+ }
+ if (!findc) /* invalid initc! */
+ return NULL;
+***************
+*** 2143,2159 ****
+ * If there isn't a match, then beep.
+ */
+ void
+! showmatch()
+ {
+! pos_T *lpos, save_cursor;
+! pos_T mpos;
+! colnr_T vcol;
+! long save_so;
+! long save_siso;
+ #ifdef CURSOR_SHAPE
+! int save_state;
+ #endif
+! colnr_T save_dollar_vcol;
+
+ if ((lpos = findmatch(NULL, NUL)) == NULL) /* no match, so beep */
+ vim_beep();
+--- 2145,2184 ----
+ * If there isn't a match, then beep.
+ */
+ void
+! showmatch(c)
+! int c; /* char to show match for */
+ {
+! pos_T *lpos, save_cursor;
+! pos_T mpos;
+! colnr_T vcol;
+! long save_so;
+! long save_siso;
+ #ifdef CURSOR_SHAPE
+! int save_state;
+! #endif
+! colnr_T save_dollar_vcol;
+! char_u *p;
+!
+! /*
+! * Only show match for chars in the 'matchpairs' option.
+! */
+! /* 'matchpairs' is "x:y,x:y" */
+! for (p = curbuf->b_p_mps; *p != NUL; p += 2)
+! {
+! #ifdef FEAT_RIGHTLEFT
+! if (*p == c && (curwin->w_p_rl ^ p_ri))
+! break;
+! #endif
+! p += 2;
+! if (*p == c
+! #ifdef FEAT_RIGHTLEFT
+! && !(curwin->w_p_rl ^ p_ri)
+ #endif
+! )
+! break;
+! if (p[1] != ',')
+! return;
+! }
+
+ if ((lpos = findmatch(NULL, NUL)) == NULL) /* no match, so beep */
+ vim_beep();
+*** ../vim-6.2.348/src/version.c Fri Mar 12 20:42:24 2004
+--- src/version.c Fri Mar 12 21:09:02 2004
+***************
+*** 639,640 ****
+--- 639,642 ----
+ { /* Add new patch number below this line */
++ /**/
++ 349,
+ /**/
+
+--
+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/ \\\
+\\\ Project leader for A-A-P -- http://www.A-A-P.org ///
+ \\\ Buy at Amazon and help AIDS victims -- http://ICCF.nl/click1.html ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 6.2.350
+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 6.2.350
+Problem: Not enough info about startup timing.
+Solution: Add a few more TIME_MSG() calls.
+Files: src/main.c
+
+
+*** ../vim-6.2.349/src/main.c Fri Mar 12 20:42:24 2004
+--- src/main.c Fri Mar 12 20:35:03 2004
+***************
+*** 1196,1202 ****
+--- 1196,1205 ----
+ {
+ p = (char_u *)getenv("SESSION_MANAGER");
+ if (p != NULL && *p != NUL)
++ {
+ xsmp_init();
++ TIME_MSG("xsmp init");
++ }
+ }
+ #endif
+
+***************
+*** 1592,1597 ****
+--- 1595,1601 ----
+ {
+ (void)serverRegisterName(X_DISPLAY, servername);
+ vim_free(servername);
++ TIME_MSG("register server name");
+ }
+ else
+ serverDelayedStartName = servername;
+***************
+*** 1656,1661 ****
+--- 1660,1667 ----
+ * defined by termcapinit and redifined in .exrc.
+ */
+ settmode(TMODE_RAW);
++ TIME_MSG("setting raw mode");
++
+ if (need_wait_return || msg_didany)
+ {
+ wait_return(TRUE);
+***************
+*** 1663,1668 ****
+--- 1669,1676 ----
+ }
+
+ starttermcap(); /* start termcap if not done by wait_return() */
++ TIME_MSG("start termcap");
++
+ #ifdef FEAT_MOUSE
+ setmouse(); /* may start using the mouse */
+ #endif
+*** ../vim-6.2.349/src/version.c Fri Mar 12 21:13:03 2004
+--- src/version.c Fri Mar 12 21:16:01 2004
+***************
+*** 639,640 ****
+--- 639,642 ----
+ { /* Add new patch number below this line */
++ /**/
++ 350,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+23. You can't call your mother...she doesn't have a modem.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// Sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ Project leader for A-A-P -- http://www.A-A-P.org ///
+ \\\ Buy at Amazon and help AIDS victims -- http://ICCF.nl/click1.html ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 6.2.351 (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 6.2.351
+Problem: Win32: $HOME may be set to %USERPROFILE%.
+Solution: Expand %VAR% at the start of $HOME.
+Files: src/misc1.c
+
+
+*** ../vim-6.2.350/src/misc1.c Fri Mar 12 21:13:03 2004
+--- src/misc1.c Fri Mar 12 21:54:05 2004
+***************
+*** 3107,3112 ****
+--- 3107,3139 ----
+
+ #ifdef WIN3264
+ /*
++ * Weird but true: $HOME may contain an indirect reference to another
++ * variable, esp. "%USERPROFILE%". Happens when $USERPROFILE isn't set
++ * when $HOME is being set.
++ */
++ if (var != NULL && *var == '%')
++ {
++ char_u *p;
++ char_u *exp;
++
++ p = vim_strchr(var + 1, '%');
++ if (p != NULL)
++ {
++ STRNCPY(NameBuff, var + 1, p - (var + 1));
++ NameBuff[p - (var + 1)] = NUL;
++ exp = mch_getenv(NameBuff);
++ if (exp != NULL && *exp != NUL
++ && STRLEN(exp) + STRLEN(p) < MAXPATHL)
++ {
++ sprintf((char *)NameBuff, "%s%s", exp, p + 1);
++ var = NameBuff;
++ /* Also set $HOME, it's needed for _viminfo. */
++ vim_setenv((char_u *)"HOME", NameBuff);
++ }
++ }
++ }
++
++ /*
+ * Typically, $HOME is not defined on Windows, unless the user has
+ * specifically defined it for Vim's sake. However, on Windows NT
+ * platforms, $HOMEDRIVE and $HOMEPATH are automatically defined for
+*** ../vim-6.2.350/src/version.c Fri Mar 12 21:16:48 2004
+--- src/version.c Fri Mar 12 21:56:38 2004
+***************
+*** 639,640 ****
+--- 639,642 ----
+ { /* Add new patch number below this line */
++ /**/
++ 351,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+25. You believe nothing looks sexier than a man in boxer shorts illuminated
+ only by a 17" inch svga monitor.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// Sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ Project leader for A-A-P -- http://www.A-A-P.org ///
+ \\\ Buy at Amazon and help AIDS victims -- http://ICCF.nl/click1.html ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 6.2.352
+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 6.2.352 (after 6.2.335)
+Problem: ":sign texthl=||" does not work.
+Solution: Remove the check for a following command. Give an error for extra
+ arguments after "buffer=1".
+Files: src/ex_cmds.c, src/ex_cmds.h
+
+
+*** ../vim-6.2.351/src/ex_cmds.c Sun Feb 29 21:06:13 2004
+--- src/ex_cmds.c Sat Mar 13 14:26:18 2004
+***************
+*** 5777,5783 ****
+ else if (STRNCMP(arg, "buffer=", 7) == 0)
+ {
+ arg += 7;
+! buf = buflist_findnr(atoi((char *)arg));
+ break;
+ }
+ else
+--- 5777,5785 ----
+ else if (STRNCMP(arg, "buffer=", 7) == 0)
+ {
+ arg += 7;
+! buf = buflist_findnr(getdigits(&arg));
+! if (*skipwhite(arg) != NUL)
+! EMSG(_(e_trailing));
+ break;
+ }
+ else
+*** ../vim-6.2.351/src/ex_cmds.h Tue Mar 9 15:10:47 2004
+--- src/ex_cmds.h Sat Mar 13 12:47:09 2004
+***************
+*** 707,713 ****
+ EX(CMD_simalt, "simalt", ex_simalt,
+ NEEDARG|WORD1|TRLBAR|CMDWIN),
+ EX(CMD_sign, "sign", ex_sign,
+! NEEDARG|RANGE|NOTADR|EXTRA|CMDWIN|TRLBAR),
+ EX(CMD_silent, "silent", ex_wrongmodifier,
+ NEEDARG|EXTRA|BANG|NOTRLCOM|SBOXOK|CMDWIN),
+ EX(CMD_sleep, "sleep", ex_sleep,
+--- 707,713 ----
+ EX(CMD_simalt, "simalt", ex_simalt,
+ NEEDARG|WORD1|TRLBAR|CMDWIN),
+ EX(CMD_sign, "sign", ex_sign,
+! NEEDARG|RANGE|NOTADR|EXTRA|CMDWIN),
+ EX(CMD_silent, "silent", ex_wrongmodifier,
+ NEEDARG|EXTRA|BANG|NOTRLCOM|SBOXOK|CMDWIN),
+ EX(CMD_sleep, "sleep", ex_sleep,
+*** ../vim-6.2.351/src/version.c Fri Mar 12 21:58:35 2004
+--- src/version.c Sat Mar 13 14:23:14 2004
+***************
+*** 639,640 ****
+--- 639,642 ----
+ { /* Add new patch number below this line */
++ /**/
++ 352,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+27. You refer to your age as 3.x.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// Sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ Project leader for A-A-P -- http://www.A-A-P.org ///
+ \\\ Buy at Amazon and help AIDS victims -- http://ICCF.nl/click1.html ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 6.2.353 (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 6.2.353 (extra)
+Problem: Win32: Supported server name length is limited. (Paul Bossi)
+Solution: Use MAX_PATH instead of 25.
+Files: src/os_mswin.c
+
+
+*** ../vim-6.2.352/src/os_mswin.c Thu Mar 11 21:03:40 2004
+--- src/os_mswin.c Sat Mar 13 16:08:12 2004
+***************
+*** 2528,2534 ****
+ enumWindowsGetServer(HWND hwnd, LPARAM lparam)
+ {
+ struct server_id *id = (struct server_id *)lparam;
+! char server[25];
+
+ /* Get the title of the window */
+ if (getVimServerName(hwnd, server, sizeof(server)) == 0)
+--- 2528,2534 ----
+ enumWindowsGetServer(HWND hwnd, LPARAM lparam)
+ {
+ struct server_id *id = (struct server_id *)lparam;
+! char server[MAX_PATH];
+
+ /* Get the title of the window */
+ if (getVimServerName(hwnd, server, sizeof(server)) == 0)
+***************
+*** 2549,2555 ****
+ enumWindowsGetNames(HWND hwnd, LPARAM lparam)
+ {
+ garray_T *ga = (garray_T *)lparam;
+! char server[25];
+
+ /* Get the title of the window */
+ if (getVimServerName(hwnd, server, sizeof(server)) == 0)
+--- 2549,2555 ----
+ enumWindowsGetNames(HWND hwnd, LPARAM lparam)
+ {
+ garray_T *ga = (garray_T *)lparam;
+! char server[MAX_PATH];
+
+ /* Get the title of the window */
+ if (getVimServerName(hwnd, server, sizeof(server)) == 0)
+*** ../vim-6.2.352/src/version.c Sat Mar 13 14:28:50 2004
+--- src/version.c Sat Mar 13 16:13:03 2004
+***************
+*** 639,640 ****
+--- 639,642 ----
+ { /* Add new patch number below this line */
++ /**/
++ 353,
+ /**/
+
+--
+Bypasses are devices that allow some people to dash from point A to
+point B very fast while other people dash from point B to point A very
+fast. People living at point C, being a point directly in between, are
+often given to wonder what's so great about point A that so many people
+from point B are so keen to get there and what's so great about point B
+that so many people from point A are so keen to get there. They often
+wish that people would just once and for all work out where the hell
+they wanted to be.
+ -- 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/ \\\
+\\\ Project leader for A-A-P -- http://www.A-A-P.org ///
+ \\\ Buy at Amazon and help AIDS victims -- http://ICCF.nl/click1.html ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 6.2.354 (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 6.2.354 (extra)
+Problem: Win32: When the mouse pointer is on a tear-off menu it is hidden
+ when typing but is not redisplayed when moved. (Markx Hackmann)
+Solution: Handle the pointer move event for the tear-off menu window.
+Files: src/gui_w32.c
+
+
+*** ../vim-6.2.353/src/gui_w32.c Tue Mar 9 10:48:23 2004
+--- src/gui_w32.c Sun Mar 14 14:33:29 2004
+***************
+*** 2829,2834 ****
+--- 2830,2838 ----
+ {
+ if (message == WM_INITDIALOG)
+ return (TRUE);
++
++ /* May show the mouse pointer again. */
++ HandleMouseHide(message, lParam);
+
+ if (message == WM_COMMAND)
+ {
+*** ../vim-6.2.353/src/version.c Sat Mar 13 16:13:48 2004
+--- src/version.c Sun Mar 14 14:36:28 2004
+***************
+*** 639,640 ****
+--- 639,642 ----
+ { /* Add new patch number below this line */
++ /**/
++ 354,
+ /**/
+
+--
+How To Keep A Healthy Level Of Insanity:
+5. Put decaf in the coffee maker for 3 weeks. Once everyone has gotten
+ over their caffeine addictions, switch to expresso.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// Sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ Project leader for A-A-P -- http://www.A-A-P.org ///
+ \\\ Buy at Amazon and help AIDS victims -- http://ICCF.nl/click1.html ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 6.2.355
+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 6.2.355 (after 6.2.303)
+Problem: When 'encoding' is a double-byte encoding different from the
+ current locale, the width of characters is not correct.
+ Possible failure and memory leak when using iconv, Unicode
+ digraphs and 'encoding' is not "utf-8".
+Solution: Use iconv() to discover the actual width of characters.
+ Add the "vc_fail" field to vimconv_T.
+ When converting a digraph, init the conversion type to NONE and
+ cleanup afterwards.
+Files: src/digraph.c, src/mbyte.c, src/structs.h
+
+
+*** ../vim-6.2.354/src/digraph.c Mon Mar 1 17:01:39 2004
+--- src/digraph.c Sun Mar 14 16:16:25 2004
+***************
+*** 2116,2145 ****
+ {
+ char_u buf[6], *to;
+ vimconv_T vc;
+- int utflen;
+
+ /*
+ * Convert the Unicode digraph to 'encoding'.
+ */
+ i = utf_char2bytes(retval, buf);
+ if (convert_setup(&vc, (char_u *)"utf-8", p_enc) == OK)
+ {
+! utflen = i;
+ to = string_convert(&vc, buf, &i);
+ if (to != NULL)
+ {
+! /* Checking for invalid values isn't very easy. Internal
+! * latin1 conversion will return char 0xbf in case it can't be
+! * converted */
+! if ((i > 1 && !has_mbyte)
+! || (vc.vc_type == CONV_TO_LATIN1 && utflen != 1
+! && to[0] == 0xbf))
+! /* assume invalid value */
+! retval = 0;
+! else
+! retval = (*mb_ptr2char)(to);
+ vim_free(to);
+ }
+ }
+ }
+ # endif
+--- 2116,2138 ----
+ {
+ char_u buf[6], *to;
+ vimconv_T vc;
+
+ /*
+ * Convert the Unicode digraph to 'encoding'.
+ */
+ i = utf_char2bytes(retval, buf);
++ retval = 0;
++ vc.vc_type = CONV_NONE;
+ if (convert_setup(&vc, (char_u *)"utf-8", p_enc) == OK)
+ {
+! vc.vc_fail = TRUE;
+ to = string_convert(&vc, buf, &i);
+ if (to != NULL)
+ {
+! retval = (*mb_ptr2char)(to);
+ vim_free(to);
+ }
++ (void)convert_setup(&vc, NULL, NULL);
+ }
+ }
+ # endif
+*** ../vim-6.2.354/src/mbyte.c Mon Mar 8 15:12:09 2004
+--- src/mbyte.c Sun Mar 14 20:00:01 2004
+***************
+*** 408,413 ****
+--- 408,419 ----
+ int idx;
+ int n;
+ int enc_dbcs_new = 0;
++ #if defined(USE_ICONV) && !defined(WIN3264) && !defined(WIN32UNIX) \
++ && !defined(MACOS)
++ # define LEN_FROM_CONV
++ vimconv_T vimconv;
++ char_u *p;
++ #endif
+
+ if (p_enc == NULL)
+ {
+***************
+*** 555,560 ****
+--- 561,582 ----
+ /*
+ * Fill the mb_bytelen_tab[] for MB_BYTE2LEN().
+ */
++ #ifdef LEN_FROM_CONV
++ /* When 'encoding' is different from the current locale mblen() won't
++ * work. Use conversion to "utf-8" instead. */
++ vimconv.vc_type = CONV_NONE;
++ if (enc_dbcs)
++ {
++ p = enc_locale();
++ if (p == NULL || STRCMP(p, p_enc) != 0)
++ {
++ convert_setup(&vimconv, p_enc, (char_u *)"utf-8");
++ vimconv.vc_fail = TRUE;
++ }
++ vim_free(p);
++ }
++ #endif
++
+ for (i = 0; i < 256; ++i)
+ {
+ /* Our own function to reliably check the length of UTF-8 characters,
+***************
+*** 589,610 ****
+ n = 1;
+ else
+ {
+- /*
+- * mblen() should return -1 for invalid (means the leading
+- * multibyte) character. However there are some platform
+- * where mblen() returns 0 for invalid character. Therefore,
+- * following condition includes 0.
+- */
+ buf[0] = i;
+ buf[1] = 0;
+! #if 0
+! if (i >= 0x80)/* TESTING DBCS: 'encoding' != current locale */
+! #else
+! if (mblen(buf, (size_t)1) <= 0)
+! #endif
+! n = 2;
+ else
+! n = 1;
+ }
+ # endif
+ #endif
+--- 611,648 ----
+ n = 1;
+ else
+ {
+ buf[0] = i;
+ buf[1] = 0;
+! #ifdef LEN_FROM_CONV
+! if (vimconv.vc_type != CONV_NONE)
+! {
+! /*
+! * string_convert() should fail when converting the first
+! * byte of a double-byte character.
+! */
+! p = string_convert(&vimconv, (char_u *)buf, NULL);
+! if (p != NULL)
+! {
+! vim_free(p);
+! n = 1;
+! }
+! else
+! n = 2;
+! }
+ else
+! #endif
+! {
+! /*
+! * mblen() should return -1 for invalid (means the leading
+! * multibyte) character. However there are some platforms
+! * where mblen() returns 0 for invalid character.
+! * Therefore, following condition includes 0.
+! */
+! if (mblen(buf, (size_t)1) <= 0)
+! n = 2;
+! else
+! n = 1;
+! }
+ }
+ # endif
+ #endif
+***************
+*** 613,618 ****
+--- 651,660 ----
+ mb_bytelen_tab[i] = n;
+ }
+
++ #ifdef LEN_FROM_CONV
++ convert_setup(&vimconv, NULL, NULL);
++ #endif
++
+ /* The cell width depends on the type of multi-byte characters. */
+ (void)init_chartab();
+
+***************
+*** 2824,2830 ****
+
+ # if defined(USE_ICONV) || defined(PROTO)
+
+! static char_u *iconv_string __ARGS((iconv_t fd, char_u *str, int slen));
+
+ /*
+ * Call iconv_open() with a check if iconv() works properly (there are broken
+--- 2866,2872 ----
+
+ # if defined(USE_ICONV) || defined(PROTO)
+
+! static char_u *iconv_string __ARGS((vimconv_T *vcp, char_u *str, int slen));
+
+ /*
+ * Call iconv_open() with a check if iconv() works properly (there are broken
+***************
+*** 2885,2892 ****
+ * Returns the converted string in allocated memory. NULL for an error.
+ */
+ static char_u *
+! iconv_string(fd, str, slen)
+! iconv_t fd;
+ char_u *str;
+ int slen;
+ {
+--- 2927,2934 ----
+ * Returns the converted string in allocated memory. NULL for an error.
+ */
+ static char_u *
+! iconv_string(vcp, str, slen)
+! vimconv_T *vcp;
+ char_u *str;
+ int slen;
+ {
+***************
+*** 2922,2928 ****
+ tolen = len - done - 2;
+ /* Avoid a warning for systems with a wrong iconv() prototype by
+ * casting the second argument to void *. */
+! if (iconv(fd, (void *)&from, &fromlen, &to, &tolen) != (size_t)-1)
+ {
+ /* Finished, append a NUL. */
+ *to = NUL;
+--- 2964,2971 ----
+ tolen = len - done - 2;
+ /* Avoid a warning for systems with a wrong iconv() prototype by
+ * casting the second argument to void *. */
+! if (iconv(vcp->vc_fd, (void *)&from, &fromlen, &to, &tolen)
+! != (size_t)-1)
+ {
+ /* Finished, append a NUL. */
+ *to = NUL;
+***************
+*** 2930,2936 ****
+ }
+ /* Check both ICONV_EILSEQ and EILSEQ, because the dynamically loaded
+ * iconv library may use one of them. */
+! if (ICONV_ERRNO == ICONV_EILSEQ || ICONV_ERRNO == EILSEQ)
+ {
+ /* Can't convert: insert a '?' and skip a character. This assumes
+ * conversion from 'encoding' to something else. In other
+--- 2973,2980 ----
+ }
+ /* Check both ICONV_EILSEQ and EILSEQ, because the dynamically loaded
+ * iconv library may use one of them. */
+! if (!vcp->vc_fail && (ICONV_ERRNO == ICONV_EILSEQ
+! || ICONV_ERRNO == EILSEQ))
+ {
+ /* Can't convert: insert a '?' and skip a character. This assumes
+ * conversion from 'encoding' to something else. In other
+***************
+*** 5209,5214 ****
+--- 5253,5259 ----
+ # endif
+ vcp->vc_type = CONV_NONE;
+ vcp->vc_factor = 1;
++ vcp->vc_fail = FALSE;
+
+ /* No conversion when one of the names is empty or they are equal. */
+ if (from == NULL || *from == NUL || to == NULL || *to == NUL
+***************
+*** 5304,5319 ****
+ }
+
+ #if defined(MACOS_X)
+! static char_u *mac_string_convert __ARGS((char_u *ptr, int len, int *lenp, CFStringEncoding from, CFStringEncoding to));
+
+ /*
+ * A Mac version of string_convert() for special cases.
+ */
+ static char_u *
+! mac_string_convert(ptr, len, lenp, from, to)
+ char_u *ptr;
+ int len;
+ int *lenp;
+ CFStringEncoding from;
+ CFStringEncoding to;
+ {
+--- 5349,5365 ----
+ }
+
+ #if defined(MACOS_X)
+! static char_u *mac_string_convert __ARGS((char_u *ptr, int len, int *lenp, int fail_on_error, CFStringEncoding from, CFStringEncoding to));
+
+ /*
+ * A Mac version of string_convert() for special cases.
+ */
+ static char_u *
+! mac_string_convert(ptr, len, lenp, fail_on_error, from, to)
+ char_u *ptr;
+ int len;
+ int *lenp;
++ int fail_on_error;
+ CFStringEncoding from;
+ CFStringEncoding to;
+ {
+***************
+*** 5337,5342 ****
+--- 5383,5394 ----
+ if (!CFStringGetCString(cfstr, retval, buflen, to))
+ {
+ CFRelease(cfstr);
++ if (fail_on_error)
++ {
++ vim_free(retval);
++ return NULL;
++ }
++
+ /* conversion failed for the whole string, but maybe it will work
+ * for each character */
+ for (d = retval, in = 0, out = 0; in < len && out < buflen - 1;)
+***************
+*** 5384,5389 ****
+--- 5436,5442 ----
+ * Convert text "ptr[*lenp]" according to "vcp".
+ * Returns the result in allocated memory and sets "*lenp".
+ * When "lenp" is NULL, use NUL terminated strings.
++ * Illegal chars are often changed to "?", unless vcp->vc_fail is set.
+ * When something goes wrong, NULL is returned and "*lenp" is unchanged.
+ */
+ char_u *
+***************
+*** 5445,5450 ****
+--- 5498,5508 ----
+ {
+ if (c < 0x100)
+ *d++ = c;
++ else if (vcp->vc_fail)
++ {
++ vim_free(retval);
++ return NULL;
++ }
+ else
+ {
+ *d++ = 0xbf;
+***************
+*** 5462,5486 ****
+
+ # ifdef MACOS_X
+ case CONV_MAC_LATIN1:
+! retval = mac_string_convert(ptr, len, lenp,
+ kCFStringEncodingMacRoman,
+ kCFStringEncodingISOLatin1);
+ break;
+
+ case CONV_LATIN1_MAC:
+! retval = mac_string_convert(ptr, len, lenp,
+ kCFStringEncodingISOLatin1,
+ kCFStringEncodingMacRoman);
+ break;
+
+ case CONV_MAC_UTF8:
+! retval = mac_string_convert(ptr, len, lenp,
+ kCFStringEncodingMacRoman,
+ kCFStringEncodingUTF8);
+ break;
+
+ case CONV_UTF8_MAC:
+! retval = mac_string_convert(ptr, len, lenp,
+ kCFStringEncodingUTF8,
+ kCFStringEncodingMacRoman);
+ break;
+--- 5520,5544 ----
+
+ # ifdef MACOS_X
+ case CONV_MAC_LATIN1:
+! retval = mac_string_convert(ptr, len, lenp, vcp->vc_fail,
+ kCFStringEncodingMacRoman,
+ kCFStringEncodingISOLatin1);
+ break;
+
+ case CONV_LATIN1_MAC:
+! retval = mac_string_convert(ptr, len, lenp, vcp->vc_fail,
+ kCFStringEncodingISOLatin1,
+ kCFStringEncodingMacRoman);
+ break;
+
+ case CONV_MAC_UTF8:
+! retval = mac_string_convert(ptr, len, lenp, vcp->vc_fail,
+ kCFStringEncodingMacRoman,
+ kCFStringEncodingUTF8);
+ break;
+
+ case CONV_UTF8_MAC:
+! retval = mac_string_convert(ptr, len, lenp, vcp->vc_fail,
+ kCFStringEncodingUTF8,
+ kCFStringEncodingMacRoman);
+ break;
+***************
+*** 5488,5494 ****
+
+ # ifdef USE_ICONV
+ case CONV_ICONV: /* conversion with output_conv.vc_fd */
+! retval = iconv_string(vcp->vc_fd, ptr, len);
+ if (retval != NULL && lenp != NULL)
+ *lenp = (int)STRLEN(retval);
+ break;
+--- 5546,5552 ----
+
+ # ifdef USE_ICONV
+ case CONV_ICONV: /* conversion with output_conv.vc_fd */
+! retval = iconv_string(vcp, ptr, len);
+ if (retval != NULL && lenp != NULL)
+ *lenp = (int)STRLEN(retval);
+ break;
+*** ../vim-6.2.354/src/structs.h Tue Mar 9 12:41:56 2004
+--- src/structs.h Sun Mar 14 15:46:06 2004
+***************
+*** 817,822 ****
+--- 817,823 ----
+ # ifdef USE_ICONV
+ iconv_t vc_fd; /* for CONV_ICONV */
+ # endif
++ int vc_fail; /* fail for invalid char, don't use '?' */
+ } vimconv_T;
+
+ /*
+*** ../vim-6.2.354/src/version.c Sun Mar 14 14:37:09 2004
+--- src/version.c Sun Mar 14 20:06:12 2004
+***************
+*** 639,640 ****
+--- 639,642 ----
+ { /* Add new patch number below this line */
++ /**/
++ 355,
+ /**/
+
+--
+How To Keep A Healthy Level Of Insanity:
+8. Don't use any punctuation marks.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// Sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ Project leader for A-A-P -- http://www.A-A-P.org ///
+ \\\ Buy at Amazon and help AIDS victims -- http://ICCF.nl/click1.html ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 6.2.356
+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 6.2.356
+Problem: When using a double-byte 'encoding' and 'selection' is
+ "exclusive", "vy" only yanks the first byte of a double-byte
+ character. (Xiangjiang Ma)
+Solution: Correct the column in unadjust_for_sel() to position on the first
+ byte, always include the trailing byte of the selected text.
+Files: src/normal.c
+
+
+*** ../vim-6.2.355/src/normal.c Fri Mar 12 21:13:03 2004
+--- src/normal.c Sun Mar 14 17:42:30 2004
+***************
+*** 1700,1713 ****
+ #endif
+
+ #ifdef FEAT_MBYTE
+! /* Include the trailing byte of a multi-byte char. Don't do it when
+! * VIsual_active is TRUE and 'sel' is "exclusive", the position has
+! * already been moved to the trailing byte by adjust_for_sel() then. */
+! if (has_mbyte && oap->inclusive
+! # ifdef FEAT_VISUAL
+! && (!oap->is_VIsual || *p_sel != 'e')
+! # endif
+! )
+ {
+ int l;
+
+--- 1700,1707 ----
+ #endif
+
+ #ifdef FEAT_MBYTE
+! /* Include the trailing byte of a multi-byte char. */
+! if (has_mbyte && oap->inclusive)
+ {
+ int l;
+
+***************
+*** 1733,1739 ****
+ );
+ /*
+ * For delete, change and yank, it's an error to operate on an
+! * empty region, when 'E' inclucded in 'cpoptions' (Vi compatible).
+ */
+ empty_region_error = (oap->empty
+ && vim_strchr(p_cpo, CPO_EMPTYREGION) != NULL);
+--- 1727,1733 ----
+ );
+ /*
+ * For delete, change and yank, it's an error to operate on an
+! * empty region, when 'E' included in 'cpoptions' (Vi compatible).
+ */
+ empty_region_error = (oap->empty
+ && vim_strchr(p_cpo, CPO_EMPTYREGION) != NULL);
+***************
+*** 7738,7744 ****
+--- 7745,7756 ----
+ else
+ #endif
+ if (pp->col > 0)
++ {
+ --pp->col;
++ #ifdef FEAT_MBYTE
++ mb_adjustpos(pp);
++ #endif
++ }
+ else if (pp->lnum > 1)
+ {
+ --pp->lnum;
+*** ../vim-6.2.355/src/version.c Sun Mar 14 20:12:26 2004
+--- src/version.c Sun Mar 14 20:15:01 2004
+***************
+*** 639,640 ****
+--- 639,642 ----
+ { /* Add new patch number below this line */
++ /**/
++ 356,
+ /**/
+
+--
+How To Keep A Healthy Level Of Insanity:
+9. As often as possible, skip rather than walk.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// Sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ Project leader for A-A-P -- http://www.A-A-P.org ///
+ \\\ Buy at Amazon and help AIDS victims -- http://ICCF.nl/click1.html ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 6.2.357
+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 6.2.357 (after 6.2.321)
+Problem: Memory leak when resizing the Vim window.
+Solution: Free the LineWraps array.
+Files: src/screen.c
+
+
+*** ../vim-6.2.356/src/screen.c Sat Mar 6 21:13:14 2004
+--- src/screen.c Mon Mar 15 10:38:09 2004
+***************
+*** 6574,6579 ****
+--- 6574,6580 ----
+ #endif
+ vim_free(ScreenAttrs);
+ vim_free(LineOffset);
++ vim_free(LineWraps);
+ ScreenLines = new_ScreenLines;
+ #ifdef FEAT_MBYTE
+ ScreenLinesUC = new_ScreenLinesUC;
+*** ../vim-6.2.356/src/version.c Sun Mar 14 20:16:56 2004
+--- src/version.c Mon Mar 15 12:25:53 2004
+***************
+*** 639,640 ****
+--- 639,642 ----
+ { /* Add new patch number below this line */
++ /**/
++ 357,
+ /**/
+
+--
+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/ \\\
+\\\ Project leader for A-A-P -- http://www.A-A-P.org ///
+ \\\ Buy at Amazon and help AIDS victims -- http://ICCF.nl/click1.html ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 6.2.358
+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 6.2.358 (after 6.2.299)
+Problem: Memory leak when using ":help" and the language doesn't match.
+Solution: Free the array with matching tags.
+Files: src/ex_cmds.c
+
+
+*** ../vim-6.2.357/src/ex_cmds.c Sat Mar 13 14:28:50 2004
+--- src/ex_cmds.c Mon Mar 15 10:51:09 2004
+***************
+*** 4627,4632 ****
+--- 4627,4634 ----
+ else
+ #endif
+ EMSG2(_("E149: Sorry, no help for %s"), arg);
++ if (n != FAIL)
++ FreeWild(num_matches, matches);
+ return;
+ }
+
+*** ../vim-6.2.357/src/version.c Mon Mar 15 12:26:21 2004
+--- src/version.c Mon Mar 15 12:27:39 2004
+***************
+*** 639,640 ****
+--- 639,642 ----
+ { /* Add new patch number below this line */
++ /**/
++ 358,
+ /**/
+
+--
+"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/ \\\
+\\\ Project leader for A-A-P -- http://www.A-A-P.org ///
+ \\\ Buy at Amazon and help AIDS victims -- http://ICCF.nl/click1.html ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 6.2.359
+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 6.2.359 (after 6.2.352)
+Problem: Compiler warning for long to int type cast.
+Solution: Add explicit type cast.
+Files: src/ex_cmds.c
+
+
+*** ../vim-6.2.358/src/ex_cmds.c Mon Mar 15 12:28:44 2004
+--- src/ex_cmds.c Mon Mar 15 10:51:09 2004
+***************
+*** 5779,5785 ****
+ else if (STRNCMP(arg, "buffer=", 7) == 0)
+ {
+ arg += 7;
+! buf = buflist_findnr(getdigits(&arg));
+ if (*skipwhite(arg) != NUL)
+ EMSG(_(e_trailing));
+ break;
+--- 5779,5785 ----
+ else if (STRNCMP(arg, "buffer=", 7) == 0)
+ {
+ arg += 7;
+! buf = buflist_findnr((int)getdigits(&arg));
+ if (*skipwhite(arg) != NUL)
+ EMSG(_(e_trailing));
+ break;
+*** ../vim-6.2.358/src/version.c Mon Mar 15 12:28:44 2004
+--- src/version.c Mon Mar 15 12:32:42 2004
+***************
+*** 639,640 ****
+--- 639,642 ----
+ { /* Add new patch number below this line */
++ /**/
++ 359,
+ /**/
+
+--
+I am also told that there is a logical proof out there somewhere
+that demonstrates that there is no task which duct tape cannot handle.
+ -- Paul Brannan
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// Sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ Project leader for A-A-P -- http://www.A-A-P.org ///
+ \\\ Buy at Amazon and help AIDS victims -- http://ICCF.nl/click1.html ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 6.2.360
+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 6.2.360
+Problem: "100|" in an empty line results in a ruler "1,0-100". (Pavol
+ Juhas)
+Solution: Recompute w_virtcol if the target column was not reached.
+Files: src/misc2.c
+
+
+*** ../vim-6.2.359/src/misc2.c Mon Feb 2 13:00:19 2004
+--- src/misc2.c Sun Mar 14 11:45:50 2004
+***************
+*** 105,111 ****
+ {
+ int rc = getvpos(&curwin->w_cursor, wcol);
+
+! if (wcol == MAXCOL)
+ curwin->w_valid &= ~VALID_VIRTCOL;
+ else
+ {
+--- 105,111 ----
+ {
+ int rc = getvpos(&curwin->w_cursor, wcol);
+
+! if (wcol == MAXCOL || rc == FAIL)
+ curwin->w_valid &= ~VALID_VIRTCOL;
+ else
+ {
+*** ../vim-6.2.359/src/version.c Mon Mar 15 12:33:19 2004
+--- src/version.c Mon Mar 15 12:43:08 2004
+***************
+*** 639,640 ****
+--- 639,642 ----
+ { /* Add new patch number below this line */
++ /**/
++ 360,
+ /**/
+
+--
+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/ \\\
+\\\ Project leader for A-A-P -- http://www.A-A-P.org ///
+ \\\ Buy at Amazon and help AIDS victims -- http://ICCF.nl/click1.html ///