--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 7.1.312
+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.1.312
+Problem: The .po files have mistakes in error numbers.
+Solution: Search for these mistakes in the check script. (Dominique Pelle)
+Files: src/po/check.vim
+
+
+*** ../vim-7.1.311/src/po/check.vim Wed Nov 23 22:10:37 2005
+--- src/po/check.vim Sun May 25 13:47:59 2008
+***************
+*** 1,7 ****
+ " Vim script for checking .po files.
+ "
+! " Go through the file and verify that all %...s items in "msgid" are identical
+! " to the ones in "msgstr".
+
+ if 1 " Only execute this if the eval feature is available.
+
+--- 1,8 ----
+ " Vim script for checking .po files.
+ "
+! " Go through the file and verify that:
+! " - All %...s items in "msgid" are identical to the ones in "msgstr".
+! " - An error or warning code in "msgid" matches the one in "msgstr".
+
+ if 1 " Only execute this if the eval feature is available.
+
+***************
+*** 56,61 ****
+--- 57,76 ----
+ endif
+ endwhile
+
++ " Check that error code in msgid matches the one in msgstr.
++ "
++ " Examples of mismatches found with msgid "E123: ..."
++ " - msgstr "E321: ..." error code mismatch
++ " - msgstr "W123: ..." warning instead of error
++ " - msgstr "E123 ..." missing colon
++ " - msgstr "..." missing error code
++ "
++ 1
++ if search('msgid "\("\n"\)\?\([EW][0-9]\+:\).*\nmsgstr "\("\n"\)\?[^"]\@=\2\@!') > 0
++ echo 'Mismatching error/warning code in line ' . line('.')
++ let error = 1
++ endif
++
+ if error == 0
+ echo "OK"
+ endif
+*** ../vim-7.1.311/src/version.c Wed Jun 4 21:34:51 2008
+--- src/version.c Mon Jun 9 14:43:59 2008
+***************
+*** 668,669 ****
+--- 673,676 ----
+ { /* Add new patch number below this line */
++ /**/
++ 312,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+24. You realize there is not a sound in the house and you have no idea where
+ your children are.
+
+ /// 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.1.313
+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.1.313
+Problem: When the netbeans interface setModified call is used the status
+ lines and window title are not updated.
+Solution: Redraw the status lines and title. (Philippe Fremy)
+Files: src/netbeans.c
+
+
+*** ../vim-7.1.312/src/netbeans.c Sun Mar 16 16:02:47 2008
+--- src/netbeans.c Wed May 28 15:12:13 2008
+***************
+*** 16,21 ****
+--- 16,25 ----
+ * See ":help netbeans-protocol" for explanation.
+ */
+
++ #if defined(MSDOS) || defined(MSWIN)
++ # include "vimio.h" /* for mch_open(), must be before vim.h */
++ #endif
++
+ #include "vim.h"
+
+ #if defined(FEAT_NETBEANS_INTG) || defined(PROTO)
+***************
+*** 1974,1986 ****
+ }
+ else if (streq((char *)cmd, "setModified"))
+ {
+ if (buf == NULL || buf->bufp == NULL)
+ {
+ /* EMSG("E646: null bufp in setModified"); */
+ return FAIL;
+ }
+ if (streq((char *)args, "T"))
+! buf->bufp->b_changed = 1;
+ else
+ {
+ struct stat st;
+--- 1978,1993 ----
+ }
+ else if (streq((char *)cmd, "setModified"))
+ {
++ int prev_b_changed;
++
+ if (buf == NULL || buf->bufp == NULL)
+ {
+ /* EMSG("E646: null bufp in setModified"); */
+ return FAIL;
+ }
++ prev_b_changed = buf->bufp->b_changed;
+ if (streq((char *)args, "T"))
+! buf->bufp->b_changed = TRUE;
+ else
+ {
+ struct stat st;
+***************
+*** 1990,1998 ****
+ if (buf->bufp->b_ffname != NULL
+ && mch_stat((char *)buf->bufp->b_ffname, &st) >= 0)
+ buf_store_time(buf->bufp, &st, buf->bufp->b_ffname);
+! buf->bufp->b_changed = 0;
+ }
+ buf->modified = buf->bufp->b_changed;
+ /* =====================================================================*/
+ }
+ else if (streq((char *)cmd, "setModtime"))
+--- 1997,2016 ----
+ if (buf->bufp->b_ffname != NULL
+ && mch_stat((char *)buf->bufp->b_ffname, &st) >= 0)
+ buf_store_time(buf->bufp, &st, buf->bufp->b_ffname);
+! buf->bufp->b_changed = FALSE;
+ }
+ buf->modified = buf->bufp->b_changed;
++ if (prev_b_changed != buf->bufp->b_changed)
++ {
++ #ifdef FEAT_WINDOWS
++ check_status(buf->bufp);
++ redraw_tabline = TRUE;
++ #endif
++ #ifdef FEAT_TITLE
++ maketitle();
++ #endif
++ update_screen(0);
++ }
+ /* =====================================================================*/
+ }
+ else if (streq((char *)cmd, "setModtime"))
+*** ../vim-7.1.312/src/version.c Mon Jun 9 14:45:17 2008
+--- src/version.c Mon Jun 9 15:08:40 2008
+***************
+*** 668,669 ****
+--- 673,676 ----
+ { /* Add new patch number below this line */
++ /**/
++ 313,
+ /**/
+
+--
+Q: What is the difference betwee open-source and commercial software?
+A: If you have a problem with commercial software you can call a phone
+ number and they will tell you it might be solved in a future version.
+ For open-source software there isn't a phone number to call, but you
+ get the solution within a day.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 7.1.314
+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.1.314
+Problem: The value of 'pastetoggle' is written to the session file without
+ any escaping. (Randall Hansen)
+Solution: Use put_escstr(). (Ben Schmidt)
+Files: src/option.c
+
+
+*** ../vim-7.1.313/src/option.c Wed Mar 12 17:37:53 2008
+--- src/option.c Wed Jun 4 19:32:02 2008
+***************
+*** 243,249 ****
+ /* WV_ and BV_ values get typecasted to this for the "indir" field */
+ typedef enum
+ {
+! PV_NONE = 0
+ } idopt_T;
+
+ /*
+--- 243,250 ----
+ /* WV_ and BV_ values get typecasted to this for the "indir" field */
+ typedef enum
+ {
+! PV_NONE = 0,
+! PV_MAXVAL = 0xffff /* to avoid warnings for value out of range */
+ } idopt_T;
+
+ /*
+***************
+*** 8713,8719 ****
+ {
+ s = *valuep;
+ while (*s != NUL)
+! if (fputs((char *)str2special(&s, FALSE), fd) < 0)
+ return FAIL;
+ }
+ else if (expand)
+--- 8714,8720 ----
+ {
+ s = *valuep;
+ while (*s != NUL)
+! if (put_escstr(fd, str2special(&s, FALSE), 2) == FAIL)
+ return FAIL;
+ }
+ else if (expand)
+*** ../vim-7.1.313/src/version.c Mon Jun 9 15:10:07 2008
+--- src/version.c Mon Jun 9 17:05:40 2008
+***************
+*** 668,669 ****
+--- 673,676 ----
+ { /* Add new patch number below this line */
++ /**/
++ 314,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+26. You check your mail. It says "no new messages." So you check it again.
+
+ /// 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.1.315
+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.1.315
+Problem: Crash with specific search pattern using look-behind match.
+ (Andreas Politz)
+Solution: Also save the value of "need_clear_subexpr".
+Files: src/regexp.c
+
+
+*** ../vim-7.1.314/src/regexp.c Wed Apr 9 12:14:44 2008
+--- src/regexp.c Sun Jun 15 14:16:40 2008
+***************
+*** 3044,3049 ****
+--- 3044,3050 ----
+ {
+ regsave_T save_after;
+ regsave_T save_behind;
++ int save_need_clear_subexpr;
+ save_se_T save_start[NSUBEXP];
+ save_se_T save_end[NSUBEXP];
+ } regbehind_T;
+***************
+*** 5858,5874 ****
+ {
+ int i;
+
+! for (i = 0; i < NSUBEXP; ++i)
+ {
+! if (REG_MULTI)
+! {
+! bp->save_start[i].se_u.pos = reg_startpos[i];
+! bp->save_end[i].se_u.pos = reg_endpos[i];
+! }
+! else
+ {
+! bp->save_start[i].se_u.ptr = reg_startp[i];
+! bp->save_end[i].se_u.ptr = reg_endp[i];
+ }
+ }
+ }
+--- 5859,5881 ----
+ {
+ int i;
+
+! /* When "need_clear_subexpr" is set we don't need to save the values, only
+! * remember that this flag needs to be set again when restoring. */
+! bp->save_need_clear_subexpr = need_clear_subexpr;
+! if (!need_clear_subexpr)
+ {
+! for (i = 0; i < NSUBEXP; ++i)
+ {
+! if (REG_MULTI)
+! {
+! bp->save_start[i].se_u.pos = reg_startpos[i];
+! bp->save_end[i].se_u.pos = reg_endpos[i];
+! }
+! else
+! {
+! bp->save_start[i].se_u.ptr = reg_startp[i];
+! bp->save_end[i].se_u.ptr = reg_endp[i];
+! }
+ }
+ }
+ }
+***************
+*** 5882,5898 ****
+ {
+ int i;
+
+! for (i = 0; i < NSUBEXP; ++i)
+ {
+! if (REG_MULTI)
+! {
+! reg_startpos[i] = bp->save_start[i].se_u.pos;
+! reg_endpos[i] = bp->save_end[i].se_u.pos;
+! }
+! else
+ {
+! reg_startp[i] = bp->save_start[i].se_u.ptr;
+! reg_endp[i] = bp->save_end[i].se_u.ptr;
+ }
+ }
+ }
+--- 5889,5910 ----
+ {
+ int i;
+
+! /* Only need to restore saved values when they are not to be cleared. */
+! need_clear_subexpr = bp->save_need_clear_subexpr;
+! if (!need_clear_subexpr)
+ {
+! for (i = 0; i < NSUBEXP; ++i)
+ {
+! if (REG_MULTI)
+! {
+! reg_startpos[i] = bp->save_start[i].se_u.pos;
+! reg_endpos[i] = bp->save_end[i].se_u.pos;
+! }
+! else
+! {
+! reg_startp[i] = bp->save_start[i].se_u.ptr;
+! reg_endp[i] = bp->save_end[i].se_u.ptr;
+! }
+ }
+ }
+ }
+*** ../vim-7.1.314/src/version.c Mon Jun 9 17:07:13 2008
+--- src/version.c Sun Jun 15 14:12:54 2008
+***************
+*** 668,669 ****
+--- 673,676 ----
+ { /* Add new patch number below this line */
++ /**/
++ 315,
+ /**/
+
+--
+Tips for aliens in New York: Land anywhere. Central Park, anywhere.
+No one will care or indeed even notice.
+ -- 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.1.316
+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.1.316
+Problem: When 'cscopetag' is set ":tag" gives an error message instead of
+ going to the next tag in the tag stack.
+Solution: Don't call do_cstag() when there is no argument. (Mark Goldman)
+Files: src/ex_docmd.c
+
+
+*** ../vim-7.1.315/src/ex_docmd.c Sun Mar 16 16:02:47 2008
+--- src/ex_docmd.c Fri Jun 20 10:42:30 2008
+***************
+*** 9300,9306 ****
+ break;
+ default: /* ":tag" */
+ #ifdef FEAT_CSCOPE
+! if (p_cst)
+ {
+ do_cstag(eap);
+ return;
+--- 9302,9308 ----
+ break;
+ default: /* ":tag" */
+ #ifdef FEAT_CSCOPE
+! if (p_cst && *eap->arg != NUL)
+ {
+ do_cstag(eap);
+ return;
+*** ../vim-7.1.315/src/version.c Sun Jun 15 14:20:28 2008
+--- src/version.c Fri Jun 20 11:09:35 2008
+***************
+*** 668,669 ****
+--- 673,676 ----
+ { /* Add new patch number below this line */
++ /**/
++ 316,
+ /**/
+
+--
+Microsoft is to software what McDonalds is to gourmet cooking
+
+ /// 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.1.317
+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.1.317
+Problem: Compiler warnings in Motif calls.
+Solution: Change zero to NULL. (Dominique Pelle)
+Files: src/gui_motif.c
+
+
+*** ../vim-7.1.316/src/gui_motif.c Tue Jan 22 11:06:06 2008
+--- src/gui_motif.c Sat Jun 7 15:06:33 2008
+***************
+*** 686,693 ****
+
+ /* Temporarily set value of XmNmappedWhenManaged
+ to stop the dialog from popping up right away */
+! XtVaGetValues(shell, XmNmappedWhenManaged, &mappedWhenManaged, 0);
+! XtVaSetValues(shell, XmNmappedWhenManaged, False, 0);
+
+ XtManageChild(dialog_child);
+
+--- 686,693 ----
+
+ /* Temporarily set value of XmNmappedWhenManaged
+ to stop the dialog from popping up right away */
+! XtVaGetValues(shell, XmNmappedWhenManaged, &mappedWhenManaged, NULL);
+! XtVaSetValues(shell, XmNmappedWhenManaged, False, NULL);
+
+ XtManageChild(dialog_child);
+
+***************
+*** 723,729 ****
+ XtMapWidget(shell);
+
+ /* Restore the value of XmNmappedWhenManaged */
+! XtVaSetValues(shell, XmNmappedWhenManaged, mappedWhenManaged, 0);
+ }
+
+ #if defined(FEAT_MENU) || defined(FEAT_SUN_WORKSHOP) \
+--- 723,729 ----
+ XtMapWidget(shell);
+
+ /* Restore the value of XmNmappedWhenManaged */
+! XtVaSetValues(shell, XmNmappedWhenManaged, mappedWhenManaged, NULL);
+ }
+
+ #if defined(FEAT_MENU) || defined(FEAT_SUN_WORKSHOP) \
+***************
+*** 1993,1999 ****
+ {
+ if (XtClass(w) == xmRowColumnWidgetClass)
+ {
+! XtVaGetValues(w, XmNrowColumnType, &rowColType, 0);
+ isMenu = (rowColType != (unsigned char)XmWORK_AREA);
+ }
+ else
+--- 1993,1999 ----
+ {
+ if (XtClass(w) == xmRowColumnWidgetClass)
+ {
+! XtVaGetValues(w, XmNrowColumnType, &rowColType, NULL);
+ isMenu = (rowColType != (unsigned char)XmWORK_AREA);
+ }
+ else
+***************
+*** 2001,2014 ****
+ if (!isMenu)
+ {
+ XtVaGetValues(w, XmNchildren, &children, XmNnumChildren,
+! &numChildren, 0);
+ for (i = 0; i < numChildren; i++)
+ do_mnemonic(children[i], keycode);
+ }
+ }
+ else
+ {
+! XtVaGetValues(w, XmNmnemonic, &mnemonic, 0);
+ if (mnemonic != '\0')
+ {
+ mneString[0] = mnemonic;
+--- 2001,2014 ----
+ if (!isMenu)
+ {
+ XtVaGetValues(w, XmNchildren, &children, XmNnumChildren,
+! &numChildren, NULL);
+ for (i = 0; i < numChildren; i++)
+ do_mnemonic(children[i], keycode);
+ }
+ }
+ else
+ {
+! XtVaGetValues(w, XmNmnemonic, &mnemonic, NULL);
+ if (mnemonic != '\0')
+ {
+ mneString[0] = mnemonic;
+***************
+*** 2019,2025 ****
+ if (XtClass(w) == xmLabelWidgetClass
+ || XtClass(w) == xmLabelGadgetClass)
+ {
+! XtVaGetValues(w, XmNuserData, &userData, 0);
+ if (userData != NULL && XtIsWidget(userData))
+ XmProcessTraversal(userData, XmTRAVERSE_CURRENT);
+ }
+--- 2019,2025 ----
+ if (XtClass(w) == xmLabelWidgetClass
+ || XtClass(w) == xmLabelGadgetClass)
+ {
+! XtVaGetValues(w, XmNuserData, &userData, NULL);
+ if (userData != NULL && XtIsWidget(userData))
+ XmProcessTraversal(userData, XmTRAVERSE_CURRENT);
+ }
+***************
+*** 2073,2079 ****
+ {
+ if (XtClass(w) == xmRowColumnWidgetClass)
+ {
+! XtVaGetValues(w, XmNrowColumnType, &rowColType, 0);
+ isMenu = (rowColType != (unsigned char)XmWORK_AREA);
+ }
+ else
+--- 2073,2079 ----
+ {
+ if (XtClass(w) == xmRowColumnWidgetClass)
+ {
+! XtVaGetValues(w, XmNrowColumnType, &rowColType, NULL);
+ isMenu = (rowColType != (unsigned char)XmWORK_AREA);
+ }
+ else
+***************
+*** 2081,2094 ****
+ if (!isMenu)
+ {
+ XtVaGetValues(w, XmNchildren, &children, XmNnumChildren,
+! &numChildren, 0);
+ for (i = 0; i < numChildren; i++)
+ add_mnemonic_grabs(dialog, children[i]);
+ }
+ }
+ else
+ {
+! XtVaGetValues(w, XmNmnemonic, &mnemonic, 0);
+ if (mnemonic != '\0')
+ {
+ mneString[0] = mnemonic;
+--- 2081,2094 ----
+ if (!isMenu)
+ {
+ XtVaGetValues(w, XmNchildren, &children, XmNnumChildren,
+! &numChildren, NULL);
+ for (i = 0; i < numChildren; i++)
+ add_mnemonic_grabs(dialog, children[i]);
+ }
+ }
+ else
+ {
+! XtVaGetValues(w, XmNmnemonic, &mnemonic, NULL);
+ if (mnemonic != '\0')
+ {
+ mneString[0] = mnemonic;
+*** ../vim-7.1.316/src/version.c Fri Jun 20 11:10:53 2008
+--- src/version.c Fri Jun 20 11:38:25 2008
+***************
+*** 668,669 ****
+--- 673,676 ----
+ { /* Add new patch number below this line */
++ /**/
++ 317,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+43. You tell the kids they can't use the computer because "Daddy's got work to
+ do" and you don't even have a job.
+
+ /// 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.1.318
+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.1.318
+Problem: Memory leak when closing xsmp connection. Crash on exit when
+ using Lesstif.
+Solution: Don't close the X display to work around a Lesstif bug. Free
+ clientid. Also fix a leak for Motif and Athena. (Dominique Pelle)
+Files: src/gui_x11.c, src/os_unix.c
+
+
+*** ../vim-7.1.317/src/gui_x11.c Thu May 10 21:11:45 2007
+--- src/gui_x11.c Sun Jun 8 17:13:45 2008
+***************
+*** 1538,1545 ****
+--- 1538,1548 ----
+ attr.depth = DefaultDepthOfScreen(scr);
+
+ if (!icon)
++ {
+ XpmCreatePixmapFromData(dsp, root_window, magick, &icon,
+ &icon_mask, &attr);
++ XpmFreeAttributes(&attr);
++ }
+
+ # ifdef FEAT_GUI_ATHENA
+ XtVaSetValues(vimShell, XtNiconPixmap, icon, XtNiconMask, icon_mask, NULL);
+*** ../vim-7.1.317/src/os_unix.c Wed May 7 19:05:55 2008
+--- src/os_unix.c Tue Jun 17 21:03:54 2008
+***************
+*** 209,214 ****
+--- 209,215 ----
+ {
+ SmcConn smcconn; /* The SM connection ID */
+ IceConn iceconn; /* The ICE connection ID */
++ char *clientid; /* The client ID for the current smc session */
+ Bool save_yourself; /* If we're in the middle of a save_yourself */
+ Bool shutdown; /* If we're in shutdown mode */
+ } xsmp_config_T;
+***************
+*** 2887,2902 ****
+ if (clip_plus.owned)
+ clip_lose_selection(&clip_plus);
+ # endif
+! # if (defined(FEAT_X11) && defined(FEAT_XCLIPBOARD)) || defined(PROTO)
+ if (xterm_Shell != (Widget)0)
+ XtDestroyWidget(xterm_Shell);
+ if (xterm_dpy != NULL)
+ XtCloseDisplay(xterm_dpy);
+ if (app_context != (XtAppContext)NULL)
+ XtDestroyApplicationContext(app_context);
+ # endif
+ # ifdef FEAT_X11
+! if (x11_display != NULL && x11_display != xterm_dpy)
+ XCloseDisplay(x11_display);
+ # endif
+ # if defined(HAVE_SIGALTSTACK) || defined(HAVE_SIGSTACK)
+--- 2893,2920 ----
+ if (clip_plus.owned)
+ clip_lose_selection(&clip_plus);
+ # endif
+! # if defined(FEAT_X11) && defined(FEAT_XCLIPBOARD)
+ if (xterm_Shell != (Widget)0)
+ XtDestroyWidget(xterm_Shell);
++ # ifndef LESSTIF_VERSION
++ /* Lesstif crashes here, lose some memory */
+ if (xterm_dpy != NULL)
+ XtCloseDisplay(xterm_dpy);
+ if (app_context != (XtAppContext)NULL)
++ {
+ XtDestroyApplicationContext(app_context);
++ # ifdef FEAT_X11
++ x11_display = NULL; /* freed by XtDestroyApplicationContext() */
++ # endif
++ }
++ # endif
+ # endif
+ # ifdef FEAT_X11
+! if (x11_display != NULL
+! # ifdef FEAT_XCLIPBOARD
+! && x11_display != xterm_dpy
+! # endif
+! )
+ XCloseDisplay(x11_display);
+ # endif
+ # if defined(HAVE_SIGALTSTACK) || defined(HAVE_SIGSTACK)
+***************
+*** 6290,6311 ****
+ }
+ if (xterm_dpy != NULL)
+ {
+! #if 0
+ /* Lesstif and Solaris crash here, lose some memory */
+ XtCloseDisplay(xterm_dpy);
+! #endif
+ if (x11_display == xterm_dpy)
+ x11_display = NULL;
+ xterm_dpy = NULL;
+ }
+! #if 0
+ if (app_context != (XtAppContext)NULL)
+ {
+ /* Lesstif and Solaris crash here, lose some memory */
+ XtDestroyApplicationContext(app_context);
+ app_context = (XtAppContext)NULL;
+ }
+! #endif
+ }
+ # endif
+
+--- 6308,6329 ----
+ }
+ if (xterm_dpy != NULL)
+ {
+! # if 0
+ /* Lesstif and Solaris crash here, lose some memory */
+ XtCloseDisplay(xterm_dpy);
+! # endif
+ if (x11_display == xterm_dpy)
+ x11_display = NULL;
+ xterm_dpy = NULL;
+ }
+! # if 0
+ if (app_context != (XtAppContext)NULL)
+ {
+ /* Lesstif and Solaris crash here, lose some memory */
+ XtDestroyApplicationContext(app_context);
+ app_context = (XtAppContext)NULL;
+ }
+! # endif
+ }
+ # endif
+
+***************
+*** 6557,6563 ****
+ xsmp_init(void)
+ {
+ char errorstring[80];
+- char *clientid;
+ SmcCallbacks smcallbacks;
+ #if 0
+ SmPropValue smname;
+--- 6575,6580 ----
+***************
+*** 6599,6605 ****
+ | SmcSaveCompleteProcMask | SmcShutdownCancelledProcMask,
+ &smcallbacks,
+ NULL,
+! &clientid,
+ sizeof(errorstring),
+ errorstring);
+ if (xsmp.smcconn == NULL)
+--- 6616,6622 ----
+ | SmcSaveCompleteProcMask | SmcShutdownCancelledProcMask,
+ &smcallbacks,
+ NULL,
+! &xsmp.clientid,
+ sizeof(errorstring),
+ errorstring);
+ if (xsmp.smcconn == NULL)
+***************
+*** 6638,6643 ****
+--- 6655,6662 ----
+ if (xsmp_icefd != -1)
+ {
+ SmcCloseConnection(xsmp.smcconn, 0, NULL);
++ vim_free(xsmp.clientid);
++ xsmp.clientid = NULL;
+ xsmp_icefd = -1;
+ }
+ }
+*** ../vim-7.1.317/src/version.c Fri Jun 20 11:39:04 2008
+--- src/version.c Fri Jun 20 11:56:09 2008
+***************
+*** 668,669 ****
+--- 673,676 ----
+ { /* Add new patch number below this line */
++ /**/
++ 318,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+44. Your friends no longer send you e-mail...they just log on to your IRC
+ channel.
+
+ /// 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.1.319
+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.1.319
+Problem: When a register has an illegal utf-8 sequence, pasting it on the
+ command line causes an illegal memory access.
+Solution: Use mb_cptr2char_adv(). (Dominique Pelle)
+Files: src/ex_getln.c
+
+
+*** ../vim-7.1.318/src/ex_getln.c Thu May 29 15:33:13 2008
+--- src/ex_getln.c Mon Jun 9 20:10:51 2008
+***************
+*** 3032,3041 ****
+ ++s;
+ #ifdef FEAT_MBYTE
+ if (has_mbyte)
+! {
+! c = mb_ptr2char(s);
+! s += mb_char2len(c);
+! }
+ else
+ #endif
+ c = *s++;
+--- 3033,3039 ----
+ ++s;
+ #ifdef FEAT_MBYTE
+ if (has_mbyte)
+! c = mb_cptr2char_adv(&s);
+ else
+ #endif
+ c = *s++;
+*** ../vim-7.1.318/src/version.c Fri Jun 20 11:58:27 2008
+--- src/version.c Fri Jun 20 12:53:16 2008
+***************
+*** 668,669 ****
+--- 673,676 ----
+ { /* Add new patch number below this line */
++ /**/
++ 319,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+46. Your wife makes a new rule: "The computer cannot come to bed."
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 7.1.320
+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.1.320 (extra)
+Problem: Win64: Warnings while compiling Python interface.
+Solution: Use PyInt in more places. Also update version message for the
+ console. (George Reilly)
+Files: src/if_python.c, src/version.c
+
+
+*** ../vim-7.1.319/src/if_python.c Wed Jun 4 13:33:15 2008
+--- src/if_python.c Fri Jun 20 14:45:59 2008
+***************
+*** 50,60 ****
+
+ #if !defined(FEAT_PYTHON) && defined(PROTO)
+ /* Use this to be able to generate prototypes without python being used. */
+! # define PyObject int
+! # define PyThreadState int
+! # define PyTypeObject int
+! struct PyMethodDef { int a; };
+! # define PySequenceMethods int
+ #endif
+
+ #if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02050000
+--- 50,60 ----
+
+ #if !defined(FEAT_PYTHON) && defined(PROTO)
+ /* Use this to be able to generate prototypes without python being used. */
+! # define PyObject Py_ssize_t
+! # define PyThreadState Py_ssize_t
+! # define PyTypeObject Py_ssize_t
+! struct PyMethodDef { Py_ssize_t a; };
+! # define PySequenceMethods Py_ssize_t
+ #endif
+
+ #if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02050000
+***************
+*** 64,69 ****
+--- 64,70 ----
+ # define PyIntIntArgFunc ssizessizeargfunc
+ # define PyIntObjArgProc ssizeobjargproc
+ # define PyIntIntObjArgProc ssizessizeobjargproc
++ # define Py_ssize_t_fmt "n"
+ #else
+ # define PyInt int
+ # define PyInquiry inquiry
+***************
+*** 71,76 ****
+--- 72,78 ----
+ # define PyIntIntArgFunc intintargfunc
+ # define PyIntObjArgProc intobjargproc
+ # define PyIntIntObjArgProc intintobjargproc
++ # define Py_ssize_t_fmt "i"
+ #endif
+
+ /* Parser flags */
+***************
+*** 85,93 ****
+
+ #if defined(DYNAMIC_PYTHON) || defined(PROTO)
+ # ifndef DYNAMIC_PYTHON
+! # define HINSTANCE int /* for generating prototypes */
+ # endif
+
+ /*
+ * Wrapper defines
+ */
+--- 87,104 ----
+
+ #if defined(DYNAMIC_PYTHON) || defined(PROTO)
+ # ifndef DYNAMIC_PYTHON
+! # define HINSTANCE long_u /* for generating prototypes */
+ # endif
+
++ /* This makes if_python.c compile without warnings against Python 2.5
++ * on Win32 and Win64. */
++ #undef PyRun_SimpleString
++ #undef PyArg_Parse
++ #undef PyArg_ParseTuple
++ #undef Py_BuildValue
++ #undef Py_InitModule4
++ #undef Py_InitModule4_64
++
+ /*
+ * Wrapper defines
+ */
+***************
+*** 269,275 ****
+--- 280,290 ----
+ {"PyType_Type", (PYTHON_PROC*)&dll_PyType_Type},
+ {"Py_BuildValue", (PYTHON_PROC*)&dll_Py_BuildValue},
+ {"Py_FindMethod", (PYTHON_PROC*)&dll_Py_FindMethod},
++ # if (PY_VERSION_HEX >= 0x02050000) && SIZEOF_SIZE_T != SIZEOF_INT
++ {"Py_InitModule4_64", (PYTHON_PROC*)&dll_Py_InitModule4},
++ # else
+ {"Py_InitModule4", (PYTHON_PROC*)&dll_Py_InitModule4},
++ # endif
+ {"Py_Initialize", (PYTHON_PROC*)&dll_Py_Initialize},
+ {"Py_Finalize", (PYTHON_PROC*)&dll_Py_Finalize},
+ {"Py_IsInitialized", (PYTHON_PROC*)&dll_Py_IsInitialized},
+***************
+*** 339,346 ****
+ * TRUE, else FALSE.
+ */
+ int
+! python_enabled(verbose)
+! int verbose;
+ {
+ return python_runtime_link_init(DYNAMIC_PYTHON_DLL, verbose) == OK;
+ }
+--- 354,360 ----
+ * TRUE, else FALSE.
+ */
+ int
+! python_enabled(int verbose)
+ {
+ return python_runtime_link_init(DYNAMIC_PYTHON_DLL, verbose) == OK;
+ }
+***************
+*** 374,381 ****
+ */
+
+ static void DoPythonCommand(exarg_T *, const char *);
+! static int RangeStart;
+! static int RangeEnd;
+
+ static void PythonIO_Flush(void);
+ static int PythonIO_Init(void);
+--- 388,395 ----
+ */
+
+ static void DoPythonCommand(exarg_T *, const char *);
+! static PyInt RangeStart;
+! static PyInt RangeEnd;
+
+ static void PythonIO_Flush(void);
+ static int PythonIO_Init(void);
+***************
+*** 384,395 ****
+ /* Utility functions for the vim/python interface
+ * ----------------------------------------------
+ */
+! static PyObject *GetBufferLine(buf_T *, int);
+ static PyObject *GetBufferLineList(buf_T *, PyInt, PyInt);
+
+! static int SetBufferLine(buf_T *, int, PyObject *, int *);
+! static int SetBufferLineList(buf_T *, PyInt, PyInt, PyObject *, int *);
+! static int InsertBufferLines(buf_T *, int, PyObject *, int *);
+
+ static PyObject *LineToString(const char *);
+ static char *StringToLine(PyObject *);
+--- 398,409 ----
+ /* Utility functions for the vim/python interface
+ * ----------------------------------------------
+ */
+! static PyObject *GetBufferLine(buf_T *, PyInt);
+ static PyObject *GetBufferLineList(buf_T *, PyInt, PyInt);
+
+! static int SetBufferLine(buf_T *, PyInt, PyObject *, PyInt *);
+! static int SetBufferLineList(buf_T *, PyInt, PyInt, PyObject *, PyInt *);
+! static int InsertBufferLines(buf_T *, PyInt, PyObject *, PyInt *);
+
+ static PyObject *LineToString(const char *);
+ static char *StringToLine(PyObject *);
+***************
+*** 690,696 ****
+ static PyObject *OutputWritelines(PyObject *, PyObject *);
+
+ typedef void (*writefn)(char_u *);
+! static void writer(writefn fn, char_u *str, int n);
+
+ /* Output object definition
+ */
+--- 704,710 ----
+ static PyObject *OutputWritelines(PyObject *, PyObject *);
+
+ typedef void (*writefn)(char_u *);
+! static void writer(writefn fn, char_u *str, PyInt n);
+
+ /* Output object definition
+ */
+***************
+*** 812,818 ****
+ {
+ PyObject *line = PyList_GetItem(list, i);
+ char *str;
+! int len;
+
+ if (!PyArg_Parse(line, "s#", &str, &len)) {
+ PyErr_SetString(PyExc_TypeError, _("writelines() requires list of strings"));
+--- 826,832 ----
+ {
+ PyObject *line = PyList_GetItem(list, i);
+ char *str;
+! PyInt len;
+
+ if (!PyArg_Parse(line, "s#", &str, &len)) {
+ PyErr_SetString(PyExc_TypeError, _("writelines() requires list of strings"));
+***************
+*** 836,850 ****
+ */
+
+ static char_u *buffer = NULL;
+! static int buffer_len = 0;
+! static int buffer_size = 0;
+
+ static writefn old_fn = NULL;
+
+ static void
+! buffer_ensure(int n)
+ {
+! int new_size;
+ char_u *new_buffer;
+
+ if (n < buffer_size)
+--- 850,864 ----
+ */
+
+ static char_u *buffer = NULL;
+! static PyInt buffer_len = 0;
+! static PyInt buffer_size = 0;
+
+ static writefn old_fn = NULL;
+
+ static void
+! buffer_ensure(PyInt n)
+ {
+! PyInt new_size;
+ char_u *new_buffer;
+
+ if (n < buffer_size)
+***************
+*** 884,890 ****
+ }
+
+ static void
+! writer(writefn fn, char_u *str, int n)
+ {
+ char_u *ptr;
+
+--- 898,904 ----
+ }
+
+ static void
+! writer(writefn fn, char_u *str, PyInt n)
+ {
+ char_u *ptr;
+
+***************
+*** 895,901 ****
+
+ while (n > 0 && (ptr = memchr(str, '\n', n)) != NULL)
+ {
+! int len = ptr - str;
+
+ buffer_ensure(buffer_len + len + 1);
+
+--- 909,915 ----
+
+ while (n > 0 && (ptr = memchr(str, '\n', n)) != NULL)
+ {
+! PyInt len = ptr - str;
+
+ buffer_ensure(buffer_len + len + 1);
+
+***************
+*** 1022,1035 ****
+ {
+ PyObject_HEAD
+ BufferObject *buf;
+! int start;
+! int end;
+ }
+ RangeObject;
+
+ #define RangeType_Check(obj) ((obj)->ob_type == &RangeType)
+
+! static PyObject *RangeNew(buf_T *, int, int);
+
+ static void RangeDestructor(PyObject *);
+ static PyObject *RangeGetattr(PyObject *, char *);
+--- 1036,1049 ----
+ {
+ PyObject_HEAD
+ BufferObject *buf;
+! PyInt start;
+! PyInt end;
+ }
+ RangeObject;
+
+ #define RangeType_Check(obj) ((obj)->ob_type == &RangeType)
+
+! static PyObject *RangeNew(buf_T *, PyInt, PyInt);
+
+ static void RangeDestructor(PyObject *);
+ static PyObject *RangeGetattr(PyObject *, char *);
+***************
+*** 1069,1076 ****
+
+ static struct PyMethodDef VimMethods[] = {
+ /* name, function, calling, documentation */
+! {"command", VimCommand, 1, "" },
+! {"eval", VimEval, 1, "" },
+ { NULL, NULL, 0, NULL }
+ };
+
+--- 1083,1090 ----
+
+ static struct PyMethodDef VimMethods[] = {
+ /* name, function, calling, documentation */
+! {"command", VimCommand, 1, "Execute a Vim ex-mode command" },
+! {"eval", VimEval, 1, "Evaluate an expression using Vim evaluator" },
+ { NULL, NULL, 0, NULL }
+ };
+
+***************
+*** 1110,1116 ****
+ * Function to translate a typval_T into a PyObject; this will recursively
+ * translate lists/dictionaries into their Python equivalents.
+ *
+! * The depth parameter is too avoid infinite recursion, set it to 1 when
+ * you call VimToPython.
+ */
+ static PyObject *
+--- 1124,1130 ----
+ * Function to translate a typval_T into a PyObject; this will recursively
+ * translate lists/dictionaries into their Python equivalents.
+ *
+! * The depth parameter is to avoid infinite recursion, set it to 1 when
+ * you call VimToPython.
+ */
+ static PyObject *
+***************
+*** 1130,1136 ****
+
+ /* Check if we run into a recursive loop. The item must be in lookupDict
+ * then and we can use it again. */
+! sprintf(ptrBuf, "%ld", (long)our_tv);
+ result = PyDict_GetItemString(lookupDict, ptrBuf);
+ if (result != NULL)
+ Py_INCREF(result);
+--- 1144,1150 ----
+
+ /* 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);
+***************
+*** 1184,1190 ****
+ if (our_tv->vval.v_dict != NULL)
+ {
+ hashtab_T *ht = &our_tv->vval.v_dict->dv_hashtab;
+! int todo = ht->ht_used;
+ hashitem_T *hi;
+ dictitem_T *di;
+
+--- 1198,1204 ----
+ if (our_tv->vval.v_dict != NULL)
+ {
+ hashtab_T *ht = &our_tv->vval.v_dict->dv_hashtab;
+! long_u todo = ht->ht_used;
+ hashitem_T *hi;
+ dictitem_T *di;
+
+***************
+*** 1273,1279 ****
+ }
+
+ static PyObject *
+! RBItem(BufferObject *self, PyInt n, int start, int end)
+ {
+ if (CheckBuffer(self))
+ return NULL;
+--- 1287,1293 ----
+ }
+
+ static PyObject *
+! RBItem(BufferObject *self, PyInt n, PyInt start, PyInt end)
+ {
+ if (CheckBuffer(self))
+ return NULL;
+***************
+*** 1288,1294 ****
+ }
+
+ static PyObject *
+! RBSlice(BufferObject *self, PyInt lo, PyInt hi, int start, int end)
+ {
+ PyInt size;
+
+--- 1302,1308 ----
+ }
+
+ static PyObject *
+! RBSlice(BufferObject *self, PyInt lo, PyInt hi, PyInt start, PyInt end)
+ {
+ PyInt size;
+
+***************
+*** 1312,1320 ****
+ }
+
+ static PyInt
+! RBAssItem(BufferObject *self, PyInt n, PyObject *val, int start, int end, int *new_end)
+ {
+! int len_change;
+
+ if (CheckBuffer(self))
+ return -1;
+--- 1326,1334 ----
+ }
+
+ static PyInt
+! RBAssItem(BufferObject *self, PyInt n, PyObject *val, PyInt start, PyInt end, PyInt *new_end)
+ {
+! PyInt len_change;
+
+ if (CheckBuffer(self))
+ return -1;
+***************
+*** 1335,1344 ****
+ }
+
+ static PyInt
+! RBAssSlice(BufferObject *self, PyInt lo, PyInt hi, PyObject *val, int start, int end, int *new_end)
+ {
+! int size;
+! int len_change;
+
+ /* Self must be a valid buffer */
+ if (CheckBuffer(self))
+--- 1349,1358 ----
+ }
+
+ static PyInt
+! RBAssSlice(BufferObject *self, PyInt lo, PyInt hi, PyObject *val, PyInt start, PyInt end, PyInt *new_end)
+ {
+! PyInt size;
+! PyInt len_change;
+
+ /* Self must be a valid buffer */
+ if (CheckBuffer(self))
+***************
+*** 1368,1386 ****
+ }
+
+ static PyObject *
+! RBAppend(BufferObject *self, PyObject *args, int start, int end, int *new_end)
+ {
+ PyObject *lines;
+! int len_change;
+! int max;
+! int n;
+
+ if (CheckBuffer(self))
+ return NULL;
+
+ max = n = end - start + 1;
+
+! if (!PyArg_ParseTuple(args, "O|i", &lines, &n))
+ return NULL;
+
+ if (n < 0 || n > max)
+--- 1382,1400 ----
+ }
+
+ static PyObject *
+! RBAppend(BufferObject *self, PyObject *args, PyInt start, PyInt end, PyInt *new_end)
+ {
+ PyObject *lines;
+! PyInt len_change;
+! PyInt max;
+! PyInt n;
+
+ if (CheckBuffer(self))
+ return NULL;
+
+ max = n = end - start + 1;
+
+! if (!PyArg_ParseTuple(args, "O|" Py_ssize_t_fmt, &lines, &n))
+ return NULL;
+
+ if (n < 0 || n > max)
+***************
+*** 1405,1413 ****
+
+ static struct PyMethodDef BufferMethods[] = {
+ /* name, function, calling, documentation */
+! {"append", BufferAppend, 1, "" },
+! {"mark", BufferMark, 1, "" },
+! {"range", BufferRange, 1, "" },
+ { NULL, NULL, 0, NULL }
+ };
+
+--- 1419,1427 ----
+
+ static struct PyMethodDef BufferMethods[] = {
+ /* name, function, calling, documentation */
+! {"append", BufferAppend, 1, "Append data to Vim buffer" },
+! {"mark", BufferMark, 1, "Return (row,col) representing position of named mark" },
+! {"range", BufferRange, 1, "Return a range object which represents the part of the given buffer between line numbers s and e" },
+ { NULL, NULL, 0, NULL }
+ };
+
+***************
+*** 1503,1511 ****
+ return NULL;
+
+ if (strcmp(name, "name") == 0)
+! return Py_BuildValue("s",this->buf->b_ffname);
+ else if (strcmp(name, "number") == 0)
+! return Py_BuildValue("i",this->buf->b_fnum);
+ else if (strcmp(name,"__members__") == 0)
+ return Py_BuildValue("[ss]", "name", "number");
+ else
+--- 1517,1525 ----
+ return NULL;
+
+ if (strcmp(name, "name") == 0)
+! return Py_BuildValue("s", this->buf->b_ffname);
+ else if (strcmp(name, "number") == 0)
+! return Py_BuildValue(Py_ssize_t_fmt, this->buf->b_fnum);
+ else if (strcmp(name,"__members__") == 0)
+ return Py_BuildValue("[ss]", "name", "number");
+ else
+***************
+*** 1520,1533 ****
+
+ if (this->buf == INVALID_BUFFER_VALUE)
+ {
+! vim_snprintf(repr, 100, _("<buffer object (deleted) at %8lX>"),
+! (long)(self));
+ return PyString_FromString(repr);
+ }
+ else
+ {
+ char *name = (char *)this->buf->b_fname;
+! int len;
+
+ if (name == NULL)
+ name = "";
+--- 1534,1546 ----
+
+ if (this->buf == INVALID_BUFFER_VALUE)
+ {
+! vim_snprintf(repr, 100, _("<buffer object (deleted) at %p>"), (self));
+ return PyString_FromString(repr);
+ }
+ else
+ {
+ char *name = (char *)this->buf->b_fname;
+! PyInt len;
+
+ if (name == NULL)
+ name = "";
+***************
+*** 1572,1578 ****
+ BufferAssItem(PyObject *self, PyInt n, PyObject *val)
+ {
+ return RBAssItem((BufferObject *)(self), n, val, 1,
+! (int)((BufferObject *)(self))->buf->b_ml.ml_line_count,
+ NULL);
+ }
+
+--- 1585,1591 ----
+ BufferAssItem(PyObject *self, PyInt n, PyObject *val)
+ {
+ return RBAssItem((BufferObject *)(self), n, val, 1,
+! (PyInt)((BufferObject *)(self))->buf->b_ml.ml_line_count,
+ NULL);
+ }
+
+***************
+*** 1580,1586 ****
+ BufferAssSlice(PyObject *self, PyInt lo, PyInt hi, PyObject *val)
+ {
+ return RBAssSlice((BufferObject *)(self), lo, hi, val, 1,
+! (int)((BufferObject *)(self))->buf->b_ml.ml_line_count,
+ NULL);
+ }
+
+--- 1593,1599 ----
+ BufferAssSlice(PyObject *self, PyInt lo, PyInt hi, PyObject *val)
+ {
+ return RBAssSlice((BufferObject *)(self), lo, hi, val, 1,
+! (PyInt)((BufferObject *)(self))->buf->b_ml.ml_line_count,
+ NULL);
+ }
+
+***************
+*** 1588,1594 ****
+ BufferAppend(PyObject *self, PyObject *args)
+ {
+ return RBAppend((BufferObject *)(self), args, 1,
+! (int)((BufferObject *)(self))->buf->b_ml.ml_line_count,
+ NULL);
+ }
+
+--- 1601,1607 ----
+ BufferAppend(PyObject *self, PyObject *args)
+ {
+ return RBAppend((BufferObject *)(self), args, 1,
+! (PyInt)((BufferObject *)(self))->buf->b_ml.ml_line_count,
+ NULL);
+ }
+
+***************
+*** 1633,1645 ****
+ static PyObject *
+ BufferRange(PyObject *self, PyObject *args)
+ {
+! int start;
+! int end;
+
+ if (CheckBuffer((BufferObject *)(self)))
+ return NULL;
+
+! if (!PyArg_ParseTuple(args, "ii", &start, &end))
+ return NULL;
+
+ return RangeNew(((BufferObject *)(self))->buf, start, end);
+--- 1646,1658 ----
+ static PyObject *
+ BufferRange(PyObject *self, PyObject *args)
+ {
+! PyInt start;
+! PyInt end;
+
+ if (CheckBuffer((BufferObject *)(self)))
+ return NULL;
+
+! if (!PyArg_ParseTuple(args, Py_ssize_t_fmt Py_ssize_t_fmt, &start, &end))
+ return NULL;
+
+ return RangeNew(((BufferObject *)(self))->buf, start, end);
+***************
+*** 1650,1656 ****
+
+ static struct PyMethodDef RangeMethods[] = {
+ /* name, function, calling, documentation */
+! {"append", RangeAppend, 1, "" },
+ { NULL, NULL, 0, NULL }
+ };
+
+--- 1663,1669 ----
+
+ static struct PyMethodDef RangeMethods[] = {
+ /* name, function, calling, documentation */
+! {"append", RangeAppend, 1, "Append data to the Vim range" },
+ { NULL, NULL, 0, NULL }
+ };
+
+***************
+*** 1691,1697 ****
+ */
+
+ static PyObject *
+! RangeNew(buf_T *buf, int start, int end)
+ {
+ BufferObject *bufr;
+ RangeObject *self;
+--- 1704,1710 ----
+ */
+
+ static PyObject *
+! RangeNew(buf_T *buf, PyInt start, PyInt end)
+ {
+ BufferObject *bufr;
+ RangeObject *self;
+***************
+*** 1725,1733 ****
+ RangeGetattr(PyObject *self, char *name)
+ {
+ if (strcmp(name, "start") == 0)
+! return Py_BuildValue("i",((RangeObject *)(self))->start - 1);
+ else if (strcmp(name, "end") == 0)
+! return Py_BuildValue("i",((RangeObject *)(self))->end - 1);
+ else
+ return Py_FindMethod(RangeMethods, self, name);
+ }
+--- 1738,1746 ----
+ RangeGetattr(PyObject *self, char *name)
+ {
+ if (strcmp(name, "start") == 0)
+! return Py_BuildValue(Py_ssize_t_fmt, ((RangeObject *)(self))->start - 1);
+ else if (strcmp(name, "end") == 0)
+! return Py_BuildValue(Py_ssize_t_fmt, ((RangeObject *)(self))->end - 1);
+ else
+ return Py_FindMethod(RangeMethods, self, name);
+ }
+***************
+*** 1740,1747 ****
+
+ if (this->buf->buf == INVALID_BUFFER_VALUE)
+ {
+! vim_snprintf(repr, 100, "<range object (for deleted buffer) at %8lX>",
+! (long)(self));
+ return PyString_FromString(repr);
+ }
+ else
+--- 1753,1760 ----
+
+ if (this->buf->buf == INVALID_BUFFER_VALUE)
+ {
+! vim_snprintf(repr, 100, "<range object (for deleted buffer) at %p>",
+! (self));
+ return PyString_FromString(repr);
+ }
+ else
+***************
+*** 1869,1875 ****
+ BufListLength(PyObject *self)
+ {
+ buf_T *b = firstbuf;
+! int n = 0;
+
+ while (b)
+ {
+--- 1882,1888 ----
+ BufListLength(PyObject *self)
+ {
+ buf_T *b = firstbuf;
+! PyInt n = 0;
+
+ while (b)
+ {
+***************
+*** 2115,2122 ****
+
+ if (this->win == INVALID_WINDOW_VALUE)
+ {
+! vim_snprintf(repr, 100, _("<window object (deleted) at %.8lX>"),
+! (long)(self));
+ return PyString_FromString(repr);
+ }
+ else
+--- 2128,2134 ----
+
+ if (this->win == INVALID_WINDOW_VALUE)
+ {
+! vim_snprintf(repr, 100, _("<window object (deleted) at %p>"), (self));
+ return PyString_FromString(repr);
+ }
+ else
+***************
+*** 2128,2135 ****
+ ++i;
+
+ if (w == NULL)
+! vim_snprintf(repr, 100, _("<window object (unknown) at %.8lX>"),
+! (long)(self));
+ else
+ vim_snprintf(repr, 100, _("<window %d>"), i);
+
+--- 2140,2147 ----
+ ++i;
+
+ if (w == NULL)
+! vim_snprintf(repr, 100, _("<window object (unknown) at %p>"),
+! (self));
+ else
+ vim_snprintf(repr, 100, _("<window %d>"), i);
+
+***************
+*** 2186,2192 ****
+ WinListLength(PyObject *self)
+ {
+ win_T *w = firstwin;
+! int n = 0;
+
+ while (w != NULL)
+ {
+--- 2198,2204 ----
+ WinListLength(PyObject *self)
+ {
+ win_T *w = firstwin;
+! PyInt n = 0;
+
+ while (w != NULL)
+ {
+***************
+*** 2254,2260 ****
+ else if (strcmp(name, "window") == 0)
+ return (PyObject *)WindowNew(curwin);
+ else if (strcmp(name, "line") == 0)
+! return GetBufferLine(curbuf, (int)curwin->w_cursor.lnum);
+ else if (strcmp(name, "range") == 0)
+ return RangeNew(curbuf, RangeStart, RangeEnd);
+ else if (strcmp(name,"__members__") == 0)
+--- 2266,2272 ----
+ else if (strcmp(name, "window") == 0)
+ return (PyObject *)WindowNew(curwin);
+ else if (strcmp(name, "line") == 0)
+! return GetBufferLine(curbuf, (PyInt)curwin->w_cursor.lnum);
+ else if (strcmp(name, "range") == 0)
+ return RangeNew(curbuf, RangeStart, RangeEnd);
+ else if (strcmp(name,"__members__") == 0)
+***************
+*** 2272,2278 ****
+ {
+ if (strcmp(name, "line") == 0)
+ {
+! if (SetBufferLine(curbuf, (int)curwin->w_cursor.lnum, value, NULL) == FAIL)
+ return -1;
+
+ return 0;
+--- 2284,2290 ----
+ {
+ if (strcmp(name, "line") == 0)
+ {
+! if (SetBufferLine(curbuf, (PyInt)curwin->w_cursor.lnum, value, NULL) == FAIL)
+ return -1;
+
+ return 0;
+***************
+*** 2344,2350 ****
+ /* Set sys.argv[] to avoid a crash in warn(). */
+ PySys_SetArgv(1, argv);
+
+! mod = Py_InitModule("vim", VimMethods);
+ dict = PyModule_GetDict(mod);
+
+ VimError = Py_BuildValue("s", "vim.error");
+--- 2356,2362 ----
+ /* Set sys.argv[] to avoid a crash in warn(). */
+ PySys_SetArgv(1, argv);
+
+! mod = Py_InitModule4("vim", VimMethods, (char *)NULL, (PyObject *)NULL, PYTHON_API_VERSION);
+ dict = PyModule_GetDict(mod);
+
+ VimError = Py_BuildValue("s", "vim.error");
+***************
+*** 2369,2375 ****
+ * string object.
+ */
+ static PyObject *
+! GetBufferLine(buf_T *buf, int n)
+ {
+ return LineToString((char *)ml_get_buf(buf, (linenr_T)n, FALSE));
+ }
+--- 2381,2387 ----
+ * string object.
+ */
+ static PyObject *
+! GetBufferLine(buf_T *buf, PyInt n)
+ {
+ return LineToString((char *)ml_get_buf(buf, (linenr_T)n, FALSE));
+ }
+***************
+*** 2422,2428 ****
+ * deleted).
+ */
+ static void
+! py_fix_cursor(int lo, int hi, int extra)
+ {
+ if (curwin->w_cursor.lnum >= lo)
+ {
+--- 2434,2440 ----
+ * deleted).
+ */
+ static void
+! py_fix_cursor(linenr_T lo, linenr_T hi, linenr_T extra)
+ {
+ if (curwin->w_cursor.lnum >= lo)
+ {
+***************
+*** 2454,2460 ****
+ * is set to the change in the buffer length.
+ */
+ static int
+! SetBufferLine(buf_T *buf, int n, PyObject *line, int *len_change)
+ {
+ /* First of all, we check the thpe of the supplied Python object.
+ * There are three cases:
+--- 2466,2472 ----
+ * is set to the change in the buffer length.
+ */
+ static int
+! SetBufferLine(buf_T *buf, PyInt n, PyObject *line, PyInt *len_change)
+ {
+ /* First of all, we check the thpe of the supplied Python object.
+ * There are three cases:
+***************
+*** 2477,2483 ****
+ {
+ deleted_lines_mark((linenr_T)n, 1L);
+ if (buf == curwin->w_buffer)
+! py_fix_cursor(n, n + 1, -1);
+ }
+
+ curbuf = savebuf;
+--- 2489,2495 ----
+ {
+ deleted_lines_mark((linenr_T)n, 1L);
+ if (buf == curwin->w_buffer)
+! py_fix_cursor((linenr_T)n, (linenr_T)n + 1, (linenr_T)-1);
+ }
+
+ curbuf = savebuf;
+***************
+*** 2545,2551 ****
+ * is set to the change in the buffer length.
+ */
+ static int
+! SetBufferLineList(buf_T *buf, PyInt lo, PyInt hi, PyObject *list, int *len_change)
+ {
+ /* First of all, we check the thpe of the supplied Python object.
+ * There are three cases:
+--- 2557,2563 ----
+ * is set to the change in the buffer length.
+ */
+ static int
+! SetBufferLineList(buf_T *buf, PyInt lo, PyInt hi, PyObject *list, PyInt *len_change)
+ {
+ /* First of all, we check the thpe of the supplied Python object.
+ * There are three cases:
+***************
+*** 2556,2562 ****
+ if (list == Py_None || list == NULL)
+ {
+ PyInt i;
+! PyInt n = hi - lo;
+ buf_T *savebuf = curbuf;
+
+ PyErr_Clear();
+--- 2568,2574 ----
+ if (list == Py_None || list == NULL)
+ {
+ PyInt i;
+! PyInt n = (int)(hi - lo);
+ buf_T *savebuf = curbuf;
+
+ PyErr_Clear();
+***************
+*** 2577,2583 ****
+ deleted_lines_mark((linenr_T)lo, (long)i);
+
+ if (buf == curwin->w_buffer)
+! py_fix_cursor(lo, hi, -n);
+ }
+
+ curbuf = savebuf;
+--- 2589,2595 ----
+ deleted_lines_mark((linenr_T)lo, (long)i);
+
+ if (buf == curwin->w_buffer)
+! py_fix_cursor((linenr_T)lo, (linenr_T)hi, (linenr_T)-n);
+ }
+
+ curbuf = savebuf;
+***************
+*** 2595,2601 ****
+ PyInt i;
+ PyInt new_len = PyList_Size(list);
+ PyInt old_len = hi - lo;
+! int extra = 0; /* lines added to text, can be negative */
+ char **array;
+ buf_T *savebuf;
+
+--- 2607,2613 ----
+ PyInt i;
+ PyInt new_len = PyList_Size(list);
+ PyInt old_len = hi - lo;
+! PyInt extra = 0; /* lines added to text, can be negative */
+ char **array;
+ buf_T *savebuf;
+
+***************
+*** 2706,2712 ****
+ changed_lines((linenr_T)lo, 0, (linenr_T)hi, (long)extra);
+
+ if (buf == curwin->w_buffer)
+! py_fix_cursor(lo, hi, extra);
+
+ curbuf = savebuf;
+
+--- 2718,2724 ----
+ changed_lines((linenr_T)lo, 0, (linenr_T)hi, (long)extra);
+
+ if (buf == curwin->w_buffer)
+! py_fix_cursor((linenr_T)lo, (linenr_T)hi, (linenr_T)extra);
+
+ curbuf = savebuf;
+
+***************
+*** 2734,2740 ****
+ * is set to the change in the buffer length.
+ */
+ static int
+! InsertBufferLines(buf_T *buf, int n, PyObject *lines, int *len_change)
+ {
+ /* First of all, we check the type of the supplied Python object.
+ * It must be a string or a list, or the call is in error.
+--- 2746,2752 ----
+ * is set to the change in the buffer length.
+ */
+ static int
+! InsertBufferLines(buf_T *buf, PyInt n, PyObject *lines, PyInt *len_change)
+ {
+ /* First of all, we check the type of the supplied Python object.
+ * It must be a string or a list, or the call is in error.
+*** ../vim-7.1.319/src/version.c Fri Jun 20 12:55:28 2008
+--- src/version.c Fri Jun 20 16:25:28 2008
+***************
+*** 1367,1378 ****
+ # ifdef FEAT_GUI_W32
+ # if defined(_MSC_VER) && (_MSC_VER <= 1010)
+ /* Only MS VC 4.1 and earlier can do Win32s */
+! MSG_PUTS(_("\nMS-Windows 16/32 bit GUI version"));
+ # else
+ # ifdef _WIN64
+! MSG_PUTS(_("\nMS-Windows 64 bit GUI version"));
+ # else
+! MSG_PUTS(_("\nMS-Windows 32 bit GUI version"));
+ # endif
+ # endif
+ if (gui_is_win32s())
+--- 1374,1385 ----
+ # ifdef FEAT_GUI_W32
+ # if defined(_MSC_VER) && (_MSC_VER <= 1010)
+ /* Only MS VC 4.1 and earlier can do Win32s */
+! MSG_PUTS(_("\nMS-Windows 16/32-bit GUI version"));
+ # else
+ # ifdef _WIN64
+! MSG_PUTS(_("\nMS-Windows 64-bit GUI version"));
+ # else
+! MSG_PUTS(_("\nMS-Windows 32-bit GUI version"));
+ # endif
+ # endif
+ if (gui_is_win32s())
+***************
+*** 1381,1397 ****
+ MSG_PUTS(_(" with OLE support"));
+ # endif
+ # else
+! MSG_PUTS(_("\nMS-Windows 32 bit console version"));
+ # endif
+ #endif
+ #ifdef WIN16
+! MSG_PUTS(_("\nMS-Windows 16 bit version"));
+ #endif
+ #ifdef MSDOS
+ # ifdef DJGPP
+! MSG_PUTS(_("\n32 bit MS-DOS version"));
+ # else
+! MSG_PUTS(_("\n16 bit MS-DOS version"));
+ # endif
+ #endif
+ #ifdef MACOS
+--- 1388,1408 ----
+ MSG_PUTS(_(" with OLE support"));
+ # endif
+ # else
+! # ifdef _WIN64
+! MSG_PUTS(_("\nMS-Windows 64-bit console version"));
+! # else
+! MSG_PUTS(_("\nMS-Windows 32-bit console version"));
+! # endif
+ # endif
+ #endif
+ #ifdef WIN16
+! MSG_PUTS(_("\nMS-Windows 16-bit version"));
+ #endif
+ #ifdef MSDOS
+ # ifdef DJGPP
+! MSG_PUTS(_("\n32-bit MS-DOS version"));
+ # else
+! MSG_PUTS(_("\n16-bit MS-DOS version"));
+ # endif
+ #endif
+ #ifdef MACOS
+*** ../vim-7.1.319/src/version.c Fri Jun 20 12:55:28 2008
+--- src/version.c Fri Jun 20 16:25:28 2008
+***************
+*** 668,669 ****
+--- 673,676 ----
+ { /* Add new patch number below this line */
++ /**/
++ 320,
+ /**/
+
+--
+The real
+trick is
+this: to
+keep the
+lines as
+short as
+possible
+and keep
+the size
+the same
+yet free
+from the
+need for
+hyphena-
+Dammit!! (Matthew Winn)
+
+ /// 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.1.321 (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.1.321 (extra)
+Problem: Win32 / Win64: Install file is outdated.
+Solution: Update the text for recent compiler. (George Reilly)
+Files: src/INSTALLpc.txt
+
+
+*** ../vim-7.1.320/src/INSTALLpc.txt Sun Mar 16 14:52:53 2008
+--- src/INSTALLpc.txt Fri Jun 20 13:39:35 2008
+***************
+*** 36,42 ****
+ Visual Studio
+ -------------
+
+! Building with Visual Studio (VS 98, VS .NET, VS .NET 2003, and VS .NET 2005)
+ is straightforward. (These instructions should also work for VS 4 and VS 5.)
+
+ To build Vim from the command line with MSVC, use Make_mvc.mak.
+--- 36,42 ----
+ Visual Studio
+ -------------
+
+! Building with Visual Studio (VS 98, VS .NET, VS .NET 2003, VS 2005, and VS 2008)
+ is straightforward. (These instructions should also work for VS 4 and VS 5.)
+
+ To build Vim from the command line with MSVC, use Make_mvc.mak.
+***************
+*** 139,145 ****
+ is also available through the Platform SDK, |ms-platform-sdk|.
+
+
+! Visual C++ 2005 Express Edition
+ -------------------------------
+
+ Visual C++ 2005 Express Edition can be downloaded for free from:
+--- 139,145 ----
+ is also available through the Platform SDK, |ms-platform-sdk|.
+
+
+! Visual C++ 2005 Express Edition *msvc-2005-express*
+ -------------------------------
+
+ Visual C++ 2005 Express Edition can be downloaded for free from:
+***************
+*** 159,164 ****
+--- 159,172 ----
+ This includes the IDE and the debugger. You can build Vim with Make_mvc.mak.
+
+
++ Visual C++ 2008 Express Edition *msvc-2008-express*
++ -------------------------------
++
++ Visual C++ 2008 Express Edition can be downloaded for free from:
++ http://msdn2.microsoft.com/en-us/express/default.aspx
++ This includes the IDE and the debugger. You can build Vim with Make_mvc.mak.
++
++
+ 2. MinGW
+ ========
+
+*** ../vim-7.1.320/src/version.c Fri Jun 20 16:31:45 2008
+--- src/version.c Fri Jun 20 16:50:50 2008
+***************
+*** 668,669 ****
+--- 673,676 ----
+ { /* Add new patch number below this line */
++ /**/
++ 321,
+ /**/
+
+--
+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 ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: Patch 7.1.322
+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.1.322
+Problem: Can't get start of Visual area in an <expr> mapping.
+Solution: Add the 'v' argument to getpos().
+Files: runtime/doc/eval.txt, src/eval.c
+
+
+*** ../vim-7.1.321/runtime/doc/eval.txt Wed May 28 16:48:00 2008
+--- runtime/doc/eval.txt Thu Jun 19 22:46:23 2008
+***************
+*** 3515,3520 ****
+--- 3635,3644 ----
+ returned)
+ w0 first line visible in current window
+ w$ last line visible in current window
++ v In Visual mode: the start of the Visual area (the
++ cursor is the end). When not in Visual mode
++ returns the cursor position. Differs from |'<| in
++ that it's updated right away.
+ Note that a mark in another file can be used. The line number
+ then applies to another buffer.
+ To get the column number use |col()|. To get both use
+*** ../vim-7.1.321/src/eval.c Thu May 29 21:46:10 2008
+--- src/eval.c Fri Jun 20 17:20:52 2008
+***************
+*** 16907,16915 ****
+ name = get_tv_string_chk(varp);
+ if (name == NULL)
+ return NULL;
+! if (name[0] == '.') /* cursor */
+ return &curwin->w_cursor;
+! if (name[0] == '\'') /* mark */
+ {
+ pp = getmark_fnum(name[1], FALSE, fnum);
+ if (pp == NULL || pp == (pos_T *)-1 || pp->lnum <= 0)
+--- 17478,17494 ----
+ name = get_tv_string_chk(varp);
+ if (name == NULL)
+ return NULL;
+! if (name[0] == '.') /* cursor */
+ return &curwin->w_cursor;
+! #ifdef FEAT_VISUAL
+! if (name[0] == 'v' && name[1] == NUL) /* Visual start */
+! {
+! if (VIsual_active)
+! return &VIsual;
+! return &curwin->w_cursor;
+! }
+! #endif
+! if (name[0] == '\'') /* mark */
+ {
+ pp = getmark_fnum(name[1], FALSE, fnum);
+ if (pp == NULL || pp == (pos_T *)-1 || pp->lnum <= 0)
+*** ../vim-7.1.321/src/version.c Fri Jun 20 16:51:54 2008
+--- src/version.c Fri Jun 20 17:27:30 2008
+***************
+*** 668,669 ****
+--- 673,676 ----
+ { /* Add new patch number below this line */
++ /**/
++ 322,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+52. You ask a plumber how much it would cost to replace the chair in front of
+ your computer with a toilet.
+
+ /// 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.1.323
+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.1.323
+Problem: Test 19 fails with some termcaps. (Dominque Pelle)
+Solution: Set the t_kb and t_kD termcap values.
+Files: src/testdir/test19.in, src/testdir/test38.in
+
+
+*** ../vim-7.1.322/src/testdir/test19.in Sun Jun 13 20:24:47 2004
+--- src/testdir/test19.in Mon Jun 16 19:45:10 2008
+***************
+*** 2,7 ****
+--- 2,9 ----
+
+ STARTTEST
+ :set smarttab expandtab ts=8 sw=4
++ :" make sure that backspace works, no matter what termcap is used
++ :set t_kD=\16x7f t_kb=\16x08
+ /some
+ r :set noexpandtab
+ /other
+*** ../vim-7.1.322/src/testdir/test38.in Sun Jun 13 20:28:25 2004
+--- src/testdir/test38.in Mon Jun 16 19:46:35 2008
+***************
+*** 3,8 ****
+--- 3,10 ----
+
+ STARTTEST
+ :so small.vim
++ :" make sure that backspace works, no matter what termcap is used
++ :set t_kD=\16x7f t_kb=\16x08
+ ggdGa
+ abcdefghi
+ jk lmn
+*** ../vim-7.1.322/src/version.c Fri Jun 20 17:30:45 2008
+--- src/version.c Fri Jun 20 17:48:17 2008
+***************
+*** 668,669 ****
+--- 673,676 ----
+ { /* Add new patch number below this line */
++ /**/
++ 323,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+53. To find out what time it is, you send yourself an e-mail and check the
+ "Date:" field.
+
+ /// 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.1.324
+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.1.324
+Problem: File name path length on Unix is limited to 1024.
+Solution: Use PATH_MAX when it's more than 1000.
+Files: src/os_unix.h
+
+
+*** ../vim-7.1.323/src/os_unix.h Tue Jul 10 17:09:51 2007
+--- src/os_unix.h Tue Jun 17 20:01:17 2008
+***************
+*** 432,438 ****
+ * Unix has plenty of memory, use large buffers
+ */
+ #define CMDBUFFSIZE 1024 /* size of the command processing buffer */
+! #define MAXPATHL 1024 /* Unix has long paths and plenty of memory */
+
+ #define CHECK_INODE /* used when checking if a swap file already
+ exists for a file */
+--- 432,444 ----
+ * Unix has plenty of memory, use large buffers
+ */
+ #define CMDBUFFSIZE 1024 /* size of the command processing buffer */
+!
+! /* Use the system path length if it makes sense. */
+! #if defined(PATH_MAX) && (PATH_MAX > 1000)
+! # define MAXPATHL PATH_MAX
+! #else
+! # define MAXPATHL 1024
+! #endif
+
+ #define CHECK_INODE /* used when checking if a swap file already
+ exists for a file */
+*** ../vim-7.1.323/src/version.c Fri Jun 20 17:52:47 2008
+--- src/version.c Fri Jun 20 18:04:25 2008
+***************
+*** 668,669 ****
+--- 673,676 ----
+ { /* Add new patch number below this line */
++ /**/
++ 324,
+ /**/
+
+--
+Q: What is a patch 22?
+A: A patch you need to include to make it possible to include patches.
+
+ /// 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.1.325
+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.1.325
+Problem: When editing a command line that's longer than available space in
+ the window, the characters at the end are in reverse order.
+Solution: Increment the insert position even when the command line doesn't
+ fit. (Ingo Karkat)
+Files: src/ex_getln.c
+
+
+*** ../vim-7.1.324/src/ex_getln.c Fri Jun 20 12:55:28 2008
+--- src/ex_getln.c Fri Jun 20 16:45:55 2008
+***************
+*** 2053,2062 ****
+ if (has_mbyte)
+ correct_cmdspos(i, c);
+ #endif
+! /* If the cmdline doesn't fit, put cursor on last visible char. */
+ if ((ccline.cmdspos += c) >= m)
+ {
+- ccline.cmdpos = i - 1;
+ ccline.cmdspos -= c;
+ break;
+ }
+--- 2053,2062 ----
+ if (has_mbyte)
+ correct_cmdspos(i, c);
+ #endif
+! /* If the cmdline doesn't fit, show cursor on last visible char.
+! * Don't move the cursor itself, so we can still append. */
+ if ((ccline.cmdspos += c) >= m)
+ {
+ ccline.cmdspos -= c;
+ break;
+ }
+***************
+*** 2829,2838 ****
+ if (has_mbyte)
+ correct_cmdspos(ccline.cmdpos, c);
+ #endif
+! /* Stop cursor at the end of the screen */
+! if (ccline.cmdspos + c >= m)
+! break;
+! ccline.cmdspos += c;
+ #ifdef FEAT_MBYTE
+ if (has_mbyte)
+ {
+--- 2829,2839 ----
+ if (has_mbyte)
+ correct_cmdspos(ccline.cmdpos, c);
+ #endif
+! /* Stop cursor at the end of the screen, but do increment the
+! * insert position, so that entering a very long command
+! * works, even though you can't see it. */
+! if (ccline.cmdspos + c < m)
+! ccline.cmdspos += c;
+ #ifdef FEAT_MBYTE
+ if (has_mbyte)
+ {
+***************
+*** 3332,3338 ****
+ /*
+ * Do wildcard expansion on the string 'str'.
+ * Chars that should not be expanded must be preceded with a backslash.
+! * Return a pointer to alloced memory containing the new string.
+ * Return NULL for failure.
+ *
+ * "orig" is the originally expanded string, copied to allocated memory. It
+--- 3333,3339 ----
+ /*
+ * Do wildcard expansion on the string 'str'.
+ * Chars that should not be expanded must be preceded with a backslash.
+! * Return a pointer to allocated memory containing the new string.
+ * Return NULL for failure.
+ *
+ * "orig" is the originally expanded string, copied to allocated memory. It
+***************
+*** 6111,6117 ****
+
+ exmode_active = save_exmode;
+
+! /* Safety check: The old window or buffer was deleted: It's a a bug when
+ * this happens! */
+ if (!win_valid(old_curwin) || !buf_valid(old_curbuf))
+ {
+--- 6112,6118 ----
+
+ exmode_active = save_exmode;
+
+! /* Safety check: The old window or buffer was deleted: It's a bug when
+ * this happens! */
+ if (!win_valid(old_curwin) || !buf_valid(old_curbuf))
+ {
+*** ../vim-7.1.324/src/version.c Fri Jun 20 18:06:15 2008
+--- src/version.c Fri Jun 20 18:27:54 2008
+***************
+*** 668,669 ****
+--- 673,676 ----
+ { /* Add new patch number below this line */
++ /**/
++ 325,
+ /**/
+
+--
+"I can't complain, but sometimes I still do." (Joe Walsh)
+
+ /// 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.1.326
+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.1.326
+Problem: ":s!from!to!" works, but ":smagic!from!to!" doesn't. It sees the
+ "!" as a flag to to the command. Same for ":snomagic". (Johan
+ Spetz)
+Solution: When checking for a forced command also ignore ":smagic" and
+ ":snomagic". (Ian Kelling)
+Files: src/ex_docmd.c
+
+
+*** ../vim-7.1.325/src/ex_docmd.c Fri Jun 20 11:10:53 2008
+--- src/ex_docmd.c Fri Jun 20 10:42:30 2008
+***************
+*** 2142,2148 ****
+
+ #endif
+
+! if (*p == '!' && ea.cmdidx != CMD_substitute) /* forced commands */
+ {
+ ++p;
+ ea.forceit = TRUE;
+--- 2142,2150 ----
+
+ #endif
+
+! /* forced commands */
+! if (*p == '!' && ea.cmdidx != CMD_substitute
+! && ea.cmdidx != CMD_smagic && ea.cmdidx != CMD_snomagic)
+ {
+ ++p;
+ ea.forceit = TRUE;
+*** ../vim-7.1.325/src/version.c Fri Jun 20 18:30:27 2008
+--- src/version.c Fri Jun 20 18:50:19 2008
+***************
+*** 668,669 ****
+--- 673,676 ----
+ { /* Add new patch number below this line */
++ /**/
++ 326,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+55. You ask your doctor to implant a gig in your brain.
+
+ /// 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 ///