--- /dev/null
+To: vim-dev@vim.org
+Subject: patch 7.1.001
+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.001
+Problem: Still can't build with Gnome libraries.
+Solution: Fix typo in bind_textdomain_codeset. (Mike Kelly)
+Files: src/gui_gtk.c, src/gui_gtk_x11.c
+
+
+*** ../vim-7.1.000/src/gui_gtk.c Thu May 10 20:27:29 2007
+--- src/gui_gtk.c Mon May 14 14:40:54 2007
+***************
+*** 53,60 ****
+ # ifdef bindtextdomain
+ # undef bindtextdomain
+ # endif
+! # ifdef bindtextdomain_codeset
+! # undef bindtextdomain_codeset
+ # endif
+ # if defined(FEAT_GETTEXT) && !defined(ENABLE_NLS)
+ # define ENABLE_NLS /* so the texts in the dialog boxes are translated */
+--- 53,60 ----
+ # ifdef bindtextdomain
+ # undef bindtextdomain
+ # endif
+! # ifdef bind_textdomain_codeset
+! # undef bind_textdomain_codeset
+ # endif
+ # if defined(FEAT_GETTEXT) && !defined(ENABLE_NLS)
+ # define ENABLE_NLS /* so the texts in the dialog boxes are translated */
+*** ../vim-7.1.000/src/gui_gtk_x11.c Thu May 10 21:17:51 2007
+--- src/gui_gtk_x11.c Mon May 14 14:41:06 2007
+***************
+*** 36,43 ****
+ # ifdef bindtextdomain
+ # undef bindtextdomain
+ # endif
+! # ifdef bindtextdomain_codeset
+! # undef bindtextdomain_codeset
+ # endif
+ # if defined(FEAT_GETTEXT) && !defined(ENABLE_NLS)
+ # define ENABLE_NLS /* so the texts in the dialog boxes are translated */
+--- 36,43 ----
+ # ifdef bindtextdomain
+ # undef bindtextdomain
+ # endif
+! # ifdef bind_textdomain_codeset
+! # undef bind_textdomain_codeset
+ # endif
+ # if defined(FEAT_GETTEXT) && !defined(ENABLE_NLS)
+ # define ENABLE_NLS /* so the texts in the dialog boxes are translated */
+*** ../vim-7.1.000/src/version.c Sat May 12 16:34:15 2007
+--- src/version.c Mon May 14 14:42:19 2007
+***************
+*** 668,669 ****
+--- 668,671 ----
+ { /* Add new patch number below this line */
++ /**/
++ 1,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+127. You bring your laptop and cellular phone to church.
+
+ /// 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.002
+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.002
+Problem: Oracle Pro*C/C++ files are not detected.
+Solution: Add the missing star. (Micah J. Cowan)
+Files: runtime/filetype.vim
+
+
+*** ../vim-7.1.001/runtime/filetype.vim Thu May 10 20:42:30 2007
+--- runtime/filetype.vim Tue May 15 09:12:06 2007
+***************
+*** 1,7 ****
+ " Vim support file to detect file types
+ "
+ " Maintainer: Bram Moolenaar <Bram@vim.org>
+! " Last Change: 2007 May 10
+
+ " Listen very carefully, I will say this only once
+ if exists("did_load_filetypes")
+--- 1,7 ----
+ " Vim support file to detect file types
+ "
+ " Maintainer: Bram Moolenaar <Bram@vim.org>
+! " Last Change: 2007 May 15
+
+ " Listen very carefully, I will say this only once
+ if exists("did_load_filetypes")
+***************
+*** 1286,1292 ****
+ au BufNewFile,BufRead *.it,*.ih setf ppwiz
+
+ " Oracle Pro*C/C++
+! au BufNewFile,BufRead .pc setf proc
+
+ " Privoxy actions file
+ au BufNewFile,BufRead *.action setf privoxy
+--- 1286,1292 ----
+ au BufNewFile,BufRead *.it,*.ih setf ppwiz
+
+ " Oracle Pro*C/C++
+! au BufNewFile,BufRead *.pc setf proc
+
+ " Privoxy actions file
+ au BufNewFile,BufRead *.action setf privoxy
+*** ../vim-7.1.001/src/version.c Mon May 14 19:35:51 2007
+--- src/version.c Tue May 15 09:13:11 2007
+***************
+*** 668,669 ****
+--- 668,671 ----
+ { /* Add new patch number below this line */
++ /**/
++ 2,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+132. You come back and check this list every half-hour.
+
+ /// 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.003 (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.003 (extra)
+Problem: The "Tear off this menu" message appears in the message history
+ when using a menu. (Yongwei Wu)
+Solution: Disable message history when displaying the menu tip.
+Files: src/gui_w32.c
+
+
+*** ../vim-7.1.002/src/gui_w32.c Thu May 10 22:17:22 2007
+--- src/gui_w32.c Sat Jun 9 13:43:07 2007
+***************
+*** 1051,1057 ****
+--- 1051,1059 ----
+ if (pMenu != NULL && pMenu->strings[MENU_INDEX_TIP] != 0
+ && GetMenuState(s_menuBar, pMenu->id, MF_BYCOMMAND) != -1)
+ {
++ ++msg_hist_off;
+ msg(pMenu->strings[MENU_INDEX_TIP]);
++ --msg_hist_off;
+ setcursor();
+ out_flush();
+ did_menu_tip = TRUE;
+*** ../vim-7.1.002/src/version.c Tue May 15 09:14:33 2007
+--- src/version.c Tue Jun 19 10:08:17 2007
+***************
+*** 668,669 ****
+--- 668,671 ----
+ { /* Add new patch number below this line */
++ /**/
++ 3,
+ /**/
+
+--
+In his lifetime van Gogh painted 486 oil paintings. Oddly enough, 8975
+of them are to be found in the United States.
+
+ /// 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.004
+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.004
+Problem: Crash when doing ":next directory". (Raphael Finkel)
+Solution: Do not use "buf", it may be invalid after autocommands.
+Files: src/ex_cmds.c
+
+
+*** ../vim-7.1.003/src/ex_cmds.c Thu May 10 21:24:24 2007
+--- src/ex_cmds.c Mon Jun 18 22:03:56 2007
+***************
+*** 3367,3373 ****
+ * was in this window (or another window). If not used
+ * before, reset the local window options to the global
+ * values. Also restores old folding stuff. */
+! get_winopts(buf);
+ #ifdef FEAT_SPELL
+ did_get_winopts = TRUE;
+ #endif
+--- 3367,3373 ----
+ * was in this window (or another window). If not used
+ * before, reset the local window options to the global
+ * values. Also restores old folding stuff. */
+! get_winopts(curbuf);
+ #ifdef FEAT_SPELL
+ did_get_winopts = TRUE;
+ #endif
+***************
+*** 3649,3656 ****
+ #ifdef FEAT_SPELL
+ /* If the window options were changed may need to set the spell language.
+ * Can only do this after the buffer has been properly setup. */
+! if (did_get_winopts && curwin->w_p_spell && *buf->b_p_spl != NUL)
+! did_set_spelllang(buf);
+ #endif
+
+ if (command == NULL)
+--- 3649,3656 ----
+ #ifdef FEAT_SPELL
+ /* If the window options were changed may need to set the spell language.
+ * Can only do this after the buffer has been properly setup. */
+! if (did_get_winopts && curwin->w_p_spell && *curbuf->b_p_spl != NUL)
+! did_set_spelllang(curbuf);
+ #endif
+
+ if (command == NULL)
+*** ../vim-7.1.003/src/version.c Tue Jun 19 10:09:15 2007
+--- src/version.c Tue Jun 19 11:53:34 2007
+***************
+*** 668,669 ****
+--- 668,671 ----
+ { /* Add new patch number below this line */
++ /**/
++ 4,
+ /**/
+
+--
+FIRST HEAD: Oh! quick! get the sword out I want to cut his head off.
+THIRD HEAD: Oh, cut your own head off.
+SECOND HEAD: Yes - do us all a favour.
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// 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.005
+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.005
+Problem: "cit" used on <foo></foo> deletes <foo>. Should not delete
+ anything and start insertion, like "ci'" does on "". (Michal
+ Bozon)
+Solution: Handle an empty object specifically. Made it work consistent for
+ various text objects.
+Files: src/search.c
+
+
+*** ../vim-7.1.004/src/search.c Thu May 10 20:54:46 2007
+--- src/search.c Mon Jun 4 12:31:04 2007
+***************
+*** 3600,3612 ****
+ {
+ oap->start = start_pos;
+ oap->motion_type = MCHAR;
+ if (sol)
+- {
+ incl(&curwin->w_cursor);
+! oap->inclusive = FALSE;
+! }
+! else
+ oap->inclusive = TRUE;
+ }
+
+ return OK;
+--- 3600,3615 ----
+ {
+ oap->start = start_pos;
+ oap->motion_type = MCHAR;
++ oap->inclusive = FALSE;
+ if (sol)
+ incl(&curwin->w_cursor);
+! else if (lt(start_pos, curwin->w_cursor))
+! /* Include the character under the cursor. */
+ oap->inclusive = TRUE;
++ else
++ /* End is before the start (no text in between <>, [], etc.): don't
++ * operate on any text. */
++ curwin->w_cursor = start_pos;
+ }
+
+ return OK;
+***************
+*** 3734,3740 ****
+
+ if (in_html_tag(FALSE))
+ {
+! /* cursor on start tag, move to just after it */
+ while (*ml_get_cursor() != '>')
+ if (inc_cursor() < 0)
+ break;
+--- 3737,3743 ----
+
+ if (in_html_tag(FALSE))
+ {
+! /* cursor on start tag, move to its '>' */
+ while (*ml_get_cursor() != '>')
+ if (inc_cursor() < 0)
+ break;
+***************
+*** 3838,3844 ****
+ /* Exclude the start tag. */
+ curwin->w_cursor = start_pos;
+ while (inc_cursor() >= 0)
+! if (*ml_get_cursor() == '>' && lt(curwin->w_cursor, end_pos))
+ {
+ inc_cursor();
+ start_pos = curwin->w_cursor;
+--- 3841,3847 ----
+ /* Exclude the start tag. */
+ curwin->w_cursor = start_pos;
+ while (inc_cursor() >= 0)
+! if (*ml_get_cursor() == '>')
+ {
+ inc_cursor();
+ start_pos = curwin->w_cursor;
+***************
+*** 3860,3866 ****
+ #ifdef FEAT_VISUAL
+ if (VIsual_active)
+ {
+! if (*p_sel == 'e')
+ ++curwin->w_cursor.col;
+ VIsual = start_pos;
+ VIsual_mode = 'v';
+--- 3863,3873 ----
+ #ifdef FEAT_VISUAL
+ if (VIsual_active)
+ {
+! /* If the end is before the start there is no text between tags, select
+! * the char under the cursor. */
+! if (lt(end_pos, start_pos))
+! curwin->w_cursor = start_pos;
+! else if (*p_sel == 'e')
+ ++curwin->w_cursor.col;
+ VIsual = start_pos;
+ VIsual_mode = 'v';
+***************
+*** 3872,3878 ****
+ {
+ oap->start = start_pos;
+ oap->motion_type = MCHAR;
+! oap->inclusive = TRUE;
+ }
+ retval = OK;
+
+--- 3879,3893 ----
+ {
+ oap->start = start_pos;
+ oap->motion_type = MCHAR;
+! if (lt(end_pos, start_pos))
+! {
+! /* End is before the start: there is no text between tags; operate
+! * on an empty area. */
+! curwin->w_cursor = start_pos;
+! oap->inclusive = FALSE;
+! }
+! else
+! oap->inclusive = TRUE;
+ }
+ retval = OK;
+
+*** ../vim-7.1.004/src/version.c Tue Jun 19 11:54:23 2007
+--- src/version.c Tue Jun 19 12:57:03 2007
+***************
+*** 668,669 ****
+--- 668,671 ----
+ { /* Add new patch number below this line */
++ /**/
++ 5,
+ /**/
+
+--
+Life would be so much easier if we could just look at the source code.
+
+ /// 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.006
+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.006
+Problem: Resetting 'modified' in a StdinReadPost autocommand doesn't work.
+Solution: Set 'modified' before the autocommands instead of after it.
+Files: src/buffer.c
+
+
+*** ../vim-7.1.005/src/buffer.c Thu May 10 18:43:46 2007
+--- src/buffer.c Fri Jun 8 20:59:04 2007
+***************
+*** 171,176 ****
+--- 171,183 ----
+ /* Put the cursor on the first line. */
+ curwin->w_cursor.lnum = 1;
+ curwin->w_cursor.col = 0;
++
++ /* Set or reset 'modified' before executing autocommands, so that
++ * it can be changed there. */
++ if (!readonlymode && !bufempty())
++ changed();
++ else if (retval != FAIL)
++ unchanged(curbuf, FALSE);
+ #ifdef FEAT_AUTOCMD
+ # ifdef FEAT_EVAL
+ apply_autocmds_retval(EVENT_STDINREADPOST, NULL, NULL, FALSE,
+***************
+*** 194,209 ****
+ /* When reading stdin, the buffer contents always needs writing, so set
+ * the changed flag. Unless in readonly mode: "ls | gview -".
+ * When interrupted and 'cpoptions' contains 'i' set changed flag. */
+! if ((read_stdin && !readonlymode && !bufempty())
+ #ifdef FEAT_AUTOCMD
+ || modified_was_set /* ":set modified" used in autocmd */
+ # ifdef FEAT_EVAL
+ || (aborting() && vim_strchr(p_cpo, CPO_INTMOD) != NULL)
+ # endif
+ #endif
+! || (got_int && vim_strchr(p_cpo, CPO_INTMOD) != NULL))
+ changed();
+! else if (retval != FAIL)
+ unchanged(curbuf, FALSE);
+ save_file_ff(curbuf); /* keep this fileformat */
+
+--- 201,216 ----
+ /* When reading stdin, the buffer contents always needs writing, so set
+ * the changed flag. Unless in readonly mode: "ls | gview -".
+ * When interrupted and 'cpoptions' contains 'i' set changed flag. */
+! if ((got_int && vim_strchr(p_cpo, CPO_INTMOD) != NULL)
+ #ifdef FEAT_AUTOCMD
+ || modified_was_set /* ":set modified" used in autocmd */
+ # ifdef FEAT_EVAL
+ || (aborting() && vim_strchr(p_cpo, CPO_INTMOD) != NULL)
+ # endif
+ #endif
+! )
+ changed();
+! else if (retval != FAIL && !read_stdin)
+ unchanged(curbuf, FALSE);
+ save_file_ff(curbuf); /* keep this fileformat */
+
+*** ../vim-7.1.005/src/version.c Tue Jun 19 12:58:55 2007
+--- src/version.c Tue Jun 19 15:37:53 2007
+***************
+*** 668,669 ****
+--- 668,671 ----
+ { /* Add new patch number below this line */
++ /**/
++ 6,
+ /**/
+
+--
+If I tell you "you have a beautiful body", would you hold it against me?
+
+ /// 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.007 (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.007 (extra)
+Problem: Mac: Context menu doesn't work on Intel Macs.
+ Scrollbars are not dimmed when Vim is not the active application.
+Solution: Remove the test whether context menus are supported. They are
+ always there in OS/X. Handle the dimming. (Nicolas Weber)
+Files: src/gui_mac.c, src/gui.h
+
+
+*** ../vim-7.1.006/src/gui_mac.c Thu May 10 20:07:25 2007
+--- src/gui_mac.c Sat Jun 9 14:19:25 2007
+***************
+*** 1676,1688 ****
+ /* TODO: NEEDED? */
+ clickIsPopup = FALSE;
+
+! if ((gui.MacOSHaveCntxMenu) && (mouse_model_popup()))
+! if (IsShowContextualMenuClick(theEvent))
+! {
+! vimMouseButton = MOUSE_RIGHT;
+! vimModifiers &= ~MOUSE_CTRL;
+! clickIsPopup = TRUE;
+! }
+
+ /* Is it a double click ? */
+ dblClick = ((theEvent->when - lastMouseTick) < GetDblTime());
+--- 1676,1687 ----
+ /* TODO: NEEDED? */
+ clickIsPopup = FALSE;
+
+! if (mouse_model_popup() && IsShowContextualMenuClick(theEvent))
+! {
+! vimMouseButton = MOUSE_RIGHT;
+! vimModifiers &= ~MOUSE_CTRL;
+! clickIsPopup = TRUE;
+! }
+
+ /* Is it a double click ? */
+ dblClick = ((theEvent->when - lastMouseTick) < GetDblTime());
+***************
+*** 1920,1943 ****
+ WindowPtr whichWindow;
+
+ whichWindow = (WindowPtr) event->message;
+! if ((event->modifiers) & activeFlag)
+! /* Activate */
+! gui_focus_change(TRUE);
+! else
+ {
+! /* Deactivate */
+! gui_focus_change(FALSE);
+! /* DON'T KNOW what the code below was doing
+! found in the deactivate clause, but the
+! clause writing TRUE into in_focus (BUG)
+! */
+!
+! #if 0 /* Removed by Dany as per above June 2001 */
+! a_bool = false;
+! SetPreserveGlyph(a_bool);
+! SetOutlinePreferred(a_bool);
+! #endif
+ }
+ }
+
+
+--- 1919,1937 ----
+ WindowPtr whichWindow;
+
+ whichWindow = (WindowPtr) event->message;
+! /* Dim scrollbars */
+! if (whichWindow == gui.VimWindow)
+ {
+! ControlRef rootControl;
+! GetRootControl(gui.VimWindow, &rootControl);
+! if ((event->modifiers) & activeFlag)
+! ActivateControl(rootControl);
+! else
+! DeactivateControl(rootControl);
+ }
++
++ /* Activate */
++ gui_focus_change((event->modifiers) & activeFlag);
+ }
+
+
+***************
+*** 2559,2574 ****
+ OSErr error;
+
+ /* Handle contextual menu right now (if needed) */
+! if (gui.MacOSHaveCntxMenu)
+! if (IsShowContextualMenuClick(event))
+! {
+ # if 0
+! gui_mac_handle_contextual_menu(event);
+ # else
+! gui_mac_doMouseDownEvent(event);
+ # endif
+! return;
+! }
+
+ /* Handle normal event */
+ switch (event->what)
+--- 2553,2567 ----
+ OSErr error;
+
+ /* Handle contextual menu right now (if needed) */
+! if (IsShowContextualMenuClick(event))
+! {
+ # if 0
+! gui_mac_handle_contextual_menu(event);
+ # else
+! gui_mac_doMouseDownEvent(event);
+ # endif
+! return;
+! }
+
+ /* Handle normal event */
+ switch (event->what)
+***************
+*** 2782,2795 ****
+ (void) InstallAEHandlers();
+ #endif
+
+- if (Gestalt(gestaltContextualMenuAttr, &gestalt_rc) == noErr)
+- gui.MacOSHaveCntxMenu = BitTst(&gestalt_rc, 31-gestaltContextualMenuTrapAvailable);
+- else
+- gui.MacOSHaveCntxMenu = false;
+-
+- if (gui.MacOSHaveCntxMenu)
+- gui.MacOSHaveCntxMenu = (InitContextualMenus()==noErr);
+-
+ pomme = NewMenu(256, "\p\024"); /* 0x14= = Apple Menu */
+
+ AppendMenu(pomme, "\pAbout VIM");
+--- 2775,2780 ----
+***************
+*** 2941,2946 ****
+--- 2926,2932 ----
+ #ifdef USE_CARBONKEYHANDLER
+ EventHandlerRef keyEventHandlerRef;
+ #endif
++ ControlRef rootControl;
+
+ if (Gestalt(gestaltSystemVersion, &gMacSystemVersion) != noErr)
+ gMacSystemVersion = 0x1000; /* TODO: Default to minimum sensible value */
+***************
+*** 2954,2968 ****
+ (void) InstallAEHandlers();
+ #endif
+
+- /* Ctrl click */
+- if (Gestalt(gestaltContextualMenuAttr, &gestalt_rc) == noErr)
+- gui.MacOSHaveCntxMenu = BitTst(&gestalt_rc, 31-gestaltContextualMenuTrapAvailable);
+- else
+- gui.MacOSHaveCntxMenu = false;
+-
+- if (gui.MacOSHaveCntxMenu)
+- gui.MacOSHaveCntxMenu = (InitContextualMenus()==noErr);
+-
+ pomme = NewMenu(256, "\p\024"); /* 0x14= = Apple Menu */
+
+ AppendMenu(pomme, "\pAbout VIM");
+--- 2940,2945 ----
+***************
+*** 2981,2986 ****
+--- 2958,2964 ----
+ gui.VimWindow = NewCWindow(nil, &windRect, "\pgVim on Macintosh", true,
+ zoomDocProc,
+ (WindowPtr)-1L, true, 0);
++ CreateRootControl(gui.VimWindow, &rootControl);
+ InstallReceiveHandler((DragReceiveHandlerUPP)receiveHandler,
+ gui.VimWindow, NULL);
+ SetPortWindowPort(gui.VimWindow);
+*** ../vim-7.1.006/src/gui.h Thu May 10 19:18:46 2007
+--- src/gui.h Sat Jun 9 14:10:34 2007
+***************
+*** 460,466 ****
+ WindowPtr VimWindow;
+ MenuHandle MacOSHelpMenu; /* Help menu provided by the MacOS */
+ int MacOSHelpItems; /* Nr of help-items supplied by MacOS */
+- int MacOSHaveCntxMenu; /* Contextual menu available */
+ WindowPtr wid; /* Window id of text area */
+ int visibility; /* Is window partially/fully obscured? */
+ #endif
+--- 460,465 ----
+*** ../vim-7.1.006/src/version.c Tue Jun 19 15:40:51 2007
+--- src/version.c Tue Jun 19 15:44:15 2007
+***************
+*** 668,669 ****
+--- 668,671 ----
+ { /* Add new patch number below this line */
++ /**/
++ 7,
+ /**/
+
+--
+ When danger reared its ugly head,
+ He bravely turned his tail and fled
+ Yes, Brave Sir Robin turned about
+ And gallantly he chickened out
+ Bravely taking to his feet
+ He beat a very brave retreat
+ Bravest of the brave Sir Robin
+ Petrified of being dead
+ Soiled his pants then brave Sir Robin
+ Turned away and fled.
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// 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.008 (correction
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Oops, forgot the src/version.c change.
+
+Patch 7.1.008
+Problem: getfsize() returns a negative number for very big files.
+Solution: Check for overflow and return -2.
+Files: runtime/doc/eval.txt, src/eval.c
+
+
+*** ../vim-7.1.007/runtime/doc/eval.txt Sat May 12 16:38:23 2007
+--- runtime/doc/eval.txt Sat Jun 9 15:48:40 2007
+***************
+*** 1,4 ****
+! *eval.txt* For Vim version 7.1. Last change: 2007 May 11
+
+
+ VIM REFERENCE MANUAL by Bram Moolenaar
+--- 1,4 ----
+! *eval.txt* For Vim version 7.1. Last change: 2007 Jun 09
+
+
+ VIM REFERENCE MANUAL by Bram Moolenaar
+***************
+*** 2824,2829 ****
+--- 2824,2831 ----
+ given file {fname}.
+ If {fname} is a directory, 0 is returned.
+ If the file {fname} can't be found, -1 is returned.
++ If the size of {fname} is too big to fit in a Number then -2
++ is returned.
+
+ getfontname([{name}]) *getfontname()*
+ Without an argument returns the name of the normal font being
+*** ../vim-7.1.007/src/eval.c Thu May 10 21:30:00 2007
+--- src/eval.c Sat Jun 9 15:46:46 2007
+***************
+*** 10136,10142 ****
+--- 10136,10148 ----
+ if (mch_isdir(fname))
+ rettv->vval.v_number = 0;
+ else
++ {
+ rettv->vval.v_number = (varnumber_T)st.st_size;
++
++ /* non-perfect check for overflow */
++ if ((off_t)rettv->vval.v_number != (off_t)st.st_size)
++ rettv->vval.v_number = -2;
++ }
+ }
+ else
+ rettv->vval.v_number = -1;
+*** ../vim-7.1.007/src/version.c Tue Jun 19 16:33:53 2007
+--- src/version.c Tue Jun 19 17:30:50 2007
+***************
+*** 668,669 ****
+--- 668,671 ----
+ { /* Add new patch number below this line */
++ /**/
++ 8,
+ /**/
+
+
+--
+ZOOT: I'm afraid our life must seem very dull and quiet compared to yours.
+ We are but eightscore young blondes, all between sixteen and
+ nineteen-and-a-half, cut off in this castle, with no one to protect us.
+ Oooh. It is a lonely life ... bathing ... dressing ... undressing ...
+ making exciting underwear....
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// 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.009
+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.009
+Problem: In diff mode, displaying the difference between a tab and spaces
+ is not highlighted correctly.
+Solution: Only change highlighting at the end of displaying a tab.
+Files: src/screen.c
+
+
+*** ../vim-7.1.008/src/screen.c Thu May 10 20:15:31 2007
+--- src/screen.c Mon Jun 11 21:49:44 2007
+***************
+*** 3459,3467 ****
+ #ifdef FEAT_DIFF
+ if (diff_hlf != (hlf_T)0)
+ {
+! if (diff_hlf == HLF_CHD && ptr - line >= change_start)
+ diff_hlf = HLF_TXD; /* changed text */
+! if (diff_hlf == HLF_TXD && ptr - line > change_end)
+ diff_hlf = HLF_CHD; /* changed line */
+ line_attr = hl_attr(diff_hlf);
+ }
+--- 3459,3469 ----
+ #ifdef FEAT_DIFF
+ if (diff_hlf != (hlf_T)0)
+ {
+! if (diff_hlf == HLF_CHD && ptr - line >= change_start
+! && n_extra == 0)
+ diff_hlf = HLF_TXD; /* changed text */
+! if (diff_hlf == HLF_TXD && ptr - line > change_end
+! && n_extra == 0)
+ diff_hlf = HLF_CHD; /* changed line */
+ line_attr = hl_attr(diff_hlf);
+ }
+*** ../vim-7.1.008/src/version.c Tue Jun 19 17:33:52 2007
+--- src/version.c Tue Jun 19 17:36:36 2007
+***************
+*** 668,669 ****
+--- 668,671 ----
+ { /* Add new patch number below this line */
++ /**/
++ 9,
+ /**/
+
+--
+Linux is just like a wigwam: no Windows, no Gates and an Apache inside.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
--- /dev/null
+To: vim-dev@vim.org
+Subject: patch 7.1.010
+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.010
+Problem: The Gnome session file doesn't restore tab pages.
+Solution: Add SSOP_TABPAGES to the session flags. (Matias D'Ambrosio)
+Files: src/gui_gtk_x11.c
+
+
+*** ../vim-7.1.009/src/gui_gtk_x11.c Mon May 14 19:35:51 2007
+--- src/gui_gtk_x11.c Sat Jun 9 16:54:13 2007
+***************
+*** 2188,2195 ****
+ escaped_filename = vim_strsave_escaped(filename, escape_chars);
+ if (escaped_filename == NULL)
+ return FALSE;
+! mksession_cmdline = g_strconcat("mksession ", (char *)escaped_filename, NULL);
+ vim_free(escaped_filename);
+ /*
+ * Use a reasonable hardcoded set of 'sessionoptions' flags to avoid
+ * unpredictable effects when the session is saved automatically. Also,
+--- 2188,2197 ----
+ escaped_filename = vim_strsave_escaped(filename, escape_chars);
+ if (escaped_filename == NULL)
+ return FALSE;
+! mksession_cmdline = g_strconcat("mksession ", (char *)escaped_filename,
+! NULL);
+ vim_free(escaped_filename);
++
+ /*
+ * Use a reasonable hardcoded set of 'sessionoptions' flags to avoid
+ * unpredictable effects when the session is saved automatically. Also,
+***************
+*** 2199,2205 ****
+ */
+ save_ssop_flags = ssop_flags;
+ ssop_flags = (SSOP_BLANK|SSOP_CURDIR|SSOP_FOLDS|SSOP_GLOBALS
+! |SSOP_HELP|SSOP_OPTIONS|SSOP_WINSIZE);
+
+ do_cmdline_cmd((char_u *)"let Save_VV_this_session = v:this_session");
+ failed = (do_cmdline_cmd((char_u *)mksession_cmdline) == FAIL);
+--- 2201,2207 ----
+ */
+ save_ssop_flags = ssop_flags;
+ ssop_flags = (SSOP_BLANK|SSOP_CURDIR|SSOP_FOLDS|SSOP_GLOBALS
+! |SSOP_HELP|SSOP_OPTIONS|SSOP_WINSIZE|SSOP_TABPAGES);
+
+ do_cmdline_cmd((char_u *)"let Save_VV_this_session = v:this_session");
+ failed = (do_cmdline_cmd((char_u *)mksession_cmdline) == FAIL);
+*** ../vim-7.1.009/src/version.c Tue Jun 19 17:49:12 2007
+--- src/version.c Tue Jun 19 18:07:09 2007
+***************
+*** 668,669 ****
+--- 668,671 ----
+ { /* Add new patch number below this line */
++ /**/
++ 10,
+ /**/
+
+--
+GALAHAD: No look, really, this isn't nescess ...
+PIGLET: We must examine you.
+GALAHAD: There's nothing wrong with ... that.
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// 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.011
+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.011
+Problem: Possible buffer overflow when $VIMRUNTIME is very long. (Victor
+ Stinner)
+Solution: Use vim_snprintf().
+Files: src/main.c
+
+
+*** ../vim-7.1.010/src/main.c Thu May 10 21:12:25 2007
+--- src/main.c Sat Jun 9 22:37:46 2007
+***************
+*** 1360,1367 ****
+ p = vim_getenv((char_u *)"VIMRUNTIME", &mustfree);
+ if (p != NULL && *p != NUL)
+ {
+! STRCPY(NameBuff, p);
+! STRCAT(NameBuff, "/lang");
+ bindtextdomain(VIMPACKAGE, (char *)NameBuff);
+ }
+ if (mustfree)
+--- 1360,1366 ----
+ p = vim_getenv((char_u *)"VIMRUNTIME", &mustfree);
+ if (p != NULL && *p != NUL)
+ {
+! vim_snprintf((char *)NameBuff, MAXPATHL, "%s/lang", p);
+ bindtextdomain(VIMPACKAGE, (char *)NameBuff);
+ }
+ if (mustfree)
+*** ../vim-7.1.010/src/version.c Tue Jun 19 18:07:52 2007
+--- src/version.c Tue Jun 19 20:29:44 2007
+***************
+*** 668,669 ****
+--- 668,671 ----
+ { /* Add new patch number below this line */
++ /**/
++ 11,
+ /**/
+
+--
+ GALAHAD hurries to the door and pushes through it. As he leaves the room
+ we CUT TO the reverse to show that he is now in a room full of bathing
+ and romping GIRLIES, all innocent, wide-eyed and beautiful. They smile
+ enchantingly at him as he tries to keep walking without being diverted by
+ the lovely sights assaulting his eyeballs.
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// 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.012
+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.012
+Problem: ":let &shiftwidth = 'asdf'" doesn't produce an error message.
+Solution: Check for a string argument. (Chris Lubinski)
+Files: src/option.c
+
+
+*** ../vim-7.1.011/src/option.c Sun May 6 15:37:32 2007
+--- src/option.c Tue Jun 19 20:56:36 2007
+***************
+*** 8219,8224 ****
+--- 8219,8243 ----
+ varp = get_varp(&options[opt_idx]);
+ if (varp != NULL) /* hidden option is not changed */
+ {
++ if (number == 0 && string != NULL)
++ {
++ int index;
++
++ /* Either we are given a string or we are setting option
++ * to zero. */
++ for (index = 0; string[index] == '0'; ++index)
++ ;
++ if (string[index] != NUL || index == 0)
++ {
++ /* There's another character after zeros or the string
++ * is empty. In both cases, we are trying to set a
++ * num option using a string. */
++ EMSG3(_("E521: Number required: &%s = '%s'"),
++ name, string);
++ return; /* do nothing as we hit an error */
++
++ }
++ }
+ if (flags & P_NUM)
+ (void)set_num_option(opt_idx, varp, number,
+ NULL, 0, opt_flags);
+*** ../vim-7.1.011/src/version.c Tue Jun 19 20:30:46 2007
+--- src/version.c Tue Jun 19 20:53:15 2007
+***************
+*** 668,669 ****
+--- 668,671 ----
+ { /* Add new patch number below this line */
++ /**/
++ 12,
+ /**/
+
+--
+Ten million Linux users can't be wrong!
+
+ /// 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.013
+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.013
+Problem: ":syn include" only loads the first file, while it is documented
+ as doing the equivalent of ":runtime!".
+Solution: Change the argument to source_runtime(). (James Vega)
+Files: src/syntax.c
+
+
+*** ../vim-7.1.012/src/syntax.c Thu May 10 20:54:33 2007
+--- src/syntax.c Sun Jun 17 22:03:30 2007
+***************
+*** 4460,4467 ****
+ current_syn_inc_tag = ++running_syn_inc_tag;
+ prev_toplvl_grp = curbuf->b_syn_topgrp;
+ curbuf->b_syn_topgrp = sgl_id;
+! if (source ? do_source(eap->arg, FALSE, FALSE) == FAIL
+! : source_runtime(eap->arg, DOSO_NONE) == FAIL)
+ EMSG2(_(e_notopen), eap->arg);
+ curbuf->b_syn_topgrp = prev_toplvl_grp;
+ current_syn_inc_tag = prev_syn_inc_tag;
+--- 4460,4467 ----
+ current_syn_inc_tag = ++running_syn_inc_tag;
+ prev_toplvl_grp = curbuf->b_syn_topgrp;
+ curbuf->b_syn_topgrp = sgl_id;
+! if (source ? do_source(eap->arg, FALSE, DOSO_NONE) == FAIL
+! : source_runtime(eap->arg, TRUE) == FAIL)
+ EMSG2(_(e_notopen), eap->arg);
+ curbuf->b_syn_topgrp = prev_toplvl_grp;
+ current_syn_inc_tag = prev_syn_inc_tag;
+*** ../vim-7.1.012/src/version.c Tue Jun 19 20:56:52 2007
+--- src/version.c Thu Jun 28 11:58:25 2007
+***************
+*** 668,669 ****
+--- 668,671 ----
+ { /* Add new patch number below this line */
++ /**/
++ 13,
+ /**/
+
+--
+MORTICIAN: What?
+CUSTOMER: Nothing -- here's your nine pence.
+DEAD PERSON: I'm not dead!
+MORTICIAN: Here -- he says he's not dead!
+CUSTOMER: Yes, he is.
+DEAD PERSON: I'm not!
+ The Quest for the Holy Grail (Monty Python)
+
+ /// 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.014
+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.014
+Problem: Crash when doing C indenting. (Chris Monson)
+Solution: Obtain the current line again after invoking cin_islabel().
+Files: src/edit.c
+
+
+*** ../vim-7.1.013/src/edit.c Thu May 10 20:44:18 2007
+--- src/edit.c Wed Jun 20 18:25:54 2007
+***************
+*** 7215,7220 ****
+--- 7215,7222 ----
+ p = ml_get_curline();
+ if (cin_iscase(p) || cin_isscopedecl(p) || cin_islabel(30))
+ return TRUE;
++ /* Need to get the line again after cin_islabel(). */
++ p = ml_get_curline();
+ if (curwin->w_cursor.col > 2
+ && p[curwin->w_cursor.col - 1] == ':'
+ && p[curwin->w_cursor.col - 2] == ':')
+*** ../vim-7.1.013/src/version.c Thu Jun 28 11:59:13 2007
+--- src/version.c Thu Jun 28 12:26:52 2007
+***************
+*** 668,669 ****
+--- 668,671 ----
+ { /* Add new patch number below this line */
++ /**/
++ 14,
+ /**/
+
+--
+Have you heard about the new Barbie doll? It's called Divorce
+Barbie. It comes with all of Ken's stuff.
+
+ /// 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.015
+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.015
+Problem: MzScheme interface: current-library-collection-paths produces no
+ list. Interface doesn't build on a Mac.
+Solution: Use a list instead of a pair. (Bernhard Fisseni) Use "-framework"
+ argument for MZSCHEME_LIBS in configure.
+Files: src/configure.in, src/if_mzsch.c, src/auto/configure
+
+
+*** ../vim-7.1.014/src/configure.in Sat May 12 16:30:49 2007
+--- src/configure.in Sun Jun 10 16:47:43 2007
+***************
+*** 423,429 ****
+ fi
+
+ if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
+! if test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"; then
+ MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a ${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"
+ else
+ MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme -lmzgc"
+--- 423,431 ----
+ fi
+
+ if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
+! if test "x$MACOSX" = "xyes"; then
+! MZSCHEME_LIBS="-framework PLT_MzScheme"
+! elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"; then
+ MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a ${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"
+ else
+ MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme -lmzgc"
+*** ../vim-7.1.014/src/if_mzsch.c Sat May 12 17:29:20 2007
+--- src/if_mzsch.c Sun Jun 10 16:39:51 2007
+***************
+*** 773,780 ****
+ #ifdef MZSCHEME_COLLECTS
+ /* setup 'current-library-collection-paths' parameter */
+ scheme_set_param(scheme_config, MZCONFIG_COLLECTION_PATHS,
+! scheme_make_pair(scheme_make_string(MZSCHEME_COLLECTS),
+! scheme_null));
+ #endif
+ #ifdef HAVE_SANDBOX
+ /* setup sandbox guards */
+--- 773,779 ----
+ #ifdef MZSCHEME_COLLECTS
+ /* setup 'current-library-collection-paths' parameter */
+ scheme_set_param(scheme_config, MZCONFIG_COLLECTION_PATHS,
+! scheme_build_list(0, scheme_make_string(MZSCHEME_COLLECTS)));
+ #endif
+ #ifdef HAVE_SANDBOX
+ /* setup sandbox guards */
+*** ../vim-7.1.014/src/auto/configure Sat May 12 16:23:27 2007
+--- src/auto/configure Sun Jun 10 16:49:58 2007
+***************
+*** 3843,3849 ****
+ fi
+
+ if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
+! if test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"; then
+ MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a ${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"
+ else
+ MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme -lmzgc"
+--- 3843,3851 ----
+ fi
+
+ if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
+! if test "x$MACOSX" = "xyes"; then
+! MZSCHEME_LIBS="-framework PLT_MzScheme"
+! elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"; then
+ MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a ${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"
+ else
+ MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme -lmzgc"
+*** ../vim-7.1.014/src/version.c Thu Jun 28 12:44:56 2007
+--- src/version.c Thu Jun 28 13:00:52 2007
+***************
+*** 668,669 ****
+--- 668,671 ----
+ { /* Add new patch number below this line */
++ /**/
++ 15,
+ /**/
+
+--
+You know you use Vim too much when you have this alias in your
+~/.bashrc file: alias :e=/bin/vim (Eljay Love-Jensen)
+
+ /// 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.016
+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.016 (after patch 7.1.012)
+Problem: Error message about setting 'diff' to a string.
+Solution: Don't pass an empty string to set_option_value() when setting
+ 'diff'.
+Files: src/quickfix.c, src/popupmnu.c
+
+
+*** ../vim-7.1.015/src/quickfix.c Sun Feb 4 02:58:00 2007
+--- src/quickfix.c Thu Jun 28 18:56:16 2007
+***************
+*** 2331,2337 ****
+ set_option_value((char_u *)"bt", 0L, (char_u *)"quickfix",
+ OPT_LOCAL);
+ set_option_value((char_u *)"bh", 0L, (char_u *)"wipe", OPT_LOCAL);
+! set_option_value((char_u *)"diff", 0L, (char_u *)"", OPT_LOCAL);
+ }
+
+ /* Only set the height when still in the same tab page and there is no
+--- 2331,2337 ----
+ set_option_value((char_u *)"bt", 0L, (char_u *)"quickfix",
+ OPT_LOCAL);
+ set_option_value((char_u *)"bh", 0L, (char_u *)"wipe", OPT_LOCAL);
+! set_option_value((char_u *)"diff", 0L, NULL, OPT_LOCAL);
+ }
+
+ /* Only set the height when still in the same tab page and there is no
+*** ../vim-7.1.015/src/popupmnu.c Tue Mar 27 12:42:05 2007
+--- src/popupmnu.c Thu Jun 28 19:00:51 2007
+***************
+*** 466,472 ****
+ set_option_value((char_u *)"bh", 0L,
+ (char_u *)"wipe", OPT_LOCAL);
+ set_option_value((char_u *)"diff", 0L,
+! (char_u *)"", OPT_LOCAL);
+ }
+ }
+ if (res == OK)
+--- 466,472 ----
+ set_option_value((char_u *)"bh", 0L,
+ (char_u *)"wipe", OPT_LOCAL);
+ set_option_value((char_u *)"diff", 0L,
+! NULL, OPT_LOCAL);
+ }
+ }
+ if (res == OK)
+*** ../vim-7.1.015/src/version.c Thu Jun 28 13:02:22 2007
+--- src/version.c Thu Jun 28 21:20:20 2007
+***************
+*** 668,669 ****
+--- 668,671 ----
+ { /* Add new patch number below this line */
++ /**/
++ 16,
+ /**/
+
+--
+We do not stumble over mountains, but over molehills.
+ Confucius
+
+ /// 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.017
+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.017
+Problem: ":confirm w" does give a prompt when 'readonly' is set, but not
+ when the file permissions are read-only. (Michael Schaap)
+Solution: Provide a dialog in both situations. (Chris Lubinski)
+Files: src/ex_cmds.c, src/fileio.c, src/proto/fileio.pro
+
+
+*** ../vim-7.1.016/src/ex_cmds.c Tue Jun 19 11:54:23 2007
+--- src/ex_cmds.c Tue Jun 19 22:37:25 2007
+***************
+*** 2912,2933 ****
+ }
+
+ /*
+! * Check if a buffer is read-only. Ask for overruling in a dialog.
+! * Return TRUE and give an error message when the buffer is readonly.
+ */
+ static int
+ check_readonly(forceit, buf)
+ int *forceit;
+ buf_T *buf;
+ {
+! if (!*forceit && buf->b_p_ro)
+ {
+ #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG)
+ if ((p_confirm || cmdmod.confirm) && buf->b_fname != NULL)
+ {
+ char_u buff[IOSIZE];
+
+! dialog_msg(buff, _("'readonly' option is set for \"%s\".\nDo you wish to write anyway?"),
+ buf->b_fname);
+
+ if (vim_dialog_yesno(VIM_QUESTION, NULL, buff, 2) == VIM_YES)
+--- 2912,2946 ----
+ }
+
+ /*
+! * Check if a buffer is read-only (either 'readonly' option is set or file is
+! * read-only). Ask for overruling in a dialog. Return TRUE and give an error
+! * message when the buffer is readonly.
+ */
+ static int
+ check_readonly(forceit, buf)
+ int *forceit;
+ buf_T *buf;
+ {
+! struct stat st;
+!
+! /* Handle a file being readonly when the 'readonly' option is set or when
+! * the file exists and permissions are read-only.
+! * We will send 0777 to check_file_readonly(), as the "perm" variable is
+! * important for device checks but not here. */
+! if (!*forceit && (buf->b_p_ro
+! || (mch_stat((char *)buf->b_ffname, &st) >= 0
+! && check_file_readonly(buf->b_ffname, 0777))))
+ {
+ #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG)
+ if ((p_confirm || cmdmod.confirm) && buf->b_fname != NULL)
+ {
+ char_u buff[IOSIZE];
+
+! if (buf->b_p_ro)
+! dialog_msg(buff, _("'readonly' option is set for \"%s\".\nDo you wish to write anyway?"),
+! buf->b_fname);
+! else
+! dialog_msg(buff, _("File permissions of \"%s\" are read-only.\nIt may still be possible to write it.\nDo you wish to try?"),
+ buf->b_fname);
+
+ if (vim_dialog_yesno(VIM_QUESTION, NULL, buff, 2) == VIM_YES)
+***************
+*** 2941,2949 ****
+--- 2954,2967 ----
+ }
+ else
+ #endif
++ if (buf->b_p_ro)
+ EMSG(_(e_readonly));
++ else
++ EMSG2(_("E505: \"%s\" is read-only (add ! to override)"),
++ buf->b_fname);
+ return TRUE;
+ }
++
+ return FALSE;
+ }
+
+*** ../vim-7.1.016/src/fileio.c Thu May 10 19:32:17 2007
+--- src/fileio.c Thu Jun 28 21:54:18 2007
+***************
+*** 424,430 ****
+ */
+ if (!p_odev && mch_nodetype(fname) == NODE_WRITABLE)
+ {
+! filemess(curbuf, fname, (char_u *)_("is a device (disabled with 'opendevice' option"), 0);
+ msg_end();
+ msg_scroll = msg_save;
+ return FAIL;
+--- 424,430 ----
+ */
+ if (!p_odev && mch_nodetype(fname) == NODE_WRITABLE)
+ {
+! filemess(curbuf, fname, (char_u *)_("is a device (disabled with 'opendevice' option)"), 0);
+ msg_end();
+ msg_scroll = msg_save;
+ return FAIL;
+***************
+*** 2734,2739 ****
+--- 2734,2765 ----
+ #endif
+
+ /*
++ * Return TRUE if a file appears to be read-only from the file permissions.
++ */
++ int
++ check_file_readonly(fname, perm)
++ char_u *fname; /* full path to file */
++ int perm; /* known permissions on file */
++ {
++ #ifndef USE_MCH_ACCESS
++ int fd = 0;
++ #endif
++
++ return (
++ #ifdef USE_MCH_ACCESS
++ # ifdef UNIX
++ (perm & 0222) == 0 ||
++ # endif
++ mch_access((char *)fname, W_OK)
++ #else
++ (fd = mch_open((char *)fname, O_RDWR | O_EXTRA, 0)) < 0
++ ? TRUE : (close(fd), FALSE)
++ #endif
++ );
++ }
++
++
++ /*
+ * buf_write() - write to file "fname" lines "start" through "end"
+ *
+ * We do our own buffering here because fwrite() is so slow.
+***************
+*** 3219,3235 ****
+ * Check if the file is really writable (when renaming the file to
+ * make a backup we won't discover it later).
+ */
+! file_readonly = (
+! # ifdef USE_MCH_ACCESS
+! # ifdef UNIX
+! (perm & 0222) == 0 ||
+! # endif
+! mch_access((char *)fname, W_OK)
+! # else
+! (fd = mch_open((char *)fname, O_RDWR | O_EXTRA, 0)) < 0
+! ? TRUE : (close(fd), FALSE)
+! # endif
+! );
+ if (!forceit && file_readonly)
+ {
+ if (vim_strchr(p_cpo, CPO_FWRITE) != NULL)
+--- 3245,3252 ----
+ * Check if the file is really writable (when renaming the file to
+ * make a backup we won't discover it later).
+ */
+! file_readonly = check_file_readonly(fname, (int)perm);
+!
+ if (!forceit && file_readonly)
+ {
+ if (vim_strchr(p_cpo, CPO_FWRITE) != NULL)
+*** ../vim-7.1.016/src/proto/fileio.pro Sat May 5 19:59:00 2007
+--- src/proto/fileio.pro Thu Jun 28 21:09:59 2007
+***************
+*** 2,7 ****
+--- 2,8 ----
+ void filemess __ARGS((buf_T *buf, char_u *name, char_u *s, int attr));
+ int readfile __ARGS((char_u *fname, char_u *sfname, linenr_T from, linenr_T lines_to_skip, linenr_T lines_to_read, exarg_T *eap, int flags));
+ int prep_exarg __ARGS((exarg_T *eap, buf_T *buf));
++ int check_file_readonly __ARGS((char_u *fname, int perm));
+ int buf_write __ARGS((buf_T *buf, char_u *fname, char_u *sfname, linenr_T start, linenr_T end, exarg_T *eap, int append, int forceit, int reset_changed, int filtering));
+ void msg_add_fname __ARGS((buf_T *buf, char_u *fname));
+ void msg_add_lines __ARGS((int insert_space, long lnum, long nchars));
+*** ../vim-7.1.016/src/version.c Thu Jun 28 21:23:52 2007
+--- src/version.c Thu Jun 28 21:49:29 2007
+***************
+*** 668,669 ****
+--- 668,671 ----
+ { /* Add new patch number below this line */
++ /**/
++ 17,
+ /**/
+
+--
+CUSTOMER: Well, can you hang around a couple of minutes? He won't be
+ long.
+MORTICIAN: Naaah, I got to go on to Robinson's -- they've lost nine today.
+CUSTOMER: Well, when is your next round?
+MORTICIAN: Thursday.
+DEAD PERSON: I think I'll go for a walk.
+ The Quest for the Holy Grail (Monty Python)
+
+ /// 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.018
+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.018
+Problem: When 'virtualedit' is set a "p" of a block just past the end of
+ the line inserts before the cursor. (Engelke)
+Solution: Check for the cursor being just after the line (Chris Lubinski)
+Files: src/ops.c
+
+
+*** ../vim-7.1.017/src/ops.c Thu May 10 20:34:55 2007
+--- src/ops.c Tue Jun 19 22:40:45 2007
+***************
+*** 3404,3410 ****
+
+ #ifdef FEAT_VIRTUALEDIT
+ col += curwin->w_cursor.coladd;
+! if (ve_flags == VE_ALL && curwin->w_cursor.coladd > 0)
+ {
+ if (dir == FORWARD && c == NUL)
+ ++col;
+--- 3404,3412 ----
+
+ #ifdef FEAT_VIRTUALEDIT
+ col += curwin->w_cursor.coladd;
+! if (ve_flags == VE_ALL
+! && (curwin->w_cursor.coladd > 0
+! || endcol2 == curwin->w_cursor.col))
+ {
+ if (dir == FORWARD && c == NUL)
+ ++col;
+*** ../vim-7.1.017/src/version.c Thu Jun 28 21:57:08 2007
+--- src/version.c Thu Jun 28 22:12:49 2007
+***************
+*** 668,669 ****
+--- 668,671 ----
+ { /* Add new patch number below this line */
++ /**/
++ 18,
+ /**/
+
+--
+ [clop clop]
+MORTICIAN: Who's that then?
+CUSTOMER: I don't know.
+MORTICIAN: Must be a king.
+CUSTOMER: Why?
+MORTICIAN: He hasn't got shit all over him.
+ The Quest for the Holy Grail (Monty Python)
+
+ /// 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.019
+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.019
+Problem: ":py" asks for an argument, ":py asd" then gives the error that
+ ":py" isn't implemented. Should already happen for ":py".
+Solution: Compare with ex_script_ni. (Chris Lubinski)
+Files: src/ex_docmd.c
+
+
+*** ../vim-7.1.018/src/ex_docmd.c Thu May 10 18:53:03 2007
+--- src/ex_docmd.c Sat Jun 23 13:36:37 2007
+***************
+*** 2118,2124 ****
+ #ifdef FEAT_USR_CMDS
+ !USER_CMDIDX(ea.cmdidx) &&
+ #endif
+! cmdnames[ea.cmdidx].cmd_func == ex_ni);
+
+ #ifndef FEAT_EVAL
+ /*
+--- 2118,2125 ----
+ #ifdef FEAT_USR_CMDS
+ !USER_CMDIDX(ea.cmdidx) &&
+ #endif
+! (cmdnames[ea.cmdidx].cmd_func == ex_ni
+! || cmdnames[ea.cmdidx].cmd_func == ex_script_ni));
+
+ #ifndef FEAT_EVAL
+ /*
+*** ../vim-7.1.018/src/version.c Thu Jun 28 22:14:28 2007
+--- src/version.c Thu Jul 5 09:48:11 2007
+***************
+*** 668,669 ****
+--- 668,671 ----
+ { /* Add new patch number below this line */
++ /**/
++ 19,
+ /**/
+
+--
+MARTHA'S WAY: Don't throw out all that leftover wine. Freeze into ice cubes
+ for future use in casseroles and sauces.
+MY WAY: What leftover wine?
+
+ /// 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.020
+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.020
+Problem: Reading from uninitialized memory when using a dialog. (Dominique
+ Pelle)
+Solution: In msg_show_console_dialog() append a NUL after every appended
+ character.
+Files: src/message.c
+
+
+*** ../vim-7.1.019/src/message.c Thu May 10 18:49:39 2007
+--- src/message.c Sun Jul 1 12:06:52 2007
+***************
+*** 3456,3466 ****
+ /* advance to next hotkey and set default hotkey */
+ #ifdef FEAT_MBYTE
+ if (has_mbyte)
+! hotkp += (*mb_ptr2len)(hotkp);
+ else
+ #endif
+ ++hotkp;
+! (void)copy_char(r + 1, hotkp, TRUE);
+ if (dfltbutton)
+ --dfltbutton;
+
+--- 3456,3466 ----
+ /* advance to next hotkey and set default hotkey */
+ #ifdef FEAT_MBYTE
+ if (has_mbyte)
+! hotkp += STRLEN(hotkp);
+ else
+ #endif
+ ++hotkp;
+! hotkp[copy_char(r + 1, hotkp, TRUE)] = NUL;
+ if (dfltbutton)
+ --dfltbutton;
+
+***************
+*** 3493,3499 ****
+ *msgp++ = (dfltbutton == 1) ? ']' : ')';
+
+ /* redefine hotkey */
+! (void)copy_char(r, hotkp, TRUE);
+ }
+ }
+ else
+--- 3493,3499 ----
+ *msgp++ = (dfltbutton == 1) ? ']' : ')';
+
+ /* redefine hotkey */
+! hotkp[copy_char(r, hotkp, TRUE)] = NUL;
+ }
+ }
+ else
+***************
+*** 3519,3526 ****
+ *msgp++ = ':';
+ *msgp++ = ' ';
+ *msgp = NUL;
+- mb_ptr_adv(hotkp);
+- *hotkp = NUL;
+ }
+ else
+ {
+--- 3519,3524 ----
+***************
+*** 3555,3562 ****
+ msgp = confirm_msg + 1 + STRLEN(message);
+ hotkp = hotk;
+
+! /* define first default hotkey */
+! (void)copy_char(buttons, hotkp, TRUE);
+
+ /* Remember where the choices start, displaying starts here when
+ * "hotkp" typed at the more prompt. */
+--- 3553,3561 ----
+ msgp = confirm_msg + 1 + STRLEN(message);
+ hotkp = hotk;
+
+! /* Define first default hotkey. Keep the hotkey string NUL
+! * terminated to avoid reading past the end. */
+! hotkp[copy_char(buttons, hotkp, TRUE)] = NUL;
+
+ /* Remember where the choices start, displaying starts here when
+ * "hotkp" typed at the more prompt. */
+*** ../vim-7.1.019/src/version.c Thu Jul 5 09:53:20 2007
+--- src/version.c Thu Jul 5 10:09:34 2007
+***************
+*** 668,669 ****
+--- 668,671 ----
+ { /* Add new patch number below this line */
++ /**/
++ 20,
+ /**/
+
+--
+BLACK KNIGHT: Come on you pansy!
+ [hah] [parry thrust]
+ [ARTHUR chops the BLACK KNIGHT's right arm off]
+ARTHUR: Victory is mine! [kneeling]
+ We thank thee Lord, that in thy merc-
+ [Black Knight kicks Arthur in the head while he is praying]
+ The Quest for the Holy Grail (Monty Python)
+
+ /// 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.021
+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.021 (after 7.1.015)
+Problem: Mzscheme interface doesn't compile on Win32.
+Solution: Fix the problem that 7.1.015 fixed in a better way. (Sergey Khorev)
+Files: src/if_mzsch.c
+
+
+*** ../vim-7.1.020/src/if_mzsch.c Thu Jun 28 13:02:22 2007
+--- src/if_mzsch.c Sun Jul 1 18:44:49 2007
+***************
+*** 308,313 ****
+--- 308,315 ----
+ static Scheme_Config *(*dll_scheme_current_config)(void);
+ static Scheme_Object *(*dll_scheme_char_string_to_byte_string)
+ (Scheme_Object *s);
++ static Scheme_Object *(*dll_scheme_char_string_to_path)
++ (Scheme_Object *s);
+ # endif
+
+ /* arrays are imported directly */
+***************
+*** 398,403 ****
+--- 400,407 ----
+ # define scheme_current_config dll_scheme_current_config
+ # define scheme_char_string_to_byte_string \
+ dll_scheme_char_string_to_byte_string
++ # define scheme_char_string_to_path \
++ dll_scheme_char_string_to_path
+ # endif
+
+ typedef struct
+***************
+*** 498,503 ****
+--- 502,509 ----
+ {"scheme_current_config", (void **)&dll_scheme_current_config},
+ {"scheme_char_string_to_byte_string",
+ (void **)&dll_scheme_char_string_to_byte_string},
++ {"scheme_char_string_to_path",
++ (void **)&dll_scheme_char_string_to_path},
+ # endif
+ {NULL, NULL}};
+
+***************
+*** 773,779 ****
+ #ifdef MZSCHEME_COLLECTS
+ /* setup 'current-library-collection-paths' parameter */
+ scheme_set_param(scheme_config, MZCONFIG_COLLECTION_PATHS,
+! scheme_build_list(0, scheme_make_string(MZSCHEME_COLLECTS)));
+ #endif
+ #ifdef HAVE_SANDBOX
+ /* setup sandbox guards */
+--- 779,793 ----
+ #ifdef MZSCHEME_COLLECTS
+ /* setup 'current-library-collection-paths' parameter */
+ scheme_set_param(scheme_config, MZCONFIG_COLLECTION_PATHS,
+! scheme_make_pair(
+! # if MZSCHEME_VERSION_MAJOR >= 299
+! scheme_char_string_to_path(
+! scheme_byte_string_to_char_string(
+! scheme_make_byte_string(MZSCHEME_COLLECTS))),
+! # else
+! scheme_make_string(MZSCHEME_COLLECTS),
+! # endif
+! scheme_null));
+ #endif
+ #ifdef HAVE_SANDBOX
+ /* setup sandbox guards */
+*** ../vim-7.1.020/src/version.c Thu Jul 5 10:10:29 2007
+--- src/version.c Fri Jul 6 19:41:04 2007
+***************
+*** 668,669 ****
+--- 668,671 ----
+ { /* Add new patch number below this line */
++ /**/
++ 21,
+ /**/
+
+--
+Advice to worms: Sleep late.
+
+ /// 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.022
+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.022
+Problem: When setting 'keymap' twice the b:keymap_name variable isn't set.
+ (Milan Berta)
+Solution: Don't unlet b:keymap_name for ":loadkeymap". (Martin Toft)
+Files: src/digraph.c
+
+
+*** ../vim-7.1.021/src/digraph.c Wed May 3 00:07:11 2006
+--- src/digraph.c Mon Jul 2 21:24:30 2007
+***************
+*** 2349,2356 ****
+
+ if (*curbuf->b_p_keymap == NUL)
+ {
+! /* Stop any active keymap and clear the table. */
+ keymap_unload();
+ }
+ else
+ {
+--- 2349,2358 ----
+
+ if (*curbuf->b_p_keymap == NUL)
+ {
+! /* Stop any active keymap and clear the table. Also remove
+! * b:keymap_unload, as no keymap is active now. */
+ keymap_unload();
++ do_cmdline_cmd((char_u *)"unlet! b:keymap_name");
+ }
+ else
+ {
+***************
+*** 2500,2506 ****
+
+ ga_clear(&curbuf->b_kmap_ga);
+ curbuf->b_kmap_state &= ~KEYMAP_LOADED;
+- do_cmdline_cmd((char_u *)"unlet! b:keymap_name");
+ #ifdef FEAT_WINDOWS
+ status_redraw_curbuf();
+ #endif
+--- 2502,2507 ----
+*** ../vim-7.1.021/src/version.c Fri Jul 6 19:42:09 2007
+--- src/version.c Sat Jul 7 13:56:52 2007
+***************
+*** 668,669 ****
+--- 668,671 ----
+ { /* Add new patch number below this line */
++ /**/
++ 22,
+ /**/
+
+--
+If your life is a hard drive,
+Christ can be your backup.
+
+ /// 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.023
+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.023
+Problem: "dw" in a line with one character deletes the line. Vi and nvi
+ don't do this. (Kjell Arne Rekaa)
+Solution: Check for one-character words especially.
+Files: src/search.c
+
+
+*** ../vim-7.1.022/src/search.c Tue Jun 19 12:58:55 2007
+--- src/search.c Thu Jul 5 21:18:55 2007
+***************
+*** 2795,2801 ****
+ i = inc_cursor();
+ if (i == -1 || (i >= 1 && last_line)) /* started at last char in file */
+ return FAIL;
+! if (i == 1 && eol && count == 0) /* started at last char in line */
+ return OK;
+
+ /*
+--- 2802,2808 ----
+ i = inc_cursor();
+ if (i == -1 || (i >= 1 && last_line)) /* started at last char in file */
+ return FAIL;
+! if (i >= 1 && eol && count == 0) /* started at last char in line */
+ return OK;
+
+ /*
+*** ../vim-7.1.022/src/version.c Sat Jul 7 13:57:39 2007
+--- src/version.c Tue Jul 10 12:35:36 2007
+***************
+*** 668,669 ****
+--- 668,671 ----
+ { /* Add new patch number below this line */
++ /**/
++ 23,
+ /**/
+
+--
+BRIDGEKEEPER: What is your favorite editor?
+GAWAIN: Emacs ... No, Viiiiiiiiiiimmmmmmm!
+ "Monty Python and the Holy editor wars" PYTHON (MONTY) SOFTWARE LTD
+
+ /// 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.024
+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.024
+Problem: Using a pointer that has become invalid. (Chris Monson)
+Solution: Obtain the line pointer again after we looked at another line.
+Files: src/search.c
+
+
+*** ../vim-7.1.023/src/search.c Tue Jul 10 12:36:51 2007
+--- src/search.c Thu Jul 5 21:18:55 2007
+***************
+*** 2124,2129 ****
+--- 2128,2136 ----
+ else if (!backwards)
+ inquote = TRUE;
+ }
++
++ /* ml_get() only keeps one line, need to get linep again */
++ linep = ml_get(pos.lnum);
+ }
+ }
+ }
+*** ../vim-7.1.023/src/version.c Tue Jul 10 12:36:51 2007
+--- src/version.c Tue Jul 10 13:06:02 2007
+***************
+*** 668,669 ****
+--- 668,671 ----
+ { /* Add new patch number below this line */
++ /**/
++ 24,
+ /**/
+
+--
+Q: Why does /dev/null accept only integers?
+A: You can't sink a float.
+
+ /// 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.025
+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.025
+Problem: search() and searchpos() don't use match under cursor at start of
+ line when using 'bc' flags. (Viktor Kojouharov)
+Solution: Don't go to the previous line when the 'c' flag is present.
+ Also fix that "j" doesn't move the cursor to the right column.
+Files: src/eval.c, src/search.c
+
+
+*** ../vim-7.1.024/src/eval.c Tue Jun 19 17:23:46 2007
+--- src/eval.c Thu Jul 5 21:16:31 2007
+***************
+*** 13925,13930 ****
+--- 13925,13932 ----
+ /* If 'n' flag is used: restore cursor position. */
+ if (flags & SP_NOMOVE)
+ curwin->w_cursor = save_cursor;
++ else
++ curwin->w_set_curswant = TRUE;
+ theend:
+ p_ws = save_p_ws;
+
+*** ../vim-7.1.024/src/search.c Tue Jul 10 13:07:08 2007
+--- src/search.c Thu Jul 5 21:18:55 2007
+***************
+*** 573,580 ****
+ /*
+ * Start searching in current line, unless searching backwards and
+ * we're in column 0.
+ */
+! if (dir == BACKWARD && start_pos.col == 0)
+ {
+ lnum = pos->lnum - 1;
+ at_first_line = FALSE;
+--- 573,584 ----
+ /*
+ * Start searching in current line, unless searching backwards and
+ * we're in column 0.
++ * If we are searching backwards, in column 0, and not including the
++ * current position, gain some efficiency by skipping back a line.
++ * Otherwise begin the search in the current line.
+ */
+! if (dir == BACKWARD && start_pos.col == 0
+! && (options & SEARCH_START) == 0)
+ {
+ lnum = pos->lnum - 1;
+ at_first_line = FALSE;
+*** ../vim-7.1.024/src/version.c Tue Jul 10 13:07:08 2007
+--- src/version.c Tue Jul 10 13:26:13 2007
+***************
+*** 668,669 ****
+--- 668,671 ----
+ { /* Add new patch number below this line */
++ /**/
++ 25,
+ /**/
+
+--
+SIGFUN -- signature too funny (core dumped)
+
+ /// 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.026
+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.026
+Problem: "[p" doesn't work in Visual mode. (David Brown)
+Solution: Use checkclearop() instead of checkclearopq().
+Files: src/normal.c
+
+
+*** ../vim-7.1.025/src/normal.c Thu May 10 18:45:26 2007
+--- src/normal.c Wed Jul 4 21:16:36 2007
+***************
+*** 6379,6385 ****
+ */
+ else if (cap->nchar == 'p' || cap->nchar == 'P')
+ {
+! if (!checkclearopq(cap->oap))
+ {
+ prep_redo_cmd(cap);
+ do_put(cap->oap->regname,
+--- 6379,6385 ----
+ */
+ else if (cap->nchar == 'p' || cap->nchar == 'P')
+ {
+! if (!checkclearop(cap->oap))
+ {
+ prep_redo_cmd(cap);
+ do_put(cap->oap->regname,
+*** ../vim-7.1.025/src/version.c Tue Jul 10 13:27:46 2007
+--- src/version.c Tue Jul 10 14:01:52 2007
+***************
+*** 668,669 ****
+--- 668,671 ----
+ { /* Add new patch number below this line */
++ /**/
++ 26,
+ /**/
+
+--
+BRIDGEKEEPER: What is the air-speed velocity of an unladen swallow?
+ARTHUR: What do you mean? An African or European swallow?
+BRIDGEKEEPER: Er ... I don't know that ... Aaaaarrrrrrggghhh!
+ BRIDGEKEEPER is cast into the gorge.
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// 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.027
+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.027
+Problem: On Sun systems opening /dev/fd/N doesn't work, and they are used
+ by process substitutions.
+Solution: Allow opening specific character special files for Sun systems.
+ (Gary Johnson)
+Files: src/fileio.c, src/os_unix.h
+
+
+*** ../vim-7.1.026/src/fileio.c Thu Jun 28 21:57:08 2007
+--- src/fileio.c Mon Jul 9 11:19:50 2007
+***************
+*** 44,49 ****
+--- 44,53 ----
+ /* Is there any system that doesn't have access()? */
+ #define USE_MCH_ACCESS
+
++ #if defined(sun) && defined(S_ISCHR)
++ # define OPEN_CHR_FILES
++ static int is_dev_fd_file(char_u *fname);
++ #endif
+ #ifdef FEAT_MBYTE
+ static char_u *next_fenc __ARGS((char_u **pp));
+ # ifdef FEAT_EVAL
+***************
+*** 406,411 ****
+--- 410,419 ----
+ # ifdef S_ISSOCK
+ && !S_ISSOCK(perm) /* ... or socket */
+ # endif
++ # ifdef OPEN_CHR_FILES
++ && !(S_ISCHR(perm) && is_dev_fd_file(fname))
++ /* ... or a character special file named /dev/fd/<n> */
++ # endif
+ )
+ {
+ if (S_ISDIR(perm))
+***************
+*** 2265,2270 ****
+--- 2273,2285 ----
+ }
+ # endif
+ # endif
++ # ifdef OPEN_CHR_FILES
++ if (S_ISCHR(perm)) /* or character special */
++ {
++ STRCAT(IObuff, _("[character special]"));
++ c = TRUE;
++ }
++ # endif
+ #endif
+ if (curbuf->b_p_ro)
+ {
+***************
+*** 2463,2468 ****
+--- 2478,2502 ----
+ return FAIL;
+ return OK;
+ }
++
++ #ifdef OPEN_CHR_FILES
++ /*
++ * Returns TRUE if the file name argument is of the form "/dev/fd/\d\+",
++ * which is the name of files used for process substitution output by
++ * some shells on some operating systems, e.g., bash on SunOS.
++ * Do not accept "/dev/fd/[012]", opening these may hang Vim.
++ */
++ static int
++ is_dev_fd_file(fname)
++ char_u *fname;
++ {
++ return (STRNCMP(fname, "/dev/fd/", 8) == 0
++ && VIM_ISDIGIT(fname[8])
++ && *skipdigits(fname + 9) == NUL
++ && (fname[9] != NUL
++ || (fname[8] != '0' && fname[8] != '1' && fname[8] != '2')));
++ }
++ #endif
+
+ #ifdef FEAT_MBYTE
+
+*** ../vim-7.1.026/src/os_unix.h Thu May 10 19:43:10 2007
+--- src/os_unix.h Sat Jul 7 13:08:56 2007
+***************
+*** 508,513 ****
+--- 508,516 ----
+ #if !defined(S_ISFIFO) && defined(S_IFIFO)
+ # define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO)
+ #endif
++ #if !defined(S_ISCHR) && defined(S_IFCHR)
++ # define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR)
++ #endif
+
+ /* Note: Some systems need both string.h and strings.h (Savage). However,
+ * some systems can't handle both, only use string.h in that case. */
+*** ../vim-7.1.026/src/version.c Tue Jul 10 14:02:51 2007
+--- src/version.c Tue Jul 10 17:00:43 2007
+***************
+*** 668,669 ****
+--- 668,671 ----
+ { /* Add new patch number below this line */
++ /**/
++ 27,
+ /**/
+
+--
+Every exit is an entrance into something else.
+
+ /// 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.028
+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.028
+Problem: Can't use last search pattern for ":sort". (Brian McKee)
+Solution: When the pattern is emtpy use the last search pattern. (Martin
+ Toft)
+Files: runtime/doc/change.txt, src/ex_cmds.c
+
+
+*** ../vim-7.1.027/runtime/doc/change.txt Sat May 12 16:10:12 2007
+--- runtime/doc/change.txt Tue Jul 10 11:30:56 2007
+***************
+*** 1571,1576 ****
+--- 1571,1580 ----
+ in their original order, right before the sorted
+ lines.
+
++ If {pattern} is empty (e.g. // is specified), the
++ last search pattern is used. This allows trying out
++ a pattern first.
++
+ Note that using ":sort" with ":global" doesn't sort the matching lines, it's
+ quite useless.
+
+*** ../vim-7.1.027/src/ex_cmds.c Thu Jun 28 21:57:08 2007
+--- src/ex_cmds.c Tue Jul 10 17:25:10 2007
+***************
+*** 408,414 ****
+ goto sortend;
+ }
+ *s = NUL;
+! regmatch.regprog = vim_regcomp(p + 1, RE_MAGIC);
+ if (regmatch.regprog == NULL)
+ goto sortend;
+ p = s; /* continue after the regexp */
+--- 408,418 ----
+ goto sortend;
+ }
+ *s = NUL;
+! /* Use last search pattern if sort pattern is empty. */
+! if (s == p + 1 && last_search_pat() != NULL)
+! regmatch.regprog = vim_regcomp(last_search_pat(), RE_MAGIC);
+! else
+! regmatch.regprog = vim_regcomp(p + 1, RE_MAGIC);
+ if (regmatch.regprog == NULL)
+ goto sortend;
+ p = s; /* continue after the regexp */
+*** ../vim-7.1.027/src/version.c Tue Jul 10 17:09:51 2007
+--- src/version.c Tue Jul 10 17:20:01 2007
+***************
+*** 668,669 ****
+--- 668,671 ----
+ { /* Add new patch number below this line */
++ /**/
++ 28,
+ /**/
+
+--
+Every person is responsible for the choices he makes.
+
+ /// 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.029
+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.029 (after 7.1.019)
+Problem: Can't compile when all interfaces are used. (Taylor Venable)
+Solution: Only check for ex_script_ni when it's defined.
+Files: src/ex_docmd.c
+
+
+*** ../vim-7.1.028/src/ex_docmd.c Thu Jul 5 09:53:20 2007
+--- src/ex_docmd.c Sun Jul 15 17:20:09 2007
+***************
+*** 133,138 ****
+--- 133,139 ----
+ static void get_flags __ARGS((exarg_T *eap));
+ #if !defined(FEAT_PERL) || !defined(FEAT_PYTHON) || !defined(FEAT_TCL) \
+ || !defined(FEAT_RUBY) || !defined(FEAT_MZSCHEME)
++ # define HAVE_EX_SCRIPT_NI
+ static void ex_script_ni __ARGS((exarg_T *eap));
+ #endif
+ static char_u *invalid_range __ARGS((exarg_T *eap));
+***************
+*** 2119,2125 ****
+ !USER_CMDIDX(ea.cmdidx) &&
+ #endif
+ (cmdnames[ea.cmdidx].cmd_func == ex_ni
+! || cmdnames[ea.cmdidx].cmd_func == ex_script_ni));
+
+ #ifndef FEAT_EVAL
+ /*
+--- 2120,2129 ----
+ !USER_CMDIDX(ea.cmdidx) &&
+ #endif
+ (cmdnames[ea.cmdidx].cmd_func == ex_ni
+! #ifdef HAVE_EX_SCRIPT_NI
+! || cmdnames[ea.cmdidx].cmd_func == ex_script_ni
+! #endif
+! ));
+
+ #ifndef FEAT_EVAL
+ /*
+***************
+*** 3998,4005 ****
+ eap->errmsg = (char_u *)N_("E319: Sorry, the command is not available in this version");
+ }
+
+! #if !defined(FEAT_PERL) || !defined(FEAT_PYTHON) || !defined(FEAT_TCL) \
+! || !defined(FEAT_RUBY) || !defined(FEAT_MZSCHEME)
+ /*
+ * Function called for script command which is Not Implemented. NI!
+ * Skips over ":perl <<EOF" constructs.
+--- 3999,4005 ----
+ eap->errmsg = (char_u *)N_("E319: Sorry, the command is not available in this version");
+ }
+
+! #ifdef HAVE_EX_SCRIPT_NI
+ /*
+ * Function called for script command which is Not Implemented. NI!
+ * Skips over ":perl <<EOF" constructs.
+*** ../vim-7.1.028/src/version.c Tue Jul 10 17:25:20 2007
+--- src/version.c Mon Jul 16 20:37:48 2007
+***************
+*** 668,669 ****
+--- 668,671 ----
+ { /* Add new patch number below this line */
++ /**/
++ 29,
+ /**/
+
+--
+I used to wonder about the meaning of life. But I looked it
+up in the dictionary under "L" and there it was - the meaning
+of life. It was less than I expected. - Dogbert
+
+ /// 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.030
+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.030
+Problem: The "vimtutor" shell script checks for "vim6" but not for "vim7".
+ (Christian Robinson)
+Solution: Check for more versions, but prefer using "vim".
+Files: src/vimtutor
+
+
+*** ../vim-7.1.029/src/vimtutor Sun Jun 13 20:37:33 2004
+--- src/vimtutor Sun Jul 8 17:16:29 2007
+***************
+*** 39,56 ****
+ # remove the copy of the tutor on exit
+ trap "rm -rf $TODELETE" 0 1 2 3 9 11 13 15
+
+! # Vim could be called "vim" or "vi". Also check for "vim6", for people who
+! # have Vim 5.x installed as "vim" and Vim 6.0 as "vim6".
+! testvim=`which vim6 2>/dev/null`
+! if test -f "$testvim"; then
+! VIM=vim6
+! else
+! testvim=`which vim`
+ if test -f "$testvim"; then
+! VIM=vim
+! else
+! VIM=vi
+ fi
+ fi
+
+ # Use Vim to copy the tutor, it knows the value of $VIMRUNTIME
+--- 39,60 ----
+ # remove the copy of the tutor on exit
+ trap "rm -rf $TODELETE" 0 1 2 3 9 11 13 15
+
+! # Vim could be called "vim" or "vi". Also check for "vimN", for people who
+! # have Vim installed with its version number.
+! # We anticipate up to a future Vim 8 version :-).
+! seq="vim vim8 vim75 vim74 vim73 vim72 vim71 vim70 vim7 vim6 vi"
+! for i in $seq; do
+! testvim=`which $i 2>/dev/null`
+ if test -f "$testvim"; then
+! VIM=$i
+! break
+ fi
++ done
++
++ # When no Vim version was found fall back to "vim", you'll get an error message
++ # below.
++ if test -z "$VIM"; then
++ VIM=vim
+ fi
+
+ # Use Vim to copy the tutor, it knows the value of $VIMRUNTIME
+*** ../vim-7.1.029/src/version.c Mon Jul 16 20:38:56 2007
+--- src/version.c Tue Jul 17 14:30:51 2007
+***************
+*** 668,669 ****
+--- 668,671 ----
+ { /* Add new patch number below this line */
++ /**/
++ 30,
+ /**/
+
+--
+BLACK KNIGHT: I'm invincible!
+ARTHUR: You're a looney.
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// 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.031
+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.031
+Problem: virtcol([123, '$']) doesn't work. (Michael Schaap)
+Solution: When '$' is used for the column number get the last column.
+Files: runtime/doc/eval.txt, src/eval.c
+
+
+*** ../vim-7.1.030/runtime/doc/eval.txt Tue Jun 19 17:23:46 2007
+--- runtime/doc/eval.txt Wed Jul 11 21:21:28 2007
+***************
+*** 1,4 ****
+! *eval.txt* For Vim version 7.1. Last change: 2007 Jun 09
+
+
+ VIM REFERENCE MANUAL by Bram Moolenaar
+--- 1,4 ----
+! *eval.txt* For Vim version 7.1. Last change: 2007 Jul 11
+
+
+ VIM REFERENCE MANUAL by Bram Moolenaar
+***************
+*** 2020,2025 ****
+--- 2020,2029 ----
+ number of characters in the cursor line plus one)
+ 'x position of mark x (if the mark is not set, 0 is
+ returned)
++ Additionally {expr} can be [lnum, col]: a |List| with the line
++ and column number. Most useful when the column is "$", to get
++ the las column of a specific line. When "lnum" or "col" is
++ out of range then col() returns zero.
+ To get the line number use |line()|. To get both use
+ |getpos()|.
+ For the screen column position use |virtcol()|.
+***************
+*** 5024,5037 ****
+ position, the returned Number will be the column at the end of
+ the <Tab>. For example, for a <Tab> in column 1, with 'ts'
+ set to 8, it returns 8.
+! For the use of {expr} see |col()|. Additionally you can use
+! [lnum, col]: a |List| with the line and column number. When
+! "lnum" or "col" is out of range then virtcol() returns zero.
+! When 'virtualedit' is used it can be [lnum, col, off], where
+ "off" is the offset in screen columns from the start of the
+ character. E.g., a position within a <Tab> or after the last
+ character.
+- For the byte position use |col()|.
+ When Virtual editing is active in the current mode, a position
+ beyond the end of the line can be returned. |'virtualedit'|
+ The accepted positions are:
+--- 5029,5040 ----
+ position, the returned Number will be the column at the end of
+ the <Tab>. For example, for a <Tab> in column 1, with 'ts'
+ set to 8, it returns 8.
+! For the byte position use |col()|.
+! For the use of {expr} see |col()|.
+! When 'virtualedit' is used {expr} can be [lnum, col, off], where
+ "off" is the offset in screen columns from the start of the
+ character. E.g., a position within a <Tab> or after the last
+ character.
+ When Virtual editing is active in the current mode, a position
+ beyond the end of the line can be returned. |'virtualedit'|
+ The accepted positions are:
+*** ../vim-7.1.030/src/eval.c Tue Jul 10 13:27:46 2007
+--- src/eval.c Wed Jul 11 19:50:27 2007
+***************
+*** 672,678 ****
+ static void f_writefile __ARGS((typval_T *argvars, typval_T *rettv));
+
+ static int list2fpos __ARGS((typval_T *arg, pos_T *posp, int *fnump));
+! static pos_T *var2fpos __ARGS((typval_T *varp, int lnum, int *fnum));
+ static int get_env_len __ARGS((char_u **arg));
+ static int get_id_len __ARGS((char_u **arg));
+ static int get_name_len __ARGS((char_u **arg, char_u **alias, int evaluate, int verbose));
+--- 672,678 ----
+ static void f_writefile __ARGS((typval_T *argvars, typval_T *rettv));
+
+ static int list2fpos __ARGS((typval_T *arg, pos_T *posp, int *fnump));
+! static pos_T *var2fpos __ARGS((typval_T *varp, int dollar_lnum, int *fnum));
+ static int get_env_len __ARGS((char_u **arg));
+ static int get_id_len __ARGS((char_u **arg));
+ static int get_name_len __ARGS((char_u **arg, char_u **alias, int evaluate, int verbose));
+***************
+*** 16505,16513 ****
+ * Returns NULL when there is an error.
+ */
+ static pos_T *
+! var2fpos(varp, lnum, fnum)
+ typval_T *varp;
+! int lnum; /* TRUE when $ is last line */
+ int *fnum; /* set to fnum for '0, 'A, etc. */
+ {
+ char_u *name;
+--- 16508,16516 ----
+ * Returns NULL when there is an error.
+ */
+ static pos_T *
+! var2fpos(varp, dollar_lnum, fnum)
+ typval_T *varp;
+! int dollar_lnum; /* TRUE when $ is last line */
+ int *fnum; /* set to fnum for '0, 'A, etc. */
+ {
+ char_u *name;
+***************
+*** 16520,16525 ****
+--- 16523,16529 ----
+ list_T *l;
+ int len;
+ int error = FALSE;
++ listitem_T *li;
+
+ l = varp->vval.v_list;
+ if (l == NULL)
+***************
+*** 16535,16540 ****
+--- 16539,16552 ----
+ if (error)
+ return NULL;
+ len = (long)STRLEN(ml_get(pos.lnum));
++
++ /* We accept "$" for the column number: last column. */
++ li = list_find(l, 1L);
++ if (li != NULL && li->li_tv.v_type == VAR_STRING
++ && li->li_tv.vval.v_string != NULL
++ && STRCMP(li->li_tv.vval.v_string, "$") == 0)
++ pos.col = len + 1;
++
+ /* Accept a position up to the NUL after the line. */
+ if (pos.col == 0 || (int)pos.col > len + 1)
+ return NULL; /* invalid column number */
+***************
+*** 16567,16573 ****
+ pos.coladd = 0;
+ #endif
+
+! if (name[0] == 'w' && lnum)
+ {
+ pos.col = 0;
+ if (name[1] == '0') /* "w0": first visible line */
+--- 16579,16585 ----
+ pos.coladd = 0;
+ #endif
+
+! if (name[0] == 'w' && dollar_lnum)
+ {
+ pos.col = 0;
+ if (name[1] == '0') /* "w0": first visible line */
+***************
+*** 16585,16591 ****
+ }
+ else if (name[0] == '$') /* last column or line */
+ {
+! if (lnum)
+ {
+ pos.lnum = curbuf->b_ml.ml_line_count;
+ pos.col = 0;
+--- 16597,16603 ----
+ }
+ else if (name[0] == '$') /* last column or line */
+ {
+! if (dollar_lnum)
+ {
+ pos.lnum = curbuf->b_ml.ml_line_count;
+ pos.col = 0;
+*** ../vim-7.1.030/src/version.c Tue Jul 17 14:32:07 2007
+--- src/version.c Tue Jul 17 16:24:54 2007
+***************
+*** 668,669 ****
+--- 668,671 ----
+ { /* Add new patch number below this line */
++ /**/
++ 31,
+ /**/
+
+--
+CRONE: Who sent you?
+ARTHUR: The Knights Who Say GNU!
+CRONE: Aaaagh! (she looks around in rear) No! We have no licenses here.
+ "Monty Python and the Holy editor wars" PYTHON (MONTY) SOFTWARE LTD
+
+ /// 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.032
+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.032
+Problem: Potential crash when editing a command line. (Chris Monson)
+Solution: Check the position to avoid access before the start of an array.
+Files: src/ex_getln.c
+
+
+*** ../vim-7.1.031/src/ex_getln.c Thu May 10 20:22:29 2007
+--- src/ex_getln.c Tue Jul 17 18:05:49 2007
+***************
+*** 484,490 ****
+ if (xpc.xp_context == EXPAND_MENUNAMES && p_wmnu)
+ {
+ /* Hitting <Down> after "emenu Name.": complete submenu */
+! if (ccline.cmdbuff[ccline.cmdpos - 1] == '.' && c == K_DOWN)
+ c = p_wc;
+ else if (c == K_UP)
+ {
+--- 486,493 ----
+ if (xpc.xp_context == EXPAND_MENUNAMES && p_wmnu)
+ {
+ /* Hitting <Down> after "emenu Name.": complete submenu */
+! if (c == K_DOWN && ccline.cmdpos > 0
+! && ccline.cmdbuff[ccline.cmdpos - 1] == '.')
+ c = p_wc;
+ else if (c == K_UP)
+ {
+***************
+*** 533,541 ****
+ upseg[3] = PATHSEP;
+ upseg[4] = NUL;
+
+! if (ccline.cmdbuff[ccline.cmdpos - 1] == PATHSEP
+! && c == K_DOWN
+! && (ccline.cmdbuff[ccline.cmdpos - 2] != '.'
+ || ccline.cmdbuff[ccline.cmdpos - 3] != '.'))
+ {
+ /* go down a directory */
+--- 536,546 ----
+ upseg[3] = PATHSEP;
+ upseg[4] = NUL;
+
+! if (c == K_DOWN
+! && ccline.cmdpos > 0
+! && ccline.cmdbuff[ccline.cmdpos - 1] == PATHSEP
+! && (ccline.cmdpos < 3
+! || ccline.cmdbuff[ccline.cmdpos - 2] != '.'
+ || ccline.cmdbuff[ccline.cmdpos - 3] != '.'))
+ {
+ /* go down a directory */
+***************
+*** 730,737 ****
+ /* In Ex mode a backslash escapes a newline. */
+ if (exmode_active
+ && c != ESC
+- && ccline.cmdpos > 0
+ && ccline.cmdpos == ccline.cmdlen
+ && ccline.cmdbuff[ccline.cmdpos - 1] == '\\')
+ {
+ if (c == K_KENTER)
+--- 735,742 ----
+ /* In Ex mode a backslash escapes a newline. */
+ if (exmode_active
+ && c != ESC
+ && ccline.cmdpos == ccline.cmdlen
++ && ccline.cmdpos > 0
+ && ccline.cmdbuff[ccline.cmdpos - 1] == '\\')
+ {
+ if (c == K_KENTER)
+*** ../vim-7.1.031/src/version.c Tue Jul 17 16:31:15 2007
+--- src/version.c Tue Jul 17 18:10:37 2007
+***************
+*** 668,669 ****
+--- 668,671 ----
+ { /* Add new patch number below this line */
++ /**/
++ 32,
+ /**/
+
+--
+ALL: A witch! A witch!
+WITCH: It's a fair cop.
+ALL: Burn her! Burn her! Let's make her into a ladder.
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// 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.033
+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.033
+Problem: A buffer is marked modified when it was first deleted and then
+ added again using a ":next" command. (John Mullin)
+Solution: When checking if a buffer is modified use the BF_NEVERLOADED flag.
+Files: src/option.c
+
+
+*** ../vim-7.1.032/src/option.c Tue Jun 19 20:56:52 2007
+--- src/option.c Sun Jul 22 16:42:47 2007
+***************
+*** 10624,10629 ****
+--- 10624,10632 ----
+ file_ff_differs(buf)
+ buf_T *buf;
+ {
++ /* In a buffer that was never loaded the options are not valid. */
++ if (buf->b_flags & BF_NEVERLOADED)
++ return FALSE;
+ if ((buf->b_flags & BF_NEW)
+ && buf->b_ml.ml_line_count == 1
+ && *ml_get_buf(buf, (linenr_T)1, FALSE) == NUL)
+*** ../vim-7.1.032/src/version.c Tue Jul 17 18:14:14 2007
+--- src/version.c Mon Jul 23 09:45:44 2007
+***************
+*** 668,669 ****
+--- 668,671 ----
+ { /* Add new patch number below this line */
++ /**/
++ 33,
+ /**/
+
+--
+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/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///