diff --git a/.fmf/version b/.fmf/version deleted file mode 100644 index d00491fd..00000000 --- a/.fmf/version +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/.gitignore b/.gitignore index 243a54fe..e7488991 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,6 @@ -/vim-*.tar.bz2 +cvim.zip +vim-7.0-extra.tar.gz +vim-7.0-lang.tar.gz +vim-7.0.tar.bz2 +runtime-update-20060911.tar.bz2 +vim-spell-files.tar.bz2 diff --git a/7.1.001 b/7.1.001 new file mode 100644 index 00000000..444e84c3 --- /dev/null +++ b/7.1.001 @@ -0,0 +1,75 @@ +To: vim-dev@vim.org +Subject: patch 7.1.001 +Fcc: outbox +From: Bram Moolenaar +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 /// diff --git a/7.1.002 b/7.1.002 new file mode 100644 index 00000000..d75be05a --- /dev/null +++ b/7.1.002 @@ -0,0 +1,69 @@ +To: vim-dev@vim.org +Subject: patch 7.1.002 +Fcc: outbox +From: Bram Moolenaar +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 +! " 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 +! " 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 /// diff --git a/7.1.003 b/7.1.003 new file mode 100644 index 00000000..4beb4348 --- /dev/null +++ b/7.1.003 @@ -0,0 +1,48 @@ +To: vim-dev@vim.org +Subject: patch 7.1.003 (extra) +Fcc: outbox +From: Bram Moolenaar +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 /// diff --git a/7.1.004 b/7.1.004 new file mode 100644 index 00000000..ce28af8a --- /dev/null +++ b/7.1.004 @@ -0,0 +1,73 @@ +To: vim-dev@vim.org +Subject: patch 7.1.004 +Fcc: outbox +From: Bram Moolenaar +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 /// diff --git a/7.1.005 b/7.1.005 new file mode 100644 index 00000000..273b1f5c --- /dev/null +++ b/7.1.005 @@ -0,0 +1,149 @@ +To: vim-dev@vim.org +Subject: patch 7.1.005 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.005 +Problem: "cit" used on deletes . 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 /// diff --git a/7.1.006 b/7.1.006 new file mode 100644 index 00000000..510c9017 --- /dev/null +++ b/7.1.006 @@ -0,0 +1,85 @@ +To: vim-dev@vim.org +Subject: patch 7.1.006 +Fcc: outbox +From: Bram Moolenaar +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 /// diff --git a/7.1.007 b/7.1.007 new file mode 100644 index 00000000..cdd1d4d4 --- /dev/null +++ b/7.1.007 @@ -0,0 +1,221 @@ +To: vim-dev@vim.org +Subject: patch 7.1.007 (extra) +Fcc: outbox +From: Bram Moolenaar +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 /// diff --git a/7.1.008 b/7.1.008 new file mode 100644 index 00000000..092009d3 --- /dev/null +++ b/7.1.008 @@ -0,0 +1,82 @@ +To: vim-dev@vim.org +Subject: patch 7.1.008 (correction +Fcc: outbox +From: Bram Moolenaar +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 /// diff --git a/7.1.009 b/7.1.009 new file mode 100644 index 00000000..a81c1bee --- /dev/null +++ b/7.1.009 @@ -0,0 +1,58 @@ +To: vim-dev@vim.org +Subject: patch 7.1.009 +Fcc: outbox +From: Bram Moolenaar +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 /// diff --git a/7.1.010 b/7.1.010 new file mode 100644 index 00000000..ee8c03a8 --- /dev/null +++ b/7.1.010 @@ -0,0 +1,75 @@ +To: vim-dev@vim.org +Subject: patch 7.1.010 +Fcc: outbox +From: Bram Moolenaar +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 /// diff --git a/7.1.011 b/7.1.011 new file mode 100644 index 00000000..6322cb15 --- /dev/null +++ b/7.1.011 @@ -0,0 +1,58 @@ +To: vim-dev@vim.org +Subject: patch 7.1.011 +Fcc: outbox +From: Bram Moolenaar +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 /// diff --git a/7.1.012 b/7.1.012 new file mode 100644 index 00000000..97ce9040 --- /dev/null +++ b/7.1.012 @@ -0,0 +1,62 @@ +To: vim-dev@vim.org +Subject: patch 7.1.012 +Fcc: outbox +From: Bram Moolenaar +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 /// diff --git a/7.1.013 b/7.1.013 new file mode 100644 index 00000000..83b224a1 --- /dev/null +++ b/7.1.013 @@ -0,0 +1,60 @@ +To: vim-dev@vim.org +Subject: patch 7.1.013 +Fcc: outbox +From: Bram Moolenaar +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 /// diff --git a/7.1.014 b/7.1.014 new file mode 100644 index 00000000..5b5b1dee --- /dev/null +++ b/7.1.014 @@ -0,0 +1,46 @@ +To: vim-dev@vim.org +Subject: patch 7.1.014 +Fcc: outbox +From: Bram Moolenaar +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 /// diff --git a/7.1.015 b/7.1.015 new file mode 100644 index 00000000..0dedb235 --- /dev/null +++ b/7.1.015 @@ -0,0 +1,97 @@ +To: vim-dev@vim.org +Subject: patch 7.1.015 +Fcc: outbox +From: Bram Moolenaar +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 /// diff --git a/7.1.016 b/7.1.016 new file mode 100644 index 00000000..220f780b --- /dev/null +++ b/7.1.016 @@ -0,0 +1,72 @@ +To: vim-dev@vim.org +Subject: patch 7.1.016 +Fcc: outbox +From: Bram Moolenaar +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 /// diff --git a/7.1.017 b/7.1.017 new file mode 100644 index 00000000..aa2a3477 --- /dev/null +++ b/7.1.017 @@ -0,0 +1,212 @@ +To: vim-dev@vim.org +Subject: patch 7.1.017 +Fcc: outbox +From: Bram Moolenaar +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 /// diff --git a/7.1.018 b/7.1.018 new file mode 100644 index 00000000..0d4c032c --- /dev/null +++ b/7.1.018 @@ -0,0 +1,60 @@ +To: vim-dev@vim.org +Subject: patch 7.1.018 +Fcc: outbox +From: Bram Moolenaar +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 /// diff --git a/7.1.019 b/7.1.019 new file mode 100644 index 00000000..d0c10ce9 --- /dev/null +++ b/7.1.019 @@ -0,0 +1,55 @@ +To: vim-dev@vim.org +Subject: patch 7.1.019 +Fcc: outbox +From: Bram Moolenaar +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 /// diff --git a/7.1.020 b/7.1.020 new file mode 100644 index 00000000..c343cb03 --- /dev/null +++ b/7.1.020 @@ -0,0 +1,115 @@ +To: vim-dev@vim.org +Subject: patch 7.1.020 +Fcc: outbox +From: Bram Moolenaar +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 /// diff --git a/7.1.021 b/7.1.021 new file mode 100644 index 00000000..1f537ea3 --- /dev/null +++ b/7.1.021 @@ -0,0 +1,92 @@ +To: vim-dev@vim.org +Subject: patch 7.1.021 +Fcc: outbox +From: Bram Moolenaar +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 /// diff --git a/7.1.022 b/7.1.022 new file mode 100644 index 00000000..1357982b --- /dev/null +++ b/7.1.022 @@ -0,0 +1,67 @@ +To: vim-dev@vim.org +Subject: patch 7.1.022 +Fcc: outbox +From: Bram Moolenaar +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 /// diff --git a/7.1.023 b/7.1.023 new file mode 100644 index 00000000..28fe3506 --- /dev/null +++ b/7.1.023 @@ -0,0 +1,54 @@ +To: vim-dev@vim.org +Subject: patch 7.1.023 +Fcc: outbox +From: Bram Moolenaar +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 /// diff --git a/7.1.024 b/7.1.024 new file mode 100644 index 00000000..6bde6009 --- /dev/null +++ b/7.1.024 @@ -0,0 +1,47 @@ +To: vim-dev@vim.org +Subject: patch 7.1.024 +Fcc: outbox +From: Bram Moolenaar +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 /// diff --git a/7.1.025 b/7.1.025 new file mode 100644 index 00000000..54e292cc --- /dev/null +++ b/7.1.025 @@ -0,0 +1,72 @@ +To: vim-dev@vim.org +Subject: patch 7.1.025 +Fcc: outbox +From: Bram Moolenaar +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 /// diff --git a/7.1.026 b/7.1.026 new file mode 100644 index 00000000..071331ae --- /dev/null +++ b/7.1.026 @@ -0,0 +1,55 @@ +To: vim-dev@vim.org +Subject: patch 7.1.026 +Fcc: outbox +From: Bram Moolenaar +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 /// diff --git a/7.1.027 b/7.1.027 new file mode 100644 index 00000000..b13676f0 --- /dev/null +++ b/7.1.027 @@ -0,0 +1,120 @@ +To: vim-dev@vim.org +Subject: patch 7.1.027 +Fcc: outbox +From: Bram Moolenaar +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/ */ ++ # 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 /// diff --git a/7.1.028 b/7.1.028 new file mode 100644 index 00000000..a1b4e7aa --- /dev/null +++ b/7.1.028 @@ -0,0 +1,71 @@ +To: vim-dev@vim.org +Subject: patch 7.1.028 +Fcc: outbox +From: Bram Moolenaar +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 /// diff --git a/7.1.029 b/7.1.029 new file mode 100644 index 00000000..069e19ed --- /dev/null +++ b/7.1.029 @@ -0,0 +1,84 @@ +To: vim-dev@vim.org +Subject: patch 7.1.029 +Fcc: outbox +From: Bram Moolenaar +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 <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 < +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 /// diff --git a/7.1.031 b/7.1.031 new file mode 100644 index 00000000..a03ac8ce --- /dev/null +++ b/7.1.031 @@ -0,0 +1,191 @@ +To: vim-dev@vim.org +Subject: patch 7.1.031 +Fcc: outbox +From: Bram Moolenaar +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 . For example, for a 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 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 . For example, for a 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 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 /// diff --git a/7.1.032 b/7.1.032 new file mode 100644 index 00000000..f2ed6996 --- /dev/null +++ b/7.1.032 @@ -0,0 +1,97 @@ +To: vim-dev@vim.org +Subject: patch 7.1.032 +Fcc: outbox +From: Bram Moolenaar +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 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 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 /// diff --git a/7.1.033 b/7.1.033 new file mode 100644 index 00000000..9b7c73bb --- /dev/null +++ b/7.1.033 @@ -0,0 +1,48 @@ +To: vim-dev@vim.org +Subject: patch 7.1.033 +Fcc: outbox +From: Bram Moolenaar +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 /// diff --git a/7.1.034 b/7.1.034 new file mode 100644 index 00000000..5801c941 --- /dev/null +++ b/7.1.034 @@ -0,0 +1,116 @@ +To: vim-dev@vim.org +Subject: patch 7.1.034 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.034 +Problem: Win64: A few compiler warnings. Problems with optimizer. +Solution: Use int instead of size_t. Disable the optimizer in one function. + (George V. Reilly) +Files: src/eval.c, src/spell.c + + +*** ../vim-7.1.033/src/eval.c Tue Jul 17 16:31:15 2007 +--- src/eval.c Wed Jul 11 19:50:27 2007 +*************** +*** 992,1011 **** + char_u *value; + int value_len; + { +! size_t len; + + if (redir_lval == NULL) + return; + + if (value_len == -1) +! len = STRLEN(value); /* Append the entire string */ + else +! len = value_len; /* Append only "value_len" characters */ + +! if (ga_grow(&redir_ga, (int)len) == OK) + { + mch_memmove((char *)redir_ga.ga_data + redir_ga.ga_len, value, len); +! redir_ga.ga_len += (int)len; + } + else + var_redir_stop(); +--- 992,1011 ---- + char_u *value; + int value_len; + { +! int len; + + if (redir_lval == NULL) + return; + + if (value_len == -1) +! len = (int)STRLEN(value); /* Append the entire string */ + else +! len = value_len; /* Append only "value_len" characters */ + +! if (ga_grow(&redir_ga, len) == OK) + { + mch_memmove((char *)redir_ga.ga_data + redir_ga.ga_len, value, len); +! redir_ga.ga_len += len; + } + else + var_redir_stop(); +*** ../vim-7.1.033/src/spell.c Thu May 10 18:45:53 2007 +--- src/spell.c Sat Jul 14 17:17:52 2007 +*************** +*** 7829,7835 **** + # if (_MSC_VER <= 1200) + /* This line is required for VC6 without the service pack. Also see the + * matching #pragma below. */ +! /* # pragma optimize("", off) */ + # endif + #endif + +--- 7829,7835 ---- + # if (_MSC_VER <= 1200) + /* This line is required for VC6 without the service pack. Also see the + * matching #pragma below. */ +! # pragma optimize("", off) + # endif + #endif + +*************** +*** 7859,7865 **** + + #ifdef _MSC_VER + # if (_MSC_VER <= 1200) +! /* # pragma optimize("", on) */ + # endif + #endif + +--- 7859,7865 ---- + + #ifdef _MSC_VER + # if (_MSC_VER <= 1200) +! # pragma optimize("", on) + # endif + #endif + +*** ../vim-7.1.033/src/version.c Tue Jul 24 09:50:22 2007 +--- src/version.c Tue Jul 24 09:47:17 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 34, + /**/ + +-- +How To Keep A Healthy Level Of Insanity: +17. When the money comes out the ATM, scream "I won!, I won! 3rd + time this week!!!!!" + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.035 b/7.1.035 new file mode 100644 index 00000000..77fcb72b --- /dev/null +++ b/7.1.035 @@ -0,0 +1,52 @@ +To: vim-dev@vim.org +Subject: patch 7.1.035 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.035 +Problem: After ":s/./&/#" all listed lines have a line number. (Yakov + Lerner) +Solution: Reset the line number flag when not using the "&" flag. +Files: src/ex_cmds.c + + +*** ../vim-7.1.034/src/ex_cmds.c Tue Jul 10 17:25:20 2007 +--- src/ex_cmds.c Sat Jul 14 14:39:38 2007 +*************** +*** 4316,4321 **** +--- 4316,4322 ---- + do_error = TRUE; + do_print = FALSE; + do_count = FALSE; ++ do_number = FALSE; + do_ic = 0; + } + while (*cmd) +*** ../vim-7.1.034/src/version.c Tue Jul 24 10:44:10 2007 +--- src/version.c Tue Jul 24 11:15:09 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 35, + /**/ + +-- +The startling truth finally became apparent, and it was this: Numbers +written on restaurant checks within the confines of restaurants do not follow +the same mathematical laws as numbers written on any other pieces of paper in +any other parts of the Universe. This single statement took the scientific +world by storm. So many mathematical conferences got held in such good +restaurants that many of the finest minds of a generation died of obesity and +heart failure, and the science of mathematics was put back by years. + -- Douglas Adams, "The Hitchhiker's Guide to the Galaxy" + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.036 b/7.1.036 new file mode 100644 index 00000000..5366b3e4 --- /dev/null +++ b/7.1.036 @@ -0,0 +1,461 @@ +To: vim-dev@vim.org +Subject: patch 7.1.036 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.036 +Problem: Completing ":echohl" argument should include "None". (Ori + Avtalion) ":match" should have "none" too. +Solution: Add flags to use expand_highlight(). Also fix that when disabling + FEAT_CMDL_COMPL compilation fails. (Chris Lubinski) +Files: src/eval.c, src/ex_docmd.c, src/ex_getln.c, src/proto/syntax.pro + src/syntax.c + + +*** ../vim-7.1.035/src/eval.c Tue Jul 24 10:44:10 2007 +--- src/eval.c Wed Jul 11 19:50:27 2007 +*************** +*** 1411,1417 **** + } + + +! #if (defined(FEAT_USR_CMDS) && defined(FEAT_CMDL_COMPL)) || defined(PROTO) + /* + * Call some vimL function and return the result in "*rettv". + * Uses argv[argc] for the function arguments. +--- 1411,1418 ---- + } + + +! #if (defined(FEAT_USR_CMDS) && defined(FEAT_CMDL_COMPL)) \ +! || defined(FEAT_COMPL_FUNC) || defined(PROTO) + /* + * Call some vimL function and return the result in "*rettv". + * Uses argv[argc] for the function arguments. +*************** +*** 1484,1489 **** +--- 1485,1491 ---- + return ret; + } + ++ # if (defined(FEAT_USR_CMDS) && defined(FEAT_CMDL_COMPL)) || defined(PROTO) + /* + * Call vimL function "func" and return the result as a string. + * Returns NULL when calling the function fails. +*************** +*** 1506,1513 **** + clear_tv(&rettv); + return retval; + } + +! #if defined(FEAT_COMPL_FUNC) || defined(PROTO) + /* + * Call vimL function "func" and return the result as a number. + * Returns -1 when calling the function fails. +--- 1508,1516 ---- + clear_tv(&rettv); + return retval; + } ++ # endif + +! # if defined(FEAT_COMPL_FUNC) || defined(PROTO) + /* + * Call vimL function "func" and return the result as a number. + * Returns -1 when calling the function fails. +*************** +*** 1530,1536 **** + clear_tv(&rettv); + return retval; + } +! #endif + + /* + * Call vimL function "func" and return the result as a list +--- 1533,1539 ---- + clear_tv(&rettv); + return retval; + } +! # endif + + /* + * Call vimL function "func" and return the result as a list +*************** +*** 1556,1563 **** + + return rettv.vval.v_list; + } +- + #endif + + /* + * Save the current function call pointer, and set it to NULL. +--- 1559,1566 ---- + + return rettv.vval.v_list; + } + #endif ++ + + /* + * Save the current function call pointer, and set it to NULL. +*** ../vim-7.1.035/src/ex_docmd.c Mon Jul 16 20:38:56 2007 +--- src/ex_docmd.c Sun Jul 15 17:20:09 2007 +*************** +*** 3406,3419 **** + case CMD_windo: + return arg; + +! #ifdef FEAT_SEARCH_EXTRA + case CMD_match: + if (*arg == NUL || !ends_excmd(*arg)) + { +! /* Dummy call to clear variables. */ +! set_context_in_highlight_cmd(xp, (char_u *)"link n"); +! xp->xp_context = EXPAND_HIGHLIGHT; +! xp->xp_pattern = arg; + arg = skipwhite(skiptowhite(arg)); + if (*arg != NUL) + { +--- 3406,3418 ---- + case CMD_windo: + return arg; + +! #ifdef FEAT_CMDL_COMPL +! # ifdef FEAT_SEARCH_EXTRA + case CMD_match: + if (*arg == NUL || !ends_excmd(*arg)) + { +! /* also complete "None" */ +! set_context_in_echohl_cmd(xp, arg); + arg = skipwhite(skiptowhite(arg)); + if (*arg != NUL) + { +*************** +*** 3422,3430 **** + } + } + return find_nextcmd(arg); +! #endif + +- #ifdef FEAT_CMDL_COMPL + /* + * All completion for the +cmdline_compl feature goes here. + */ +--- 3421,3428 ---- + } + } + return find_nextcmd(arg); +! # endif + + /* + * All completion for the +cmdline_compl feature goes here. + */ +*************** +*** 3622,3629 **** + break; + + case CMD_echohl: +! xp->xp_context = EXPAND_HIGHLIGHT; +! xp->xp_pattern = arg; + break; + #endif + case CMD_highlight: +--- 3620,3626 ---- + break; + + case CMD_echohl: +! set_context_in_echohl_cmd(xp, arg); + break; + #endif + case CMD_highlight: +*** ../vim-7.1.035/src/ex_getln.c Tue Jul 17 18:14:14 2007 +--- src/ex_getln.c Tue Jul 17 18:05:49 2007 +*************** +*** 268,274 **** +--- 268,276 ---- + { + xpc.xp_context = ccline.xp_context; + xpc.xp_pattern = ccline.cmdbuff; ++ # if defined(FEAT_USR_CMDS) && defined(FEAT_CMDL_COMPL) + xpc.xp_arg = ccline.xp_arg; ++ # endif + } + #endif + +*************** +*** 4151,4163 **** +--- 4153,4171 ---- + + #ifdef FEAT_EVAL + if (ccline.cmdfirstc == '=') ++ { ++ # ifdef FEAT_CMDL_COMPL + /* pass CMD_SIZE because there is no real command */ + set_context_for_expression(xp, str, CMD_SIZE); ++ # endif ++ } + else if (ccline.input_fn) + { + xp->xp_context = ccline.xp_context; + xp->xp_pattern = ccline.cmdbuff; ++ # if defined(FEAT_USR_CMDS) && defined(FEAT_CMDL_COMPL) + xp->xp_arg = ccline.xp_arg; ++ # endif + } + else + #endif +*************** +*** 4504,4509 **** +--- 4512,4523 ---- + /* Sort the results. Keep menu's in the specified order. */ + if (xp->xp_context != EXPAND_MENUNAMES && xp->xp_context != EXPAND_MENUS) + sort_strings(*file, *num_file); ++ ++ #ifdef FEAT_CMDL_COMPL ++ /* Reset the variables used for special highlight names expansion, so that ++ * they don't show up when getting normal highlight names by ID. */ ++ reset_expand_highlight(); ++ #endif + + return OK; + } +*** ../vim-7.1.035/src/proto/syntax.pro Sat May 5 19:23:52 2007 +--- src/proto/syntax.pro Fri Jul 13 19:51:43 2007 +*************** +*** 8,13 **** +--- 8,15 ---- + void syntax_clear __ARGS((buf_T *buf)); + void ex_syntax __ARGS((exarg_T *eap)); + int syntax_present __ARGS((buf_T *buf)); ++ void reset_expand_highlight __ARGS((void)); ++ void set_context_in_echohl_cmd __ARGS((expand_T *xp, char_u *arg)); + void set_context_in_syntax_cmd __ARGS((expand_T *xp, char_u *arg)); + char_u *get_syntax_name __ARGS((expand_T *xp, int idx)); + int syn_get_id __ARGS((win_T *wp, long lnum, colnr_T col, int trans, int *spellp)); +*** ../vim-7.1.035/src/syntax.c Thu Jun 28 11:59:13 2007 +--- src/syntax.c Fri Jul 13 19:51:39 2007 +*************** +*** 66,73 **** + #define HL_TABLE() ((struct hl_group *)((highlight_ga.ga_data))) + + #ifdef FEAT_CMDL_COMPL +! static int include_default = FALSE; /* include "default" for expansion */ +! static int include_link = FALSE; /* include "link" for expansion */ + #endif + + /* +--- 66,75 ---- + #define HL_TABLE() ((struct hl_group *)((highlight_ga.ga_data))) + + #ifdef FEAT_CMDL_COMPL +! /* Flags to indicate an additional string for highlight name completion. */ +! static int include_none = 0; /* when 1 include "None" */ +! static int include_default = 0; /* when 1 include "default" */ +! static int include_link = 0; /* when 2 include "link" and "clear" */ + #endif + + /* +*************** +*** 5968,5973 **** +--- 5970,5998 ---- + EXP_CASE /* expand ":syn case" arguments */ + } expand_what; + ++ /* ++ * Reset include_link, include_default, include_none to 0. ++ * Called when we are done expanding. ++ */ ++ void ++ reset_expand_highlight() ++ { ++ include_link = include_default = include_none = 0; ++ } ++ ++ /* ++ * Handle command line completion for :match and :echohl command: Add "None" ++ * as highlight group. ++ */ ++ void ++ set_context_in_echohl_cmd(xp, arg) ++ expand_T *xp; ++ char_u *arg; ++ { ++ xp->xp_context = EXPAND_HIGHLIGHT; ++ xp->xp_pattern = arg; ++ include_none = 1; ++ } + + /* + * Handle command line completion for :syntax command. +*************** +*** 5983,5990 **** + xp->xp_context = EXPAND_SYNTAX; + expand_what = EXP_SUBCMD; + xp->xp_pattern = arg; +! include_link = FALSE; +! include_default = FALSE; + + /* (part of) subcommand already typed */ + if (*arg != NUL) +--- 6008,6015 ---- + xp->xp_context = EXPAND_SYNTAX; + expand_what = EXP_SUBCMD; + xp->xp_pattern = arg; +! include_link = 0; +! include_default = 0; + + /* (part of) subcommand already typed */ + if (*arg != NUL) +*************** +*** 8949,8955 **** + return OK; + } + +! #ifdef FEAT_CMDL_COMPL + + static void highlight_list __ARGS((void)); + static void highlight_list_two __ARGS((int cnt, int attr)); +--- 8974,8980 ---- + return OK; + } + +! #if defined(FEAT_CMDL_COMPL) || defined(PROTO) + + static void highlight_list __ARGS((void)); + static void highlight_list_two __ARGS((int cnt, int attr)); +*************** +*** 8967,8974 **** + /* Default: expand group names */ + xp->xp_context = EXPAND_HIGHLIGHT; + xp->xp_pattern = arg; +! include_link = TRUE; +! include_default = TRUE; + + /* (part of) subcommand already typed */ + if (*arg != NUL) +--- 8992,8999 ---- + /* Default: expand group names */ + xp->xp_context = EXPAND_HIGHLIGHT; + xp->xp_pattern = arg; +! include_link = 2; +! include_default = 1; + + /* (part of) subcommand already typed */ + if (*arg != NUL) +*************** +*** 8976,8982 **** + p = skiptowhite(arg); + if (*p != NUL) /* past "default" or group name */ + { +! include_default = FALSE; + if (STRNCMP("default", arg, p - arg) == 0) + { + arg = skipwhite(p); +--- 9001,9007 ---- + p = skiptowhite(arg); + if (*p != NUL) /* past "default" or group name */ + { +! include_default = 0; + if (STRNCMP("default", arg, p - arg) == 0) + { + arg = skipwhite(p); +*************** +*** 8985,8991 **** + } + if (*p != NUL) /* past group name */ + { +! include_link = FALSE; + if (arg[1] == 'i' && arg[0] == 'N') + highlight_list(); + if (STRNCMP("link", arg, p - arg) == 0 +--- 9010,9016 ---- + } + if (*p != NUL) /* past group name */ + { +! include_link = 0; + if (arg[1] == 'i' && arg[0] == 'N') + highlight_list(); + if (STRNCMP("link", arg, p - arg) == 0 +*************** +*** 9045,9075 **** + expand_T *xp; + int idx; + { +- if (idx == highlight_ga.ga_len + #ifdef FEAT_CMDL_COMPL +! && include_link +! #endif +! ) + return (char_u *)"link"; +! if (idx == highlight_ga.ga_len + 1 +! #ifdef FEAT_CMDL_COMPL +! && include_link +! #endif +! ) + return (char_u *)"clear"; +- if (idx == highlight_ga.ga_len + 2 +- #ifdef FEAT_CMDL_COMPL +- && include_default + #endif +- ) +- return (char_u *)"default"; + if (idx < 0 || idx >= highlight_ga.ga_len) + return NULL; + return HL_TABLE()[idx].sg_name; + } + #endif + +! #ifdef FEAT_GUI + /* + * Free all the highlight group fonts. + * Used when quitting for systems which need it. +--- 9070,9094 ---- + expand_T *xp; + int idx; + { + #ifdef FEAT_CMDL_COMPL +! if (idx == highlight_ga.ga_len && include_none != 0) +! return (char_u *)"none"; +! if (idx == highlight_ga.ga_len + include_none && include_default != 0) +! return (char_u *)"default"; +! if (idx == highlight_ga.ga_len + include_none + include_default +! && include_link != 0) + return (char_u *)"link"; +! if (idx == highlight_ga.ga_len + include_none + include_default + 1 +! && include_link != 0) + return (char_u *)"clear"; + #endif + if (idx < 0 || idx >= highlight_ga.ga_len) + return NULL; + return HL_TABLE()[idx].sg_name; + } + #endif + +! #if defined(FEAT_GUI) || defined(PROTO) + /* + * Free all the highlight group fonts. + * Used when quitting for systems which need it. +*** ../vim-7.1.035/src/version.c Tue Jul 24 11:15:46 2007 +--- src/version.c Tue Jul 24 14:30:18 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 36, + /**/ + +-- +Apparently, 1 in 5 people in the world are Chinese. And there are 5 +people in my family, so it must be one of them. It's either my mum +or my dad. Or my older brother Colin. Or my younger brother +Ho-Cha-Chu. But I think it's Colin. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.037 b/7.1.037 new file mode 100644 index 00000000..4b6b1b69 --- /dev/null +++ b/7.1.037 @@ -0,0 +1,57 @@ +To: vim-dev@vim.org +Subject: patch 7.1.037 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.037 +Problem: strcpy() used for overlapping strings. (Chris Monson) +Solution: Use mch_memmove() instead. +Files: src/option.c + + +*** ../vim-7.1.036/src/option.c Tue Jul 24 09:50:22 2007 +--- src/option.c Sun Jul 22 16:42:47 2007 +*************** +*** 4628,4634 **** + if ((!(flags & P_COMMA) || *s != ',') + && vim_strchr(s + 1, *s) != NULL) + { +! STRCPY(s, s + 1); + --s; + } + } +--- 4628,4634 ---- + if ((!(flags & P_COMMA) || *s != ',') + && vim_strchr(s + 1, *s) != NULL) + { +! mch_memmove(s, s + 1, STRLEN(s)); + --s; + } + } +*** ../vim-7.1.036/src/version.c Tue Jul 24 14:32:44 2007 +--- src/version.c Tue Jul 24 14:56:03 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 37, + /**/ + +-- +This planet has -- or rather had -- a problem, which was this: most +of the people living on it were unhappy for pretty much of the time. +Many solutions were suggested for this problem, but most of these +were largely concerned with the movements of small green pieces of +paper, which is odd because on the whole it wasn't the small green +pieces of paper that were unhappy. + -- Douglas Adams, "The Hitchhiker's Guide to the Galaxy" + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.038 b/7.1.038 new file mode 100644 index 00000000..cdb3d665 --- /dev/null +++ b/7.1.038 @@ -0,0 +1,205 @@ +To: vim-dev@vim.org +Subject: patch 7.1.038 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.038 +Problem: When 'expandtab' is set then a Tab copied for 'copyindent' is + expanded to spaces, even when 'preserveindent' is set. (Alexei + Alexandrov) +Solution: Remove the check for 'expandtab'. Also fix that ">>" doesn't obey + 'preserveindent'. (Chris Lubinski) +Files: src/misc1.c + + +*** ../vim-7.1.037/src/misc1.c Thu May 10 21:03:33 2007 +--- src/misc1.c Tue Jul 24 15:24:50 2007 +*************** +*** 90,96 **** + */ + int + set_indent(size, flags) +! int size; + int flags; + { + char_u *p; +--- 90,96 ---- + */ + int + set_indent(size, flags) +! int size; /* measured in spaces */ + int flags; + { + char_u *p; +*************** +*** 98,109 **** + char_u *oldline; + char_u *s; + int todo; +! int ind_len; + int line_len; + int doit = FALSE; +! int ind_done; + int tab_pad; + int retval = FALSE; + + /* + * First check if there is anything to do and compute the number of +--- 98,111 ---- + char_u *oldline; + char_u *s; + int todo; +! int ind_len; /* measured in characters */ + int line_len; + int doit = FALSE; +! int ind_done = 0; /* measured in spaces */ + int tab_pad; + int retval = FALSE; ++ int orig_char_len = 0; /* number of initial whitespace chars when ++ 'et' and 'pi' are both set */ + + /* + * First check if there is anything to do and compute the number of +*************** +*** 116,123 **** + /* Calculate the buffer size for the new indent, and check to see if it + * isn't already set */ + +! /* if 'expandtab' isn't set: use TABs */ +! if (!curbuf->b_p_et) + { + /* If 'preserveindent' is set then reuse as much as possible of + * the existing indent structure for the new indent */ +--- 118,127 ---- + /* Calculate the buffer size for the new indent, and check to see if it + * isn't already set */ + +! /* if 'expandtab' isn't set: use TABs; if both 'expandtab' and +! * 'preserveindent' are set count the number of characters at the +! * beginning of the line to be copied */ +! if (!curbuf->b_p_et || (!(flags & SIN_INSERT) && curbuf->b_p_pi)) + { + /* If 'preserveindent' is set then reuse as much as possible of + * the existing indent structure for the new indent */ +*************** +*** 148,156 **** + ++p; + } + + /* Fill to next tabstop with a tab, if possible */ + tab_pad = (int)curbuf->b_p_ts - (ind_done % (int)curbuf->b_p_ts); +! if (todo >= tab_pad) + { + doit = TRUE; + todo -= tab_pad; +--- 152,165 ---- + ++p; + } + ++ /* Set initial number of whitespace chars to copy if we are ++ * preserving indent but expandtab is set */ ++ if (curbuf->b_p_et) ++ orig_char_len = ind_len; ++ + /* Fill to next tabstop with a tab, if possible */ + tab_pad = (int)curbuf->b_p_ts - (ind_done % (int)curbuf->b_p_ts); +! if (todo >= tab_pad && orig_char_len == 0) + { + doit = TRUE; + todo -= tab_pad; +*************** +*** 193,205 **** + else + p = skipwhite(p); + line_len = (int)STRLEN(p) + 1; +! newline = alloc(ind_len + line_len); +! if (newline == NULL) +! return FALSE; + + /* Put the characters in the new line. */ +- s = newline; +- todo = size; + /* if 'expandtab' isn't set: use TABs */ + if (!curbuf->b_p_et) + { +--- 202,239 ---- + else + p = skipwhite(p); + line_len = (int)STRLEN(p) + 1; +! +! /* If 'preserveindent' and 'expandtab' are both set keep the original +! * characters and allocate accordingly. We will fill the rest with spaces +! * after the if (!curbuf->b_p_et) below. */ +! if (orig_char_len != 0) +! { +! newline = alloc(orig_char_len + size - ind_done + line_len); +! if (newline == NULL) +! return FALSE; +! p = oldline; +! s = newline; +! while (orig_char_len > 0) +! { +! *s++ = *p++; +! orig_char_len--; +! } +! /* Skip over any additional white space (useful when newindent is less +! * than old) */ +! while (vim_iswhite(*p)) +! (void)*p++; +! todo = size-ind_done; +! } +! else +! { +! todo = size; +! newline = alloc(ind_len + line_len); +! if (newline == NULL) +! return FALSE; +! s = newline; +! } + + /* Put the characters in the new line. */ + /* if 'expandtab' isn't set: use TABs */ + if (!curbuf->b_p_et) + { +*************** +*** 1320,1327 **** + newindent += (int)curbuf->b_p_sw; + } + #endif +! /* Copy the indent only if expand tab is disabled */ +! if (curbuf->b_p_ci && !curbuf->b_p_et) + { + (void)copy_indent(newindent, saved_line); + +--- 1354,1361 ---- + newindent += (int)curbuf->b_p_sw; + } + #endif +! /* Copy the indent */ +! if (curbuf->b_p_ci) + { + (void)copy_indent(newindent, saved_line); + +*** ../vim-7.1.037/src/version.c Tue Jul 24 14:57:16 2007 +--- src/version.c Tue Jul 24 15:22:44 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 38, + /**/ + +-- +Time is an illusion. Lunchtime doubly so. + -- Ford Prefect, in Douglas Adams' + "The Hitchhiker's Guide to the Galaxy" + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.039 b/7.1.039 new file mode 100644 index 00000000..5ce096d2 --- /dev/null +++ b/7.1.039 @@ -0,0 +1,57 @@ +To: vim-dev@vim.org +Subject: patch 7.1.039 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.039 +Problem: A tag in a help file that starts with "help-tags" and contains a + percent sign may make Vim crash. (Ulf Harnhammar) +Solution: Use puts() instead of fprintf(). +Files: src/ex_cmds.c + + +*** ../vim-7.1.038/src/ex_cmds.c Tue Jul 24 11:15:46 2007 +--- src/ex_cmds.c Wed Jul 25 20:06:20 2007 +*************** +*** 6374,6382 **** + for (i = 0; i < ga.ga_len; ++i) + { + s = ((char_u **)ga.ga_data)[i]; +! if (STRNCMP(s, "help-tags", 9) == 0) + /* help-tags entry was added in formatted form */ +! fprintf(fd_tags, (char *)s); + else + { + fprintf(fd_tags, "%s\t/*", s); +--- 6374,6382 ---- + for (i = 0; i < ga.ga_len; ++i) + { + s = ((char_u **)ga.ga_data)[i]; +! if (STRNCMP(s, "help-tags\t", 10) == 0) + /* help-tags entry was added in formatted form */ +! fputs((char *)s, fd_tags); + else + { + fprintf(fd_tags, "%s\t/*", s); +*** ../vim-7.1.038/src/version.c Tue Jul 24 15:25:27 2007 +--- src/version.c Wed Jul 25 22:41:18 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 39, + /**/ + +-- +On the other hand, you have different fingers. + -- Steven Wright + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.040 b/7.1.040 new file mode 100644 index 00000000..febac6a0 --- /dev/null +++ b/7.1.040 @@ -0,0 +1,1843 @@ +To: vim-dev@vim.org +Subject: patch 7.1.040 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.040 +Problem: ":match" only supports three matches. +Solution: Add functions clearmatches(), getmatches(), matchadd(), + matchdelete() and setmatches(). Changed the data structures for + this. A small bug in syntax.c is fixed, so newly created + highlight groups can have their name resolved correctly from their + ID. (Martin Toft) +Files: runtime/doc/eval.txt, runtime/doc/pattern.txt, + runtime/doc/usr_41.txt, src/eval.c, src/ex_docmd.c, + src/proto/window.pro, src/screen.c, src/structs.h, src/syntax.c, + src/testdir/Makefile, src/testdir/test63.in, + src/testdir/test63.ok, src/window.c + + +*** ../vim-7.1.039/runtime/doc/eval.txt Tue Jul 17 16:31:15 2007 +--- runtime/doc/eval.txt Wed Jul 25 21:05:56 2007 +*************** +*** 1,4 **** +! *eval.txt* For Vim version 7.1. Last change: 2007 Jul 11 + + + VIM REFERENCE MANUAL by Bram Moolenaar +--- 1,4 ---- +! *eval.txt* For Vim version 7.1. Last change: 2007 Jul 25 + + + VIM REFERENCE MANUAL by Bram Moolenaar +*************** +*** 1557,1562 **** +--- 1557,1563 ---- + changenr() Number current change number + char2nr( {expr}) Number ASCII value of first char in {expr} + cindent( {lnum}) Number C indent for line {lnum} ++ clearmatches() None clear all matches + col( {expr}) Number column nr of cursor or mark + complete({startcol}, {matches}) String set Insert mode completion + complete_add( {expr}) Number add completion match +*************** +*** 1622,1627 **** +--- 1623,1629 ---- + getline( {lnum}) String line {lnum} of current buffer + getline( {lnum}, {end}) List lines {lnum} to {end} of current buffer + getloclist({nr}) List list of location list items ++ getmatches() List list of current matches + getpos( {expr}) List position of cursor, mark, etc. + getqflist() List list of quickfix items + getreg( [{regname} [, 1]]) String contents of register +*************** +*** 1676,1682 **** +--- 1678,1687 ---- + String check for mappings matching {name} + match( {expr}, {pat}[, {start}[, {count}]]) + Number position where {pat} matches in {expr} ++ matchadd( {group}, {pattern}[, {priority}[, {id}]]) ++ Number highlight {pattern} with {group} + matcharg( {nr}) List arguments of |:match| ++ matchdelete( {id}) Number delete match identified by {id} + matchend( {expr}, {pat}[, {start}[, {count}]]) + Number position where {pat} ends in {expr} + matchlist( {expr}, {pat}[, {start}[, {count}]]) +*************** +*** 1731,1736 **** +--- 1736,1742 ---- + setline( {lnum}, {line}) Number set line {lnum} to {line} + setloclist( {nr}, {list}[, {action}]) + Number modify location list using {list} ++ setmatches( {list}) Number restore a list of matches + setpos( {expr}, {list}) none set the {expr} position to {list} + setqflist( {list}[, {action}]) Number modify quickfix list using {list} + setreg( {n}, {v}[, {opt}]) Number set register to value and type +*************** +*** 2012,2017 **** +--- 2018,2027 ---- + feature, -1 is returned. + See |C-indenting|. + ++ clearmatches() *clearmatches()* ++ Clears all matches previously defined by |matchadd()| and the ++ |:match| commands. ++ + *col()* + col({expr}) The result is a Number, which is the byte index of the column + position given with {expr}. The accepted positions are: +*************** +*** 2918,2923 **** +--- 2928,2955 ---- + returned. For an invalid window number {nr}, an empty list is + returned. Otherwise, same as getqflist(). + ++ getmatches() *getmatches()* ++ Returns a |List| with all matches previously defined by ++ |matchadd()| and the |:match| commands. |getmatches()| is ++ useful in combination with |setmatches()|, as |setmatches()| ++ can restore a list of matches saved by |getmatches()|. ++ Example: > ++ :echo getmatches() ++ < [{'group': 'MyGroup1', 'pattern': 'TODO', ++ 'priority': 10, 'id': 1}, {'group': 'MyGroup2', ++ 'pattern': 'FIXME', 'priority': 10, 'id': 2}] > ++ :let m = getmatches() ++ :call clearmatches() ++ :echo getmatches() ++ < [] > ++ :call setmatches(m) ++ :echo getmatches() ++ < [{'group': 'MyGroup1', 'pattern': 'TODO', ++ 'priority': 10, 'id': 1}, {'group': 'MyGroup2', ++ 'pattern': 'FIXME', 'priority': 10, 'id': 2}] > ++ :unlet m ++ < ++ + getqflist() *getqflist()* + Returns a list with all the current quickfix errors. Each + list item is a dictionary with these entries: +*************** +*** 3622,3627 **** +--- 3654,3697 ---- + the pattern. 'smartcase' is NOT used. The matching is always + done like 'magic' is set and 'cpoptions' is empty. + ++ *matchadd()* *E798* *E799* *E801* ++ matchadd({group}, {pattern}[, {priority}[, {id}]]) ++ Defines a pattern to be highlighted in the current window (a ++ "match"). It will be highlighted with {group}. Returns an ++ identification number (ID), which can be used to delete the ++ match using |matchdelete()|. ++ ++ The optional {priority} argument assigns a priority to the ++ match. A match with a high priority will have its ++ highlighting overrule that of a match with a lower priority. ++ A priority is specified as an integer (negative numbers are no ++ exception). If the {priority} argument is not specified, the ++ default priority is 10. The priority of 'hlsearch' is zero, ++ hence all matches with a priority greater than zero will ++ overrule it. Syntax highlighting (see 'syntax') is a separate ++ mechanism, and regardless of the chosen priority a match will ++ always overrule syntax highlighting. ++ ++ The optional {id} argument allows the request for a specific ++ match ID. If a specified ID is already taken, an error ++ message will appear and the match will not be added. An ID ++ is specified as a positive integer (zero excluded). IDs 1, 2 ++ and 3 are reserved for |:match|, |:2match| and |:3match|, ++ respectively. If the {id} argument is not specified, ++ |matchadd()| automatically chooses a free ID. ++ ++ The number of matches is not limited, as it is the case with ++ the |:match| commands. ++ ++ Example: > ++ :highlight MyGroup ctermbg=green guibg=green ++ :let m = matchadd("MyGroup", "TODO") ++ < Deletion of the pattern: > ++ :call matchdelete(m) ++ ++ < A list of matches defined by |matchadd()| and |:match| are ++ available from |getmatches()|. All matches can be deleted in ++ one operation by |clearmatches()|. + + matcharg({nr}) *matcharg()* + Selects the {nr} match item, as set with a |:match|, +*************** +*** 3631,3638 **** + The pattern used. + When {nr} is not 1, 2 or 3 returns an empty |List|. + When there is no match item set returns ['', '']. +! This is usef to save and restore a |:match|. +! + + matchend({expr}, {pat}[, {start}[, {count}]]) *matchend()* + Same as match(), but return the index of first character after +--- 3701,3715 ---- + The pattern used. + When {nr} is not 1, 2 or 3 returns an empty |List|. + When there is no match item set returns ['', '']. +! This is useful to save and restore a |:match|. +! Highlighting matches using the |:match| commands are limited +! to three matches. |matchadd()| does not have this limitation. +! +! matchdelete({id}) *matchdelete()* *E802* *E803* +! Deletes a match with ID {id} previously defined by |matchadd()| +! or one of the |:match| commands. Returns 0 if succesfull, +! otherwise -1. See example for |matchadd()|. All matches can +! be deleted in one operation by |clearmatches()|. + + matchend({expr}, {pat}[, {start}[, {count}]]) *matchend()* + Same as match(), but return the index of first character after +*************** +*** 4385,4391 **** + When {nr} is zero the current window is used. For a location + list window, the displayed location list is modified. For an + invalid window number {nr}, -1 is returned. +! Otherwise, same as setqflist(). + + *setpos()* + setpos({expr}, {list}) +--- 4462,4474 ---- + When {nr} is zero the current window is used. For a location + list window, the displayed location list is modified. For an + invalid window number {nr}, -1 is returned. +! Otherwise, same as |setqflist()|. +! Also see |location-list|. +! +! setmatches({list}) *setmatches()* +! Restores a list of matches saved by |getmatches()|. Returns 0 +! if succesfull, otherwise -1. All current matches are cleared +! before the list is restored. See example for |getmatches()|. + + *setpos()* + setpos({expr}, {list}) +*** ../vim-7.1.039/runtime/doc/pattern.txt Sat May 12 16:57:31 2007 +--- runtime/doc/pattern.txt Tue Jul 24 15:47:01 2007 +*************** +*** 1212,1218 **** + {group} must exist at the moment this command is executed. + + The {group} highlighting still applies when a character is +! to be highlighted for 'hlsearch'. + + Note that highlighting the last used search pattern with + 'hlsearch' is used in all windows, while the pattern defined +--- 1212,1221 ---- + {group} must exist at the moment this command is executed. + + The {group} highlighting still applies when a character is +! to be highlighted for 'hlsearch', as the highlighting for +! matches is given higher priority than that of 'hlsearch'. +! Syntax highlighting (see 'syntax') is also overruled by +! matches. + + Note that highlighting the last used search pattern with + 'hlsearch' is used in all windows, while the pattern defined +*************** +*** 1226,1233 **** + display you may get unexpected results. That is because Vim + looks for a match in the line where redrawing starts. + +! Also see |matcharg()|, it returns the highlight group and +! pattern of a previous :match command. + + Another example, which highlights all characters in virtual + column 72 and more: > +--- 1229,1243 ---- + display you may get unexpected results. That is because Vim + looks for a match in the line where redrawing starts. + +! Also see |matcharg()|and |getmatches()|. The former returns +! the highlight group and pattern of a previous |:match| +! command. The latter returns a list with highlight groups and +! patterns defined by both |matchadd()| and |:match|. +! +! Highlighting matches using |:match| are limited to three +! matches (aside from |:match|, |:2match| and |:3match|are +! available). |matchadd()| does not have this limitation and in +! addition makes it possible to prioritize matches. + + Another example, which highlights all characters in virtual + column 72 and more: > +*** ../vim-7.1.039/runtime/doc/usr_41.txt Sat May 12 15:54:55 2007 +--- runtime/doc/usr_41.txt Tue Jul 24 15:47:01 2007 +*************** +*** 763,775 **** +--- 763,784 ---- + foldtextresult() get the text displayed for a closed fold + + Syntax and highlighting: ++ clearmatches() clear all matches defined by |matchadd()| and ++ the |:match| commands ++ getmatches() get all matches defined by |matchadd()| and ++ the |:match| commands + hlexists() check if a highlight group exists + hlID() get ID of a highlight group + synID() get syntax ID at a specific position + synIDattr() get a specific attribute of a syntax ID + synIDtrans() get translated syntax ID + diff_hlID() get highlight ID for diff mode at a position ++ matchadd() define a pattern to highlight (a "match") + matcharg() get info about |:match| arguments ++ matchdelete() delete a match defined by |matchadd()| or a ++ |:match| command ++ setmatches() restore a list of matches saved by ++ |getmatches()| + + Spelling: + spellbadword() locate badly spelled word at or after cursor +*** ../vim-7.1.039/src/eval.c Tue Jul 24 14:32:44 2007 +--- src/eval.c Tue Jul 24 20:40:52 2007 +*************** +*** 475,480 **** +--- 475,481 ---- + static void f_changenr __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_char2nr __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_cindent __ARGS((typval_T *argvars, typval_T *rettv)); ++ static void f_clearmatches __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_col __ARGS((typval_T *argvars, typval_T *rettv)); + #if defined(FEAT_INS_EXPAND) + static void f_complete __ARGS((typval_T *argvars, typval_T *rettv)); +*************** +*** 529,534 **** +--- 530,536 ---- + static void f_getftime __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_getftype __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_getline __ARGS((typval_T *argvars, typval_T *rettv)); ++ static void f_getmatches __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_getpos __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_getqflist __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_getreg __ARGS((typval_T *argvars, typval_T *rettv)); +*************** +*** 577,583 **** +--- 579,587 ---- + static void f_maparg __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_mapcheck __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_match __ARGS((typval_T *argvars, typval_T *rettv)); ++ static void f_matchadd __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_matcharg __ARGS((typval_T *argvars, typval_T *rettv)); ++ static void f_matchdelete __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_matchend __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_matchlist __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_matchstr __ARGS((typval_T *argvars, typval_T *rettv)); +*************** +*** 618,623 **** +--- 622,628 ---- + static void f_setcmdpos __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_setline __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_setloclist __ARGS((typval_T *argvars, typval_T *rettv)); ++ static void f_setmatches __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_setpos __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_setqflist __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_setreg __ARGS((typval_T *argvars, typval_T *rettv)); +*************** +*** 7046,7051 **** +--- 7051,7057 ---- + {"changenr", 0, 0, f_changenr}, + {"char2nr", 1, 1, f_char2nr}, + {"cindent", 1, 1, f_cindent}, ++ {"clearmatches", 0, 0, f_clearmatches}, + {"col", 1, 1, f_col}, + #if defined(FEAT_INS_EXPAND) + {"complete", 2, 2, f_complete}, +*************** +*** 7102,7107 **** +--- 7108,7114 ---- + {"getftype", 1, 1, f_getftype}, + {"getline", 1, 2, f_getline}, + {"getloclist", 1, 1, f_getqflist}, ++ {"getmatches", 0, 0, f_getmatches}, + {"getpos", 1, 1, f_getpos}, + {"getqflist", 0, 0, f_getqflist}, + {"getreg", 0, 2, f_getreg}, +*************** +*** 7152,7158 **** +--- 7159,7167 ---- + {"maparg", 1, 3, f_maparg}, + {"mapcheck", 1, 3, f_mapcheck}, + {"match", 2, 4, f_match}, ++ {"matchadd", 2, 4, f_matchadd}, + {"matcharg", 1, 1, f_matcharg}, ++ {"matchdelete", 1, 1, f_matchdelete}, + {"matchend", 2, 4, f_matchend}, + {"matchlist", 2, 4, f_matchlist}, + {"matchstr", 2, 4, f_matchstr}, +*************** +*** 7193,7198 **** +--- 7202,7208 ---- + {"setcmdpos", 1, 1, f_setcmdpos}, + {"setline", 2, 2, f_setline}, + {"setloclist", 2, 3, f_setloclist}, ++ {"setmatches", 1, 1, f_setmatches}, + {"setpos", 2, 2, f_setpos}, + {"setqflist", 1, 2, f_setqflist}, + {"setreg", 2, 3, f_setreg}, +*************** +*** 8243,8248 **** +--- 8253,8272 ---- + } + + /* ++ * "clearmatches()" function ++ */ ++ /*ARGSUSED*/ ++ static void ++ f_clearmatches(argvars, rettv) ++ typval_T *argvars; ++ typval_T *rettv; ++ { ++ #ifdef FEAT_SEARCH_EXTRA ++ clear_matches(curwin); ++ #endif ++ } ++ ++ /* + * "col(string)" function + */ + static void +*************** +*** 10278,10283 **** +--- 10302,10341 ---- + } + + /* ++ * "getmatches()" function ++ */ ++ /*ARGSUSED*/ ++ static void ++ f_getmatches(argvars, rettv) ++ typval_T *argvars; ++ typval_T *rettv; ++ { ++ #ifdef FEAT_SEARCH_EXTRA ++ dict_T *dict; ++ matchitem_T *cur = curwin->w_match_head; ++ ++ rettv->vval.v_number = 0; ++ ++ if (rettv_list_alloc(rettv) == OK) ++ { ++ while (cur != NULL) ++ { ++ dict = dict_alloc(); ++ if (dict == NULL) ++ return; ++ ++dict->dv_refcount; ++ dict_add_nr_str(dict, "group", 0L, syn_id2name(cur->hlg_id)); ++ dict_add_nr_str(dict, "pattern", 0L, cur->pattern); ++ dict_add_nr_str(dict, "priority", (long)cur->priority, NULL); ++ dict_add_nr_str(dict, "id", (long)cur->id, NULL); ++ list_append_dict(rettv->vval.v_list, dict); ++ cur = cur->next; ++ } ++ } ++ #endif ++ } ++ ++ /* + * "getpos(string)" function + */ + static void +*************** +*** 12448,12453 **** +--- 12506,12547 ---- + } + + /* ++ * "matchadd()" function ++ */ ++ static void ++ f_matchadd(argvars, rettv) ++ typval_T *argvars; ++ typval_T *rettv; ++ { ++ #ifdef FEAT_SEARCH_EXTRA ++ char_u buf[NUMBUFLEN]; ++ char_u *grp = get_tv_string_buf_chk(&argvars[0], buf); /* group */ ++ char_u *pat = get_tv_string_buf_chk(&argvars[1], buf); /* pattern */ ++ int prio = 10; /* default priority */ ++ int id = -1; ++ int error = FALSE; ++ ++ rettv->vval.v_number = -1; ++ ++ if (grp == NULL || pat == NULL) ++ return; ++ if (argvars[2].v_type != VAR_UNKNOWN) ++ prio = get_tv_number_chk(&argvars[2], &error); ++ if (argvars[3].v_type != VAR_UNKNOWN) ++ id = get_tv_number_chk(&argvars[3], &error); ++ if (error == TRUE) ++ return; ++ if (id >= 1 && id <= 3) ++ { ++ EMSGN("E798: ID is reserved for \":match\": %ld", id); ++ return; ++ } ++ ++ rettv->vval.v_number = match_add(curwin, grp, pat, prio, id); ++ #endif ++ } ++ ++ /* + * "matcharg()" function + */ + static void +*************** +*** 12458,12477 **** + if (rettv_list_alloc(rettv) == OK) + { + #ifdef FEAT_SEARCH_EXTRA +! int mi = get_tv_number(&argvars[0]); + +! if (mi >= 1 && mi <= 3) + { +! list_append_string(rettv->vval.v_list, +! syn_id2name(curwin->w_match_id[mi - 1]), -1); +! list_append_string(rettv->vval.v_list, +! curwin->w_match_pat[mi - 1], -1); + } + #endif + } + } + + /* + * "matchend()" function + */ + static void +--- 12552,12593 ---- + if (rettv_list_alloc(rettv) == OK) + { + #ifdef FEAT_SEARCH_EXTRA +! int id = get_tv_number(&argvars[0]); +! matchitem_T *m; + +! if (id >= 1 && id <= 3) + { +! if ((m = (matchitem_T *)get_match(curwin, id)) != NULL) +! { +! list_append_string(rettv->vval.v_list, +! syn_id2name(m->hlg_id), -1); +! list_append_string(rettv->vval.v_list, m->pattern, -1); +! } +! else +! { +! list_append_string(rettv->vval.v_list, NUL, -1); +! list_append_string(rettv->vval.v_list, NUL, -1); +! } + } + #endif + } + } + + /* ++ * "matchdelete()" function ++ */ ++ static void ++ f_matchdelete(argvars, rettv) ++ typval_T *argvars; ++ typval_T *rettv; ++ { ++ #ifdef FEAT_SEARCH_EXTRA ++ rettv->vval.v_number = match_delete(curwin, ++ (int)get_tv_number(&argvars[0]), TRUE); ++ #endif ++ } ++ ++ /* + * "matchend()" function + */ + static void +*************** +*** 14506,14511 **** +--- 14622,14687 ---- + win = find_win_by_nr(&argvars[0], NULL); + if (win != NULL) + set_qf_ll_list(win, &argvars[1], &argvars[2], rettv); ++ } ++ ++ /* ++ * "setmatches()" function ++ */ ++ static void ++ f_setmatches(argvars, rettv) ++ typval_T *argvars; ++ typval_T *rettv; ++ { ++ #ifdef FEAT_SEARCH_EXTRA ++ list_T *l; ++ listitem_T *li; ++ dict_T *d; ++ ++ rettv->vval.v_number = -1; ++ if (argvars[0].v_type != VAR_LIST) ++ { ++ EMSG(_(e_listreq)); ++ return; ++ } ++ if ((l = argvars[0].vval.v_list) != NULL) ++ { ++ ++ /* To some extent make sure that we are dealing with a list from ++ * "getmatches()". */ ++ li = l->lv_first; ++ while (li != NULL) ++ { ++ if (li->li_tv.v_type != VAR_DICT ++ || (d = li->li_tv.vval.v_dict) == NULL) ++ { ++ EMSG(_(e_invarg)); ++ return; ++ } ++ if (!(dict_find(d, (char_u *)"group", -1) != NULL ++ && dict_find(d, (char_u *)"pattern", -1) != NULL ++ && dict_find(d, (char_u *)"priority", -1) != NULL ++ && dict_find(d, (char_u *)"id", -1) != NULL)) ++ { ++ EMSG(_(e_invarg)); ++ return; ++ } ++ li = li->li_next; ++ } ++ ++ clear_matches(curwin); ++ li = l->lv_first; ++ while (li != NULL) ++ { ++ d = li->li_tv.vval.v_dict; ++ match_add(curwin, get_dict_string(d, (char_u *)"group", FALSE), ++ get_dict_string(d, (char_u *)"pattern", FALSE), ++ (int)get_dict_number(d, (char_u *)"priority"), ++ (int)get_dict_number(d, (char_u *)"id")); ++ li = li->li_next; ++ } ++ rettv->vval.v_number = 0; ++ } ++ #endif + } + + /* +*** ../vim-7.1.039/src/ex_docmd.c Tue Jul 24 14:32:44 2007 +--- src/ex_docmd.c Tue Jul 24 15:47:01 2007 +*************** +*** 10817,10828 **** + exarg_T *eap; + { + char_u *p; + char_u *end; + int c; +! int mi; + + if (eap->line2 <= 3) +! mi = eap->line2 - 1; + else + { + EMSG(e_invcmd); +--- 10817,10829 ---- + exarg_T *eap; + { + char_u *p; ++ char_u *g; + char_u *end; + int c; +! int id; + + if (eap->line2 <= 3) +! id = eap->line2; + else + { + EMSG(e_invcmd); +*************** +*** 10831,10843 **** + + /* First clear any old pattern. */ + if (!eap->skip) +! { +! vim_free(curwin->w_match[mi].regprog); +! curwin->w_match[mi].regprog = NULL; +! vim_free(curwin->w_match_pat[mi]); +! curwin->w_match_pat[mi] = NULL; +! redraw_later(SOME_VALID); /* always need a redraw */ +! } + + if (ends_excmd(*eap->arg)) + end = eap->arg; +--- 10832,10838 ---- + + /* First clear any old pattern. */ + if (!eap->skip) +! match_delete(curwin, id, FALSE); + + if (ends_excmd(*eap->arg)) + end = eap->arg; +*************** +*** 10848,10862 **** + { + p = skiptowhite(eap->arg); + if (!eap->skip) +! { +! curwin->w_match_id[mi] = syn_namen2id(eap->arg, +! (int)(p - eap->arg)); +! if (curwin->w_match_id[mi] == 0) +! { +! EMSG2(_(e_nogroup), eap->arg); +! return; +! } +! } + p = skipwhite(p); + if (*p == NUL) + { +--- 10843,10849 ---- + { + p = skiptowhite(eap->arg); + if (!eap->skip) +! g = vim_strnsave(eap->arg, (int)(p - eap->arg)); + p = skipwhite(p); + if (*p == NUL) + { +*************** +*** 10880,10893 **** + + c = *end; + *end = NUL; +! curwin->w_match[mi].regprog = vim_regcomp(p + 1, RE_MAGIC); +! if (curwin->w_match[mi].regprog == NULL) +! { +! EMSG2(_(e_invarg2), p); +! *end = c; +! return; +! } +! curwin->w_match_pat[mi] = vim_strsave(p + 1); + *end = c; + } + } +--- 10867,10874 ---- + + c = *end; + *end = NUL; +! match_add(curwin, g, p + 1, 10, id); +! vim_free(g); + *end = c; + } + } +*** ../vim-7.1.039/src/proto/window.pro Sat May 5 19:52:36 2007 +--- src/proto/window.pro Tue Jul 24 16:38:19 2007 +*************** +*** 59,62 **** +--- 59,66 ---- + int only_one_window __ARGS((void)); + void check_lnums __ARGS((int do_curwin)); + int win_hasvertsplit __ARGS((void)); ++ int match_add __ARGS((win_T *wp, char_u *grp, char_u *pat, int prio, int id)); ++ int match_delete __ARGS((win_T *wp, int id, int perr)); ++ void clear_matches __ARGS((win_T *wp)); ++ matchitem_T *get_match __ARGS((win_T *wp, int id)); + /* vim: set ft=c : */ +*** ../vim-7.1.039/src/screen.c Tue Jun 19 17:49:12 2007 +--- src/screen.c Thu Jul 26 21:55:40 2007 +*************** +*** 100,126 **** + static int screen_cur_row, screen_cur_col; /* last known cursor position */ + + #ifdef FEAT_SEARCH_EXTRA +- /* +- * Struct used for highlighting 'hlsearch' matches for the last use search +- * pattern or a ":match" item. +- * For 'hlsearch' there is one pattern for all windows. For ":match" there is +- * a different pattern for each window. +- */ +- typedef struct +- { +- regmmatch_T rm; /* points to the regexp program; contains last found +- match (may continue in next line) */ +- buf_T *buf; /* the buffer to search for a match */ +- linenr_T lnum; /* the line to search for a match */ +- int attr; /* attributes to be used for a match */ +- int attr_cur; /* attributes currently active in win_line() */ +- linenr_T first_lnum; /* first lnum to search for multi-line pat */ +- colnr_T startcol; /* in win_line() points to char where HL starts */ +- colnr_T endcol; /* in win_line() points to char where HL ends */ +- } match_T; +- + static match_T search_hl; /* used for 'hlsearch' highlight matching */ +- static match_T match_hl[3]; /* used for ":match" highlight matching */ + #endif + + #ifdef FEAT_FOLDING +--- 100,106 ---- +*************** +*** 155,160 **** +--- 135,141 ---- + static void redraw_custum_statusline __ARGS((win_T *wp)); + #endif + #ifdef FEAT_SEARCH_EXTRA ++ #define SEARCH_HL_PRIORITY 0 + static void start_search_hl __ARGS((void)); + static void end_search_hl __ARGS((void)); + static void prepare_search_hl __ARGS((win_T *wp, linenr_T lnum)); +*************** +*** 787,792 **** +--- 768,774 ---- + w_topline got smaller a bit */ + #endif + #ifdef FEAT_SEARCH_EXTRA ++ matchitem_T *cur; /* points to the match list */ + int top_to_mod = FALSE; /* redraw above mod_top */ + #endif + +*************** +*** 848,865 **** + #endif + + #ifdef FEAT_SEARCH_EXTRA +! /* Setup for ":match" and 'hlsearch' highlighting. Disable any previous + * match */ +! for (i = 0; i < 3; ++i) + { +! match_hl[i].rm = wp->w_match[i]; +! if (wp->w_match_id[i] == 0) +! match_hl[i].attr = 0; + else +! match_hl[i].attr = syn_id2attr(wp->w_match_id[i]); +! match_hl[i].buf = buf; +! match_hl[i].lnum = 0; +! match_hl[i].first_lnum = 0; + } + search_hl.buf = buf; + search_hl.lnum = 0; +--- 830,849 ---- + #endif + + #ifdef FEAT_SEARCH_EXTRA +! /* Setup for match and 'hlsearch' highlighting. Disable any previous + * match */ +! cur = wp->w_match_head; +! while (cur != NULL) + { +! cur->hl.rm = cur->match; +! if (cur->hlg_id == 0) +! cur->hl.attr = 0; + else +! cur->hl.attr = syn_id2attr(cur->hlg_id); +! cur->hl.buf = buf; +! cur->hl.lnum = 0; +! cur->hl.first_lnum = 0; +! cur = cur->next; + } + search_hl.buf = buf; + search_hl.lnum = 0; +*************** +*** 923,941 **** + * change in one line may make the Search highlighting in a + * previous line invalid. Simple solution: redraw all visible + * lines above the change. +! * Same for a ":match" pattern. + */ + if (search_hl.rm.regprog != NULL + && re_multiline(search_hl.rm.regprog)) + top_to_mod = TRUE; + else +! for (i = 0; i < 3; ++i) +! if (match_hl[i].rm.regprog != NULL +! && re_multiline(match_hl[i].rm.regprog)) + { + top_to_mod = TRUE; + break; + } + #endif + } + #ifdef FEAT_FOLDING +--- 907,931 ---- + * change in one line may make the Search highlighting in a + * previous line invalid. Simple solution: redraw all visible + * lines above the change. +! * Same for a match pattern. + */ + if (search_hl.rm.regprog != NULL + && re_multiline(search_hl.rm.regprog)) + top_to_mod = TRUE; + else +! { +! cur = wp->w_match_head; +! while (cur != NULL) +! { +! if (cur->match.regprog != NULL +! && re_multiline(cur->match.regprog)) + { + top_to_mod = TRUE; + break; + } ++ cur = cur->next; ++ } ++ } + #endif + } + #ifdef FEAT_FOLDING +*************** +*** 2626,2635 **** + int line_attr = 0; /* atrribute for the whole line */ + #endif + #ifdef FEAT_SEARCH_EXTRA +! match_T *shl; /* points to search_hl or match_hl */ +! #endif +! #if defined(FEAT_SEARCH_EXTRA) || defined(FEAT_MBYTE) +! int i; + #endif + #ifdef FEAT_ARABIC + int prev_c = 0; /* previous Arabic character */ +--- 2634,2646 ---- + int line_attr = 0; /* atrribute for the whole line */ + #endif + #ifdef FEAT_SEARCH_EXTRA +! matchitem_T *cur; /* points to the match list */ +! match_T *shl; /* points to search_hl or a match */ +! int shl_flag; /* flag to indicate whether search_hl +! has been processed or not */ +! int prevcol_hl_flag; /* flag to indicate whether prevcol +! equals startcol of search_hl or one +! of the matches */ + #endif + #ifdef FEAT_ARABIC + int prev_c = 0; /* previous Arabic character */ +*************** +*** 3074,3085 **** + + #ifdef FEAT_SEARCH_EXTRA + /* +! * Handle highlighting the last used search pattern and ":match". +! * Do this for both search_hl and match_hl[3]. + */ +! for (i = 3; i >= 0; --i) + { +! shl = (i == 3) ? &search_hl : &match_hl[i]; + shl->startcol = MAXCOL; + shl->endcol = MAXCOL; + shl->attr_cur = 0; +--- 3085,3104 ---- + + #ifdef FEAT_SEARCH_EXTRA + /* +! * Handle highlighting the last used search pattern and matches. +! * Do this for both search_hl and the match list. + */ +! cur = wp->w_match_head; +! shl_flag = FALSE; +! while (cur != NULL || shl_flag == FALSE) + { +! if (shl_flag == FALSE) +! { +! shl = &search_hl; +! shl_flag = TRUE; +! } +! else +! shl = &cur->hl; + shl->startcol = MAXCOL; + shl->endcol = MAXCOL; + shl->attr_cur = 0; +*************** +*** 3122,3127 **** +--- 3141,3148 ---- + area_highlighting = TRUE; + } + } ++ if (shl != &search_hl && cur != NULL) ++ cur = cur->next; + } + #endif + +*************** +*** 3388,3400 **** + * After end, check for start/end of next match. + * When another match, have to check for start again. + * Watch out for matching an empty string! +! * Do this first for search_hl, then for match_hl, so that +! * ":match" overrules 'hlsearch'. + */ + v = (long)(ptr - line); +! for (i = 3; i >= 0; --i) +! { +! shl = (i == 3) ? &search_hl : &match_hl[i]; + while (shl->rm.regprog != NULL) + { + if (shl->startcol != MAXCOL +--- 3409,3432 ---- + * After end, check for start/end of next match. + * When another match, have to check for start again. + * Watch out for matching an empty string! +! * Do this for 'search_hl' and the match list (ordered by +! * priority). + */ + v = (long)(ptr - line); +! cur = wp->w_match_head; +! shl_flag = FALSE; +! while (cur != NULL || shl_flag == FALSE) +! { +! if (shl_flag == FALSE +! && ((cur != NULL +! && cur->priority > SEARCH_HL_PRIORITY) +! || cur == NULL)) +! { +! shl = &search_hl; +! shl_flag = TRUE; +! } +! else +! shl = &cur->hl; + while (shl->rm.regprog != NULL) + { + if (shl->startcol != MAXCOL +*************** +*** 3442,3458 **** + } + break; + } + } + +! /* ":match" highlighting overrules 'hlsearch' */ +! for (i = 0; i <= 3; ++i) +! if (i == 3) +! search_attr = search_hl.attr_cur; +! else if (match_hl[i].attr_cur != 0) + { +! search_attr = match_hl[i].attr_cur; +! break; + } + } + #endif + +--- 3474,3505 ---- + } + break; + } ++ if (shl != &search_hl && cur != NULL) ++ cur = cur->next; + } + +! /* Use attributes from match with highest priority among +! * 'search_hl' and the match list. */ +! search_attr = search_hl.attr_cur; +! cur = wp->w_match_head; +! shl_flag = FALSE; +! while (cur != NULL || shl_flag == FALSE) +! { +! if (shl_flag == FALSE +! && ((cur != NULL +! && cur->priority > SEARCH_HL_PRIORITY) +! || cur == NULL)) + { +! shl = &search_hl; +! shl_flag = TRUE; + } ++ else ++ shl = &cur->hl; ++ if (shl->attr_cur != 0) ++ search_attr = shl->attr_cur; ++ if (shl != &search_hl && cur != NULL) ++ cur = cur->next; ++ } + } + #endif + +*************** +*** 3613,3618 **** +--- 3660,3667 ---- + * Draw it as a space with a composing char. */ + if (utf_iscomposing(mb_c)) + { ++ int i; ++ + for (i = Screen_mco - 1; i > 0; --i) + u8cc[i] = u8cc[i - 1]; + u8cc[0] = mb_c; +*************** +*** 4256,4269 **** + * highlight match at end of line. If it's beyond the last + * char on the screen, just overwrite that one (tricky!) Not + * needed when a '$' was displayed for 'list'. */ + if (lcs_eol == lcs_eol_one + && ((area_attr != 0 && vcol == fromcol && c == NUL) + #ifdef FEAT_SEARCH_EXTRA + /* highlight 'hlsearch' match at end of line */ +! || ((prevcol == (long)search_hl.startcol +! || prevcol == (long)match_hl[0].startcol +! || prevcol == (long)match_hl[1].startcol +! || prevcol == (long)match_hl[2].startcol) + # if defined(LINE_ATTR) + && did_line_attr <= 1 + # endif +--- 4305,4333 ---- + * highlight match at end of line. If it's beyond the last + * char on the screen, just overwrite that one (tricky!) Not + * needed when a '$' was displayed for 'list'. */ ++ #ifdef FEAT_SEARCH_EXTRA ++ prevcol_hl_flag = FALSE; ++ if (prevcol == (long)search_hl.startcol) ++ prevcol_hl_flag = TRUE; ++ else ++ { ++ cur = wp->w_match_head; ++ while (cur != NULL) ++ { ++ if (prevcol == (long)cur->hl.startcol) ++ { ++ prevcol_hl_flag = TRUE; ++ break; ++ } ++ cur = cur->next; ++ } ++ } ++ #endif + if (lcs_eol == lcs_eol_one + && ((area_attr != 0 && vcol == fromcol && c == NUL) + #ifdef FEAT_SEARCH_EXTRA + /* highlight 'hlsearch' match at end of line */ +! || (prevcol_hl_flag == TRUE + # if defined(LINE_ATTR) + && did_line_attr <= 1 + # endif +*************** +*** 4304,4318 **** + #ifdef FEAT_SEARCH_EXTRA + if (area_attr == 0) + { +! for (i = 0; i <= 3; ++i) +! { +! if (i == 3) +! char_attr = search_hl.attr; +! else if ((ptr - line) - 1 == (long)match_hl[i].startcol) + { +! char_attr = match_hl[i].attr; +! break; + } + } + } + #endif +--- 4368,4394 ---- + #ifdef FEAT_SEARCH_EXTRA + if (area_attr == 0) + { +! /* Use attributes from match with highest priority among +! * 'search_hl' and the match list. */ +! char_attr = search_hl.attr; +! cur = wp->w_match_head; +! shl_flag = FALSE; +! while (cur != NULL || shl_flag == FALSE) +! { +! if (shl_flag == FALSE +! && ((cur != NULL +! && cur->priority > SEARCH_HL_PRIORITY) +! || cur == NULL)) + { +! shl = &search_hl; +! shl_flag = TRUE; + } ++ else ++ shl = &cur->hl; ++ if ((ptr - line) - 1 == (long)shl->startcol) ++ char_attr = shl->attr; ++ if (shl != &search_hl && cur != NULL) ++ cur = cur->next; + } + } + #endif +*************** +*** 4462,4467 **** +--- 4538,4545 ---- + { + if (mb_utf8) + { ++ int i; ++ + ScreenLinesUC[off] = mb_c; + if ((c & 0xff) == 0) + ScreenLines[off] = 0x80; /* avoid storing zero */ +*************** +*** 6320,6326 **** + + #ifdef FEAT_SEARCH_EXTRA + /* +! * Prepare for 'searchhl' highlighting. + */ + static void + start_search_hl() +--- 6398,6404 ---- + + #ifdef FEAT_SEARCH_EXTRA + /* +! * Prepare for 'hlsearch' highlighting. + */ + static void + start_search_hl() +*************** +*** 6333,6339 **** + } + + /* +! * Clean up for 'searchhl' highlighting. + */ + static void + end_search_hl() +--- 6411,6417 ---- + } + + /* +! * Clean up for 'hlsearch' highlighting. + */ + static void + end_search_hl() +*************** +*** 6353,6370 **** + win_T *wp; + linenr_T lnum; + { +! match_T *shl; /* points to search_hl or match_hl */ + int n; +- int i; + + /* + * When using a multi-line pattern, start searching at the top + * of the window or just after a closed fold. +! * Do this both for search_hl and match_hl[3]. + */ +! for (i = 3; i >= 0; --i) + { +! shl = (i == 3) ? &search_hl : &match_hl[i]; + if (shl->rm.regprog != NULL + && shl->lnum == 0 + && re_multiline(shl->rm.regprog)) +--- 6431,6458 ---- + win_T *wp; + linenr_T lnum; + { +! matchitem_T *cur; /* points to the match list */ +! match_T *shl; /* points to search_hl or a match */ +! int shl_flag; /* flag to indicate whether search_hl +! has been processed or not */ + int n; + + /* + * When using a multi-line pattern, start searching at the top + * of the window or just after a closed fold. +! * Do this both for search_hl and the match list. + */ +! cur = wp->w_match_head; +! shl_flag = FALSE; +! while (cur != NULL || shl_flag == FALSE) + { +! if (shl_flag == FALSE) +! { +! shl = &search_hl; +! shl_flag = TRUE; +! } +! else +! shl = &cur->hl; + if (shl->rm.regprog != NULL + && shl->lnum == 0 + && re_multiline(shl->rm.regprog)) +*************** +*** 6399,6409 **** + } + } + } + } + } + + /* +! * Search for a next 'searchl' or ":match" match. + * Uses shl->buf. + * Sets shl->lnum and shl->rm contents. + * Note: Assumes a previous match is always before "lnum", unless +--- 6487,6499 ---- + } + } + } ++ if (shl != &search_hl && cur != NULL) ++ cur = cur->next; + } + } + + /* +! * Search for a next 'hlsearch' or match. + * Uses shl->buf. + * Sets shl->lnum and shl->rm contents. + * Note: Assumes a previous match is always before "lnum", unless +*************** +*** 6413,6419 **** + static void + next_search_hl(win, shl, lnum, mincol) + win_T *win; +! match_T *shl; /* points to search_hl or match_hl */ + linenr_T lnum; + colnr_T mincol; /* minimal column for a match */ + { +--- 6503,6509 ---- + static void + next_search_hl(win, shl, lnum, mincol) + win_T *win; +! match_T *shl; /* points to search_hl or a match */ + linenr_T lnum; + colnr_T mincol; /* minimal column for a match */ + { +*************** +*** 6481,6487 **** + /* Error while handling regexp: stop using this regexp. */ + if (shl == &search_hl) + { +! /* don't free the regprog in match_hl[], it's a copy */ + vim_free(shl->rm.regprog); + no_hlsearch = TRUE; + } +--- 6571,6577 ---- + /* Error while handling regexp: stop using this regexp. */ + if (shl == &search_hl) + { +! /* don't free regprog in the match list, it's a copy */ + vim_free(shl->rm.regprog); + no_hlsearch = TRUE; + } +*** ../vim-7.1.039/src/structs.h Thu May 10 20:32:30 2007 +--- src/structs.h Wed Jul 25 21:08:46 2007 +*************** +*** 1694,1699 **** +--- 1694,1734 ---- + #define FR_COL 2 /* frame with a column of windows */ + + /* ++ * Struct used for highlighting 'hlsearch' matches, matches defined by ++ * ":match" and matches defined by match functions. ++ * For 'hlsearch' there is one pattern for all windows. For ":match" and the ++ * match functions there is a different pattern for each window. ++ */ ++ typedef struct ++ { ++ regmmatch_T rm; /* points to the regexp program; contains last found ++ match (may continue in next line) */ ++ buf_T *buf; /* the buffer to search for a match */ ++ linenr_T lnum; /* the line to search for a match */ ++ int attr; /* attributes to be used for a match */ ++ int attr_cur; /* attributes currently active in win_line() */ ++ linenr_T first_lnum; /* first lnum to search for multi-line pat */ ++ colnr_T startcol; /* in win_line() points to char where HL starts */ ++ colnr_T endcol; /* in win_line() points to char where HL ends */ ++ } match_T; ++ ++ /* ++ * matchitem_T provides a linked list for storing match items for ":match" and ++ * the match functions. ++ */ ++ typedef struct matchitem matchitem_T; ++ struct matchitem ++ { ++ matchitem_T *next; ++ int id; /* match ID */ ++ int priority; /* match priority */ ++ char_u *pattern; /* pattern to highlight */ ++ int hlg_id; /* highlight group ID */ ++ regmmatch_T match; /* regexp program for pattern */ ++ match_T hl; /* struct for doing the actual highlighting */ ++ }; ++ ++ /* + * Structure which contains all information that belongs to a window + * + * All row numbers are relative to the start of the window, except w_winrow. +*************** +*** 1934,1942 **** + #endif + + #ifdef FEAT_SEARCH_EXTRA +! regmmatch_T w_match[3]; /* regexp programs for ":match" */ +! char_u *(w_match_pat[3]); /* patterns for ":match" */ +! int w_match_id[3]; /* highlight IDs for ":match" */ + #endif + + /* +--- 1969,1976 ---- + #endif + + #ifdef FEAT_SEARCH_EXTRA +! matchitem_T *w_match_head; /* head of match list */ +! int w_next_match_id; /* next match ID */ + #endif + + /* +*** ../vim-7.1.039/src/syntax.c Tue Jul 24 14:32:44 2007 +--- src/syntax.c Tue Jul 24 15:47:01 2007 +*************** +*** 8504,8510 **** + syn_id2name(id) + int id; + { +! if (id <= 0 || id >= highlight_ga.ga_len) + return (char_u *)""; + return HL_TABLE()[id - 1].sg_name; + } +--- 8504,8510 ---- + syn_id2name(id) + int id; + { +! if (id <= 0 || id > highlight_ga.ga_len) + return (char_u *)""; + return HL_TABLE()[id - 1].sg_name; + } +*** ../vim-7.1.039/src/testdir/Makefile Sun Apr 30 20:48:47 2006 +--- src/testdir/Makefile Tue Jul 24 15:34:33 2007 +*************** +*** 1,5 **** + # +! # Makefile to run al tests for Vim + # + + VIMPROG = ../vim +--- 1,5 ---- + # +! # Makefile to run all tests for Vim + # + + VIMPROG = ../vim +*************** +*** 15,21 **** + test43.out test44.out test45.out test46.out test47.out \ + test48.out test49.out test51.out test52.out test53.out \ + test54.out test55.out test56.out test57.out test58.out \ +! test59.out test60.out test61.out test62.out + + SCRIPTS_GUI = test16.out + +--- 15,21 ---- + test43.out test44.out test45.out test46.out test47.out \ + test48.out test49.out test51.out test52.out test53.out \ + test54.out test55.out test56.out test57.out test58.out \ +! test59.out test60.out test61.out test62.out test63.out + + SCRIPTS_GUI = test16.out + +*** ../vim-7.1.039/src/testdir/test63.in Tue Jul 24 16:45:02 2007 +--- src/testdir/test63.in Tue Jul 24 15:32:30 2007 +*************** +*** 0 **** +--- 1,157 ---- ++ Test for ":match", ":2match", ":3match", "clearmatches()", "getmatches()", ++ "matchadd()", "matcharg()", "matchdelete()", and "setmatches()". ++ ++ STARTTEST ++ :so small.vim ++ :" --- Check that "matcharg()" returns the correct group and pattern if a match ++ :" --- is defined. ++ :let @r = "*** Test 1: " ++ :highlight MyGroup1 ctermbg=red ++ :highlight MyGroup2 ctermbg=green ++ :highlight MyGroup3 ctermbg=blue ++ :match MyGroup1 /TODO/ ++ :2match MyGroup2 /FIXME/ ++ :3match MyGroup3 /XXX/ ++ :if matcharg(1) == ['MyGroup1', 'TODO'] && matcharg(2) == ['MyGroup2', 'FIXME'] && matcharg(3) == ['MyGroup3', 'XXX'] ++ : let @r .= "OK\n" ++ :else ++ : let @r .= "FAILED\n" ++ :endif ++ :" --- Check that "matcharg()" returns an empty list if the argument is not 1, ++ :" --- 2 or 3 (only 0 and 4 are tested). ++ :let @r .= "*** Test 2: " ++ :if matcharg(0) == [] && matcharg(4) == [] ++ : let @r .= "OK\n" ++ :else ++ : let @r .= "FAILED\n" ++ :endif ++ :" --- Check that "matcharg()" returns ['', ''] if a match is not defined. ++ :let @r .= "*** Test 3: " ++ :match ++ :2match ++ :3match ++ :if matcharg(1) == ['', ''] && matcharg(2) == ['', ''] && matcharg(3) == ['', ''] ++ : let @r .= "OK\n" ++ :else ++ : let @r .= "FAILED\n" ++ :endif ++ :" --- Check that "matchadd()" and "getmatches()" agree on added matches and ++ :" --- that default values apply. ++ :let @r .= "*** Test 4: " ++ :let m1 = matchadd("MyGroup1", "TODO") ++ :let m2 = matchadd("MyGroup2", "FIXME", 42) ++ :let m3 = matchadd("MyGroup3", "XXX", 60, 17) ++ :if getmatches() == [{'group': 'MyGroup1', 'pattern': 'TODO', 'priority': 10, 'id': 4}, {'group': 'MyGroup2', 'pattern': 'FIXME', 'priority': 42, 'id': 5}, {'group': 'MyGroup3', 'pattern': 'XXX', 'priority': 60, 'id': 17}] ++ : let @r .= "OK\n" ++ :else ++ : let @r .= "FAILED\n" ++ :endif ++ :" --- Check that "matchdelete()" deletes the matches defined in the previous ++ :" --- test correctly. ++ :let @r .= "*** Test 5: " ++ :call matchdelete(m1) ++ :call matchdelete(m2) ++ :call matchdelete(m3) ++ :unlet m1 ++ :unlet m2 ++ :unlet m3 ++ :if getmatches() == [] ++ : let @r .= "OK\n" ++ :else ++ : let @r .= "FAILED\n" ++ :endif ++ :" --- Check that "matchdelete()" returns 0 if succesfull and otherwise -1. ++ :let @r .= "*** Test 6: " ++ :let m = matchadd("MyGroup1", "TODO") ++ :let r1 = matchdelete(m) ++ :let r2 = matchdelete(42) ++ :if r1 == 0 && r2 == -1 ++ : let @r .= "OK\n" ++ :else ++ : let @r .= "FAILED\n" ++ :endif ++ :unlet m ++ :unlet r1 ++ :unlet r2 ++ :" --- Check that "clearmatches()" clears all matches defined by ":match" and ++ :" --- "matchadd()". ++ :let @r .= "*** Test 7: " ++ :let m1 = matchadd("MyGroup1", "TODO") ++ :let m2 = matchadd("MyGroup2", "FIXME", 42) ++ :let m3 = matchadd("MyGroup3", "XXX", 60, 17) ++ :match MyGroup1 /COFFEE/ ++ :2match MyGroup2 /HUMPPA/ ++ :3match MyGroup3 /VIM/ ++ :call clearmatches() ++ :if getmatches() == [] ++ : let @r .= "OK\n" ++ :else ++ : let @r .= "FAILED\n" ++ :endif ++ :unlet m1 ++ :unlet m2 ++ :unlet m3 ++ :" --- Check that "setmatches()" restores a list of matches saved by ++ :" --- "getmatches()" without changes. (Matches with equal priority must also ++ :" --- remain in the same order.) ++ :let @r .= "*** Test 8: " ++ :let m1 = matchadd("MyGroup1", "TODO") ++ :let m2 = matchadd("MyGroup2", "FIXME", 42) ++ :let m3 = matchadd("MyGroup3", "XXX", 60, 17) ++ :match MyGroup1 /COFFEE/ ++ :2match MyGroup2 /HUMPPA/ ++ :3match MyGroup3 /VIM/ ++ :let ml = getmatches() ++ :call clearmatches() ++ :call setmatches(ml) ++ :if getmatches() == ml ++ : let @r .= "OK\n" ++ :else ++ : let @r .= "FAILED\n" ++ :endif ++ :call clearmatches() ++ :unlet m1 ++ :unlet m2 ++ :unlet m3 ++ :unlet ml ++ :" --- Check that "setmatches()" will not add two matches with the same ID. The ++ :" --- expected behaviour (for now) is to add the first match but not the ++ :" --- second and to return 0 (even though it is a matter of debate whether ++ :" --- this can be considered succesfull behaviour). ++ :let @r .= "*** Test 9: " ++ :let r1 = setmatches([{'group': 'MyGroup1', 'pattern': 'TODO', 'priority': 10, 'id': 1}, {'group': 'MyGroup2', 'pattern': 'FIXME', 'priority': 10, 'id': 1}]) ++ :if getmatches() == [{'group': 'MyGroup1', 'pattern': 'TODO', 'priority': 10, 'id': 1}] && r1 == 0 ++ : let @r .= "OK\n" ++ :else ++ : let @r .= "FAILED\n" ++ :endif ++ :call clearmatches() ++ :unlet r1 ++ :" --- Check that "setmatches()" returns 0 if succesfull and otherwise -1. ++ :" --- (A range of valid and invalid input values are tried out to generate the ++ :" --- return values.) ++ :let @r .= "*** Test 10: " ++ :let rs1 = setmatches([]) ++ :let rs2 = setmatches([{'group': 'MyGroup1', 'pattern': 'TODO', 'priority': 10, 'id': 1}]) ++ :call clearmatches() ++ :let rf1 = setmatches(0) ++ :let rf2 = setmatches([0]) ++ :let rf3 = setmatches([{'wrong key': 'wrong value'}]) ++ :if rs1 == 0 && rs2 == 0 && rf1 == -1 && rf2 == -1 && rf3 == -1 ++ : let @r .= "OK\n" ++ :else ++ : let @r .= "FAILED\n" ++ :endif ++ :unlet rs1 ++ :unlet rs2 ++ :unlet rf1 ++ :unlet rf2 ++ :unlet rf3 ++ :highlight clear MyGroup1 ++ :highlight clear MyGroup2 ++ :highlight clear MyGroup3 ++ G"rp ++ :/^Results/,$wq! test.out ++ ENDTEST ++ ++ Results of test63: +*** ../vim-7.1.039/src/testdir/test63.ok Tue Jul 24 16:45:02 2007 +--- src/testdir/test63.ok Tue Jul 24 15:32:30 2007 +*************** +*** 0 **** +--- 1,11 ---- ++ Results of test63: ++ *** Test 1: OK ++ *** Test 2: OK ++ *** Test 3: OK ++ *** Test 4: OK ++ *** Test 5: OK ++ *** Test 6: OK ++ *** Test 7: OK ++ *** Test 8: OK ++ *** Test 9: OK ++ *** Test 10: OK +*** ../vim-7.1.039/src/window.c Thu May 10 18:42:26 2007 +--- src/window.c Tue Jul 24 20:38:58 2007 +*************** +*** 75,80 **** +--- 75,81 ---- + static win_T *restore_snapshot_rec __ARGS((frame_T *sn, frame_T *fr)); + + #endif /* FEAT_WINDOWS */ ++ + static win_T *win_alloc __ARGS((win_T *after)); + static void win_new_height __ARGS((win_T *, int)); + +*************** +*** 4128,4133 **** +--- 4129,4138 ---- + #ifdef FEAT_AUTOCMD + --autocmd_block; + #endif ++ #ifdef FEAT_SEARCH_EXTRA ++ newwin->w_match_head = NULL; ++ newwin->w_next_match_id = 4; ++ #endif + } + return newwin; + } +*************** +*** 4185,4195 **** + vim_free(wp->w_tagstack[i].tagname); + + vim_free(wp->w_localdir); + #ifdef FEAT_SEARCH_EXTRA +! vim_free(wp->w_match[0].regprog); +! vim_free(wp->w_match[1].regprog); +! vim_free(wp->w_match[2].regprog); + #endif + #ifdef FEAT_JUMPLIST + free_jumplist(wp); + #endif +--- 4190,4200 ---- + vim_free(wp->w_tagstack[i].tagname); + + vim_free(wp->w_localdir); ++ + #ifdef FEAT_SEARCH_EXTRA +! clear_matches(wp); + #endif ++ + #ifdef FEAT_JUMPLIST + free_jumplist(wp); + #endif +*************** +*** 6172,6176 **** +--- 6177,6351 ---- + return TRUE; + + return FALSE; ++ } ++ #endif ++ ++ #if defined(FEAT_SEARCH_EXTRA) || defined(PROTO) ++ /* ++ * Add match to the match list of window 'wp'. The pattern 'pat' will be ++ * highligted with the group 'grp' with priority 'prio'. ++ * Optionally, a desired ID 'id' can be specified (greater than or equal to 1). ++ * If no particular ID is desired, -1 must be specified for 'id'. ++ * Return ID of added match, -1 on failure. ++ */ ++ int ++ match_add(wp, grp, pat, prio, id) ++ win_T *wp; ++ char_u *grp; ++ char_u *pat; ++ int prio; ++ int id; ++ { ++ matchitem_T *cur; ++ matchitem_T *prev; ++ matchitem_T *m; ++ int hlg_id; ++ regmmatch_T match; ++ ++ if (*grp == NUL || *pat == NUL) ++ return -1; ++ if (id < -1 || id == 0) ++ { ++ EMSGN("E799: Invalid ID: %ld (must be greater than or equal to 1)", id); ++ return -1; ++ } ++ if (id != -1) ++ { ++ cur = wp->w_match_head; ++ while (cur != NULL) ++ { ++ if (cur->id == id) ++ { ++ EMSGN("E801: ID already taken: %ld", id); ++ return -1; ++ } ++ cur = cur->next; ++ } ++ } ++ if ((hlg_id = syn_namen2id(grp, STRLEN(grp))) == 0) ++ { ++ EMSG2(_(e_nogroup), grp); ++ return -1; ++ } ++ if ((match.regprog = vim_regcomp(pat, RE_MAGIC)) == NULL) ++ { ++ EMSG2(_(e_invarg2), pat); ++ return -1; ++ } ++ ++ /* Find available match ID. */ ++ while (id == -1) ++ { ++ cur = wp->w_match_head; ++ while (cur != NULL && cur->id != wp->w_next_match_id) ++ cur = cur->next; ++ if (cur == NULL) ++ id = wp->w_next_match_id; ++ wp->w_next_match_id++; ++ } ++ ++ /* Build new match. */ ++ m = (matchitem_T *)alloc(sizeof(matchitem_T)); ++ m->id = id; ++ m->priority = prio; ++ m->pattern = vim_strsave(pat); ++ m->hlg_id = hlg_id; ++ m->match.regprog = match.regprog; ++ ++ /* Insert new match. The match list is in ascending order with regard to ++ * the match priorities. */ ++ cur = wp->w_match_head; ++ prev = cur; ++ while (cur != NULL && prio >= cur->priority) ++ { ++ prev = cur; ++ cur = cur->next; ++ } ++ if (cur == prev) ++ wp->w_match_head = m; ++ else ++ prev->next = m; ++ m->next = cur; ++ ++ redraw_later(SOME_VALID); ++ return id; ++ } ++ ++ /* ++ * Delete match with ID 'id' in the match list of window 'wp'. ++ * Print error messages if 'perr' is TRUE. ++ */ ++ int ++ match_delete(wp, id, perr) ++ win_T *wp; ++ int id; ++ int perr; ++ { ++ matchitem_T *cur = wp->w_match_head; ++ matchitem_T *prev = cur; ++ ++ if (id < 1) ++ { ++ if (perr == TRUE) ++ EMSGN("E802: Invalid ID: %ld (must be greater than or equal to 1)", ++ id); ++ return -1; ++ } ++ while (cur != NULL && cur->id != id) ++ { ++ prev = cur; ++ cur = cur->next; ++ } ++ if (cur == NULL) ++ { ++ if (perr == TRUE) ++ EMSGN("E803: ID not found: %ld", id); ++ return -1; ++ } ++ if (cur == prev) ++ wp->w_match_head = cur->next; ++ else ++ prev->next = cur->next; ++ vim_free(cur->match.regprog); ++ vim_free(cur->pattern); ++ vim_free(cur); ++ redraw_later(SOME_VALID); ++ return 0; ++ } ++ ++ /* ++ * Delete all matches in the match list of window 'wp'. ++ */ ++ void ++ clear_matches(wp) ++ win_T *wp; ++ { ++ matchitem_T *m; ++ ++ while (wp->w_match_head != NULL) ++ { ++ m = wp->w_match_head->next; ++ vim_free(wp->w_match_head->match.regprog); ++ vim_free(wp->w_match_head->pattern); ++ vim_free(wp->w_match_head); ++ wp->w_match_head = m; ++ } ++ redraw_later(SOME_VALID); ++ } ++ ++ /* ++ * Get match from ID 'id' in window 'wp'. ++ * Return NULL if match not found. ++ */ ++ matchitem_T * ++ get_match(wp, id) ++ win_T *wp; ++ int id; ++ { ++ matchitem_T *cur = wp->w_match_head; ++ ++ while (cur != NULL && cur->id != id) ++ cur = cur->next; ++ return cur; + } + #endif +*** ../vim-7.1.039/src/version.c Wed Jul 25 22:55:22 2007 +--- src/version.c Thu Jul 26 22:50:54 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 40, + /**/ + +-- +It is hard to understand how a cemetery raised its burial +cost and blamed it on the cost of living. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.041 b/7.1.041 new file mode 100644 index 00000000..a0e545e3 --- /dev/null +++ b/7.1.041 @@ -0,0 +1,133 @@ +To: vim-dev@vim.org +Subject: patch 7.1.041 (extra) +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.041 (extra, after 7.1.040) +Problem: Some changes for patch 7.1.0 are in extra files. +Solution: Update the extra files. +Files: src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_os2.mak, src/testdir/Make_vms.mms + + +*** ../vim-7.1.040/src/testdir/Make_amiga.mak Sun Apr 30 20:42:49 2006 +--- src/testdir/Make_amiga.mak Tue Jul 24 15:36:00 2007 +*************** +*** 25,31 **** + test43.out test44.out test45.out test46.out test47.out \ + test48.out test51.out test53.out test54.out test55.out \ + test56.out test57.out test58.out test59.out test60.out \ +! test61.out test62.out + + .SUFFIXES: .in .out + +--- 25,31 ---- + test43.out test44.out test45.out test46.out test47.out \ + test48.out test51.out test53.out test54.out test55.out \ + test56.out test57.out test58.out test59.out test60.out \ +! test61.out test62.out test63.out + + .SUFFIXES: .in .out + +*************** +*** 107,109 **** +--- 107,110 ---- + test60.out: test60.in + test61.out: test61.in + test62.out: test62.in ++ test63.out: test63.in +*** ../vim-7.1.040/src/testdir/Make_dos.mak Sun Apr 30 20:41:13 2006 +--- src/testdir/Make_dos.mak Tue Jul 24 15:37:47 2007 +*************** +*** 19,25 **** + test44.out test45.out test46.out test47.out \ + test48.out test51.out test53.out test54.out \ + test55.out test56.out test57.out test58.out test59.out \ +! test60.out test61.out test62.out + + SCRIPTS = test3.out test4.out test5.out test6.out test7.out \ + test8.out test9.out test11.out test13.out test14.out \ +--- 19,25 ---- + test44.out test45.out test46.out test47.out \ + test48.out test51.out test53.out test54.out \ + test55.out test56.out test57.out test58.out test59.out \ +! test60.out test61.out test62.out test63.out + + SCRIPTS = test3.out test4.out test5.out test6.out test7.out \ + test8.out test9.out test11.out test13.out test14.out \ +*** ../vim-7.1.040/src/testdir/Make_os2.mak Sun Apr 30 20:29:29 2006 +--- src/testdir/Make_os2.mak Tue Jul 24 15:39:15 2007 +*************** +*** 25,31 **** + test43.out test44.out test45.out test46.out test47.out \ + test48.out test51.out test53.out test54.out test55.out \ + test56.out test57.out test58.out test59.out test60.out \ +! test61.out test62.out + + .SUFFIXES: .in .out + +--- 25,31 ---- + test43.out test44.out test45.out test46.out test47.out \ + test48.out test51.out test53.out test54.out test55.out \ + test56.out test57.out test58.out test59.out test60.out \ +! test61.out test62.out test63.out + + .SUFFIXES: .in .out + +*** ../vim-7.1.040/src/testdir/Make_vms.mms Sun Apr 30 20:51:12 2006 +--- src/testdir/Make_vms.mms Tue Jul 24 15:39:23 2007 +*************** +*** 4,10 **** + # Authors: Zoltan Arpadffy, + # Sandor Kopanyi, + # +! # Last change: 2006 Apr 30 + # + # This has been tested on VMS 6.2 to 7.2 on DEC Alpha and VAX. + # Edit the lines in the Configuration section below to select. +--- 4,10 ---- + # Authors: Zoltan Arpadffy, + # Sandor Kopanyi, + # +! # Last change: 2007 Jul 24 + # + # This has been tested on VMS 6.2 to 7.2 on DEC Alpha and VAX. + # Edit the lines in the Configuration section below to select. +*************** +*** 59,65 **** + test43.out test44.out test45.out test46.out \ + test48.out test51.out test53.out test54.out test55.out \ + test56.out test57.out test58.out test59.out test60.out \ +! test61.out test62.out + + .IFDEF WANT_GUI + SCRIPT_GUI = test16.out +--- 59,65 ---- + test43.out test44.out test45.out test46.out \ + test48.out test51.out test53.out test54.out test55.out \ + test56.out test57.out test58.out test59.out test60.out \ +! test61.out test62.out test63.out + + .IFDEF WANT_GUI + SCRIPT_GUI = test16.out +*** ../vim-7.1.040/src/version.c Thu Jul 26 22:55:11 2007 +--- src/version.c Thu Jul 26 22:58:57 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 41, + /**/ + +-- +Just remember...if the world didn't suck, we'd all fall off. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.042 b/7.1.042 new file mode 100644 index 00000000..f3383695 --- /dev/null +++ b/7.1.042 @@ -0,0 +1,75 @@ +To: vim-dev@vim.org +Subject: patch 7.1.042 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.042 (after 7.1.040) +Problem: Internal error when using matchadd(). (David Larson) +Solution: Check the third argument to be present before using the fourth + argument. (Martin Toft) +Files: src/eval.c + + +*** ../vim-7.1.041/src/eval.c Thu Jul 26 22:55:11 2007 +--- src/eval.c Fri Jul 27 21:29:39 2007 +*************** +*** 7108,7114 **** + {"getftype", 1, 1, f_getftype}, + {"getline", 1, 2, f_getline}, + {"getloclist", 1, 1, f_getqflist}, +! {"getmatches", 0, 0, f_getmatches}, + {"getpos", 1, 1, f_getpos}, + {"getqflist", 0, 0, f_getqflist}, + {"getreg", 0, 2, f_getreg}, +--- 7108,7114 ---- + {"getftype", 1, 1, f_getftype}, + {"getline", 1, 2, f_getline}, + {"getloclist", 1, 1, f_getqflist}, +! {"getmatches", 0, 0, f_getmatches}, + {"getpos", 1, 1, f_getpos}, + {"getqflist", 0, 0, f_getqflist}, + {"getreg", 0, 2, f_getreg}, +*************** +*** 12526,12534 **** + if (grp == NULL || pat == NULL) + return; + if (argvars[2].v_type != VAR_UNKNOWN) + prio = get_tv_number_chk(&argvars[2], &error); +! if (argvars[3].v_type != VAR_UNKNOWN) +! id = get_tv_number_chk(&argvars[3], &error); + if (error == TRUE) + return; + if (id >= 1 && id <= 3) +--- 12526,12536 ---- + if (grp == NULL || pat == NULL) + return; + if (argvars[2].v_type != VAR_UNKNOWN) ++ { + prio = get_tv_number_chk(&argvars[2], &error); +! if (argvars[3].v_type != VAR_UNKNOWN) +! id = get_tv_number_chk(&argvars[3], &error); +! } + if (error == TRUE) + return; + if (id >= 1 && id <= 3) +*** ../vim-7.1.041/src/version.c Thu Jul 26 23:10:50 2007 +--- src/version.c Fri Jul 27 21:31:13 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 42, + /**/ + +-- +The future isn't what it used to be. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.043 b/7.1.043 new file mode 100644 index 00000000..7009f2f6 --- /dev/null +++ b/7.1.043 @@ -0,0 +1,103 @@ +To: vim-dev@vim.org +Subject: patch 7.1.043 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.043 +Problem: In Ex mode using CTRL-D twice may cause a crash. Cursor isn't + positioned properly after CTRL-D. +Solution: Set prev_char properly. Position the cursor correctly. (Antony + Scriven) +Files: src/ex_getln.c + + +*** ../vim-7.1.042/src/ex_getln.c Tue Jul 24 14:32:44 2007 +--- src/ex_getln.c Wed Jul 25 20:57:05 2007 +*************** +*** 2095,2105 **** + garray_T line_ga; + char_u *pend; + int startcol = 0; +! int c1; + int escaped = FALSE; /* CTRL-V typed */ + int vcol = 0; + char_u *p; +! int prev_char = 0; + + /* Switch cursor on now. This avoids that it happens after the "\n", which + * confuses the system function that computes tabstops. */ +--- 2095,2105 ---- + garray_T line_ga; + char_u *pend; + int startcol = 0; +! int c1 = 0; + int escaped = FALSE; /* CTRL-V typed */ + int vcol = 0; + char_u *p; +! int prev_char; + + /* Switch cursor on now. This avoids that it happens after the "\n", which + * confuses the system function that computes tabstops. */ +*************** +*** 2152,2157 **** +--- 2152,2158 ---- + + /* Get one character at a time. Don't use inchar(), it can't handle + * special characters. */ ++ prev_char = c1; + c1 = vgetc(); + + /* +*************** +*** 2209,2215 **** + redraw: + /* redraw the line */ + msg_col = startcol; +- windgoto(msg_row, msg_col); + vcol = 0; + for (p = (char_u *)line_ga.ga_data; + p < (char_u *)line_ga.ga_data + line_ga.ga_len; ++p) +--- 2210,2215 ---- +*************** +*** 2228,2233 **** +--- 2228,2234 ---- + } + } + msg_clr_eos(); ++ windgoto(msg_row, msg_col); + continue; + } + +*************** +*** 2273,2279 **** + if (IS_SPECIAL(c1)) + c1 = '?'; + ((char_u *)line_ga.ga_data)[line_ga.ga_len] = c1; +- prev_char = c1; + if (c1 == '\n') + msg_putchar('\n'); + else if (c1 == TAB) +--- 2274,2279 ---- +*** ../vim-7.1.042/src/version.c Fri Jul 27 21:32:13 2007 +--- src/version.c Sat Jul 28 14:19:37 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 43, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +48. You get a tatoo that says "This body best viewed with Netscape 3.1 or + higher." + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.044 b/7.1.044 new file mode 100644 index 00000000..81b4f16d --- /dev/null +++ b/7.1.044 @@ -0,0 +1,54 @@ +To: vim-dev@vim.org +Subject: patch 7.1.044 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.044 +Problem: In Insert mode 0 CTRL-T deletes all indent, it should add indent. + (Gautam Iyer) +Solution: Check for CTRL-D typed. +Files: src/edit.c + + +*** ../vim-7.1.043/src/edit.c Thu Jun 28 12:44:56 2007 +--- src/edit.c Wed Jul 25 22:50:28 2007 +*************** +*** 8000,8006 **** + /* + * 0^D and ^^D: remove all indent. + */ +! if ((lastc == '0' || lastc == '^') && curwin->w_cursor.col) + { + --curwin->w_cursor.col; + (void)del_char(FALSE); /* delete the '^' or '0' */ +--- 8000,8007 ---- + /* + * 0^D and ^^D: remove all indent. + */ +! if (c == Ctrl_D && (lastc == '0' || lastc == '^') +! && curwin->w_cursor.col > 0) + { + --curwin->w_cursor.col; + (void)del_char(FALSE); /* delete the '^' or '0' */ +*** ../vim-7.1.043/src/version.c Sat Jul 28 14:21:04 2007 +--- src/version.c Sun Jul 29 14:14:36 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 44, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +54. You start tilting your head sideways to smile. :-) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.045 b/7.1.045 new file mode 100644 index 00000000..32307d2b --- /dev/null +++ b/7.1.045 @@ -0,0 +1,101 @@ +To: vim-dev@vim.org +Subject: patch 7.1.045 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.045 +Problem: Unnecessary screen redrawing. (Jjgod Jiang) +Solution: Reset "must_redraw" after clearing the screen. +Files: src/screen.c + + +*** ../vim-7.1.044/src/screen.c Thu Jul 26 22:55:11 2007 +--- src/screen.c Mon Jul 30 21:39:32 2007 +*************** +*** 331,336 **** +--- 331,341 ---- + { + if (type < must_redraw) /* use maximal type */ + type = must_redraw; ++ ++ /* must_redraw is reset here, so that when we run into some weird ++ * reason to redraw while busy redrawing (e.g., asynchronous ++ * scrolling), or update_topline() in win_update() will cause a ++ * scroll, the screen will be redrawn later or in win_update(). */ + must_redraw = 0; + } + +*************** +*** 1019,1024 **** +--- 1024,1036 ---- + type = VALID; + } + ++ /* Trick: we want to avoid clearning the screen twice. screenclear() will ++ * set "screen_cleared" to TRUE. The special value MAYBE (which is still ++ * non-zero and thus not FALSE) will indicate that screenclear() was not ++ * called. */ ++ if (screen_cleared) ++ screen_cleared = MAYBE; ++ + /* + * If there are no changes on the screen that require a complete redraw, + * handle three cases: +*************** +*** 1220,1226 **** + mid_end = wp->w_height; + if (lastwin == firstwin) + { +! screenclear(); + #ifdef FEAT_WINDOWS + /* The screen was cleared, redraw the tab pages line. */ + if (redraw_tabline) +--- 1232,1242 ---- + mid_end = wp->w_height; + if (lastwin == firstwin) + { +! /* Clear the screen when it was not done by win_del_lines() or +! * win_ins_lines() above, "screen_cleared" is FALSE or MAYBE +! * then. */ +! if (screen_cleared != TRUE) +! screenclear(); + #ifdef FEAT_WINDOWS + /* The screen was cleared, redraw the tab pages line. */ + if (redraw_tabline) +*************** +*** 1228,1233 **** +--- 1244,1256 ---- + #endif + } + } ++ ++ /* When win_del_lines() or win_ins_lines() caused the screen to be ++ * cleared (only happens for the first window) or when screenclear() ++ * was called directly above, "must_redraw" will have been set to ++ * NOT_VALID, need to reset it here to avoid redrawing twice. */ ++ if (screen_cleared == TRUE) ++ must_redraw = 0; + } + else + { +*** ../vim-7.1.044/src/version.c Sun Jul 29 15:02:34 2007 +--- src/version.c Mon Jul 30 21:58:06 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 45, + /**/ + +-- +Be thankful to be in a traffic jam, because it means you own a car. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.046 b/7.1.046 new file mode 100644 index 00000000..349b6b1d --- /dev/null +++ b/7.1.046 @@ -0,0 +1,60 @@ +To: vim-dev@vim.org +Subject: patch 7.1.046 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.046 +Problem: ":s" command removes combining characters. (Ron Aaron) +Solution: Copy composing characters individually. (Chris Lubinski) +Files: src/regexp.c + + +*** ../vim-7.1.045/src/regexp.c Thu May 10 19:58:01 2007 +--- src/regexp.c Fri Jul 27 21:17:47 2007 +*************** +*** 7014,7020 **** + #ifdef FEAT_MBYTE + if (has_mbyte) + { +! int l = mb_ptr2len(s) - 1; + + s += l; + len -= l; +--- 7014,7027 ---- + #ifdef FEAT_MBYTE + if (has_mbyte) + { +! int l; +! +! /* Copy composing characters separately, one +! * at a time. */ +! if (enc_utf8) +! l = utf_ptr2len(s) - 1; +! else +! l = mb_ptr2len(s) - 1; + + s += l; + len -= l; +*** ../vim-7.1.045/src/version.c Mon Jul 30 21:59:50 2007 +--- src/version.c Mon Jul 30 22:30:02 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 46, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +57. You begin to wonder how on earth your service provider is allowed to call + 200 hours per month "unlimited." + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.047 b/7.1.047 new file mode 100644 index 00000000..e41bbbea --- /dev/null +++ b/7.1.047 @@ -0,0 +1,52 @@ +To: vim-dev@vim.org +Subject: patch 7.1.047 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.047 +Problem: vim_regcomp() called with invalid argument. (Xiaozhou Liu) +Solution: Change TRUE to RE_MAGIC + RE_STRING. +Files: src/ex_eval.c + + +*** ../vim-7.1.046/src/ex_eval.c Thu May 10 20:23:50 2007 +--- src/ex_eval.c Sat Jul 28 13:09:00 2007 +*************** +*** 1551,1557 **** + } + save_cpo = p_cpo; + p_cpo = (char_u *)""; +! regmatch.regprog = vim_regcomp(pat, TRUE); + regmatch.rm_ic = FALSE; + if (end != NULL) + *end = save_char; +--- 1551,1557 ---- + } + save_cpo = p_cpo; + p_cpo = (char_u *)""; +! regmatch.regprog = vim_regcomp(pat, RE_MAGIC + RE_STRING); + regmatch.rm_ic = FALSE; + if (end != NULL) + *end = save_char; +*** ../vim-7.1.046/src/version.c Mon Jul 30 22:32:11 2007 +--- src/version.c Wed Aug 1 15:46:28 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 47, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +80. At parties, you introduce your spouse as your "service provider." + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.048 b/7.1.048 new file mode 100644 index 00000000..3ff6a97c --- /dev/null +++ b/7.1.048 @@ -0,0 +1,135 @@ +To: vim-dev@vim.org +Subject: patch 7.1.048 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.048 +Problem: The matchparen plugin doesn't update the match when scrolling with + the mouse wheel. (Ilya Bobir) +Solution: Set the match highlighting for text that can be scrolled into the + viewable area without moving the cursor. (Chris Lubinski) +Files: runtime/plugin/matchparen.vim + + +*** ../vim-7.1.047/runtime/plugin/matchparen.vim Sun May 6 14:26:16 2007 +--- runtime/plugin/matchparen.vim Mon Jul 30 21:14:06 2007 +*************** +*** 1,6 **** + " Vim plugin for showing matching parens + " Maintainer: Bram Moolenaar +! " Last Change: 2006 Oct 12 + + " Exit quickly when: + " - this plugin was already loaded (or disabled) +--- 1,6 ---- + " Vim plugin for showing matching parens + " Maintainer: Bram Moolenaar +! " Last Change: 2007 Jul 30 + + " Exit quickly when: + " - this plugin was already loaded (or disabled) +*************** +*** 62,86 **** + " Figure out the arguments for searchpairpos(). + " Restrict the search to visible lines with "stopline". + " And avoid searching very far (e.g., for closed folds and long lines) + if i % 2 == 0 + let s_flags = 'nW' + let c2 = plist[i + 1] + if has("byte_offset") && has("syntax_items") && &smc > 0 + let stopbyte = min([line2byte("$"), line2byte(".") + col(".") + &smc * 2]) +! let stopline = min([line('w$'), byte2line(stopbyte)]) + else +! let stopline = min([line('w$'), c_lnum + 100]) + endif + else + let s_flags = 'nbW' + let c2 = c + let c = plist[i - 1] + if has("byte_offset") && has("syntax_items") && &smc > 0 + let stopbyte = max([1, line2byte(".") + col(".") - &smc * 2]) +! let stopline = max([line('w0'), byte2line(stopbyte)]) + else +! let stopline = max([line('w0'), c_lnum - 100]) + endif + endif + if c == '[' + let c = '\[' +--- 62,98 ---- + " Figure out the arguments for searchpairpos(). + " Restrict the search to visible lines with "stopline". + " And avoid searching very far (e.g., for closed folds and long lines) ++ " The "viewable" variables give a range in which we can scroll while keeping ++ " the cursor at the same position ++ " adjustedScrolloff accounts for very large numbers of scrolloff ++ let adjustedScrolloff = min([&scrolloff, (line('w$') - line('w0')) / 2]) ++ let bottom_viewable = min([line('$'), c_lnum + &lines - adjustedScrolloff - 2]) ++ let top_viewable = max([1, c_lnum-&lines+adjustedScrolloff + 2]) ++ " one of these stoplines will be adjusted below, but the current values are ++ " minimal boundaries within the current window ++ let stoplinebottom = line('w$') ++ let stoplinetop = line('w0') + if i % 2 == 0 + let s_flags = 'nW' + let c2 = plist[i + 1] + if has("byte_offset") && has("syntax_items") && &smc > 0 + let stopbyte = min([line2byte("$"), line2byte(".") + col(".") + &smc * 2]) +! let stopline = min([bottom_viewable, byte2line(stopbyte)]) + else +! let stopline = min([bottom_viewable, c_lnum + 100]) + endif ++ let stoplinebottom = stopline + else + let s_flags = 'nbW' + let c2 = c + let c = plist[i - 1] + if has("byte_offset") && has("syntax_items") && &smc > 0 + let stopbyte = max([1, line2byte(".") + col(".") - &smc * 2]) +! let stopline = max([top_viewable, byte2line(stopbyte)]) + else +! let stopline = max([top_viewable, c_lnum - 100]) + endif ++ let stoplinetop = stopline + endif + if c == '[' + let c = '\[' +*************** +*** 106,112 **** + endif + + " If a match is found setup match highlighting. +! if m_lnum > 0 && m_lnum >= line('w0') && m_lnum <= line('w$') + exe '3match MatchParen /\(\%' . c_lnum . 'l\%' . (c_col - before) . + \ 'c\)\|\(\%' . m_lnum . 'l\%' . m_col . 'c\)/' + let w:paren_hl_on = 1 +--- 118,124 ---- + endif + + " If a match is found setup match highlighting. +! if m_lnum > 0 && m_lnum >= stoplinetop && m_lnum <= stoplinebottom + exe '3match MatchParen /\(\%' . c_lnum . 'l\%' . (c_col - before) . + \ 'c\)\|\(\%' . m_lnum . 'l\%' . m_col . 'c\)/' + let w:paren_hl_on = 1 +*** ../vim-7.1.047/src/version.c Wed Aug 1 15:47:06 2007 +--- src/version.c Thu Aug 2 22:59:07 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 48, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +91. It's Saturday afternoon in the middle of May and you + are on computer. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.049 b/7.1.049 new file mode 100644 index 00000000..f60f908e --- /dev/null +++ b/7.1.049 @@ -0,0 +1,52 @@ +To: vim-dev@vim.org +Subject: patch 7.1.049 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.049 +Problem: Cannot compile GTK2 version with Hangul input feature. +Solution: Don't define FEAT_XFONTSET when using GTK2. +Files: src/feature.h + + +*** ../vim-7.1.048/src/feature.h Thu May 10 19:43:24 2007 +--- src/feature.h Fri Aug 3 19:32:56 2007 +*************** +*** 673,679 **** + # define ESC_CHG_TO_ENG_MODE /* if defined, when ESC pressed, + * turn to english mode + */ +! # if !defined(FEAT_XFONTSET) && defined(HAVE_X11) + # define FEAT_XFONTSET /* Hangul input requires xfontset */ + # endif + # if defined(FEAT_XIM) && !defined(LINT) +--- 673,679 ---- + # define ESC_CHG_TO_ENG_MODE /* if defined, when ESC pressed, + * turn to english mode + */ +! # if !defined(FEAT_XFONTSET) && defined(HAVE_X11) && !defined(HAVE_GTK2) + # define FEAT_XFONTSET /* Hangul input requires xfontset */ + # endif + # if defined(FEAT_XIM) && !defined(LINT) +*** ../vim-7.1.048/src/version.c Thu Aug 2 23:00:06 2007 +--- src/version.c Fri Aug 3 21:58:23 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 49, + /**/ + +-- +From "know your smileys": + :-O>-o Smiley American tourist (note big mouth and camera) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.050 b/7.1.050 new file mode 100644 index 00000000..7d9af869 --- /dev/null +++ b/7.1.050 @@ -0,0 +1,172 @@ +To: vim-dev@vim.org +Subject: patch 7.1.050 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.050 +Problem: Possible crash when using C++ indenting. (Chris Monson) +Solution: Keep the line pointer to the line to compare with. Avoid going + past the end of line. +Files: src/misc1.c + + +*** ../vim-7.1.049/src/misc1.c Tue Jul 24 15:25:27 2007 +--- src/misc1.c Fri Aug 3 21:07:17 2007 +*************** +*** 4820,4826 **** + static int cin_iswhileofdo __ARGS((char_u *, linenr_T, int)); + static int cin_iswhileofdo_end __ARGS((int terminated, int ind_maxparen, int ind_maxcomment)); + static int cin_isbreak __ARGS((char_u *)); +! static int cin_is_cpp_baseclass __ARGS((char_u *line, colnr_T *col)); + static int get_baseclass_amount __ARGS((int col, int ind_maxparen, int ind_maxcomment, int ind_cpp_baseclass)); + static int cin_ends_in __ARGS((char_u *, char_u *, char_u *)); + static int cin_skip2pos __ARGS((pos_T *trypos)); +--- 4820,4826 ---- + static int cin_iswhileofdo __ARGS((char_u *, linenr_T, int)); + static int cin_iswhileofdo_end __ARGS((int terminated, int ind_maxparen, int ind_maxcomment)); + static int cin_isbreak __ARGS((char_u *)); +! static int cin_is_cpp_baseclass __ARGS((colnr_T *col)); + static int get_baseclass_amount __ARGS((int col, int ind_maxparen, int ind_maxcomment, int ind_cpp_baseclass)); + static int cin_ends_in __ARGS((char_u *, char_u *, char_u *)); + static int cin_skip2pos __ARGS((pos_T *trypos)); +*************** +*** 5585,5597 **** + * This is a lot of guessing. Watch out for "cond ? func() : foo". + */ + static int +! cin_is_cpp_baseclass(line, col) +! char_u *line; + colnr_T *col; /* return: column to align with */ + { + char_u *s; + int class_or_struct, lookfor_ctor_init, cpp_base_class; + linenr_T lnum = curwin->w_cursor.lnum; + + *col = 0; + +--- 5585,5597 ---- + * This is a lot of guessing. Watch out for "cond ? func() : foo". + */ + static int +! cin_is_cpp_baseclass(col) + colnr_T *col; /* return: column to align with */ + { + char_u *s; + int class_or_struct, lookfor_ctor_init, cpp_base_class; + linenr_T lnum = curwin->w_cursor.lnum; ++ char_u *line = ml_get_curline(); + + *col = 0; + +*************** +*** 5619,5625 **** + */ + while (lnum > 1) + { +! s = skipwhite(ml_get(lnum - 1)); + if (*s == '#' || *s == NUL) + break; + while (*s != NUL) +--- 5619,5626 ---- + */ + while (lnum > 1) + { +! line = ml_get(lnum - 1); +! s = skipwhite(line); + if (*s == '#' || *s == NUL) + break; + while (*s != NUL) +*************** +*** 5636,5642 **** + --lnum; + } + +! s = cin_skipcomment(ml_get(lnum)); + for (;;) + { + if (*s == NUL) +--- 5637,5644 ---- + --lnum; + } + +! line = ml_get(lnum); +! s = cin_skipcomment(line); + for (;;) + { + if (*s == NUL) +*************** +*** 5644,5650 **** + if (lnum == curwin->w_cursor.lnum) + break; + /* Continue in the cursor line. */ +! s = cin_skipcomment(ml_get(++lnum)); + } + + if (s[0] == ':') +--- 5646,5655 ---- + if (lnum == curwin->w_cursor.lnum) + break; + /* Continue in the cursor line. */ +! line = ml_get(++lnum); +! s = cin_skipcomment(line); +! if (*s == NUL) +! continue; + } + + if (s[0] == ':') +*************** +*** 7113,7119 **** + n = FALSE; + if (lookfor != LOOKFOR_TERM && ind_cpp_baseclass > 0) + { +! n = cin_is_cpp_baseclass(l, &col); + l = ml_get_curline(); + } + if (n) +--- 7118,7124 ---- + n = FALSE; + if (lookfor != LOOKFOR_TERM && ind_cpp_baseclass > 0) + { +! n = cin_is_cpp_baseclass(&col); + l = ml_get_curline(); + } + if (n) +*************** +*** 7704,7710 **** + n = FALSE; + if (ind_cpp_baseclass != 0 && theline[0] != '{') + { +! n = cin_is_cpp_baseclass(l, &col); + l = ml_get_curline(); + } + if (n) +--- 7709,7715 ---- + n = FALSE; + if (ind_cpp_baseclass != 0 && theline[0] != '{') + { +! n = cin_is_cpp_baseclass(&col); + l = ml_get_curline(); + } + if (n) +*** ../vim-7.1.049/src/version.c Fri Aug 3 22:01:35 2007 +--- src/version.c Sat Aug 4 12:11:51 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 50, + /**/ + +-- +From "know your smileys": + |-P Reaction to unusually ugly C 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 /// diff --git a/7.1.051 b/7.1.051 new file mode 100644 index 00000000..bee1c1e7 --- /dev/null +++ b/7.1.051 @@ -0,0 +1,86 @@ +To: vim-dev@vim.org +Subject: patch 7.1.051 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.051 +Problem: Accessing uninitialized memory when finding spell suggestions. +Solution: Don't try swapping characters at the end of a word. +Files: src/spell.c + + +*** ../vim-7.1.050/src/spell.c Tue Jul 24 10:44:10 2007 +--- src/spell.c Sun Aug 5 16:59:48 2007 +*************** +*** 12182,12188 **** + { + n = mb_cptr2len(p); + c = mb_ptr2char(p); +! if (!soundfold && !spell_iswordp(p + n, curbuf)) + c2 = c; /* don't swap non-word char */ + else + c2 = mb_ptr2char(p + n); +--- 12182,12190 ---- + { + n = mb_cptr2len(p); + c = mb_ptr2char(p); +! if (p[n] == NUL) +! c2 = NUL; +! else if (!soundfold && !spell_iswordp(p + n, curbuf)) + c2 = c; /* don't swap non-word char */ + else + c2 = mb_ptr2char(p + n); +*************** +*** 12190,12199 **** + else + #endif + { +! if (!soundfold && !spell_iswordp(p + 1, curbuf)) + c2 = c; /* don't swap non-word char */ + else + c2 = p[1]; + } + + /* When characters are identical, swap won't do anything. +--- 12192,12210 ---- + else + #endif + { +! if (p[1] == NUL) +! c2 = NUL; +! else if (!soundfold && !spell_iswordp(p + 1, curbuf)) + c2 = c; /* don't swap non-word char */ + else + c2 = p[1]; ++ } ++ ++ /* When the second character is NUL we can't swap. */ ++ if (c2 == NUL) ++ { ++ sp->ts_state = STATE_REP_INI; ++ break; + } + + /* When characters are identical, swap won't do anything. +*** ../vim-7.1.050/src/version.c Sat Aug 4 12:14:04 2007 +--- src/version.c Sun Aug 5 18:31:09 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 51, + /**/ + +-- +From "know your smileys": + 8<}} Glasses, big nose, beard + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.052 b/7.1.052 new file mode 100644 index 00000000..d4da9f00 --- /dev/null +++ b/7.1.052 @@ -0,0 +1,89 @@ +To: vim-dev@vim.org +Subject: patch 7.1.052 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.052 +Problem: When creating a new match not all fields are initialized, which + may lead to unpredictable results. +Solution: Initialise rmm_ic and rmm_maxcol. +Files: src/window.c + + +*** ../vim-7.1.051/src/window.c Thu Jul 26 22:55:11 2007 +--- src/window.c Sun Aug 5 17:17:51 2007 +*************** +*** 6200,6206 **** + matchitem_T *prev; + matchitem_T *m; + int hlg_id; +! regmmatch_T match; + + if (*grp == NUL || *pat == NUL) + return -1; +--- 6243,6249 ---- + matchitem_T *prev; + matchitem_T *m; + int hlg_id; +! regprog_T *regprog; + + if (*grp == NUL || *pat == NUL) + return -1; +*************** +*** 6227,6233 **** + EMSG2(_(e_nogroup), grp); + return -1; + } +! if ((match.regprog = vim_regcomp(pat, RE_MAGIC)) == NULL) + { + EMSG2(_(e_invarg2), pat); + return -1; +--- 6270,6276 ---- + EMSG2(_(e_nogroup), grp); + return -1; + } +! if ((regprog = vim_regcomp(pat, RE_MAGIC)) == NULL) + { + EMSG2(_(e_invarg2), pat); + return -1; +*************** +*** 6250,6256 **** + m->priority = prio; + m->pattern = vim_strsave(pat); + m->hlg_id = hlg_id; +! m->match.regprog = match.regprog; + + /* Insert new match. The match list is in ascending order with regard to + * the match priorities. */ +--- 6293,6301 ---- + m->priority = prio; + m->pattern = vim_strsave(pat); + m->hlg_id = hlg_id; +! m->match.regprog = regprog; +! m->match.rmm_ic = FALSE; +! m->match.rmm_maxcol = 0; + + /* Insert new match. The match list is in ascending order with regard to + * the match priorities. */ +*** ../vim-7.1.051/src/version.c Sun Aug 5 18:32:21 2007 +--- src/version.c Sun Aug 5 18:47:55 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 52, + /**/ + +-- +From "know your smileys": + 8-O "Omigod!!" (done "rm -rf *" ?) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.053 b/7.1.053 new file mode 100644 index 00000000..22a4a089 --- /dev/null +++ b/7.1.053 @@ -0,0 +1,52 @@ +To: vim-dev@vim.org +Subject: patch 7.1.053 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.053 +Problem: Accessing uninitialized memory when giving a message. +Solution: Check going the length before checking for a NUL byte. +Files: src/message.c + + +*** ../vim-7.1.052/src/message.c Thu Jul 5 10:10:29 2007 +--- src/message.c Sat Aug 4 23:13:58 2007 +*************** +*** 1842,1848 **** + int wrap; + + did_wait_return = FALSE; +! while (*s != NUL && (maxlen < 0 || (int)(s - str) < maxlen)) + { + /* + * We are at the end of the screen line when: +--- 1842,1848 ---- + int wrap; + + did_wait_return = FALSE; +! while ((maxlen < 0 || (int)(s - str) < maxlen) && *s != NUL) + { + /* + * We are at the end of the screen line when: +*** ../vim-7.1.052/src/version.c Sun Aug 5 18:49:07 2007 +--- src/version.c Sun Aug 5 19:18:46 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 53, + /**/ + +-- +From "know your smileys": + <>:-) Bishop + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.054 b/7.1.054 new file mode 100644 index 00000000..42d60bba --- /dev/null +++ b/7.1.054 @@ -0,0 +1,148 @@ +To: vim-dev@vim.org +Subject: patch 7.1.054 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.054 +Problem: Accessing uninitialized memory when displaying the fold column. +Solution: Add a NUL to the extra array. (Dominique Pelle). Also do this in + a couple of other situations. +Files: src/screen.c + + +*** ../vim-7.1.053/src/screen.c Mon Jul 30 21:59:50 2007 +--- src/screen.c Sun Aug 5 16:10:53 2007 +*************** +*** 2555,2561 **** + + char_u extra[18]; /* "%ld" and 'fdc' must fit in here */ + int n_extra = 0; /* number of extra chars */ +! char_u *p_extra = NULL; /* string of extra chars */ + int c_extra = NUL; /* extra chars, all the same */ + int extra_attr = 0; /* attributes when n_extra != 0 */ + static char_u *at_end_str = (char_u *)""; /* used for p_extra when +--- 2555,2561 ---- + + char_u extra[18]; /* "%ld" and 'fdc' must fit in here */ + int n_extra = 0; /* number of extra chars */ +! char_u *p_extra = NULL; /* string of extra chars, plus NUL */ + int c_extra = NUL; /* extra chars, all the same */ + int extra_attr = 0; /* attributes when n_extra != 0 */ + static char_u *at_end_str = (char_u *)""; /* used for p_extra when +*************** +*** 3189,3198 **** + if (cmdwin_type != 0 && wp == curwin) + { + /* Draw the cmdline character. */ +- *extra = cmdwin_type; + n_extra = 1; +! p_extra = extra; +! c_extra = NUL; + char_attr = hl_attr(HLF_AT); + } + } +--- 3189,3196 ---- + if (cmdwin_type != 0 && wp == curwin) + { + /* Draw the cmdline character. */ + n_extra = 1; +! c_extra = cmdwin_type; + char_attr = hl_attr(HLF_AT); + } + } +*************** +*** 3208,3213 **** +--- 3206,3212 ---- + fill_foldcolumn(extra, wp, FALSE, lnum); + n_extra = wp->w_p_fdc; + p_extra = extra; ++ p_extra[n_extra] = NUL; + c_extra = NUL; + char_attr = hl_attr(HLF_FC); + } +*************** +*** 3550,3558 **** + * Get the next character to put on the screen. + */ + /* +! * The 'extra' array contains the extra stuff that is inserted to +! * represent special characters (non-printable stuff). When all +! * characters are the same, c_extra is used. + * For the '$' of the 'list' option, n_extra == 1, p_extra == "". + */ + if (n_extra > 0) +--- 3549,3559 ---- + * Get the next character to put on the screen. + */ + /* +! * The "p_extra" points to the extra stuff that is inserted to +! * represent special characters (non-printable stuff) and other +! * things. When all characters are the same, c_extra is used. +! * "p_extra" must end in a NUL to avoid mb_ptr2len() reads past +! * "p_extra[n_extra]". + * For the '$' of the 'list' option, n_extra == 1, p_extra == "". + */ + if (n_extra > 0) +*************** +*** 3808,3817 **** + * a '<' in the first column. */ + if (n_skip > 0 && mb_l > 1) + { +- extra[0] = '<'; +- p_extra = extra; + n_extra = 1; +! c_extra = NUL; + c = ' '; + if (area_attr == 0 && search_attr == 0) + { +--- 3809,3816 ---- + * a '<' in the first column. */ + if (n_skip > 0 && mb_l > 1) + { + n_extra = 1; +! c_extra = '<'; + c = ' '; + if (area_attr == 0 && search_attr == 0) + { +*************** +*** 6204,6211 **** + return; + + off = LineOffset[row] + col; +! while (*ptr != NUL && col < screen_Columns +! && (len < 0 || (int)(ptr - text) < len)) + { + c = *ptr; + #ifdef FEAT_MBYTE +--- 6203,6211 ---- + return; + + off = LineOffset[row] + col; +! while (col < screen_Columns +! && (len < 0 || (int)(ptr - text) < len) +! && *ptr != NUL) + { + c = *ptr; + #ifdef FEAT_MBYTE +*** ../vim-7.1.053/src/version.c Sun Aug 5 19:20:04 2007 +--- src/version.c Sun Aug 5 20:07:47 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 54, + /**/ + +-- +From "know your smileys": + +<(:-) The Pope + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.055 b/7.1.055 new file mode 100644 index 00000000..654797a6 --- /dev/null +++ b/7.1.055 @@ -0,0 +1,216 @@ +To: vim-dev@vim.org +Subject: patch 7.1.055 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.055 +Problem: Using strcpy() with arguments that overlap. +Solution: Use mch_memmove() instead. +Files: src/buffer.c, src/charset.c, src/eval.c, src/ex_getln.c, + src/misc1.c, src/regexp.c, src/termlib.c + + +*** ../vim-7.1.054/src/buffer.c Tue Jun 19 15:40:51 2007 +--- src/buffer.c Sun Aug 5 16:14:03 2007 +*************** +*** 4860,4866 **** + */ + for (e = s; *e != ':' && *e != NUL; ++e) + if (e[0] == '\\' && e[1] == ':') +! STRCPY(e, e + 1); + if (*e == NUL) + end = TRUE; + +--- 4860,4866 ---- + */ + for (e = s; *e != ':' && *e != NUL; ++e) + if (e[0] == '\\' && e[1] == ':') +! mch_memmove(e, e + 1, STRLEN(e)); + if (*e == NUL) + end = TRUE; + +*** ../vim-7.1.054/src/charset.c Tue Mar 27 12:41:45 2007 +--- src/charset.c Sun Aug 5 21:53:44 2007 +*************** +*** 1898,1904 **** + { + for ( ; *p; ++p) + if (rem_backslash(p)) +! STRCPY(p, p + 1); + } + + /* +--- 1898,1904 ---- + { + for ( ; *p; ++p) + if (rem_backslash(p)) +! mch_memmove(p, p + 1, STRLEN(p)); + } + + /* +*** ../vim-7.1.054/src/eval.c Fri Jul 27 21:32:13 2007 +--- src/eval.c Sun Aug 5 16:25:03 2007 +*************** +*** 13807,13813 **** + } + /* Shorten "remain". */ + if (*q != NUL) +! STRCPY(remain, q - 1); + else + { + vim_free(remain); +--- 13807,13813 ---- + } + /* Shorten "remain". */ + if (*q != NUL) +! mch_memmove(remain, q - 1, STRLEN(q - 1) + 1); + else + { + vim_free(remain); +*** ../vim-7.1.054/src/ex_getln.c Sat Jul 28 14:21:04 2007 +--- src/ex_getln.c Sun Aug 5 21:55:56 2007 +*************** +*** 4306,4315 **** + && pat[i + 1] == '\\' + && pat[i + 2] == '\\' + && pat[i + 3] == ' ') +! STRCPY(pat + i, pat + i + 3); + if (xp->xp_backslash == XP_BS_ONE + && pat[i + 1] == ' ') +! STRCPY(pat + i, pat + i + 1); + } + } + +--- 4306,4316 ---- + && pat[i + 1] == '\\' + && pat[i + 2] == '\\' + && pat[i + 3] == ' ') +! mch_memmove(pat + i, pat + i + 3, +! STRLEN(pat + i + 3) + 1); + if (xp->xp_backslash == XP_BS_ONE + && pat[i + 1] == ' ') +! mch_memmove(pat + i, pat + i + 1, STRLEN(pat + i)); + } + } + +*************** +*** 4552,4558 **** + pat = vim_strsave(filepat); + for (i = 0; pat[i]; ++i) + if (pat[i] == '\\' && pat[i + 1] == ' ') +! STRCPY(pat + i, pat + i + 1); + + flags |= EW_FILE | EW_EXEC; + +--- 4553,4559 ---- + pat = vim_strsave(filepat); + for (i = 0; pat[i]; ++i) + if (pat[i] == '\\' && pat[i + 1] == ' ') +! mch_memmove(pat + i, pat + i + 1, STRLEN(pat + i)); + + flags |= EW_FILE | EW_EXEC; + +*** ../vim-7.1.054/src/misc1.c Sat Aug 4 12:14:04 2007 +--- src/misc1.c Sun Aug 5 21:57:15 2007 +*************** +*** 8635,8641 **** + for (p = buf + wildoff; p < s; ++p) + if (rem_backslash(p)) + { +! STRCPY(p, p + 1); + --e; + --s; + } +--- 8635,8641 ---- + for (p = buf + wildoff; p < s; ++p) + if (rem_backslash(p)) + { +! mch_memmove(p, p + 1, STRLEN(p)); + --e; + --s; + } +*************** +*** 8936,8942 **** + for (p = buf + wildoff; p < s; ++p) + if (rem_backslash(p)) + { +! STRCPY(p, p + 1); + --e; + --s; + } +--- 8936,8942 ---- + for (p = buf + wildoff; p < s; ++p) + if (rem_backslash(p)) + { +! mch_memmove(p, p + 1, STRLEN(p)); + --e; + --s; + } +*** ../vim-7.1.054/src/regexp.c Mon Jul 30 22:32:11 2007 +--- src/regexp.c Sun Aug 5 15:43:27 2007 +*************** +*** 6637,6645 **** + } + } + else if (magic) +! STRCPY(p, p + 1); /* remove '~' */ + else +! STRCPY(p, p + 2); /* remove '\~' */ + --p; + } + else +--- 6638,6646 ---- + } + } + else if (magic) +! mch_memmove(p, p + 1, STRLEN(p)); /* remove '~' */ + else +! mch_memmove(p, p + 2, STRLEN(p) - 1); /* remove '\~' */ + --p; + } + else +*** ../vim-7.1.054/src/termlib.c Thu May 10 20:20:59 2007 +--- src/termlib.c Sun Aug 5 21:52:41 2007 +*************** +*** 191,197 **** + lbuf[0] == '\t' && + lbuf[1] == ':') + { +! strcpy(lbuf, lbuf+2); + llen -= 2; + } + if (lbuf[llen-2] == '\\') /* and continuations */ +--- 191,197 ---- + lbuf[0] == '\t' && + lbuf[1] == ':') + { +! mch_memmove(lbuf, lbuf + 2, strlen(lbuf + 2) + 1); + llen -= 2; + } + if (lbuf[llen-2] == '\\') /* and continuations */ +*** ../vim-7.1.054/src/version.c Sun Aug 5 20:10:16 2007 +--- src/version.c Mon Aug 6 21:34:54 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 55, + /**/ + +-- +From "know your smileys": + % Bike accident. A bit far-fetched, I suppose; although... + o _ _ _ + _o /\_ _ \\o (_)\__/o (_) + _< \_ _>(_) (_)/<_ \_| \ _|/' \/ + (_)>(_) (_) (_) (_) (_)' _\o_ + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.056 b/7.1.056 new file mode 100644 index 00000000..3986b5e6 --- /dev/null +++ b/7.1.056 @@ -0,0 +1,106 @@ +To: vim-dev@vim.org +Subject: patch 7.1.056 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.056 +Problem: More prompt does not behave correctly after scrolling back. + (Randall W. Morris) +Solution: Avoid lines_left becomes negative. (Chris Lubinski) Don't check + mp_last when deciding to show the more prompt. (Martin Toft) +Files: src/message.c + + +*** ../vim-7.1.055/src/message.c Sun Aug 5 19:20:04 2007 +--- src/message.c Tue Aug 7 21:52:10 2007 +*************** +*** 1878,1884 **** + /* output postponed text */ + t_puts(&t_col, t_s, s, attr); + +! /* When no more prompt an no more room, truncate here */ + if (msg_no_more && lines_left == 0) + break; + +--- 1878,1884 ---- + /* output postponed text */ + t_puts(&t_col, t_s, s, attr); + +! /* When no more prompt and no more room, truncate here */ + if (msg_no_more && lines_left == 0) + break; + +*************** +*** 1927,1933 **** + * If screen is completely filled and 'more' is set then wait + * for a character. + */ +! --lines_left; + if (p_more && lines_left == 0 && State != HITRETURN + && !msg_no_more && !exmode_active) + { +--- 1927,1934 ---- + * If screen is completely filled and 'more' is set then wait + * for a character. + */ +! if (lines_left > 0) +! --lines_left; + if (p_more && lines_left == 0 && State != HITRETURN + && !msg_no_more && !exmode_active) + { +*************** +*** 2234,2240 **** + { + msgchunk_T *mp; + +! /* Only show somethign if there is more than one line, otherwise it looks + * weird, typing a command without output results in one line. */ + mp = msg_sb_start(last_msgchunk); + if (mp == NULL || mp->sb_prev == NULL) +--- 2235,2241 ---- + { + msgchunk_T *mp; + +! /* Only show something if there is more than one line, otherwise it looks + * weird, typing a command without output results in one line. */ + mp = msg_sb_start(last_msgchunk); + if (mp == NULL || mp->sb_prev == NULL) +*************** +*** 2622,2628 **** + } + } + +! if (scroll < 0 || (scroll == 0 && mp_last != NULL)) + { + /* displayed the requested text, more prompt again */ + screen_fill((int)Rows - 1, (int)Rows, 0, +--- 2623,2629 ---- + } + } + +! if (scroll <= 0) + { + /* displayed the requested text, more prompt again */ + screen_fill((int)Rows - 1, (int)Rows, 0, +*** ../vim-7.1.055/src/version.c Mon Aug 6 22:27:13 2007 +--- src/version.c Tue Aug 7 21:57:02 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 56, + /**/ + +-- +From "know your smileys": + :-| :-| Deja' vu! + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.057 b/7.1.057 new file mode 100644 index 00000000..daa4ae8a --- /dev/null +++ b/7.1.057 @@ -0,0 +1,91 @@ +To: vim-dev@vim.org +Subject: patch 7.1.057 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.057 +Problem: Problem with CursorHoldI when using "r" in Visual mode (Max + Dyckhoff) +Solution: Ignore CursorHold(I) when getting a second character for a Normal + mode command. Also abort the "r" command in Visual when a special + key is typed. +Files: src/normal.c + + +*** ../vim-7.1.056/src/normal.c Tue Jul 10 14:02:51 2007 +--- src/normal.c Sun Aug 5 21:57:43 2007 +*************** +*** 889,894 **** +--- 889,899 ---- + + ++no_mapping; + ++allow_keys; /* no mapping for nchar, but allow key codes */ ++ #ifdef FEAT_AUTOCMD ++ /* Don't generate a CursorHold event here, most commands can't handle ++ * it, e.g., nv_replace(), nv_csearch(). */ ++ did_cursorhold = TRUE; ++ #endif + if (ca.cmdchar == 'g') + { + /* +*************** +*** 6662,6667 **** +--- 6668,6680 ---- + else + had_ctrl_v = NUL; + ++ /* Abort if the character is a special key. */ ++ if (IS_SPECIAL(cap->nchar)) ++ { ++ clearopbeep(cap->oap); ++ return; ++ } ++ + #ifdef FEAT_VISUAL + /* Visual mode "r" */ + if (VIsual_active) +*************** +*** 6688,6698 **** + } + #endif + +! /* +! * Check for a special key or not enough characters to replace. +! */ + ptr = ml_get_cursor(); +! if (IS_SPECIAL(cap->nchar) || STRLEN(ptr) < (unsigned)cap->count1 + #ifdef FEAT_MBYTE + || (has_mbyte && mb_charlen(ptr) < cap->count1) + #endif +--- 6701,6709 ---- + } + #endif + +! /* Abort if not enough characters to replace. */ + ptr = ml_get_cursor(); +! if (STRLEN(ptr) < (unsigned)cap->count1 + #ifdef FEAT_MBYTE + || (has_mbyte && mb_charlen(ptr) < cap->count1) + #endif +*** ../vim-7.1.056/src/version.c Tue Aug 7 21:59:26 2007 +--- src/version.c Wed Aug 8 21:39:43 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 57, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +95. Only communication in your household is through email. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.058 b/7.1.058 new file mode 100644 index 00000000..f4e3864a --- /dev/null +++ b/7.1.058 @@ -0,0 +1,397 @@ +To: vim-dev@vim.org +Subject: patch 7.1.058 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.058 +Problem: When 'rightleft' is set the completion menu is positioned wrong. + (Baha-Eddine MOKADEM) +Solution: Fix the completion menu. (Martin Toft) +Files: src/popupmnu.c, src/proto/search.pro, src/search.c + + +*** ../vim-7.1.057/src/popupmnu.c Thu Jun 28 21:23:52 2007 +--- src/popupmnu.c Wed Aug 1 15:43:06 2007 +*************** +*** 75,81 **** + + row = curwin->w_cline_row + W_WINROW(curwin); + height = curwin->w_cline_height; +- col = curwin->w_wcol + W_WINCOL(curwin) - curwin->w_leftcol; + + if (firstwin->w_p_pvw) + top_clear = firstwin->w_height; +--- 75,80 ---- +*************** +*** 167,172 **** +--- 166,180 ---- + pum_base_width = max_width; + pum_kind_width = kind_width; + ++ /* Calculate column */ ++ #ifdef FEAT_RIGHTLEFT ++ if (curwin->w_p_rl) ++ col = W_WINCOL(curwin) + W_WIDTH(curwin) - curwin->w_wcol - ++ curwin->w_leftcol - 1; ++ else ++ #endif ++ col = W_WINCOL(curwin) + curwin->w_wcol - curwin->w_leftcol; ++ + /* if there are more items than room we need a scrollbar */ + if (pum_height < size) + { +*************** +*** 179,189 **** + if (def_width < max_width) + def_width = max_width; + +! if (col < Columns - PUM_DEF_WIDTH || col < Columns - max_width) + { + /* align pum column with "col" */ + pum_col = col; +! pum_width = Columns - pum_col - pum_scrollbar; + if (pum_width > max_width + kind_width + extra_width + 1 + && pum_width > PUM_DEF_WIDTH) + { +--- 187,209 ---- + if (def_width < max_width) + def_width = max_width; + +! if (((col < Columns - PUM_DEF_WIDTH || col < Columns - max_width) +! #ifdef FEAT_RIGHTLEFT +! && !curwin->w_p_rl) +! || (curwin->w_p_rl && (col > PUM_DEF_WIDTH || col > max_width) +! #endif +! )) + { + /* align pum column with "col" */ + pum_col = col; +! +! #ifdef FEAT_RIGHTLEFT +! if (curwin->w_p_rl) +! pum_width = pum_col - pum_scrollbar + 1; +! else +! #endif +! pum_width = Columns - pum_col - pum_scrollbar; +! + if (pum_width > max_width + kind_width + extra_width + 1 + && pum_width > PUM_DEF_WIDTH) + { +*************** +*** 195,208 **** + else if (Columns < def_width) + { + /* not enough room, will use what we have */ +! pum_col = 0; + pum_width = Columns - 1; + } + else + { + if (max_width > PUM_DEF_WIDTH) + max_width = PUM_DEF_WIDTH; /* truncate */ +! pum_col = Columns - max_width; + pum_width = max_width - pum_scrollbar; + } + +--- 215,238 ---- + else if (Columns < def_width) + { + /* not enough room, will use what we have */ +! #ifdef FEAT_RIGHTLEFT +! if (curwin->w_p_rl) +! pum_col = Columns - 1; +! else +! #endif +! pum_col = 0; + pum_width = Columns - 1; + } + else + { + if (max_width > PUM_DEF_WIDTH) + max_width = PUM_DEF_WIDTH; /* truncate */ +! #ifdef FEAT_RIGHTLEFT +! if (curwin->w_p_rl) +! pum_col = max_width - 1; +! else +! #endif +! pum_col = Columns - max_width; + pum_width = max_width - pum_scrollbar; + } + +*************** +*** 255,262 **** + attr = (idx == pum_selected) ? attr_select : attr_norm; + + /* prepend a space if there is room */ +! if (pum_col > 0) +! screen_putchar(' ', row, pum_col - 1, attr); + + /* Display each entry, use two spaces for a Tab. + * Do this 3 times: For the main text, kind and extra info */ +--- 285,300 ---- + attr = (idx == pum_selected) ? attr_select : attr_norm; + + /* prepend a space if there is room */ +! #ifdef FEAT_RIGHTLEFT +! if (curwin->w_p_rl) +! { +! if (pum_col < W_WINCOL(curwin) + W_WIDTH(curwin) - 1) +! screen_putchar(' ', row, pum_col + 1, attr); +! } +! else +! #endif +! if (pum_col > 0) +! screen_putchar(' ', row, pum_col - 1, attr); + + /* Display each entry, use two spaces for a Tab. + * Do this 3 times: For the main text, kind and extra info */ +*************** +*** 282,307 **** + { + /* Display the text that fits or comes before a Tab. + * First convert it to printable characters. */ +! char_u *st; +! int saved = *p; + + *p = NUL; + st = transstr(s); + *p = saved; +! if (st != NULL) + { +! screen_puts_len(st, (int)STRLEN(st), row, col, + attr); +! vim_free(st); + } +- col += width; + + if (*p != TAB) + break; + + /* Display two spaces for a Tab. */ +! screen_puts_len((char_u *)" ", 2, row, col, attr); +! col += 2; + totwidth += 2; + s = NULL; /* start text at next char */ + width = 0; +--- 320,386 ---- + { + /* Display the text that fits or comes before a Tab. + * First convert it to printable characters. */ +! char_u *st; +! int saved = *p; + + *p = NUL; + st = transstr(s); + *p = saved; +! #ifdef FEAT_RIGHTLEFT +! if (curwin->w_p_rl) + { +! if (st != NULL) +! { +! char_u *rt = reverse_text(st); +! char_u *rt_saved = rt; +! int len, j; +! +! if (rt != NULL) +! { +! len = STRLEN(rt); +! if (len > pum_width) +! { +! for (j = pum_width; j < len; ++j) +! mb_ptr_adv(rt); +! len = pum_width; +! } +! screen_puts_len(rt, len, row, +! col - len + 1, attr); +! vim_free(rt_saved); +! } +! vim_free(st); +! } +! col -= width; +! } +! else +! #endif +! { +! if (st != NULL) +! { +! screen_puts_len(st, (int)STRLEN(st), row, col, + attr); +! vim_free(st); +! } +! col += width; + } + + if (*p != TAB) + break; + + /* Display two spaces for a Tab. */ +! #ifdef FEAT_RIGHTLEFT +! if (curwin->w_p_rl) +! { +! screen_puts_len((char_u *)" ", 2, row, col - 1, +! attr); +! col -= 2; +! } +! else +! #endif +! { +! screen_puts_len((char_u *)" ", 2, row, col, attr); +! col += 2; +! } + totwidth += 2; + s = NULL; /* start text at next char */ + width = 0; +*************** +*** 322,338 **** + && pum_array[idx].pum_extra == NULL) + || pum_base_width + n >= pum_width) + break; +! screen_fill(row, row + 1, col, pum_col + pum_base_width + n, + ' ', ' ', attr); +! col = pum_col + pum_base_width + n; + totwidth = pum_base_width + n; + } + +! screen_fill(row, row + 1, col, pum_col + pum_width, ' ', ' ', attr); + if (pum_scrollbar > 0) +! screen_putchar(' ', row, pum_col + pum_width, +! i >= thumb_pos && i < thumb_pos + thumb_heigth + ? attr_thumb : attr_scroll); + + ++row; + } +--- 401,444 ---- + && pum_array[idx].pum_extra == NULL) + || pum_base_width + n >= pum_width) + break; +! #ifdef FEAT_RIGHTLEFT +! if (curwin->w_p_rl) +! { +! screen_fill(row, row + 1, pum_col - pum_base_width - n + 1, +! col + 1, ' ', ' ', attr); +! col = pum_col - pum_base_width - n + 1; +! } +! else +! #endif +! { +! screen_fill(row, row + 1, col, pum_col + pum_base_width + n, + ' ', ' ', attr); +! col = pum_col + pum_base_width + n; +! } + totwidth = pum_base_width + n; + } + +! #ifdef FEAT_RIGHTLEFT +! if (curwin->w_p_rl) +! screen_fill(row, row + 1, pum_col - pum_width + 1, col + 1, ' ', +! ' ', attr); +! else +! #endif +! screen_fill(row, row + 1, col, pum_col + pum_width, ' ', ' ', +! attr); + if (pum_scrollbar > 0) +! { +! #ifdef FEAT_RIGHTLEFT +! if (curwin->w_p_rl) +! screen_putchar(' ', row, pum_col - pum_width, +! i >= thumb_pos && i < thumb_pos + thumb_heigth + ? attr_thumb : attr_scroll); ++ else ++ #endif ++ screen_putchar(' ', row, pum_col + pum_width, ++ i >= thumb_pos && i < thumb_pos + thumb_heigth ++ ? attr_thumb : attr_scroll); ++ } + + ++row; + } +*** ../vim-7.1.057/src/proto/search.pro Sat May 5 20:20:36 2007 +--- src/proto/search.pro Wed Aug 1 12:41:25 2007 +*************** +*** 1,6 **** +--- 1,7 ---- + /* search.c */ + int search_regcomp __ARGS((char_u *pat, int pat_save, int pat_use, int options, regmmatch_T *regmatch)); + char_u *get_search_pat __ARGS((void)); ++ char_u *reverse_text __ARGS((char_u *s)); + void save_search_patterns __ARGS((void)); + void restore_search_patterns __ARGS((void)); + void free_search_patterns __ARGS((void)); +*** ../vim-7.1.057/src/search.c Tue Jul 10 13:27:46 2007 +--- src/search.c Wed Aug 1 12:39:22 2007 +*************** +*** 101,107 **** + static char_u *mr_pattern = NULL; /* pattern used by search_regcomp() */ + #ifdef FEAT_RIGHTLEFT + static int mr_pattern_alloced = FALSE; /* mr_pattern was allocated */ +- static char_u *reverse_text __ARGS((char_u *s)); + #endif + + #ifdef FEAT_FIND_ID +--- 101,106 ---- +*************** +*** 228,239 **** + return mr_pattern; + } + +! #ifdef FEAT_RIGHTLEFT + /* + * Reverse text into allocated memory. + * Returns the allocated string, NULL when out of memory. + */ +! static char_u * + reverse_text(s) + char_u *s; + { +--- 227,238 ---- + return mr_pattern; + } + +! #if defined(FEAT_RIGHTLEFT) || defined(PROTO) + /* + * Reverse text into allocated memory. + * Returns the allocated string, NULL when out of memory. + */ +! char_u * + reverse_text(s) + char_u *s; + { +*************** +*** 1898,1904 **** + } + + #ifdef FEAT_RIGHTLEFT +! /* This is just guessing: when 'rightleft' is set, search for a maching + * paren/brace in the other direction. */ + if (curwin->w_p_rl && vim_strchr((char_u *)"()[]{}<>", initc) != NULL) + backwards = !backwards; +--- 1897,1903 ---- + } + + #ifdef FEAT_RIGHTLEFT +! /* This is just guessing: when 'rightleft' is set, search for a matching + * paren/brace in the other direction. */ + if (curwin->w_p_rl && vim_strchr((char_u *)"()[]{}<>", initc) != NULL) + backwards = !backwards; +*** ../vim-7.1.057/src/version.c Wed Aug 8 21:41:19 2007 +--- src/version.c Wed Aug 8 22:44:49 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 58, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +99. The hum of a cooling fan and the click of keys is comforting to you. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.059 b/7.1.059 new file mode 100644 index 00000000..8e19558a --- /dev/null +++ b/7.1.059 @@ -0,0 +1,104 @@ +To: vim-dev@vim.org +Subject: patch 7.1.059 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.059 +Problem: When in Ex mode and doing "g/^/vi" and then pressing CTRL-C Vim + hangs and beeps. (Antony Scriven) +Solution: Clear "got_int" in the main loop to avoid the hang. When typing + CTRL-C twice in a row abort the ":g" command. This is Vi + compatible. +Files: src/main.c + + +*** ../vim-7.1.058/src/main.c Tue Jun 19 20:30:46 2007 +--- src/main.c Tue Aug 7 22:40:35 2007 +*************** +*** 954,960 **** + int cmdwin; /* TRUE when working in the command-line window */ + int noexmode; /* TRUE when return on entering Ex mode */ + { +! oparg_T oa; /* operator arguments */ + + #if defined(FEAT_X11) && defined(FEAT_XCLIPBOARD) + /* Setup to catch a terminating error from the X server. Just ignore +--- 954,961 ---- + int cmdwin; /* TRUE when working in the command-line window */ + int noexmode; /* TRUE when return on entering Ex mode */ + { +! oparg_T oa; /* operator arguments */ +! int previous_got_int = FALSE; /* "got_int" was TRUE */ + + #if defined(FEAT_X11) && defined(FEAT_XCLIPBOARD) + /* Setup to catch a terminating error from the X server. Just ignore +*************** +*** 1015,1026 **** + need_fileinfo = FALSE; + } + } +! if (got_int && !global_busy) + { +! if (!quit_more) +! (void)vgetc(); /* flush all buffers */ +! got_int = FALSE; + } + if (!exmode_active) + msg_scroll = FALSE; + quit_more = FALSE; +--- 1016,1047 ---- + need_fileinfo = FALSE; + } + } +! +! /* Reset "got_int" now that we got back to the main loop. Except when +! * inside a ":g/pat/cmd" command, then the "got_int" needs to abort +! * the ":g" command. +! * For ":g/pat/vi" we reset "got_int" when used once. When used +! * a second time we go back to Ex mode and abort the ":g" command. */ +! if (got_int) + { +! if (noexmode && global_busy && !exmode_active && previous_got_int) +! { +! /* Typed two CTRL-C in a row: go back to ex mode as if "Q" was +! * used and keep "got_int" set, so that it aborts ":g". */ +! exmode_active = EXMODE_NORMAL; +! State = NORMAL; +! } +! else if (!global_busy || !exmode_active) +! { +! if (!quit_more) +! (void)vgetc(); /* flush all buffers */ +! got_int = FALSE; +! } +! previous_got_int = TRUE; + } ++ else ++ previous_got_int = FALSE; ++ + if (!exmode_active) + msg_scroll = FALSE; + quit_more = FALSE; +*** ../vim-7.1.058/src/version.c Wed Aug 8 22:48:16 2007 +--- src/version.c Fri Aug 10 21:30:39 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 59, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +116. You are living with your boyfriend who networks your respective + computers so you can sit in separate rooms and email each other + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.060 b/7.1.060 new file mode 100644 index 00000000..8c3cb33c --- /dev/null +++ b/7.1.060 @@ -0,0 +1,176 @@ +To: vim-dev@vim.org +Subject: patch 7.1.060 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.060 +Problem: Splitting quickfix window messes up window layout. (Marius + Gedminas) +Solution: Compute the window size in a smarter way. (Martin Toft) +Files: src/window.c + + +*** ../vim-7.1.059/src/window.c Sun Aug 5 18:49:07 2007 +--- src/window.c Sun Aug 5 17:17:51 2007 +*************** +*** 2121,2127 **** + if (wp->w_p_pvw || bt_quickfix(wp->w_buffer)) + { + /* +! * The cursor goes to the preview or the quickfix window, try + * finding another window to go to. + */ + for (;;) +--- 2121,2127 ---- + if (wp->w_p_pvw || bt_quickfix(wp->w_buffer)) + { + /* +! * If the cursor goes to the preview or the quickfix window, try + * finding another window to go to. + */ + for (;;) +*************** +*** 2308,2314 **** + frame_T *frp, *frp2, *frp3; + frame_T *frp_close = win->w_frame; + win_T *wp; +- int old_size = 0; + + /* + * If there is only one window there is nothing to remove. +--- 2308,2313 ---- +*************** +*** 2329,2361 **** + if (frp_close->fr_parent->fr_layout == FR_COL) + { + #endif +! /* When 'winfixheight' is set, remember its old size and restore +! * it later (it's a simplistic solution...). Don't do this if the +! * window will occupy the full height of the screen. */ +! if (frp2->fr_win != NULL +! && (frp2->fr_next != NULL || frp2->fr_prev != NULL) +! && frp2->fr_win->w_p_wfh) +! old_size = frp2->fr_win->w_height; + frame_new_height(frp2, frp2->fr_height + frp_close->fr_height, + frp2 == frp_close->fr_next ? TRUE : FALSE, FALSE); +- if (old_size != 0) +- win_setheight_win(old_size, frp2->fr_win); + #ifdef FEAT_VERTSPLIT + *dirp = 'v'; + } + else + { +! /* When 'winfixwidth' is set, remember its old size and restore +! * it later (it's a simplistic solution...). Don't do this if the +! * window will occupy the full width of the screen. */ +! if (frp2->fr_win != NULL +! && (frp2->fr_next != NULL || frp2->fr_prev != NULL) +! && frp2->fr_win->w_p_wfw) +! old_size = frp2->fr_win->w_width; + frame_new_width(frp2, frp2->fr_width + frp_close->fr_width, + frp2 == frp_close->fr_next ? TRUE : FALSE, FALSE); +- if (old_size != 0) +- win_setwidth_win(old_size, frp2->fr_win); + *dirp = 'h'; + } + #endif +--- 2328,2404 ---- + if (frp_close->fr_parent->fr_layout == FR_COL) + { + #endif +! /* When 'winfixheight' is set, try to find another frame in the column +! * (as close to the closed frame as possible) to distribute the height +! * to. */ +! if (frp2->fr_win != NULL && frp2->fr_win->w_p_wfh) +! { +! frp = frp_close->fr_prev; +! frp3 = frp_close->fr_next; +! while (frp != NULL || frp3 != NULL) +! { +! if (frp != NULL) +! { +! if (frp->fr_win != NULL && !frp->fr_win->w_p_wfh) +! { +! frp2 = frp; +! wp = frp->fr_win; +! break; +! } +! frp = frp->fr_prev; +! } +! if (frp3 != NULL) +! { +! if (frp3->fr_win != NULL && !frp3->fr_win->w_p_wfh) +! { +! frp2 = frp3; +! wp = frp3->fr_win; +! break; +! } +! frp3 = frp3->fr_next; +! } +! } +! } + frame_new_height(frp2, frp2->fr_height + frp_close->fr_height, + frp2 == frp_close->fr_next ? TRUE : FALSE, FALSE); + #ifdef FEAT_VERTSPLIT + *dirp = 'v'; + } + else + { +! /* When 'winfixwidth' is set, try to find another frame in the column +! * (as close to the closed frame as possible) to distribute the width +! * to. */ +! if (frp2->fr_win != NULL && frp2->fr_win->w_p_wfw) +! { +! frp = frp_close->fr_prev; +! frp3 = frp_close->fr_next; +! while (frp != NULL || frp3 != NULL) +! { +! if (frp != NULL) +! { +! if (frp->fr_win != NULL && !frp->fr_win->w_p_wfw) +! { +! frp2 = frp; +! wp = frp->fr_win; +! break; +! } +! frp = frp->fr_prev; +! } +! if (frp3 != NULL) +! { +! if (frp3->fr_win != NULL && !frp3->fr_win->w_p_wfw) +! { +! frp2 = frp3; +! wp = frp3->fr_win; +! break; +! } +! frp3 = frp3->fr_next; +! } +! } +! } + frame_new_width(frp2, frp2->fr_width + frp_close->fr_width, + frp2 == frp_close->fr_next ? TRUE : FALSE, FALSE); + *dirp = 'h'; + } + #endif +*** ../vim-7.1.059/src/version.c Fri Aug 10 21:32:41 2007 +--- src/version.c Sat Aug 11 13:34:42 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 60, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +117. You are more comfortable typing in html. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.061 b/7.1.061 new file mode 100644 index 00000000..e5cb28a8 --- /dev/null +++ b/7.1.061 @@ -0,0 +1,222 @@ +To: vim-dev@vim.org +Subject: patch 7.1.061 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.061 +Problem: Win32: When 'encoding' is "latin1" 'ignorecase' doesn't work for + characters with umlaut. (Joachim Hofmann) +Solution: Do not use islower()/isupper()/tolower()/toupper() but our own + functions. (Chris Lubinski) +Files: src/mbyte.c, src/regexp.c, src/vim.h + + +*** ../vim-7.1.060/src/mbyte.c Thu May 10 19:45:20 2007 +--- src/mbyte.c Sat Aug 4 13:44:36 2007 +*************** +*** 2320,2326 **** + /* Single byte: first check normally, then with ignore case. */ + if (s1[i] != s2[i]) + { +! cdiff = TOLOWER_LOC(s1[i]) - TOLOWER_LOC(s2[i]); + if (cdiff != 0) + return cdiff; + } +--- 2320,2326 ---- + /* Single byte: first check normally, then with ignore case. */ + if (s1[i] != s2[i]) + { +! cdiff = MB_TOLOWER(s1[i]) - MB_TOLOWER(s2[i]); + if (cdiff != 0) + return cdiff; + } +*** ../vim-7.1.060/src/regexp.c Mon Aug 6 22:27:13 2007 +--- src/regexp.c Sun Aug 5 15:43:27 2007 +*************** +*** 2220,2226 **** + break; + case CLASS_LOWER: + for (cu = 1; cu <= 255; cu++) +! if (islower(cu)) + regc(cu); + break; + case CLASS_PRINT: +--- 2220,2226 ---- + break; + case CLASS_LOWER: + for (cu = 1; cu <= 255; cu++) +! if (MB_ISLOWER(cu)) + regc(cu); + break; + case CLASS_PRINT: +*************** +*** 2240,2246 **** + break; + case CLASS_UPPER: + for (cu = 1; cu <= 255; cu++) +! if (isupper(cu)) + regc(cu); + break; + case CLASS_XDIGIT: +--- 2240,2246 ---- + break; + case CLASS_UPPER: + for (cu = 1; cu <= 255; cu++) +! if (MB_ISUPPER(cu)) + regc(cu); + break; + case CLASS_XDIGIT: +*************** +*** 3465,3471 **** + (enc_utf8 && utf_fold(prog->regstart) == utf_fold(c))) + || (c < 255 && prog->regstart < 255 && + #endif +! TOLOWER_LOC(prog->regstart) == TOLOWER_LOC(c))))) + retval = regtry(prog, col); + else + retval = 0; +--- 3465,3471 ---- + (enc_utf8 && utf_fold(prog->regstart) == utf_fold(c))) + || (c < 255 && prog->regstart < 255 && + #endif +! MB_TOLOWER(prog->regstart) == MB_TOLOWER(c))))) + retval = regtry(prog, col); + else + retval = 0; +*************** +*** 4200,4206 **** + #ifdef FEAT_MBYTE + !enc_utf8 && + #endif +! TOLOWER_LOC(*opnd) != TOLOWER_LOC(*reginput)))) + status = RA_NOMATCH; + else if (*opnd == NUL) + { +--- 4200,4206 ---- + #ifdef FEAT_MBYTE + !enc_utf8 && + #endif +! MB_TOLOWER(*opnd) != MB_TOLOWER(*reginput)))) + status = RA_NOMATCH; + else if (*opnd == NUL) + { +*************** +*** 4733,4742 **** + rst.nextb = *OPERAND(next); + if (ireg_ic) + { +! if (isupper(rst.nextb)) +! rst.nextb_ic = TOLOWER_LOC(rst.nextb); + else +! rst.nextb_ic = TOUPPER_LOC(rst.nextb); + } + else + rst.nextb_ic = rst.nextb; +--- 4733,4742 ---- + rst.nextb = *OPERAND(next); + if (ireg_ic) + { +! if (MB_ISUPPER(rst.nextb)) +! rst.nextb_ic = MB_TOLOWER(rst.nextb); + else +! rst.nextb_ic = MB_TOUPPER(rst.nextb); + } + else + rst.nextb_ic = rst.nextb; +*************** +*** 5558,5568 **** + int cu, cl; + + /* This doesn't do a multi-byte character, because a MULTIBYTECODE +! * would have been used for it. */ + if (ireg_ic) + { +! cu = TOUPPER_LOC(*opnd); +! cl = TOLOWER_LOC(*opnd); + while (count < maxcount && (*scan == cu || *scan == cl)) + { + count++; +--- 5558,5569 ---- + int cu, cl; + + /* This doesn't do a multi-byte character, because a MULTIBYTECODE +! * would have been used for it. It does handle single-byte +! * characters, such as latin1. */ + if (ireg_ic) + { +! cu = MB_TOUPPER(*opnd); +! cl = MB_TOLOWER(*opnd); + while (count < maxcount && (*scan == cu || *scan == cl)) + { + count++; +*************** +*** 6490,6499 **** + cc = utf_fold(c); + else + #endif +! if (isupper(c)) +! cc = TOLOWER_LOC(c); +! else if (islower(c)) +! cc = TOUPPER_LOC(c); + else + return vim_strchr(s, c); + +--- 6491,6500 ---- + cc = utf_fold(c); + else + #endif +! if (MB_ISUPPER(c)) +! cc = MB_TOLOWER(c); +! else if (MB_ISLOWER(c)) +! cc = MB_TOUPPER(c); + else + return vim_strchr(s, c); + +*** ../vim-7.1.060/src/vim.h Sat May 12 15:08:22 2007 +--- src/vim.h Sat Aug 4 13:57:36 2007 +*************** +*** 1380,1387 **** + #endif + + #ifdef FEAT_MBYTE +! # define MB_STRICMP(d, s) (has_mbyte ? mb_strnicmp((char_u *)(d), (char_u *)(s), (int)MAXCOL) : STRICMP((d), (s))) +! # define MB_STRNICMP(d, s, n) (has_mbyte ? mb_strnicmp((char_u *)(d), (char_u *)(s), (int)(n)) : STRNICMP((d), (s), (n))) + #else + # define MB_STRICMP(d, s) STRICMP((d), (s)) + # define MB_STRNICMP(d, s, n) STRNICMP((d), (s), (n)) +--- 1380,1393 ---- + #endif + + #ifdef FEAT_MBYTE +! /* We need to call mb_stricmp() even when we aren't dealing with a multi-byte +! * encoding because mb_stricmp() takes care of all ascii and non-ascii +! * encodings, including characters with umluats in latin1, etc., while +! * STRICMP() only handles the system locale version, which often does not +! * handle non-ascii properly. */ +! +! # define MB_STRICMP(d, s) mb_strnicmp((char_u *)(d), (char_u *)(s), (int)MAXCOL) +! # define MB_STRNICMP(d, s, n) mb_strnicmp((char_u *)(d), (char_u *)(s), (int)(n)) + #else + # define MB_STRICMP(d, s) STRICMP((d), (s)) + # define MB_STRNICMP(d, s, n) STRNICMP((d), (s), (n)) +*** ../vim-7.1.060/src/version.c Sat Aug 11 13:37:36 2007 +--- src/version.c Sat Aug 11 13:55:24 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 61, + /**/ + +-- +Support your right to bare arms! Wear short sleeves! + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.062 b/7.1.062 new file mode 100644 index 00000000..683b304a --- /dev/null +++ b/7.1.062 @@ -0,0 +1,55 @@ +To: vim-dev@vim.org +Subject: patch 7.1.062 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.062 (after 7.1.038) +Problem: Indents of C comments can be wrong. (John Mullin) +Solution: Adjust ind_len. (Chris Lubinski) +Files: src/misc1.c + + +*** ../vim-7.1.061/src/misc1.c Mon Aug 6 22:27:13 2007 +--- src/misc1.c Fri Aug 10 19:41:42 2007 +*************** +*** 222,228 **** + * than old) */ + while (vim_iswhite(*p)) + (void)*p++; +! todo = size-ind_done; + } + else + { +--- 222,231 ---- + * than old) */ + while (vim_iswhite(*p)) + (void)*p++; +! todo = size - ind_done; +! ind_len += todo; /* Set total length of indent in characters, +! * which may have been undercounted until now */ +! + } + else + { +*** ../vim-7.1.061/src/version.c Sat Aug 11 13:57:31 2007 +--- src/version.c Sat Aug 11 14:30:52 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 62, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +120. You ask a friend, "What's that big shiny thing?" He says, "It's the sun." + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.063 b/7.1.063 new file mode 100644 index 00000000..d276d54d --- /dev/null +++ b/7.1.063 @@ -0,0 +1,52 @@ +To: vim-dev@vim.org +Subject: patch 7.1.063 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.063 (after 7.1.040) +Problem: Warning for unitialized variable. +Solution: Initialise it to NULL. +Files: src/ex_docmd.c + + +*** ../vim-7.1.062/src/ex_docmd.c Thu Jul 26 22:55:11 2007 +--- src/ex_docmd.c Wed Aug 8 22:28:33 2007 +*************** +*** 10817,10823 **** + exarg_T *eap; + { + char_u *p; +! char_u *g; + char_u *end; + int c; + int id; +--- 10818,10824 ---- + exarg_T *eap; + { + char_u *p; +! char_u *g = NULL; + char_u *end; + int c; + int id; +*** ../vim-7.1.062/src/version.c Sat Aug 11 14:32:10 2007 +--- src/version.c Sat Aug 11 15:58:55 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 63, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +124. You begin conversations with, "Who is your internet service provider?" + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.064 b/7.1.064 new file mode 100644 index 00000000..f1fb1309 --- /dev/null +++ b/7.1.064 @@ -0,0 +1,50 @@ +To: vim-dev@vim.org +Subject: patch 7.1.064 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.064 +Problem: On Interix some files appear not to exist. +Solution: Remove the top bit from st_mode. (Ligesh) +Files: src/os_unix.c + + +*** ../vim-7.1.063/src/os_unix.c Thu May 10 19:42:47 2007 +--- src/os_unix.c Fri Aug 10 19:32:20 2007 +*************** +*** 2499,2505 **** +--- 2499,2511 ---- + if (stat((char *)name, &statb)) + #endif + return -1; ++ #ifdef __INTERIX ++ /* The top bit makes the value negative, which means the file doesn't ++ * exist. Remove the bit, we don't use it. */ ++ return statb.st_mode & ~S_ADDACE; ++ #else + return statb.st_mode; ++ #endif + } + + /* +*** ../vim-7.1.063/src/version.c Sat Aug 11 15:59:44 2007 +--- src/version.c Sat Aug 11 22:21:35 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 64, + /**/ + +-- +I have a watch cat! Just break in and she'll watch. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.065 b/7.1.065 new file mode 100644 index 00000000..57c7f224 --- /dev/null +++ b/7.1.065 @@ -0,0 +1,113 @@ +To: vim-dev@vim.org +Subject: patch 7.1.065 (extra) +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.065 (extra) +Problem: Win32: Compilation problem for newer version of w32api. +Solution: Only define __IID_DEFINED__ when needed. (Chris Sutcliffe) +Files: src/Make_ming.mak, src/iid_ole.c + + +*** ../vim-7.1.064/src/Make_ming.mak Thu May 10 19:35:54 2007 +--- src/Make_ming.mak Sat Aug 11 14:52:11 2007 +*************** +*** 572,579 **** + $(OUTDIR)/if_cscope.o: if_cscope.c $(INCL) if_cscope.h + $(CC) -c $(CFLAGS) if_cscope.c -o $(OUTDIR)/if_cscope.o + + $(OUTDIR)/if_ole.o: if_ole.cpp $(INCL) +! $(CC) $(CFLAGS) -D__IID_DEFINED__ -c -o $(OUTDIR)/if_ole.o if_ole.cpp + + $(OUTDIR)/if_ruby.o: if_ruby.c $(INCL) + ifeq (16, $(RUBY)) +--- 572,580 ---- + $(OUTDIR)/if_cscope.o: if_cscope.c $(INCL) if_cscope.h + $(CC) -c $(CFLAGS) if_cscope.c -o $(OUTDIR)/if_cscope.o + ++ # Remove -D__IID_DEFINED__ for newer versions of the w32api + $(OUTDIR)/if_ole.o: if_ole.cpp $(INCL) +! $(CC) $(CFLAGS) -c -o $(OUTDIR)/if_ole.o if_ole.cpp + + $(OUTDIR)/if_ruby.o: if_ruby.c $(INCL) + ifeq (16, $(RUBY)) +*** ../vim-7.1.064/src/iid_ole.c Sun Jun 13 18:45:30 2004 +--- src/iid_ole.c Sat Aug 11 14:57:58 2007 +*************** +*** 16,24 **** + extern "C"{ + #endif + + + #ifndef __IID_DEFINED__ +! #define __IID_DEFINED__ + + typedef struct _IID + { +--- 16,33 ---- + extern "C"{ + #endif + ++ #ifdef __MINGW32__ ++ # include ++ ++ # if __W32API_MAJOR_VERSION == 3 && __W32API_MINOR_VERSION < 10 ++ /* This define is missing from older MingW versions of w32api, even though ++ * IID is defined. */ ++ # define __IID_DEFINED__ ++ # endif ++ #endif + + #ifndef __IID_DEFINED__ +! # define __IID_DEFINED__ + + typedef struct _IID + { +*************** +*** 28,39 **** + unsigned char c[8]; + } IID; + +! #endif // __IID_DEFINED__ + + #ifndef CLSID_DEFINED +! #define CLSID_DEFINED + typedef IID CLSID; +! #endif // CLSID_DEFINED + + const IID IID_IVim = {0x0F0BFAE2,0x4C90,0x11d1,{0x82,0xD7,0x00,0x04,0xAC,0x36,0x85,0x19}}; + +--- 37,48 ---- + unsigned char c[8]; + } IID; + +! #endif + + #ifndef CLSID_DEFINED +! # define CLSID_DEFINED + typedef IID CLSID; +! #endif + + const IID IID_IVim = {0x0F0BFAE2,0x4C90,0x11d1,{0x82,0xD7,0x00,0x04,0xAC,0x36,0x85,0x19}}; + +*** ../vim-7.1.064/src/version.c Sat Aug 11 22:22:56 2007 +--- src/version.c Sun Aug 12 15:21:34 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 65, + /**/ + +-- +I'm writing a book. I've got the page numbers done. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.066 b/7.1.066 new file mode 100644 index 00000000..c9f16294 --- /dev/null +++ b/7.1.066 @@ -0,0 +1,152 @@ +To: vim-dev@vim.org +Subject: patch 7.1.066 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.066 +Problem: When 'bomb' is set or reset the file should be considered + modified. (Tony Mechelynck) +Solution: Handle like 'endofline'. (Martin Toft) +Files: src/buffer.c, src/fileio.c, src/option.c, src/structs.h + + +*** ../vim-7.1.065/src/buffer.c Mon Aug 6 22:27:12 2007 +--- src/buffer.c Sat Aug 11 16:56:57 2007 +*************** +*** 502,507 **** +--- 502,508 ---- + buf->b_start_eol = TRUE; + #ifdef FEAT_MBYTE + buf->b_p_bomb = FALSE; ++ buf->b_start_bomb = FALSE; + #endif + buf->b_ml.ml_mfp = NULL; + buf->b_ml.ml_flags = ML_EMPTY; /* empty buffer */ +*** ../vim-7.1.065/src/fileio.c Tue Jul 10 17:09:51 2007 +--- src/fileio.c Sat Aug 11 16:56:57 2007 +*************** +*** 654,659 **** +--- 654,660 ---- + curbuf->b_start_eol = TRUE; + #ifdef FEAT_MBYTE + curbuf->b_p_bomb = FALSE; ++ curbuf->b_start_bomb = FALSE; + #endif + } + +*************** +*** 912,918 **** +--- 913,922 ---- + file_rewind = FALSE; + #ifdef FEAT_MBYTE + if (set_options) ++ { + curbuf->b_p_bomb = FALSE; ++ curbuf->b_start_bomb = FALSE; ++ } + conv_error = 0; + #endif + } +*************** +*** 1361,1367 **** +--- 1365,1374 ---- + size -= blen; + mch_memmove(ptr, ptr + blen, (size_t)size); + if (set_options) ++ { + curbuf->b_p_bomb = TRUE; ++ curbuf->b_start_bomb = TRUE; ++ } + } + + if (fio_flags == FIO_UCSBOM) +*** ../vim-7.1.065/src/option.c Tue Jul 24 14:57:16 2007 +--- src/option.c Sat Aug 11 16:56:57 2007 +*************** +*** 7118,7123 **** +--- 7118,7128 ---- + /* when 'endofline' is changed, redraw the window title */ + else if ((int *)varp == &curbuf->b_p_eol) + need_maketitle = TRUE; ++ #ifdef FEAT_MBYTE ++ /* when 'bomb' is changed, redraw the window title */ ++ else if ((int *)varp == &curbuf->b_p_bomb) ++ need_maketitle = TRUE; ++ #endif + #endif + + /* when 'bin' is set also set some other options */ +*************** +*** 10604,10609 **** +--- 10609,10616 ---- + buf->b_start_ffc = *buf->b_p_ff; + buf->b_start_eol = buf->b_p_eol; + #ifdef FEAT_MBYTE ++ buf->b_start_bomb = buf->b_p_bomb; ++ + /* Only use free/alloc when necessary, they take time. */ + if (buf->b_start_fenc == NULL + || STRCMP(buf->b_start_fenc, buf->b_p_fenc) != 0) +*************** +*** 10617,10623 **** + /* + * Return TRUE if 'fileformat' and/or 'fileencoding' has a different value + * from when editing started (save_file_ff() called). +! * Also when 'endofline' was changed and 'binary' is set. + * Don't consider a new, empty buffer to be changed. + */ + int +--- 10624,10631 ---- + /* + * Return TRUE if 'fileformat' and/or 'fileencoding' has a different value + * from when editing started (save_file_ff() called). +! * Also when 'endofline' was changed and 'binary' is set, or when 'bomb' was +! * changed and 'binary' is not set. + * Don't consider a new, empty buffer to be changed. + */ + int +*************** +*** 10636,10641 **** +--- 10644,10651 ---- + if (buf->b_p_bin && buf->b_start_eol != buf->b_p_eol) + return TRUE; + #ifdef FEAT_MBYTE ++ if (!buf->b_p_bin && buf->b_start_bomb != buf->b_p_bomb) ++ return TRUE; + if (buf->b_start_fenc == NULL) + return (*buf->b_p_fenc != NUL); + return (STRCMP(buf->b_start_fenc, buf->b_p_fenc) != 0); +*** ../vim-7.1.065/src/structs.h Thu Jul 26 22:55:11 2007 +--- src/structs.h Sat Aug 11 16:56:57 2007 +*************** +*** 1453,1458 **** +--- 1453,1459 ---- + #ifdef FEAT_MBYTE + char_u *b_start_fenc; /* 'fileencoding' when edit started or NULL */ + int b_bad_char; /* "++bad=" argument when edit started or 0 */ ++ int b_start_bomb; /* 'bomb' when it was read */ + #endif + + #ifdef FEAT_EVAL +*** ../vim-7.1.065/src/version.c Sun Aug 12 15:24:05 2007 +--- src/version.c Sun Aug 12 15:48:34 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 66, + /**/ + +-- +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 /// diff --git a/7.1.067 b/7.1.067 new file mode 100644 index 00000000..6da49e3f --- /dev/null +++ b/7.1.067 @@ -0,0 +1,302 @@ +To: vim-dev@vim.org +Subject: patch 7.1.067 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.067 +Problem: 'thesaurus' doesn't work when 'infercase' is set. (Mohsin) +Solution: Don't copy the characters being completed but check the case and + apply it to the suggested word. Also fix that the first word in + the thesaurus line is not used. (Martin Toft) +Files: src/edit.c + + +*** ../vim-7.1.066/src/edit.c Sun Jul 29 15:02:34 2007 +--- src/edit.c Sat Aug 11 17:16:51 2007 +*************** +*** 2057,2063 **** + * case of the originally typed text is used, and the case of the completed + * text is inferred, ie this tries to work out what case you probably wanted + * the rest of the word to be in -- webb +- * TODO: make this work for multi-byte characters. + */ + int + ins_compl_add_infercase(str, len, icase, fname, dir, flags) +--- 2057,2062 ---- +*************** +*** 2068,2121 **** + int dir; + int flags; + { + int has_lower = FALSE; + int was_letter = FALSE; +- int idx; + +! if (p_ic && curbuf->b_p_inf && len < IOSIZE) + { +! /* Infer case of completed part -- webb */ +! /* Use IObuff, str would change text in buffer! */ +! vim_strncpy(IObuff, str, len); + +! /* Rule 1: Were any chars converted to lower? */ +! for (idx = 0; idx < compl_length; ++idx) + { +! if (islower(compl_orig_text[idx])) + { +! has_lower = TRUE; +! if (isupper(IObuff[idx])) +! { +! /* Rule 1 is satisfied */ +! for (idx = compl_length; idx < len; ++idx) +! IObuff[idx] = TOLOWER_LOC(IObuff[idx]); +! break; +! } + } + } + +! /* +! * Rule 2: No lower case, 2nd consecutive letter converted to +! * upper case. +! */ +! if (!has_lower) + { +! for (idx = 0; idx < compl_length; ++idx) + { +! if (was_letter && isupper(compl_orig_text[idx]) +! && islower(IObuff[idx])) + { +! /* Rule 2 is satisfied */ +! for (idx = compl_length; idx < len; ++idx) +! IObuff[idx] = TOUPPER_LOC(IObuff[idx]); +! break; + } +- was_letter = isalpha(compl_orig_text[idx]); + } +- } + +! /* Copy the original case of the part we typed */ +! STRNCPY(IObuff, compl_orig_text, compl_length); + + return ins_compl_add(IObuff, len, icase, fname, NULL, dir, + flags, FALSE); +--- 2067,2213 ---- + int dir; + int flags; + { ++ char_u *p; ++ int i, c; ++ int actual_len; /* Take multi-byte characters */ ++ int actual_compl_length; /* into account. */ ++ int *wca; /* Wide character array. */ + int has_lower = FALSE; + int was_letter = FALSE; + +! if (p_ic && curbuf->b_p_inf) + { +! /* Infer case of completed part. */ + +! /* Find actual length of completion. */ +! #ifdef FEAT_MBYTE +! if (has_mbyte) + { +! p = str; +! actual_len = 0; +! while (*p != NUL) + { +! mb_ptr_adv(p); +! ++actual_len; + } + } ++ else ++ #endif ++ actual_len = len; + +! /* Find actual length of original text. */ +! #ifdef FEAT_MBYTE +! if (has_mbyte) + { +! p = compl_orig_text; +! actual_compl_length = 0; +! while (*p != NUL) + { +! mb_ptr_adv(p); +! ++actual_compl_length; +! } +! } +! else +! #endif +! actual_compl_length = compl_length; +! +! /* Allocate wide character array for the completion and fill it. */ +! wca = (int *)alloc(actual_len * sizeof(int)); +! if (wca != NULL) +! { +! p = str; +! for (i = 0; i < actual_len; ++i) +! #ifdef FEAT_MBYTE +! if (has_mbyte) +! wca[i] = mb_ptr2char_adv(&p); +! else +! #endif +! wca[i] = *(p++); +! +! /* Rule 1: Were any chars converted to lower? */ +! p = compl_orig_text; +! for (i = 0; i < actual_compl_length; ++i) +! { +! #ifdef FEAT_MBYTE +! if (has_mbyte) +! c = mb_ptr2char_adv(&p); +! else +! #endif +! c = *(p++); +! if (MB_ISLOWER(c)) + { +! has_lower = TRUE; +! if (MB_ISUPPER(wca[i])) +! { +! /* Rule 1 is satisfied. */ +! for (i = actual_compl_length; i < actual_len; ++i) +! wca[i] = MB_TOLOWER(wca[i]); +! break; +! } + } + } + +! /* +! * Rule 2: No lower case, 2nd consecutive letter converted to +! * upper case. +! */ +! if (!has_lower) +! { +! p = compl_orig_text; +! for (i = 0; i < actual_compl_length; ++i) +! { +! #ifdef FEAT_MBYTE +! if (has_mbyte) +! c = mb_ptr2char_adv(&p); +! else +! #endif +! c = *(p++); +! if (was_letter && MB_ISUPPER(c) && MB_ISLOWER(wca[i])) +! { +! /* Rule 2 is satisfied. */ +! for (i = actual_compl_length; i < actual_len; ++i) +! wca[i] = MB_TOUPPER(wca[i]); +! break; +! } +! was_letter = MB_ISLOWER(c) || MB_ISUPPER(c); +! } +! } +! +! /* Copy the original case of the part we typed. */ +! p = compl_orig_text; +! for (i = 0; i < actual_compl_length; ++i) +! { +! #ifdef FEAT_MBYTE +! if (has_mbyte) +! c = mb_ptr2char_adv(&p); +! else +! #endif +! c = *(p++); +! if (MB_ISLOWER(c)) +! wca[i] = MB_TOLOWER(wca[i]); +! else if (MB_ISUPPER(c)) +! wca[i] = MB_TOUPPER(wca[i]); +! } +! +! /* +! * Generate encoding specific output from wide character array. +! * Multi-byte characters can occupy up to five bytes more than +! * ASCII characters, and we also need one byte for NUL, so stay +! * six bytes away from the edge of IObuff. +! */ +! p = IObuff; +! i = 0; +! while (i < actual_len && (p - IObuff + 6) < IOSIZE) +! #ifdef FEAT_MBYTE +! if (has_mbyte) +! p += mb_char2bytes(wca[i++], p); +! else +! #endif +! *(p++) = wca[i++]; +! *p = NUL; +! +! vim_free(wca); +! } + + return ins_compl_add(IObuff, len, icase, fname, NULL, dir, + flags, FALSE); +*************** +*** 2842,2847 **** +--- 2934,2940 ---- + /* + * Add the other matches on the line + */ ++ ptr = buf; + while (!got_int) + { + /* Find start of the next word. Skip white +*************** +*** 2851,2857 **** + break; + wstart = ptr; + +! /* Find end of the word and add it. */ + #ifdef FEAT_MBYTE + if (has_mbyte) + /* Japanese words may have characters in +--- 2944,2950 ---- + break; + wstart = ptr; + +! /* Find end of the word. */ + #ifdef FEAT_MBYTE + if (has_mbyte) + /* Japanese words may have characters in +*************** +*** 2868,2876 **** + else + #endif + ptr = find_word_end(ptr); +! add_r = ins_compl_add_infercase(wstart, +! (int)(ptr - wstart), +! p_ic, files[i], *dir, 0); + } + } + if (add_r == OK) +--- 2961,2972 ---- + else + #endif + ptr = find_word_end(ptr); +! +! /* Add the word. Skip the regexp match. */ +! if (wstart != regmatch->startp[0]) +! add_r = ins_compl_add_infercase(wstart, +! (int)(ptr - wstart), +! p_ic, files[i], *dir, 0); + } + } + if (add_r == OK) +*** ../vim-7.1.066/src/version.c Sun Aug 12 15:50:26 2007 +--- src/version.c Sun Aug 12 16:36:34 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 67, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +128. You can access the Net -- via your portable and cellular phone. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.068 b/7.1.068 new file mode 100644 index 00000000..5f0d6851 --- /dev/null +++ b/7.1.068 @@ -0,0 +1,206 @@ +To: vim-dev@vim.org +Subject: patch 7.1.068 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.068 +Problem: When 'equalalways' is set and splitting a window, it's possible + that another small window gets bigger. +Solution: Only equalize window sizes when after a split the windows are + smaller than another window. (Martin Toft) +Files: runtime/doc/options.txt, runtime/doc/windows.txt, src/window.c + + +*** ../vim-7.1.067/runtime/doc/options.txt Sat May 12 16:27:04 2007 +--- runtime/doc/options.txt Sat Aug 11 17:25:38 2007 +*************** +*** 1,4 **** +! *options.txt* For Vim version 7.1. Last change: 2007 May 11 + + + VIM REFERENCE MANUAL by Bram Moolenaar +--- 1,4 ---- +! *options.txt* For Vim version 7.1. Last change: 2007 Aug 10 + + + VIM REFERENCE MANUAL by Bram Moolenaar +*************** +*** 2415,2422 **** + When mixing vertically and horizontally split windows, a minimal size + is computed and some windows may be larger if there is room. The + 'eadirection' option tells in which direction the size is affected. +! Changing the height of a window can be avoided by setting +! 'winfixheight'. + + *'equalprg'* *'ep'* + 'equalprg' 'ep' string (default "") +--- 2418,2425 ---- + When mixing vertically and horizontally split windows, a minimal size + is computed and some windows may be larger if there is room. The + 'eadirection' option tells in which direction the size is affected. +! Changing the height and width of a window can be avoided by setting +! 'winfixheight' and 'winfixwidth', respectively. + + *'equalprg'* *'ep'* + 'equalprg' 'ep' string (default "") +*** ../vim-7.1.067/runtime/doc/windows.txt Sat May 12 16:42:48 2007 +--- runtime/doc/windows.txt Sat Aug 11 17:25:38 2007 +*************** +*** 132,138 **** + the same file. Make new window N high (default is to use half + the height of the current window). Reduces the current window + height to create room (and others, if the 'equalalways' option +! is set and 'eadirection' isn't "hor"). + Note: CTRL-S does not work on all terminals and might block + further input, use CTRL-Q to get going again. + Also see |++opt| and |+cmd|. +--- 132,139 ---- + the same file. Make new window N high (default is to use half + the height of the current window). Reduces the current window + height to create room (and others, if the 'equalalways' option +! is set, 'eadirection' isn't "hor", and one of them is higher +! than the current or the new window). + Note: CTRL-S does not work on all terminals and might block + further input, use CTRL-Q to get going again. + Also see |++opt| and |+cmd|. +*************** +*** 140,148 **** + CTRL-W CTRL-V *CTRL-W_CTRL-V* + CTRL-W v *CTRL-W_v* + :[N]vs[plit] [++opt] [+cmd] [file] *:vs* *:vsplit* +! Like |:split|, but split vertically. If 'equalalways' is set +! and 'eadirection' isn't "ver" the windows will be spread out +! horizontally, unless a width was specified. + Note: In other places CTRL-Q does the same as CTRL-V, but here + it doesn't! + +--- 141,153 ---- + CTRL-W CTRL-V *CTRL-W_CTRL-V* + CTRL-W v *CTRL-W_v* + :[N]vs[plit] [++opt] [+cmd] [file] *:vs* *:vsplit* +! Like |:split|, but split vertically. The windows will be +! spread out horizontally if +! 1. a width was not specified, +! 2. 'equalalways' is set, +! 3. 'eadirection' isn't "ver", and +! 4. one of the other windows are wider than the current or new +! window. + Note: In other places CTRL-Q does the same as CTRL-V, but here + it doesn't! + +*** ../vim-7.1.067/src/window.c Sat Aug 11 13:37:36 2007 +--- src/window.c Sat Aug 11 17:25:38 2007 +*************** +*** 733,739 **** + if (flags & WSP_VERT) + { + layout = FR_ROW; +- do_equal = (p_ea && new_size == 0 && *p_ead != 'v'); + + /* + * Check if we are able to split the current window and compute its +--- 733,738 ---- +*************** +*** 770,785 **** + * instead, if possible. */ + if (oldwin->w_p_wfw) + win_setwidth_win(oldwin->w_width + new_size, oldwin); + } + else + #endif + { + layout = FR_COL; +- do_equal = (p_ea && new_size == 0 +- #ifdef FEAT_VERTSPLIT +- && *p_ead != 'h' +- #endif +- ); + + /* + * Check if we are able to split the current window and compute its +--- 769,799 ---- + * instead, if possible. */ + if (oldwin->w_p_wfw) + win_setwidth_win(oldwin->w_width + new_size, oldwin); ++ ++ /* Only make all windows the same width if one of them (except oldwin) ++ * is wider than one of the split windows. */ ++ if (!do_equal && p_ea && size == 0 && *p_ead != 'v' ++ && oldwin->w_frame->fr_parent != NULL) ++ { ++ frp = oldwin->w_frame->fr_parent->fr_child; ++ while (frp != NULL) ++ { ++ if (frp->fr_win != oldwin && frp->fr_win != NULL ++ && (frp->fr_win->w_width > new_size ++ || frp->fr_win->w_width > oldwin->w_width ++ - new_size - STATUS_HEIGHT)) ++ { ++ do_equal = TRUE; ++ break; ++ } ++ frp = frp->fr_next; ++ } ++ } + } + else + #endif + { + layout = FR_COL; + + /* + * Check if we are able to split the current window and compute its +*************** +*** 831,836 **** +--- 845,873 ---- + oldwin_height = oldwin->w_height; + if (need_status) + oldwin_height -= STATUS_HEIGHT; ++ } ++ ++ /* Only make all windows the same height if one of them (except oldwin) ++ * is higher than one of the split windows. */ ++ if (!do_equal && p_ea && size == 0 ++ #ifdef FEAT_VERTSPLIT ++ && *p_ead != 'h' ++ #endif ++ && oldwin->w_frame->fr_parent != NULL) ++ { ++ frp = oldwin->w_frame->fr_parent->fr_child; ++ while (frp != NULL) ++ { ++ if (frp->fr_win != oldwin && frp->fr_win != NULL ++ && (frp->fr_win->w_height > new_size ++ || frp->fr_win->w_height > oldwin_height - new_size ++ - STATUS_HEIGHT)) ++ { ++ do_equal = TRUE; ++ break; ++ } ++ frp = frp->fr_next; ++ } + } + } + +*** ../vim-7.1.067/src/version.c Sun Aug 12 16:38:03 2007 +--- src/version.c Sun Aug 12 16:51:36 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 68, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +129. You cancel your newspaper subscription. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.069 b/7.1.069 new file mode 100644 index 00000000..9de0d5be --- /dev/null +++ b/7.1.069 @@ -0,0 +1,82 @@ +To: vim-dev@vim.org +Subject: patch 7.1.069 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.069 +Problem: GTK GUI: When using confirm() without a default button there still + is a default choice. +Solution: Ignore Enter and Space when there is no default button. (Chris + Lubinski) +Files: src/gui_gtk.c + + +*** ../vim-7.1.068/src/gui_gtk.c Mon May 14 19:35:51 2007 +--- src/gui_gtk.c Sat Aug 11 17:38:03 2007 +*************** +*** 1630,1640 **** + */ + /*ARGSUSED*/ + static int +! dlg_key_press_event(GtkWidget * widget, GdkEventKey * event, CancelData *data) + { +! /* Ignore hitting Enter when there is no default button. */ +! if (data->ignore_enter && event->keyval == GDK_Return) + return TRUE; + + if (event->keyval != GDK_Escape && event->keyval != GDK_Return) + return FALSE; +--- 1630,1643 ---- + */ + /*ARGSUSED*/ + static int +! dlg_key_press_event(GtkWidget *widget, GdkEventKey *event, CancelData *data) + { +! /* Ignore hitting Enter (or Space) when there is no default button. */ +! if (data->ignore_enter && (event->keyval == GDK_Return +! || event->keyval == ' ')) + return TRUE; ++ else /* A different key was pressed, return to normal behavior */ ++ data->ignore_enter = FALSE; + + if (event->keyval != GDK_Escape && event->keyval != GDK_Return) + return FALSE; +*************** +*** 2223,2228 **** +--- 2226,2238 ---- + dialog_key_press_event_cb(GtkWidget *widget, GdkEventKey *event, gpointer data) + { + DialogInfo *di = (DialogInfo *)data; ++ ++ /* Ignore hitting Enter (or Space) when there is no default button. */ ++ if (di->ignore_enter && (event->keyval == GDK_Return ++ || event->keyval == ' ')) ++ return TRUE; ++ else /* A different key was pressed, return to normal behavior */ ++ di->ignore_enter = FALSE; + + /* Close the dialog when hitting "Esc". */ + if (event->keyval == GDK_Escape) +*** ../vim-7.1.068/src/version.c Sun Aug 12 16:55:01 2007 +--- src/version.c Tue Aug 14 14:58:36 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 69, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +148. You find it easier to dial-up the National Weather Service + Weather/your_town/now.html than to simply look out the window. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.070 b/7.1.070 new file mode 100644 index 00000000..4658c0ca --- /dev/null +++ b/7.1.070 @@ -0,0 +1,49 @@ +To: vim-dev@vim.org +Subject: patch 7.1.070 (extra) +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.070 (extra) +Problem: Win32 GUI: When using confirm() without a default button there + still is a default choice. +Solution: Set focus on something else than a button. (Chris Lubinski) +Files: src/gui_w32.c + + +*** ../vim-7.1.069/src/gui_w32.c Tue Jun 19 10:09:15 2007 +--- src/gui_w32.c Sat Aug 11 17:39:50 2007 +*************** +*** 2894,2899 **** +--- 2894,2903 ---- + (void)SetFocus(hwnd); + if (dialog_default_button > IDCANCEL) + (void)SetFocus(GetDlgItem(hwnd, dialog_default_button)); ++ else ++ /* We don't have a default, set focus on another element of the ++ * dialog window, probably the icon */ ++ (void)SetFocus(GetDlgItem(hwnd, DLG_NONBUTTON_CONTROL)); + return FALSE; + } + +*** ../vim-7.1.069/src/version.c Tue Aug 14 14:59:41 2007 +--- src/version.c Tue Aug 14 16:55:41 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 70, + /**/ + +-- +You are not really successful until someone claims he sat +beside you in school. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.071 b/7.1.071 new file mode 100644 index 00000000..d7f3e86c --- /dev/null +++ b/7.1.071 @@ -0,0 +1,169 @@ +To: vim-dev@vim.org +Subject: patch 7.1.071 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.071 (after 7.1.040) +Problem: Regexp patterns are not tested. +Solution: Add a basic test, to be expanded later. + Also add (commented-out) support for valgrind. +Files: src/testdir/Makefile, src/testdir/test64.in, src/testdir/test64.ok + + +*** ../vim-7.1.070/src/testdir/Makefile Thu Jul 26 22:55:11 2007 +--- src/testdir/Makefile Tue Aug 14 15:16:08 2007 +*************** +*** 4,9 **** +--- 4,13 ---- + + VIMPROG = ../vim + ++ # Uncomment this line for using valgrind. ++ # The output goes into a file "valgrind.$PID" (sorry, no test number). ++ # VALGRIND = valgrind --tool=memcheck --num-callers=15 --logfile=valgrind ++ + SCRIPTS = test1.out test2.out test3.out test4.out test5.out test6.out \ + test7.out test8.out test9.out test10.out test11.out \ + test12.out test13.out test14.out test15.out test17.out \ +*************** +*** 15,21 **** + test43.out test44.out test45.out test46.out test47.out \ + test48.out test49.out test51.out test52.out test53.out \ + test54.out test55.out test56.out test57.out test58.out \ +! test59.out test60.out test61.out test62.out test63.out + + SCRIPTS_GUI = test16.out + +--- 19,26 ---- + test43.out test44.out test45.out test46.out test47.out \ + test48.out test49.out test51.out test52.out test53.out \ + test54.out test55.out test56.out test57.out test58.out \ +! test59.out test60.out test61.out test62.out test63.out \ +! test64.out + + SCRIPTS_GUI = test16.out + +*************** +*** 38,44 **** + + test1.out: test1.in + -rm -f $*.failed tiny.vim small.vim mbyte.vim test.ok X* viminfo +! $(VIMPROG) -u unix.vim -U NONE --noplugin -s dotest.in $*.in + @/bin/sh -c "if diff test.out $*.ok; \ + then mv -f test.out $*.out; \ + else echo; \ +--- 43,49 ---- + + test1.out: test1.in + -rm -f $*.failed tiny.vim small.vim mbyte.vim test.ok X* viminfo +! $(VALGRIND) $(VIMPROG) -u unix.vim -U NONE --noplugin -s dotest.in $*.in + @/bin/sh -c "if diff test.out $*.ok; \ + then mv -f test.out $*.out; \ + else echo; \ +*************** +*** 51,57 **** + cp $*.ok test.ok + # Sleep a moment to avoid that the xterm title is messed up + @-sleep .2 +! -$(VIMPROG) -u unix.vim -U NONE --noplugin -s dotest.in $*.in + @/bin/sh -c "if test -f test.out; then\ + if diff test.out $*.ok; \ + then mv -f test.out $*.out; \ +--- 56,62 ---- + cp $*.ok test.ok + # Sleep a moment to avoid that the xterm title is messed up + @-sleep .2 +! -$(VALGRIND) $(VIMPROG) -u unix.vim -U NONE --noplugin -s dotest.in $*.in + @/bin/sh -c "if test -f test.out; then\ + if diff test.out $*.ok; \ + then mv -f test.out $*.out; \ +*** ../vim-7.1.070/src/testdir/test64.in Tue Aug 14 17:26:28 2007 +--- src/testdir/test64.in Tue Aug 14 16:03:44 2007 +*************** +*** 0 **** +--- 1,52 ---- ++ Test for regexp patterns. ++ ++ A pattern that gives the expected result produces OK, so that we know it was ++ actually tried. ++ ++ STARTTEST ++ :so small.vim ++ :" tl is a List of Lists with: ++ :" regexp pattern ++ :" text to test the pattern on ++ :" expected match (optional) ++ :" expected submatch 1 (optional) ++ :" expected submatch 2 (optional) ++ :" etc. ++ :" When there is no match use only the first two items. ++ :let tl = [] ++ :call add(tl, ['b', 'abcdef', 'b']) ++ :call add(tl, ['bc*', 'abccccdef', 'bcccc']) ++ :call add(tl, ['bc\{-}', 'abccccdef', 'b']) ++ :call add(tl, ['bc\{-}\(d\)', 'abccccdef', 'bccccd', 'd']) ++ :call add(tl, ['x', 'abcdef']) ++ :" ++ :for t in tl ++ : let l = matchlist(t[1], t[0]) ++ :" check the match itself ++ : if len(l) == 0 && len(t) > 2 ++ : $put ='ERROR: pat: \"' . t[0] . '\", text: \"' . t[1] . '\", did not match, expected: \"' . t[2] . '\"' ++ : elseif len(l) > 0 && len(t) == 2 ++ : $put ='ERROR: pat: \"' . t[0] . '\", text: \"' . t[1] . '\", match: \"' . l[0] . '\", expected no match' ++ : elseif len(t) > 2 && l[0] != t[2] ++ : $put ='ERROR: pat: \"' . t[0] . '\", text: \"' . t[1] . '\", match: \"' . l[0] . '\", expected: \"' . t[2] . '\"' ++ : else ++ : $put ='OK' ++ : endif ++ : if len(l) > 0 ++ :" check all the nine submatches ++ : for i in range(1, 9) ++ : if len(t) <= i + 2 ++ : let e = '' ++ : else ++ : let e = t[i + 2] ++ : endif ++ : if l[i] != e ++ : $put ='ERROR: pat: \"' . t[0] . '\", text: \"' . t[1] . '\", submatch ' . i . ': \"' . l[i] . '\", expected: \"' . e . '\"' ++ : endif ++ : endfor ++ : endif ++ :endfor ++ :/^Results/,$wq! test.out ++ ENDTEST ++ ++ Results of test64: +*** ../vim-7.1.070/src/testdir/test64.ok Tue Aug 14 17:26:28 2007 +--- src/testdir/test64.ok Tue Aug 14 16:01:47 2007 +*************** +*** 0 **** +--- 1,6 ---- ++ Results of test64: ++ OK ++ OK ++ OK ++ OK ++ OK +*** ../vim-7.1.070/src/version.c Tue Aug 14 16:57:04 2007 +--- src/version.c Tue Aug 14 17:25:20 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 71, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +150. You find yourself counting emoticons to get to sleep. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.072 b/7.1.072 new file mode 100644 index 00000000..f909adcc --- /dev/null +++ b/7.1.072 @@ -0,0 +1,177 @@ +To: vim-dev@vim.org +Subject: patch 7.1.072 (extra) +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.072 (extra, after 7.1.041 and 7.1.071) +Problem: Some changes for patch 7.1.071 are in extra files. +Solution: Update the extra files. Also fix a few warnings from the DOS test + makefile. +Files: src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_os2.mak, src/testdir/Make_vms.mms + + +*** ../vim-7.1.071/src/testdir/Make_amiga.mak Thu Jul 26 23:10:50 2007 +--- src/testdir/Make_amiga.mak Tue Aug 14 15:14:03 2007 +*************** +*** 25,31 **** + test43.out test44.out test45.out test46.out test47.out \ + test48.out test51.out test53.out test54.out test55.out \ + test56.out test57.out test58.out test59.out test60.out \ +! test61.out test62.out test63.out + + .SUFFIXES: .in .out + +--- 25,31 ---- + test43.out test44.out test45.out test46.out test47.out \ + test48.out test51.out test53.out test54.out test55.out \ + test56.out test57.out test58.out test59.out test60.out \ +! test61.out test62.out test63.out test64.out + + .SUFFIXES: .in .out + +*************** +*** 108,110 **** +--- 108,111 ---- + test61.out: test61.in + test62.out: test62.in + test63.out: test63.in ++ test64.out: test64.in +*** ../vim-7.1.071/src/testdir/Make_dos.mak Thu Jul 26 23:10:50 2007 +--- src/testdir/Make_dos.mak Tue Aug 14 15:14:25 2007 +*************** +*** 19,25 **** + test44.out test45.out test46.out test47.out \ + test48.out test51.out test53.out test54.out \ + test55.out test56.out test57.out test58.out test59.out \ +! test60.out test61.out test62.out test63.out + + SCRIPTS = test3.out test4.out test5.out test6.out test7.out \ + test8.out test9.out test11.out test13.out test14.out \ +--- 19,25 ---- + test44.out test45.out test46.out test47.out \ + test48.out test51.out test53.out test54.out \ + test55.out test56.out test57.out test58.out test59.out \ +! test60.out test61.out test62.out test63.out test64.out + + SCRIPTS = test3.out test4.out test5.out test6.out test7.out \ + test8.out test9.out test11.out test13.out test14.out \ +*************** +*** 51,69 **** + + clean: + -del *.out +! -del test.ok +! -del small.vim +! -del tiny.vim +! -del mbyte.vim + -del X* +! -del viminfo + + .in.out: + copy $*.ok test.ok + $(VIMPROG) -u dos.vim -U NONE --noplugin -s dotest.in $*.in + diff test.out $*.ok +! -del $*.out + rename test.out $*.out + -del X* + -del test.ok +! -del viminfo +--- 51,69 ---- + + clean: + -del *.out +! -if exist test.ok del test.ok +! -if exist small.vim del small.vim +! -if exist tiny.vim del tiny.vim +! -if exist mbyte.vim del mbyte.vim + -del X* +! -if exist viminfo del viminfo + + .in.out: + copy $*.ok test.ok + $(VIMPROG) -u dos.vim -U NONE --noplugin -s dotest.in $*.in + diff test.out $*.ok +! -if exist $*.out del $*.out + rename test.out $*.out + -del X* + -del test.ok +! -if exist viminfo del viminfo +*** ../vim-7.1.071/src/testdir/Make_os2.mak Thu Jul 26 23:10:50 2007 +--- src/testdir/Make_os2.mak Tue Aug 14 15:14:44 2007 +*************** +*** 25,31 **** + test43.out test44.out test45.out test46.out test47.out \ + test48.out test51.out test53.out test54.out test55.out \ + test56.out test57.out test58.out test59.out test60.out \ +! test61.out test62.out test63.out + + .SUFFIXES: .in .out + +--- 25,31 ---- + test43.out test44.out test45.out test46.out test47.out \ + test48.out test51.out test53.out test54.out test55.out \ + test56.out test57.out test58.out test59.out test60.out \ +! test61.out test62.out test63.out test64.out + + .SUFFIXES: .in .out + +*** ../vim-7.1.071/src/testdir/Make_vms.mms Thu Jul 26 23:10:50 2007 +--- src/testdir/Make_vms.mms Tue Aug 14 15:15:56 2007 +*************** +*** 4,10 **** + # Authors: Zoltan Arpadffy, + # Sandor Kopanyi, + # +! # Last change: 2007 Jul 24 + # + # This has been tested on VMS 6.2 to 7.2 on DEC Alpha and VAX. + # Edit the lines in the Configuration section below to select. +--- 4,10 ---- + # Authors: Zoltan Arpadffy, + # Sandor Kopanyi, + # +! # Last change: 2007 Aug 14 + # + # This has been tested on VMS 6.2 to 7.2 on DEC Alpha and VAX. + # Edit the lines in the Configuration section below to select. +*************** +*** 59,65 **** + test43.out test44.out test45.out test46.out \ + test48.out test51.out test53.out test54.out test55.out \ + test56.out test57.out test58.out test59.out test60.out \ +! test61.out test62.out test63.out + + .IFDEF WANT_GUI + SCRIPT_GUI = test16.out +--- 59,65 ---- + test43.out test44.out test45.out test46.out \ + test48.out test51.out test53.out test54.out test55.out \ + test56.out test57.out test58.out test59.out test60.out \ +! test61.out test62.out test63.out test64.out + + .IFDEF WANT_GUI + SCRIPT_GUI = test16.out +*** ../vim-7.1.071/src/version.c Tue Aug 14 17:28:14 2007 +--- src/version.c Tue Aug 14 17:51:21 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 72, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +152. You find yourself falling for someone you've never seen or hardly + know, but, boy can he/she TYPE!!!!!! + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.073 b/7.1.073 new file mode 100644 index 00000000..ff9a0168 --- /dev/null +++ b/7.1.073 @@ -0,0 +1,113 @@ +To: vim-dev@vim.org +Subject: patch 7.1.073 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.073 (after 7.1.062) +Problem: Wrong cursor position and crash when 'preserveindent' is set. + (Charles Campbell) +Solution: Handle the situation that we start without indent. (Chris + Lubinski) +Files: src/misc1.c + + +*** ../vim-7.1.072/src/misc1.c Sat Aug 11 14:32:10 2007 +--- src/misc1.c Tue Aug 14 21:21:49 2007 +*************** +*** 104,110 **** + int ind_done = 0; /* measured in spaces */ + int tab_pad; + int retval = FALSE; +! int orig_char_len = 0; /* number of initial whitespace chars when + 'et' and 'pi' are both set */ + + /* +--- 104,110 ---- + int ind_done = 0; /* measured in spaces */ + int tab_pad; + int retval = FALSE; +! int orig_char_len = -1; /* number of initial whitespace chars when + 'et' and 'pi' are both set */ + + /* +*************** +*** 159,165 **** + + /* Fill to next tabstop with a tab, if possible */ + tab_pad = (int)curbuf->b_p_ts - (ind_done % (int)curbuf->b_p_ts); +! if (todo >= tab_pad && orig_char_len == 0) + { + doit = TRUE; + todo -= tab_pad; +--- 159,165 ---- + + /* Fill to next tabstop with a tab, if possible */ + tab_pad = (int)curbuf->b_p_ts - (ind_done % (int)curbuf->b_p_ts); +! if (todo >= tab_pad && orig_char_len == -1) + { + doit = TRUE; + todo -= tab_pad; +*************** +*** 206,216 **** + /* If 'preserveindent' and 'expandtab' are both set keep the original + * characters and allocate accordingly. We will fill the rest with spaces + * after the if (!curbuf->b_p_et) below. */ +! if (orig_char_len != 0) + { + newline = alloc(orig_char_len + size - ind_done + line_len); + if (newline == NULL) + return FALSE; + p = oldline; + s = newline; + while (orig_char_len > 0) +--- 206,220 ---- + /* If 'preserveindent' and 'expandtab' are both set keep the original + * characters and allocate accordingly. We will fill the rest with spaces + * after the if (!curbuf->b_p_et) below. */ +! if (orig_char_len != -1) + { + newline = alloc(orig_char_len + size - ind_done + line_len); + if (newline == NULL) + return FALSE; ++ todo = size - ind_done; ++ ind_len = orig_char_len + todo; /* Set total length of indent in ++ * characters, which may have been ++ * undercounted until now */ + p = oldline; + s = newline; + while (orig_char_len > 0) +*************** +*** 222,230 **** + * than old) */ + while (vim_iswhite(*p)) + (void)*p++; +- todo = size - ind_done; +- ind_len += todo; /* Set total length of indent in characters, +- * which may have been undercounted until now */ + + } + else +--- 226,231 ---- +*** ../vim-7.1.072/src/version.c Tue Aug 14 17:54:37 2007 +--- src/version.c Tue Aug 14 22:14:54 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 73, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +157. You fum through a magazine, you first check to see if it has a web + address. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.074 b/7.1.074 new file mode 100644 index 00000000..0911f4e1 --- /dev/null +++ b/7.1.074 @@ -0,0 +1,171 @@ +To: vim-dev@vim.org +Subject: patch 7.1.074 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.074 +Problem: Crash when calling string() on a recurively nested List. +Solution: Check result value for being NULL. (Yukihiro Nakadaira) +Files: src/eval.c + + +*** ../vim-7.1.073/src/eval.c Mon Aug 6 22:27:12 2007 +--- src/eval.c Tue Aug 14 22:01:12 2007 +*************** +*** 6802,6808 **** + * "numbuf" is used for a number. + * Does not put quotes around strings, as ":echo" displays values. + * When "copyID" is not NULL replace recursive lists and dicts with "...". +! * May return NULL; + */ + static char_u * + echo_string(tv, tofree, numbuf, copyID) +--- 6802,6808 ---- + * "numbuf" is used for a number. + * Does not put quotes around strings, as ":echo" displays values. + * When "copyID" is not NULL replace recursive lists and dicts with "...". +! * May return NULL. + */ + static char_u * + echo_string(tv, tofree, numbuf, copyID) +*************** +*** 6887,6893 **** + * If the memory is allocated "tofree" is set to it, otherwise NULL. + * "numbuf" is used for a number. + * Puts quotes around strings, so that they can be parsed back by eval(). +! * May return NULL; + */ + static char_u * + tv2string(tv, tofree, numbuf, copyID) +--- 6887,6893 ---- + * If the memory is allocated "tofree" is set to it, otherwise NULL. + * "numbuf" is used for a number. + * Puts quotes around strings, so that they can be parsed back by eval(). +! * May return NULL. + */ + static char_u * + tv2string(tv, tofree, numbuf, copyID) +*************** +*** 14974,14979 **** +--- 14974,14983 ---- + + p1 = tv2string(&(*(listitem_T **)s1)->li_tv, &tofree1, numbuf1, 0); + p2 = tv2string(&(*(listitem_T **)s2)->li_tv, &tofree2, numbuf2, 0); ++ if (p1 == NULL) ++ p1 = (char_u *)""; ++ if (p2 == NULL) ++ p2 = (char_u *)""; + if (item_compare_ic) + res = STRICMP(p1, p2); + else +*************** +*** 15463,15469 **** + + rettv->v_type = VAR_STRING; + rettv->vval.v_string = tv2string(&argvars[0], &tofree, numbuf, 0); +! if (tofree == NULL) + rettv->vval.v_string = vim_strsave(rettv->vval.v_string); + } + +--- 15467,15474 ---- + + rettv->v_type = VAR_STRING; + rettv->vval.v_string = tv2string(&argvars[0], &tofree, numbuf, 0); +! /* Make a copy if we have a value but it's not in allocate memory. */ +! if (rettv->vval.v_string != NULL && tofree == NULL) + rettv->vval.v_string = vim_strsave(rettv->vval.v_string); + } + +*************** +*** 20167,20172 **** +--- 20174,20180 ---- + char_u buf[MSG_BUF_LEN]; + char_u numbuf2[NUMBUFLEN]; + char_u *tofree; ++ char_u *s; + + msg_puts((char_u *)"("); + for (i = 0; i < argcount; ++i) +*************** +*** 20177,20186 **** + msg_outnum((long)argvars[i].vval.v_number); + else + { +! trunc_string(tv2string(&argvars[i], &tofree, +! numbuf2, 0), buf, MSG_BUF_CLEN); +! msg_puts(buf); +! vim_free(tofree); + } + } + msg_puts((char_u *)")"); +--- 20185,20197 ---- + msg_outnum((long)argvars[i].vval.v_number); + else + { +! s = tv2string(&argvars[i], &tofree, numbuf2, 0); +! if (s != NULL) +! { +! trunc_string(s, buf, MSG_BUF_CLEN); +! msg_puts(buf); +! vim_free(tofree); +! } + } + } + msg_puts((char_u *)")"); +*************** +*** 20258,20271 **** + char_u buf[MSG_BUF_LEN]; + char_u numbuf2[NUMBUFLEN]; + char_u *tofree; + + /* The value may be very long. Skip the middle part, so that we + * have some idea how it starts and ends. smsg() would always + * truncate it at the end. */ +! trunc_string(tv2string(fc.rettv, &tofree, numbuf2, 0), +! buf, MSG_BUF_CLEN); +! smsg((char_u *)_("%s returning %s"), sourcing_name, buf); +! vim_free(tofree); + } + msg_puts((char_u *)"\n"); /* don't overwrite this either */ + +--- 20269,20286 ---- + char_u buf[MSG_BUF_LEN]; + char_u numbuf2[NUMBUFLEN]; + char_u *tofree; ++ char_u *s; + + /* The value may be very long. Skip the middle part, so that we + * have some idea how it starts and ends. smsg() would always + * truncate it at the end. */ +! s = tv2string(fc.rettv, &tofree, numbuf2, 0); +! if (s != NULL) +! { +! trunc_string(s, buf, MSG_BUF_CLEN); +! smsg((char_u *)_("%s returning %s"), sourcing_name, buf); +! vim_free(tofree); +! } + } + msg_puts((char_u *)"\n"); /* don't overwrite this either */ + +*** ../vim-7.1.073/src/version.c Tue Aug 14 22:15:53 2007 +--- src/version.c Tue Aug 14 22:27:24 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 74, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +159. You get excited whenever discussing your hard drive. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.075 b/7.1.075 new file mode 100644 index 00000000..40638e8c --- /dev/null +++ b/7.1.075 @@ -0,0 +1,55 @@ +To: vim-dev@vim.org +Subject: patch 7.1.075 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.075 +Problem: ":let v:statusmsg" reads memory already freed. +Solution: Don't set v:statusmsg when listing it. +Files: src/eval.c + + +*** ../vim-7.1.074/src/eval.c Tue Aug 14 22:28:35 2007 +--- src/eval.c Tue Aug 14 22:01:12 2007 +*************** +*** 18022,18028 **** + int type; + char_u *string; + { +! msg_attr(prefix, 0); /* don't use msg(), it overwrites "v:statusmsg" */ + if (name != NULL) /* "a:" vars don't have a name stored */ + msg_puts(name); + msg_putchar(' '); +--- 18022,18030 ---- + int type; + char_u *string; + { +! /* don't use msg() or msg_attr() to avoid overwriting "v:statusmsg" */ +! msg_start(); +! msg_puts(prefix); + if (name != NULL) /* "a:" vars don't have a name stored */ + msg_puts(name); + msg_putchar(' '); +*** ../vim-7.1.074/src/version.c Tue Aug 14 22:28:35 2007 +--- src/version.c Tue Aug 14 22:39:49 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 75, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +160. You get in the elevator and double-click the button for the floor + you want. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.076 b/7.1.076 new file mode 100644 index 00000000..39569552 --- /dev/null +++ b/7.1.076 @@ -0,0 +1,74 @@ +To: vim-dev@vim.org +Subject: patch 7.1.076 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.076 +Problem: Another strcpy() with overlapping arguments. +Solution: Use mch_memmove(). (Dominique Pelle) And another one. +Files: src/ex_docmd.c, src/normal.c + + +*** ../vim-7.1.075/src/ex_docmd.c Sat Aug 11 15:59:44 2007 +--- src/ex_docmd.c Wed Aug 8 22:28:33 2007 +*************** +*** 4493,4499 **** + if (eap->argt & (USECTRLV | XFILE)) + ++p; /* skip CTRL-V and next char */ + else +! STRCPY(p, p + 1); /* remove CTRL-V and skip next char */ + if (*p == NUL) /* stop at NUL after CTRL-V */ + break; + } +--- 4493,4500 ---- + if (eap->argt & (USECTRLV | XFILE)) + ++p; /* skip CTRL-V and next char */ + else +! /* remove CTRL-V and skip next char */ +! mch_memmove(p, p + 1, STRLEN(p)); + if (*p == NUL) /* stop at NUL after CTRL-V */ + break; + } +*** ../vim-7.1.075/src/normal.c Wed Aug 8 21:41:19 2007 +--- src/normal.c Sun Aug 12 17:35:20 2007 +*************** +*** 3760,3766 **** + extra_len = (int)STRLEN(p); + overflow = old_len + extra_len - SHOWCMD_COLS; + if (overflow > 0) +! STRCPY(showcmd_buf, showcmd_buf + overflow); + STRCAT(showcmd_buf, p); + + if (char_avail()) +--- 3760,3767 ---- + extra_len = (int)STRLEN(p); + overflow = old_len + extra_len - SHOWCMD_COLS; + if (overflow > 0) +! mch_memmove(showcmd_buf, showcmd_buf + overflow, +! old_len - overflow + 1); + STRCAT(showcmd_buf, p); + + if (char_avail()) +*** ../vim-7.1.075/src/version.c Tue Aug 14 22:40:13 2007 +--- src/version.c Tue Aug 14 22:53:13 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 76, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +161. You get up before the sun rises to check your e-mail, and you + find yourself in the very same chair long after the sun has set. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.077 b/7.1.077 new file mode 100644 index 00000000..9cfcfeca --- /dev/null +++ b/7.1.077 @@ -0,0 +1,50 @@ +To: vim-dev@vim.org +Subject: patch 7.1.077 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.077 +Problem: Using "can_spell" without initializing it. (Dominique Pelle) +Solution: Set a default for get_syntax_attr(). +Files: src/syntax.c + + +*** ../vim-7.1.076/src/syntax.c Thu Jul 26 22:55:11 2007 +--- src/syntax.c Sun Aug 12 19:49:07 2007 +*************** +*** 1727,1732 **** +--- 1727,1739 ---- + { + int attr = 0; + ++ if (can_spell != NULL) ++ /* Default: Only do spelling when there is no @Spell cluster or when ++ * ":syn spell toplevel" was used. */ ++ *can_spell = syn_buf->b_syn_spell == SYNSPL_DEFAULT ++ ? (syn_buf->b_spell_cluster_id == 0) ++ : (syn_buf->b_syn_spell == SYNSPL_TOP); ++ + /* check for out of memory situation */ + if (syn_buf->b_sst_array == NULL) + return 0; +*** ../vim-7.1.076/src/version.c Tue Aug 14 22:54:00 2007 +--- src/version.c Tue Aug 14 23:06:26 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 77, + /**/ + +-- +Send $25.00 for handy leaflet on how to make money by selling leaflets + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.078 b/7.1.078 new file mode 100644 index 00000000..74349a22 --- /dev/null +++ b/7.1.078 @@ -0,0 +1,86 @@ +To: vim-dev@vim.org +Subject: patch 7.1.078 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.078 +Problem: Dropping a file name on gvim that contains a CSI byte doesn't work + when editing the command line. +Solution: Escape the CSI byte when inserting in the input buffer. (Yukihiro + Nakadaira) +Files: src/gui.c, src/ui.c + + +*** ../vim-7.1.077/src/gui.c Thu May 10 19:19:15 2007 +--- src/gui.c Tue Aug 14 12:41:43 2007 +*************** +*** 5117,5123 **** + p = vim_strsave_escaped(fnames[i], (char_u *)"\\ \t\"|"); + # endif + if (p != NULL) +! add_to_input_buf(p, (int)STRLEN(p)); + vim_free(p); + vim_free(fnames[i]); + } +--- 5117,5123 ---- + p = vim_strsave_escaped(fnames[i], (char_u *)"\\ \t\"|"); + # endif + if (p != NULL) +! add_to_input_buf_csi(p, (int)STRLEN(p)); + vim_free(p); + vim_free(fnames[i]); + } +*** ../vim-7.1.077/src/ui.c Thu May 10 21:14:11 2007 +--- src/ui.c Tue Aug 14 12:41:42 2007 +*************** +*** 1603,1610 **** + #if defined(FEAT_GUI) || defined(FEAT_MOUSE_GPM) \ + || defined(FEAT_XCLIPBOARD) || defined(VMS) \ + || defined(FEAT_SNIFF) || defined(FEAT_CLIENTSERVER) \ +- || (defined(FEAT_GUI) && (!defined(USE_ON_FLY_SCROLL) \ +- || defined(FEAT_MENU))) \ + || defined(PROTO) + /* + * Add the given bytes to the input buffer +--- 1603,1608 ---- +*************** +*** 1630,1636 **** + } + #endif + +! #if (defined(FEAT_XIM) && defined(FEAT_GUI_GTK)) \ + || (defined(FEAT_MBYTE) && defined(FEAT_MBYTE_IME)) \ + || (defined(FEAT_GUI) && (!defined(USE_ON_FLY_SCROLL) \ + || defined(FEAT_MENU))) \ +--- 1628,1636 ---- + } + #endif + +! #if ((defined(FEAT_XIM) || defined(FEAT_DND)) && defined(FEAT_GUI_GTK)) \ +! || defined(FEAT_GUI_MSWIN) \ +! || defined(FEAT_GUI_MAC) \ + || (defined(FEAT_MBYTE) && defined(FEAT_MBYTE_IME)) \ + || (defined(FEAT_GUI) && (!defined(USE_ON_FLY_SCROLL) \ + || defined(FEAT_MENU))) \ +*** ../vim-7.1.077/src/version.c Tue Aug 14 23:06:51 2007 +--- src/version.c Wed Aug 15 20:07:06 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 78, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +164. You got out to buy software, instead of going out for a beer. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.079 b/7.1.079 new file mode 100644 index 00000000..7f2a1fa4 --- /dev/null +++ b/7.1.079 @@ -0,0 +1,84 @@ +To: vim-dev@vim.org +Subject: patch 7.1.079 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.079 +Problem: When the locale is "C" and 'encoding' is "latin1" then the "@" + character in 'isfname', 'isprint', etc. doesn't pick up accented + characters. +Solution: Instead of isalpha() use MB_ISLOWER() and MB_ISUPPER(). +Files: src/charset.c, src/macros.h + + +*** ../vim-7.1.078/src/charset.c Mon Aug 6 22:27:12 2007 +--- src/charset.c Tue Aug 14 13:43:30 2007 +*************** +*** 207,213 **** + } + while (c <= c2) + { +! if (!do_isalpha || isalpha(c) + #ifdef FEAT_FKMAP + || (p_altkeymap && (F_isalpha(c) || F_isdigit(c))) + #endif +--- 207,216 ---- + } + while (c <= c2) + { +! /* Use the MB_ functions here, because isalpha() doesn't +! * work properly when 'encoding' is "latin1" and the locale is +! * "C". */ +! if (!do_isalpha || MB_ISLOWER(c) || MB_ISUPPER(c) + #ifdef FEAT_FKMAP + || (p_altkeymap && (F_isalpha(c) || F_isdigit(c))) + #endif +*** ../vim-7.1.078/src/macros.h Thu May 10 19:21:00 2007 +--- src/macros.h Sat Aug 4 13:44:18 2007 +*************** +*** 54,63 **** + + /* + * toupper() and tolower() that use the current locale. +! * On some systems toupper()/tolower() only work on lower/uppercase characters + * Careful: Only call TOUPPER_LOC() and TOLOWER_LOC() with a character in the + * range 0 - 255. toupper()/tolower() on some systems can't handle others. +! * Note: for UTF-8 use utf_toupper() and utf_tolower(). + */ + #ifdef MSWIN + # define TOUPPER_LOC(c) toupper_tab[(c) & 255] +--- 54,65 ---- + + /* + * toupper() and tolower() that use the current locale. +! * On some systems toupper()/tolower() only work on lower/uppercase +! * characters, first use islower() or isupper() then. + * Careful: Only call TOUPPER_LOC() and TOLOWER_LOC() with a character in the + * range 0 - 255. toupper()/tolower() on some systems can't handle others. +! * Note: It is often better to use MB_TOLOWER() and MB_TOUPPER(), because many +! * toupper() and tolower() implementations only work for ASCII. + */ + #ifdef MSWIN + # define TOUPPER_LOC(c) toupper_tab[(c) & 255] +*** ../vim-7.1.078/src/version.c Wed Aug 15 20:07:53 2007 +--- src/version.c Wed Aug 15 20:39:18 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 79, + /**/ + +-- +You're as much use as a condom machine at the Vatican. + -- Rimmer to Holly in Red Dwarf 'Queeg' + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.080 b/7.1.080 new file mode 100644 index 00000000..446ffc7d --- /dev/null +++ b/7.1.080 @@ -0,0 +1,104 @@ +To: vim-dev@vim.org +Subject: patch 7.1.080 (extra) +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.080 (extra) +Problem: Compiler warnings for using "const char *" for "char *". +Solution: Add type casts. (Chris Sutcliffe) +Files: src/GvimExt/gvimext.cpp + + +*** ../vim-7.1.079/src/GvimExt/gvimext.cpp Thu May 10 21:09:38 2007 +--- src/GvimExt/gvimext.cpp Thu Aug 16 21:25:56 2007 +*************** +*** 69,82 **** + + // Registry didn't work, use the search path. + if (name[0] == 0) +! strcpy(name, searchpath("gvim.exe")); + + if (!runtime) + { + // Only when looking for the executable, not the runtime dir, we can + // search for the batch file or a name without a path. + if (name[0] == 0) +! strcpy(name, searchpath("gvim.bat")); + if (name[0] == 0) + strcpy(name, "gvim"); // finds gvim.bat or gvim.exe + +--- 69,82 ---- + + // Registry didn't work, use the search path. + if (name[0] == 0) +! strcpy(name, searchpath((char *)"gvim.exe")); + + if (!runtime) + { + // Only when looking for the executable, not the runtime dir, we can + // search for the batch file or a name without a path. + if (name[0] == 0) +! strcpy(name, searchpath((char *)"gvim.bat")); + if (name[0] == 0) + strcpy(name, "gvim"); // finds gvim.bat or gvim.exe + +*************** +*** 152,160 **** + FARPROC *ptr; + } libintl_entry[] = + { +! {"gettext", (FARPROC*)&dyn_libintl_gettext}, +! {"textdomain", (FARPROC*)&dyn_libintl_textdomain}, +! {"bindtextdomain", (FARPROC*)&dyn_libintl_bindtextdomain}, + {NULL, NULL} + }; + +--- 152,160 ---- + FARPROC *ptr; + } libintl_entry[] = + { +! {(char *)"gettext", (FARPROC*)&dyn_libintl_gettext}, +! {(char *)"textdomain", (FARPROC*)&dyn_libintl_textdomain}, +! {(char *)"bindtextdomain", (FARPROC*)&dyn_libintl_bindtextdomain}, + {NULL, NULL} + }; + +*************** +*** 835,841 **** + (LPTSTR)location) > (HINSTANCE)32) + return location; + } +! return ""; + } + # endif + #endif +--- 835,841 ---- + (LPTSTR)location) > (HINSTANCE)32) + return location; + } +! return (char *)""; + } + # endif + #endif +*** ../vim-7.1.079/src/version.c Wed Aug 15 20:40:45 2007 +--- src/version.c Sat Aug 18 16:58:36 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 80, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +192. Your boss asks you to "go fer" coffee and you come up with 235 FTP sites. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.081 b/7.1.081 new file mode 100644 index 00000000..85b7bbba --- /dev/null +++ b/7.1.081 @@ -0,0 +1,143 @@ +To: vim-dev@vim.org +Subject: patch 7.1.081 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.081 +Problem: Command line completion for a shell command: "cat " + doesn't work. +Solution: Start the file name at any character that can't be in a file name. + (Martin Toft) +Files: src/ex_docmd.c + + +*** ../vim-7.1.080/src/ex_docmd.c Tue Aug 14 22:54:00 2007 +--- src/ex_docmd.c Sat Aug 18 14:58:53 2007 +*************** +*** 3281,3319 **** + + if (ea.argt & XFILE) + { +! int in_quote = FALSE; +! char_u *bow = NULL; /* Beginning of word */ + + /* + * Allow spaces within back-quotes to count as part of the argument + * being expanded. + */ + xp->xp_pattern = skipwhite(arg); +! for (p = xp->xp_pattern; *p; ) + { +! if (*p == '\\' && p[1] != NUL) + ++p; + #ifdef SPACE_IN_FILENAME +! else if (vim_iswhite(*p) && (!(ea.argt & NOSPC) || usefilter)) + #else +! else if (vim_iswhite(*p)) + #endif + { +! p = skipwhite(p); + if (in_quote) + bow = p; + else + xp->xp_pattern = p; +! --p; +! } +! else if (*p == '`') +! { +! if (!in_quote) +! { +! xp->xp_pattern = p; +! bow = p + 1; +! } +! in_quote = !in_quote; + } + mb_ptr_adv(p); + } +--- 3281,3344 ---- + + if (ea.argt & XFILE) + { +! int c; +! int in_quote = FALSE; +! char_u *bow = NULL; /* Beginning of word */ + + /* + * Allow spaces within back-quotes to count as part of the argument + * being expanded. + */ + xp->xp_pattern = skipwhite(arg); +! p = xp->xp_pattern; +! while (*p != NUL) + { +! #ifdef FEAT_MBYTE +! if (has_mbyte) +! c = mb_ptr2char(p); +! else +! #endif +! c = *p; +! if (c == '\\' && p[1] != NUL) + ++p; ++ else if (c == '`') ++ { ++ if (!in_quote) ++ { ++ xp->xp_pattern = p; ++ bow = p + 1; ++ } ++ in_quote = !in_quote; ++ } + #ifdef SPACE_IN_FILENAME +! else if (!vim_isfilec(c) && (!(ea.argt & NOSPC) || usefilter)) + #else +! else if (!vim_isfilec(c)) + #endif + { +! while (*p != NUL) +! { +! #ifdef FEAT_MBYTE +! if (has_mbyte) +! c = mb_ptr2char(p); +! else +! #endif +! c = *p; +! if (c == '`' || vim_isfilec(c)) +! break; +! #ifdef FEAT_MBYTE +! if (has_mbyte) +! len = (*mb_ptr2len)(p); +! else +! #endif +! len = 1; +! mb_ptr_adv(p); +! } + if (in_quote) + bow = p; + else + xp->xp_pattern = p; +! p -= len; + } + mb_ptr_adv(p); + } +*** ../vim-7.1.080/src/version.c Sat Aug 18 16:59:43 2007 +--- src/version.c Sat Aug 18 17:45:54 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 81, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +194. Your business cards contain your e-mail and home page address. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.082 b/7.1.082 new file mode 100644 index 00000000..1c2dc4ed --- /dev/null +++ b/7.1.082 @@ -0,0 +1,107 @@ +To: vim-dev@vim.org +Subject: patch 7.1.082 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.082 +Problem: After a ":split" the matchparen highlighting isn't there. +Solution: Install a WinEnter autocommand. Also fixes that after + ":NoMatchParen" only the current window is updated. (Martin Toft) +Files: runtime/doc/pi_paren.txt, runtime/plugin/matchparen.vim + + +*** ../vim-7.1.081/runtime/doc/pi_paren.txt Sat May 12 16:23:41 2007 +--- runtime/doc/pi_paren.txt Sat Aug 18 15:08:32 2007 +*************** +*** 12,19 **** + You can avoid loading this plugin by setting the "loaded_matchparen" variable: > + :let loaded_matchparen = 1 + +! The plugin installs CursorMoved autocommands to redefine the match +! highlighting. + + To disable the plugin after it was loaded use this command: > + +--- 12,19 ---- + You can avoid loading this plugin by setting the "loaded_matchparen" variable: > + :let loaded_matchparen = 1 + +! The plugin installs CursorMoved, CursorMovedI and WinEnter autocommands to +! redefine the match highlighting. + + To disable the plugin after it was loaded use this command: > + +*** ../vim-7.1.081/runtime/plugin/matchparen.vim Thu Aug 2 23:00:06 2007 +--- runtime/plugin/matchparen.vim Sat Aug 18 15:08:32 2007 +*************** +*** 1,6 **** + " Vim plugin for showing matching parens + " Maintainer: Bram Moolenaar +! " Last Change: 2007 Jul 30 + + " Exit quickly when: + " - this plugin was already loaded (or disabled) +--- 1,6 ---- + " Vim plugin for showing matching parens + " Maintainer: Bram Moolenaar +! " Last Change: 2007 Aug 8 + + " Exit quickly when: + " - this plugin was already loaded (or disabled) +*************** +*** 13,19 **** + + augroup matchparen + " Replace all matchparen autocommands +! autocmd! CursorMoved,CursorMovedI * call s:Highlight_Matching_Pair() + augroup END + + " Skip the rest if it was already done. +--- 13,19 ---- + + augroup matchparen + " Replace all matchparen autocommands +! autocmd! CursorMoved,CursorMovedI,WinEnter * call s:Highlight_Matching_Pair() + augroup END + + " Skip the rest if it was already done. +*************** +*** 126,132 **** + endfunction + + " Define commands that will disable and enable the plugin. +! command! NoMatchParen 3match none | unlet! g:loaded_matchparen | au! matchparen +! command! DoMatchParen runtime plugin/matchparen.vim | doau CursorMoved + + let &cpo = cpo_save +--- 126,133 ---- + endfunction + + " Define commands that will disable and enable the plugin. +! command! NoMatchParen windo 3match none | unlet! g:loaded_matchparen | +! \ au! matchparen +! command! DoMatchParen runtime plugin/matchparen.vim | windo doau CursorMoved + + let &cpo = cpo_save +*** ../vim-7.1.081/src/version.c Sat Aug 18 17:46:50 2007 +--- src/version.c Sat Aug 18 18:19:20 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 82, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +195. Your cat has its own home page. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.083 b/7.1.083 new file mode 100644 index 00000000..61073205 --- /dev/null +++ b/7.1.083 @@ -0,0 +1,123 @@ +To: vim-dev@vim.org +Subject: patch 7.1.083 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.083 (after 7.1.081) +Problem: Command line completion doesn't work with wildcards. +Solution: Add vim_isfilec_or_wc() and use it. (Martin Toft) +Files: src/charset.c, src/proto/charset.pro, src/ex_docmd.c + + +*** ../vim-7.1.082/src/charset.c Wed Aug 15 20:40:45 2007 +--- src/charset.c Sun Aug 19 22:30:25 2007 +*************** +*** 932,937 **** +--- 932,954 ---- + } + + /* ++ * return TRUE if 'c' is a valid file-name character or a wildcard character ++ * Assume characters above 0x100 are valid (multi-byte). ++ * Explicitly interpret ']' as a wildcard character as mch_has_wildcard("]") ++ * returns false. ++ */ ++ int ++ vim_isfilec_or_wc(c) ++ int c; ++ { ++ char_u buf[2]; ++ ++ buf[0] = (char_u)c; ++ buf[1] = NUL; ++ return vim_isfilec(c) || c == ']' || mch_has_wildcard(buf); ++ } ++ ++ /* + * return TRUE if 'c' is a printable character + * Assume characters above 0x100 are printable (multi-byte), except for + * Unicode. +*** ../vim-7.1.082/src/proto/charset.pro Sat May 5 19:21:32 2007 +--- src/proto/charset.pro Sun Aug 19 22:30:28 2007 +*************** +*** 21,26 **** +--- 21,27 ---- + int vim_iswordp __ARGS((char_u *p)); + int vim_iswordc_buf __ARGS((char_u *p, buf_T *buf)); + int vim_isfilec __ARGS((int c)); ++ int vim_isfilec_or_wc __ARGS((int c)); + int vim_isprintc __ARGS((int c)); + int vim_isprintc_strict __ARGS((int c)); + int lbr_chartabsize __ARGS((unsigned char *s, colnr_T col)); +*** ../vim-7.1.082/src/ex_docmd.c Sat Aug 18 17:46:50 2007 +--- src/ex_docmd.c Sun Aug 19 22:29:17 2007 +*************** +*** 3311,3319 **** + in_quote = !in_quote; + } + #ifdef SPACE_IN_FILENAME +! else if (!vim_isfilec(c) && (!(ea.argt & NOSPC) || usefilter)) + #else +! else if (!vim_isfilec(c)) + #endif + { + while (*p != NUL) +--- 3311,3320 ---- + in_quote = !in_quote; + } + #ifdef SPACE_IN_FILENAME +! else if (!vim_isfilec_or_wc(c) +! && (!(ea.argt & NOSPC) || usefilter)) + #else +! else if (!vim_isfilec_or_wc(c)) + #endif + { + while (*p != NUL) +*************** +*** 3324,3330 **** + else + #endif + c = *p; +! if (c == '`' || vim_isfilec(c)) + break; + #ifdef FEAT_MBYTE + if (has_mbyte) +--- 3325,3331 ---- + else + #endif + c = *p; +! if (c == '`' || vim_isfilec_or_wc(c)) + break; + #ifdef FEAT_MBYTE + if (has_mbyte) +*** ../vim-7.1.082/src/version.c Sat Aug 18 18:20:57 2007 +--- src/version.c Sun Aug 19 22:31:43 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 83, + /**/ + +-- + "You mean there really is an answer?" + "Yes! But you're not going to like it!" + "Oh do please tell us!" + "You're really not going to like it!" + "but we MUST know - tell us" + "Alright, the answer is...." + "yes..." + "... is ..." + "yes... come on!" + "is 42!" + (Douglas Adams - The Hitchhiker's Guide to the Galaxy) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.084 b/7.1.084 new file mode 100644 index 00000000..119c94f3 --- /dev/null +++ b/7.1.084 @@ -0,0 +1,53 @@ +To: vim-dev@vim.org +Subject: patch 7.1.084 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.084 +Problem: Using the "-nb" argument twice causes netbeans not to get + fileOpened events. +Solution: Change "&" to "&&". (Xavier de Gaye) +Files: src/ex_cmds.c + + +*** ../vim-7.1.083/src/ex_cmds.c Wed Jul 25 22:55:22 2007 +--- src/ex_cmds.c Tue Aug 21 15:02:43 2007 +*************** +*** 3776,3782 **** + workshop_file_opened((char *)curbuf->b_ffname, curbuf->b_p_ro); + # endif + # ifdef FEAT_NETBEANS_INTG +! if (usingNetbeans & ((flags & ECMD_SET_HELP) != ECMD_SET_HELP)) + netbeans_file_opened(curbuf); + # endif + } +--- 3787,3793 ---- + workshop_file_opened((char *)curbuf->b_ffname, curbuf->b_p_ro); + # endif + # ifdef FEAT_NETBEANS_INTG +! if (usingNetbeans && ((flags & ECMD_SET_HELP) != ECMD_SET_HELP)) + netbeans_file_opened(curbuf); + # endif + } +*** ../vim-7.1.083/src/version.c Sun Aug 19 22:42:27 2007 +--- src/version.c Tue Aug 21 15:04:03 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 84, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +220. Your wife asks for sex and you tell her where to find you on IRC. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.085 b/7.1.085 new file mode 100644 index 00000000..47502638 --- /dev/null +++ b/7.1.085 @@ -0,0 +1,85 @@ +To: vim-dev@vim.org +Subject: patch 7.1.085 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.085 +Problem: ":e fold.c" then ":sp fold.c" results in folds of original window + to disappear. (Akita Noek) +Solution: Invoke foldUpdateAll() for all windows of the changed buffer. + (Martin Toft) +Files: src/ex_cmds.c + + +*** ../vim-7.1.084/src/ex_cmds.c Tue Aug 21 15:05:54 2007 +--- src/ex_cmds.c Tue Aug 21 15:02:43 2007 +*************** +*** 2974,2980 **** + * 'fnum' is the number of the file, if zero use ffname/sfname. + * + * Return 1 for "normal" error, 2 for "not written" error, 0 for success +! * -1 for succesfully opening another file. + * 'lnum' is the line number for the cursor in the new file (if non-zero). + */ + int +--- 2974,2980 ---- + * 'fnum' is the number of the file, if zero use ffname/sfname. + * + * Return 1 for "normal" error, 2 for "not written" error, 0 for success +! * -1 for successfully opening another file. + * 'lnum' is the line number for the cursor in the new file (if non-zero). + */ + int +*************** +*** 3584,3592 **** + curwin_init(); + + #ifdef FEAT_FOLDING +! /* It's like all lines in the buffer changed. Need to update +! * automatic folding. */ + foldUpdateAll(curwin); + #endif + + /* Change directories when the 'acd' option is set. */ +--- 3584,3603 ---- + curwin_init(); + + #ifdef FEAT_FOLDING +! /* It's possible that all lines in the buffer changed. Need to update +! * automatic folding for all windows where it's used. */ +! # ifdef FEAT_WINDOWS +! { +! win_T *win; +! tabpage_T *tp; +! +! FOR_ALL_TAB_WINDOWS(tp, win) +! if (win->w_buffer == curbuf) +! foldUpdateAll(win); +! } +! # else + foldUpdateAll(curwin); ++ # endif + #endif + + /* Change directories when the 'acd' option is set. */ +*** ../vim-7.1.084/src/version.c Tue Aug 21 15:05:54 2007 +--- src/version.c Tue Aug 21 15:26:43 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 85, + /**/ + +-- +Your fault: 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 /// diff --git a/7.1.086 b/7.1.086 new file mode 100644 index 00000000..8d9ac8d9 --- /dev/null +++ b/7.1.086 @@ -0,0 +1,123 @@ +To: vim-dev@vim.org +Subject: patch 7.1.086 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.086 +Problem: Crash when using specific Python syntax highlighting. (Quirk) +Solution: Check for a negative index, coming from a keyword match at the + start of a line from a saved state. +Files: src/syntax.c + + +*** ../vim-7.1.085/src/syntax.c Tue Aug 14 23:06:51 2007 +--- src/syntax.c Tue Aug 21 17:13:51 2007 +*************** +*** 279,285 **** + */ + typedef struct state_item + { +! int si_idx; /* index of syntax pattern */ + int si_id; /* highlight group ID for keywords */ + int si_trans_id; /* idem, transparancy removed */ + int si_m_lnum; /* lnum of the match */ +--- 279,286 ---- + */ + typedef struct state_item + { +! int si_idx; /* index of syntax pattern or +! KEYWORD_IDX */ + int si_id; /* highlight group ID for keywords */ + int si_trans_id; /* idem, transparancy removed */ + int si_m_lnum; /* lnum of the match */ +*************** +*** 837,845 **** + current_lnum = end_lnum; + break; + } +! spp = &(SYN_ITEMS(syn_buf)[cur_si->si_idx]); +! found_flags = spp->sp_flags; +! found_match_idx = spp->sp_sync_idx; + found_current_lnum = current_lnum; + found_current_col = current_col; + found_m_endpos = cur_si->si_m_endpos; +--- 838,855 ---- + current_lnum = end_lnum; + break; + } +! if (cur_si->si_idx < 0) +! { +! /* Cannot happen? */ +! found_flags = 0; +! found_match_idx = KEYWORD_IDX; +! } +! else +! { +! spp = &(SYN_ITEMS(syn_buf)[cur_si->si_idx]); +! found_flags = spp->sp_flags; +! found_match_idx = spp->sp_sync_idx; +! } + found_current_lnum = current_lnum; + found_current_col = current_col; + found_m_endpos = cur_si->si_m_endpos; +*************** +*** 2533,2538 **** +--- 2543,2552 ---- + stateitem_T *sip = &CUR_STATE(idx); + synpat_T *spp; + ++ /* This should not happen... */ ++ if (sip->si_idx < 0) ++ return; ++ + spp = &(SYN_ITEMS(syn_buf)[sip->si_idx]); + if (sip->si_flags & HL_MATCH) + sip->si_id = spp->sp_syn_match_id; +*************** +*** 2648,2653 **** +--- 2662,2671 ---- + lpos_T end_endpos; + int end_idx; + ++ /* return quickly for a keyword */ ++ if (sip->si_idx < 0) ++ return; ++ + /* Don't update when it's already done. Can be a match of an end pattern + * that started in a previous line. Watch out: can also be a "keepend" + * from a containing item. */ +*************** +*** 2759,2764 **** +--- 2777,2786 ---- + lpos_T pos; + char_u *line; + int had_match = FALSE; ++ ++ /* just in case we are invoked for a keyword */ ++ if (idx < 0) ++ return; + + /* + * Check for being called with a START pattern. +*** ../vim-7.1.085/src/version.c Tue Aug 21 15:28:32 2007 +--- src/version.c Tue Aug 21 17:21:06 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 86, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +222. You send more than 20 personal e-mails 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 /// diff --git a/7.1.087 b/7.1.087 new file mode 100644 index 00000000..3ba731e6 --- /dev/null +++ b/7.1.087 @@ -0,0 +1,151 @@ +To: vim-dev@vim.org +Subject: patch 7.1.087 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.087 +Problem: Reading past ":cscope find" command. Writing past end of a buffer. +Solution: Check length of the argument before using the pattern. Use + vim_strncpy(). (Dominique Pelle) +Files: if_cscope.c + + +*** ../vim-7.1.086/src/if_cscope.c Sun Mar 11 15:48:29 2007 +--- src/if_cscope.c Sun Aug 19 22:17:09 2007 +*************** +*** 73,78 **** +--- 73,80 ---- + + + static csinfo_T csinfo[CSCOPE_MAX_CONNECTIONS]; ++ static int eap_arg_len; /* length of eap->arg, set in ++ cs_lookup_cmd() */ + static cscmd_T cs_cmds[] = + { + { "add", cs_add, +*************** +*** 260,273 **** + + if ((p = cs_manage_matches(NULL, NULL, -1, Get)) == NULL) + return TRUE; +! +! if ((int)strlen(p) > size) +! { +! strncpy((char *)buf, p, size - 1); +! buf[size] = '\0'; +! } +! else +! (void)strcpy((char *)buf, p); + + return FALSE; + } /* cs_fgets */ +--- 262,268 ---- + + if ((p = cs_manage_matches(NULL, NULL, -1, Get)) == NULL) + return TRUE; +! vim_strncpy(buf, (char_u *)p, size - 1); + + return FALSE; + } /* cs_fgets */ +*************** +*** 386,392 **** + * PRIVATE: cs_add + * + * add cscope database or a directory name (to look for cscope.out) +! * the the cscope connection list + * + * MAXPATHL 256 + */ +--- 381,387 ---- + * PRIVATE: cs_add + * + * add cscope database or a directory name (to look for cscope.out) +! * to the cscope connection list + * + * MAXPATHL 256 + */ +*************** +*** 966,972 **** + } + + pat = opt + strlen(opt) + 1; +! if (pat == NULL || (pat != NULL && pat[0] == '\0')) + { + cs_usage_msg(Find); + return FALSE; +--- 961,967 ---- + } + + pat = opt + strlen(opt) + 1; +! if (pat >= (char *)eap->arg + eap_arg_len) + { + cs_usage_msg(Find); + return FALSE; +*************** +*** 1317,1323 **** + #else + /* compare pathnames first */ + && ((fullpathcmp(csinfo[j].fname, fname, FALSE) & FPC_SAME) +! /* if not Windows 9x, test index file atributes too */ + || (!mch_windows95() + && csinfo[j].nVolume == bhfi.dwVolumeSerialNumber + && csinfo[j].nIndexHigh == bhfi.nFileIndexHigh +--- 1312,1318 ---- + #else + /* compare pathnames first */ + && ((fullpathcmp(csinfo[j].fname, fname, FALSE) & FPC_SAME) +! /* if not Windows 9x, test index file attributes too */ + || (!mch_windows95() + && csinfo[j].nVolume == bhfi.dwVolumeSerialNumber + && csinfo[j].nIndexHigh == bhfi.nFileIndexHigh +*************** +*** 1401,1406 **** +--- 1396,1404 ---- + if (eap->arg == NULL) + return NULL; + ++ /* Store length of eap->arg before it gets modified by strtok(). */ ++ eap_arg_len = STRLEN(eap->arg); ++ + if ((stok = strtok((char *)(eap->arg), (const char *)" ")) == NULL) + return NULL; + +*************** +*** 2195,2201 **** + cs_add_common(dblist[i], pplist[i], fllist[i]); + if (p_csverbose) + { +! /* dont' use smsg_attr because want to display + * connection number in the same line as + * "Added cscope database..." + */ +--- 2193,2199 ---- + cs_add_common(dblist[i], pplist[i], fllist[i]); + if (p_csverbose) + { +! /* don't use smsg_attr() because we want to display the + * connection number in the same line as + * "Added cscope database..." + */ +*** ../vim-7.1.086/src/version.c Tue Aug 21 17:29:04 2007 +--- src/version.c Tue Aug 21 17:59:42 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 87, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +223. You set up a web-cam as your home's security system. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.088 b/7.1.088 new file mode 100644 index 00000000..fc07d601 --- /dev/null +++ b/7.1.088 @@ -0,0 +1,70 @@ +To: vim-dev@vim.org +Subject: patch 7.1.088 (extra) +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.088 (extra) +Problem: The coordinates used by ":winpos" differ from what getwinposx() + and getwinposy() return. +Solution: Use MoveWindowStructure() instead of MoveWindow(). (Michael Henry) +Files: src/gui_mac.c + + +*** ../vim-7.1.087/src/gui_mac.c Tue Jun 19 16:33:53 2007 +--- src/gui_mac.c Wed Aug 29 20:33:34 2007 +*************** +*** 3149,3155 **** + /* TODO: Should make sure the window is move within range + * e.g.: y > ~16 [Menu bar], x > 0, x < screen width + */ +! MoveWindow(gui.VimWindow, x, y, TRUE); + } + + void +--- 3149,3155 ---- + /* TODO: Should make sure the window is move within range + * e.g.: y > ~16 [Menu bar], x > 0, x < screen width + */ +! MoveWindowStructure(gui.VimWindow, x, y, TRUE); + } + + void +*************** +*** 5556,5562 **** + * SetDialogTracksCursor() : Get the I-beam cursor over input box + * MoveDialogItem(): Probably better than SetDialogItem + * SizeDialogItem(): (but is it Carbon Only?) +! * AutoSizeDialog(): Magic resize of dialog based on text lenght + */ + } + #endif /* FEAT_DIALOG_GUI */ +--- 5556,5562 ---- + * SetDialogTracksCursor() : Get the I-beam cursor over input box + * MoveDialogItem(): Probably better than SetDialogItem + * SizeDialogItem(): (but is it Carbon Only?) +! * AutoSizeDialog(): Magic resize of dialog based on text length + */ + } + #endif /* FEAT_DIALOG_GUI */ +*** ../vim-7.1.087/src/version.c Tue Aug 21 18:02:58 2007 +--- src/version.c Thu Aug 30 10:32:28 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 88, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +10E. You start counting in hex. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.089 b/7.1.089 new file mode 100644 index 00000000..50773af7 --- /dev/null +++ b/7.1.089 @@ -0,0 +1,494 @@ +To: vim-dev@vim.org +Subject: patch 7.1.089 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.089 +Problem: ":let loaded_getscriptPlugin" doesn't clear to eol, result is + "#1in". +Solution: Clear to the end of the screen after displaying the first variable + value. +Files: src/eval.c + + +*** ../vim-7.1.088/src/eval.c Tue Aug 14 22:40:13 2007 +--- src/eval.c Wed Aug 29 22:40:15 2007 +*************** +*** 369,385 **** + static int ex_let_vars __ARGS((char_u *arg, typval_T *tv, int copy, int semicolon, int var_count, char_u *nextchars)); + static char_u *skip_var_list __ARGS((char_u *arg, int *var_count, int *semicolon)); + static char_u *skip_var_one __ARGS((char_u *arg)); +! static void list_hashtable_vars __ARGS((hashtab_T *ht, char_u *prefix, int empty)); +! static void list_glob_vars __ARGS((void)); +! static void list_buf_vars __ARGS((void)); +! static void list_win_vars __ARGS((void)); + #ifdef FEAT_WINDOWS +! static void list_tab_vars __ARGS((void)); + #endif +! static void list_vim_vars __ARGS((void)); +! static void list_script_vars __ARGS((void)); +! static void list_func_vars __ARGS((void)); +! static char_u *list_arg_vars __ARGS((exarg_T *eap, char_u *arg)); + static char_u *ex_let_one __ARGS((char_u *arg, typval_T *tv, int copy, char_u *endchars, char_u *op)); + static int check_changedtick __ARGS((char_u *arg)); + static char_u *get_lval __ARGS((char_u *name, typval_T *rettv, lval_T *lp, int unlet, int skip, int quiet, int fne_flags)); +--- 369,385 ---- + static int ex_let_vars __ARGS((char_u *arg, typval_T *tv, int copy, int semicolon, int var_count, char_u *nextchars)); + static char_u *skip_var_list __ARGS((char_u *arg, int *var_count, int *semicolon)); + static char_u *skip_var_one __ARGS((char_u *arg)); +! static void list_hashtable_vars __ARGS((hashtab_T *ht, char_u *prefix, int empty, int *first)); +! static void list_glob_vars __ARGS((int *first)); +! static void list_buf_vars __ARGS((int *first)); +! static void list_win_vars __ARGS((int *first)); + #ifdef FEAT_WINDOWS +! static void list_tab_vars __ARGS((int *first)); + #endif +! static void list_vim_vars __ARGS((int *first)); +! static void list_script_vars __ARGS((int *first)); +! static void list_func_vars __ARGS((int *first)); +! static char_u *list_arg_vars __ARGS((exarg_T *eap, char_u *arg, int *first)); + static char_u *ex_let_one __ARGS((char_u *arg, typval_T *tv, int copy, char_u *endchars, char_u *op)); + static int check_changedtick __ARGS((char_u *arg)); + static char_u *get_lval __ARGS((char_u *name, typval_T *rettv, lval_T *lp, int unlet, int skip, int quiet, int fne_flags)); +*************** +*** 704,711 **** + static hashtab_T *find_var_ht __ARGS((char_u *name, char_u **varname)); + static void vars_clear_ext __ARGS((hashtab_T *ht, int free_val)); + static void delete_var __ARGS((hashtab_T *ht, hashitem_T *hi)); +! static void list_one_var __ARGS((dictitem_T *v, char_u *prefix)); +! static void list_one_var_a __ARGS((char_u *prefix, char_u *name, int type, char_u *string)); + static void set_var __ARGS((char_u *name, typval_T *varp, int copy)); + static int var_check_ro __ARGS((int flags, char_u *name)); + static int var_check_fixed __ARGS((int flags, char_u *name)); +--- 704,711 ---- + static hashtab_T *find_var_ht __ARGS((char_u *name, char_u **varname)); + static void vars_clear_ext __ARGS((hashtab_T *ht, int free_val)); + static void delete_var __ARGS((hashtab_T *ht, hashitem_T *hi)); +! static void list_one_var __ARGS((dictitem_T *v, char_u *prefix, int *first)); +! static void list_one_var_a __ARGS((char_u *prefix, char_u *name, int type, char_u *string, int *first)); + static void set_var __ARGS((char_u *name, typval_T *varp, int copy)); + static int var_check_ro __ARGS((int flags, char_u *name)); + static int var_check_fixed __ARGS((int flags, char_u *name)); +*************** +*** 1699,1704 **** +--- 1699,1705 ---- + int semicolon = 0; + char_u op[2]; + char_u *argend; ++ int first = TRUE; + + argend = skip_var_list(arg, &var_count, &semicolon); + if (argend == NULL) +*************** +*** 1715,1733 **** + EMSG(_(e_invarg)); + else if (!ends_excmd(*arg)) + /* ":let var1 var2" */ +! arg = list_arg_vars(eap, arg); + else if (!eap->skip) + { + /* ":let" */ +! list_glob_vars(); +! list_buf_vars(); +! list_win_vars(); + #ifdef FEAT_WINDOWS +! list_tab_vars(); + #endif +! list_script_vars(); +! list_func_vars(); +! list_vim_vars(); + } + eap->nextcmd = check_nextcmd(arg); + } +--- 1716,1734 ---- + EMSG(_(e_invarg)); + else if (!ends_excmd(*arg)) + /* ":let var1 var2" */ +! arg = list_arg_vars(eap, arg, &first); + else if (!eap->skip) + { + /* ":let" */ +! list_glob_vars(&first); +! list_buf_vars(&first); +! list_win_vars(&first); + #ifdef FEAT_WINDOWS +! list_tab_vars(&first); + #endif +! list_script_vars(&first); +! list_func_vars(&first); +! list_vim_vars(&first); + } + eap->nextcmd = check_nextcmd(arg); + } +*************** +*** 1932,1941 **** + * If "empty" is TRUE also list NULL strings as empty strings. + */ + static void +! list_hashtable_vars(ht, prefix, empty) + hashtab_T *ht; + char_u *prefix; + int empty; + { + hashitem_T *hi; + dictitem_T *di; +--- 1933,1943 ---- + * If "empty" is TRUE also list NULL strings as empty strings. + */ + static void +! list_hashtable_vars(ht, prefix, empty, first) + hashtab_T *ht; + char_u *prefix; + int empty; ++ int *first; + { + hashitem_T *hi; + dictitem_T *di; +*************** +*** 1950,1956 **** + di = HI2DI(hi); + if (empty || di->di_tv.v_type != VAR_STRING + || di->di_tv.vval.v_string != NULL) +! list_one_var(di, prefix); + } + } + } +--- 1952,1958 ---- + di = HI2DI(hi); + if (empty || di->di_tv.v_type != VAR_STRING + || di->di_tv.vval.v_string != NULL) +! list_one_var(di, prefix, first); + } + } + } +*************** +*** 1959,1990 **** + * List global variables. + */ + static void +! list_glob_vars() + { +! list_hashtable_vars(&globvarht, (char_u *)"", TRUE); + } + + /* + * List buffer variables. + */ + static void +! list_buf_vars() + { + char_u numbuf[NUMBUFLEN]; + +! list_hashtable_vars(&curbuf->b_vars.dv_hashtab, (char_u *)"b:", TRUE); + + sprintf((char *)numbuf, "%ld", (long)curbuf->b_changedtick); +! list_one_var_a((char_u *)"b:", (char_u *)"changedtick", VAR_NUMBER, numbuf); + } + + /* + * List window variables. + */ + static void +! list_win_vars() + { +! list_hashtable_vars(&curwin->w_vars.dv_hashtab, (char_u *)"w:", TRUE); + } + + #ifdef FEAT_WINDOWS +--- 1961,1998 ---- + * List global variables. + */ + static void +! list_glob_vars(first) +! int *first; + { +! list_hashtable_vars(&globvarht, (char_u *)"", TRUE, first); + } + + /* + * List buffer variables. + */ + static void +! list_buf_vars(first) +! int *first; + { + char_u numbuf[NUMBUFLEN]; + +! list_hashtable_vars(&curbuf->b_vars.dv_hashtab, (char_u *)"b:", +! TRUE, first); + + sprintf((char *)numbuf, "%ld", (long)curbuf->b_changedtick); +! list_one_var_a((char_u *)"b:", (char_u *)"changedtick", VAR_NUMBER, +! numbuf, first); + } + + /* + * List window variables. + */ + static void +! list_win_vars(first) +! int *first; + { +! list_hashtable_vars(&curwin->w_vars.dv_hashtab, +! (char_u *)"w:", TRUE, first); + } + + #ifdef FEAT_WINDOWS +*************** +*** 1992,2000 **** + * List tab page variables. + */ + static void +! list_tab_vars() + { +! list_hashtable_vars(&curtab->tp_vars.dv_hashtab, (char_u *)"t:", TRUE); + } + #endif + +--- 2000,2010 ---- + * List tab page variables. + */ + static void +! list_tab_vars(first) +! int *first; + { +! list_hashtable_vars(&curtab->tp_vars.dv_hashtab, +! (char_u *)"t:", TRUE, first); + } + #endif + +*************** +*** 2002,2040 **** + * List Vim variables. + */ + static void +! list_vim_vars() + { +! list_hashtable_vars(&vimvarht, (char_u *)"v:", FALSE); + } + + /* + * List script-local variables, if there is a script. + */ + static void +! list_script_vars() + { + if (current_SID > 0 && current_SID <= ga_scripts.ga_len) +! list_hashtable_vars(&SCRIPT_VARS(current_SID), (char_u *)"s:", FALSE); + } + + /* + * List function variables, if there is a function. + */ + static void +! list_func_vars() + { + if (current_funccal != NULL) + list_hashtable_vars(¤t_funccal->l_vars.dv_hashtab, +! (char_u *)"l:", FALSE); + } + + /* + * List variables in "arg". + */ + static char_u * +! list_arg_vars(eap, arg) + exarg_T *eap; + char_u *arg; + { + int error = FALSE; + int len; +--- 2012,2055 ---- + * List Vim variables. + */ + static void +! list_vim_vars(first) +! int *first; + { +! list_hashtable_vars(&vimvarht, (char_u *)"v:", FALSE, first); + } + + /* + * List script-local variables, if there is a script. + */ + static void +! list_script_vars(first) +! int *first; + { + if (current_SID > 0 && current_SID <= ga_scripts.ga_len) +! list_hashtable_vars(&SCRIPT_VARS(current_SID), +! (char_u *)"s:", FALSE, first); + } + + /* + * List function variables, if there is a function. + */ + static void +! list_func_vars(first) +! int *first; + { + if (current_funccal != NULL) + list_hashtable_vars(¤t_funccal->l_vars.dv_hashtab, +! (char_u *)"l:", FALSE, first); + } + + /* + * List variables in "arg". + */ + static char_u * +! list_arg_vars(eap, arg, first) + exarg_T *eap; + char_u *arg; ++ int *first; + { + int error = FALSE; + int len; +*************** +*** 2091,2105 **** + { + switch (*name) + { +! case 'g': list_glob_vars(); break; +! case 'b': list_buf_vars(); break; +! case 'w': list_win_vars(); break; + #ifdef FEAT_WINDOWS +! case 't': list_tab_vars(); break; + #endif +! case 'v': list_vim_vars(); break; +! case 's': list_script_vars(); break; +! case 'l': list_func_vars(); break; + default: + EMSG2(_("E738: Can't list variables for %s"), name); + } +--- 2106,2120 ---- + { + switch (*name) + { +! case 'g': list_glob_vars(first); break; +! case 'b': list_buf_vars(first); break; +! case 'w': list_win_vars(first); break; + #ifdef FEAT_WINDOWS +! case 't': list_tab_vars(first); break; + #endif +! case 'v': list_vim_vars(first); break; +! case 's': list_script_vars(first); break; +! case 'l': list_func_vars(first); break; + default: + EMSG2(_("E738: Can't list variables for %s"), name); + } +*************** +*** 2116,2122 **** + *arg = NUL; + list_one_var_a((char_u *)"", + arg == arg_subsc ? name : name_start, +! tv.v_type, s == NULL ? (char_u *)"" : s); + *arg = c; + vim_free(tf); + } +--- 2131,2139 ---- + *arg = NUL; + list_one_var_a((char_u *)"", + arg == arg_subsc ? name : name_start, +! tv.v_type, +! s == NULL ? (char_u *)"" : s, +! first); + *arg = c; + vim_free(tf); + } +*************** +*** 18001,18009 **** + * List the value of one internal variable. + */ + static void +! list_one_var(v, prefix) + dictitem_T *v; + char_u *prefix; + { + char_u *tofree; + char_u *s; +--- 18024,18033 ---- + * List the value of one internal variable. + */ + static void +! list_one_var(v, prefix, first) + dictitem_T *v; + char_u *prefix; ++ int *first; + { + char_u *tofree; + char_u *s; +*************** +*** 18011,18026 **** + + s = echo_string(&v->di_tv, &tofree, numbuf, ++current_copyID); + list_one_var_a(prefix, v->di_key, v->di_tv.v_type, +! s == NULL ? (char_u *)"" : s); + vim_free(tofree); + } + + static void +! list_one_var_a(prefix, name, type, string) + char_u *prefix; + char_u *name; + int type; + char_u *string; + { + /* don't use msg() or msg_attr() to avoid overwriting "v:statusmsg" */ + msg_start(); +--- 18035,18051 ---- + + s = echo_string(&v->di_tv, &tofree, numbuf, ++current_copyID); + list_one_var_a(prefix, v->di_key, v->di_tv.v_type, +! s == NULL ? (char_u *)"" : s, first); + vim_free(tofree); + } + + static void +! list_one_var_a(prefix, name, type, string, first) + char_u *prefix; + char_u *name; + int type; + char_u *string; ++ int *first; /* when TRUE clear rest of screen and set to FALSE */ + { + /* don't use msg() or msg_attr() to avoid overwriting "v:statusmsg" */ + msg_start(); +*************** +*** 18052,18057 **** +--- 18077,18087 ---- + + if (type == VAR_FUNC) + msg_puts((char_u *)"()"); ++ if (*first) ++ { ++ msg_clr_eos(); ++ *first = FALSE; ++ } + } + + /* +*** ../vim-7.1.088/src/version.c Thu Aug 30 10:34:19 2007 +--- src/version.c Thu Aug 30 11:06:32 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 89, + /**/ + +-- +Edison's greatest achievement came in 1879, when he invented the +electric company. Edison's design was a brilliant adaptation of the +simple electrical circuit: the electric company sends electricity +through a wire to a customer, then immediately gets the electricity +back through another wire + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.090 b/7.1.090 new file mode 100644 index 00000000..319483ac --- /dev/null +++ b/7.1.090 @@ -0,0 +1,75 @@ +To: vim-dev@vim.org +Subject: patch 7.1.090 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.090 +Problem: Compiler warning on Mac OS X 10.5. +Solution: Don't redeclare sigaltstack(). (Hisashi T Fujinaka) +Files: src/os_unix.c + + +*** ../vim-7.1.089/src/os_unix.c Sat Aug 11 22:22:56 2007 +--- src/os_unix.c Wed Aug 22 22:28:48 2007 +*************** +*** 753,759 **** + if (signal_stack != NULL) + { + # ifdef HAVE_SIGALTSTACK +! # ifdef __APPLE__ + /* missing prototype. Adding it to osdef?.h.in doesn't work, because + * "struct sigaltstack" needs to be declared. */ + extern int sigaltstack __ARGS((const struct sigaltstack *ss, struct sigaltstack *oss)); +--- 753,760 ---- + if (signal_stack != NULL) + { + # ifdef HAVE_SIGALTSTACK +! # if defined(__APPLE__) && (!defined(MAC_OS_X_VERSION_MAX_ALLOWED) \ +! || MAC_OS_X_VERSION_MAX_ALLOWED <= 1040) + /* missing prototype. Adding it to osdef?.h.in doesn't work, because + * "struct sigaltstack" needs to be declared. */ + extern int sigaltstack __ARGS((const struct sigaltstack *ss, struct sigaltstack *oss)); +*************** +*** 5688,5694 **** + + /* + * Closes connection to gpm +! * returns non-zero if connection succesfully closed + */ + static void + gpm_close() +--- 5689,5695 ---- + + /* + * Closes connection to gpm +! * returns non-zero if connection successfully closed + */ + static void + gpm_close() +*** ../vim-7.1.089/src/version.c Thu Aug 30 11:10:38 2007 +--- src/version.c Thu Aug 30 11:46:07 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 90, + /**/ + +-- + We're knights of the round table + We dance whene'er we're able + We do routines and chorus scenes + With footwork impeccable. + We dine well here in Camelot + We eat ham and jam and spam a lot. + "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 /// diff --git a/7.1.091 b/7.1.091 new file mode 100644 index 00000000..041286c2 --- /dev/null +++ b/7.1.091 @@ -0,0 +1,355 @@ +To: vim-dev@vim.org +Subject: patch 7.1.091 (extra) +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.091 (extra) +Problem: Win32: Can't embed Vim inside another application. +Solution: Add the --windowid argument. (Nageshwar) +Files: runtime/doc/gui_w32.txt, runtime/doc/starting.txt, + runtime/doc/vi_diff.txt, src/globals.h, src/gui_w32.c, src/main.c + + +*** ../vim-7.1.090/runtime/doc/gui_w32.txt Sat May 12 15:35:53 2007 +--- runtime/doc/gui_w32.txt Tue Aug 14 17:32:27 2007 +*************** +*** 1,4 **** +! *gui_w32.txt* For Vim version 7.1. Last change: 2007 May 03 + + + VIM REFERENCE MANUAL by Bram Moolenaar +--- 1,4 ---- +! *gui_w32.txt* For Vim version 7.1. Last change: 2007 Aug 14 + + + VIM REFERENCE MANUAL by Bram Moolenaar +*************** +*** 52,57 **** +--- 52,67 ---- + *gui-w32s* + There is a specific version of gvim.exe that runs under the Win32s subsystem + of Windows 3.1 or 3.11. See |win32s|. ++ ++ ++ Using Vim as a plugin *gui-w32-windowid* ++ ++ When gvim starts up normally, it creates its own top level window. If you ++ pass Vim the command-line option |--windowid| with a decimal or hexadecimal ++ value, Vim will create a window that is a child of the window with the given ++ ID. This enables Vim to act as a plugin in another application. This really ++ is a programmer's interface, and is of no use without a supporting application ++ to spawn Vim correctly. + + ============================================================================== + 2. Vim as default editor *vim-default-editor* +*** ../vim-7.1.090/runtime/doc/starting.txt Sat May 12 16:56:17 2007 +--- runtime/doc/starting.txt Tue Aug 14 17:34:22 2007 +*************** +*** 1,4 **** +! *starting.txt* For Vim version 7.1. Last change: 2007 May 12 + + + VIM REFERENCE MANUAL by Bram Moolenaar +--- 1,4 ---- +! *starting.txt* For Vim version 7.1. Last change: 2007 Aug 14 + + + VIM REFERENCE MANUAL by Bram Moolenaar +*************** +*** 547,552 **** +--- 547,557 ---- + GTK+ GUI Vim only. Make gvim try to use GtkPlug mechanism, so + that it runs inside another window. See |gui-gtk-socketid| + for details. {not in Vi} ++ ++ --windowid {id} *--windowid* ++ Win32 GUI Vim only. Make gvim try to use the window {id} as a ++ parent, so that it runs inside that window. See ++ |gui-w32-windowid| for details. {not in Vi} + + --echo-wid *--echo-wid* + GTK+ GUI Vim only. Make gvim echo the Window ID on stdout, +*** ../vim-7.1.090/runtime/doc/vi_diff.txt Sat May 12 14:54:28 2007 +--- runtime/doc/vi_diff.txt Tue Aug 14 17:35:10 2007 +*************** +*** 1,4 **** +! *vi_diff.txt* For Vim version 7.1. Last change: 2007 May 07 + + + VIM REFERENCE MANUAL by Bram Moolenaar +--- 1,4 ---- +! *vi_diff.txt* For Vim version 7.1. Last change: 2007 Aug 14 + + + VIM REFERENCE MANUAL by Bram Moolenaar +*************** +*** 826,831 **** +--- 826,833 ---- + --servername {name} Vim: Specify Vim server name + + --socketid {id} Vim: GTK window socket to run Vim in ++ ++ --windowid {id} Vim: Win32 window ID to run Vim in + + --version Vim: show version message and exit. + +*** ../vim-7.1.090/src/globals.h Thu May 10 19:26:02 2007 +--- src/globals.h Wed Aug 29 22:27:45 2007 +*************** +*** 876,882 **** + EXTERN int no_mapping INIT(= FALSE); /* currently no mapping allowed */ + EXTERN int no_zero_mapping INIT(= 0); /* mapping zero not allowed */ + EXTERN int allow_keys INIT(= FALSE); /* allow key codes when no_mapping +! * is set */ + EXTERN int no_u_sync INIT(= 0); /* Don't call u_sync() */ + + EXTERN int restart_edit INIT(= 0); /* call edit when next cmd finished */ +--- 876,882 ---- + EXTERN int no_mapping INIT(= FALSE); /* currently no mapping allowed */ + EXTERN int no_zero_mapping INIT(= 0); /* mapping zero not allowed */ + EXTERN int allow_keys INIT(= FALSE); /* allow key codes when no_mapping +! * is set */ + EXTERN int no_u_sync INIT(= 0); /* Don't call u_sync() */ + + EXTERN int restart_edit INIT(= 0); /* call edit when next cmd finished */ +*************** +*** 1250,1255 **** +--- 1250,1263 ---- + #ifdef FEAT_GUI_GTK + EXTERN guint32 gtk_socket_id INIT(= 0); + EXTERN int echo_wid_arg INIT(= FALSE); /* --echo-wid argument */ ++ #endif ++ ++ #ifdef FEAT_GUI_W32 ++ /* ++ * The value of the --windowid argument. ++ * For embedding gvim inside another application. ++ */ ++ EXTERN int win_socket_id INIT(= 0); + #endif + + #if defined(FEAT_CLIENTSERVER) || defined(FEAT_EVAL) +*** ../vim-7.1.090/src/gui_w32.c Tue Aug 14 16:57:04 2007 +--- src/gui_w32.c Tue Aug 14 17:13:41 2007 +*************** +*** 23,28 **** +--- 23,30 ---- + * e.g., replace LONG with LONG_PTR, etc. + */ + ++ #include "vim.h" ++ + /* + * These are new in Windows ME/XP, only defined in recent compilers. + */ +*************** +*** 1432,1447 **** + } + } + else +! /* Open toplevel window. */ + s_hwnd = CreateWindow( +! szVimWndClass, "Vim MSWindows GUI", +! WS_OVERLAPPEDWINDOW, +! gui_win_x == -1 ? CW_USEDEFAULT : gui_win_x, +! gui_win_y == -1 ? CW_USEDEFAULT : gui_win_y, +! 100, /* Any value will do */ +! 100, /* Any value will do */ +! NULL, NULL, +! s_hinst, NULL); + + if (s_hwnd == NULL) + return FAIL; +--- 1434,1462 ---- + } + } + else +! { +! /* If the provided windowid is not valid reset it to zero, so that it +! * is ignored and we open our own window. */ +! if (IsWindow((HWND)win_socket_id) <= 0) +! win_socket_id = 0; +! +! /* Create a window. If win_socket_id is not zero without border and +! * titlebar, it will be reparented below. */ + s_hwnd = CreateWindow( +! szVimWndClass, "Vim MSWindows GUI", +! win_socket_id == 0 ? WS_OVERLAPPEDWINDOW : WS_POPUP, +! gui_win_x == -1 ? CW_USEDEFAULT : gui_win_x, +! gui_win_y == -1 ? CW_USEDEFAULT : gui_win_y, +! 100, /* Any value will do */ +! 100, /* Any value will do */ +! NULL, NULL, +! s_hinst, NULL); +! if (s_hwnd != NULL && win_socket_id != 0) +! { +! SetParent(s_hwnd, (HWND)win_socket_id); +! ShowWindow(s_hwnd, SW_SHOWMAXIMIZED); +! } +! } + + if (s_hwnd == NULL) + return FAIL; +*** ../vim-7.1.090/src/main.c Fri Aug 10 21:32:41 2007 +--- src/main.c Tue Aug 14 17:22:52 2007 +*************** +*** 275,280 **** +--- 275,281 ---- + * -display or --display + * --server... + * --socketid ++ * --windowid + */ + early_arg_scan(¶ms); + +*************** +*** 1489,1495 **** + * Get the name of the display, before gui_prepare() removes it from + * argv[]. Used for the xterm-clipboard display. + * +! * Also find the --server... arguments and --socketid + */ + /*ARGSUSED*/ + static void +--- 1490,1496 ---- + * Get the name of the display, before gui_prepare() removes it from + * argv[]. Used for the xterm-clipboard display. + * +! * Also find the --server... arguments and --socketid and --windowid + */ + /*ARGSUSED*/ + static void +*************** +*** 1536,1559 **** + # endif + } + # endif +! # ifdef FEAT_GUI_GTK + else if (STRICMP(argv[i], "--socketid") == 0) + { +! unsigned int socket_id; + int count; + + if (i == argc - 1) + mainerr_arg_missing((char_u *)argv[i]); + if (STRNICMP(argv[i+1], "0x", 2) == 0) +! count = sscanf(&(argv[i + 1][2]), "%x", &socket_id); + else +! count = sscanf(argv[i+1], "%u", &socket_id); + if (count != 1) + mainerr(ME_INVALID_ARG, (char_u *)argv[i]); + else +! gtk_socket_id = socket_id; + i++; + } + else if (STRICMP(argv[i], "--echo-wid") == 0) + echo_wid_arg = TRUE; + # endif +--- 1537,1571 ---- + # endif + } + # endif +! +! # if defined(FEAT_GUI_GTK) || defined(FEAT_GUI_W32) +! # ifdef FEAT_GUI_W32 +! else if (STRICMP(argv[i], "--windowid") == 0) +! # else + else if (STRICMP(argv[i], "--socketid") == 0) ++ # endif + { +! unsigned int id; + int count; + + if (i == argc - 1) + mainerr_arg_missing((char_u *)argv[i]); + if (STRNICMP(argv[i+1], "0x", 2) == 0) +! count = sscanf(&(argv[i + 1][2]), "%x", &id); + else +! count = sscanf(argv[i+1], "%u", &id); + if (count != 1) + mainerr(ME_INVALID_ARG, (char_u *)argv[i]); + else +! # ifdef FEAT_GUI_W32 +! win_socket_id = id; +! # else +! gtk_socket_id = id; +! # endif + i++; + } ++ # endif ++ # ifdef FEAT_GUI_GTK + else if (STRICMP(argv[i], "--echo-wid") == 0) + echo_wid_arg = TRUE; + # endif +*************** +*** 1683,1690 **** + } + } + #endif +! #ifdef FEAT_GUI_GTK + else if (STRNICMP(argv[0] + argv_idx, "socketid", 8) == 0) + { + /* already processed -- snatch the following arg */ + if (argc > 1) +--- 1695,1706 ---- + } + } + #endif +! #if defined(FEAT_GUI_GTK) || defined(FEAT_GUI_W32) +! # ifdef FEAT_GUI_GTK + else if (STRNICMP(argv[0] + argv_idx, "socketid", 8) == 0) ++ # else ++ else if (STRNICMP(argv[0] + argv_idx, "windowid", 8) == 0) ++ # endif + { + /* already processed -- snatch the following arg */ + if (argc > 1) +*************** +*** 1693,1698 **** +--- 1709,1716 ---- + ++argv; + } + } ++ #endif ++ #ifdef FEAT_GUI_GTK + else if (STRNICMP(argv[0] + argv_idx, "echo-wid", 8) == 0) + { + /* already processed, skip */ +*************** +*** 3120,3125 **** +--- 3138,3144 ---- + #endif + #ifdef FEAT_GUI_W32 + main_msg(_("-P \tOpen Vim inside parent application")); ++ main_msg(_("--windowid \tOpen Vim inside another win32 widget")); + #endif + + #ifdef FEAT_GUI_GNOME +*** ../vim-7.1.090/src/version.c Thu Aug 30 11:46:46 2007 +--- src/version.c Thu Aug 30 12:21:02 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 91, + /**/ + +-- + We're knights of the Round Table + Our shows are formidable + But many times + We're given rhymes + That are quite unsingable + We're opera mad in Camelot + We sing from the diaphragm a lot. + "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 /// diff --git a/7.1.092 b/7.1.092 new file mode 100644 index 00000000..e2638552 --- /dev/null +++ b/7.1.092 @@ -0,0 +1,92 @@ +To: vim-dev@vim.org +Subject: patch 7.1.092 (extra) +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.092 (extra, after 7.1.088) +Problem: Wrong arguments for MoveWindowStructure(). +Solution: Remove "TRUE". (Michael Henry) +Files: src/gui_mac.c + + +*** ../vim-7.1.091/src/gui_mac.c Thu Aug 30 10:34:19 2007 +--- src/gui_mac.c Thu Aug 30 12:48:41 2007 +*************** +*** 3149,3155 **** + /* TODO: Should make sure the window is move within range + * e.g.: y > ~16 [Menu bar], x > 0, x < screen width + */ +! MoveWindowStructure(gui.VimWindow, x, y, TRUE); + } + + void +--- 3149,3155 ---- + /* TODO: Should make sure the window is move within range + * e.g.: y > ~16 [Menu bar], x > 0, x < screen width + */ +! MoveWindowStructure(gui.VimWindow, x, y); + } + + void +*************** +*** 5293,5299 **** + short itemType; + short useIcon; + short width; +! short totalButtonWidth = 0; /* the width of all button together + including spacing */ + short widestButton = 0; + short dfltButtonEdge = 20; /* gut feeling */ +--- 5293,5299 ---- + short itemType; + short useIcon; + short width; +! short totalButtonWidth = 0; /* the width of all buttons together + including spacing */ + short widestButton = 0; + short dfltButtonEdge = 20; /* gut feeling */ +*************** +*** 5483,5489 **** + { + + macMoveDialogItem(theDialog, button, buttonItm.box.left, buttonItm.box.top, &box); +! /* With vertical, it's better to have all button the same lenght */ + if (vertical) + { + macSizeDialogItem(theDialog, button, widestButton, 0); +--- 5483,5489 ---- + { + + macMoveDialogItem(theDialog, button, buttonItm.box.left, buttonItm.box.top, &box); +! /* With vertical, it's better to have all buttons the same length */ + if (vertical) + { + macSizeDialogItem(theDialog, button, widestButton, 0); +*** ../vim-7.1.091/src/version.c Thu Aug 30 12:24:21 2007 +--- src/version.c Thu Aug 30 12:47:24 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 92, + /**/ + +-- + In war we're tough and able. + Quite indefatigable + Between our quests + We sequin vests + And impersonate Clark Gable + It's a busy life in Camelot. + I have to push the pram a lot. + "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 /// diff --git a/7.1.093 b/7.1.093 new file mode 100644 index 00000000..8c3c6b29 --- /dev/null +++ b/7.1.093 @@ -0,0 +1,551 @@ +To: vim-dev@vim.org +Subject: patch 7.1.093 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.093 +Problem: Reading past end of a screen line when determining cell width. + (Dominique Pelle) +Solution: Add an argument to mb_off2cells() for the maximum offset. +Files: src/globals.h, src/gui.c, src/mbyte.c, src/proto/mbyte.pro, + src/screen.c + + +*** ../vim-7.1.092/src/globals.h Thu Aug 30 12:24:21 2007 +--- src/globals.h Wed Aug 29 22:27:45 2007 +*************** +*** 801,807 **** + EXTERN int (*mb_char2bytes) __ARGS((int c, char_u *buf)) INIT(= latin_char2bytes); + EXTERN int (*mb_ptr2cells) __ARGS((char_u *p)) INIT(= latin_ptr2cells); + EXTERN int (*mb_char2cells) __ARGS((int c)) INIT(= latin_char2cells); +! EXTERN int (*mb_off2cells) __ARGS((unsigned off)) INIT(= latin_off2cells); + EXTERN int (*mb_ptr2char) __ARGS((char_u *p)) INIT(= latin_ptr2char); + EXTERN int (*mb_head_off) __ARGS((char_u *base, char_u *p)) INIT(= latin_head_off); + +--- 801,807 ---- + EXTERN int (*mb_char2bytes) __ARGS((int c, char_u *buf)) INIT(= latin_char2bytes); + EXTERN int (*mb_ptr2cells) __ARGS((char_u *p)) INIT(= latin_ptr2cells); + EXTERN int (*mb_char2cells) __ARGS((int c)) INIT(= latin_char2cells); +! EXTERN int (*mb_off2cells) __ARGS((unsigned off, unsigned max_off)) INIT(= latin_off2cells); + EXTERN int (*mb_ptr2char) __ARGS((char_u *p)) INIT(= latin_ptr2char); + EXTERN int (*mb_head_off) __ARGS((char_u *base, char_u *p)) INIT(= latin_head_off); + +*** ../vim-7.1.092/src/gui.c Wed Aug 15 20:07:53 2007 +--- src/gui.c Wed Aug 29 22:16:51 2007 +*************** +*** 1080,1086 **** + cur_width = gui.char_width; + } + #ifdef FEAT_MBYTE +! if (has_mbyte && (*mb_off2cells)(LineOffset[gui.row] + gui.col) > 1) + { + /* Double wide character. */ + if (shape_table[idx].shape != SHAPE_VER) +--- 1080,1087 ---- + cur_width = gui.char_width; + } + #ifdef FEAT_MBYTE +! if (has_mbyte && (*mb_off2cells)(LineOffset[gui.row] + gui.col, +! LineOffset[gui.row] + screen_Columns) > 1) + { + /* Double wide character. */ + if (shape_table[idx].shape != SHAPE_VER) +*************** +*** 1159,1165 **** + #endif + + # if defined(FEAT_GUI_TABLINE) && (defined(FEAT_GUI_MSWIN) \ +! || defined(FEAT_GUI_MOTIF) || defined(FEAT_GUI_MAC)) + if (gui_has_tabline()) + text_area_y += gui.tabline_height; + #endif +--- 1160,1166 ---- + #endif + + # if defined(FEAT_GUI_TABLINE) && (defined(FEAT_GUI_MSWIN) \ +! || defined(FEAT_GUI_MOTIF) || defined(FEAT_GUI_MAC)) + if (gui_has_tabline()) + text_area_y += gui.tabline_height; + #endif +*** ../vim-7.1.092/src/mbyte.c Sat Aug 11 13:57:31 2007 +--- src/mbyte.c Thu Aug 30 13:48:30 2007 +*************** +*** 1310,1329 **** + /* + * mb_off2cells() function pointer. + * Return number of display cells for char at ScreenLines[off]. +! * Caller must make sure "off" and "off + 1" are valid! + */ + /*ARGSUSED*/ + int +! latin_off2cells(off) + unsigned off; + { + return 1; + } + + int +! dbcs_off2cells(off) + unsigned off; + { + /* Number of cells is equal to number of bytes, except for euc-jp when + * the first byte is 0x8e. */ + if (enc_dbcs == DBCS_JPNU && ScreenLines[off] == 0x8e) +--- 1310,1335 ---- + /* + * mb_off2cells() function pointer. + * Return number of display cells for char at ScreenLines[off]. +! * We make sure that the offset used is less than "max_off". + */ + /*ARGSUSED*/ + int +! latin_off2cells(off, max_off) + unsigned off; ++ unsigned max_off; + { + return 1; + } + + int +! dbcs_off2cells(off, max_off) + unsigned off; ++ unsigned max_off; + { ++ /* never check beyond end of the line */ ++ if (off >= max_off) ++ return 1; ++ + /* Number of cells is equal to number of bytes, except for euc-jp when + * the first byte is 0x8e. */ + if (enc_dbcs == DBCS_JPNU && ScreenLines[off] == 0x8e) +*************** +*** 1332,1341 **** + } + + int +! utf_off2cells(off) + unsigned off; + { +! return ScreenLines[off + 1] == 0 ? 2 : 1; + } + + /* +--- 1338,1348 ---- + } + + int +! utf_off2cells(off, max_off) + unsigned off; ++ unsigned max_off; + { +! return (off + 1 < max_off && ScreenLines[off + 1] == 0) ? 2 : 1; + } + + /* +*************** +*** 2899,2910 **** + if (composing_hangul) + return TRUE; + #endif +! if (enc_dbcs != 0) +! return dbcs_off2cells(LineOffset[row] + col) > 1; +! if (enc_utf8) +! return (col + 1 < Columns +! && ScreenLines[LineOffset[row] + col + 1] == 0); +! return FALSE; + } + + # if defined(FEAT_CLIPBOARD) || defined(FEAT_GUI) || defined(FEAT_RIGHTLEFT) \ +--- 2906,2913 ---- + if (composing_hangul) + return TRUE; + #endif +! return (*mb_off2cells)(LineOffset[row] + col, +! LineOffset[row] + screen_Columns) > 1; + } + + # if defined(FEAT_CLIPBOARD) || defined(FEAT_GUI) || defined(FEAT_RIGHTLEFT) \ +*** ../vim-7.1.092/src/proto/mbyte.pro Sat May 5 20:02:52 2007 +--- src/proto/mbyte.pro Wed Aug 29 20:49:02 2007 +*************** +*** 12,20 **** + int utf_ptr2cells __ARGS((char_u *p)); + int dbcs_ptr2cells __ARGS((char_u *p)); + int latin_char2cells __ARGS((int c)); +! int latin_off2cells __ARGS((unsigned off)); +! int dbcs_off2cells __ARGS((unsigned off)); +! int utf_off2cells __ARGS((unsigned off)); + int latin_ptr2char __ARGS((char_u *p)); + int utf_ptr2char __ARGS((char_u *p)); + int mb_ptr2char_adv __ARGS((char_u **pp)); +--- 12,20 ---- + int utf_ptr2cells __ARGS((char_u *p)); + int dbcs_ptr2cells __ARGS((char_u *p)); + int latin_char2cells __ARGS((int c)); +! int latin_off2cells __ARGS((unsigned off, unsigned max_off)); +! int dbcs_off2cells __ARGS((unsigned off, unsigned max_off)); +! int utf_off2cells __ARGS((unsigned off, unsigned max_off)); + int latin_ptr2char __ARGS((char_u *p)); + int utf_ptr2char __ARGS((char_u *p)); + int mb_ptr2char_adv __ARGS((char_u **pp)); +*** ../vim-7.1.092/src/screen.c Sun Aug 5 20:10:16 2007 +--- src/screen.c Thu Aug 30 10:31:26 2007 +*************** +*** 1024,1030 **** + type = VALID; + } + +! /* Trick: we want to avoid clearning the screen twice. screenclear() will + * set "screen_cleared" to TRUE. The special value MAYBE (which is still + * non-zero and thus not FALSE) will indicate that screenclear() was not + * called. */ +--- 1024,1030 ---- + type = VALID; + } + +! /* Trick: we want to avoid clearing the screen twice. screenclear() will + * set "screen_cleared" to TRUE. The special value MAYBE (which is still + * non-zero and thus not FALSE) will indicate that screenclear() was not + * called. */ +*************** +*** 4632,4638 **** + + /* + * At end of screen line and there is more to come: Display the line +! * so far. If there is no more to display it is catched above. + */ + if (( + #ifdef FEAT_RIGHTLEFT +--- 4632,4638 ---- + + /* + * At end of screen line and there is more to come: Display the line +! * so far. If there is no more to display it is caught above. + */ + if (( + #ifdef FEAT_RIGHTLEFT +*************** +*** 4709,4717 **** + #endif + #ifdef FEAT_MBYTE + && !(has_mbyte +! && ((*mb_off2cells)(LineOffset[screen_row]) == 2 + || (*mb_off2cells)(LineOffset[screen_row - 1] +! + (int)Columns - 2) == 2)) + #endif + ) + { +--- 4709,4721 ---- + #endif + #ifdef FEAT_MBYTE + && !(has_mbyte +! && ((*mb_off2cells)(LineOffset[screen_row], +! LineOffset[screen_row] + screen_Columns) +! == 2 + || (*mb_off2cells)(LineOffset[screen_row - 1] +! + (int)Columns - 2, +! LineOffset[screen_row] + screen_Columns) +! == 2)) + #endif + ) + { +*************** +*** 4871,4876 **** +--- 4875,4884 ---- + { + unsigned off_from; + unsigned off_to; ++ #ifdef FEAT_MBYTE ++ unsigned max_off_from; ++ unsigned max_off_to; ++ #endif + int col = 0; + #if defined(FEAT_GUI) || defined(UNIX) || defined(FEAT_VERTSPLIT) + int hl; +*************** +*** 4897,4902 **** +--- 4905,4914 ---- + + off_from = (unsigned)(current_ScreenLine - ScreenLines); + off_to = LineOffset[row] + coloff; ++ #ifdef FEAT_MBYTE ++ max_off_from = off_from + screen_Columns; ++ max_off_to = LineOffset[row] + screen_Columns; ++ #endif + + #ifdef FEAT_RIGHTLEFT + if (rlflag) +*************** +*** 4931,4937 **** + { + #ifdef FEAT_MBYTE + if (has_mbyte && (col + 1 < endcol)) +! char_cells = (*mb_off2cells)(off_from); + else + char_cells = 1; + #endif +--- 4943,4949 ---- + { + #ifdef FEAT_MBYTE + if (has_mbyte && (col + 1 < endcol)) +! char_cells = (*mb_off2cells)(off_from, max_off_from); + else + char_cells = 1; + #endif +*************** +*** 5008,5014 **** + * ScreenLinesUC[] is sufficient. */ + if (char_cells == 1 + && col + 1 < endcol +! && (*mb_off2cells)(off_to) > 1) + { + /* Writing a single-cell character over a double-cell + * character: need to redraw the next cell. */ +--- 5020,5026 ---- + * ScreenLinesUC[] is sufficient. */ + if (char_cells == 1 + && col + 1 < endcol +! && (*mb_off2cells)(off_to, max_off_to) > 1) + { + /* Writing a single-cell character over a double-cell + * character: need to redraw the next cell. */ +*************** +*** 5017,5024 **** + } + else if (char_cells == 2 + && col + 2 < endcol +! && (*mb_off2cells)(off_to) == 1 +! && (*mb_off2cells)(off_to + 1) > 1) + { + /* Writing the second half of a double-cell character over + * a double-cell character: need to redraw the second +--- 5029,5036 ---- + } + else if (char_cells == 2 + && col + 2 < endcol +! && (*mb_off2cells)(off_to, max_off_to) == 1 +! && (*mb_off2cells)(off_to + 1, max_off_to) > 1) + { + /* Writing the second half of a double-cell character over + * a double-cell character: need to redraw the second +*************** +*** 5037,5046 **** + * char over the left halve of an existing one. */ + if (has_mbyte && col + char_cells == endcol + && ((char_cells == 1 +! && (*mb_off2cells)(off_to) > 1) + || (char_cells == 2 +! && (*mb_off2cells)(off_to) == 1 +! && (*mb_off2cells)(off_to + 1) > 1))) + clear_next = TRUE; + #endif + +--- 5049,5058 ---- + * char over the left halve of an existing one. */ + if (has_mbyte && col + char_cells == endcol + && ((char_cells == 1 +! && (*mb_off2cells)(off_to, max_off_to) > 1) + || (char_cells == 2 +! && (*mb_off2cells)(off_to, max_off_to) == 1 +! && (*mb_off2cells)(off_to + 1, max_off_to) > 1))) + clear_next = TRUE; + #endif + +*************** +*** 5180,5189 **** + /* find previous character by counting from first + * column and get its width. */ + unsigned off = LineOffset[row]; + + while (off < off_to) + { +! prev_cells = (*mb_off2cells)(off); + off += prev_cells; + } + } +--- 5192,5202 ---- + /* find previous character by counting from first + * column and get its width. */ + unsigned off = LineOffset[row]; ++ unsigned max_off = LineOffset[row] + screen_Columns; + + while (off < off_to) + { +! prev_cells = (*mb_off2cells)(off, max_off); + off += prev_cells; + } + } +*************** +*** 5369,5375 **** + static int skip_status_match_char __ARGS((expand_T *xp, char_u *s)); + + /* +! * Get the lenght of an item as it will be shown in the status line. + */ + static int + status_match_len(xp, s) +--- 5382,5388 ---- + static int skip_status_match_char __ARGS((expand_T *xp, char_u *s)); + + /* +! * Get the length of an item as it will be shown in the status line. + */ + static int + status_match_len(xp, s) +*************** +*** 5435,5441 **** + int row; + char_u *buf; + int len; +! int clen; /* lenght in screen cells */ + int fillchar; + int attr; + int i; +--- 5448,5454 ---- + int row; + char_u *buf; + int len; +! int clen; /* length in screen cells */ + int fillchar; + int attr; + int i; +*************** +*** 6187,6192 **** +--- 6200,6206 ---- + char_u *ptr = text; + int c; + #ifdef FEAT_MBYTE ++ unsigned max_off; + int mbyte_blen = 1; + int mbyte_cells = 1; + int u8c = 0; +*************** +*** 6203,6208 **** +--- 6217,6225 ---- + return; + + off = LineOffset[row] + col; ++ #ifdef FEAT_MBYTE ++ max_off = LineOffset[row] + screen_Columns; ++ #endif + while (col < screen_Columns + && (len < 0 || (int)(ptr - text) < len) + && *ptr != NUL) +*************** +*** 6326,6344 **** + else if (has_mbyte + && (len < 0 ? ptr[mbyte_blen] == NUL + : ptr + mbyte_blen >= text + len) +! && ((mbyte_cells == 1 && (*mb_off2cells)(off) > 1) + || (mbyte_cells == 2 +! && (*mb_off2cells)(off) == 1 +! && (*mb_off2cells)(off + 1) > 1))) + clear_next_cell = TRUE; + + /* Make sure we never leave a second byte of a double-byte behind, + * it confuses mb_off2cells(). */ + if (enc_dbcs +! && ((mbyte_cells == 1 && (*mb_off2cells)(off) > 1) + || (mbyte_cells == 2 +! && (*mb_off2cells)(off) == 1 +! && (*mb_off2cells)(off + 1) > 1))) + ScreenLines[off + mbyte_blen] = 0; + #endif + ScreenLines[off] = c; +--- 6343,6361 ---- + else if (has_mbyte + && (len < 0 ? ptr[mbyte_blen] == NUL + : ptr + mbyte_blen >= text + len) +! && ((mbyte_cells == 1 && (*mb_off2cells)(off, max_off) > 1) + || (mbyte_cells == 2 +! && (*mb_off2cells)(off, max_off) == 1 +! && (*mb_off2cells)(off + 1, max_off) > 1))) + clear_next_cell = TRUE; + + /* Make sure we never leave a second byte of a double-byte behind, + * it confuses mb_off2cells(). */ + if (enc_dbcs +! && ((mbyte_cells == 1 && (*mb_off2cells)(off, max_off) > 1) + || (mbyte_cells == 2 +! && (*mb_off2cells)(off, max_off) == 1 +! && (*mb_off2cells)(off + 1, max_off) > 1))) + ScreenLines[off + mbyte_blen] = 0; + #endif + ScreenLines[off] = c; +*************** +*** 6924,6929 **** +--- 6941,6949 ---- + { + int r, c; + int off; ++ #ifdef FEAT_MBYTE ++ int max_off; ++ #endif + + /* Can't use ScreenLines unless initialized */ + if (ScreenLines == NULL) +*************** +*** 6934,6943 **** + for (r = row; r < row + height; ++r) + { + off = LineOffset[r]; + for (c = col; c < col + width; ++c) + { + #ifdef FEAT_MBYTE +! if (enc_dbcs != 0 && dbcs_off2cells(off + c) > 1) + { + screen_char_2(off + c, r, c); + ++c; +--- 6954,6966 ---- + for (r = row; r < row + height; ++r) + { + off = LineOffset[r]; ++ #ifdef FEAT_MBYTE ++ max_off = off + screen_Columns; ++ #endif + for (c = col; c < col + width; ++c) + { + #ifdef FEAT_MBYTE +! if (enc_dbcs != 0 && dbcs_off2cells(off + c, max_off) > 1) + { + screen_char_2(off + c, r, c); + ++c; +*************** +*** 6947,6953 **** + { + screen_char(off + c, r, c); + #ifdef FEAT_MBYTE +! if (utf_off2cells(off + c) > 1) + ++c; + #endif + } +--- 6970,6976 ---- + { + screen_char(off + c, r, c); + #ifdef FEAT_MBYTE +! if (utf_off2cells(off + c, max_off) > 1) + ++c; + #endif + } +*** ../vim-7.1.092/src/version.c Thu Aug 30 12:50:00 2007 +--- src/version.c Thu Aug 30 13:45:25 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 93, + /**/ + +-- +There is a fine line between courage and foolishness. +Unfortunately, it's not a fence. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.094 b/7.1.094 new file mode 100644 index 00000000..06318fce --- /dev/null +++ b/7.1.094 @@ -0,0 +1,58 @@ +To: vim-dev@vim.org +Subject: patch 7.1.094 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.094 +Problem: When checking if syntax highlighting is present, looking in the + current buffer instead of the specified one. +Solution: Use "buf" instead of "curbuf". +Files: src/syntax.c + + +*** ../vim-7.1.093/src/syntax.c Tue Aug 21 17:29:04 2007 +--- src/syntax.c Wed Aug 29 23:27:52 2007 +*************** +*** 5987,5994 **** + { + return (buf->b_syn_patterns.ga_len != 0 + || buf->b_syn_clusters.ga_len != 0 +! || curbuf->b_keywtab.ht_used > 0 +! || curbuf->b_keywtab_ic.ht_used > 0); + } + + #if defined(FEAT_CMDL_COMPL) || defined(PROTO) +--- 5987,5994 ---- + { + return (buf->b_syn_patterns.ga_len != 0 + || buf->b_syn_clusters.ga_len != 0 +! || buf->b_keywtab.ht_used > 0 +! || buf->b_keywtab_ic.ht_used > 0); + } + + #if defined(FEAT_CMDL_COMPL) || defined(PROTO) +*** ../vim-7.1.093/src/version.c Thu Aug 30 13:51:52 2007 +--- src/version.c Thu Aug 30 19:35:52 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 94, + /**/ + +-- +MAN: You don't frighten us, English pig-dog! Go and boil your bottoms, + son of a silly person. I blow my nose on you, so-called Arthur-king, + you and your silly English K...kaniggets. + He puts hands to his ears and blows a raspberry. + "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 /// diff --git a/7.1.095 b/7.1.095 new file mode 100644 index 00000000..1b6fe273 --- /dev/null +++ b/7.1.095 @@ -0,0 +1,210 @@ +To: vim-dev@vim.org +Subject: patch 7.1.095 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.095 +Problem: The FocusLost and FocusGained autocommands are triggered + asynchronously in the GUI. This may cause arbitrary problems. +Solution: Put the focus event in the input buffer and handle it when ready + for it. +Files: src/eval.c, src/getchar.c, src/gui.c, src/gui_gtk_x11.c, + src/keymap.h + + +*** ../vim-7.1.094/src/eval.c Thu Aug 30 11:10:38 2007 +--- src/eval.c Mon Sep 3 22:48:09 2007 +*************** +*** 9912,9929 **** + + ++no_mapping; + ++allow_keys; +! if (argvars[0].v_type == VAR_UNKNOWN) +! /* getchar(): blocking wait. */ +! n = safe_vgetc(); +! else if (get_tv_number_chk(&argvars[0], &error) == 1) +! /* getchar(1): only check if char avail */ +! n = vpeekc(); +! else if (error || vpeekc() == NUL) +! /* illegal argument or getchar(0) and no char avail: return zero */ +! n = 0; +! else +! /* getchar(0) and char avail: return char */ +! n = safe_vgetc(); + --no_mapping; + --allow_keys; + +--- 9912,9935 ---- + + ++no_mapping; + ++allow_keys; +! for (;;) +! { +! if (argvars[0].v_type == VAR_UNKNOWN) +! /* getchar(): blocking wait. */ +! n = safe_vgetc(); +! else if (get_tv_number_chk(&argvars[0], &error) == 1) +! /* getchar(1): only check if char avail */ +! n = vpeekc(); +! else if (error || vpeekc() == NUL) +! /* illegal argument or getchar(0) and no char avail: return zero */ +! n = 0; +! else +! /* getchar(0) and char avail: return char */ +! n = safe_vgetc(); +! if (n == K_IGNORE) +! continue; +! break; +! } + --no_mapping; + --allow_keys; + +*** ../vim-7.1.094/src/getchar.c Thu May 10 18:43:02 2007 +--- src/getchar.c Wed Aug 29 22:38:49 2007 +*************** +*** 1596,1603 **** + continue; + } + #endif +- + #ifdef FEAT_GUI + /* Translate K_CSI to CSI. The special key is only used to avoid + * it being recognized as the start of a special key. */ + if (c == K_CSI) +--- 1596,1610 ---- + continue; + } + #endif + #ifdef FEAT_GUI ++ /* The caller doesn't need to know that the focus event is delayed ++ * until getting a character. */ ++ if (c == K_FOCUSGAINED || c == K_FOCUSLOST) ++ { ++ ui_focus_change(c == K_FOCUSGAINED); ++ continue; ++ } ++ + /* Translate K_CSI to CSI. The special key is only used to avoid + * it being recognized as the start of a special key. */ + if (c == K_CSI) +*** ../vim-7.1.094/src/gui.c Thu Aug 30 13:51:52 2007 +--- src/gui.c Thu Aug 30 14:10:48 2007 +*************** +*** 4519,4525 **** + xim_set_focus(in_focus); + # endif + +! ui_focus_change(in_focus); + #endif + } + +--- 4519,4536 ---- + xim_set_focus(in_focus); + # endif + +! /* Put events in the input queue only when allowed. +! * ui_focus_change() isn't called directly, because it invokes +! * autocommands and that must not happen asynchronously. */ +! if (!hold_gui_events) +! { +! char_u bytes[3]; +! +! bytes[0] = CSI; +! bytes[1] = KS_EXTRA; +! bytes[2] = in_focus ? (int)KE_FOCUSGAINED : (int)KE_FOCUSLOST; +! add_to_input_buf(bytes, 3); +! } + #endif + } + +*** ../vim-7.1.094/src/gui_gtk_x11.c Tue Jun 19 18:07:52 2007 +--- src/gui_gtk_x11.c Wed Aug 29 22:43:34 2007 +*************** +*** 813,822 **** + if (blink_state == BLINK_NONE) + gui_mch_start_blink(); + +! /* make sure keyboard input goes to the draw area (if this is focus for a window) */ + if (widget != gui.drawarea) + gtk_widget_grab_focus(gui.drawarea); + + return TRUE; + } + +--- 813,827 ---- + if (blink_state == BLINK_NONE) + gui_mch_start_blink(); + +! /* make sure keyboard input goes to the draw area (if this is focus for a +! * window) */ + if (widget != gui.drawarea) + gtk_widget_grab_focus(gui.drawarea); + ++ /* make sure the input buffer is read */ ++ if (gtk_main_level() > 0) ++ gtk_main_quit(); ++ + return TRUE; + } + +*************** +*** 828,833 **** +--- 833,842 ---- + + if (blink_state != BLINK_NONE) + gui_mch_stop_blink(); ++ ++ /* make sure the input buffer is read */ ++ if (gtk_main_level() > 0) ++ gtk_main_quit(); + + return TRUE; + } +*** ../vim-7.1.094/src/keymap.h Sat May 5 19:34:22 2007 +--- src/keymap.h Wed Aug 29 22:17:51 2007 +*************** +*** 254,259 **** +--- 254,261 ---- + , KE_DROP /* DnD data is available */ + , KE_CURSORHOLD /* CursorHold event */ + , KE_NOP /* doesn't do something */ ++ , KE_FOCUSGAINED /* focus gained */ ++ , KE_FOCUSLOST /* focus lost */ + }; + + /* +*************** +*** 445,450 **** +--- 447,454 ---- + #define K_CMDWIN TERMCAP2KEY(KS_EXTRA, KE_CMDWIN) + + #define K_DROP TERMCAP2KEY(KS_EXTRA, KE_DROP) ++ #define K_FOCUSGAINED TERMCAP2KEY(KS_EXTRA, KE_FOCUSGAINED) ++ #define K_FOCUSLOST TERMCAP2KEY(KS_EXTRA, KE_FOCUSLOST) + + #define K_CURSORHOLD TERMCAP2KEY(KS_EXTRA, KE_CURSORHOLD) + +*** ../vim-7.1.094/src/version.c Thu Aug 30 19:36:52 2007 +--- src/version.c Wed Sep 5 21:42:41 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 95, + /**/ + +-- +ARTHUR: Who are you? +TALL KNIGHT: We are the Knights Who Say "Ni"! +BEDEVERE: No! Not the Knights Who Say "Ni"! + "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 /// diff --git a/7.1.096 b/7.1.096 new file mode 100644 index 00000000..3eabea47 --- /dev/null +++ b/7.1.096 @@ -0,0 +1,89 @@ +To: vim-dev@vim.org +Subject: patch 7.1.096 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.096 +Problem: Reading past end of a string when resizing Vim. (Dominique Pelle) +Solution: Check the string pointer before getting the char it points to. +Files: src/message.c + + +*** ../vim-7.1.095/src/message.c Tue Aug 7 21:59:26 2007 +--- src/message.c Thu Aug 30 22:53:03 2007 +*************** +*** 944,949 **** +--- 944,950 ---- + c = K_IGNORE; + } + #endif ++ + /* + * Allow scrolling back in the messages. + * Also accept scroll-down commands when messages fill the screen, +*************** +*** 1840,1845 **** +--- 1841,1847 ---- + char_u *sb_str = str; + int sb_col = msg_col; + int wrap; ++ int did_last_char; + + did_wait_return = FALSE; + while ((maxlen < 0 || (int)(s - str) < maxlen) && *s != NUL) +*************** +*** 1909,1915 **** +--- 1911,1920 ---- + else + #endif + msg_screen_putchar(*s++, attr); ++ did_last_char = TRUE; + } ++ else ++ did_last_char = FALSE; + + if (p_more) + /* store text for scrolling back */ +*************** +*** 1944,1954 **** + + /* When we displayed a char in last column need to check if there + * is still more. */ +! if (*s >= ' ' +! #ifdef FEAT_RIGHTLEFT +! && !cmdmsg_rl +! #endif +! ) + continue; + } + +--- 1949,1955 ---- + + /* When we displayed a char in last column need to check if there + * is still more. */ +! if (did_last_char) + continue; + } + +*** ../vim-7.1.095/src/version.c Wed Sep 5 21:45:54 2007 +--- src/version.c Thu Sep 6 12:31:28 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 96, + /**/ + +-- +Yah, well, we had to carve our electrons out of driftwood we'd +find. In the winter. Uphill. Both ways. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.097 b/7.1.097 new file mode 100644 index 00000000..52438939 --- /dev/null +++ b/7.1.097 @@ -0,0 +1,51 @@ +To: vim-dev@vim.org +Subject: patch 7.1.097 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.097 +Problem: ":setlocal stl=%!1+1" does not work. +Solution: Adjust check for pointer. (Politz) +Files: src/option.c + + +*** ../vim-7.1.096/src/option.c Sun Aug 12 15:50:26 2007 +--- src/option.c Wed Sep 5 22:34:27 2007 +*************** +*** 6348,6354 **** + errmsg = check_stl_option(p_ruf); + } + /* check 'statusline' only if it doesn't start with "%!" */ +! else if (varp != &p_stl || s[0] != '%' || s[1] != '!') + errmsg = check_stl_option(s); + if (varp == &p_ruf && errmsg == NULL) + comp_col(); +--- 6352,6358 ---- + errmsg = check_stl_option(p_ruf); + } + /* check 'statusline' only if it doesn't start with "%!" */ +! else if (varp == &p_ruf || s[0] != '%' || s[1] != '!') + errmsg = check_stl_option(s); + if (varp == &p_ruf && errmsg == NULL) + comp_col(); +*** ../vim-7.1.096/src/version.c Thu Sep 6 12:53:59 2007 +--- src/version.c Thu Sep 6 13:31:37 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 97, + /**/ + +-- +Not too long ago, cut and paste was done with scissors and glue... + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.098 b/7.1.098 new file mode 100644 index 00000000..608bd628 --- /dev/null +++ b/7.1.098 @@ -0,0 +1,65 @@ +To: vim-dev@vim.org +Subject: patch 7.1.098 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.098 +Problem: ":call s:var()" doesn't work if "s:var" is a Funcref. (Andy Wokula) +Solution: Before converting "s:" into a script ID, check if it is a Funcref. +Files: src/eval.c + + +*** ../vim-7.1.097/src/eval.c Wed Sep 5 21:45:54 2007 +--- src/eval.c Thu Sep 6 12:11:19 2007 +*************** +*** 19367,19372 **** +--- 19367,19394 ---- + if (lv.ll_name == NULL) + { + /* Error found, but continue after the function name. */ ++ *pp = end; ++ goto theend; ++ } ++ ++ /* Check if the name is a Funcref. If so, use the value. */ ++ if (lv.ll_exp_name != NULL) ++ { ++ len = (int)STRLEN(lv.ll_exp_name); ++ name = deref_func_name(lv.ll_exp_name, &len); ++ if (name == lv.ll_exp_name) ++ name = NULL; ++ } ++ else ++ { ++ len = (int)(end - *pp); ++ name = deref_func_name(*pp, &len); ++ if (name == *pp) ++ name = NULL; ++ } ++ if (name != NULL) ++ { ++ name = vim_strsave(name); + *pp = end; + goto theend; + } +*** ../vim-7.1.097/src/version.c Thu Sep 6 13:32:53 2007 +--- src/version.c Thu Sep 6 14:24:10 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 98, + /**/ + +-- +Not too long ago, a program was something you watched on TV... + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.099 b/7.1.099 new file mode 100644 index 00000000..77e02e62 --- /dev/null +++ b/7.1.099 @@ -0,0 +1,137 @@ +To: vim-dev@vim.org +Subject: patch 7.1.099 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.099 +Problem: When the 'keymap' and 'paste' options have a non-default value, + ":mkexrc" and ":mksession" do not correctly set the options. +Solution: Set the options with side effects before other options. +Files: src/option.c + + +*** ../vim-7.1.098/src/option.c Thu Sep 6 13:32:53 2007 +--- src/option.c Wed Sep 5 22:34:27 2007 +*************** +*** 427,432 **** +--- 427,434 ---- + #define P_NOGLOB 0x100000L/* do not use local value for global vimrc */ + #define P_NFNAME 0x200000L/* only normal file name chars allowed */ + #define P_INSECURE 0x400000L/* option was set from a modeline */ ++ #define P_PRI_MKRC 0x800000L/* priority for :mkvimrc (setting option has ++ side effects) */ + + #define ISK_LATIN1 (char_u *)"@,48-57,_,192-255" + +*************** +*** 773,778 **** +--- 775,782 ---- + {(char_u *)0L, (char_u *)0L} + #endif + }, ++ /* P_PRI_MKRC isn't needed here, optval_default() ++ * always returns TRUE for 'compatible' */ + {"compatible", "cp", P_BOOL|P_RALL, + (char_u *)&p_cp, PV_NONE, + {(char_u *)TRUE, (char_u *)FALSE}}, +*************** +*** 1515,1521 **** + {(char_u *)0L, (char_u *)0L} + #endif + }, +! {"keymap", "kmp", P_STRING|P_ALLOCED|P_VI_DEF|P_RBUF|P_RSTAT|P_NFNAME, + #ifdef FEAT_KEYMAP + (char_u *)&p_keymap, PV_KMAP, + {(char_u *)"", (char_u *)0L} +--- 1519,1525 ---- + {(char_u *)0L, (char_u *)0L} + #endif + }, +! {"keymap", "kmp", P_STRING|P_ALLOCED|P_VI_DEF|P_RBUF|P_RSTAT|P_NFNAME|P_PRI_MKRC, + #ifdef FEAT_KEYMAP + (char_u *)&p_keymap, PV_KMAP, + {(char_u *)"", (char_u *)0L} +*************** +*** 1836,1842 **** + {"paragraphs", "para", P_STRING|P_VI_DEF, + (char_u *)&p_para, PV_NONE, + {(char_u *)"IPLPPPQPP LIpplpipbp", (char_u *)0L}}, +! {"paste", NULL, P_BOOL|P_VI_DEF, + (char_u *)&p_paste, PV_NONE, + {(char_u *)FALSE, (char_u *)0L}}, + {"pastetoggle", "pt", P_STRING|P_VI_DEF, +--- 1840,1846 ---- + {"paragraphs", "para", P_STRING|P_VI_DEF, + (char_u *)&p_para, PV_NONE, + {(char_u *)"IPLPPPQPP LIpplpipbp", (char_u *)0L}}, +! {"paste", NULL, P_BOOL|P_VI_DEF|P_PRI_MKRC, + (char_u *)&p_paste, PV_NONE, + {(char_u *)FALSE, (char_u *)0L}}, + {"pastetoggle", "pt", P_STRING|P_VI_DEF, +*************** +*** 8535,8547 **** + char_u *varp_local = NULL; /* fresh value */ + char *cmd; + int round; + + /* + * The options that don't have a default (terminal name, columns, lines) + * are never written. Terminal options are also not written. + */ +! for (p = &options[0]; !istermoption(p); p++) +! if (!(p->flags & P_NO_MKRC) && !istermoption(p)) + { + /* skip global option when only doing locals */ + if (p->indir == PV_NONE && !(opt_flags & OPT_GLOBAL)) +--- 8539,8558 ---- + char_u *varp_local = NULL; /* fresh value */ + char *cmd; + int round; ++ int pri; + + /* + * The options that don't have a default (terminal name, columns, lines) + * are never written. Terminal options are also not written. ++ * Do the loop over "options[]" twice: once for options with the ++ * P_PRI_MKRC flag and once without. + */ +! for (pri = 1; pri >= 0; --pri) +! { +! for (p = &options[0]; !istermoption(p); p++) +! if (!(p->flags & P_NO_MKRC) +! && !istermoption(p) +! && ((pri == 1) == ((p->flags & P_PRI_MKRC) != 0))) + { + /* skip global option when only doing locals */ + if (p->indir == PV_NONE && !(opt_flags & OPT_GLOBAL)) +*************** +*** 8637,8642 **** +--- 8648,8654 ---- + } + } + } ++ } + return OK; + } + +*** ../vim-7.1.098/src/version.c Thu Sep 6 14:25:50 2007 +--- src/version.c Thu Sep 6 16:32:31 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 99, + /**/ + +-- +Not too long ago, a keyboard was something to make music with... + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.100 b/7.1.100 new file mode 100644 index 00000000..86e6fa49 --- /dev/null +++ b/7.1.100 @@ -0,0 +1,513 @@ +To: vim-dev@vim.org +Subject: patch 7.1.100 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.100 +Problem: Win32: Executing cscope doesn't always work properly. +Solution: Use another way to invoke cscope. (Mike Williams) +Files: src/if_cscope.c, src/if_cscope.h, src/main.c, + src/proto/if_cscope.pro + + +*** ../vim-7.1.099/src/if_cscope.c Tue Aug 21 18:02:58 2007 +--- src/if_cscope.c Sun Sep 2 16:50:50 2007 +*************** +*** 24,34 **** + /* not UNIX, must be WIN32 */ + # include "vimio.h" + # include +- # include +- # define STDIN_FILENO 0 +- # define STDOUT_FILENO 1 +- # define STDERR_FILENO 2 +- # define pipe(fds) _pipe(fds, 256, O_TEXT|O_NOINHERIT) + #endif + #include "if_cscope.h" + +--- 24,29 ---- +*************** +*** 65,71 **** + static char * cs_parse_results __ARGS((int cnumber, char *buf, int bufsize, char **context, char **linenumber, char **search)); + static char * cs_pathcomponents __ARGS((char *path)); + static void cs_print_tags_priv __ARGS((char **, char **, int)); +! static int cs_read_prompt __ARGS((int )); + static void cs_release_csp __ARGS((int, int freefnpp)); + static int cs_reset __ARGS((exarg_T *eap)); + static char * cs_resolve_file __ARGS((int, char *)); +--- 60,66 ---- + static char * cs_parse_results __ARGS((int cnumber, char *buf, int bufsize, char **context, char **linenumber, char **search)); + static char * cs_pathcomponents __ARGS((char *path)); + static void cs_print_tags_priv __ARGS((char **, char **, int)); +! static int cs_read_prompt __ARGS((int)); + static void cs_release_csp __ARGS((int, int freefnpp)); + static int cs_reset __ARGS((exarg_T *eap)); + static char * cs_resolve_file __ARGS((int, char *)); +*************** +*** 504,510 **** + #if defined(UNIX) + else if (S_ISREG(statbuf.st_mode) || S_ISLNK(statbuf.st_mode)) + #else +! /* substitute define S_ISREG from os_unix.h */ + else if (((statbuf.st_mode) & S_IFMT) == S_IFREG) + #endif + { +--- 499,505 ---- + #if defined(UNIX) + else if (S_ISREG(statbuf.st_mode) || S_ISLNK(statbuf.st_mode)) + #else +! /* WIN32 - substitute define S_ISREG from os_unix.h */ + else if (((statbuf.st_mode) & S_IFMT) == S_IFREG) + #endif + { +*************** +*** 717,733 **** + cs_create_connection(i) + int i; + { +! int to_cs[2], from_cs[2], len; +! char *prog, *cmd, *ppath = NULL; +! #ifndef UNIX +! int in_save, out_save, err_save; +! long_i ph; +! # ifdef FEAT_GUI +! HWND activewnd = NULL; +! HWND consolewnd = NULL; +! # endif + #endif + + /* + * Cscope reads from to_cs[0] and writes to from_cs[1]; vi reads from + * from_cs[0] and writes to to_cs[1]. +--- 712,734 ---- + cs_create_connection(i) + int i; + { +! #ifdef UNIX +! int to_cs[2], from_cs[2]; +! #endif +! int len; +! char *prog, *cmd, *ppath = NULL; +! #ifdef WIN32 +! int fd; +! SECURITY_ATTRIBUTES sa; +! PROCESS_INFORMATION pi; +! STARTUPINFO si; +! BOOL pipe_stdin = FALSE, pipe_stdout = FALSE; +! HANDLE stdin_rd, stdout_rd; +! HANDLE stdout_wr, stdin_wr; +! BOOL created; + #endif + ++ #if defined(UNIX) + /* + * Cscope reads from to_cs[0] and writes to from_cs[1]; vi reads from + * from_cs[0] and writes to to_cs[1]. +*************** +*** 748,765 **** + return CSCOPE_FAILURE; + } + +- #if defined(UNIX) + switch (csinfo[i].pid = fork()) + { + case -1: + (void)EMSG(_("E622: Could not fork for cscope")); + goto err_closing; + case 0: /* child: run cscope. */ +- #else +- in_save = dup(STDIN_FILENO); +- out_save = dup(STDOUT_FILENO); +- err_save = dup(STDERR_FILENO); +- #endif + if (dup2(to_cs[0], STDIN_FILENO) == -1) + PERROR("cs_create_connection 1"); + if (dup2(from_cs[1], STDOUT_FILENO) == -1) +--- 749,760 ---- +*************** +*** 768,782 **** + PERROR("cs_create_connection 3"); + + /* close unused */ +- #if defined(UNIX) + (void)close(to_cs[1]); + (void)close(from_cs[0]); + #else +! /* On win32 we must close opposite ends because we are the parent */ +! (void)close(to_cs[0]); +! to_cs[0] = -1; +! (void)close(from_cs[1]); +! from_cs[1] = -1; + #endif + /* expand the cscope exec for env var's */ + if ((prog = (char *)alloc(MAXPATHL + 1)) == NULL) +--- 763,794 ---- + PERROR("cs_create_connection 3"); + + /* close unused */ + (void)close(to_cs[1]); + (void)close(from_cs[0]); + #else +! /* WIN32 */ +! /* Create pipes to communicate with cscope */ +! sa.nLength = sizeof(SECURITY_ATTRIBUTES); +! sa.bInheritHandle = TRUE; +! sa.lpSecurityDescriptor = NULL; +! +! if (!(pipe_stdin = CreatePipe(&stdin_rd, &stdin_wr, &sa, 0)) +! || !(pipe_stdout = CreatePipe(&stdout_rd, &stdout_wr, &sa, 0))) +! { +! (void)EMSG(_("E566: Could not create cscope pipes")); +! err_closing: +! if (pipe_stdin) +! { +! CloseHandle(stdin_rd); +! CloseHandle(stdin_wr); +! } +! if (pipe_stdout) +! { +! CloseHandle(stdout_rd); +! CloseHandle(stdout_wr); +! } +! return CSCOPE_FAILURE; +! } + #endif + /* expand the cscope exec for env var's */ + if ((prog = (char *)alloc(MAXPATHL + 1)) == NULL) +*************** +*** 784,789 **** +--- 796,802 ---- + #ifdef UNIX + return CSCOPE_FAILURE; + #else ++ /* WIN32 */ + goto err_closing; + #endif + } +*************** +*** 800,805 **** +--- 813,819 ---- + #ifdef UNIX + return CSCOPE_FAILURE; + #else ++ /* WIN32 */ + goto err_closing; + #endif + } +*************** +*** 818,823 **** +--- 832,838 ---- + #ifdef UNIX + return CSCOPE_FAILURE; + #else ++ /* WIN32 */ + goto err_closing; + #endif + } +*************** +*** 826,831 **** +--- 841,847 ---- + #if defined(UNIX) + (void)sprintf(cmd, "exec %s -dl -f %s", prog, csinfo[i].fname); + #else ++ /* WIN32 */ + (void)sprintf(cmd, "%s -dl -f %s", prog, csinfo[i].fname); + #endif + if (csinfo[i].ppath != NULL) +*************** +*** 851,910 **** + exit(127); + /* NOTREACHED */ + default: /* parent. */ +- #else +- # ifdef FEAT_GUI +- activewnd = GetForegroundWindow(); /* on win9x cscope steals focus */ +- /* Dirty hack to hide annoying console window */ +- if (AllocConsole()) +- { +- char *title; +- title = (char *)alloc(1024); +- if (title == NULL) +- FreeConsole(); +- else +- { +- GetConsoleTitle(title, 1024); /* save for future restore */ +- SetConsoleTitle( +- "GVIMCS{5499421B-CBEF-45b0-85EF-38167FDEA5C5}GVIMCS"); +- Sleep(40); /* as stated in MS KB we must wait 40 ms */ +- consolewnd = FindWindow(NULL, +- "GVIMCS{5499421B-CBEF-45b0-85EF-38167FDEA5C5}GVIMCS"); +- if (consolewnd != NULL) +- ShowWindow(consolewnd, SW_HIDE); +- SetConsoleTitle(title); +- vim_free(title); +- } +- } +- # endif +- /* May be use &shell, &shellquote etc */ +- # ifdef __BORLANDC__ +- /* BCC 5.5 uses a different function name for spawnlp */ +- ph = (long_i)spawnlp(P_NOWAIT, prog, cmd, NULL); +- # else +- ph = (long_i)_spawnlp(_P_NOWAIT, prog, cmd, NULL); +- # endif +- vim_free(prog); +- vim_free(cmd); +- # ifdef FEAT_GUI +- /* Dirty hack part two */ +- if (activewnd != NULL) +- /* restoring focus */ +- SetForegroundWindow(activewnd); +- if (consolewnd != NULL) +- FreeConsole(); +- +- # endif +- if (ph == -1) +- { +- PERROR(_("cs_create_connection exec failed")); +- (void)EMSG(_("E623: Could not spawn cscope process")); +- goto err_closing; +- } +- /* else */ +- csinfo[i].pid = 0; +- csinfo[i].hProc = (HANDLE)ph; +- +- #endif /* !UNIX */ + /* + * Save the file descriptors for later duplication, and + * reopen as streams. +--- 867,872 ---- +*************** +*** 914,935 **** + if ((csinfo[i].fr_fp = fdopen(from_cs[0], "r")) == NULL) + PERROR(_("cs_create_connection: fdopen for fr_fp failed")); + +- #if defined(UNIX) + /* close unused */ + (void)close(to_cs[0]); + (void)close(from_cs[1]); + + break; + } + #else +! /* restore stdhandles */ +! dup2(in_save, STDIN_FILENO); +! dup2(out_save, STDOUT_FILENO); +! dup2(err_save, STDERR_FILENO); +! close(in_save); +! close(out_save); +! close(err_save); +! #endif + return CSCOPE_SUCCESS; + } /* cs_create_connection */ + +--- 876,927 ---- + if ((csinfo[i].fr_fp = fdopen(from_cs[0], "r")) == NULL) + PERROR(_("cs_create_connection: fdopen for fr_fp failed")); + + /* close unused */ + (void)close(to_cs[0]); + (void)close(from_cs[1]); + + break; + } ++ + #else +! /* WIN32 */ +! /* Create a new process to run cscope and use pipes to talk with it */ +! GetStartupInfo(&si); +! si.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW; +! si.wShowWindow = SW_HIDE; /* Hide child application window */ +! si.hStdOutput = stdout_wr; +! si.hStdError = stdout_wr; +! si.hStdInput = stdin_rd; +! created = CreateProcess(NULL, cmd, NULL, NULL, TRUE, CREATE_NEW_CONSOLE, +! NULL, NULL, &si, &pi); +! vim_free(prog); +! vim_free(cmd); +! +! if (!created) +! { +! PERROR(_("cs_create_connection exec failed")); +! (void)EMSG(_("E623: Could not spawn cscope process")); +! goto err_closing; +! } +! /* else */ +! csinfo[i].pid = pi.dwProcessId; +! csinfo[i].hProc = pi.hProcess; +! CloseHandle(pi.hThread); +! +! /* TODO - tidy up after failure to create files on pipe handles. */ +! if (((fd = _open_osfhandle((intptr_t)stdin_wr, _O_TEXT|_O_APPEND)) < 0) +! || ((csinfo[i].to_fp = _fdopen(fd, "w")) == NULL)) +! PERROR(_("cs_create_connection: fdopen for to_fp failed")); +! if (((fd = _open_osfhandle((intptr_t)stdout_rd, _O_TEXT|_O_RDONLY)) < 0) +! || ((csinfo[i].fr_fp = _fdopen(fd, "r")) == NULL)) +! PERROR(_("cs_create_connection: fdopen for fr_fp failed")); +! +! /* Close handles for file descriptors inherited by the cscope process */ +! CloseHandle(stdin_rd); +! CloseHandle(stdout_wr); +! +! #endif /* !UNIX */ +! + return CSCOPE_SUCCESS; + } /* cs_create_connection */ + +*************** +*** 2097,2104 **** + /* + * PRIVATE: cs_release_csp + * +! * does the actual free'ing for the cs ptr with an optional flag of whether +! * or not to free the filename. called by cs_kill and cs_reset. + */ + static void + cs_release_csp(i, freefnpp) +--- 2089,2096 ---- + /* + * PRIVATE: cs_release_csp + * +! * Does the actual free'ing for the cs ptr with an optional flag of whether +! * or not to free the filename. Called by cs_kill and cs_reset. + */ + static void + cs_release_csp(i, freefnpp) +*************** +*** 2116,2125 **** + (void)fputs("q\n", csinfo[i].to_fp); + (void)fflush(csinfo[i].to_fp); + } +! /* give cscope chance to exit normally */ +! if (csinfo[i].hProc != NULL +! && WaitForSingleObject(csinfo[i].hProc, 1000) == WAIT_TIMEOUT) +! TerminateProcess(csinfo[i].hProc, 0); + #endif + + if (csinfo[i].fr_fp != NULL) +--- 2108,2120 ---- + (void)fputs("q\n", csinfo[i].to_fp); + (void)fflush(csinfo[i].to_fp); + } +! if (csinfo[i].hProc != NULL) +! { +! /* Give cscope a chance to exit normally */ +! if (WaitForSingleObject(csinfo[i].hProc, 1000) == WAIT_TIMEOUT) +! TerminateProcess(csinfo[i].hProc, 0); +! CloseHandle(csinfo[i].hProc); +! } + #endif + + if (csinfo[i].fr_fp != NULL) +*************** +*** 2301,2306 **** +--- 2296,2316 ---- + wait_return(TRUE); + return CSCOPE_SUCCESS; + } /* cs_show */ ++ ++ ++ /* ++ * PUBLIC: cs_end ++ * ++ * Only called when VIM exits to quit any cscope sessions. ++ */ ++ void ++ cs_end() ++ { ++ int i; ++ ++ for (i = 0; i < CSCOPE_MAX_CONNECTIONS; i++) ++ cs_release_csp(i, TRUE); ++ } + + #endif /* FEAT_CSCOPE */ + +*** ../vim-7.1.099/src/if_cscope.h Thu Jun 30 23:59:58 2005 +--- src/if_cscope.h Sun Sep 2 16:51:08 2007 +*************** +*** 72,78 **** + ino_t st_ino; /* inode number of cscope db */ + #else + # if defined(WIN32) +! int pid; /* Can't get pid so set it to 0 ;) */ + HANDLE hProc; /* cscope process handle */ + DWORD nVolume; /* Volume serial number, instead of st_dev */ + DWORD nIndexHigh; /* st_ino has no meaning in the Windows */ +--- 72,78 ---- + ino_t st_ino; /* inode number of cscope db */ + #else + # if defined(WIN32) +! DWORD pid; /* PID of the connected cscope process. */ + HANDLE hProc; /* cscope process handle */ + DWORD nVolume; /* Volume serial number, instead of st_dev */ + DWORD nIndexHigh; /* st_ino has no meaning in the Windows */ +*** ../vim-7.1.099/src/main.c Thu Aug 30 12:24:21 2007 +--- src/main.c Sun Sep 2 16:44:36 2007 +*************** +*** 1331,1336 **** +--- 1331,1339 ---- + #ifdef FEAT_NETBEANS_INTG + netbeans_end(); + #endif ++ #ifdef FEAT_CSCOPE ++ cs_end(); ++ #endif + + mch_exit(exitval); + } +*************** +*** 3671,3677 **** + mainerr_arg_missing((char_u *)filev[-1]); + if (mch_dirname(cwd, MAXPATHL) != OK) + return NULL; +! if ((p = vim_strsave_escaped_ext(cwd, PATH_ESC_CHARS, '\\', TRUE)) == NULL) + return NULL; + ga_init2(&ga, 1, 100); + ga_concat(&ga, (char_u *)":cd "); +--- 3674,3686 ---- + mainerr_arg_missing((char_u *)filev[-1]); + if (mch_dirname(cwd, MAXPATHL) != OK) + return NULL; +! if ((p = vim_strsave_escaped_ext(cwd, +! #ifdef BACKSLASH_IN_FILENAME +! "", /* rem_backslash() will tell what chars to escape */ +! #else +! PATH_ESC_CHARS, +! #endif +! '\\', TRUE)) == NULL) + return NULL; + ga_init2(&ga, 1, 100); + ga_concat(&ga, (char_u *)":cd "); +*** ../vim-7.1.099/src/proto/if_cscope.pro Sat May 5 19:15:39 2007 +--- src/proto/if_cscope.pro Sun Sep 2 16:51:34 2007 +*************** +*** 6,9 **** +--- 6,10 ---- + void cs_free_tags __ARGS((void)); + void cs_print_tags __ARGS((void)); + int cs_connection __ARGS((int num, char_u *dbpath, char_u *ppath)); ++ void cs_end __ARGS((void)); + /* vim: set ft=c : */ +*** ../vim-7.1.099/src/version.c Thu Sep 6 16:33:47 2007 +--- src/version.c Thu Sep 6 17:27:51 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 100, + /**/ + +-- +I have to exercise early in the morning before my brain +figures out what I'm doing. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.101 b/7.1.101 new file mode 100644 index 00000000..65ea8c62 --- /dev/null +++ b/7.1.101 @@ -0,0 +1,53 @@ +To: vim-dev@vim.org +Subject: patch 7.1.101 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.101 +Problem: Ruby: The Buffer.line= method does not work. +Solution: Add the "self" argument to set_current_line(). (Jonathan Hankins) +Files: src/if_ruby.c + + +*** ../vim-7.1.100/src/if_ruby.c Sat May 12 15:01:49 2007 +--- src/if_ruby.c Mon Sep 10 10:40:38 2007 +*************** +*** 789,795 **** + return get_buffer_line(curbuf, curwin->w_cursor.lnum); + } + +! static VALUE set_current_line(VALUE str) + { + return set_buffer_line(curbuf, curwin->w_cursor.lnum, str); + } +--- 789,795 ---- + return get_buffer_line(curbuf, curwin->w_cursor.lnum); + } + +! static VALUE set_current_line(VALUE self, VALUE str) + { + return set_buffer_line(curbuf, curwin->w_cursor.lnum, str); + } +*** ../vim-7.1.100/src/version.c Thu Sep 6 17:38:06 2007 +--- src/version.c Thu Sep 13 14:59:47 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 101, + /**/ + +-- +The question is: What do you do with your life? +The wrong answer is: Become the richest guy in the graveyard. + (billionaire and Oracle founder Larry Ellison) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.102 b/7.1.102 new file mode 100644 index 00000000..5f58d85d --- /dev/null +++ b/7.1.102 @@ -0,0 +1,103 @@ +To: vim-dev@vim.org +Subject: patch 7.1.102 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.102 +Problem: Perl interface doesn't compile with new version of Perl. +Solution: Add two variables to the dynamic library loading. (Suresh + Govindachar) +Files: src/if_perl.xs + + +*** ../vim-7.1.101/src/if_perl.xs Wed Aug 16 19:33:57 2006 +--- src/if_perl.xs Wed Sep 5 22:00:36 2007 +*************** +*** 40,45 **** +--- 40,65 ---- + # define PERL_SUBVERSION SUBVERSION + #endif + ++ /* ++ * Quoting Jan Dubois of Active State: ++ * ActivePerl build 822 still identifies itself as 5.8.8 but already ++ * contains many of the changes from the upcoming Perl 5.8.9 release. ++ * ++ * The changes include addition of two symbols (Perl_sv_2iv_flags, ++ * Perl_newXS_flags) not present in earlier releases. ++ * ++ * Jan Dubois suggested the following guarding scheme: ++ */ ++ #if (ACTIVEPERL_VERSION >= 822) ++ # define PERL589_OR_LATER ++ #endif ++ #if (PERL_REVISION == 5) && (PERL_VERSION == 8) && (PERL_SUBVERSION >= 9) ++ # define PERL589_OR_LATER ++ #endif ++ #if (PERL_REVISION == 5) && (PERL_VERSION >= 9) ++ # define PERL589_OR_LATER ++ #endif ++ + #ifndef pTHX + # define pTHX void + # define pTHX_ +*************** +*** 109,114 **** +--- 129,138 ---- + # else + # define Perl_sv_catpvn dll_Perl_sv_catpvn + # endif ++ #ifdef PERL589_OR_LATER ++ # define Perl_sv_2iv_flags dll_Perl_sv_2iv_flags ++ # define Perl_newXS_flags dll_Perl_newXS_flags ++ #endif + # define Perl_sv_free dll_Perl_sv_free + # define Perl_sv_isa dll_Perl_sv_isa + # define Perl_sv_magic dll_Perl_sv_magic +*************** +*** 192,197 **** +--- 216,225 ---- + #else + static void (*Perl_sv_catpvn)(pTHX_ SV*, const char*, STRLEN); + #endif ++ #ifdef PERL589_OR_LATER ++ static IV (*Perl_sv_2iv_flags)(pTHX_ SV* sv, I32 flags); ++ static CV * (*Perl_newXS_flags)(pTHX_ const char *name, XSUBADDR_t subaddr, const char *const filename, const char *const proto, U32 flags); ++ #endif + static void (*Perl_sv_free)(pTHX_ SV*); + static int (*Perl_sv_isa)(pTHX_ SV*, const char*); + static void (*Perl_sv_magic)(pTHX_ SV*, SV*, int, const char*, I32); +*************** +*** 266,271 **** +--- 294,303 ---- + {"Perl_sv_2pv_nolen", (PERL_PROC*)&Perl_sv_2pv_nolen}, + #else + {"Perl_sv_2pv", (PERL_PROC*)&Perl_sv_2pv}, ++ #endif ++ #ifdef PERL589_OR_LATER ++ {"Perl_sv_2iv_flags", (PERL_PROC*)&Perl_sv_2iv_flags}, ++ {"Perl_newXS_flags", (PERL_PROC*)&Perl_newXS_flags}, + #endif + {"Perl_sv_bless", (PERL_PROC*)&Perl_sv_bless}, + #if (PERL_REVISION == 5) && (PERL_VERSION >= 8) +*** ../vim-7.1.101/src/version.c Thu Sep 13 15:00:28 2007 +--- src/version.c Thu Sep 13 15:18:36 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 102, + /**/ + +-- +Witches prefer brooms: vacuum-cleaners need extension cords! + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.103 b/7.1.103 new file mode 100644 index 00000000..9c391165 --- /dev/null +++ b/7.1.103 @@ -0,0 +1,57 @@ +To: vim-dev@vim.org +Subject: patch 7.1.103 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.103 +Problem: Using "dw" with the cursor past the end of the last line (using + CTRL-\ CTRL-O from Insert mode) deletes a character. (Tim Chase) +Solution: Don't move the cursor back when the movement failed. +Files: src/normal.c + + +*** ../vim-7.1.102/src/normal.c Tue Aug 14 22:54:00 2007 +--- src/normal.c Tue Sep 11 19:32:42 2007 +*************** +*** 8364,8370 **** + n = fwd_word(cap->count1, cap->arg, cap->oap->op_type != OP_NOP); + + /* Don't leave the cursor on the NUL past a line */ +! if (curwin->w_cursor.col && gchar_cursor() == NUL) + { + --curwin->w_cursor.col; + cap->oap->inclusive = TRUE; +--- 8364,8370 ---- + n = fwd_word(cap->count1, cap->arg, cap->oap->op_type != OP_NOP); + + /* Don't leave the cursor on the NUL past a line */ +! if (n != FAIL && curwin->w_cursor.col > 0 && gchar_cursor() == NUL) + { + --curwin->w_cursor.col; + cap->oap->inclusive = TRUE; +*** ../vim-7.1.102/src/version.c Thu Sep 13 15:19:32 2007 +--- src/version.c Thu Sep 13 15:32:05 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 103, + /**/ + +-- +ARTHUR: Then who is your lord? +WOMAN: We don't have a lord. +ARTHUR: What? +DENNIS: I told you. We're an anarcho-syndicalist commune. We take it in + turns to act as a sort of executive officer for the week. + 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 /// diff --git a/7.1.104 b/7.1.104 new file mode 100644 index 00000000..2c330f89 --- /dev/null +++ b/7.1.104 @@ -0,0 +1,538 @@ +To: vim-dev@vim.org +Subject: patch 7.1.104 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.104 (after 7.1.095) +Problem: When 'lazyredraw' is set a focus event causes redraw to be + postponed until a key is pressed. +Solution: Instead of not returning from vgetc() when a focus event is + encountered return K_IGNORE. Add plain_vgetc() for when the + caller doesn't want to get K_IGNORE. +Files: src/digraph.c, src/edit.c, src/ex_cmds.c, src/ex_getln.c, + src/getchar.c, src/normal.c, src/proto/getchar.pro, src/window.c + + +*** ../vim-7.1.103/src/digraph.c Sat Jul 7 13:57:39 2007 +--- src/digraph.c Thu Sep 13 16:11:54 2007 +*************** +*** 2028,2034 **** + + ++no_mapping; + ++allow_keys; +! c = safe_vgetc(); + --no_mapping; + --allow_keys; + if (c != ESC) /* ESC cancels CTRL-K */ +--- 2028,2034 ---- + + ++no_mapping; + ++allow_keys; +! c = plain_vgetc(); + --no_mapping; + --allow_keys; + if (c != ESC) /* ESC cancels CTRL-K */ +*************** +*** 2050,2056 **** + #endif + ++no_mapping; + ++allow_keys; +! cc = safe_vgetc(); + --no_mapping; + --allow_keys; + if (cc != ESC) /* ESC cancels CTRL-K */ +--- 2050,2056 ---- + #endif + ++no_mapping; + ++allow_keys; +! cc = plain_vgetc(); + --no_mapping; + --allow_keys; + if (cc != ESC) /* ESC cancels CTRL-K */ +*************** +*** 2350,2356 **** + 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"); + } +--- 2350,2356 ---- + if (*curbuf->b_p_keymap == NUL) + { + /* Stop any active keymap and clear the table. Also remove +! * b:keymap_name, as no keymap is active now. */ + keymap_unload(); + do_cmdline_cmd((char_u *)"unlet! b:keymap_name"); + } +*** ../vim-7.1.103/src/edit.c Sun Aug 12 16:38:03 2007 +--- src/edit.c Thu Sep 13 16:17:54 2007 +*************** +*** 788,794 **** + ins_redraw(FALSE); + ++no_mapping; + ++allow_keys; +! c = safe_vgetc(); + --no_mapping; + --allow_keys; + if (c != Ctrl_N && c != Ctrl_G && c != Ctrl_O) +--- 788,794 ---- + ins_redraw(FALSE); + ++no_mapping; + ++allow_keys; +! c = plain_vgetc(); + --no_mapping; + --allow_keys; + if (c != Ctrl_N && c != Ctrl_G && c != Ctrl_O) +*************** +*** 981,987 **** + #ifdef FEAT_NETBEANS_INTG + case K_F21: /* NetBeans command */ + ++no_mapping; /* don't map the next key hits */ +! i = safe_vgetc(); + --no_mapping; + netbeans_keycommand(i); + break; +--- 981,987 ---- + #ifdef FEAT_NETBEANS_INTG + case K_F21: /* NetBeans command */ + ++no_mapping; /* don't map the next key hits */ +! i = plain_vgetc(); + --no_mapping; + netbeans_keycommand(i); + break; +*************** +*** 5224,5233 **** + i = 0; + for (;;) + { +! do +! nc = safe_vgetc(); +! while (nc == K_IGNORE || nc == K_VER_SCROLLBAR +! || nc == K_HOR_SCROLLBAR); + #ifdef FEAT_CMDL_INFO + if (!(State & CMDLINE) + # ifdef FEAT_MBYTE +--- 5224,5230 ---- + i = 0; + for (;;) + { +! nc = plain_vgetc(); + #ifdef FEAT_CMDL_INFO + if (!(State & CMDLINE) + # ifdef FEAT_MBYTE +*************** +*** 7575,7581 **** + * deleted when ESC is hit. + */ + ++no_mapping; +! regname = safe_vgetc(); + #ifdef FEAT_LANGMAP + LANGMAP_ADJUST(regname, TRUE); + #endif +--- 7572,7578 ---- + * deleted when ESC is hit. + */ + ++no_mapping; +! regname = plain_vgetc(); + #ifdef FEAT_LANGMAP + LANGMAP_ADJUST(regname, TRUE); + #endif +*************** +*** 7586,7592 **** + #ifdef FEAT_CMDL_INFO + add_to_showcmd_c(literally); + #endif +! regname = safe_vgetc(); + #ifdef FEAT_LANGMAP + LANGMAP_ADJUST(regname, TRUE); + #endif +--- 7583,7589 ---- + #ifdef FEAT_CMDL_INFO + add_to_showcmd_c(literally); + #endif +! regname = plain_vgetc(); + #ifdef FEAT_LANGMAP + LANGMAP_ADJUST(regname, TRUE); + #endif +*************** +*** 7677,7683 **** + * deleted when ESC is hit. + */ + ++no_mapping; +! c = safe_vgetc(); + --no_mapping; + switch (c) + { +--- 7674,7680 ---- + * deleted when ESC is hit. + */ + ++no_mapping; +! c = plain_vgetc(); + --no_mapping; + switch (c) + { +*************** +*** 9356,9362 **** + * mode message to be deleted when ESC is hit */ + ++no_mapping; + ++allow_keys; +! c = safe_vgetc(); + --no_mapping; + --allow_keys; + if (IS_SPECIAL(c) || mod_mask) /* special key */ +--- 9353,9359 ---- + * mode message to be deleted when ESC is hit */ + ++no_mapping; + ++allow_keys; +! c = plain_vgetc(); + --no_mapping; + --allow_keys; + if (IS_SPECIAL(c) || mod_mask) /* special key */ +*************** +*** 9388,9394 **** + } + ++no_mapping; + ++allow_keys; +! cc = safe_vgetc(); + --no_mapping; + --allow_keys; + if (cc != ESC) +--- 9385,9391 ---- + } + ++no_mapping; + ++allow_keys; +! cc = plain_vgetc(); + --no_mapping; + --allow_keys; + if (cc != ESC) +*** ../vim-7.1.103/src/ex_cmds.c Tue Aug 21 15:28:32 2007 +--- src/ex_cmds.c Thu Sep 13 16:19:40 2007 +*************** +*** 4498,4504 **** + * + * The new text is built up in new_start[]. It has some extra + * room to avoid using alloc()/free() too often. new_start_len is +! * the lenght of the allocated memory at new_start. + * + * Make a copy of the old line, so it won't be taken away when + * updating the screen or handling a multi-line match. The "old_" +--- 4499,4505 ---- + * + * The new text is built up in new_start[]. It has some extra + * room to avoid using alloc()/free() too often. new_start_len is +! * the length of the allocated memory at new_start. + * + * Make a copy of the old line, so it won't be taken away when + * updating the screen or handling a multi-line match. The "old_" +*************** +*** 4669,4675 **** + #endif + ++no_mapping; /* don't map this key */ + ++allow_keys; /* allow special keys */ +! i = safe_vgetc(); + --allow_keys; + --no_mapping; + +--- 4670,4676 ---- + #endif + ++no_mapping; /* don't map this key */ + ++allow_keys; /* allow special keys */ +! i = plain_vgetc(); + --allow_keys; + --no_mapping; + +*** ../vim-7.1.103/src/ex_getln.c Mon Aug 6 22:27:12 2007 +--- src/ex_getln.c Thu Sep 13 16:20:49 2007 +*************** +*** 641,647 **** + { + ++no_mapping; + ++allow_keys; +! c = safe_vgetc(); + --no_mapping; + --allow_keys; + /* CTRL-\ e doesn't work when obtaining an expression. */ +--- 641,647 ---- + { + ++no_mapping; + ++allow_keys; +! c = plain_vgetc(); + --no_mapping; + --allow_keys; + /* CTRL-\ e doesn't work when obtaining an expression. */ +*************** +*** 1091,1101 **** + #endif + putcmdline('"', TRUE); + ++no_mapping; +! i = c = safe_vgetc(); /* CTRL-R */ + if (i == Ctrl_O) + i = Ctrl_R; /* CTRL-R CTRL-O == CTRL-R CTRL-R */ + if (i == Ctrl_R) +! c = safe_vgetc(); /* CTRL-R CTRL-R */ + --no_mapping; + #ifdef FEAT_EVAL + /* +--- 1091,1101 ---- + #endif + putcmdline('"', TRUE); + ++no_mapping; +! i = c = plain_vgetc(); /* CTRL-R */ + if (i == Ctrl_O) + i = Ctrl_R; /* CTRL-R CTRL-O == CTRL-R CTRL-R */ + if (i == Ctrl_R) +! c = plain_vgetc(); /* CTRL-R CTRL-R */ + --no_mapping; + #ifdef FEAT_EVAL + /* +*** ../vim-7.1.103/src/getchar.c Wed Sep 5 21:45:54 2007 +--- src/getchar.c Thu Sep 13 16:16:53 2007 +*************** +*** 1597,1608 **** + } + #endif + #ifdef FEAT_GUI +! /* The caller doesn't need to know that the focus event is delayed +! * until getting a character. */ + if (c == K_FOCUSGAINED || c == K_FOCUSLOST) + { + ui_focus_change(c == K_FOCUSGAINED); +! continue; + } + + /* Translate K_CSI to CSI. The special key is only used to avoid +--- 1597,1609 ---- + } + #endif + #ifdef FEAT_GUI +! /* Handle focus event here, so that the caller doesn't need to +! * know about it. Return K_IGNORE so that we loop once (needed if +! * 'lazyredraw' is set). */ + if (c == K_FOCUSGAINED || c == K_FOCUSLOST) + { + ui_focus_change(c == K_FOCUSGAINED); +! c = K_IGNORE; + } + + /* Translate K_CSI to CSI. The special key is only used to avoid +*************** +*** 1744,1749 **** +--- 1745,1766 ---- + c = vgetc(); + if (c == NUL) + c = get_keystroke(); ++ return c; ++ } ++ ++ /* ++ * Like safe_vgetc(), but loop to handle K_IGNORE. ++ * Also ignore scrollbar events. ++ */ ++ int ++ plain_vgetc() ++ { ++ int c; ++ ++ do ++ { ++ c = safe_vgetc(); ++ } while (c == K_IGNORE || c == K_VER_SCROLLBAR || c == K_HOR_SCROLLBAR); + return c; + } + +*** ../vim-7.1.103/src/normal.c Thu Sep 13 15:33:18 2007 +--- src/normal.c Thu Sep 13 16:24:51 2007 +*************** +*** 696,702 **** + ++allow_keys; /* no mapping for nchar, but keys */ + } + ++no_zero_mapping; /* don't map zero here */ +! c = safe_vgetc(); + #ifdef FEAT_LANGMAP + LANGMAP_ADJUST(c, TRUE); + #endif +--- 696,702 ---- + ++allow_keys; /* no mapping for nchar, but keys */ + } + ++no_zero_mapping; /* don't map zero here */ +! c = plain_vgetc(); + #ifdef FEAT_LANGMAP + LANGMAP_ADJUST(c, TRUE); + #endif +*************** +*** 721,727 **** + ca.count0 = 0; + ++no_mapping; + ++allow_keys; /* no mapping for nchar, but keys */ +! c = safe_vgetc(); /* get next character */ + #ifdef FEAT_LANGMAP + LANGMAP_ADJUST(c, TRUE); + #endif +--- 721,727 ---- + ca.count0 = 0; + ++no_mapping; + ++allow_keys; /* no mapping for nchar, but keys */ +! c = plain_vgetc(); /* get next character */ + #ifdef FEAT_LANGMAP + LANGMAP_ADJUST(c, TRUE); + #endif +*************** +*** 900,906 **** + * For 'g' get the next character now, so that we can check for + * "gr", "g'" and "g`". + */ +! ca.nchar = safe_vgetc(); + #ifdef FEAT_LANGMAP + LANGMAP_ADJUST(ca.nchar, TRUE); + #endif +--- 900,906 ---- + * For 'g' get the next character now, so that we can check for + * "gr", "g'" and "g`". + */ +! ca.nchar = plain_vgetc(); + #ifdef FEAT_LANGMAP + LANGMAP_ADJUST(ca.nchar, TRUE); + #endif +*************** +*** 957,963 **** + im_set_active(TRUE); + #endif + +! *cp = safe_vgetc(); + + if (langmap_active) + { +--- 957,963 ---- + im_set_active(TRUE); + #endif + +! *cp = plain_vgetc(); + + if (langmap_active) + { +*************** +*** 1045,1051 **** + } + if (c > 0) + { +! c = safe_vgetc(); + if (c != Ctrl_N && c != Ctrl_G) + vungetc(c); + else +--- 1045,1051 ---- + } + if (c > 0) + { +! c = plain_vgetc(); + if (c != Ctrl_N && c != Ctrl_G) + vungetc(c); + else +*************** +*** 1064,1070 **** + while (enc_utf8 && lang && (c = vpeekc()) > 0 + && (c >= 0x100 || MB_BYTE2LEN(vpeekc()) > 1)) + { +! c = safe_vgetc(); + if (!utf_iscomposing(c)) + { + vungetc(c); /* it wasn't, put it back */ +--- 1064,1070 ---- + while (enc_utf8 && lang && (c = vpeekc()) > 0 + && (c >= 0x100 || MB_BYTE2LEN(vpeekc()) > 1)) + { +! c = plain_vgetc(); + if (!utf_iscomposing(c)) + { + vungetc(c); /* it wasn't, put it back */ +*************** +*** 4564,4570 **** + #endif + ++no_mapping; + ++allow_keys; /* no mapping for nchar, but allow key codes */ +! nchar = safe_vgetc(); + #ifdef FEAT_LANGMAP + LANGMAP_ADJUST(nchar, TRUE); + #endif +--- 4564,4570 ---- + #endif + ++no_mapping; + ++allow_keys; /* no mapping for nchar, but allow key codes */ +! nchar = plain_vgetc(); + #ifdef FEAT_LANGMAP + LANGMAP_ADJUST(nchar, TRUE); + #endif +*************** +*** 4922,4928 **** + case 'u': /* "zug" and "zuw": undo "zg" and "zw" */ + ++no_mapping; + ++allow_keys; /* no mapping for nchar, but allow key codes */ +! nchar = safe_vgetc(); + #ifdef FEAT_LANGMAP + LANGMAP_ADJUST(nchar, TRUE); + #endif +--- 4922,4928 ---- + case 'u': /* "zug" and "zuw": undo "zg" and "zw" */ + ++no_mapping; + ++allow_keys; /* no mapping for nchar, but allow key codes */ +! nchar = plain_vgetc(); + #ifdef FEAT_LANGMAP + LANGMAP_ADJUST(nchar, TRUE); + #endif +*** ../vim-7.1.103/src/proto/getchar.pro Sun May 6 15:04:24 2007 +--- src/proto/getchar.pro Thu Sep 13 16:13:19 2007 +*************** +*** 38,43 **** +--- 38,44 ---- + void updatescript __ARGS((int c)); + int vgetc __ARGS((void)); + int safe_vgetc __ARGS((void)); ++ int plain_vgetc __ARGS((void)); + int vpeekc __ARGS((void)); + int vpeekc_nomap __ARGS((void)); + int vpeekc_any __ARGS((void)); +*** ../vim-7.1.103/src/window.c Sun Aug 12 16:55:01 2007 +--- src/window.c Thu Sep 13 16:25:01 2007 +*************** +*** 584,590 **** + ++no_mapping; + ++allow_keys; /* no mapping for xchar, but allow key codes */ + if (xchar == NUL) +! xchar = safe_vgetc(); + #ifdef FEAT_LANGMAP + LANGMAP_ADJUST(xchar, TRUE); + #endif +--- 584,590 ---- + ++no_mapping; + ++allow_keys; /* no mapping for xchar, but allow key codes */ + if (xchar == NUL) +! xchar = plain_vgetc(); + #ifdef FEAT_LANGMAP + LANGMAP_ADJUST(xchar, TRUE); + #endif +*** ../vim-7.1.103/src/version.c Thu Sep 13 15:33:18 2007 +--- src/version.c Thu Sep 13 18:22:59 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 104, + /**/ + +-- +ARTHUR: I am your king! +WOMAN: Well, I didn't vote for you. +ARTHUR: You don't vote for kings. +WOMAN: Well, 'ow did you become king then? + 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 /// diff --git a/7.1.105 b/7.1.105 new file mode 100644 index 00000000..34b6aad3 --- /dev/null +++ b/7.1.105 @@ -0,0 +1,86 @@ +To: vim-dev@vim.org +Subject: patch 7.1.105 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.105 +Problem: Internal error when using "0 ? {'a': 1} : {}". (A.Politz) +Solution: When parsing a dictionary value without using the value, don't try + obtaining the key name. +Files: src/eval.c + + +*** ../vim-7.1.104/src/eval.c Thu Sep 6 14:25:50 2007 +--- src/eval.c Thu Sep 13 20:29:31 2007 +*************** +*** 6746,6765 **** + clear_tv(&tvkey); + goto failret; + } +! key = get_tv_string_buf_chk(&tvkey, buf); +! if (key == NULL || *key == NUL) + { +! /* "key" is NULL when get_tv_string_buf_chk() gave an errmsg */ +! if (key != NULL) +! EMSG(_(e_emptykey)); +! clear_tv(&tvkey); +! goto failret; + } + + *arg = skipwhite(*arg + 1); + if (eval1(arg, &tv, evaluate) == FAIL) /* recursive! */ + { +! clear_tv(&tvkey); + goto failret; + } + if (evaluate) +--- 6746,6769 ---- + clear_tv(&tvkey); + goto failret; + } +! if (evaluate) + { +! key = get_tv_string_buf_chk(&tvkey, buf); +! if (key == NULL || *key == NUL) +! { +! /* "key" is NULL when get_tv_string_buf_chk() gave an errmsg */ +! if (key != NULL) +! EMSG(_(e_emptykey)); +! clear_tv(&tvkey); +! goto failret; +! } + } + + *arg = skipwhite(*arg + 1); + if (eval1(arg, &tv, evaluate) == FAIL) /* recursive! */ + { +! if (evaluate) +! clear_tv(&tvkey); + goto failret; + } + if (evaluate) +*** ../vim-7.1.104/src/version.c Thu Sep 13 18:25:08 2007 +--- src/version.c Thu Sep 13 20:36:38 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 105, + /**/ + +-- +DENNIS: Listen -- strange women lying in ponds distributing swords is no + basis for a system of government. Supreme executive power derives + from a mandate from the masses, not from some farcical aquatic + ceremony. + 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 /// diff --git a/7.1.106 b/7.1.106 new file mode 100644 index 00000000..359c54eb --- /dev/null +++ b/7.1.106 @@ -0,0 +1,53 @@ +To: vim-dev@vim.org +Subject: patch 7.1.106 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.106 +Problem: ":messages" doesn't quit listing on ":". +Solution: Break the loop when "got_int" is set. +Files: src/message.c + + +*** ../vim-7.1.105/src/message.c Thu Sep 6 12:53:59 2007 +--- src/message.c Thu Sep 13 21:45:57 2007 +*************** +*** 828,834 **** + _("Messages maintainer: Bram Moolenaar "), + hl_attr(HLF_T)); + +! for (p = first_msg_hist; p != NULL; p = p->next) + if (p->msg != NULL) + msg_attr(p->msg, p->attr); + +--- 828,834 ---- + _("Messages maintainer: Bram Moolenaar "), + hl_attr(HLF_T)); + +! for (p = first_msg_hist; p != NULL && !got_int; p = p->next) + if (p->msg != NULL) + msg_attr(p->msg, p->attr); + +*** ../vim-7.1.105/src/version.c Thu Sep 13 20:39:58 2007 +--- src/version.c Thu Sep 13 21:57:40 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 106, + /**/ + +-- +I'm sure that I asked CBuilder to do a "full" install. Looks like I got +a "fool" install, instead. Charles E Campbell, Jr, PhD + + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.107 b/7.1.107 new file mode 100644 index 00000000..586219d9 --- /dev/null +++ b/7.1.107 @@ -0,0 +1,130 @@ +To: vim-dev@vim.org +Subject: patch 7.1.107 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.107 +Problem: When doing a block selection and using "s" to change the text, + while triggering auto-indenting, causes the wrong text to be + repeated in other lines. (Adri Verhoef) +Solution: Compute the change of indent and compensate for that. +Files: src/ops.c + + +*** ../vim-7.1.106/src/ops.c Thu Jun 28 22:14:28 2007 +--- src/ops.c Thu Aug 30 11:41:10 2007 +*************** +*** 2477,2483 **** + + /* + * Spaces and tabs in the indent may have changed to other spaces and +! * tabs. Get the starting column again and correct the lenght. + * Don't do this when "$" used, end-of-line will have changed. + */ + block_prep(oap, &bd2, oap->start.lnum, TRUE); +--- 2477,2483 ---- + + /* + * Spaces and tabs in the indent may have changed to other spaces and +! * tabs. Get the starting column again and correct the length. + * Don't do this when "$" used, end-of-line will have changed. + */ + block_prep(oap, &bd2, oap->start.lnum, TRUE); +*************** +*** 2534,2540 **** + #ifdef FEAT_VISUALEXTRA + long offset; + linenr_T linenr; +! long ins_len, pre_textlen = 0; + char_u *firstline; + char_u *ins_text, *newp, *oldp; + struct block_def bd; +--- 2534,2542 ---- + #ifdef FEAT_VISUALEXTRA + long offset; + linenr_T linenr; +! long ins_len; +! long pre_textlen = 0; +! long pre_indent = 0; + char_u *firstline; + char_u *ins_text, *newp, *oldp; + struct block_def bd; +*************** +*** 2579,2585 **** + || gchar_cursor() == NUL)) + coladvance_force(getviscol()); + # endif +! pre_textlen = (long)STRLEN(ml_get(oap->start.lnum)); + bd.textcol = curwin->w_cursor.col; + } + #endif +--- 2581,2589 ---- + || gchar_cursor() == NUL)) + coladvance_force(getviscol()); + # endif +! firstline = ml_get(oap->start.lnum); +! pre_textlen = (long)STRLEN(firstline); +! pre_indent = (long)(skipwhite(firstline) - firstline); + bd.textcol = curwin->w_cursor.col; + } + #endif +*************** +*** 2598,2610 **** + */ + if (oap->block_mode && oap->start.lnum != oap->end.lnum) + { + firstline = ml_get(oap->start.lnum); +! /* +! * Subsequent calls to ml_get() flush the firstline data - take a +! * copy of the required bit. +! */ +! if ((ins_len = (long)STRLEN(firstline) - pre_textlen) > 0) + { + if ((ins_text = alloc_check((unsigned)(ins_len + 1))) != NULL) + { + vim_strncpy(ins_text, firstline + bd.textcol, (size_t)ins_len); +--- 2602,2623 ---- + */ + if (oap->block_mode && oap->start.lnum != oap->end.lnum) + { ++ /* Auto-indenting may have changed the indent. If the cursor was past ++ * the indent, exclude that indent change from the inserted text. */ + firstline = ml_get(oap->start.lnum); +! if (bd.textcol > pre_indent) +! { +! long new_indent = (long)(skipwhite(firstline) - firstline); +! +! pre_textlen += new_indent - pre_indent; +! bd.textcol += new_indent - pre_indent; +! } +! +! ins_len = (long)STRLEN(firstline) - pre_textlen; +! if (ins_len > 0) + { ++ /* Subsequent calls to ml_get() flush the firstline data - take a ++ * copy of the inserted text. */ + if ((ins_text = alloc_check((unsigned)(ins_len + 1))) != NULL) + { + vim_strncpy(ins_text, firstline + bd.textcol, (size_t)ins_len); +*** ../vim-7.1.106/src/version.c Thu Sep 13 22:04:30 2007 +--- src/version.c Thu Sep 13 22:38:28 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 107, + /**/ + +-- +Windows +M!uqoms + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.108 b/7.1.108 new file mode 100644 index 00000000..a70620ad --- /dev/null +++ b/7.1.108 @@ -0,0 +1,78 @@ +To: vim-dev@vim.org +Subject: patch 7.1.108 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.108 (after 7.1.100) +Problem: Win32: Compilation problems in Cscope code. (Jeff Lanzarotta) +Solution: Use (long) instead of (intptr_t) when it's not defined. +Files: src/if_cscope.c + + +*** ../vim-7.1.107/src/if_cscope.c Thu Sep 6 17:38:06 2007 +--- src/if_cscope.c Wed Sep 12 20:32:17 2007 +*************** +*** 726,731 **** +--- 726,740 ---- + HANDLE stdin_rd, stdout_rd; + HANDLE stdout_wr, stdin_wr; + BOOL created; ++ # ifdef __BORLANDC__ ++ # define OPEN_OH_ARGTYPE long ++ # else ++ # if (_MSC_VER >= 1300) ++ # define OPEN_OH_ARGTYPE intptr_t ++ # else ++ # define OPEN_OH_ARGTYPE long ++ # endif ++ # endif + #endif + + #if defined(UNIX) +*************** +*** 909,918 **** + CloseHandle(pi.hThread); + + /* TODO - tidy up after failure to create files on pipe handles. */ +! if (((fd = _open_osfhandle((intptr_t)stdin_wr, _O_TEXT|_O_APPEND)) < 0) + || ((csinfo[i].to_fp = _fdopen(fd, "w")) == NULL)) + PERROR(_("cs_create_connection: fdopen for to_fp failed")); +! if (((fd = _open_osfhandle((intptr_t)stdout_rd, _O_TEXT|_O_RDONLY)) < 0) + || ((csinfo[i].fr_fp = _fdopen(fd, "r")) == NULL)) + PERROR(_("cs_create_connection: fdopen for fr_fp failed")); + +--- 918,929 ---- + CloseHandle(pi.hThread); + + /* TODO - tidy up after failure to create files on pipe handles. */ +! if (((fd = _open_osfhandle((OPEN_OH_ARGTYPE)stdin_wr, +! _O_TEXT|_O_APPEND)) < 0) + || ((csinfo[i].to_fp = _fdopen(fd, "w")) == NULL)) + PERROR(_("cs_create_connection: fdopen for to_fp failed")); +! if (((fd = _open_osfhandle((OPEN_OH_ARGTYPE)stdout_rd, +! _O_TEXT|_O_RDONLY)) < 0) + || ((csinfo[i].fr_fp = _fdopen(fd, "r")) == NULL)) + PERROR(_("cs_create_connection: fdopen for fr_fp failed")); + +*** ../vim-7.1.107/src/version.c Thu Sep 13 22:40:47 2007 +--- src/version.c Fri Sep 14 19:55:12 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 108, + /**/ + +-- +Q: How many hardware engineers does it take to change a lightbulb? +A: None. We'll fix it in software. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.109 b/7.1.109 new file mode 100644 index 00000000..22367e93 --- /dev/null +++ b/7.1.109 @@ -0,0 +1,69 @@ +To: vim-dev@vim.org +Subject: patch 7.1.109 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.109 +Problem: GTK: when there are many tab pages, clicking on the arrow left of + the labels moves to the next tab page on the right. (Simeon Bird) +Solution: Check the X coordinate of the click and pass -1 as value for the + left arrow. +Files: src/gui_gtk_x11.c, src/term.c + + +*** ../vim-7.1.108/src/gui_gtk_x11.c Wed Sep 5 21:45:54 2007 +--- src/gui_gtk_x11.c Fri Sep 14 20:59:55 2007 +*************** +*** 3223,3230 **** + { + if (clicked_page == 0) + { +! /* Click after all tabs moves to next tab page. */ +! if (send_tabline_event(0) && gtk_main_level() > 0) + gtk_main_quit(); + } + #ifndef HAVE_GTK2 +--- 3223,3231 ---- + { + if (clicked_page == 0) + { +! /* Click after all tabs moves to next tab page. When "x" is +! * small guess it's the left button. */ +! if (send_tabline_event(x < 50 ? -1 : 0) && gtk_main_level() > 0) + gtk_main_quit(); + } + #ifndef HAVE_GTK2 +*** ../vim-7.1.108/src/term.c Thu May 10 20:48:32 2007 +--- src/term.c Fri Sep 14 20:56:40 2007 +*************** +*** 4809,4814 **** +--- 4809,4816 ---- + if (num_bytes == -1) + return -1; + current_tab = (int)bytes[0]; ++ if (current_tab == 255) /* -1 in a byte gives 255 */ ++ current_tab = -1; + slen += num_bytes; + } + else if (key_name[0] == (int)KS_TABMENU) +*** ../vim-7.1.108/src/version.c Fri Sep 14 19:56:18 2007 +--- src/version.c Sat Sep 15 14:05:25 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 109, + /**/ + +-- +No letters of the alphabet were harmed in the creation of this message. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.110 b/7.1.110 new file mode 100644 index 00000000..e8ff715c --- /dev/null +++ b/7.1.110 @@ -0,0 +1,66 @@ +To: vim-dev@vim.org +Subject: patch 7.1.110 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.110 (after 7.1.102) +Problem: Win32: Still compilation problems with Perl. +Solution: Change the #ifdefs. (Suresh Govindachar) +Files: src/if_perl.xs + + +*** ../vim-7.1.109/src/if_perl.xs Thu Sep 13 15:19:32 2007 +--- src/if_perl.xs Fri Sep 14 21:23:38 2007 +*************** +*** 48,60 **** + * The changes include addition of two symbols (Perl_sv_2iv_flags, + * Perl_newXS_flags) not present in earlier releases. + * +! * Jan Dubois suggested the following guarding scheme: + */ +! #if (ACTIVEPERL_VERSION >= 822) +! # define PERL589_OR_LATER +! #endif +! #if (PERL_REVISION == 5) && (PERL_VERSION == 8) && (PERL_SUBVERSION >= 9) +! # define PERL589_OR_LATER + #endif + #if (PERL_REVISION == 5) && (PERL_VERSION >= 9) + # define PERL589_OR_LATER +--- 48,62 ---- + * The changes include addition of two symbols (Perl_sv_2iv_flags, + * Perl_newXS_flags) not present in earlier releases. + * +! * Jan Dubois suggested the following guarding scheme. +! * +! * Active State defined ACTIVEPERL_VERSION as a string in versions before +! * 5.8.8; and so the comparison to 822 below needs to be guarded. + */ +! #if (PERL_REVISION == 5) && (PERL_VERSION == 8) && (PERL_SUBVERSION >= 8) +! # if (ACTIVEPERL_VERSION >= 822) || (PERL_SUBVERSION >= 9) +! # define PERL589_OR_LATER +! # endif + #endif + #if (PERL_REVISION == 5) && (PERL_VERSION >= 9) + # define PERL589_OR_LATER +*** ../vim-7.1.109/src/version.c Sat Sep 15 14:06:41 2007 +--- src/version.c Sat Sep 15 14:48:05 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 110, + /**/ + +-- +"It's so simple to be wise. Just think of something stupid to say +and then don't say it." -- Sam Levenson + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.111 b/7.1.111 new file mode 100644 index 00000000..e2b89921 --- /dev/null +++ b/7.1.111 @@ -0,0 +1,105 @@ +To: vim-dev@vim.org +Subject: patch 7.1.111 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.111 +Problem: When using ":vimgrep" with the "j" flag folds from another buffer + may be displayed. (A.Politz) +Solution: When not jumping to another buffer update the folds. +Files: src/quickfix.c + + +*** ../vim-7.1.110/src/quickfix.c Thu Jun 28 21:23:52 2007 +--- src/quickfix.c Fri Sep 14 22:16:23 2007 +*************** +*** 1612,1619 **** + } + + /* +! * If there is only one window and is the quickfix window, create a new +! * one above the quickfix window. + */ + if (((firstwin == lastwin) && bt_quickfix(curbuf)) || !usable_win) + { +--- 1612,1619 ---- + } + + /* +! * If there is only one window and it is the quickfix window, create a +! * new one above the quickfix window. + */ + if (((firstwin == lastwin) && bt_quickfix(curbuf)) || !usable_win) + { +*************** +*** 2981,2986 **** +--- 2981,2987 ---- + buf_T *buf; + int duplicate_name = FALSE; + int using_dummy; ++ int redraw_for_dummy = FALSE; + int found_match; + buf_T *first_match_buf = NULL; + time_t seconds = 0; +*************** +*** 3097,3102 **** +--- 3098,3104 ---- + /* Remember that a buffer with this name already exists. */ + duplicate_name = (buf != NULL); + using_dummy = TRUE; ++ redraw_for_dummy = TRUE; + + #if defined(FEAT_AUTOCMD) && defined(FEAT_SYN_HL) + /* Don't do Filetype autocommands to avoid loading syntax and +*************** +*** 3243,3252 **** +--- 3245,3272 ---- + if (qi->qf_lists[qi->qf_curlist].qf_count > 0) + { + if ((flags & VGR_NOJUMP) == 0) ++ { ++ buf = curbuf; + qf_jump(qi, 0, 0, eap->forceit); ++ if (buf != curbuf) ++ /* If we jumped to another buffer redrawing will already be ++ * taken care of. */ ++ redraw_for_dummy = FALSE; ++ } + } + else + EMSG2(_(e_nomatch2), s); ++ ++ /* If we loaded a dummy buffer into the current window, the autocommands ++ * may have messed up things, need to redraw and recompute folds. */ ++ if (redraw_for_dummy) ++ { ++ #ifdef FEAT_FOLDING ++ foldUpdateAll(curwin); ++ #else ++ redraw_later(NOT_VALID); ++ #endif ++ } + + theend: + vim_free(regmatch.regprog); +*** ../vim-7.1.110/src/version.c Sat Sep 15 14:48:57 2007 +--- src/version.c Sun Sep 16 13:23:48 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 111, + /**/ + +-- +Trees moving back and forth is what makes the wind blow. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.112 b/7.1.112 new file mode 100644 index 00000000..24f192b2 --- /dev/null +++ b/7.1.112 @@ -0,0 +1,64 @@ +To: vim-dev@vim.org +Subject: patch 7.1.112 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.112 +Problem: Using input() with a wrong argument may crash Vim. (A.Politz) +Solution: Init the input() return value to NULL. +Files: src/eval.c + + +*** ../vim-7.1.111/src/eval.c Thu Sep 13 20:39:58 2007 +--- src/eval.c Sat Sep 15 19:04:51 2007 +*************** +*** 11565,11578 **** + char_u *xp_arg = NULL; + + rettv->v_type = VAR_STRING; + + #ifdef NO_CONSOLE_INPUT + /* While starting up, there is no place to enter text. */ + if (no_console_input()) +- { +- rettv->vval.v_string = NULL; + return; +- } + #endif + + cmd_silent = FALSE; /* Want to see the prompt. */ +--- 11566,11577 ---- + char_u *xp_arg = NULL; + + rettv->v_type = VAR_STRING; ++ rettv->vval.v_string = NULL; + + #ifdef NO_CONSOLE_INPUT + /* While starting up, there is no place to enter text. */ + if (no_console_input()) + return; + #endif + + cmd_silent = FALSE; /* Want to see the prompt. */ +*** ../vim-7.1.111/src/version.c Sun Sep 16 13:26:56 2007 +--- src/version.c Sun Sep 16 14:19:04 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 112, + /**/ + +-- +The early bird gets the worm. If you want something else for +breakfast, get up later. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.113 b/7.1.113 new file mode 100644 index 00000000..5eed3067 --- /dev/null +++ b/7.1.113 @@ -0,0 +1,114 @@ +To: vim-dev@vim.org +Subject: patch 7.1.113 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.113 +Problem: Using map() to go over an empty list causes memory to be freed + twice. (A.Politz) +Solution: Don't clear the typeval in restore_vimvar(). +Files: src/eval.c + + +*** ../vim-7.1.112/src/eval.c Sun Sep 16 14:20:18 2007 +--- src/eval.c Sun Sep 16 19:24:49 2007 +*************** +*** 1318,1324 **** + { + hashitem_T *hi; + +- clear_tv(&vimvars[idx].vv_tv); + vimvars[idx].vv_tv = *save_tv; + if (vimvars[idx].vv_type == VAR_UNKNOWN) + { +--- 1318,1323 ---- +*************** +*** 1362,1368 **** + + if (p_verbose == 0) + --emsg_off; +- vimvars[VV_VAL].vv_str = NULL; + restore_vimvar(VV_VAL, &save_val); + + return list; +--- 1361,1366 ---- +*************** +*** 9387,9401 **** + { + typval_T rettv; + char_u *s; + + copy_tv(tv, &vimvars[VV_VAL].vv_tv); + s = expr; + if (eval1(&s, &rettv, TRUE) == FAIL) +! return FAIL; + if (*s != NUL) /* check for trailing chars after expr */ + { + EMSG2(_(e_invexpr2), s); +! return FAIL; + } + if (map) + { +--- 9386,9401 ---- + { + typval_T rettv; + char_u *s; ++ int retval = FAIL; + + copy_tv(tv, &vimvars[VV_VAL].vv_tv); + s = expr; + if (eval1(&s, &rettv, TRUE) == FAIL) +! goto theend; + if (*s != NUL) /* check for trailing chars after expr */ + { + EMSG2(_(e_invexpr2), s); +! goto theend; + } + if (map) + { +*************** +*** 9414,9423 **** + /* On type error, nothing has been removed; return FAIL to stop the + * loop. The error message was given by get_tv_number_chk(). */ + if (error) +! return FAIL; + } + clear_tv(&vimvars[VV_VAL].vv_tv); +! return OK; + } + + /* +--- 9414,9425 ---- + /* On type error, nothing has been removed; return FAIL to stop the + * loop. The error message was given by get_tv_number_chk(). */ + if (error) +! goto theend; + } ++ retval = OK; ++ theend: + clear_tv(&vimvars[VV_VAL].vv_tv); +! return retval; + } + + /* +*** ../vim-7.1.112/src/version.c Sun Sep 16 14:20:18 2007 +--- src/version.c Mon Sep 17 21:33:52 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 113, + /**/ + +-- +Mental Floss prevents moral decay! + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.114 b/7.1.114 new file mode 100644 index 00000000..fe7c5a73 --- /dev/null +++ b/7.1.114 @@ -0,0 +1,44 @@ +To: vim-dev@vim.org +Subject: patch 7.1.114 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.114 +Problem: Memory leak in getmatches(). +Solution: Don't increment the refcount twice. +Files: src/eval.c + + +*** ../vim-7.1.113/src/eval.c Mon Sep 17 21:37:09 2007 +--- src/eval.c Sun Sep 16 19:24:49 2007 +*************** +*** 10351,10357 **** + dict = dict_alloc(); + if (dict == NULL) + return; +- ++dict->dv_refcount; + dict_add_nr_str(dict, "group", 0L, syn_id2name(cur->hlg_id)); + dict_add_nr_str(dict, "pattern", 0L, cur->pattern); + dict_add_nr_str(dict, "priority", (long)cur->priority, NULL); +--- 10355,10360 ---- +*** ../vim-7.1.113/src/version.c Mon Sep 17 21:37:09 2007 +--- src/version.c Mon Sep 17 21:54:08 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 114, + /**/ + +-- +Be nice to your kids... they'll be the ones choosing your nursing home. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.115 b/7.1.115 new file mode 100644 index 00000000..ec960241 --- /dev/null +++ b/7.1.115 @@ -0,0 +1,51 @@ +To: vim-dev@vim.org +Subject: patch 7.1.115 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.115 (after 7.1.105) +Problem: Compiler warning for uninitialized variable. (Tony Mechelynck) +Solution: Init variable to NULL. +Files: src/eval.c + + +*** ../vim-7.1.114/src/eval.c Mon Sep 17 21:55:02 2007 +--- src/eval.c Sun Sep 16 19:24:49 2007 +*************** +*** 6704,6710 **** + dict_T *d = NULL; + typval_T tvkey; + typval_T tv; +! char_u *key; + dictitem_T *item; + char_u *start = skipwhite(*arg + 1); + char_u buf[NUMBUFLEN]; +--- 6705,6711 ---- + dict_T *d = NULL; + typval_T tvkey; + typval_T tv; +! char_u *key = NULL; + dictitem_T *item; + char_u *start = skipwhite(*arg + 1); + char_u buf[NUMBUFLEN]; +*** ../vim-7.1.114/src/version.c Mon Sep 17 21:55:02 2007 +--- src/version.c Mon Sep 17 22:18:42 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 115, + /**/ + +-- +Proofread carefully to see if you any words out. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.116 b/7.1.116 new file mode 100644 index 00000000..f7310db9 --- /dev/null +++ b/7.1.116 @@ -0,0 +1,119 @@ +To: vim-dev@vim.org +Subject: patch 7.1.116 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.116 +Problem: Cannot display Unicode characters above 0x10000. +Solution: Remove the replacement with a question mark when UNICODE16 is not + defined. (partly by Nicolas Weber) +Files: src/screen.c + + +*** ../vim-7.1.115/src/screen.c Thu Aug 30 13:51:52 2007 +--- src/screen.c Mon Sep 10 22:29:42 2007 +*************** +*** 2305,2313 **** +--- 2305,2315 ---- + prev_c = u8c; + #endif + /* Non-BMP character: display as ? or fullwidth ?. */ ++ #ifdef UNICODE16 + if (u8c >= 0x10000) + ScreenLinesUC[idx] = (cells == 2) ? 0xff1f : (int)'?'; + else ++ #endif + ScreenLinesUC[idx] = u8c; + for (i = 0; i < Screen_mco; ++i) + { +*************** +*** 3678,3690 **** + if ((mb_l == 1 && c >= 0x80) + || (mb_l >= 1 && mb_c == 0) + || (mb_l > 1 && (!vim_isprintc(mb_c) +! || mb_c >= 0x10000))) + { + /* + * Illegal UTF-8 byte: display as . + * Non-BMP character : display as ? or fullwidth ?. + */ + if (mb_c < 0x10000) + { + transchar_hex(extra, mb_c); + # ifdef FEAT_RIGHTLEFT +--- 3680,3697 ---- + if ((mb_l == 1 && c >= 0x80) + || (mb_l >= 1 && mb_c == 0) + || (mb_l > 1 && (!vim_isprintc(mb_c) +! # ifdef UNICODE16 +! || mb_c >= 0x10000 +! # endif +! ))) + { + /* + * Illegal UTF-8 byte: display as . + * Non-BMP character : display as ? or fullwidth ?. + */ ++ # ifdef UNICODE16 + if (mb_c < 0x10000) ++ # endif + { + transchar_hex(extra, mb_c); + # ifdef FEAT_RIGHTLEFT +*************** +*** 3692,3702 **** +--- 3699,3711 ---- + rl_mirror(extra); + # endif + } ++ # ifdef UNICODE16 + else if (utf_char2cells(mb_c) != 2) + STRCPY(extra, "?"); + else + /* 0xff1f in UTF-8: full-width '?' */ + STRCPY(extra, "\357\274\237"); ++ # endif + + p_extra = extra; + c = *p_extra; +*************** +*** 6245,6250 **** +--- 6254,6260 ---- + else + u8c = utfc_ptr2char(ptr, u8cc); + mbyte_cells = utf_char2cells(u8c); ++ # ifdef UNICODE16 + /* Non-BMP character: display as ? or fullwidth ?. */ + if (u8c >= 0x10000) + { +*************** +*** 6252,6257 **** +--- 6262,6268 ---- + if (attr == 0) + attr = hl_attr(HLF_8); + } ++ # endif + # ifdef FEAT_ARABIC + if (p_arshape && !p_tbidi && ARABIC_CHAR(u8c)) + { +*** ../vim-7.1.116/src/version.c Mon Sep 17 22:19:43 2007 +--- src/version.c Mon Sep 17 22:37:31 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 116, + /**/ + +-- +There can't be a crisis today, my schedule is already full. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.117 b/7.1.117 new file mode 100644 index 00000000..dcb291b5 --- /dev/null +++ b/7.1.117 @@ -0,0 +1,49 @@ +To: vim-dev@vim.org +Subject: patch 7.1.117 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.117 +Problem: Can't check wether Vim was compiled with Gnome. (Tony Mechelynck) +Solution: Add gui_gnome to the has() list. +Files: src/eval.c + + +*** ../vim-7.1.116/src/eval.c Mon Sep 17 22:19:43 2007 +--- src/eval.c Sun Sep 16 19:24:49 2007 +*************** +*** 10879,10884 **** +--- 10883,10891 ---- + "gui_gtk2", + # endif + #endif ++ #ifdef FEAT_GUI_GNOME ++ "gui_gnome", ++ #endif + #ifdef FEAT_GUI_MAC + "gui_mac", + #endif +*** ../vim-7.1.116/src/version.c Mon Sep 17 22:38:49 2007 +--- src/version.c Tue Sep 25 12:48:59 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 117, + /**/ + +-- +ARTHUR: No, hang on! Just answer the five questions ... +GALAHAD: Three questions ... +ARTHUR: Three questions ... And we shall watch ... and pray. + "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 /// diff --git a/7.1.118 b/7.1.118 new file mode 100644 index 00000000..2b08815b --- /dev/null +++ b/7.1.118 @@ -0,0 +1,53 @@ +To: vim-dev@vim.org +Subject: patch 7.1.118 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.118 (after 7.1.107) +Problem: Compiler warning for Visual C compiler. +Solution: Add typecast. (Mike Williams) +Files: src/ops.c + + +*** ../vim-7.1.117/src/ops.c Thu Sep 13 22:40:47 2007 +--- src/ops.c Mon Sep 24 18:30:09 2007 +*************** +*** 2605,2611 **** + /* Auto-indenting may have changed the indent. If the cursor was past + * the indent, exclude that indent change from the inserted text. */ + firstline = ml_get(oap->start.lnum); +! if (bd.textcol > pre_indent) + { + long new_indent = (long)(skipwhite(firstline) - firstline); + +--- 2605,2611 ---- + /* Auto-indenting may have changed the indent. If the cursor was past + * the indent, exclude that indent change from the inserted text. */ + firstline = ml_get(oap->start.lnum); +! if (bd.textcol > (colnr_T)pre_indent) + { + long new_indent = (long)(skipwhite(firstline) - firstline); + +*** ../vim-7.1.117/src/version.c Tue Sep 25 12:50:00 2007 +--- src/version.c Tue Sep 25 14:18:37 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 118, + /**/ + +-- +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 /// diff --git a/7.1.119 b/7.1.119 new file mode 100644 index 00000000..20159fc8 --- /dev/null +++ b/7.1.119 @@ -0,0 +1,59 @@ +To: vim-dev@vim.org +Subject: patch 7.1.119 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.119 +Problem: Crash when 'cmdheight' set to very large value. (A.Politz) +Solution: Limit 'cmdheight' to 'lines' minus one. Store right value of + 'cmdheight' when running out of room. +Files: src/option.c, src/window.c + + +*** ../vim-7.1.118/src/option.c Thu Sep 6 16:33:47 2007 +--- src/option.c Tue Sep 25 12:17:35 2007 +*************** +*** 7824,7829 **** +--- 7824,7831 ---- + errmsg = e_positive; + p_ch = 1; + } ++ if (p_ch > Rows - min_rows() + 1) ++ p_ch = Rows - min_rows() + 1; + + /* Only compute the new window layout when startup has been + * completed. Otherwise the frame sizes may be wrong. */ +*** ../vim-7.1.118/src/window.c Thu Sep 13 18:25:08 2007 +--- src/window.c Tue Sep 25 12:13:56 2007 +*************** +*** 5523,5528 **** +--- 5523,5529 ---- + { + EMSG(_(e_noroom)); + p_ch = old_p_ch; ++ curtab->tp_ch_used = p_ch; + cmdline_row = Rows - p_ch; + break; + } +*** ../vim-7.1.118/src/version.c Tue Sep 25 14:19:35 2007 +--- src/version.c Tue Sep 25 14:48:14 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 119, + /**/ + +-- +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 /// diff --git a/7.1.120 b/7.1.120 new file mode 100644 index 00000000..e2ff367e --- /dev/null +++ b/7.1.120 @@ -0,0 +1,558 @@ +To: vim-dev@vim.org +Subject: patch 7.1.120 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.120 +Problem: Can't properly check memory leaks while running tests. +Solution: Add an argument to garbagecollect(). Delete functions and + variables in the test scripts. +Files: runtime/doc/eval.txt, src/eval.c, src/globals.h, src/main.c, + src/testdir/Makefile, src/testdir/test14.in, + src/testdir/test26.in, src/testdir/test34.in, + src/testdir/test45.in, src/testdir/test47.in, + src/testdir/test49.in, src/testdir/test55.in, + src/testdir/test56.in, src/testdir/test58.in, + src/testdir/test59.in, src/testdir/test60.in, + src/testdir/test60.vim, src/testdir/test62.in, + src/testdir/test63.in, src/testdir/test64.in + + +*** ../vim-7.1.119/runtime/doc/eval.txt Thu Jul 26 22:55:11 2007 +--- runtime/doc/eval.txt Tue Sep 25 17:40:30 2007 +*************** +*** 1,4 **** +! *eval.txt* For Vim version 7.1. Last change: 2007 Jul 25 + + + VIM REFERENCE MANUAL by Bram Moolenaar +--- 1,4 ---- +! *eval.txt* For Vim version 7.1. Last change: 2007 Sep 25 + + + VIM REFERENCE MANUAL by Bram Moolenaar +*************** +*** 1603,1609 **** + foldtextresult( {lnum}) String text for closed fold at {lnum} + foreground( ) Number bring the Vim window to the foreground + function( {name}) Funcref reference to function {name} +! garbagecollect() none free memory, breaking cyclic references + get( {list}, {idx} [, {def}]) any get item {idx} from {list} or {def} + get( {dict}, {key} [, {def}]) any get item {key} from {dict} or {def} + getbufline( {expr}, {lnum} [, {end}]) +--- 1603,1609 ---- + foldtextresult( {lnum}) String text for closed fold at {lnum} + foreground( ) Number bring the Vim window to the foreground + function( {name}) Funcref reference to function {name} +! garbagecollect( [at_exit]) none free memory, breaking cyclic references + get( {list}, {idx} [, {def}]) any get item {idx} from {list} or {def} + get( {dict}, {key} [, {def}]) any get item {key} from {dict} or {def} + getbufline( {expr}, {lnum} [, {end}]) +*************** +*** 2673,2679 **** + {name} can be a user defined function or an internal function. + + +! garbagecollect() *garbagecollect()* + Cleanup unused |Lists| and |Dictionaries| that have circular + references. There is hardly ever a need to invoke this + function, as it is automatically done when Vim runs out of +--- 2673,2679 ---- + {name} can be a user defined function or an internal function. + + +! garbagecollect([at_exit]) *garbagecollect()* + Cleanup unused |Lists| and |Dictionaries| that have circular + references. There is hardly ever a need to invoke this + function, as it is automatically done when Vim runs out of +*************** +*** 2683,2688 **** +--- 2683,2691 ---- + This is useful if you have deleted a very big |List| and/or + |Dictionary| with circular references in a script that runs + for a long time. ++ When the optional "at_exit" argument is one, garbage ++ collection will also be done when exiting Vim, if it wasn't ++ done before. This is useful when checking for memory leaks. + + get({list}, {idx} [, {default}]) *get()* + Get item {idx} from |List| {list}. When this item is not +*** ../vim-7.1.119/src/eval.c Tue Sep 25 12:50:00 2007 +--- src/eval.c Sun Sep 16 19:24:49 2007 +*************** +*** 6128,6133 **** +--- 6128,6134 ---- + /* Only do this once. */ + want_garbage_collect = FALSE; + may_garbage_collect = FALSE; ++ garbage_collect_at_exit = FALSE; + + /* + * 1. Go through all accessible variables and mark all lists and dicts +*************** +*** 7110,7116 **** + {"foldtextresult", 1, 1, f_foldtextresult}, + {"foreground", 0, 0, f_foreground}, + {"function", 1, 1, f_function}, +! {"garbagecollect", 0, 0, f_garbagecollect}, + {"get", 2, 3, f_get}, + {"getbufline", 2, 3, f_getbufline}, + {"getbufvar", 2, 2, f_getbufvar}, +--- 7111,7117 ---- + {"foldtextresult", 1, 1, f_foldtextresult}, + {"foreground", 0, 0, f_foreground}, + {"function", 1, 1, f_function}, +! {"garbagecollect", 0, 1, f_garbagecollect}, + {"get", 2, 3, f_get}, + {"getbufline", 2, 3, f_getbufline}, + {"getbufvar", 2, 2, f_getbufvar}, +*************** +*** 9719,9724 **** +--- 9720,9728 ---- + /* This is postponed until we are back at the toplevel, because we may be + * using Lists and Dicts internally. E.g.: ":echo [garbagecollect()]". */ + want_garbage_collect = TRUE; ++ ++ if (argvars[0].v_type != VAR_UNKNOWN && get_tv_number(&argvars[0]) == 1) ++ garbage_collect_at_exit = TRUE; + } + + /* +*** ../vim-7.1.119/src/globals.h Thu Aug 30 13:51:52 2007 +--- src/globals.h Sun Sep 16 18:42:41 2007 +*************** +*** 301,313 **** + #endif + + #ifdef FEAT_EVAL +! /* Garbage collection can only take place when we are sure there are no Lists + * or Dictionaries being used internally. This is flagged with + * "may_garbage_collect" when we are at the toplevel. + * "want_garbage_collect" is set by the garbagecollect() function, which means +! * we do garbage collection before waiting for a char at the toplevel. */ + EXTERN int may_garbage_collect INIT(= FALSE); + EXTERN int want_garbage_collect INIT(= FALSE); + + /* ID of script being sourced or was sourced to define the current function. */ + EXTERN scid_T current_SID INIT(= 0); +--- 301,317 ---- + #endif + + #ifdef FEAT_EVAL +! /* +! * Garbage collection can only take place when we are sure there are no Lists + * or Dictionaries being used internally. This is flagged with + * "may_garbage_collect" when we are at the toplevel. + * "want_garbage_collect" is set by the garbagecollect() function, which means +! * we do garbage collection before waiting for a char at the toplevel. +! * "garbage_collect_at_exit" indicates garbagecollect(1) was called. +! */ + EXTERN int may_garbage_collect INIT(= FALSE); + EXTERN int want_garbage_collect INIT(= FALSE); ++ EXTERN int garbage_collect_at_exit INIT(= FALSE); + + /* ID of script being sourced or was sourced to define the current function. */ + EXTERN scid_T current_SID INIT(= 0); +*** ../vim-7.1.119/src/main.c Thu Sep 6 17:38:06 2007 +--- src/main.c Sun Sep 16 18:44:54 2007 +*************** +*** 1334,1339 **** +--- 1334,1343 ---- + #ifdef FEAT_CSCOPE + cs_end(); + #endif ++ #ifdef FEAT_EVAL ++ if (garbage_collect_at_exit) ++ garbage_collect(); ++ #endif + + mch_exit(exitval); + } +*** ../vim-7.1.119/src/testdir/Makefile Tue Aug 14 17:28:14 2007 +--- src/testdir/Makefile Mon Sep 17 20:04:13 2007 +*************** +*** 6,12 **** + + # Uncomment this line for using valgrind. + # The output goes into a file "valgrind.$PID" (sorry, no test number). +! # VALGRIND = valgrind --tool=memcheck --num-callers=15 --logfile=valgrind + + SCRIPTS = test1.out test2.out test3.out test4.out test5.out test6.out \ + test7.out test8.out test9.out test10.out test11.out \ +--- 6,12 ---- + + # Uncomment this line for using valgrind. + # The output goes into a file "valgrind.$PID" (sorry, no test number). +! # VALGRIND = valgrind --tool=memcheck --leak-check=yes --num-callers=15 --logfile=valgrind + + SCRIPTS = test1.out test2.out test3.out test4.out test5.out test6.out \ + test7.out test8.out test9.out test10.out test11.out \ +*************** +*** 39,45 **** + $(SCRIPTS) $(SCRIPTS_GUI): $(VIMPROG) + + clean: +! -rm -rf *.out *.failed *.rej *.orig test.log tiny.vim small.vim mbyte.vim test.ok X* viminfo + + test1.out: test1.in + -rm -f $*.failed tiny.vim small.vim mbyte.vim test.ok X* viminfo +--- 39,45 ---- + $(SCRIPTS) $(SCRIPTS_GUI): $(VIMPROG) + + clean: +! -rm -rf *.out *.failed *.rej *.orig test.log tiny.vim small.vim mbyte.vim test.ok X* valgrind.pid* viminfo + + test1.out: test1.in + -rm -f $*.failed tiny.vim small.vim mbyte.vim test.ok X* viminfo +*************** +*** 65,70 **** +--- 65,74 ---- + else echo $* NO OUTPUT >>test.log; \ + fi" + -rm -rf X* test.ok viminfo ++ ++ test49.out: test49.vim ++ ++ test60.out: test60.vim + + nolog: + -echo Test results: >test.log +*** ../vim-7.1.119/src/testdir/test14.in Sun Jun 13 20:24:08 2004 +--- src/testdir/test14.in Sun Sep 16 15:57:54 2007 +*************** +*** 18,23 **** +--- 18,24 ---- + : let tt = "o\65\x42\o103 \33a\xfg\o78\" + :endif + :exe "normal " . tt ++ :unlet tt + :.w >>test.out + :set vb + /^Piece +*** ../vim-7.1.119/src/testdir/test26.in Sun Jun 13 17:05:48 2004 +--- src/testdir/test26.in Sun Sep 16 16:54:19 2007 +*************** +*** 37,42 **** +--- 37,43 ---- + : endif + : endif + :endwhile ++ :unlet i j + :'t,$w! test.out + :qa! + ENDTEST +*** ../vim-7.1.119/src/testdir/test34.in Sun Apr 30 20:46:14 2006 +--- src/testdir/test34.in Sun Sep 16 21:25:47 2007 +*************** +*** 52,58 **** + ---*--- + (one + (two +! [(one again:$-5,$wq! test.out + ENDTEST + + here +--- 52,66 ---- + ---*--- + (one + (two +! [(one again:$-5,$w! test.out +! :delfunc Table +! :delfunc Compute +! :delfunc Expr1 +! :delfunc Expr2 +! :delfunc ListItem +! :delfunc ListReset +! :unlet retval counter +! :q! + ENDTEST + + here +*** ../vim-7.1.119/src/testdir/test45.in Sun Jun 13 19:57:02 2004 +--- src/testdir/test45.in Sun Sep 16 18:27:20 2007 +*************** +*** 55,60 **** +--- 55,61 ---- + /kk$ + :call append("$", foldlevel(".")) + :/^last/+1,$w! test.out ++ :delfun Flvl + :qa! + ENDTEST + +*** ../vim-7.1.119/src/testdir/test47.in Sun Jun 13 18:40:29 2004 +--- src/testdir/test47.in Sun Sep 16 18:32:03 2007 +*************** +*** 34,39 **** +--- 34,40 ---- + :call append("$", two) + :call append("$", three) + :$-2,$w! test.out ++ :unlet one two three + :qa! + ENDTEST + +*** ../vim-7.1.119/src/testdir/test49.in Sun Jun 13 18:10:00 2004 +--- src/testdir/test49.in Sun Sep 16 23:30:35 2007 +*************** +*** 1,13 **** + This is a test of the script language. + + If after adding a new test, the test output doesn't appear properly in +! test49.failed, try to add one ore more "G"s at the line before ENDTEST. + + STARTTEST + :so small.vim + :se nocp nomore viminfo+=nviminfo + :so test49.vim +! GGGGGGGGGG"rp:.-,$wq! test.out + ENDTEST + + Results of test49.vim: +--- 1,29 ---- + This is a test of the script language. + + If after adding a new test, the test output doesn't appear properly in +! test49.failed, try to add one ore more "G"s at the line ending in "test.out" + + STARTTEST + :so small.vim + :se nocp nomore viminfo+=nviminfo + :so test49.vim +! GGGGGGGGGGGGGG"rp:.-,$w! test.out +! :" +! :" make valgrind happy +! :redir => funclist +! :silent func +! :redir END +! :for line in split(funclist, "\n") +! : let name = matchstr(line, 'function \zs[A-Z]\w*\ze(') +! : if name != '' +! : exe "delfunc " . name +! : endif +! :endfor +! :for v in keys(g:) +! : silent! exe "unlet " . v +! :endfor +! :unlet v +! :qa! + ENDTEST + + Results of test49.vim: +*** ../vim-7.1.119/src/testdir/test55.in Sat May 5 20:03:56 2007 +--- src/testdir/test55.in Mon Sep 17 19:53:48 2007 +*************** +*** 345,350 **** +--- 345,354 ---- + :endfun + :call Test(1, 2, [3, 4], {5: 6}) " This may take a while + :" ++ :delfunc Test ++ :unlet dict ++ :call garbagecollect(1) ++ :" + :/^start:/,$wq! test.out + ENDTEST + +*** ../vim-7.1.119/src/testdir/test56.in Tue Sep 5 13:36:02 2006 +--- src/testdir/test56.in Sun Sep 16 17:54:20 2007 +*************** +*** 17,21 **** + fun s:DoNothing() + call append(line('$'), "nothing line") + endfun +! nnoremap _x :call DoNothing()call DoLast() + end: +--- 17,21 ---- + fun s:DoNothing() + call append(line('$'), "nothing line") + endfun +! nnoremap _x :call DoNothing()call DoLast()delfunc DoNothingdelfunc DoLast + end: +*** ../vim-7.1.119/src/testdir/test58.in Wed Apr 5 22:38:56 2006 +--- src/testdir/test58.in Sun Sep 16 18:17:03 2007 +*************** +*** 86,91 **** +--- 86,92 ---- + :$put =str + `m]s:let [str, a] = spellbadword() + :$put =str ++ :unlet str a + :" + :" Postponed prefixes + :call TestOne('2', '1') +*************** +*** 99,104 **** +--- 100,109 ---- + :" + :" NOSLITSUGS + :call TestOne('8', '8') ++ :" ++ :" clean up for valgrind ++ :delfunc TestOne ++ :set spl= enc=latin1 + :" + gg:/^test output:/,$wq! test.out + ENDTEST +*** ../vim-7.1.119/src/testdir/test59.in Wed Apr 5 22:27:11 2006 +--- src/testdir/test59.in Sun Sep 16 18:17:23 2007 +*************** +*** 90,95 **** +--- 90,96 ---- + :$put =str + `m]s:let [str, a] = spellbadword() + :$put =str ++ :unlet str a + :" + :" Postponed prefixes + :call TestOne('2', '1') +*************** +*** 100,105 **** +--- 101,110 ---- + :call TestOne('5', '5') + :call TestOne('6', '6') + :call TestOne('7', '7') ++ :" ++ :" clean up for valgrind ++ :delfunc TestOne ++ :set spl= enc=latin1 + :" + gg:/^test output:/,$wq! test.out + ENDTEST +*** ../vim-7.1.119/src/testdir/test60.in Fri May 5 23:11:11 2006 +--- src/testdir/test60.in Mon Sep 17 19:58:43 2007 +*************** +*** 569,574 **** +--- 569,577 ---- + redir END + endfunction + :call TestExists() ++ :delfunc TestExists ++ :delfunc RunTest ++ :delfunc TestFuncArg + :edit! test.out + :set ff=unix + :w +*** ../vim-7.1.119/src/testdir/test60.vim Fri Jan 13 00:14:55 2006 +--- src/testdir/test60.vim Mon Sep 17 19:56:02 2007 +*************** +*** 94,97 **** +--- 94,98 ---- + else + echo "FAILED" + endif ++ unlet str + +*** ../vim-7.1.119/src/testdir/test62.in Sun Apr 30 20:28:14 2006 +--- src/testdir/test62.in Sun Sep 16 17:24:04 2007 +*************** +*** 7,12 **** +--- 7,13 ---- + :let nr = tabpagenr() + :q + :call append(line('$'), 'tab page ' . nr) ++ :unlet nr + :" + :" Open three tab pages and use ":tabdo" + :0tabnew +*************** +*** 23,28 **** +--- 24,30 ---- + :q! + :call append(line('$'), line1) + :call append(line('$'), line2) ++ :unlet line1 line2 + :" + :" + :/^Results/,$w! test.out +*** ../vim-7.1.119/src/testdir/test63.in Thu Jul 26 22:55:11 2007 +--- src/testdir/test63.in Sun Sep 16 17:11:07 2007 +*************** +*** 60,66 **** + :else + : let @r .= "FAILED\n" + :endif +! :" --- Check that "matchdelete()" returns 0 if succesfull and otherwise -1. + :let @r .= "*** Test 6: " + :let m = matchadd("MyGroup1", "TODO") + :let r1 = matchdelete(m) +--- 60,66 ---- + :else + : let @r .= "FAILED\n" + :endif +! :" --- Check that "matchdelete()" returns 0 if successful and otherwise -1. + :let @r .= "*** Test 6: " + :let m = matchadd("MyGroup1", "TODO") + :let r1 = matchdelete(m) +*************** +*** 117,123 **** + :" --- Check that "setmatches()" will not add two matches with the same ID. The + :" --- expected behaviour (for now) is to add the first match but not the + :" --- second and to return 0 (even though it is a matter of debate whether +! :" --- this can be considered succesfull behaviour). + :let @r .= "*** Test 9: " + :let r1 = setmatches([{'group': 'MyGroup1', 'pattern': 'TODO', 'priority': 10, 'id': 1}, {'group': 'MyGroup2', 'pattern': 'FIXME', 'priority': 10, 'id': 1}]) + :if getmatches() == [{'group': 'MyGroup1', 'pattern': 'TODO', 'priority': 10, 'id': 1}] && r1 == 0 +--- 117,123 ---- + :" --- Check that "setmatches()" will not add two matches with the same ID. The + :" --- expected behaviour (for now) is to add the first match but not the + :" --- second and to return 0 (even though it is a matter of debate whether +! :" --- this can be considered successful behaviour). + :let @r .= "*** Test 9: " + :let r1 = setmatches([{'group': 'MyGroup1', 'pattern': 'TODO', 'priority': 10, 'id': 1}, {'group': 'MyGroup2', 'pattern': 'FIXME', 'priority': 10, 'id': 1}]) + :if getmatches() == [{'group': 'MyGroup1', 'pattern': 'TODO', 'priority': 10, 'id': 1}] && r1 == 0 +*************** +*** 127,133 **** + :endif + :call clearmatches() + :unlet r1 +! :" --- Check that "setmatches()" returns 0 if succesfull and otherwise -1. + :" --- (A range of valid and invalid input values are tried out to generate the + :" --- return values.) + :let @r .= "*** Test 10: " +--- 127,133 ---- + :endif + :call clearmatches() + :unlet r1 +! :" --- Check that "setmatches()" returns 0 if successful and otherwise -1. + :" --- (A range of valid and invalid input values are tried out to generate the + :" --- return values.) + :let @r .= "*** Test 10: " +*** ../vim-7.1.119/src/testdir/test64.in Tue Aug 14 17:28:14 2007 +--- src/testdir/test64.in Sun Sep 16 17:43:03 2007 +*************** +*** 44,51 **** +--- 44,53 ---- + : $put ='ERROR: pat: \"' . t[0] . '\", text: \"' . t[1] . '\", submatch ' . i . ': \"' . l[i] . '\", expected: \"' . e . '\"' + : endif + : endfor ++ : unlet i + : endif + :endfor ++ :unlet t tl e l + :/^Results/,$wq! test.out + ENDTEST + +*** ../vim-7.1.119/src/version.c Tue Sep 25 14:50:19 2007 +--- src/version.c Tue Sep 25 17:36:22 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 120, + /**/ + +-- +BEDEVERE: How do you know so much about swallows? +ARTHUR: Well you have to know these things when you're a king, you know. + "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 /// diff --git a/7.1.121 b/7.1.121 new file mode 100644 index 00000000..ab6f878d --- /dev/null +++ b/7.1.121 @@ -0,0 +1,81 @@ +To: vim-dev@vim.org +Subject: patch 7.1.121 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.121 +Problem: Using ":cd %:h" when editing a file in the current directory + results in an error message for using an empty string. +Solution: When "%:h" results in an empty string use ".". +Files: src/eval.c + + +*** ../vim-7.1.120/src/eval.c Tue Sep 25 17:54:41 2007 +--- src/eval.c Sun Sep 16 19:24:49 2007 +*************** +*** 21308,21321 **** + *usedlen += 2; + s = get_past_head(*fnamep); + while (tail > s && after_pathsep(s, tail)) +! --tail; + *fnamelen = (int)(tail - *fnamep); + #ifdef VMS + if (*fnamelen > 0) + *fnamelen += 1; /* the path separator is part of the path */ + #endif +! while (tail > s && !after_pathsep(s, tail)) +! mb_ptr_back(*fnamep, tail); + } + + /* ":8" - shortname */ +--- 21308,21334 ---- + *usedlen += 2; + s = get_past_head(*fnamep); + while (tail > s && after_pathsep(s, tail)) +! mb_ptr_back(*fnamep, tail); + *fnamelen = (int)(tail - *fnamep); + #ifdef VMS + if (*fnamelen > 0) + *fnamelen += 1; /* the path separator is part of the path */ + #endif +! if (*fnamelen == 0) +! { +! /* Result is empty. Turn it into "." to make ":cd %:h" work. */ +! p = vim_strsave((char_u *)"."); +! if (p == NULL) +! return -1; +! vim_free(*bufp); +! *bufp = *fnamep = tail = p; +! *fnamelen = 1; +! } +! else +! { +! while (tail > s && !after_pathsep(s, tail)) +! mb_ptr_back(*fnamep, tail); +! } + } + + /* ":8" - shortname */ +*** ../vim-7.1.120/src/version.c Tue Sep 25 17:54:41 2007 +--- src/version.c Tue Sep 25 20:38:08 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 121, + /**/ + +-- +It is illegal for anyone to try and stop a child from playfully jumping over +puddles of water. + [real standing law in California, United States of America] + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.122 b/7.1.122 new file mode 100644 index 00000000..ade147c6 --- /dev/null +++ b/7.1.122 @@ -0,0 +1,98 @@ +To: vim-dev@vim.org +Subject: patch 7.1.122 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.122 +Problem: Mac: building Vim.app fails. Using wrong architecture. +Solution: Use line continuation for the gui_bundle dependency. Detect the + system architecture with "uname -a". +Files: src/main.aap + + +*** ../vim-7.1.121/src/main.aap Thu May 10 18:48:19 2007 +--- src/main.aap Tue Sep 25 21:26:03 2007 +*************** +*** 56,64 **** + config {virtual} auto/config.h auto/config.aap : + auto/configure.aap configure.aap + config.arg config.h.in config.aap.in + :sys CONFIG_STATUS=auto/config.status + ./configure.aap `file2string("config.arg")` +! --with-mac-arch=ppc + --cache-file=auto/config.cache + + # Configure arguments: create an empty "config.arg" file when its missing +--- 56,71 ---- + config {virtual} auto/config.h auto/config.aap : + auto/configure.aap configure.aap + config.arg config.h.in config.aap.in ++ # Use "uname -a" to detect the architecture of the system. ++ @ok, uname = redir_system('uname -a', 0) ++ @if string.find(uname, "i386") >= 0: ++ @ arch = "i386" ++ @else: ++ @ arch = "ppc" ++ :print Building for $arch system + :sys CONFIG_STATUS=auto/config.status + ./configure.aap `file2string("config.arg")` +! --with-mac-arch=$arch + --cache-file=auto/config.cache + + # Configure arguments: create an empty "config.arg" file when its missing +*************** +*** 1167,1173 **** + :symlink `os.getcwd()`/../runtime $RESDIR/vim/runtime + # TODO: Create the vimtutor application. + +! gui_bundle {virtual}: $(RESDIR) bundle-dir bundle-executable bundle-info + bundle-resource bundle-language + + bundle-dir {virtual}: $(APPDIR)/Contents $(VIMTARGET) +--- 1174,1180 ---- + :symlink `os.getcwd()`/../runtime $RESDIR/vim/runtime + # TODO: Create the vimtutor application. + +! gui_bundle {virtual}: $(RESDIR) bundle-dir bundle-executable bundle-info \ + bundle-resource bundle-language + + bundle-dir {virtual}: $(APPDIR)/Contents $(VIMTARGET) +*************** +*** 1187,1193 **** + :sys m4 $(M4FLAGSX) infplist.xml > $(APPDIR)/Contents/Info.plist + + bundle-resource {virtual}: bundle-dir bundle-rsrc +! :copy {force} $(RSRC_DIR)/*.icns $(RESDIR) + + ### Classic resources + # Resource fork (in the form of a .rsrc file) for Classic Vim (Mac OS 9) +--- 1194,1200 ---- + :sys m4 $(M4FLAGSX) infplist.xml > $(APPDIR)/Contents/Info.plist + + bundle-resource {virtual}: bundle-dir bundle-rsrc +! :copy {force} $(RSRC_DIR)/*.icns $(RESDIR) + + ### Classic resources + # Resource fork (in the form of a .rsrc file) for Classic Vim (Mac OS 9) +*** ../vim-7.1.121/src/version.c Tue Sep 25 20:39:14 2007 +--- src/version.c Tue Sep 25 22:12:16 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 122, + /**/ + +-- +Men may not be seen publicly in any kind of strapless gown. + [real standing law in Florida, United States of America] + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.123 b/7.1.123 new file mode 100644 index 00000000..6b3ee044 --- /dev/null +++ b/7.1.123 @@ -0,0 +1,259 @@ +To: vim-dev@vim.org +Subject: patch 7.1.123 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.123 +Problem: Win32: ":edit foo ~ foo" expands "~". +Solution: Change the call to expand_env(). +Files: src/ex_docmd.c, src/misc1.c, src/proto/misc1.pro, src/option.c + + +*** ../vim-7.1.122/src/ex_docmd.c Sun Aug 19 22:42:27 2007 +--- src/ex_docmd.c Wed Sep 26 20:29:36 2007 +*************** +*** 4403,4409 **** + || vim_strchr(eap->arg, '~') != NULL) + { + expand_env_esc(eap->arg, NameBuff, MAXPATHL, +! TRUE, NULL); + has_wildcards = mch_has_wildcard(NameBuff); + p = NameBuff; + } +--- 4402,4408 ---- + || vim_strchr(eap->arg, '~') != NULL) + { + expand_env_esc(eap->arg, NameBuff, MAXPATHL, +! TRUE, TRUE, NULL); + has_wildcards = mch_has_wildcard(NameBuff); + p = NameBuff; + } +*** ../vim-7.1.122/src/misc1.c Tue Aug 14 22:15:53 2007 +--- src/misc1.c Tue Sep 25 17:30:01 2007 +*************** +*** 3506,3514 **** + #endif + + /* + * Expand environment variable with path name. + * "~/" is also expanded, using $HOME. For Unix "~user/" is expanded. +! * Skips over "\ ", "\~" and "\$". + * If anything fails no expansion is done and dst equals src. + */ + void +--- 3506,3543 ---- + #endif + + /* ++ * Call expand_env() and store the result in an allocated string. ++ * This is not very memory efficient, this expects the result to be freed ++ * again soon. ++ */ ++ char_u * ++ expand_env_save(src) ++ char_u *src; ++ { ++ return expand_env_save_opt(src, FALSE); ++ } ++ ++ /* ++ * Idem, but when "one" is TRUE handle the string as one file name, only ++ * expand "~" at the start. ++ */ ++ char_u * ++ expand_env_save_opt(src, one) ++ char_u *src; ++ int one; ++ { ++ char_u *p; ++ ++ p = alloc(MAXPATHL); ++ if (p != NULL) ++ expand_env_esc(src, p, MAXPATHL, FALSE, one, NULL); ++ return p; ++ } ++ ++ /* + * Expand environment variable with path name. + * "~/" is also expanded, using $HOME. For Unix "~user/" is expanded. +! * Skips over "\ ", "\~" and "\$" (not for Win32 though). + * If anything fails no expansion is done and dst equals src. + */ + void +*************** +*** 3517,3531 **** + char_u *dst; /* where to put the result */ + int dstlen; /* maximum length of the result */ + { +! expand_env_esc(src, dst, dstlen, FALSE, NULL); + } + + void +! expand_env_esc(srcp, dst, dstlen, esc, startstr) + char_u *srcp; /* input string e.g. "$HOME/vim.hlp" */ + char_u *dst; /* where to put the result */ + int dstlen; /* maximum length of the result */ + int esc; /* escape spaces in expanded variables */ + char_u *startstr; /* start again after this (can be NULL) */ + { + char_u *src; +--- 3546,3561 ---- + char_u *dst; /* where to put the result */ + int dstlen; /* maximum length of the result */ + { +! expand_env_esc(src, dst, dstlen, FALSE, FALSE, NULL); + } + + void +! expand_env_esc(srcp, dst, dstlen, esc, one, startstr) + char_u *srcp; /* input string e.g. "$HOME/vim.hlp" */ + char_u *dst; /* where to put the result */ + int dstlen; /* maximum length of the result */ + int esc; /* escape spaces in expanded variables */ ++ int one; /* "srcp" is one file name */ + char_u *startstr; /* start again after this (can be NULL) */ + { + char_u *src; +*************** +*** 3766,3771 **** +--- 3796,3803 ---- + { + /* + * Recognize the start of a new name, for '~'. ++ * Don't do this when "one" is TRUE, to avoid expanding "~" in ++ * ":edit foo ~ foo". + */ + at_start = FALSE; + if (src[0] == '\\' && src[1] != NUL) +*************** +*** 3773,3779 **** + *dst++ = *src++; + --dstlen; + } +! else if (src[0] == ' ' || src[0] == ',') + at_start = TRUE; + *dst++ = *src++; + --dstlen; +--- 3805,3811 ---- + *dst++ = *src++; + --dstlen; + } +! else if ((src[0] == ' ' || src[0] == ',') && !one) + at_start = TRUE; + *dst++ = *src++; + --dstlen; +*************** +*** 4070,4092 **** + } + + /* +- * Call expand_env() and store the result in an allocated string. +- * This is not very memory efficient, this expects the result to be freed +- * again soon. +- */ +- char_u * +- expand_env_save(src) +- char_u *src; +- { +- char_u *p; +- +- p = alloc(MAXPATHL); +- if (p != NULL) +- expand_env(src, p, MAXPATHL); +- return p; +- } +- +- /* + * Our portable version of setenv. + */ + void +--- 4102,4107 ---- +*************** +*** 9139,9145 **** + */ + if (vim_strpbrk(p, (char_u *)"$~") != NULL) + { +! p = expand_env_save(p); + if (p == NULL) + p = pat[i]; + #ifdef UNIX +--- 9154,9160 ---- + */ + if (vim_strpbrk(p, (char_u *)"$~") != NULL) + { +! p = expand_env_save_opt(p, TRUE); + if (p == NULL) + p = pat[i]; + #ifdef UNIX +*** ../vim-7.1.122/src/proto/misc1.pro Sat May 5 20:15:33 2007 +--- src/proto/misc1.pro Tue Sep 25 17:22:36 2007 +*************** +*** 48,57 **** + void vim_beep __ARGS((void)); + void init_homedir __ARGS((void)); + void free_homedir __ARGS((void)); + void expand_env __ARGS((char_u *src, char_u *dst, int dstlen)); +! void expand_env_esc __ARGS((char_u *srcp, char_u *dst, int dstlen, int esc, char_u *startstr)); + char_u *vim_getenv __ARGS((char_u *name, int *mustfree)); +- char_u *expand_env_save __ARGS((char_u *src)); + void vim_setenv __ARGS((char_u *name, char_u *val)); + char_u *get_env_name __ARGS((expand_T *xp, int idx)); + void home_replace __ARGS((buf_T *buf, char_u *src, char_u *dst, int dstlen, int one)); +--- 48,58 ---- + void vim_beep __ARGS((void)); + void init_homedir __ARGS((void)); + void free_homedir __ARGS((void)); ++ char_u *expand_env_save __ARGS((char_u *src)); ++ char_u *expand_env_save_opt __ARGS((char_u *src, int one)); + void expand_env __ARGS((char_u *src, char_u *dst, int dstlen)); +! void expand_env_esc __ARGS((char_u *srcp, char_u *dst, int dstlen, int esc, int one, char_u *startstr)); + char_u *vim_getenv __ARGS((char_u *name, int *mustfree)); + void vim_setenv __ARGS((char_u *name, char_u *val)); + char_u *get_env_name __ARGS((expand_T *xp, int idx)); + void home_replace __ARGS((buf_T *buf, char_u *src, char_u *dst, int dstlen, int one)); +*** ../vim-7.1.122/src/option.c Tue Sep 25 14:50:19 2007 +--- src/option.c Tue Sep 25 17:20:05 2007 +*************** +*** 4996,5002 **** + * For 'spellsuggest' expand after "file:". + */ + expand_env_esc(val, NameBuff, MAXPATHL, +! (char_u **)options[opt_idx].var == &p_tags, + #ifdef FEAT_SPELL + (char_u **)options[opt_idx].var == &p_sps ? (char_u *)"file:" : + #endif +--- 4996,5002 ---- + * For 'spellsuggest' expand after "file:". + */ + expand_env_esc(val, NameBuff, MAXPATHL, +! (char_u **)options[opt_idx].var == &p_tags, FALSE, + #ifdef FEAT_SPELL + (char_u **)options[opt_idx].var == &p_sps ? (char_u *)"file:" : + #endif +*** ../vim-7.1.122/src/version.c Tue Sep 25 22:13:14 2007 +--- src/version.c Wed Sep 26 22:30:59 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 123, + /**/ + +-- +So when I saw the post to comp.editors, I rushed over to the FTP site to +grab it. So I yank apart the tarball, light x candles, where x= the +vim version multiplied by the md5sum of the source divided by the MAC of +my NIC (8A3FA78155A8A1D346C3C4A), put on black robes, dim the lights, +wave a dead chicken over the hard drive, and summon the power of GNU GCC +with the magic words "make config ; make!". + [Jason Spence, compiling Vim 5.0] + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.124 b/7.1.124 new file mode 100644 index 00000000..6e524265 --- /dev/null +++ b/7.1.124 @@ -0,0 +1,82 @@ +To: vim-dev@vim.org +Subject: patch 7.1.124 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.124 (extra) +Problem: Mac: When dropping a file on Vim.app that is already in the buffer + list (from .viminfo) results in editing an empty, unnamed buffer. + (Axel Kielhorn) Also: warning for unused variable. +Solution: Move to the buffer of the first agument. Delete unused variable. +Files: src/gui_mac.c + + +*** ../vim-7.1.123/src/gui_mac.c Thu Aug 30 12:50:00 2007 +--- src/gui_mac.c Sat Sep 29 13:12:26 2007 +*************** +*** 1046,1051 **** +--- 1046,1052 ---- + { + int i; + char_u *p; ++ int fnum = -1; + + /* these are the initial files dropped on the Vim icon */ + for (i = 0 ; i < numFiles; i++) +*************** +*** 1055,1060 **** +--- 1056,1073 ---- + mch_exit(2); + else + alist_add(&global_alist, p, 2); ++ if (fnum == -1) ++ fnum = GARGLIST[GARGCOUNT - 1].ae_fnum; ++ } ++ ++ /* If the file name was already in the buffer list we need to switch ++ * to it. */ ++ if (curbuf->b_fnum != fnum) ++ { ++ char_u cmd[30]; ++ ++ vim_snprintf((char *)cmd, 30, "silent %dbuffer", fnum); ++ do_cmdline_cmd(cmd); + } + + /* Change directory to the location of the first file. */ +*************** +*** 2920,2926 **** + /* TODO: Move most of this stuff toward gui_mch_init */ + Rect windRect; + MenuHandle pomme; +- long gestalt_rc; + EventTypeSpec eventTypeSpec; + EventHandlerRef mouseWheelHandlerRef; + #ifdef USE_CARBONKEYHANDLER +--- 2933,2938 ---- +*** ../vim-7.1.123/src/version.c Wed Sep 26 22:35:06 2007 +--- src/version.c Sat Sep 29 13:13:16 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 124, + /**/ + +-- +ERIC IDLE PLAYED: THE DEAD COLLECTOR, MR BINT (A VILLAGE NE'ER-DO -WELL VERY + KEEN ON BURNING WITCHES), SIR ROBIN, THE GUARD WHO DOESN'T + HICOUGH BUT TRIES TO GET THINGS STRAIGHT, CONCORDE (SIR + LAUNCELOT'S TRUSTY STEED), ROGER THE SHRUBBER (A SHRUBBER), + BROTHER MAYNARD + "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 /// diff --git a/7.1.125 b/7.1.125 new file mode 100644 index 00000000..f202db43 --- /dev/null +++ b/7.1.125 @@ -0,0 +1,454 @@ +To: vim-dev@vim.org +Subject: patch 7.1.125 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.125 +Problem: The TermResponse autocommand event is not always triggered. (Aron + Griffis) +Solution: When unblocking autocommands check if v:termresponse changed and + trigger the event then. +Files: src/buffer.c, src/diff.c, src/ex_getln.c, src/fileio.c, + src/globals.h, src/misc2.c, src/proto/fileio.pro, src/window.c + + +*** ../vim-7.1.124/src/buffer.c Sun Aug 12 15:50:26 2007 +--- src/buffer.c Wed Sep 26 20:05:38 2007 +*************** +*** 5515,5525 **** + + #ifdef FEAT_AUTOCMD + if (!aucmd) /* Don't trigger BufDelete autocommands here. */ +! ++autocmd_block; + #endif + close_buffer(NULL, buf, DOBUF_WIPE); + #ifdef FEAT_AUTOCMD + if (!aucmd) +! --autocmd_block; + #endif + } +--- 5512,5522 ---- + + #ifdef FEAT_AUTOCMD + if (!aucmd) /* Don't trigger BufDelete autocommands here. */ +! block_autocmds(); + #endif + close_buffer(NULL, buf, DOBUF_WIPE); + #ifdef FEAT_AUTOCMD + if (!aucmd) +! unblock_autocmds(); + #endif + } +*** ../vim-7.1.124/src/diff.c Tue Feb 20 04:43:13 2007 +--- src/diff.c Tue Sep 25 22:01:40 2007 +*************** +*** 840,850 **** + tmp_orig, tmp_new); + append_redir(cmd, p_srr, tmp_diff); + #ifdef FEAT_AUTOCMD +! ++autocmd_block; /* Avoid ShellCmdPost stuff */ + #endif + (void)call_shell(cmd, SHELL_FILTER|SHELL_SILENT|SHELL_DOOUT); + #ifdef FEAT_AUTOCMD +! --autocmd_block; + #endif + vim_free(cmd); + } +--- 840,850 ---- + tmp_orig, tmp_new); + append_redir(cmd, p_srr, tmp_diff); + #ifdef FEAT_AUTOCMD +! block_autocmds(); /* Avoid ShellCmdPost stuff */ + #endif + (void)call_shell(cmd, SHELL_FILTER|SHELL_SILENT|SHELL_DOOUT); + #ifdef FEAT_AUTOCMD +! unblock_autocmds(); + #endif + vim_free(cmd); + } +*************** +*** 949,959 **** + # endif + eap->arg); + #ifdef FEAT_AUTOCMD +! ++autocmd_block; /* Avoid ShellCmdPost stuff */ + #endif + (void)call_shell(buf, SHELL_FILTER | SHELL_COOKED); + #ifdef FEAT_AUTOCMD +! --autocmd_block; + #endif + } + +--- 949,959 ---- + # endif + eap->arg); + #ifdef FEAT_AUTOCMD +! block_autocmds(); /* Avoid ShellCmdPost stuff */ + #endif + (void)call_shell(buf, SHELL_FILTER | SHELL_COOKED); + #ifdef FEAT_AUTOCMD +! unblock_autocmds(); + #endif + } + +*** ../vim-7.1.124/src/ex_getln.c Thu Sep 13 18:25:08 2007 +--- src/ex_getln.c Tue Sep 25 22:03:05 2007 +*************** +*** 5925,5931 **** + + # ifdef FEAT_AUTOCMD + /* Don't execute autocommands while creating the window. */ +! ++autocmd_block; + # endif + /* don't use a new tab page */ + cmdmod.tab = 0; +--- 5925,5931 ---- + + # ifdef FEAT_AUTOCMD + /* Don't execute autocommands while creating the window. */ +! block_autocmds(); + # endif + /* don't use a new tab page */ + cmdmod.tab = 0; +*************** +*** 5934,5939 **** +--- 5934,5942 ---- + if (win_split((int)p_cwh, WSP_BOT) == FAIL) + { + beep_flush(); ++ # ifdef FEAT_AUTOCMD ++ unblock_autocmds(); ++ # endif + return K_IGNORE; + } + cmdwin_type = ccline.cmdfirstc; +*************** +*** 5956,5962 **** + + # ifdef FEAT_AUTOCMD + /* Do execute autocommands for setting the filetype (load syntax). */ +! --autocmd_block; + # endif + + /* Showing the prompt may have set need_wait_return, reset it. */ +--- 5959,5965 ---- + + # ifdef FEAT_AUTOCMD + /* Do execute autocommands for setting the filetype (load syntax). */ +! unblock_autocmds(); + # endif + + /* Showing the prompt may have set need_wait_return, reset it. */ +*************** +*** 6110,6116 **** + + # ifdef FEAT_AUTOCMD + /* Don't execute autocommands while deleting the window. */ +! ++autocmd_block; + # endif + wp = curwin; + bp = curbuf; +--- 6113,6119 ---- + + # ifdef FEAT_AUTOCMD + /* Don't execute autocommands while deleting the window. */ +! block_autocmds(); + # endif + wp = curwin; + bp = curbuf; +*************** +*** 6122,6128 **** + win_size_restore(&winsizes); + + # ifdef FEAT_AUTOCMD +! --autocmd_block; + # endif + } + +--- 6125,6131 ---- + win_size_restore(&winsizes); + + # ifdef FEAT_AUTOCMD +! unblock_autocmds(); + # endif + } + +*** ../vim-7.1.124/src/fileio.c Sun Aug 12 15:50:26 2007 +--- src/fileio.c Wed Sep 26 20:02:54 2007 +*************** +*** 7165,7170 **** +--- 7187,7193 ---- + + static event_T last_event; + static int last_group; ++ static int autocmd_blocked = 0; /* block all autocmds */ + + /* + * Show the autocommands for one AutoPat. +*************** +*** 8454,8460 **** + * Quickly return if there are no autocommands for this event or + * autocommands are blocked. + */ +! if (first_autopat[(int)event] == NULL || autocmd_block > 0) + goto BYPASS_AU; + + /* +--- 8477,8483 ---- + * Quickly return if there are no autocommands for this event or + * autocommands are blocked. + */ +! if (first_autopat[(int)event] == NULL || autocmd_blocked > 0) + goto BYPASS_AU; + + /* +*************** +*** 8766,8771 **** +--- 8789,8828 ---- + aubuflocal_remove(buf); + + return retval; ++ } ++ ++ # ifdef FEAT_EVAL ++ static char_u *old_termresponse = NULL; ++ # endif ++ ++ /* ++ * Block triggering autocommands until unblock_autocmd() is called. ++ * Can be used recursively, so long as it's symmetric. ++ */ ++ void ++ block_autocmds() ++ { ++ # ifdef FEAT_EVAL ++ /* Remember the value of v:termresponse. */ ++ if (autocmd_blocked == 0) ++ old_termresponse = get_vim_var_str(VV_TERMRESPONSE); ++ # endif ++ ++autocmd_blocked; ++ } ++ ++ void ++ unblock_autocmds() ++ { ++ --autocmd_blocked; ++ ++ # ifdef FEAT_EVAL ++ /* When v:termresponse was set while autocommands were blocked, trigger ++ * the autocommands now. Esp. useful when executing a shell command ++ * during startup (vimdiff). */ ++ if (autocmd_blocked == 0 ++ && get_vim_var_str(VV_TERMRESPONSE) != old_termresponse) ++ apply_autocmds(EVENT_TERMRESPONSE, NULL, NULL, FALSE, curbuf); ++ # endif + } + + /* +*** ../vim-7.1.124/src/globals.h Tue Sep 25 17:54:41 2007 +--- src/globals.h Tue Sep 25 22:03:39 2007 +*************** +*** 366,372 **** + EXTERN int autocmd_busy INIT(= FALSE); /* Is apply_autocmds() busy? */ + EXTERN int autocmd_no_enter INIT(= FALSE); /* *Enter autocmds disabled */ + EXTERN int autocmd_no_leave INIT(= FALSE); /* *Leave autocmds disabled */ +- EXTERN int autocmd_block INIT(= 0); /* block all autocmds */ + EXTERN int modified_was_set; /* did ":set modified" */ + EXTERN int did_filetype INIT(= FALSE); /* FileType event found */ + EXTERN int keep_filetype INIT(= FALSE); /* value for did_filetype when +--- 366,371 ---- +*** ../vim-7.1.124/src/misc2.c Thu May 10 19:58:47 2007 +--- src/misc2.c Tue Sep 25 22:04:39 2007 +*************** +*** 972,978 **** + return; + entered = TRUE; + +! ++autocmd_block; /* don't want to trigger autocommands here */ + + #ifdef FEAT_WINDOWS + /* close all tabs and windows */ +--- 973,979 ---- + return; + entered = TRUE; + +! block_autocmds(); /* don't want to trigger autocommands here */ + + #ifdef FEAT_WINDOWS + /* close all tabs and windows */ +*** ../vim-7.1.124/src/proto/fileio.pro Thu Jun 28 21:57:08 2007 +--- src/proto/fileio.pro Wed Sep 26 20:05:02 2007 +*************** +*** 40,45 **** +--- 41,48 ---- + int trigger_cursorhold __ARGS((void)); + int has_cursormoved __ARGS((void)); + int has_cursormovedI __ARGS((void)); ++ void block_autocmds __ARGS((void)); ++ void unblock_autocmds __ARGS((void)); + int has_autocmd __ARGS((event_T event, char_u *sfname, buf_T *buf)); + char_u *get_augroup_name __ARGS((expand_T *xp, int idx)); + char_u *set_context_in_autocmd __ARGS((expand_T *xp, char_u *arg, int doautocmd)); +*** ../vim-7.1.124/src/window.c Tue Sep 25 14:50:19 2007 +--- src/window.c Tue Sep 25 22:05:45 2007 +*************** +*** 1291,1297 **** + * Don't execute autocommands while creating the windows. Must do that + * when putting the buffers in the windows. + */ +! ++autocmd_block; + #endif + + /* todo is number of windows left to create */ +--- 1291,1297 ---- + * Don't execute autocommands while creating the windows. Must do that + * when putting the buffers in the windows. + */ +! block_autocmds(); + #endif + + /* todo is number of windows left to create */ +*************** +*** 1313,1319 **** + } + + #ifdef FEAT_AUTOCMD +! --autocmd_block; + #endif + + /* return actual number of windows */ +--- 1313,1319 ---- + } + + #ifdef FEAT_AUTOCMD +! unblock_autocmds(); + #endif + + /* return actual number of windows */ +*************** +*** 3415,3421 **** + * Don't execute autocommands while creating the tab pages. Must do that + * when putting the buffers in the windows. + */ +! ++autocmd_block; + #endif + + for (todo = count - 1; todo > 0; --todo) +--- 3415,3421 ---- + * Don't execute autocommands while creating the tab pages. Must do that + * when putting the buffers in the windows. + */ +! block_autocmds(); + #endif + + for (todo = count - 1; todo > 0; --todo) +*************** +*** 3423,3429 **** + break; + + #ifdef FEAT_AUTOCMD +! --autocmd_block; + #endif + + /* return actual number of tab pages */ +--- 3423,3429 ---- + break; + + #ifdef FEAT_AUTOCMD +! unblock_autocmds(); + #endif + + /* return actual number of tab pages */ +*************** +*** 4162,4168 **** + /* Don't execute autocommands while the window is not properly + * initialized yet. gui_create_scrollbar() may trigger a FocusGained + * event. */ +! ++autocmd_block; + #endif + /* + * link the window in the window list +--- 4162,4168 ---- + /* Don't execute autocommands while the window is not properly + * initialized yet. gui_create_scrollbar() may trigger a FocusGained + * event. */ +! block_autocmds(); + #endif + /* + * link the window in the window list +*************** +*** 4207,4213 **** + foldInitWin(newwin); + #endif + #ifdef FEAT_AUTOCMD +! --autocmd_block; + #endif + #ifdef FEAT_SEARCH_EXTRA + newwin->w_match_head = NULL; +--- 4207,4213 ---- + foldInitWin(newwin); + #endif + #ifdef FEAT_AUTOCMD +! unblock_autocmds(); + #endif + #ifdef FEAT_SEARCH_EXTRA + newwin->w_match_head = NULL; +*************** +*** 4232,4238 **** + #ifdef FEAT_AUTOCMD + /* Don't execute autocommands while the window is halfway being deleted. + * gui_mch_destroy_scrollbar() may trigger a FocusGained event. */ +! ++autocmd_block; + #endif + + #ifdef FEAT_MZSCHEME +--- 4232,4238 ---- + #ifdef FEAT_AUTOCMD + /* Don't execute autocommands while the window is halfway being deleted. + * gui_mch_destroy_scrollbar() may trigger a FocusGained event. */ +! block_autocmds(); + #endif + + #ifdef FEAT_MZSCHEME +*************** +*** 4295,4301 **** + vim_free(wp); + + #ifdef FEAT_AUTOCMD +! --autocmd_block; + #endif + } + +--- 4295,4301 ---- + vim_free(wp); + + #ifdef FEAT_AUTOCMD +! unblock_autocmds(); + #endif + } + +*** ../vim-7.1.124/src/version.c Sat Sep 29 13:15:29 2007 +--- src/version.c Sat Sep 29 14:08:31 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 125, + /**/ + +-- +MICHAEL PALIN PLAYED: 1ST SOLDIER WITH A KEEN INTEREST IN BIRDS, DENNIS, MR + DUCK (A VILLAGE CARPENTER WHO IS ALMOST KEENER THAN + ANYONE ELSE TO BURN WITCHES), THREE-HEADED KNIGHT, SIR + GALAHAD, KING OF SWAMP CASTLE, BROTHER MAYNARD'S ROOMATE + "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 /// diff --git a/7.1.126 b/7.1.126 new file mode 100644 index 00000000..4246b148 --- /dev/null +++ b/7.1.126 @@ -0,0 +1,469 @@ +To: vim-dev@vim.org +Subject: patch 7.1.126 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.126 +Problem: ":vimgrep */*" fails when a BufRead autocommand changes directory. + (Bernhard Kuhn) +Solution: Change back to the original directory after loading a file. + Also: use shorten_fname1() to avoid duplicating code. +Files: src/buffer.c, src/ex_docmd.c, src/fileio.c, src/gui_gtk.c, + src/gui_w48.c, src/proto/ex_docmd.pro, src/proto/fileio.pro, + src/quickfix.c + + +*** ../vim-7.1.125/src/buffer.c Sat Sep 29 14:15:00 2007 +--- src/buffer.c Wed Sep 26 20:05:38 2007 +*************** +*** 4261,4272 **** + do_arg_all(count, forceit, keep_tabs) + int count; + int forceit; /* hide buffers in current windows */ +! int keep_tabs; /* keep curren tabs, for ":tab drop file" */ + { + int i; + win_T *wp, *wpnext; + char_u *opened; /* array of flags for which args are open */ +! int opened_len; /* lenght of opened[] */ + int use_firstwin = FALSE; /* use first window for arglist */ + int split_ret = OK; + int p_ea_save; +--- 4261,4272 ---- + do_arg_all(count, forceit, keep_tabs) + int count; + int forceit; /* hide buffers in current windows */ +! int keep_tabs; /* keep current tabs, for ":tab drop file" */ + { + int i; + win_T *wp, *wpnext; + char_u *opened; /* array of flags for which args are open */ +! int opened_len; /* length of opened[] */ + int use_firstwin = FALSE; /* use first window for arglist */ + int split_ret = OK; + int p_ea_save; +*************** +*** 4946,4955 **** + /* Expand "~/" in the file name at "line + 1" to a full path. + * Then try shortening it by comparing with the current directory */ + expand_env(xline, NameBuff, MAXPATHL); +! mch_dirname(IObuff, IOSIZE); +! sfname = shorten_fname(NameBuff, IObuff); +! if (sfname == NULL) +! sfname = NameBuff; + + buf = buflist_new(NameBuff, sfname, (linenr_T)0, BLN_LISTED); + if (buf != NULL) /* just in case... */ +--- 4946,4952 ---- + /* Expand "~/" in the file name at "line + 1" to a full path. + * Then try shortening it by comparing with the current directory */ + expand_env(xline, NameBuff, MAXPATHL); +! sfname = shorten_fname1(NameBuff); + + buf = buflist_new(NameBuff, sfname, (linenr_T)0, BLN_LISTED); + if (buf != NULL) /* just in case... */ +*** ../vim-7.1.125/src/ex_docmd.c Wed Sep 26 22:35:06 2007 +--- src/ex_docmd.c Wed Sep 26 20:29:36 2007 +*************** +*** 276,282 **** + static void ex_swapname __ARGS((exarg_T *eap)); + static void ex_syncbind __ARGS((exarg_T *eap)); + static void ex_read __ARGS((exarg_T *eap)); +- static void ex_cd __ARGS((exarg_T *eap)); + static void ex_pwd __ARGS((exarg_T *eap)); + static void ex_equal __ARGS((exarg_T *eap)); + static void ex_sleep __ARGS((exarg_T *eap)); +--- 276,281 ---- +*************** +*** 7778,7784 **** + /* + * ":cd", ":lcd", ":chdir" and ":lchdir". + */ +! static void + ex_cd(eap) + exarg_T *eap; + { +--- 7777,7783 ---- + /* + * ":cd", ":lcd", ":chdir" and ":lchdir". + */ +! void + ex_cd(eap) + exarg_T *eap; + { +*** ../vim-7.1.125/src/fileio.c Sat Sep 29 14:15:00 2007 +--- src/fileio.c Wed Sep 26 20:02:54 2007 +*************** +*** 114,120 **** + { + int bw_fd; /* file descriptor */ + char_u *bw_buf; /* buffer with data to be written */ +! int bw_len; /* lenght of data */ + #ifdef HAS_BW_FLAGS + int bw_flags; /* FIO_ flags */ + #endif +--- 114,120 ---- + { + int bw_fd; /* file descriptor */ + char_u *bw_buf; /* buffer with data to be written */ +! int bw_len; /* length of data */ + #ifdef HAS_BW_FLAGS + int bw_flags; /* FIO_ flags */ + #endif +*************** +*** 5552,5557 **** +--- 5553,5579 ---- + return (int)(p - buf); + } + #endif ++ ++ /* ++ * Try to find a shortname by comparing the fullname with the current ++ * directory. ++ * Returns "full_path" or pointer into "full_path" if shortened. ++ */ ++ char_u * ++ shorten_fname1(full_path) ++ char_u *full_path; ++ { ++ char_u dirname[MAXPATHL]; ++ char_u *p = full_path; ++ ++ if (mch_dirname(dirname, MAXPATHL) == OK) ++ { ++ p = shorten_fname(full_path, dirname); ++ if (p == NULL || *p == NUL) ++ p = full_path; ++ } ++ return p; ++ } + + /* + * Try to find a shortname by comparing the fullname with the current +*** ../vim-7.1.125/src/gui_gtk.c Tue Aug 14 14:59:41 2007 +--- src/gui_gtk.c Wed Sep 26 20:07:58 2007 +*************** +*** 1272,1278 **** + GtkWidget *fc; + #endif + char_u dirbuf[MAXPATHL]; +- char_u *p; + + # ifdef HAVE_GTK2 + title = CONVERT_TO_UTF8(title); +--- 1272,1277 ---- +*************** +*** 1363,1373 **** + return NULL; + + /* shorten the file name if possible */ +! mch_dirname(dirbuf, MAXPATHL); +! p = shorten_fname(gui.browse_fname, dirbuf); +! if (p == NULL) +! p = gui.browse_fname; +! return vim_strsave(p); + } + + #if defined(HAVE_GTK2) || defined(PROTO) +--- 1362,1368 ---- + return NULL; + + /* shorten the file name if possible */ +! return vim_strsave(shorten_fname1(gui.browse_fname)); + } + + #if defined(HAVE_GTK2) || defined(PROTO) +*************** +*** 1427,1437 **** + return NULL; + + /* shorten the file name if possible */ +! mch_dirname(dirbuf, MAXPATHL); +! p = shorten_fname(dirname, dirbuf); +! if (p == NULL || *p == NUL) +! p = dirname; +! p = vim_strsave(p); + g_free(dirname); + return p; + +--- 1422,1428 ---- + return NULL; + + /* shorten the file name if possible */ +! p = vim_strsave(shorten_fname1(dirname)); + g_free(dirname); + return p; + +*** ../vim-7.1.125/src/gui_w48.c Thu May 10 19:17:07 2007 +--- src/gui_w48.c Wed Sep 26 20:09:33 2007 +*************** +*** 3301,3311 **** + SetFocus(s_hwnd); + + /* Shorten the file name if possible */ +! mch_dirname(IObuff, IOSIZE); +! p = shorten_fname((char_u *)fileBuf, IObuff); +! if (p == NULL) +! p = (char_u *)fileBuf; +! return vim_strsave(p); + } + # endif /* FEAT_MBYTE */ + +--- 3301,3307 ---- + SetFocus(s_hwnd); + + /* Shorten the file name if possible */ +! return vim_strsave(shorten_fname1((char_u *)fileBuf)); + } + # endif /* FEAT_MBYTE */ + +*************** +*** 3450,3460 **** + SetFocus(s_hwnd); + + /* Shorten the file name if possible */ +! mch_dirname(IObuff, IOSIZE); +! p = shorten_fname((char_u *)fileBuf, IObuff); +! if (p == NULL) +! p = (char_u *)fileBuf; +! return vim_strsave(p); + } + #endif /* FEAT_BROWSE */ + +--- 3446,3452 ---- + SetFocus(s_hwnd); + + /* Shorten the file name if possible */ +! return vim_strsave(shorten_fname1((char_u *)fileBuf)); + } + #endif /* FEAT_BROWSE */ + +*** ../vim-7.1.125/src/proto/ex_docmd.pro Sun May 6 14:46:22 2007 +--- src/proto/ex_docmd.pro Wed Sep 26 20:30:10 2007 +*************** +*** 39,44 **** +--- 39,45 ---- + void tabpage_new __ARGS((void)); + void do_exedit __ARGS((exarg_T *eap, win_T *old_curwin)); + void free_cd_dir __ARGS((void)); ++ void ex_cd __ARGS((exarg_T *eap)); + void do_sleep __ARGS((long msec)); + int vim_mkdir_emsg __ARGS((char_u *name, int prot)); + FILE *open_exfile __ARGS((char_u *fname, int forceit, char *mode)); +*** ../vim-7.1.125/src/proto/fileio.pro Sat Sep 29 14:15:00 2007 +--- src/proto/fileio.pro Wed Sep 26 20:05:02 2007 +*************** +*** 6,11 **** +--- 6,12 ---- + 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)); ++ char_u *shorten_fname1 __ARGS((char_u *full_path)); + char_u *shorten_fname __ARGS((char_u *full_path, char_u *dir_name)); + void shorten_fnames __ARGS((int force)); + void shorten_filenames __ARGS((char_u **fnames, int count)); +*** ../vim-7.1.125/src/quickfix.c Sun Sep 16 13:26:56 2007 +--- src/quickfix.c Sun Sep 30 13:58:38 2007 +*************** +*** 2972,2977 **** +--- 2972,2978 ---- + regmmatch_T regmatch; + int fcount; + char_u **fnames; ++ char_u *fname; + char_u *s; + char_u *p; + int fi; +*************** +*** 2995,3000 **** +--- 2996,3004 ---- + int flags = 0; + colnr_T col; + long tomatch; ++ char_u dirname_start[MAXPATHL]; ++ char_u dirname_now[MAXPATHL]; ++ char_u *target_dir = NULL; + + switch (eap->cmdidx) + { +*************** +*** 3069,3085 **** + goto theend; + } + + seconds = (time_t)0; + for (fi = 0; fi < fcount && !got_int && tomatch > 0; ++fi) + { + if (time(NULL) > seconds) + { +! /* Display the file name every second or so. */ + seconds = time(NULL); + msg_start(); +! p = msg_strtrunc(fnames[fi], TRUE); + if (p == NULL) +! msg_outtrans(fnames[fi]); + else + { + msg_outtrans(p); +--- 3073,3095 ---- + goto theend; + } + ++ /* Remember the current directory, because a BufRead autocommand that does ++ * ":lcd %:p:h" changes the meaning of short path names. */ ++ mch_dirname(dirname_start, MAXPATHL); ++ + seconds = (time_t)0; + for (fi = 0; fi < fcount && !got_int && tomatch > 0; ++fi) + { ++ fname = shorten_fname1(fnames[fi]); + if (time(NULL) > seconds) + { +! /* Display the file name every second or so, show the user we are +! * working on it. */ + seconds = time(NULL); + msg_start(); +! p = msg_strtrunc(fname, TRUE); + if (p == NULL) +! msg_outtrans(fname); + else + { + msg_outtrans(p); +*************** +*** 3111,3117 **** + + /* Load file into a buffer, so that 'fileencoding' is detected, + * autocommands applied, etc. */ +! buf = load_dummy_buffer(fnames[fi]); + + p_mls = save_mls; + #if defined(FEAT_AUTOCMD) && defined(FEAT_SYN_HL) +--- 3121,3139 ---- + + /* Load file into a buffer, so that 'fileencoding' is detected, + * autocommands applied, etc. */ +! buf = load_dummy_buffer(fname); +! +! /* When autocommands changed directory: go back. We assume it was +! * ":lcd %:p:h". */ +! mch_dirname(dirname_now, MAXPATHL); +! if (STRCMP(dirname_start, dirname_now) != 0) +! { +! exarg_T ea; +! +! ea.arg = dirname_start; +! ea.cmdidx = CMD_lcd; +! ex_cd(&ea); +! } + + p_mls = save_mls; + #if defined(FEAT_AUTOCMD) && defined(FEAT_SYN_HL) +*************** +*** 3125,3131 **** + if (buf == NULL) + { + if (!got_int) +! smsg((char_u *)_("Cannot open file \"%s\""), fnames[fi]); + } + else + { +--- 3147,3153 ---- + if (buf == NULL) + { + if (!got_int) +! smsg((char_u *)_("Cannot open file \"%s\""), fname); + } + else + { +*************** +*** 3139,3147 **** + while (vim_regexec_multi(®match, curwin, buf, lnum, + col) > 0) + { + if (qf_add_entry(qi, &prevp, + NULL, /* dir */ +! fnames[fi], + 0, + ml_get_buf(buf, + regmatch.startpos[0].lnum + lnum, FALSE), +--- 3161,3170 ---- + while (vim_regexec_multi(®match, curwin, buf, lnum, + col) > 0) + { ++ ; + if (qf_add_entry(qi, &prevp, + NULL, /* dir */ +! fname, + 0, + ml_get_buf(buf, + regmatch.startpos[0].lnum + lnum, FALSE), +*************** +*** 3209,3214 **** +--- 3232,3244 ---- + + if (buf != NULL) + { ++ /* If the buffer is still loaded we need to use the ++ * directory we jumped to below. */ ++ if (buf == first_match_buf ++ && target_dir == NULL ++ && STRCMP(dirname_start, dirname_now) != 0) ++ target_dir = vim_strsave(dirname_now); ++ + /* The buffer is still loaded, the Filetype autocommands + * need to be done now, in that buffer. And the modelines + * need to be done (again). But not the window-local +*************** +*** 3252,3257 **** +--- 3282,3297 ---- + /* If we jumped to another buffer redrawing will already be + * taken care of. */ + redraw_for_dummy = FALSE; ++ ++ /* Jump to the directory used after loading the buffer. */ ++ if (curbuf == first_match_buf && target_dir != NULL) ++ { ++ exarg_T ea; ++ ++ ea.arg = target_dir; ++ ea.cmdidx = CMD_lcd; ++ ex_cd(&ea); ++ } + } + } + else +*************** +*** 3269,3274 **** +--- 3309,3315 ---- + } + + theend: ++ vim_free(target_dir); + vim_free(regmatch.regprog); + } + +*** ../vim-7.1.125/src/version.c Sat Sep 29 14:15:00 2007 +--- src/version.c Sun Sep 30 13:41:30 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 126, + /**/ + +-- +The MS-Windows registry is no more hostile than any other bunch of state +information... that is held in a binary format... a format that nobody +understands... and is replicated and cached in a complex and largely +undocumented way... and contains large amounts of duplicate and obfuscated +information... (Ben Peterson) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.127 b/7.1.127 new file mode 100644 index 00000000..5f161fcd --- /dev/null +++ b/7.1.127 @@ -0,0 +1,78 @@ +To: vim-dev@vim.org +Subject: About patch 7.1.127 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.127 +Problem: Memory leak when doing cmdline completion. (Dominique Pelle) +Solution: Free "orig" argument of ExpandOne() when it's not used. +Files: src/ex_getln.c + + +*** ../vim-7.1.126/src/ex_getln.c Sat Sep 29 14:15:00 2007 +--- src/ex_getln.c Sun Sep 30 17:55:47 2007 +*************** +*** 3316,3321 **** +--- 3316,3325 ---- + * 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 ++ * should either be kept in orig_save or freed. When "mode" is WILD_NEXT or ++ * WILD_PREV "orig" should be NULL. ++ * + * Results are cached in xp->xp_files and xp->xp_numfiles, except when "mode" + * is WILD_EXPAND_FREE or WILD_ALL. + * +*************** +*** 3400,3406 **** + return NULL; + } + +! /* free old names */ + if (xp->xp_numfiles != -1 && mode != WILD_ALL && mode != WILD_LONGEST) + { + FreeWild(xp->xp_numfiles, xp->xp_files); +--- 3404,3410 ---- + return NULL; + } + +! /* free old names */ + if (xp->xp_numfiles != -1 && mode != WILD_ALL && mode != WILD_LONGEST) + { + FreeWild(xp->xp_numfiles, xp->xp_files); +*************** +*** 3540,3545 **** +--- 3544,3553 ---- + + if (mode == WILD_EXPAND_FREE || mode == WILD_ALL) + ExpandCleanup(xp); ++ ++ /* Free "orig" if it wasn't stored in "orig_save". */ ++ if (orig != orig_save) ++ vim_free(orig); + + return ss; + } +*** ../vim-7.1.126/src/version.c Sun Sep 30 14:00:41 2007 +--- src/version.c Sun Sep 30 14:20:14 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 127, + /**/ + +-- +A M00se once bit my sister ... + "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 /// diff --git a/7.1.128 b/7.1.128 new file mode 100644 index 00000000..6750de40 --- /dev/null +++ b/7.1.128 @@ -0,0 +1,67 @@ +To: vim-dev@vim.org +Subject: About patch 7.1.128 (extra) +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.128 (extra) +Problem: Build problems with new version of Cygwin. +Solution: Remove -D__IID_DEFINED__, like with MingW. (Guopeng Wen) +Files: src/Make_cyg.mak + + +*** ../vim-7.1.127/src/Make_cyg.mak Sun Apr 30 20:46:49 2006 +--- src/Make_cyg.mak Sat Sep 29 13:09:34 2007 +*************** +*** 1,6 **** + # + # Makefile for VIM on Win32, using Cygnus gcc +! # Last updated by Dan Sharp. Last Change: 2006 Apr 30 + # + # Also read INSTALLpc.txt! + # +--- 1,6 ---- + # + # Makefile for VIM on Win32, using Cygnus gcc +! # Last updated by Dan Sharp. Last Change: 2007 Sep 29 + # + # Also read INSTALLpc.txt! + # +*************** +*** 503,509 **** + $(CC) -c $(CFLAGS) if_cscope.c -o $(OUTDIR)/if_cscope.o + + $(OUTDIR)/if_ole.o: if_ole.cpp $(INCL) +! $(CC) -c $(CFLAGS) -D__IID_DEFINED__ if_ole.cpp -o $(OUTDIR)/if_ole.o + + if_perl.c: if_perl.xs typemap + $(PERL)/bin/perl `cygpath -d $(PERL)/lib/ExtUtils/xsubpp` \ +--- 503,509 ---- + $(CC) -c $(CFLAGS) if_cscope.c -o $(OUTDIR)/if_cscope.o + + $(OUTDIR)/if_ole.o: if_ole.cpp $(INCL) +! $(CC) -c $(CFLAGS) if_ole.cpp -o $(OUTDIR)/if_ole.o + + if_perl.c: if_perl.xs typemap + $(PERL)/bin/perl `cygpath -d $(PERL)/lib/ExtUtils/xsubpp` \ +*** ../vim-7.1.127/src/version.c Sun Sep 30 22:10:45 2007 +--- src/version.c Sun Sep 30 22:27:51 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 128, + /**/ + +-- +Mynd you, m00se bites Kan be pretty nasti ... + "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 /// diff --git a/7.1.129 b/7.1.129 new file mode 100644 index 00000000..f1da884f --- /dev/null +++ b/7.1.129 @@ -0,0 +1,56 @@ +To: vim-dev@vim.org +Subject: About patch 7.1.129 (extra) +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.129 (extra) +Problem: Win32: Can't get the user name when it is longer than 15 + characters. +Solution: Use UNLEN instead of MAX_COMPUTERNAME_LENGTH. (Alexei Alexandrov) +Files: src/os_win32.c + + +*** ../vim-7.1.128/src/os_win32.c Thu May 10 19:22:59 2007 +--- src/os_win32.c Mon Oct 1 20:07:24 2007 +*************** +*** 2378,2384 **** + char_u *s, + int len) + { +! char szUserName[MAX_COMPUTERNAME_LENGTH + 1]; + DWORD cch = sizeof szUserName; + + if (GetUserName(szUserName, &cch)) +--- 2378,2384 ---- + char_u *s, + int len) + { +! char szUserName[256 + 1]; /* UNLEN is 256 */ + DWORD cch = sizeof szUserName; + + if (GetUserName(szUserName, &cch)) +*** ../vim-7.1.128/src/version.c Sun Sep 30 22:28:08 2007 +--- src/version.c Mon Oct 1 20:32:52 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 129, + /**/ + +-- +ARTHUR: It is I, Arthur, son of Uther Pendragon, from the castle of Camelot. + King of all Britons, defeator of the Saxons, sovereign of all England! + [Pause] +SOLDIER: Get away! + "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 /// diff --git a/7.1.130 b/7.1.130 new file mode 100644 index 00000000..f3c098de --- /dev/null +++ b/7.1.130 @@ -0,0 +1,363 @@ +To: vim-dev@vim.org +Subject: About patch 7.1.130 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.130 +Problem: Crash with specific order of undo and redo. (A.Politz) +Solution: Clear and adjust pointers properly. Add u_check() for debugging. +Files: src/undo.c, src/structs.h + + +*** ../vim-7.1.129/src/undo.c Thu May 10 20:01:43 2007 +--- src/undo.c Mon Oct 1 22:49:16 2007 +*************** +*** 76,81 **** +--- 76,87 ---- + * buffer is unloaded. + */ + ++ /* Uncomment the next line for including the u_check() function. This warns ++ * for errors in the debug information. */ ++ /* #define U_DEBUG 1 */ ++ #define UH_MAGIC 0x18dade /* value for uh_magic when in use */ ++ #define UE_MAGIC 0xabc123 /* value for ue_magic when in use */ ++ + #include "vim.h" + + /* See below: use malloc()/free() for memory management. */ +*************** +*** 113,118 **** +--- 119,213 ---- + */ + static int undo_undoes = FALSE; + ++ #ifdef U_DEBUG ++ /* ++ * Check the undo structures for being valid. Print a warning when something ++ * looks wrong. ++ */ ++ static int seen_b_u_curhead; ++ static int seen_b_u_newhead; ++ static int header_count; ++ ++ static void ++ u_check_tree(u_header_T *uhp, ++ u_header_T *exp_uh_next, ++ u_header_T *exp_uh_alt_prev) ++ { ++ u_entry_T *uep; ++ ++ if (uhp == NULL) ++ return; ++ ++header_count; ++ if (uhp == curbuf->b_u_curhead && ++seen_b_u_curhead > 1) ++ { ++ EMSG("b_u_curhead found twice (looping?)"); ++ return; ++ } ++ if (uhp == curbuf->b_u_newhead && ++seen_b_u_newhead > 1) ++ { ++ EMSG("b_u_newhead found twice (looping?)"); ++ return; ++ } ++ ++ if (uhp->uh_magic != UH_MAGIC) ++ EMSG("uh_magic wrong (may be using freed memory)"); ++ else ++ { ++ /* Check pointers back are correct. */ ++ if (uhp->uh_next != exp_uh_next) ++ { ++ EMSG("uh_next wrong"); ++ smsg((char_u *)"expected: 0x%x, actual: 0x%x", ++ exp_uh_next, uhp->uh_next); ++ } ++ if (uhp->uh_alt_prev != exp_uh_alt_prev) ++ { ++ EMSG("uh_alt_prev wrong"); ++ smsg((char_u *)"expected: 0x%x, actual: 0x%x", ++ exp_uh_alt_prev, uhp->uh_alt_prev); ++ } ++ ++ /* Check the undo tree at this header. */ ++ for (uep = uhp->uh_entry; uep != NULL; uep = uep->ue_next) ++ { ++ if (uep->ue_magic != UE_MAGIC) ++ { ++ EMSG("ue_magic wrong (may be using freed memory)"); ++ break; ++ } ++ } ++ ++ /* Check the next alt tree. */ ++ u_check_tree(uhp->uh_alt_next, uhp->uh_next, uhp); ++ ++ /* Check the next header in this branch. */ ++ u_check_tree(uhp->uh_prev, uhp, NULL); ++ } ++ } ++ ++ void ++ u_check(int newhead_may_be_NULL) ++ { ++ seen_b_u_newhead = 0; ++ seen_b_u_curhead = 0; ++ header_count = 0; ++ ++ u_check_tree(curbuf->b_u_oldhead, NULL, NULL); ++ ++ if (seen_b_u_newhead == 0 && curbuf->b_u_oldhead != NULL ++ && !(newhead_may_be_NULL && curbuf->b_u_newhead == NULL)) ++ EMSGN("b_u_newhead invalid: 0x%x", curbuf->b_u_newhead); ++ if (curbuf->b_u_curhead != NULL && seen_b_u_curhead == 0) ++ EMSGN("b_u_curhead invalid: 0x%x", curbuf->b_u_curhead); ++ if (header_count != curbuf->b_u_numhead) ++ { ++ EMSG("b_u_numhead invalid"); ++ smsg((char_u *)"expected: %ld, actual: %ld", ++ (long)header_count, (long)curbuf->b_u_numhead); ++ } ++ } ++ #endif ++ + /* + * Save the current line for both the "u" and "U" command. + * Returns OK or FAIL. +*************** +*** 243,248 **** +--- 338,346 ---- + if (!undo_allowed()) + return FAIL; + ++ #ifdef U_DEBUG ++ u_check(FALSE); ++ #endif + #ifdef FEAT_NETBEANS_INTG + /* + * Netbeans defines areas that cannot be modified. Bail out here when +*************** +*** 294,299 **** +--- 392,400 ---- + uhp = (u_header_T *)U_ALLOC_LINE((unsigned)sizeof(u_header_T)); + if (uhp == NULL) + goto nomem; ++ #ifdef U_DEBUG ++ uhp->uh_magic = UH_MAGIC; ++ #endif + } + else + uhp = NULL; +*************** +*** 316,323 **** + { + u_header_T *uhfree = curbuf->b_u_oldhead; + +! /* If there is no branch only free one header. */ +! if (uhfree->uh_alt_next == NULL) + u_freeheader(curbuf, uhfree, &old_curhead); + else + { +--- 417,427 ---- + { + u_header_T *uhfree = curbuf->b_u_oldhead; + +! if (uhfree == old_curhead) +! /* Can't reconnect the branch, delete all of it. */ +! u_freebranch(curbuf, uhfree, &old_curhead); +! else if (uhfree->uh_alt_next == NULL) +! /* There is no branch, only free one header. */ + u_freeheader(curbuf, uhfree, &old_curhead); + else + { +*************** +*** 326,331 **** +--- 430,438 ---- + uhfree = uhfree->uh_alt_next; + u_freebranch(curbuf, uhfree, &old_curhead); + } ++ #ifdef U_DEBUG ++ u_check(TRUE); ++ #endif + } + + if (uhp == NULL) /* no undo at all */ +*************** +*** 478,483 **** +--- 585,593 ---- + uep = (u_entry_T *)U_ALLOC_LINE((unsigned)sizeof(u_entry_T)); + if (uep == NULL) + goto nomem; ++ #ifdef U_DEBUG ++ uep->ue_magic = UE_MAGIC; ++ #endif + + uep->ue_size = size; + uep->ue_top = top; +*************** +*** 525,530 **** +--- 635,643 ---- + curbuf->b_u_synced = FALSE; + undo_undoes = FALSE; + ++ #ifdef U_DEBUG ++ u_check(FALSE); ++ #endif + return OK; + + nomem: +*************** +*** 955,960 **** +--- 1068,1076 ---- + int empty_buffer; /* buffer became empty */ + u_header_T *curhead = curbuf->b_u_curhead; + ++ #ifdef U_DEBUG ++ u_check(FALSE); ++ #endif + old_flags = curhead->uh_flags; + new_flags = (curbuf->b_changed ? UH_CHANGED : 0) + + ((curbuf->b_ml.ml_flags & ML_EMPTY) ? UH_EMPTYBUF : 0); +*************** +*** 1186,1191 **** +--- 1302,1310 ---- + /* The timestamp can be the same for multiple changes, just use the one of + * the undone/redone change. */ + curbuf->b_u_seq_time = curhead->uh_time; ++ #ifdef U_DEBUG ++ u_check(FALSE); ++ #endif + } + + /* +*************** +*** 1515,1521 **** + } + + /* +! * Free one header and its entry list and adjust the pointers. + */ + static void + u_freeheader(buf, uhp, uhpp) +--- 1634,1640 ---- + } + + /* +! * Free one header "uhp" and its entry list and adjust the pointers. + */ + static void + u_freeheader(buf, uhp, uhpp) +*************** +*** 1523,1528 **** +--- 1642,1649 ---- + u_header_T *uhp; + u_header_T **uhpp; /* if not NULL reset when freeing this header */ + { ++ u_header_T *uhap; ++ + /* When there is an alternate redo list free that branch completely, + * because we can never go there. */ + if (uhp->uh_alt_next != NULL) +*************** +*** 1540,1546 **** + if (uhp->uh_prev == NULL) + buf->b_u_newhead = uhp->uh_next; + else +! uhp->uh_prev->uh_next = uhp->uh_next; + + u_freeentries(buf, uhp, uhpp); + } +--- 1661,1668 ---- + if (uhp->uh_prev == NULL) + buf->b_u_newhead = uhp->uh_next; + else +! for (uhap = uhp->uh_prev; uhap != NULL; uhap = uhap->uh_alt_next) +! uhap->uh_next = uhp->uh_next; + + u_freeentries(buf, uhp, uhpp); + } +*************** +*** 1585,1590 **** +--- 1707,1714 ---- + /* Check for pointers to the header that become invalid now. */ + if (buf->b_u_curhead == uhp) + buf->b_u_curhead = NULL; ++ if (buf->b_u_newhead == uhp) ++ buf->b_u_newhead = NULL; /* freeing the newest entry */ + if (uhpp != NULL && uhp == *uhpp) + *uhpp = NULL; + +*************** +*** 1594,1599 **** +--- 1718,1726 ---- + u_freeentry(uep, uep->ue_size); + } + ++ #ifdef U_DEBUG ++ uhp->uh_magic = 0; ++ #endif + U_FREE_LINE((char_u *)uhp); + --buf->b_u_numhead; + } +*************** +*** 1609,1614 **** +--- 1736,1744 ---- + while (n > 0) + U_FREE_LINE(uep->ue_array[--n]); + U_FREE_LINE((char_u *)uep->ue_array); ++ #ifdef U_DEBUG ++ uep->ue_magic = 0; ++ #endif + U_FREE_LINE((char_u *)uep); + } + +*** ../vim-7.1.129/src/structs.h Sun Aug 12 15:50:26 2007 +--- src/structs.h Sat Sep 29 15:03:38 2007 +*************** +*** 278,283 **** +--- 278,286 ---- + linenr_T ue_lcount; /* linecount when u_save called */ + char_u **ue_array; /* array of lines in undo block */ + long ue_size; /* number of lines in ue_array */ ++ #ifdef U_DEBUG ++ int ue_magic; /* magic number to check allocation */ ++ #endif + }; + + struct u_header +*************** +*** 300,305 **** +--- 303,311 ---- + visualinfo_T uh_visual; /* Visual areas before undo/after redo */ + #endif + time_t uh_time; /* timestamp when the change was made */ ++ #ifdef U_DEBUG ++ int uh_magic; /* magic number to check allocation */ ++ #endif + }; + + /* values for uh_flags */ +*** ../vim-7.1.129/src/version.c Mon Oct 1 20:33:45 2007 +--- src/version.c Mon Oct 1 22:50:23 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 130, + /**/ + +-- +FIRST SOLDIER: So they wouldn't be able to bring a coconut back anyway. +SECOND SOLDIER: Wait a minute! Suppose two swallows carried it together? +FIRST SOLDIER: No, they'd have to have it on a line. + "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 /// diff --git a/7.1.131 b/7.1.131 new file mode 100644 index 00000000..830a7dc1 --- /dev/null +++ b/7.1.131 @@ -0,0 +1,50 @@ +To: vim-dev@vim.org +Subject: patch 7.1.131 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.131 +Problem: ":mksession" always adds ":setlocal autoread". (Christian J. + Robinson) +Solution: Skip boolean global/local option using global value. +Files: src/option.c + + +*** ../vim-7.1.130/src/option.c Wed Sep 26 22:35:06 2007 +--- src/option.c Sun Sep 30 16:21:08 2007 +*************** +*** 8753,8758 **** +--- 8753,8760 ---- + char *name; + int value; + { ++ if (value < 0) /* global/local option using global value */ ++ return OK; + if (fprintf(fd, "%s %s%s", cmd, value ? "" : "no", name) < 0 + || put_eol(fd) < 0) + return FAIL; +*** ../vim-7.1.130/src/version.c Mon Oct 1 22:53:27 2007 +--- src/version.c Tue Oct 2 20:39:02 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 131, + /**/ + +-- +ARTHUR: Old woman! +DENNIS: Man! +ARTHUR: Man. I'm sorry. Old man, What knight live in that castle over there? +DENNIS: I'm thirty-seven. + "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 /// diff --git a/7.1.132 b/7.1.132 new file mode 100644 index 00000000..0d549d0e --- /dev/null +++ b/7.1.132 @@ -0,0 +1,54 @@ +To: vim-dev@vim.org +Subject: patch 7.1.132 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.132 +Problem: getpos("'>") may return a negative column number for a Linewise + selection. (A.Politz) +Solution: Don't add one to MAXCOL. +Files: src/eval.c + + +*** ../vim-7.1.131/src/eval.c Tue Sep 25 20:39:14 2007 +--- src/eval.c Mon Oct 1 20:56:09 2007 +*************** +*** 10388,10394 **** + list_append_number(l, (varnumber_T)0); + list_append_number(l, (fp != NULL) ? (varnumber_T)fp->lnum + : (varnumber_T)0); +! list_append_number(l, (fp != NULL) ? (varnumber_T)fp->col + 1 + : (varnumber_T)0); + list_append_number(l, + #ifdef FEAT_VIRTUALEDIT +--- 10388,10395 ---- + list_append_number(l, (varnumber_T)0); + list_append_number(l, (fp != NULL) ? (varnumber_T)fp->lnum + : (varnumber_T)0); +! list_append_number(l, (fp != NULL) +! ? (varnumber_T)(fp->col == MAXCOL ? MAXCOL : fp->col + 1) + : (varnumber_T)0); + list_append_number(l, + #ifdef FEAT_VIRTUALEDIT +*** ../vim-7.1.131/src/version.c Tue Oct 2 20:40:01 2007 +--- src/version.c Tue Oct 2 22:07:17 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 132, + /**/ + +-- +"The future's already arrived - it's just not evenly distributed yet." + -- William Gibson + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.133 b/7.1.133 new file mode 100644 index 00000000..c41190d9 --- /dev/null +++ b/7.1.133 @@ -0,0 +1,56 @@ +To: vim-dev@vim.org +Subject: patch 7.1.133 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.133 (after 7.1.126) +Problem: shorten_fname1() linked when it's not needed. +Solution: Add #ifdef. +Files: src/fileio.c + + +*** ../vim-7.1.132/src/fileio.c Sun Sep 30 14:00:41 2007 +--- src/fileio.c Sun Sep 30 16:32:43 2007 +*************** +*** 5553,5558 **** +--- 5554,5561 ---- + } + #endif + ++ #if defined(FEAT_VIMINFO) || defined(FEAT_BROWSE) || \ ++ defined(FEAT_QUICKFIX) || defined(PROTO) + /* + * Try to find a shortname by comparing the fullname with the current + * directory. +*************** +*** 5573,5578 **** +--- 5576,5582 ---- + } + return p; + } ++ #endif + + /* + * Try to find a shortname by comparing the fullname with the current +*** ../vim-7.1.132/src/version.c Tue Oct 2 22:07:58 2007 +--- src/version.c Wed Oct 3 12:46:59 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 133, + /**/ + +-- +"Beware of bugs in the above code; I have only proved +it correct, not tried it." -- Donald Knuth + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.134 b/7.1.134 new file mode 100644 index 00000000..7fbf6650 --- /dev/null +++ b/7.1.134 @@ -0,0 +1,377 @@ +To: vim-dev@vim.org +Subject: patch 7.1.134 (extra) +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.134 (extra) +Problem: Win32: Can't build with VC8 +Solution: Detect the MSVC version instead of using NMAKE_VER. + (Mike Williams) +Files: src/Make_mvc.mak + + +*** ../vim-7.1.133/src/Make_mvc.mak Tue Feb 20 03:15:08 2007 +--- src/Make_mvc.mak Mon Oct 1 21:37:20 2007 +*************** +*** 92,97 **** +--- 92,99 ---- + # Netbeans Debugging Support: NBDEBUG=[yes or no] (should be no, yes + # doesn't work) + # ++ # Visual C Version: MSVCVER=m.n (default derived from nmake if undefined) ++ # + # You can combine any of these interfaces + # + # Example: To build the non-debug, GUI version with Perl interface: +*************** +*** 101,107 **** + # This makefile gives a fineness of control which is not supported in + # Visual C++ configuration files. Therefore, debugging requires a bit of + # extra work. +! # Make_dvc.mak is a Visual C++ project to access that support. + # To use Make_dvc.mak: + # 1) Build Vim with Make_mvc.mak. + # Use a "DEBUG=yes" argument to build Vim with debug support. +--- 103,110 ---- + # This makefile gives a fineness of control which is not supported in + # Visual C++ configuration files. Therefore, debugging requires a bit of + # extra work. +! # Make_dvc.mak is a Visual C++ project to access that support. It may be +! # badly out of date for the Visual C++ you are using... + # To use Make_dvc.mak: + # 1) Build Vim with Make_mvc.mak. + # Use a "DEBUG=yes" argument to build Vim with debug support. +*************** +*** 198,211 **** + !if "$(DEBUG)" != "yes" + NODEBUG = 1 + !else + MAKEFLAGS_GVIMEXT = DEBUG=yes + !endif + + +! # Get all sorts of useful, standard macros from the SDK. (Note that +! # MSVC 2.2 does not install in the \msvc20\include +! # directory, but you can find it in \msvc20\include on the CD-ROM. +! # You may also need from the same place.) + + !include + +--- 201,212 ---- + !if "$(DEBUG)" != "yes" + NODEBUG = 1 + !else ++ !undef NODEBUG + MAKEFLAGS_GVIMEXT = DEBUG=yes + !endif + + +! # Get all sorts of useful, standard macros from the Platform SDK. + + !include + +*************** +*** 272,283 **** + + # Set which version of the CRT to use + !if defined(USE_MSVCRT) +! CVARS = $(cvarsdll) + # !elseif defined(MULTITHREADED) + # CVARS = $(cvarsmt) + !else + # CVARS = $(cvars) +! CVARS = $(cvarsmt) + !endif + + # need advapi32.lib for GetUserName() +--- 273,284 ---- + + # Set which version of the CRT to use + !if defined(USE_MSVCRT) +! # CVARS = $(cvarsdll) + # !elseif defined(MULTITHREADED) + # CVARS = $(cvarsmt) + !else + # CVARS = $(cvars) +! # CVARS = $(cvarsmt) + !endif + + # need advapi32.lib for GetUserName() +*************** +*** 320,326 **** +--- 321,364 ---- + INTDIR=$(OBJDIR) + OUTDIR=$(OBJDIR) + ++ # Derive version of VC being used from nmake if not specified ++ !if "$(MSVCVER)" == "" ++ !if "$(_NMAKE_VER)" == "" ++ MSVCVER = 4.0 ++ !endif ++ !if "$(_NMAKE_VER)" == "162" ++ MSVCVER = 5.0 ++ !endif ++ !if "$(_NMAKE_VER)" == "6.00.8168.0" ++ MSVCVER = 6.0 ++ !endif ++ !if "$(_NMAKE_VER)" == "7.00.9466" ++ MSVCVER = 7.0 ++ !endif ++ !if "$(_NMAKE_VER)" == "7.10.3077" ++ MSVCVER = 7.1 ++ !endif ++ !if "$(_NMAKE_VER)" == "8.00.50727.42" ++ MSVCVER = 8.0 ++ !endif ++ !if "$(_NMAKE_VER)" == "8.00.50727.762" ++ MSVCVER = 8.0 ++ !endif ++ !endif ++ ++ # Abort bulding VIM if version of VC is unrecognised. ++ !ifndef MSVCVER ++ !message *** ERROR ++ !message Cannot determine Visual C version being used. If you are using the ++ !message Windows SDK then you must have the environment variable MSVCVER set to ++ !message your version of the VC compiler. If you are not using the Express ++ !message version of Visual C you van either set MSVCVER or update this makefile ++ !message to handle the new value for _NMAKE_VER. ++ !error Make aborted. ++ !endif ++ + # Convert processor ID to MVC-compatible number ++ !if "$(MSVCVER)" != "8.0" + !if "$(CPUNR)" == "i386" + CPUARG = /G3 + !elseif "$(CPUNR)" == "i486" +*************** +*** 334,339 **** +--- 372,386 ---- + !else + CPUARG = + !endif ++ !else ++ # VC8 only allows specifying SSE architecture ++ !if "$(CPUNR)" == "pentium4" ++ CPUARG = /arch:SSE2 ++ !endif ++ !endif ++ ++ LIBC = ++ DEBUGINFO = /Zi + + !ifdef NODEBUG + VIM = vim +*************** +*** 344,384 **** + !else # MAXSPEED + OPTFLAG = /Ox + !endif + CFLAGS = $(CFLAGS) $(OPTFLAG) -DNDEBUG $(CPUARG) + RCFLAGS = $(rcflags) $(rcvars) -DNDEBUG + ! ifdef USE_MSVCRT +! CFLAGS = $(CFLAGS) -MD + LIBC = msvcrt.lib +- # CFLAGS = $(CFLAGS) $(cvarsdll) +- # ! elseif defined(MULTITHREADED) +- # LIBC = libcmt.lib +- # CFLAGS = $(CFLAGS) $(cvarsmt) + ! else +- # LIBC = libc.lib + LIBC = libcmt.lib +! # CFLAGS = $(CFLAGS) $(cvars) + ! endif + !else # DEBUG + VIM = vimd + CFLAGS = $(CFLAGS) -D_DEBUG -DDEBUG /Od + RCFLAGS = $(rcflags) $(rcvars) -D_DEBUG -DDEBUG + # The /fixed:no is needed for Quantify. Assume not 4.? as unsupported in VC4.0. +! ! if "$(_NMAKE_VER)" == "" + LIBC = + ! else + LIBC = /fixed:no + ! endif + ! ifdef USE_MSVCRT +! CFLAGS = $(CFLAGS) -MDd + LIBC = $(LIBC) msvcrtd.lib +- # CFLAGS = $(CFLAGS) $(cvarsdll) +- # ! elseif defined(MULTITHREADED) +- # LIBC = $(LIBC) libcmtd.lib +- # CFLAGS = $(CFLAGS) $(cvarsmt) + ! else +- # LIBC = $(LIBC) libcd.lib + LIBC = $(LIBC) libcmtd.lib +! # CFLAGS = $(CFLAGS) $(cvars) + ! endif + !endif # DEBUG + +--- 391,430 ---- + !else # MAXSPEED + OPTFLAG = /Ox + !endif ++ !if "$(MSVCVER)" == "8.0" ++ # Use link time code generation if not worried about size ++ !if "$(OPTIMIZE)" != "SPACE" ++ OPTFLAG = $(OPTFLAG) /GL ++ !endif ++ !endif + CFLAGS = $(CFLAGS) $(OPTFLAG) -DNDEBUG $(CPUARG) + RCFLAGS = $(rcflags) $(rcvars) -DNDEBUG + ! ifdef USE_MSVCRT +! CFLAGS = $(CFLAGS) /MD + LIBC = msvcrt.lib + ! else + LIBC = libcmt.lib +! CFLAGS = $(CFLAGS) /MT + ! endif + !else # DEBUG + VIM = vimd ++ ! if "$(CPU)" == "i386" ++ DEBUGINFO = /ZI ++ ! endif + CFLAGS = $(CFLAGS) -D_DEBUG -DDEBUG /Od + RCFLAGS = $(rcflags) $(rcvars) -D_DEBUG -DDEBUG + # The /fixed:no is needed for Quantify. Assume not 4.? as unsupported in VC4.0. +! ! if "$(MSVCVER)" == "4.0" + LIBC = + ! else + LIBC = /fixed:no + ! endif + ! ifdef USE_MSVCRT +! CFLAGS = $(CFLAGS) /MDd + LIBC = $(LIBC) msvcrtd.lib + ! else + LIBC = $(LIBC) libcmtd.lib +! CFLAGS = $(CFLAGS) /MTd + ! endif + !endif # DEBUG + +*************** +*** 681,696 **** + # + # Always generate the .pdb file, so that we get debug symbols that can be used + # on a crash (doesn't add overhead to the executable). + # +! CFLAGS = $(CFLAGS) /Zi /Fd$(OUTDIR)/ +! LINK_PDB = /PDB:$(VIM).pdb -debug # -debug:full -debugtype:cv,fixup + + # + # End extra feature include + # + !message + +! conflags = /nologo /subsystem:$(SUBSYSTEM) /incremental:no + + PATHDEF_SRC = $(OUTDIR)\pathdef.c + +--- 727,744 ---- + # + # Always generate the .pdb file, so that we get debug symbols that can be used + # on a crash (doesn't add overhead to the executable). ++ # Generate edit-and-continue debug info when no optimization - allows to ++ # debug more conveniently (able to look at variables which are in registers) + # +! CFLAGS = $(CFLAGS) /Fd$(OUTDIR)/ $(DEBUGINFO) +! LINK_PDB = /PDB:$(VIM).pdb -debug + + # + # End extra feature include + # + !message + +! conflags = /nologo /subsystem:$(SUBSYSTEM) + + PATHDEF_SRC = $(OUTDIR)\pathdef.c + +*************** +*** 702,712 **** + conflags = $(conflags) /map /mapinfo:lines + !ENDIF + +! LINKARGS1 = $(linkdebug) $(conflags) /nodefaultlib:libc + LINKARGS2 = $(CON_LIB) $(GUI_LIB) $(LIBC) $(OLE_LIB) user32.lib $(SNIFF_LIB) \ + $(MZSCHEME_LIB) $(PERL_LIB) $(PYTHON_LIB) $(RUBY_LIB) \ + $(TCL_LIB) $(NETBEANS_LIB) $(XPM_LIB) $(LINK_PDB) + + all: $(VIM).exe vimrun.exe install.exe uninstal.exe xxd/xxd.exe \ + GvimExt/gvimext.dll + +--- 750,769 ---- + conflags = $(conflags) /map /mapinfo:lines + !ENDIF + +! LINKARGS1 = $(linkdebug) $(conflags) + LINKARGS2 = $(CON_LIB) $(GUI_LIB) $(LIBC) $(OLE_LIB) user32.lib $(SNIFF_LIB) \ + $(MZSCHEME_LIB) $(PERL_LIB) $(PYTHON_LIB) $(RUBY_LIB) \ + $(TCL_LIB) $(NETBEANS_LIB) $(XPM_LIB) $(LINK_PDB) + ++ # Report link time code generation progress if used. ++ !ifdef NODEBUG ++ !if "$(MSVCVER)" == "8.0" ++ !if "$(OPTIMIZE)" != "SPACE" ++ LINKARGS1 = $(LINKARGS1) /LTCG:STATUS ++ !endif ++ !endif ++ !endif ++ + all: $(VIM).exe vimrun.exe install.exe uninstal.exe xxd/xxd.exe \ + GvimExt/gvimext.dll + +*************** +*** 794,800 **** + + # Create a default rule for transforming .c files to .obj files in $(OUTDIR) + # Batch compilation is supported by nmake 1.62 (part of VS 5.0) and later) +! !IF "$(_NMAKE_VER)" == "" + .c{$(OUTDIR)/}.obj: + !ELSE + .c{$(OUTDIR)/}.obj:: +--- 851,857 ---- + + # Create a default rule for transforming .c files to .obj files in $(OUTDIR) + # Batch compilation is supported by nmake 1.62 (part of VS 5.0) and later) +! !IF "$(MSVCVER)" == "4.0" + .c{$(OUTDIR)/}.obj: + !ELSE + .c{$(OUTDIR)/}.obj:: +*************** +*** 803,809 **** + + # Create a default rule for transforming .cpp files to .obj files in $(OUTDIR) + # Batch compilation is supported by nmake 1.62 (part of VS 5.0) and later) +! !IF "$(_NMAKE_VER)" == "" + .cpp{$(OUTDIR)/}.obj: + !ELSE + .cpp{$(OUTDIR)/}.obj:: +--- 860,866 ---- + + # Create a default rule for transforming .cpp files to .obj files in $(OUTDIR) + # Batch compilation is supported by nmake 1.62 (part of VS 5.0) and later) +! !IF "$(MSVCVER)" == "4.0" + .cpp{$(OUTDIR)/}.obj: + !ELSE + .cpp{$(OUTDIR)/}.obj:: +*** ../vim-7.1.133/src/version.c Wed Oct 3 12:49:24 2007 +--- src/version.c Wed Oct 3 13:23:51 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 134, + /**/ + +-- +BLACK KNIGHT: The Black Knight always triumphs. Have at you! + ARTHUR takes his last leg off. The BLACK KNIGHT's body lands upright. +BLACK KNIGHT: All right, we'll call it a draw. + "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 /// diff --git a/7.1.135 b/7.1.135 new file mode 100644 index 00000000..db9b0ccb --- /dev/null +++ b/7.1.135 @@ -0,0 +1,106 @@ +To: vim-dev@vim.org +Subject: patch 7.1.135 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.135 +Problem: Win32: When editing a file c:\tmp\foo and c:\tmp\\foo we have two + buffers for the same file. (Suresh Govindachar) +Solution: Invoke FullName_save() when a path contains "//" or "\\". +Files: src/buffer.c + + +*** ../vim-7.1.134/src/buffer.c Sun Sep 30 14:00:41 2007 +--- src/buffer.c Wed Oct 3 14:24:52 2007 +*************** +*** 4175,4203 **** + * mess up the full path name, even though it starts with a '/'. + * Also expand when there is ".." in the file name, try to remove it, + * because "c:/src/../README" is equal to "c:/README". + * For MS-Windows also expand names like "longna~1" to "longname". + */ + #ifdef UNIX + return FullName_save(fname, TRUE); + #else +! if (!vim_isAbsName(fname) || strstr((char *)fname, "..") != NULL +! #if defined(MSWIN) || defined(DJGPP) + || vim_strchr(fname, '~') != NULL +! #endif + ) + return FullName_save(fname, FALSE); + + fname = vim_strsave(fname); + +! #ifdef USE_FNAME_CASE +! # ifdef USE_LONG_FNAME + if (USE_LONG_FNAME) +! # endif + { + if (fname != NULL) + fname_case(fname, 0); /* set correct case for file name */ + } +! #endif + + return fname; + #endif +--- 4175,4209 ---- + * mess up the full path name, even though it starts with a '/'. + * Also expand when there is ".." in the file name, try to remove it, + * because "c:/src/../README" is equal to "c:/README". ++ * Similarly "c:/src//file" is equal to "c:/src/file". + * For MS-Windows also expand names like "longna~1" to "longname". + */ + #ifdef UNIX + return FullName_save(fname, TRUE); + #else +! if (!vim_isAbsName(fname) +! || strstr((char *)fname, "..") != NULL +! || strstr((char *)fname, "//") != NULL +! # ifdef BACKSLASH_IN_FILENAME +! || strstr((char *)fname, "\\\\") != NULL +! # endif +! # if defined(MSWIN) || defined(DJGPP) + || vim_strchr(fname, '~') != NULL +! # endif + ) + return FullName_save(fname, FALSE); + + fname = vim_strsave(fname); + +! # ifdef USE_FNAME_CASE +! # ifdef USE_LONG_FNAME + if (USE_LONG_FNAME) +! # endif + { + if (fname != NULL) + fname_case(fname, 0); /* set correct case for file name */ + } +! # endif + + return fname; + #endif +*** ../vim-7.1.134/src/version.c Wed Oct 3 13:28:40 2007 +--- src/version.c Wed Oct 3 14:26:54 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 135, + /**/ + +-- + A village. Sound of chanting of Latin canon, punctuated by short, sharp + cracks. It comes nearer. We see it is a line of MONKS ala SEVENTH SEAL + flagellation scene, chanting and banging themselves on the foreheads with + wooden boards. + "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 /// diff --git a/7.1.136 b/7.1.136 new file mode 100644 index 00000000..c1a9a82c --- /dev/null +++ b/7.1.136 @@ -0,0 +1,47 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.136 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.136 +Problem: Memory leak when using Ruby syntax highlighting. (Dominique Pelle) +Solution: Free the contained-in list. +Files: src/syntax.c + + +*** ../vim-7.1.135/src/syntax.c Thu Aug 30 19:36:52 2007 +--- src/syntax.c Sun Oct 7 15:10:54 2007 +*************** +*** 3354,3359 **** +--- 3354,3360 ---- + { + vim_free(SYN_ITEMS(buf)[i].sp_cont_list); + vim_free(SYN_ITEMS(buf)[i].sp_next_list); ++ vim_free(SYN_ITEMS(buf)[i].sp_syn.cont_in_list); + } + } + +*** ../vim-7.1.135/src/version.c Wed Oct 3 14:30:54 2007 +--- src/version.c Sun Oct 7 15:20:22 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 136, + /**/ + +-- +Every engineer dreams about saving the universe and having sex with aliens. +This is much more glamorous than the real life of an engineer, which consists +of hiding from the universe and having sex without the participation of other +life forms. (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.137 b/7.1.137 new file mode 100644 index 00000000..7e3a53f6 --- /dev/null +++ b/7.1.137 @@ -0,0 +1,49 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.137 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.137 +Problem: Build failure when using EXITFREE. (Dominique Pelle) +Solution: Add an #ifdef around using clip_exclude_prog. +Files: src/misc2.c + + +*** ../vim-7.1.136/src/misc2.c Sat Sep 29 14:15:00 2007 +--- src/misc2.c Sun Sep 30 18:00:09 2007 +*************** +*** 1037,1043 **** +--- 1038,1046 ---- + + /* Free some global vars. */ + vim_free(username); ++ # ifdef FEAT_CLIPBOARD + vim_free(clip_exclude_prog); ++ # endif + vim_free(last_cmdline); + vim_free(new_last_cmdline); + set_keep_msg(NULL, 0); +*** ../vim-7.1.136/src/version.c Sun Oct 7 15:21:31 2007 +--- src/version.c Sun Oct 7 15:42:26 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 137, + /**/ + +-- +For society, it's probably a good thing that engineers value function over +appearance. For example, you wouldn't want engineers to build nuclear power +plants that only _look_ like they would keep all the radiation inside. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.138 b/7.1.138 new file mode 100644 index 00000000..792cdbc6 --- /dev/null +++ b/7.1.138 @@ -0,0 +1,66 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.138 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.138 +Problem: The Perl Msg() function doesn't stop when "q" is typed at the more + prompt. (Hari Krishna Dara) +Solution: Check got_int. +Files: src/if_perl.xs + + +*** ../vim-7.1.137/src/if_perl.xs Sat Sep 15 14:48:57 2007 +--- src/if_perl.xs Wed Oct 3 17:00:16 2007 +*************** +*** 445,457 **** + char *next; + char *token = (char *)s; + +! while ((next = strchr(token, '\n'))) + { + *next++ = '\0'; /* replace \n with \0 */ + msg_attr((char_u *)token, attr); + token = next; + } +! if (*token) + msg_attr((char_u *)token, attr); + } + +--- 445,457 ---- + char *next; + char *token = (char *)s; + +! while ((next = strchr(token, '\n')) && !got_int) + { + *next++ = '\0'; /* replace \n with \0 */ + msg_attr((char_u *)token, attr); + token = next; + } +! if (*token && !got_int) + msg_attr((char_u *)token, attr); + } + +*** ../vim-7.1.137/src/version.c Sun Oct 7 15:44:28 2007 +--- src/version.c Tue Oct 9 10:45:08 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 138, + /**/ + +-- +A consultant is a person who takes your money and annoys your employees while +tirelessly searching for the best way to extend the consulting contract. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.139 b/7.1.139 new file mode 100644 index 00000000..27671514 --- /dev/null +++ b/7.1.139 @@ -0,0 +1,54 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.139 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.139 +Problem: When using marker folding and ending Insert mode with CTRL-C the + current fold is truncated. (Fred Kater) +Solution: Ignore got_int while updating folds. +Files: src/fold.c + + +*** ../vim-7.1.138/src/fold.c Thu May 10 21:02:13 2007 +--- src/fold.c Sun Oct 14 15:27:13 2007 +*************** +*** 858,864 **** +--- 858,871 ---- + || foldmethodIsDiff(wp) + #endif + || foldmethodIsSyntax(wp)) ++ { ++ int save_got_int = got_int; ++ ++ /* reset got_int here, otherwise it won't work */ ++ got_int = FALSE; + foldUpdateIEMS(wp, top, bot); ++ got_int |= save_got_int; ++ } + } + + /* foldUpdateAll() {{{2 */ +*** ../vim-7.1.138/src/version.c Tue Oct 9 10:46:39 2007 +--- src/version.c Sun Oct 14 15:31:18 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 139, + /**/ + +-- +If Pacman had affected us as kids we'd be running around in dark rooms, +munching pills and listening to repetitive music. + -- Marcus Brigstocke + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.140 b/7.1.140 new file mode 100644 index 00000000..d10c1884 --- /dev/null +++ b/7.1.140 @@ -0,0 +1,52 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.140 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.140 +Problem: v:count is set only after typing a non-digit, that makes it + difficult to make a nice mapping. +Solution: Set v:count while still typing the count. +Files: src/normal.c + + +*** ../vim-7.1.139/src/normal.c Thu Sep 13 18:25:08 2007 +--- src/normal.c Sun Oct 14 17:15:36 2007 +*************** +*** 690,695 **** +--- 690,702 ---- + ca.count0 = ca.count0 * 10 + (c - '0'); + if (ca.count0 < 0) /* got too large! */ + ca.count0 = 999999999L; ++ #ifdef FEAT_EVAL ++ /* Set v:count here, when called from main() and not a stuffed ++ * command, so that v:count can be used in an expression mapping ++ * right after the count. */ ++ if (toplevel && stuff_empty()) ++ set_vcount(ca.count0, ca.count0 == 0 ? 1 : ca.count0); ++ #endif + if (ctrl_w) + { + ++no_mapping; +*** ../vim-7.1.139/src/version.c Sun Oct 14 15:32:10 2007 +--- src/version.c Sun Oct 14 17:13:15 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 140, + /**/ + +-- +How To Keep A Healthy Level Of Insanity: +11. Specify that your drive-through order is "to go". + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.141 b/7.1.141 new file mode 100644 index 00000000..7b3c5d9f --- /dev/null +++ b/7.1.141 @@ -0,0 +1,97 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.141 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.141 +Problem: GTK: -geom argument doesn't support a negative offset. +Solution: Compute position from the right/lower corner. +Files: src/gui_gtk_x11.c + + +*** ../vim-7.1.140/src/gui_gtk_x11.c Sat Sep 15 14:06:41 2007 +--- src/gui_gtk_x11.c Mon Oct 8 21:26:50 2007 +*************** +*** 4044,4049 **** +--- 4044,4051 ---- + unsigned int w, h; + int x = 0; + int y = 0; ++ guint pixel_width; ++ guint pixel_height; + + mask = XParseGeometry((char *)gui.geom, &x, &y, &w, &h); + +*************** +*** 4055,4066 **** +--- 4057,4087 ---- + p_window = h - 1; + Rows = h; + } ++ ++ pixel_width = (guint)(gui_get_base_width() + Columns * gui.char_width); ++ pixel_height = (guint)(gui_get_base_height() + Rows * gui.char_height); ++ ++ #ifdef HAVE_GTK2 ++ pixel_width += get_menu_tool_width(); ++ pixel_height += get_menu_tool_height(); ++ #endif ++ + if (mask & (XValue | YValue)) ++ { ++ int w, h; ++ gui_mch_get_screen_dimensions(&w, &h); ++ h += p_ghr + get_menu_tool_height(); ++ w += get_menu_tool_width(); ++ if (mask & XNegative) ++ x += w - pixel_width; ++ if (mask & YNegative) ++ y += h - pixel_height; + #ifdef HAVE_GTK2 + gtk_window_move(GTK_WINDOW(gui.mainwin), x, y); + #else + gtk_widget_set_uposition(gui.mainwin, x, y); + #endif ++ } + vim_free(gui.geom); + gui.geom = NULL; + +*************** +*** 4071,4084 **** + */ + if (gtk_socket_id != 0 && (mask & WidthValue || mask & HeightValue)) + { +- guint pixel_width = (guint)(gui_get_base_width() + Columns * gui.char_width); +- guint pixel_height = (guint)(gui_get_base_height() + Rows * gui.char_height); +- +- #ifdef HAVE_GTK2 +- pixel_width += get_menu_tool_width(); +- pixel_height += get_menu_tool_height(); +- #endif +- + update_window_manager_hints(pixel_width, pixel_height); + init_window_hints_state = 1; + g_timeout_add(1000, check_startup_plug_hints, NULL); +--- 4092,4097 ---- +*** ../vim-7.1.140/src/version.c Sun Oct 14 17:15:45 2007 +--- src/version.c Fri Oct 19 14:28:52 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 141, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +35. Your husband tells you he's had the beard for 2 months. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.142 b/7.1.142 new file mode 100644 index 00000000..892cf99f --- /dev/null +++ b/7.1.142 @@ -0,0 +1,77 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.142 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.142 +Problem: ":redir @A>" doesn't work. +Solution: Ignore the extra ">" also when appending. (James Vega) +Files: src/ex_docmd.c + + +*** ../vim-7.1.141/src/ex_docmd.c Sun Sep 30 14:00:41 2007 +--- src/ex_docmd.c Tue Oct 9 11:09:09 2007 +*************** +*** 8426,8446 **** + || *arg == '"') + { + redir_reg = *arg++; +! if (*arg == '>' && arg[1] == '>') + arg += 2; +! else if ((*arg == NUL || (*arg == '>' && arg[1] == NUL)) && +! (islower(redir_reg) +! # ifdef FEAT_CLIPBOARD +! || redir_reg == '*' +! || redir_reg == '+' +! # endif +! || redir_reg == '"')) + { + if (*arg == '>') + arg++; +! +! /* make register empty */ +! write_reg_contents(redir_reg, (char_u *)"", -1, FALSE); + } + } + if (*arg != NUL) +--- 8426,8442 ---- + || *arg == '"') + { + redir_reg = *arg++; +! if (*arg == '>' && arg[1] == '>') /* append */ + arg += 2; +! else + { ++ /* Can use both "@a" and "@a>". */ + if (*arg == '>') + arg++; +! /* Make register empty when not using @A-@Z and the +! * command is valid. */ +! if (*arg == NUL && !isupper(redir_reg)) +! write_reg_contents(redir_reg, (char_u *)"", -1, FALSE); + } + } + if (*arg != NUL) +*** ../vim-7.1.141/src/version.c Fri Oct 19 14:32:50 2007 +--- src/version.c Fri Oct 19 16:18:36 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 142, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +36. You miss more than five meals a week downloading the latest games from + Apogee. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.143 b/7.1.143 new file mode 100644 index 00000000..fa385afa --- /dev/null +++ b/7.1.143 @@ -0,0 +1,54 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.143 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.143 +Problem: Uninitialized memory read when diffing three files. (Dominique + Pelle) +Solution: Remove "+ !notset" so that we don't use fields that were not + computed. +Files: src/diff.c + + +*** ../vim-7.1.142/src/diff.c Sat Sep 29 14:15:00 2007 +--- src/diff.c Sun Oct 14 21:52:56 2007 +*************** +*** 1310,1316 **** + dp->df_count[idx_new] += -off; + off = 0; + } +! for (i = idx_orig; i < idx_new + !notset; ++i) + if (curtab->tp_diffbuf[i] != NULL) + dp->df_count[i] = dpl->df_lnum[i] + dpl->df_count[i] + - dp->df_lnum[i] + off; +--- 1310,1316 ---- + dp->df_count[idx_new] += -off; + off = 0; + } +! for (i = idx_orig; i < idx_new; ++i) + if (curtab->tp_diffbuf[i] != NULL) + dp->df_count[i] = dpl->df_lnum[i] + dpl->df_count[i] + - dp->df_lnum[i] + off; +*** ../vim-7.1.142/src/version.c Fri Oct 19 16:20:09 2007 +--- src/version.c Fri Oct 19 17:32:18 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 143, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +37. You start looking for hot HTML addresses in public restrooms. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.144 b/7.1.144 new file mode 100644 index 00000000..d2bcfa0c --- /dev/null +++ b/7.1.144 @@ -0,0 +1,46 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.144 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.144 +Problem: After ":diffup" cursor can be in the wrong position. +Solution: Force recomputing the cursor position. +Files: src/diff.c + + +*** ../vim-7.1.143/src/diff.c Fri Oct 19 17:32:58 2007 +--- src/diff.c Fri Oct 19 18:54:13 2007 +*************** +*** 791,796 **** +--- 791,799 ---- + } + mch_remove(tmp_orig); + ++ /* force updating cursor position on screen */ ++ curwin->w_valid_cursor.lnum = 0; ++ + diff_redraw(TRUE); + + theend: +*** ../vim-7.1.143/src/version.c Fri Oct 19 17:32:58 2007 +--- src/version.c Fri Oct 19 18:56:49 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 144, + /**/ + +-- +He who laughs last, thinks slowest. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.145 b/7.1.145 new file mode 100644 index 00000000..cb947995 --- /dev/null +++ b/7.1.145 @@ -0,0 +1,171 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.145 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.145 +Problem: Insert mode completion: When using the popup menu, after + completing a word and typing a non-word character Vim is still + completing the same word, following CTRL-N doesn't work. + Insert mode Completion: When using CTRL-X O and there is only + "struct." before the cursor, typing one char to reduce the + matches, then BS completion stops. +Solution: When typing a character that is not part of the item being + completed, stop complete mode. For whole line completion also + accept a space. For file name completion stop at a path + separator. + For omni completion stay in completion mode even if completing + with empty string. +Files: src/edit.c + + +*** ../vim-7.1.144/src/edit.c Thu Sep 13 18:25:08 2007 +--- src/edit.c Fri Oct 19 16:04:38 2007 +*************** +*** 129,134 **** +--- 129,135 ---- + + static void ins_ctrl_x __ARGS((void)); + static int has_compl_option __ARGS((int dict_opt)); ++ static int ins_compl_accept_char __ARGS((int c)); + static int ins_compl_add __ARGS((char_u *str, int len, int icase, char_u *fname, char_u **cptext, int cdir, int flags, int adup)); + static int ins_compl_equal __ARGS((compl_T *match, char_u *str, int len)); + static void ins_compl_longest_match __ARGS((compl_T *match)); +*************** +*** 754,761 **** + continue; + } + +! /* A printable, non-white character: Add to "compl_leader". */ +! if (vim_isprintc(c) && !vim_iswhite(c)) + { + ins_compl_addleader(c); + continue; +--- 755,763 ---- + continue; + } + +! /* A non-white character that fits in with the current +! * completion: Add to "compl_leader". */ +! if (ins_compl_accept_char(c)) + { + ins_compl_addleader(c); + continue; +*************** +*** 2053,2058 **** +--- 2055,2094 ---- + } + + /* ++ * Return TRUE when character "c" is part of the item currently being ++ * completed. Used to decide whether to abandon complete mode when the menu ++ * is visible. ++ */ ++ static int ++ ins_compl_accept_char(c) ++ int c; ++ { ++ if (ctrl_x_mode & CTRL_X_WANT_IDENT) ++ /* When expanding an identifier only accept identifier chars. */ ++ return vim_isIDc(c); ++ ++ switch (ctrl_x_mode) ++ { ++ case CTRL_X_FILES: ++ /* When expanding file name only accept file name chars. But not ++ * path separators, so that "proto/" expands files in ++ * "proto", not "proto/" as a whole */ ++ return vim_isfilec(c) && !vim_ispathsep(c); ++ ++ case CTRL_X_CMDLINE: ++ case CTRL_X_OMNI: ++ /* Command line and Omni completion can work with just about any ++ * printable character, but do stop at white space. */ ++ return vim_isprintc(c) && !vim_iswhite(c); ++ ++ case CTRL_X_WHOLE_LINE: ++ /* For while line completion a space can be part of the line. */ ++ return vim_isprintc(c); ++ } ++ return vim_iswordc(c); ++ } ++ ++ /* + * This is like ins_compl_add(), but if 'ic' and 'inf' are set, then the + * case of the originally typed text is used, and the case of the completed + * text is inferred, ie this tries to work out what case you probably wanted +*************** +*** 3128,3135 **** + p = line + curwin->w_cursor.col; + mb_ptr_back(line, p); + +! /* Stop completion when the whole word was deleted. */ +! if ((int)(p - line) - (int)compl_col <= 0) + return K_BS; + + /* Deleted more than what was used to find matches or didn't finish +--- 3164,3174 ---- + p = line + curwin->w_cursor.col; + mb_ptr_back(line, p); + +! /* Stop completion when the whole word was deleted. For Omni completion +! * allow the word to be deleted, we won't match everything. */ +! if ((int)(p - line) - (int)compl_col < 0 +! || ((int)(p - line) - (int)compl_col == 0 +! && (ctrl_x_mode & CTRL_X_OMNI) == 0)) + return K_BS; + + /* Deleted more than what was used to find matches or didn't finish +*************** +*** 4591,4604 **** + curs_col = curwin->w_cursor.col; + compl_pending = 0; + +! /* if this same ctrl_x_mode has been interrupted use the text from + * "compl_startpos" to the cursor as a pattern to add a new word + * instead of expand the one before the cursor, in word-wise if +! * "compl_startpos" +! * is not in the same line as the cursor then fix it (the line has +! * been split because it was longer than 'tw'). if SOL is set then +! * skip the previous pattern, a word at the beginning of the line has +! * been inserted, we'll look for that -- Acevedo. */ + if ((compl_cont_status & CONT_INTRPT) == CONT_INTRPT + && compl_cont_mode == ctrl_x_mode) + { +--- 4630,4642 ---- + curs_col = curwin->w_cursor.col; + compl_pending = 0; + +! /* If this same ctrl_x_mode has been interrupted use the text from + * "compl_startpos" to the cursor as a pattern to add a new word + * instead of expand the one before the cursor, in word-wise if +! * "compl_startpos" is not in the same line as the cursor then fix it +! * (the line has been split because it was longer than 'tw'). if SOL +! * is set then skip the previous pattern, a word at the beginning of +! * the line has been inserted, we'll look for that -- Acevedo. */ + if ((compl_cont_status & CONT_INTRPT) == CONT_INTRPT + && compl_cont_mode == ctrl_x_mode) + { +*** ../vim-7.1.144/src/version.c Fri Oct 19 18:57:33 2007 +--- src/version.c Fri Oct 19 20:38:21 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 145, + /**/ + +-- +Micro$oft: where do you want to go today? + Linux: where do you want to go tomorrow? + FreeBSD: are you guys coming, or what? + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.146 b/7.1.146 new file mode 100644 index 00000000..75ce738f --- /dev/null +++ b/7.1.146 @@ -0,0 +1,92 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.146 (extra) +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.146 (extra) +Problem: VMS: Files with a very rare record organization (VFC) cannot be + properly written by Vim. + On older VAX systems mms runs into a syntax error. +Solution: Check for this special situation. Do not wrap a comment, make it + one long line. (Zoltan Arpadffy) +Files: src/fileio.c, src/Make_vms.mms + + +*** ../vim-7.1.145/src/fileio.c Wed Oct 3 12:49:24 2007 +--- src/fileio.c Mon Oct 22 21:10:00 2007 +*************** +*** 4251,4257 **** + * they don't it adds one. + * With other RMS structures it works perfect without this fix. + */ +! if ((buf->b_fab_rat & (FAB$M_FTN | FAB$M_CR)) != 0) + { + int b2write; + +--- 4252,4259 ---- + * they don't it adds one. + * With other RMS structures it works perfect without this fix. + */ +! if (buf->b_fab_rfm == FAB$C_VFC +! || ((buf->b_fab_rat & (FAB$M_FTN | FAB$M_CR)) != 0)) + { + int b2write; + +*** ../vim-7.1.145/src/Make_vms.mms Thu May 10 20:47:35 2007 +--- src/Make_vms.mms Mon Oct 22 21:13:08 2007 +*************** +*** 2,8 **** + # Makefile for Vim on OpenVMS + # + # Maintainer: Zoltan Arpadffy +! # Last change: 2007 May 07 + # + # This has script been tested on VMS 6.2 to 8.2 on DEC Alpha, VAX and IA64 + # with MMS and MMK +--- 2,8 ---- + # Makefile for Vim on OpenVMS + # + # Maintainer: Zoltan Arpadffy +! # Last change: 2007 Oct 22 + # + # This has script been tested on VMS 6.2 to 8.2 on DEC Alpha, VAX and IA64 + # with MMS and MMK +*************** +*** 96,103 **** + + .IFDEF MMSVAX + .IFDEF DECC # VAX with DECC +! CC_DEF = cc # /decc # some system requires this switch +! # but when it is not required /ver might fail + PREFIX = /prefix=all + .ELSE # VAX with VAXC + CC_DEF = cc +--- 96,102 ---- + + .IFDEF MMSVAX + .IFDEF DECC # VAX with DECC +! CC_DEF = cc # /decc # some system requires this switch but when it is not required /ver might fail + PREFIX = /prefix=all + .ELSE # VAX with VAXC + CC_DEF = cc +*** ../vim-7.1.145/src/version.c Fri Oct 19 20:39:56 2007 +--- src/version.c Mon Oct 29 22:36:20 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 146, + /**/ + +-- +Be thankful to be in a traffic jam, because it means you own a car. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.147 b/7.1.147 new file mode 100644 index 00000000..57e49659 --- /dev/null +++ b/7.1.147 @@ -0,0 +1,75 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.147 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.147 (after 7.1.127) +Problem: Freeing memory already freed when completing user name. (Meino + Cramer) +Solution: Use a flag to remember if "orig" needs to be freed. +Files: src/ex_getln.c + + +*** ../vim-7.1.146/src/ex_getln.c Sun Sep 30 22:10:45 2007 +--- src/ex_getln.c Tue Oct 30 17:13:33 2007 +*************** +*** 3353,3358 **** +--- 3353,3359 ---- + char_u *ss = NULL; + static int findex; + static char_u *orig_save = NULL; /* kept value of orig */ ++ int orig_saved = FALSE; + int i; + long_u len; + int non_suf_match; /* number without matching suffix */ +*************** +*** 3421,3426 **** +--- 3422,3428 ---- + { + vim_free(orig_save); + orig_save = orig; ++ orig_saved = TRUE; + + /* + * Do the expansion. +*************** +*** 3546,3552 **** + ExpandCleanup(xp); + + /* Free "orig" if it wasn't stored in "orig_save". */ +! if (orig != orig_save) + vim_free(orig); + + return ss; +--- 3548,3554 ---- + ExpandCleanup(xp); + + /* Free "orig" if it wasn't stored in "orig_save". */ +! if (!orig_saved) + vim_free(orig); + + return ss; +*** ../vim-7.1.146/src/version.c Mon Oct 29 22:37:57 2007 +--- src/version.c Tue Oct 30 17:30:35 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 147, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +59. Your wife says communication is important in a marriage...so you buy + another computer and install a second phone line so the two of you can + chat. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.148 b/7.1.148 new file mode 100644 index 00000000..94872e59 --- /dev/null +++ b/7.1.148 @@ -0,0 +1,73 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.148 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.148 +Problem: Some types are not found by configure. +Solution: Test for the sys/types.h header file. (Sean Boudreau) +Files: src/configure.in, src/auto/configure + + +*** ../vim-7.1.147/src/configure.in Thu Jun 28 13:02:22 2007 +--- src/configure.in Sat Oct 27 15:52:16 2007 +*************** +*** 2026,2032 **** + fi + + AC_CHECK_HEADERS(stdarg.h stdlib.h string.h sys/select.h sys/utsname.h \ +! termcap.h fcntl.h sgtty.h sys/ioctl.h sys/time.h termio.h \ + iconv.h langinfo.h unistd.h stropts.h errno.h \ + sys/resource.h sys/systeminfo.h locale.h \ + sys/stream.h sys/ptem.h termios.h libc.h sys/statfs.h \ +--- 2026,2032 ---- + fi + + AC_CHECK_HEADERS(stdarg.h stdlib.h string.h sys/select.h sys/utsname.h \ +! termcap.h fcntl.h sgtty.h sys/ioctl.h sys/time.h sys/types.h termio.h \ + iconv.h langinfo.h unistd.h stropts.h errno.h \ + sys/resource.h sys/systeminfo.h locale.h \ + sys/stream.h sys/ptem.h termios.h libc.h sys/statfs.h \ +*** ../vim-7.1.147/src/auto/configure Thu Jun 28 13:02:22 2007 +--- src/auto/configure Sun Nov 4 15:34:14 2007 +*************** +*** 10265,10272 **** + + + + for ac_header in stdarg.h stdlib.h string.h sys/select.h sys/utsname.h \ +! termcap.h fcntl.h sgtty.h sys/ioctl.h sys/time.h termio.h \ + iconv.h langinfo.h unistd.h stropts.h errno.h \ + sys/resource.h sys/systeminfo.h locale.h \ + sys/stream.h sys/ptem.h termios.h libc.h sys/statfs.h \ +--- 10265,10273 ---- + + + ++ + for ac_header in stdarg.h stdlib.h string.h sys/select.h sys/utsname.h \ +! termcap.h fcntl.h sgtty.h sys/ioctl.h sys/time.h sys/types.h termio.h \ + iconv.h langinfo.h unistd.h stropts.h errno.h \ + sys/resource.h sys/systeminfo.h locale.h \ + sys/stream.h sys/ptem.h termios.h libc.h sys/statfs.h \ +*** ../vim-7.1.147/src/version.c Tue Oct 30 17:36:31 2007 +--- src/version.c Sun Nov 4 15:34:26 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 148, + /**/ + +-- +If your nose runs, and your feet smell, you might be upside down. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.149 b/7.1.149 new file mode 100644 index 00000000..e6a0f5b6 --- /dev/null +++ b/7.1.149 @@ -0,0 +1,180 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.149 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.149 +Problem: GTK GUI: When the completion popup menu is used scrolling another + window by the scrollbar is OK, but using the scroll wheel it + behaves line . +Solution: Ignore K_MOUSEDOWN and K_MOUSEUP. Fix redrawing the popup menu. +Files: src/edit.c, src/gui.c + + +*** ../vim-7.1.148/src/edit.c Fri Oct 19 20:39:56 2007 +--- src/edit.c Sun Nov 4 16:17:42 2007 +*************** +*** 3385,3392 **** + if (c != Ctrl_R && vim_is_ctrl_x_key(c)) + edit_submode_extra = NULL; + +! /* Ignore end of Select mode mapping */ +! if (c == K_SELECT) + return retval; + + /* Set "compl_get_longest" when finding the first matches. */ +--- 3385,3392 ---- + if (c != Ctrl_R && vim_is_ctrl_x_key(c)) + edit_submode_extra = NULL; + +! /* Ignore end of Select mode mapping and mouse scroll buttons. */ +! if (c == K_SELECT || c == K_MOUSEDOWN || c == K_MOUSEUP) + return retval; + + /* Set "compl_get_longest" when finding the first matches. */ +*************** +*** 8652,8666 **** + int up; + { + pos_T tpos; +! # if defined(FEAT_GUI) && defined(FEAT_WINDOWS) +! win_T *old_curwin; + # endif + + tpos = curwin->w_cursor; + + # if defined(FEAT_GUI) && defined(FEAT_WINDOWS) +- old_curwin = curwin; +- + /* Currently the mouse coordinates are only known in the GUI. */ + if (gui.in_use && mouse_row >= 0 && mouse_col >= 0) + { +--- 8652,8667 ---- + int up; + { + pos_T tpos; +! # if defined(FEAT_WINDOWS) +! win_T *old_curwin = curwin; +! # endif +! # ifdef FEAT_INS_EXPAND +! int did_scroll = FALSE; + # endif + + tpos = curwin->w_cursor; + + # if defined(FEAT_GUI) && defined(FEAT_WINDOWS) + /* Currently the mouse coordinates are only known in the GUI. */ + if (gui.in_use && mouse_row >= 0 && mouse_col >= 0) + { +*************** +*** 8677,8692 **** + # endif + undisplay_dollar(); + +! if (mod_mask & (MOD_MASK_SHIFT | MOD_MASK_CTRL)) +! scroll_redraw(up, (long)(curwin->w_botline - curwin->w_topline)); +! else +! scroll_redraw(up, 3L); + + # if defined(FEAT_GUI) && defined(FEAT_WINDOWS) + curwin->w_redr_status = TRUE; + + curwin = old_curwin; + curbuf = curwin->w_buffer; + # endif + + if (!equalpos(curwin->w_cursor, tpos)) +--- 8678,8717 ---- + # endif + undisplay_dollar(); + +! # ifdef FEAT_INS_EXPAND +! /* Don't scroll the window in which completion is being done. */ +! if (!pum_visible() +! # if defined(FEAT_WINDOWS) +! || curwin != old_curwin +! # endif +! ) +! # endif +! { +! if (mod_mask & (MOD_MASK_SHIFT | MOD_MASK_CTRL)) +! scroll_redraw(up, (long)(curwin->w_botline - curwin->w_topline)); +! else +! scroll_redraw(up, 3L); +! # ifdef FEAT_INS_EXPAND +! did_scroll = TRUE; +! # endif +! } + + # if defined(FEAT_GUI) && defined(FEAT_WINDOWS) + curwin->w_redr_status = TRUE; + + curwin = old_curwin; + curbuf = curwin->w_buffer; ++ # endif ++ ++ # ifdef FEAT_INS_EXPAND ++ /* The popup menu may overlay the window, need to redraw it. ++ * TODO: Would be more efficient to only redraw the windows that are ++ * overlapped by the popup menu. */ ++ if (pum_visible() && did_scroll) ++ { ++ redraw_all_later(NOT_VALID); ++ ins_compl_show_pum(); ++ } + # endif + + if (!equalpos(curwin->w_cursor, tpos)) +*** ../vim-7.1.148/src/gui.c Wed Sep 5 21:45:54 2007 +--- src/gui.c Fri Oct 19 16:14:57 2007 +*************** +*** 4214,4220 **** + #endif + ) + { +! redraw_win_later(wp, VALID); + updateWindow(wp); /* update window, status line, and cmdline */ + } + +--- 4214,4232 ---- + #endif + ) + { +! int type = VALID; +! +! #ifdef FEAT_INS_EXPAND +! if (pum_visible()) +! { +! type = NOT_VALID; +! wp->w_lines_valid = 0; +! } +! #endif +! /* Don't set must_redraw here, it may cause the popup menu to +! * disappear when losing focus after a scrollbar drag. */ +! if (wp->w_redr_type < type) +! wp->w_redr_type = type; + updateWindow(wp); /* update window, status line, and cmdline */ + } + +*** ../vim-7.1.148/src/version.c Sun Nov 4 15:35:23 2007 +--- src/version.c Tue Nov 6 22:21:03 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 149, + /**/ + +-- +From "know your smileys": + ...---... SOS + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.150 b/7.1.150 new file mode 100644 index 00000000..b0074a95 --- /dev/null +++ b/7.1.150 @@ -0,0 +1,59 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.150 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.150 +Problem: When 'clipboard' has "unnamed" using "p" in Visual mode doesn't + work correctly. (Jianrong Yu) +Solution: When 'clipboard' has "unnamed" also obtain the selection when + getting the default register. +Files: src/ops.c + + +*** ../vim-7.1.149/src/ops.c Tue Sep 25 14:19:35 2007 +--- src/ops.c Sun Oct 28 13:58:35 2007 +*************** +*** 933,941 **** + #ifdef FEAT_CLIPBOARD + /* When Visual area changed, may have to update selection. Obtain the + * selection too. */ +! if (name == '*' && clip_star.available && clip_isautosel()) + { +! clip_update_selection(); + may_get_selection(name); + } + #endif +--- 933,942 ---- + #ifdef FEAT_CLIPBOARD + /* When Visual area changed, may have to update selection. Obtain the + * selection too. */ +! if (name == '*' && clip_star.available) + { +! if (clip_isautosel()) +! clip_update_selection(); + may_get_selection(name); + } + #endif +*** ../vim-7.1.149/src/version.c Tue Nov 6 22:26:39 2007 +--- src/version.c Thu Nov 8 10:34:18 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 150, + /**/ + +-- +From "know your smileys": + 8<}} Glasses, big nose, beard + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.151 b/7.1.151 new file mode 100644 index 00000000..610bafb1 --- /dev/null +++ b/7.1.151 @@ -0,0 +1,70 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.151 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.151 +Problem: Using whole line completion with 'ignorecase' and 'infercase' set + and the line is empty get an lalloc(0) error. +Solution: Don't try changing case for an empty match. (Matthew Wozniski) +Files: src/edit.c + + +*** ../vim-7.1.150/src/edit.c Tue Nov 6 22:26:39 2007 +--- src/edit.c Sun Nov 4 16:17:42 2007 +*************** +*** 2111,2117 **** + int has_lower = FALSE; + int was_letter = FALSE; + +! if (p_ic && curbuf->b_p_inf) + { + /* Infer case of completed part. */ + +--- 2111,2117 ---- + int has_lower = FALSE; + int was_letter = FALSE; + +! if (p_ic && curbuf->b_p_inf && len > 0) + { + /* Infer case of completed part. */ + +*************** +*** 2225,2231 **** + wca[i] = MB_TOUPPER(wca[i]); + } + +! /* + * Generate encoding specific output from wide character array. + * Multi-byte characters can occupy up to five bytes more than + * ASCII characters, and we also need one byte for NUL, so stay +--- 2225,2231 ---- + wca[i] = MB_TOUPPER(wca[i]); + } + +! /* + * Generate encoding specific output from wide character array. + * Multi-byte characters can occupy up to five bytes more than + * ASCII characters, and we also need one byte for NUL, so stay +*** ../vim-7.1.150/src/version.c Thu Nov 8 10:35:02 2007 +--- src/version.c Thu Nov 8 13:01:34 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 151, + /**/ + +-- +From "know your smileys": + %-) After staring at screen for 15 hours + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.152 b/7.1.152 new file mode 100644 index 00000000..d1a0f30b --- /dev/null +++ b/7.1.152 @@ -0,0 +1,118 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.152 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.152 +Problem: Display problem when 'hls' and 'cursorcolumn' are set and + searching for "$". (John Mullin) Also when scrolling + horizontally when 'wrap' is off. +Solution: Keep track of the column where highlighting was set. Check the + column offset when skipping characters. +Files: src/screen.c + + +*** ../vim-7.1.151/src/screen.c Mon Sep 17 22:37:05 2007 +--- src/screen.c Fri Oct 19 15:18:49 2007 +*************** +*** 2599,2604 **** +--- 2599,2605 ---- + int syntax_attr = 0; /* attributes desired by syntax */ + int has_syntax = FALSE; /* this buffer has syntax highl. */ + int save_did_emsg; ++ int eol_hl_off = 0; /* 1 if highlighted char after EOL */ + #endif + #ifdef FEAT_SPELL + int has_spell = FALSE; /* this buffer has spell checking */ +*************** +*** 4312,4317 **** +--- 4313,4322 ---- + { + #ifdef FEAT_SEARCH_EXTRA + long prevcol = (long)(ptr - line) - (c == NUL); ++ ++ /* we're not really at that column when skipping some text */ ++ if ((wp->w_p_wrap ? wp->w_skipcol : wp->w_leftcol) > prevcol) ++ ++prevcol; + #endif + + /* invert at least one char, used for Visual and empty line or +*************** +*** 4408,4418 **** +--- 4413,4432 ---- + ScreenAttrs[off] = char_attr; + #ifdef FEAT_RIGHTLEFT + if (wp->w_p_rl) ++ { + --col; ++ --off; ++ } + else + #endif ++ { + ++col; ++ ++off; ++ } + ++vcol; ++ #ifdef FEAT_SYN_HL ++ eol_hl_off = 1; ++ #endif + } + } + +*************** +*** 4422,4427 **** +--- 4436,4449 ---- + if (c == NUL) + { + #ifdef FEAT_SYN_HL ++ if (eol_hl_off > 0 && vcol - eol_hl_off == (long)wp->w_virtcol) ++ { ++ /* highlight last char after line */ ++ --col; ++ --off; ++ --vcol; ++ } ++ + /* Highlight 'cursorcolumn' past end of the line. */ + if (wp->w_p_wrap) + v = wp->w_skipcol; +*************** +*** 4432,4438 **** + + vcol = v + col - win_col_off(wp); + if (wp->w_p_cuc +! && (int)wp->w_virtcol >= vcol + && (int)wp->w_virtcol < W_WIDTH(wp) * (row - startrow + 1) + + v + && lnum != wp->w_cursor.lnum +--- 4454,4460 ---- + + vcol = v + col - win_col_off(wp); + if (wp->w_p_cuc +! && (int)wp->w_virtcol >= vcol - eol_hl_off + && (int)wp->w_virtcol < W_WIDTH(wp) * (row - startrow + 1) + + v + && lnum != wp->w_cursor.lnum +*** ../vim-7.1.151/src/version.c Thu Nov 8 13:03:33 2007 +--- src/version.c Thu Nov 8 14:48:59 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 152, + /**/ + +-- +From "know your smileys": + 2B|^2B Message from Shakespeare + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.153 b/7.1.153 new file mode 100644 index 00000000..839977eb --- /dev/null +++ b/7.1.153 @@ -0,0 +1,143 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.153 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.153 +Problem: Compiler warnings on SGI. Undefined XpmAllocColor (Charles + Campbell) +Solution: Add type casts. Init st_dev and st_ino separately. Don't use + type casts for vim_snprintf() when HAVE_STDARG_H is defined. + Define XpmAllocColor when needed. +Files: src/eval.c, src/ex_cmds.c, src/fileio.c, src/misc2.c, + src/gui_xmebw.c + + +*** ../vim-7.1.152/src/eval.c Tue Oct 2 22:07:58 2007 +--- src/eval.c Mon Oct 1 20:56:09 2007 +*************** +*** 8729,8735 **** + static int fnum = 0; + static int change_start = 0; + static int change_end = 0; +! static hlf_T hlID = 0; + int filler_lines; + int col; + +--- 8729,8735 ---- + static int fnum = 0; + static int change_start = 0; + static int change_end = 0; +! static hlf_T hlID = (hlf_T)0; + int filler_lines; + int col; + +*** ../vim-7.1.152/src/ex_cmds.c Thu Sep 13 18:25:08 2007 +--- src/ex_cmds.c Thu Sep 13 16:19:40 2007 +*************** +*** 1774,1780 **** + * overwrite a user's viminfo file after a "su root", with a + * viminfo file that the user can't read. + */ +! st_old.st_dev = st_old.st_ino = 0; + st_old.st_mode = 0600; + if (mch_stat((char *)fname, &st_old) == 0 + && getuid() != ROOT_UID +--- 1774,1781 ---- + * overwrite a user's viminfo file after a "su root", with a + * viminfo file that the user can't read. + */ +! st_old.st_dev = 0; +! st_old.st_ino = 0; + st_old.st_mode = 0600; + if (mch_stat((char *)fname, &st_old) == 0 + && getuid() != ROOT_UID +*** ../vim-7.1.152/src/fileio.c Mon Oct 29 22:37:57 2007 +--- src/fileio.c Mon Oct 22 21:10:00 2007 +*************** +*** 3209,3215 **** + * Get information about original file (if there is one). + */ + #if defined(UNIX) && !defined(ARCHIE) +! st_old.st_dev = st_old.st_ino = 0; + perm = -1; + if (mch_stat((char *)fname, &st_old) < 0) + newfile = TRUE; +--- 3209,3216 ---- + * Get information about original file (if there is one). + */ + #if defined(UNIX) && !defined(ARCHIE) +! st_old.st_dev = 0; +! st_old.st_ino = 0; + perm = -1; + if (mch_stat((char *)fname, &st_old) < 0) + newfile = TRUE; +*** ../vim-7.1.152/src/misc2.c Sun Oct 7 15:44:28 2007 +--- src/misc2.c Sun Sep 30 18:00:09 2007 +*************** +*** 5924,5930 **** +--- 5925,5935 ---- + { + if (emsg_not_now()) + return TRUE; /* no error messages at the moment */ ++ #ifdef HAVE_STDARG_H ++ vim_snprintf((char *)IObuff, IOSIZE, (char *)s, a1, a2); ++ #else + vim_snprintf((char *)IObuff, IOSIZE, (char *)s, (long_u)a1, (long_u)a2); ++ #endif + return emsg(IObuff); + } + +*** ../vim-7.1.152/src/gui_xmebw.c Thu May 10 19:46:55 2007 +--- src/gui_xmebw.c Thu Sep 6 12:57:51 2007 +*************** +*** 395,405 **** + + /* Create the "highlight" pixmap. */ + color[4].pixel = eb->primitive.bottom_shadow_color; + attr.valuemask = XpmColorSymbols | XpmCloseness | XpmAllocColor; + attr.closeness = 65535; /* accuracy isn't crucial */ + attr.colorsymbols = color; + attr.numsymbols = XtNumber(color); +- attr.alloc_color = alloc_color; + + status = XpmCreatePixmapFromData(dpy, root, data, &pix, NULL, &attr); + XpmFreeAttributes(&attr); +--- 395,409 ---- + + /* Create the "highlight" pixmap. */ + color[4].pixel = eb->primitive.bottom_shadow_color; ++ #ifdef XpmAllocColor /* SGI doesn't have it */ + attr.valuemask = XpmColorSymbols | XpmCloseness | XpmAllocColor; ++ attr.alloc_color = alloc_color; ++ #else ++ attr.valuemask = XpmColorSymbols | XpmCloseness; ++ #endif + attr.closeness = 65535; /* accuracy isn't crucial */ + attr.colorsymbols = color; + attr.numsymbols = XtNumber(color); + + status = XpmCreatePixmapFromData(dpy, root, data, &pix, NULL, &attr); + XpmFreeAttributes(&attr); +*** ../vim-7.1.152/src/version.c Thu Nov 8 14:50:58 2007 +--- src/version.c Thu Nov 8 20:45:56 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 153, + /**/ + +-- +From "know your smileys": + @:-() Elvis Presley + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.154 b/7.1.154 new file mode 100644 index 00000000..f38ac016 --- /dev/null +++ b/7.1.154 @@ -0,0 +1,52 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.154 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.154 +Problem: Compiler warning for signed/unsigned compare. +Solution: Add type cast. +Files: src/screen.c + + +*** ../vim-7.1.153/src/screen.c Thu Nov 8 14:50:58 2007 +--- src/screen.c Thu Nov 8 21:18:46 2007 +*************** +*** 4315,4321 **** + long prevcol = (long)(ptr - line) - (c == NUL); + + /* we're not really at that column when skipping some text */ +! if ((wp->w_p_wrap ? wp->w_skipcol : wp->w_leftcol) > prevcol) + ++prevcol; + #endif + +--- 4315,4321 ---- + long prevcol = (long)(ptr - line) - (c == NUL); + + /* we're not really at that column when skipping some text */ +! if ((long)(wp->w_p_wrap ? wp->w_skipcol : wp->w_leftcol) > prevcol) + ++prevcol; + #endif + +*** ../vim-7.1.153/src/version.c Thu Nov 8 20:47:34 2007 +--- src/version.c Thu Nov 8 21:19:59 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 154, + /**/ + +-- +From "know your smileys": + :-F Bucktoothed vampire with one tooth missing + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.155 b/7.1.155 new file mode 100644 index 00000000..c813fef6 --- /dev/null +++ b/7.1.155 @@ -0,0 +1,53 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.155 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.155 +Problem: Crash when 'undolevels' is 0 and repeating "udd". (James Vega) +Solution: When there is only one branch use u_freeheader() to delete it. +Files: src/undo.c + + +*** ../vim-7.1.154/src/undo.c Mon Oct 1 22:53:27 2007 +--- src/undo.c Sat Nov 10 13:45:28 2007 +*************** +*** 1677,1682 **** +--- 1677,1690 ---- + u_header_T **uhpp; /* if not NULL reset when freeing this header */ + { + u_header_T *tofree, *next; ++ ++ /* If this is the top branch we may need to use u_freeheader() to update ++ * all the pointers. */ ++ if (uhp == buf->b_u_oldhead) ++ { ++ u_freeheader(buf, uhp, uhpp); ++ return; ++ } + + if (uhp->uh_alt_prev != NULL) + uhp->uh_alt_prev->uh_alt_next = NULL; +*** ../vim-7.1.154/src/version.c Thu Nov 8 21:23:34 2007 +--- src/version.c Sat Nov 10 22:49:40 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 155, + /**/ + +-- +I AM THANKFUL... +...for the piles of laundry and ironing because it means I +have plenty of clothes to wear. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.156 b/7.1.156 new file mode 100644 index 00000000..4701e023 --- /dev/null +++ b/7.1.156 @@ -0,0 +1,121 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.156 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.156 +Problem: Overlapping arguments for strcpy() when expanding command line + variables. +Solution: Use mch_memmove() instead of STRCPY(). Also fix a few typos. + (Dominique Pelle) +Files: src/ex_docmd.c + + +*** ../vim-7.1.155/src/ex_docmd.c Fri Oct 19 16:20:09 2007 +--- src/ex_docmd.c Sat Nov 10 12:39:51 2007 +*************** +*** 666,672 **** + if (ex_pressedreturn) + { + /* go up one line, to overwrite the ":" line, so the +! * output doensn't contain empty lines. */ + msg_row = prev_msg_row; + if (prev_msg_row == Rows - 1) + msg_row--; +--- 666,672 ---- + if (ex_pressedreturn) + { + /* go up one line, to overwrite the ":" line, so the +! * output doesn't contain empty lines. */ + msg_row = prev_msg_row; + if (prev_msg_row == Rows - 1) + msg_row--; +*************** +*** 2760,2766 **** + + /* + * Isolate the command and search for it in the command table. +! * Exeptions: + * - the 'k' command can directly be followed by any character. + * - the 's' command can be followed directly by 'c', 'g', 'i', 'I' or 'r' + * but :sre[wind] is another command, as are :scrip[tnames], +--- 2760,2766 ---- + + /* + * Isolate the command and search for it in the command table. +! * Exceptions: + * - the 'k' command can directly be followed by any character. + * - the 's' command can be followed directly by 'c', 'g', 'i', 'I' or 'r' + * but :sre[wind] is another command, as are :scrip[tnames], +*************** +*** 6677,6683 **** + * The list should be allocated using alloc(), as should each item in the + * list. This function takes over responsibility for freeing the list. + * +! * XXX The list is made into the arggument list. This is freed using + * FreeWild(), which does a series of vim_free() calls, unless the two defines + * __EMX__ and __ALWAYS_HAS_TRAILING_NUL_POINTER are set. In this case, a + * routine _fnexplodefree() is used. This may cause problems, but as the drop +--- 6677,6683 ---- + * The list should be allocated using alloc(), as should each item in the + * list. This function takes over responsibility for freeing the list. + * +! * XXX The list is made into the argument list. This is freed using + * FreeWild(), which does a series of vim_free() calls, unless the two defines + * __EMX__ and __ALWAYS_HAS_TRAILING_NUL_POINTER are set. In this case, a + * routine _fnexplodefree() is used. This may cause problems, but as the drop +*************** +*** 7795,7801 **** + if (vim_strchr(p_cpo, CPO_CHDIR) != NULL && curbufIsChanged() + && !eap->forceit) + { +! EMSG(_("E747: Cannot change directory, buffer is modifed (add ! to override)")); + return; + } + +--- 7795,7801 ---- + if (vim_strchr(p_cpo, CPO_CHDIR) != NULL && curbufIsChanged() + && !eap->forceit) + { +! EMSG(_("E747: Cannot change directory, buffer is modified (add ! to override)")); + return; + } + +*************** +*** 9391,9397 **** + if (src > srcstart && src[-1] == '\\') + { + *usedlen = 0; +! STRCPY(src - 1, src); /* remove backslash */ + return NULL; + } + +--- 9391,9397 ---- + if (src > srcstart && src[-1] == '\\') + { + *usedlen = 0; +! mch_memmove(src - 1, src, STRLEN(src) + 1); /* remove backslash */ + return NULL; + } + +*** ../vim-7.1.155/src/version.c Sat Nov 10 22:50:20 2007 +--- src/version.c Sun Nov 11 19:15:51 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 156, + /**/ + +-- +Common sense is what tells you that the world is flat. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.157 b/7.1.157 new file mode 100644 index 00000000..071fdd8c --- /dev/null +++ b/7.1.157 @@ -0,0 +1,55 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.157 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.157 +Problem: In Ex mode, :" gives an error at end-of-file. (Michael Hordijk) +Solution: Only give an error for an empty line, not for a comment. +Files: src/ex_docmd.c + + +*** ../vim-7.1.156/src/ex_docmd.c Sun Nov 11 19:16:44 2007 +--- src/ex_docmd.c Sat Nov 17 20:23:38 2007 +*************** +*** 1741,1747 **** + } + + /* ignore comment and empty lines */ +! if (*ea.cmd == '"' || *ea.cmd == NUL) + { + ex_pressedreturn = TRUE; + goto doend; +--- 1741,1749 ---- + } + + /* ignore comment and empty lines */ +! if (*ea.cmd == '"') +! goto doend; +! if (*ea.cmd == NUL) + { + ex_pressedreturn = TRUE; + goto doend; +*** ../vim-7.1.156/src/version.c Sun Nov 11 19:16:44 2007 +--- src/version.c Tue Nov 20 12:28:22 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 157, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +119. You are reading a book and look for the scroll bar to get to + the next page. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.158 b/7.1.158 new file mode 100644 index 00000000..8bd2e8f6 --- /dev/null +++ b/7.1.158 @@ -0,0 +1,157 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.158 (extra) +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.158 (extra) +Problem: Win32 console: When 'encoding' is "utf-8" and typing Alt-y the + result is wrong. Win32 GUI: Alt-y results in "u" when 'encoding' + is "cp1250" (Lukas Cerman) +Solution: For utf-8 don't set the 7th bit in a byte, convert to the correct + byte sequence. For cp1250, when conversion to 'encoding' results + in the 7th bit not set, set the 7th bit after conversion. +Files: src/os_win32.c, src/gui_w48.c + + +*** ../vim-7.1.157/src/os_win32.c Mon Oct 1 20:33:45 2007 +--- src/os_win32.c Sat Oct 27 17:35:04 2007 +*************** +*** 1521,1527 **** +--- 1521,1532 ---- + #endif + ) + { ++ #ifdef FEAT_MBYTE ++ n = (*mb_char2bytes)(typeahead[typeaheadlen] | 0x80, ++ typeahead + typeaheadlen); ++ #else + typeahead[typeaheadlen] |= 0x80; ++ #endif + modifiers &= ~MOD_MASK_ALT; + } + +*** ../vim-7.1.157/src/gui_w48.c Sun Sep 30 14:00:41 2007 +--- src/gui_w48.c Mon Oct 29 20:00:25 2007 +*************** +*** 486,495 **** + + /* + * Convert Unicode character "ch" to bytes in "string[slen]". + * Return the length. + */ + static int +! char_to_string(int ch, char_u *string, int slen) + { + int len; + int i; +--- 486,496 ---- + + /* + * Convert Unicode character "ch" to bytes in "string[slen]". ++ * When "had_alt" is TRUE the ALT key was included in "ch". + * Return the length. + */ + static int +! char_to_string(int ch, char_u *string, int slen, int had_alt) + { + int len; + int i; +*************** +*** 522,529 **** +--- 523,544 ---- + * "enc_codepage" is non-zero use the standard Win32 function, + * otherwise use our own conversion function (e.g., for UTF-8). */ + if (enc_codepage > 0) ++ { + len = WideCharToMultiByte(enc_codepage, 0, wstring, len, + string, slen, 0, NULL); ++ /* If we had included the ALT key into the character but now the ++ * upper bit is no longer set, that probably means the conversion ++ * failed. Convert the original character and set the upper bit ++ * afterwards. */ ++ if (had_alt && len == 1 && ch >= 0x80 && string[0] < 0x80) ++ { ++ wstring[0] = ch & 0x7f; ++ len = WideCharToMultiByte(enc_codepage, 0, wstring, len, ++ string, slen, 0, NULL); ++ if (len == 1) /* safety check */ ++ string[0] |= 0x80; ++ } ++ } + else + { + len = 1; +*************** +*** 573,579 **** + char_u string[40]; + int len = 0; + +! len = char_to_string(ch, string, 40); + if (len == 1 && string[0] == Ctrl_C && ctrl_c_interrupts) + { + trash_input_buf(); +--- 588,594 ---- + char_u string[40]; + int len = 0; + +! len = char_to_string(ch, string, 40, FALSE); + if (len == 1 && string[0] == Ctrl_C && ctrl_c_interrupts) + { + trash_input_buf(); +*************** +*** 640,646 **** + { + /* Although the documentation isn't clear about it, we assume "ch" is + * a Unicode character. */ +! len += char_to_string(ch, string + len, 40 - len); + } + + add_to_input_buf(string, len); +--- 655,661 ---- + { + /* Although the documentation isn't clear about it, we assume "ch" is + * a Unicode character. */ +! len += char_to_string(ch, string + len, 40 - len, TRUE); + } + + add_to_input_buf(string, len); +*************** +*** 1775,1781 **** + int len; + + /* Handle "key" as a Unicode character. */ +! len = char_to_string(key, string, 40); + add_to_input_buf(string, len); + } + break; +--- 1790,1796 ---- + int len; + + /* Handle "key" as a Unicode character. */ +! len = char_to_string(key, string, 40, FALSE); + add_to_input_buf(string, len); + } + break; +*** ../vim-7.1.157/src/version.c Tue Nov 20 12:30:31 2007 +--- src/version.c Tue Nov 20 17:19:18 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 158, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +123. You ask the car dealer to install an extra cigarette lighter + on your new car to power your notebook. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.159 b/7.1.159 new file mode 100644 index 00000000..e7f86991 --- /dev/null +++ b/7.1.159 @@ -0,0 +1,54 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.159 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.159 +Problem: strcpy() has overlapping arguments. +Solution: Use mch_memmove() instead. (Dominique Pelle) +Files: src/ex_cmds.c + + +*** ../vim-7.1.158/src/ex_cmds.c Thu Nov 8 20:47:34 2007 +--- src/ex_cmds.c Sun Nov 18 14:11:58 2007 +*************** +*** 4885,4891 **** + ++line2; + /* move the cursor to the new line, like Vi */ + ++curwin->w_cursor.lnum; +! STRCPY(new_start, p1 + 1); /* copy the rest */ + p1 = new_start - 1; + } + } +--- 4885,4892 ---- + ++line2; + /* move the cursor to the new line, like Vi */ + ++curwin->w_cursor.lnum; +! /* copy the rest */ +! mch_memmove(new_start, p1 + 1, STRLEN(p1 + 1) + 1); + p1 = new_start - 1; + } + } +*** ../vim-7.1.158/src/version.c Tue Nov 20 17:21:28 2007 +--- src/version.c Tue Nov 20 18:01:45 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 159, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +125. You begin to wonder how often it REALLY is necessary to get up + and shower or bathe. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.160 b/7.1.160 new file mode 100644 index 00000000..48d0443d --- /dev/null +++ b/7.1.160 @@ -0,0 +1,54 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.160 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.160 +Problem: When a focus autocommand is defined, getting or losing focus + causes the hit-enter prompt to be redrawn. (Bjorn Winckler) +Solution: Overwrite the last line. +Files: src/message.c + + +*** ../vim-7.1.159/src/message.c Thu Sep 13 22:04:30 2007 +--- src/message.c Sun Nov 4 17:33:15 2007 +*************** +*** 2850,2855 **** +--- 2850,2864 ---- + } + else if (State == HITRETURN || State == SETWSIZE) + { ++ if (msg_row == Rows - 1) ++ { ++ /* Avoid drawing the "hit-enter" prompt below the previous one, ++ * overwrite it. Esp. useful when regaining focus and a ++ * FocusGained autocmd exists but didn't draw anything. */ ++ msg_didout = FALSE; ++ msg_col = 0; ++ msg_clr_eos(); ++ } + hit_return_msg(); + msg_row = Rows - 1; + } +*** ../vim-7.1.159/src/version.c Tue Nov 20 18:03:34 2007 +--- src/version.c Sat Nov 24 15:41:43 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 160, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +142. You dream about creating the world's greatest web site. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.161 b/7.1.161 new file mode 100644 index 00000000..69469ca3 --- /dev/null +++ b/7.1.161 @@ -0,0 +1,176 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.161 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.161 +Problem: Compilation errors with tiny features and EXITFREE. +Solution: Add #ifdefs. (Dominique Pelle) +Files: src/edit.c, src/misc2.c + + +*** ../vim-7.1.160/src/edit.c Thu Nov 8 13:03:33 2007 +--- src/edit.c Sat Nov 24 14:57:46 2007 +*************** +*** 2236,2242 **** + while (i < actual_len && (p - IObuff + 6) < IOSIZE) + #ifdef FEAT_MBYTE + if (has_mbyte) +! p += mb_char2bytes(wca[i++], p); + else + #endif + *(p++) = wca[i++]; +--- 2236,2242 ---- + while (i < actual_len && (p - IObuff + 6) < IOSIZE) + #ifdef FEAT_MBYTE + if (has_mbyte) +! p += (*mb_char2bytes)(wca[i++], p); + else + #endif + *(p++) = wca[i++]; +*************** +*** 6444,6451 **** +--- 6444,6453 ---- + { + vim_free(last_insert); + last_insert = NULL; ++ # ifdef FEAT_INS_EXPAND + vim_free(compl_orig_text); + compl_orig_text = NULL; ++ # endif + } + #endif + +*** ../vim-7.1.160/src/misc2.c Thu Nov 8 20:47:34 2007 +--- src/misc2.c Sat Nov 24 15:01:46 2007 +*************** +*** 964,970 **** + { + buf_T *buf, *nextbuf; + static int entered = FALSE; +- win_T *win; + + /* When we cause a crash here it is caught and Vim tries to exit cleanly. + * Don't try freeing everything again. */ +--- 965,970 ---- +*************** +*** 972,986 **** + return; + entered = TRUE; + + block_autocmds(); /* don't want to trigger autocommands here */ + +! #ifdef FEAT_WINDOWS + /* close all tabs and windows */ + if (first_tabpage->tp_next != NULL) + do_cmdline_cmd((char_u *)"tabonly!"); + if (firstwin != lastwin) + do_cmdline_cmd((char_u *)"only!"); +! #endif + + # if defined(FEAT_SPELL) + /* Free all spell info. */ +--- 972,988 ---- + return; + entered = TRUE; + ++ # ifdef FEAT_AUTOCMD + block_autocmds(); /* don't want to trigger autocommands here */ ++ # endif + +! # ifdef FEAT_WINDOWS + /* close all tabs and windows */ + if (first_tabpage->tp_next != NULL) + do_cmdline_cmd((char_u *)"tabonly!"); + if (firstwin != lastwin) + do_cmdline_cmd((char_u *)"only!"); +! # endif + + # if defined(FEAT_SPELL) + /* Free all spell info. */ +*************** +*** 1031,1038 **** +--- 1033,1044 ---- + free_regexp_stuff(); + free_tag_stuff(); + free_cd_dir(); ++ # ifdef FEAT_EVAL + set_expr_line(NULL); ++ # endif ++ # ifdef FEAT_DIFF + diff_clear(curtab); ++ # endif + clear_sb_text(); /* free any scrollback text */ + + /* Free some global vars. */ +*************** +*** 1041,1059 **** + vim_free(clip_exclude_prog); + # endif + vim_free(last_cmdline); + vim_free(new_last_cmdline); + set_keep_msg(NULL, 0); + vim_free(ff_expand_buffer); + + /* Clear cmdline history. */ + p_hi = 0; + init_history(); + + #ifdef FEAT_QUICKFIX +! qf_free_all(NULL); +! /* Free all location lists */ +! FOR_ALL_WINDOWS(win) +! qf_free_all(win); + #endif + + /* Close all script inputs. */ +--- 1047,1073 ---- + vim_free(clip_exclude_prog); + # endif + vim_free(last_cmdline); ++ # ifdef FEAT_CMDHIST + vim_free(new_last_cmdline); ++ # endif + set_keep_msg(NULL, 0); + vim_free(ff_expand_buffer); + + /* Clear cmdline history. */ + p_hi = 0; ++ # ifdef FEAT_CMDHIST + init_history(); ++ # endif + + #ifdef FEAT_QUICKFIX +! { +! win_T *win; +! +! qf_free_all(NULL); +! /* Free all location lists */ +! FOR_ALL_WINDOWS(win) +! qf_free_all(win); +! } + #endif + + /* Close all script inputs. */ +*** ../vim-7.1.160/src/version.c Sat Nov 24 15:44:17 2007 +--- src/version.c Sat Nov 24 20:55:38 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 161, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +143. You dream in pallettes of 216 websafe colors. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.162 b/7.1.162 new file mode 100644 index 00000000..b61631c3 --- /dev/null +++ b/7.1.162 @@ -0,0 +1,172 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.162 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.162 +Problem: Crash when using a modifier before "while" or "for". (A.Politz) +Solution: Skip modifiers when checking for a loop command. +Files: src/proto/ex_docmd.pro, src/ex_docmd.c, src/ex_eval.c + + +*** ../vim-7.1.161/src/proto/ex_docmd.pro Sun Sep 30 14:00:41 2007 +--- src/proto/ex_docmd.pro Sat Nov 24 16:34:06 2007 +*************** +*** 5,10 **** +--- 5,11 ---- + int getline_equal __ARGS((char_u *(*fgetline)(int, void *, int), void *cookie, char_u *(*func)(int, void *, int))); + void *getline_cookie __ARGS((char_u *(*fgetline)(int, void *, int), void *cookie)); + int checkforcmd __ARGS((char_u **pp, char *cmd, int len)); ++ int modifier_len __ARGS((char_u *cmd)); + int cmd_exists __ARGS((char_u *name)); + char_u *set_one_cmd_context __ARGS((expand_T *xp, char_u *buff)); + char_u *skip_range __ARGS((char_u *cmd, int *ctx)); +*** ../vim-7.1.161/src/ex_docmd.c Tue Nov 20 12:30:31 2007 +--- src/ex_docmd.c Sat Nov 24 16:41:20 2007 +*************** +*** 2963,2968 **** +--- 2963,3019 ---- + #endif + + #if defined(FEAT_EVAL) || defined(PROTO) ++ static struct cmdmod ++ { ++ char *name; ++ int minlen; ++ int has_count; /* :123verbose :3tab */ ++ } cmdmods[] = { ++ {"aboveleft", 3, FALSE}, ++ {"belowright", 3, FALSE}, ++ {"botright", 2, FALSE}, ++ {"browse", 3, FALSE}, ++ {"confirm", 4, FALSE}, ++ {"hide", 3, FALSE}, ++ {"keepalt", 5, FALSE}, ++ {"keepjumps", 5, FALSE}, ++ {"keepmarks", 3, FALSE}, ++ {"leftabove", 5, FALSE}, ++ {"lockmarks", 3, FALSE}, ++ {"rightbelow", 6, FALSE}, ++ {"sandbox", 3, FALSE}, ++ {"silent", 3, FALSE}, ++ {"tab", 3, TRUE}, ++ {"topleft", 2, FALSE}, ++ {"verbose", 4, TRUE}, ++ {"vertical", 4, FALSE}, ++ }; ++ ++ /* ++ * Return length of a command modifier (including optional count). ++ * Return zero when it's not a modifier. ++ */ ++ int ++ modifier_len(cmd) ++ char_u *cmd; ++ { ++ int i, j; ++ char_u *p = cmd; ++ ++ if (VIM_ISDIGIT(*cmd)) ++ p = skipwhite(skipdigits(cmd)); ++ for (i = 0; i < sizeof(cmdmods) / sizeof(struct cmdmod); ++i) ++ { ++ for (j = 0; p[j] != NUL; ++j) ++ if (p[j] != cmdmods[i].name[j]) ++ break; ++ if (!isalpha(p[j]) && j >= cmdmods[i].minlen ++ && (p == cmd || cmdmods[i].has_count)) ++ return j + (p - cmd); ++ } ++ return 0; ++ } ++ + /* + * Return > 0 if an Ex command "name" exists. + * Return 2 if there is an exact match. +*************** +*** 2977,3006 **** + int i; + int j; + char_u *p; +- static struct cmdmod +- { +- char *name; +- int minlen; +- } cmdmods[] = { +- {"aboveleft", 3}, +- {"belowright", 3}, +- {"botright", 2}, +- {"browse", 3}, +- {"confirm", 4}, +- {"hide", 3}, +- {"keepalt", 5}, +- {"keepjumps", 5}, +- {"keepmarks", 3}, +- {"leftabove", 5}, +- {"lockmarks", 3}, +- {"rightbelow", 6}, +- {"sandbox", 3}, +- {"silent", 3}, +- {"tab", 3}, +- {"topleft", 2}, +- {"verbose", 4}, +- {"vertical", 4}, +- }; + + /* Check command modifiers. */ + for (i = 0; i < sizeof(cmdmods) / sizeof(struct cmdmod); ++i) +--- 3028,3033 ---- +*** ../vim-7.1.161/src/ex_eval.c Wed Aug 1 15:47:06 2007 +--- src/ex_eval.c Sat Nov 24 16:34:09 2007 +*************** +*** 2269,2277 **** + has_loop_cmd(p) + char_u *p; + { +! p = skipwhite(p); +! while (*p == ':') +! p = skipwhite(p + 1); + if ((p[0] == 'w' && p[1] == 'h') + || (p[0] == 'f' && p[1] == 'o' && p[2] == 'r')) + return TRUE; +--- 2269,2286 ---- + has_loop_cmd(p) + char_u *p; + { +! int len; +! +! /* skip modifiers, white space and ':' */ +! for (;;) +! { +! while (*p == ' ' || *p == '\t' || *p == ':') +! ++p; +! len = modifier_len(p); +! if (len == 0) +! break; +! p += len; +! } + if ((p[0] == 'w' && p[1] == 'h') + || (p[0] == 'f' && p[1] == 'o' && p[2] == 'r')) + return TRUE; +*** ../vim-7.1.161/src/version.c Sat Nov 24 21:27:33 2007 +--- src/version.c Sat Nov 24 21:48:38 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 162, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +144. You eagerly await the update of the "Cool Site of the Day." + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.163 b/7.1.163 new file mode 100644 index 00000000..433b2b3d --- /dev/null +++ b/7.1.163 @@ -0,0 +1,72 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.163 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.163 +Problem: Warning for the unknown option 'bufsecret'. +Solution: Remove the lines .vim that use this option. (Andy Wokula) +Files: runtime/menu.vim + + +*** ../vim-7.1.162/runtime/menu.vim Sun May 6 15:21:23 2007 +--- runtime/menu.vim Mon Nov 19 23:17:11 2007 +*************** +*** 2,8 **** + " You can also use this as a start for your own set of menus. + " + " Maintainer: Bram Moolenaar +! " Last Change: 2007 Jan 09 + + " Note that ":an" (short for ":anoremenu") is often used to make a menu work + " in all modes and avoid side effects from mappings defined by the user. +--- 2,8 ---- + " You can also use this as a start for your own set of menus. + " + " Maintainer: Bram Moolenaar +! " Last Change: 2007 Nov 19 + + " Note that ":an" (short for ":anoremenu") is often used to make a menu work + " in all modes and avoid side effects from mappings defined by the user. +*************** +*** 658,664 **** + let buf = 1 + while buf <= bufnr('$') + if bufexists(buf) && !isdirectory(bufname(buf)) && buflisted(buf) +- \ && !getbufvar(buf, "&bufsecret") + let s:bmenu_count = s:bmenu_count + 1 + endif + let buf = buf + 1 +--- 658,663 ---- +*************** +*** 671,677 **** + let buf = 1 + while buf <= bufnr('$') + if bufexists(buf) && !isdirectory(bufname(buf)) && buflisted(buf) +- \ && !getbufvar(buf, "&bufsecret") + call BMFilename(bufname(buf), buf) + endif + let buf = buf + 1 +--- 670,675 ---- +*** ../vim-7.1.162/src/version.c Sat Nov 24 21:49:19 2007 +--- src/version.c Thu Nov 29 17:44:08 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 163, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +158. You get a tuner card so you can watch TV while surfing. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.164 b/7.1.164 new file mode 100644 index 00000000..09aee5d3 --- /dev/null +++ b/7.1.164 @@ -0,0 +1,52 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.164 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.164 +Problem: Reading past end of regexp pattern. (Dominique Pelle) +Solution: Use utf_ptr2len(). +Files: src/regexp.c + + +*** ../vim-7.1.163/src/regexp.c Sat Aug 11 13:57:31 2007 +--- src/regexp.c Sat Nov 24 13:23:53 2007 +*************** +*** 2770,2776 **** + { + #ifdef FEAT_MBYTE + if (enc_utf8) +! prevchr_len += utf_char2len(mb_ptr2char(regparse + prevchr_len)); + else if (has_mbyte) + prevchr_len += (*mb_ptr2len)(regparse + prevchr_len); + else +--- 2770,2777 ---- + { + #ifdef FEAT_MBYTE + if (enc_utf8) +! /* exclude composing chars that mb_ptr2len does include */ +! prevchr_len += utf_ptr2len(regparse + prevchr_len); + else if (has_mbyte) + prevchr_len += (*mb_ptr2len)(regparse + prevchr_len); + else +*** ../vim-7.1.163/src/version.c Thu Nov 29 17:46:01 2007 +--- src/version.c Thu Nov 29 21:25:45 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 164, + /**/ + +-- +Send $25.00 for handy leaflet on how to make money by selling leaflets + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.165 b/7.1.165 new file mode 100644 index 00000000..b2e8b303 --- /dev/null +++ b/7.1.165 @@ -0,0 +1,177 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.165 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.165 +Problem: Crash related to getting X window ID. (Dominique Pelle) +Solution: Don't trust the window ID that we got in the past, check it every + time. +Files: src/os_unix.c + + +*** ../vim-7.1.164/src/os_unix.c Thu Aug 30 11:46:46 2007 +--- src/os_unix.c Thu Nov 29 18:19:56 2007 +*************** +*** 310,316 **** + } + + /* +! * mch_inchar(): low level input funcion. + * Get a characters from the keyboard. + * Return the number of characters that are available. + * If wtime == 0 do not wait for characters. +--- 310,316 ---- + } + + /* +! * mch_inchar(): low level input function. + * Get a characters from the keyboard. + * Return the number of characters that are available. + * If wtime == 0 do not wait for characters. +*************** +*** 1567,1584 **** + #ifdef FEAT_XCLIPBOARD + if (xterm_dpy != NULL && x11_window != 0) + { +! /* Checked it already. */ +! if (x11_display_from == XD_XTERM) +! return OK; +! +! /* +! * If the X11 display was opened here before, for the window where Vim +! * was started, close that one now to avoid a memory leak. +! */ +! if (x11_display_from == XD_HERE && x11_display != NULL) +! XCloseDisplay(x11_display); +! x11_display = xterm_dpy; +! x11_display_from = XD_XTERM; + if (test_x11_window(x11_display) == FAIL) + { + /* probably bad $WINDOWID */ +--- 1567,1585 ---- + #ifdef FEAT_XCLIPBOARD + if (xterm_dpy != NULL && x11_window != 0) + { +! /* We may have checked it already, but Gnome terminal can move us to +! * another window, so we need to check every time. */ +! if (x11_display_from != XD_XTERM) +! { +! /* +! * If the X11 display was opened here before, for the window where +! * Vim was started, close that one now to avoid a memory leak. +! */ +! if (x11_display_from == XD_HERE && x11_display != NULL) +! XCloseDisplay(x11_display); +! x11_display = xterm_dpy; +! x11_display_from = XD_XTERM; +! } + if (test_x11_window(x11_display) == FAIL) + { + /* probably bad $WINDOWID */ +*************** +*** 2421,2427 **** + /* + * Set the case of the file name, if it already exists. This will cause the + * file name to remain exactly the same. +! * Only required for file systems where case is ingored and preserved. + */ + /*ARGSUSED*/ + void +--- 2422,2428 ---- + /* + * Set the case of the file name, if it already exists. This will cause the + * file name to remain exactly the same. +! * Only required for file systems where case is ignored and preserved. + */ + /*ARGSUSED*/ + void +*************** +*** 4653,4659 **** + ret = poll(fds, nfd, towait); + # ifdef FEAT_MZSCHEME + if (ret == 0 && mzquantum_used) +! /* MzThreads scheduling is required and timeout occured */ + finished = FALSE; + # endif + +--- 4654,4660 ---- + ret = poll(fds, nfd, towait); + # ifdef FEAT_MZSCHEME + if (ret == 0 && mzquantum_used) +! /* MzThreads scheduling is required and timeout occurred */ + finished = FALSE; + # endif + +*************** +*** 4801,4807 **** + #endif + # ifdef FEAT_MZSCHEME + if (ret == 0 && mzquantum_used) +! /* loop if MzThreads must be scheduled and timeout occured */ + finished = FALSE; + # endif + +--- 4802,4808 ---- + #endif + # ifdef FEAT_MZSCHEME + if (ret == 0 && mzquantum_used) +! /* loop if MzThreads must be scheduled and timeout occurred */ + finished = FALSE; + # endif + +*************** +*** 5191,5197 **** + { + /* When using system() always add extra quotes, because the shell + * is started twice. Otherwise put a backslash before special +! * characters, except insice ``. */ + #ifdef USE_SYSTEM + STRCAT(command, " \""); + STRCAT(command, pat[i]); +--- 5192,5198 ---- + { + /* When using system() always add extra quotes, because the shell + * is started twice. Otherwise put a backslash before special +! * characters, except inside ``. */ + #ifdef USE_SYSTEM + STRCAT(command, " \""); + STRCAT(command, pat[i]); +*************** +*** 5675,5681 **** + /* gpm library tries to handling TSTP causes + * problems. Anyways, we close connection to Gpm whenever + * we are going to suspend or starting an external process +! * so we should'nt have problem with this + */ + signal(SIGTSTP, restricted ? SIG_IGN : SIG_DFL); + return 1; /* succeed */ +--- 5676,5682 ---- + /* gpm library tries to handling TSTP causes + * problems. Anyways, we close connection to Gpm whenever + * we are going to suspend or starting an external process +! * so we shouldn't have problem with this + */ + signal(SIGTSTP, restricted ? SIG_IGN : SIG_DFL); + return 1; /* succeed */ +*** ../vim-7.1.164/src/version.c Thu Nov 29 21:26:38 2007 +--- src/version.c Sat Dec 1 17:17:20 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 165, + /**/ + +-- +"Hit any key to continue" is very confusing when you have two keyboards. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.166 b/7.1.166 new file mode 100644 index 00000000..14268d72 --- /dev/null +++ b/7.1.166 @@ -0,0 +1,80 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.166 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.166 +Problem: Memory leak for using "gp" in Visual mode. +Solution: Free memory in put_register(). (Dominique Pelle) +Files: src/ops.c + + +*** ../vim-7.1.165/src/ops.c Thu Nov 8 10:35:02 2007 +--- src/ops.c Sun Nov 25 15:17:43 2007 +*************** +*** 927,934 **** + int name; + int copy; /* make a copy, if FALSE make register empty. */ + { +! static struct yankreg *reg; +! int i; + + #ifdef FEAT_CLIPBOARD + /* When Visual area changed, may have to update selection. Obtain the +--- 927,934 ---- + int name; + int copy; /* make a copy, if FALSE make register empty. */ + { +! struct yankreg *reg; +! int i; + + #ifdef FEAT_CLIPBOARD + /* When Visual area changed, may have to update selection. Obtain the +*************** +*** 967,973 **** + } + + /* +! * Put "reg" into register "name". Free any previous contents. + */ + void + put_register(name, reg) +--- 967,973 ---- + } + + /* +! * Put "reg" into register "name". Free any previous contents and "reg". + */ + void + put_register(name, reg) +*************** +*** 977,982 **** +--- 977,983 ---- + get_yank_register(name, 0); + free_yank_all(); + *y_current = *(struct yankreg *)reg; ++ vim_free(reg); + + # ifdef FEAT_CLIPBOARD + /* Send text written to clipboard register to the clipboard. */ +*** ../vim-7.1.165/src/version.c Sat Dec 1 17:18:45 2007 +--- src/version.c Sat Dec 1 21:11:25 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 166, + /**/ + +-- +An error has occurred. Hit any user to continue. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.167 b/7.1.167 new file mode 100644 index 00000000..66426401 --- /dev/null +++ b/7.1.167 @@ -0,0 +1,80 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.167 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.167 +Problem: Xxd crashes when using "xxd -b -c 110". (Debian bug 452789) +Solution: Allocate more memory. Fix check for maximum number of columns. +Files: src/xxd/xxd.c + + +*** ../vim-7.1.166/src/xxd/xxd.c Thu May 10 19:07:42 2007 +--- src/xxd/xxd.c Thu Nov 29 21:05:16 2007 +*************** +*** 212,218 **** + + #define TRY_SEEK /* attempt to use lseek, or skip forward by reading */ + #define COLS 256 /* change here, if you ever need more columns */ +! #define LLEN (9 + (5*COLS-1)/2 + 2 + COLS) + + char hexxa[] = "0123456789abcdef0123456789ABCDEF", *hexx = hexxa; + +--- 212,218 ---- + + #define TRY_SEEK /* attempt to use lseek, or skip forward by reading */ + #define COLS 256 /* change here, if you ever need more columns */ +! #define LLEN (11 + (9*COLS-1)/1 + COLS + 2) + + char hexxa[] = "0123456789abcdef0123456789ABCDEF", *hexx = hexxa; + +*************** +*** 590,596 **** + default: octspergrp = 0; break; + } + +! if (cols < 1 || (!hextype && (cols > COLS))) + { + fprintf(stderr, "%s: invalid number of columns (max. %d).\n", pname, COLS); + exit(1); +--- 590,597 ---- + default: octspergrp = 0; break; + } + +! if (cols < 1 || ((hextype == HEX_NORMAL || hextype == HEX_BITS) +! && (cols > COLS))) + { + fprintf(stderr, "%s: invalid number of columns (max. %d).\n", pname, COLS); + exit(1); +*************** +*** 750,755 **** +--- 751,757 ---- + } + if (ebcdic) + e = (e < 64) ? '.' : etoa64[e-64]; ++ /* When changing this update definition of LLEN above. */ + l[11 + (grplen * cols - 1)/octspergrp + p] = + #ifdef __MVS__ + (e >= 64) +*** ../vim-7.1.166/src/version.c Sat Dec 1 21:12:23 2007 +--- src/version.c Mon Dec 3 21:30:31 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 167, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +178. You look for an icon to double-click to open your bedroom window. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.168 b/7.1.168 new file mode 100644 index 00000000..07bf9c24 --- /dev/null +++ b/7.1.168 @@ -0,0 +1,112 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.168 (extra) +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.168 (extra) +Problem: Win32 GUI: Since patch 7.1.095, when the Vim window does not have + focus, clicking in it doesn't position the cursor. (Juergen + Kraemer) +Solution: Don't reset s_button_pending just after receiving focus. +Files: src/gui_w48.c + + +*** ../vim-7.1.167/src/gui_w48.c Tue Nov 20 17:21:28 2007 +--- src/gui_w48.c Mon Dec 3 22:13:16 2007 +*************** +*** 290,295 **** +--- 290,300 ---- + + /* Local variables */ + static int s_button_pending = -1; ++ ++ /* s_getting_focus is set when we got focus but didn't see mouse-up event yet, ++ * so don't reset s_button_pending. */ ++ static int s_getting_focus = FALSE; ++ + static int s_x_pending; + static int s_y_pending; + static UINT s_kFlags_pending; +*************** +*** 671,676 **** +--- 676,683 ---- + { + int vim_modifiers = 0x0; + ++ s_getting_focus = FALSE; ++ + if (keyFlags & MK_SHIFT) + vim_modifiers |= MOUSE_SHIFT; + if (keyFlags & MK_CONTROL) +*************** +*** 792,797 **** +--- 799,805 ---- + { + int button; + ++ s_getting_focus = FALSE; + if (s_button_pending > -1) + { + /* Delayed action for mouse down event */ +*************** +*** 1951,1958 **** + allow_scrollbar = FALSE; + + /* Clear pending mouse button, the release event may have been +! * taken by the dialog window. */ +! s_button_pending = -1; + + return OK; + } +--- 1959,1968 ---- + allow_scrollbar = FALSE; + + /* Clear pending mouse button, the release event may have been +! * taken by the dialog window. But don't do this when getting +! * focus, we need the mouse-up event then. */ +! if (!s_getting_focus) +! s_button_pending = -1; + + return OK; + } +*************** +*** 2702,2707 **** +--- 2712,2718 ---- + HWND hwndOldFocus) + { + gui_focus_change(TRUE); ++ s_getting_focus = TRUE; + (void)MyWindowProc(hwnd, WM_SETFOCUS, (WPARAM)hwndOldFocus, 0); + } + +*************** +*** 2711,2716 **** +--- 2722,2728 ---- + HWND hwndNewFocus) + { + gui_focus_change(FALSE); ++ s_getting_focus = FALSE; + (void)MyWindowProc(hwnd, WM_KILLFOCUS, (WPARAM)hwndNewFocus, 0); + } + +*** ../vim-7.1.167/src/version.c Mon Dec 3 21:31:56 2007 +--- src/version.c Mon Dec 3 22:16:32 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 168, + /**/ + +-- +Rule #1: Don't give somebody a tool that he's going to hurt himself with. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.169 b/7.1.169 new file mode 100644 index 00000000..12f66df6 --- /dev/null +++ b/7.1.169 @@ -0,0 +1,75 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.169 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.169 +Problem: Using uninitialized variable when system() fails. (Dominique + Pelle) +Solution: Let system() return an empty string when it fails. +Files: src/eval.c + + +*** ../vim-7.1.168/src/eval.c Thu Nov 8 20:47:34 2007 +--- src/eval.c Fri Nov 30 21:01:26 2007 +*************** +*** 15826,15832 **** + FILE *fd; + + if (check_restricted() || check_secure()) +! return; + + if (argvars[1].v_type != VAR_UNKNOWN) + { +--- 15826,15832 ---- + FILE *fd; + + if (check_restricted() || check_secure()) +! goto done; + + if (argvars[1].v_type != VAR_UNKNOWN) + { +*************** +*** 15837,15843 **** + if ((infile = vim_tempname('i')) == NULL) + { + EMSG(_(e_notmp)); +! return; + } + + fd = mch_fopen((char *)infile, WRITEBIN); +--- 15837,15843 ---- + if ((infile = vim_tempname('i')) == NULL) + { + EMSG(_(e_notmp)); +! goto done; + } + + fd = mch_fopen((char *)infile, WRITEBIN); +*** ../vim-7.1.168/src/version.c Mon Dec 3 22:20:17 2007 +--- src/version.c Fri Dec 7 17:07:32 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 169, + /**/ + +-- +% cat /usr/include/sys/errno.h +#define EPERM 1 /* Operation not permitted */ +#define ENOENT 2 /* No such file or directory */ +#define ESRCH 3 /* No such process */ +[...] +#define EMACS 666 /* Too many macros */ +% + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.170 b/7.1.170 new file mode 100644 index 00000000..fabeb110 --- /dev/null +++ b/7.1.170 @@ -0,0 +1,58 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.170 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.170 +Problem: Valgrind warning for overlapping arguments for strcpy(). +Solution: Use mch_memmove() instead. (Dominique Pelle) +Files: src/getchar.c + + +*** ../vim-7.1.169/src/getchar.c Thu Sep 13 18:25:08 2007 +--- src/getchar.c Mon Dec 3 20:42:29 2007 +*************** +*** 253,260 **** + return; + } + else if (buf->bh_index != 0) +! STRCPY(buf->bh_first.b_next->b_str, +! buf->bh_first.b_next->b_str + buf->bh_index); + buf->bh_index = 0; + + if (buf->bh_space >= (int)slen) +--- 253,261 ---- + return; + } + else if (buf->bh_index != 0) +! mch_memmove(buf->bh_first.b_next->b_str, +! buf->bh_first.b_next->b_str + buf->bh_index, +! STRLEN(buf->bh_first.b_next->b_str + buf->bh_index) + 1); + buf->bh_index = 0; + + if (buf->bh_space >= (int)slen) +*** ../vim-7.1.169/src/version.c Fri Dec 7 17:08:35 2007 +--- src/version.c Fri Dec 7 17:27:13 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 170, + /**/ + +-- +Some of the well know MS-Windows errors: + ESLEEP Operator fell asleep + ENOERR No error yet + EDOLLAR OS too expensive + EWINDOWS MS-Windows loaded, system in danger + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.171 b/7.1.171 new file mode 100644 index 00000000..cad1edd4 --- /dev/null +++ b/7.1.171 @@ -0,0 +1,79 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.171 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.171 +Problem: Reading one byte before allocated memory. +Solution: Check index not to become negative. (Dominique Pelle) +Files: src/ex_getln.c + + +*** ../vim-7.1.170/src/ex_getln.c Tue Oct 30 17:36:31 2007 +--- src/ex_getln.c Tue Dec 4 21:49:24 2007 +*************** +*** 1186,1195 **** + case K_LEFT: + case K_S_LEFT: + case K_C_LEFT: + do + { +- if (ccline.cmdpos == 0) +- break; + --ccline.cmdpos; + #ifdef FEAT_MBYTE + if (has_mbyte) /* move to first byte of char */ +--- 1186,1195 ---- + case K_LEFT: + case K_S_LEFT: + case K_C_LEFT: ++ if (ccline.cmdpos == 0) ++ goto cmdline_not_changed; + do + { + --ccline.cmdpos; + #ifdef FEAT_MBYTE + if (has_mbyte) /* move to first byte of char */ +*************** +*** 1198,1204 **** + #endif + ccline.cmdspos -= cmdline_charsize(ccline.cmdpos); + } +! while ((c == K_S_LEFT || c == K_C_LEFT + || (mod_mask & (MOD_MASK_SHIFT|MOD_MASK_CTRL))) + && ccline.cmdbuff[ccline.cmdpos - 1] != ' '); + #ifdef FEAT_MBYTE +--- 1198,1205 ---- + #endif + ccline.cmdspos -= cmdline_charsize(ccline.cmdpos); + } +! while (ccline.cmdpos > 0 +! && (c == K_S_LEFT || c == K_C_LEFT + || (mod_mask & (MOD_MASK_SHIFT|MOD_MASK_CTRL))) + && ccline.cmdbuff[ccline.cmdpos - 1] != ' '); + #ifdef FEAT_MBYTE +*** ../vim-7.1.170/src/version.c Fri Dec 7 17:30:04 2007 +--- src/version.c Fri Dec 7 20:00:06 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 171, + /**/ + +-- +Some of the well know MS-Windows errors: + EMULTI Multitasking attempted, system confused + EKEYBOARD Keyboard locked, try getting out of this one! + EXPLAIN Unexplained error, please tell us what happened + EFUTURE Reserved for our future mistakes + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.172 b/7.1.172 new file mode 100644 index 00000000..9f608823 --- /dev/null +++ b/7.1.172 @@ -0,0 +1,50 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.172 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.172 +Problem: When 'buftype' is "acwrite" Vim still checks if the file or + directory exists before overwriting. +Solution: Don't check for overwriting when the buffer name is not a file + name. +Files: src/ex_cmds.c + + +*** ../vim-7.1.171/src/ex_cmds.c Tue Nov 20 18:03:34 2007 +--- src/ex_cmds.c Fri Dec 7 22:13:32 2007 +*************** +*** 2732,2737 **** +--- 2732,2740 ---- + && vim_strchr(p_cpo, CPO_OVERNEW) == NULL) + || (buf->b_flags & BF_READERR)) + && !p_wa ++ #ifdef FEAT_QUICKFIX ++ && !bt_nofile(buf) ++ #endif + && vim_fexists(ffname)) + { + if (!eap->forceit && !eap->append) +*** ../vim-7.1.171/src/version.c Fri Dec 7 20:28:13 2007 +--- src/version.c Sat Dec 8 22:18:54 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 172, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +206. You religiously respond immediately to e-mail, while ignoring + your growing pile of snail mail. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.173 b/7.1.173 new file mode 100644 index 00000000..e6a855d0 --- /dev/null +++ b/7.1.173 @@ -0,0 +1,61 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.173 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.173 +Problem: Accessing freed memory. (Dominique Pelle) +Solution: Don't call reg_getline() to check if a line is the first in the + file. +Files: src/regexp.c + + +*** ../vim-7.1.172/src/regexp.c Thu Nov 29 21:26:38 2007 +--- src/regexp.c Sat Dec 8 15:54:05 2007 +*************** +*** 3810,3820 **** + break; + + case RE_BOF: +! /* Passing -1 to the getline() function provided for the search +! * should always return NULL if the current line is the first +! * line of the file. */ + if (reglnum != 0 || reginput != regline +! || (REG_MULTI && reg_getline((linenr_T)-1) != NULL)) + status = RA_NOMATCH; + break; + +--- 3810,3820 ---- + break; + + case RE_BOF: +! /* We're not at the beginning of the file when below the first +! * line where we started, not at the start of the line or we +! * didn't start at the first line of the buffer. */ + if (reglnum != 0 || reginput != regline +! || (REG_MULTI && reg_firstlnum > 1)) + status = RA_NOMATCH; + break; + +*** ../vim-7.1.172/src/version.c Sat Dec 8 22:20:24 2007 +--- src/version.c Sun Dec 9 19:24:36 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 173, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +213. Your kids start referring to you as "that guy in front of the monitor." + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.174 b/7.1.174 new file mode 100644 index 00000000..7eb4c218 --- /dev/null +++ b/7.1.174 @@ -0,0 +1,71 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.174 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.174 +Problem: Writing NUL past end of a buffer. +Solution: Copy one byte less when using strncat(). (Dominuque Pelle) +Files: src/ex_cmds.c, src/ex_docmd.c + + +*** ../vim-7.1.173/src/ex_cmds.c Sat Dec 8 22:20:24 2007 +--- src/ex_cmds.c Fri Dec 7 22:13:32 2007 +*************** +*** 1650,1656 **** + { + vim_snprintf((char *)IObuff, IOSIZE, _("%sviminfo: %s in line: "), + errnum, message); +! STRNCAT(IObuff, line, IOSIZE - STRLEN(IObuff)); + if (IObuff[STRLEN(IObuff) - 1] == '\n') + IObuff[STRLEN(IObuff) - 1] = NUL; + emsg(IObuff); +--- 1650,1656 ---- + { + vim_snprintf((char *)IObuff, IOSIZE, _("%sviminfo: %s in line: "), + errnum, message); +! STRNCAT(IObuff, line, IOSIZE - STRLEN(IObuff) - 1); + if (IObuff[STRLEN(IObuff) - 1] == '\n') + IObuff[STRLEN(IObuff) - 1] = NUL; + emsg(IObuff); +*** ../vim-7.1.173/src/ex_docmd.c Sat Nov 24 21:49:19 2007 +--- src/ex_docmd.c Fri Dec 7 21:01:03 2007 +*************** +*** 2660,2666 **** + errormsg = IObuff; + } + STRCAT(errormsg, ": "); +! STRNCAT(errormsg, *cmdlinep, IOSIZE - STRLEN(IObuff)); + } + emsg(errormsg); + } +--- 2660,2666 ---- + errormsg = IObuff; + } + STRCAT(errormsg, ": "); +! STRNCAT(errormsg, *cmdlinep, IOSIZE - STRLEN(IObuff) - 1); + } + emsg(errormsg); + } +*** ../vim-7.1.173/src/version.c Sun Dec 9 19:25:35 2007 +--- src/version.c Sun Dec 9 19:36:50 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 174, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +214. Your MCI "Circle of Friends" are all Hayes-compatible. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.175 b/7.1.175 new file mode 100644 index 00000000..3ec00fd7 --- /dev/null +++ b/7.1.175 @@ -0,0 +1,179 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.175 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.175 +Problem: doesn't work with some combination of 'sts', 'linebreak' and + 'backspace'. (Francois Ingelrest) +Solution: When adding white space results in not moving back delete one + character. +Files: src/edit.c + + +*** ../vim-7.1.174/src/edit.c Sat Nov 24 21:27:33 2007 +--- src/edit.c Fri Dec 7 21:32:48 2007 +*************** +*** 8189,8194 **** +--- 8189,8217 ---- + AppendCharToRedobuff(K_DEL); + } + ++ static void ins_bs_one __ARGS((colnr_T *vcolp)); ++ ++ /* ++ * Delete one character for ins_bs(). ++ */ ++ static void ++ ins_bs_one(vcolp) ++ colnr_T *vcolp; ++ { ++ dec_cursor(); ++ getvcol(curwin, &curwin->w_cursor, vcolp, NULL, NULL); ++ if (State & REPLACE_FLAG) ++ { ++ /* Don't delete characters before the insert point when in ++ * Replace mode */ ++ if (curwin->w_cursor.lnum != Insstart.lnum ++ || curwin->w_cursor.col >= Insstart.col) ++ replace_do_bs(); ++ } ++ else ++ (void)del_char(FALSE); ++ } ++ + /* + * Handle Backspace, delete-word and delete-line in Insert mode. + * Return TRUE when backspace was actually used. +*************** +*** 8418,8426 **** + int ts; + colnr_T vcol; + colnr_T want_vcol; +! #if 0 +! int extra = 0; +! #endif + + *inserted_space_p = FALSE; + if (p_sta && in_indent) +--- 8441,8447 ---- + int ts; + colnr_T vcol; + colnr_T want_vcol; +! colnr_T start_vcol; + + *inserted_space_p = FALSE; + if (p_sta && in_indent) +*************** +*** 8431,8436 **** +--- 8452,8458 ---- + * 'showbreak' may get in the way, need to get the last column of + * the previous character. */ + getvcol(curwin, &curwin->w_cursor, &vcol, NULL, NULL); ++ start_vcol = vcol; + dec_cursor(); + getvcol(curwin, &curwin->w_cursor, NULL, NULL, &want_vcol); + inc_cursor(); +*************** +*** 8439,8468 **** + /* delete characters until we are at or before want_vcol */ + while (vcol > want_vcol + && (cc = *(ml_get_cursor() - 1), vim_iswhite(cc))) +! { +! dec_cursor(); +! getvcol(curwin, &curwin->w_cursor, &vcol, NULL, NULL); +! if (State & REPLACE_FLAG) +! { +! /* Don't delete characters before the insert point when in +! * Replace mode */ +! if (curwin->w_cursor.lnum != Insstart.lnum +! || curwin->w_cursor.col >= Insstart.col) +! { +! #if 0 /* what was this for? It causes problems when sw != ts. */ +! if (State == REPLACE && (int)vcol < want_vcol) +! { +! (void)del_char(FALSE); +! extra = 2; /* don't pop too much */ +! } +! else +! #endif +! replace_do_bs(); +! } +! } +! else +! (void)del_char(FALSE); +! } + + /* insert extra spaces until we are at want_vcol */ + while (vcol < want_vcol) +--- 8461,8467 ---- + /* delete characters until we are at or before want_vcol */ + while (vcol > want_vcol + && (cc = *(ml_get_cursor() - 1), vim_iswhite(cc))) +! ins_bs_one(&vcol); + + /* insert extra spaces until we are at want_vcol */ + while (vcol < want_vcol) +*************** +*** 8479,8500 **** + #endif + { + ins_str((char_u *)" "); +! if ((State & REPLACE_FLAG) /* && extra <= 1 */) +! { +! #if 0 +! if (extra) +! replace_push_off(NUL); +! else +! #endif +! replace_push(NUL); +! } +! #if 0 +! if (extra == 2) +! extra = 1; +! #endif + } + getvcol(curwin, &curwin->w_cursor, &vcol, NULL, NULL); + } + } + + /* +--- 8478,8493 ---- + #endif + { + ins_str((char_u *)" "); +! if ((State & REPLACE_FLAG)) +! replace_push(NUL); + } + getvcol(curwin, &curwin->w_cursor, &vcol, NULL, NULL); + } ++ ++ /* If we are now back where we started delete one character. Can ++ * happen when using 'sts' and 'linebreak'. */ ++ if (vcol >= start_vcol) ++ ins_bs_one(&vcol); + } + + /* +*** ../vim-7.1.174/src/version.c Sun Dec 9 19:37:37 2007 +--- src/version.c Sun Dec 9 20:24:11 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 175, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +215. Your mouse-clicking forearm rivals Popeye's. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.176 b/7.1.176 new file mode 100644 index 00000000..e752419f --- /dev/null +++ b/7.1.176 @@ -0,0 +1,88 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.176 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.176 +Problem: Building with Aap fails when the "compiledby" argument contains + '<' or '>' characters. (Alex Yeh) +Solution: Change how quoting is done in the Aap recipe. +Files: src/main.aap + + +*** ../vim-7.1.175/src/main.aap Tue Sep 25 22:13:14 2007 +--- src/main.aap Fri Dec 7 17:03:31 2007 +*************** +*** 63,70 **** + @else: + @ arch = "ppc" + :print Building for $arch system + :sys CONFIG_STATUS=auto/config.status +! ./configure.aap `file2string("config.arg")` + --with-mac-arch=$arch + --cache-file=auto/config.cache + +--- 63,71 ---- + @else: + @ arch = "ppc" + :print Building for $arch system ++ config_args = `file2string("config.arg")` + :sys CONFIG_STATUS=auto/config.status +! ./configure.aap $config_args + --with-mac-arch=$arch + --cache-file=auto/config.cache + +*************** +*** 440,450 **** + :print >> $target char_u *all_lflags = (char_u *)"$linkcmd"; + @if _no.get("COMPILEDBY"): + who = $COMPILEDBY +! where = '' + @else: + :syseval whoami | :eval re.sub("\n", "", stdin) | :assign who + + :syseval hostname | :eval re.sub("\n", "", stdin) | :assign where + :print >> $target char_u *compiled_user = (char_u *)"$who"; + :print >> $target char_u *compiled_sys = (char_u *)"$where"; + +--- 441,453 ---- + :print >> $target char_u *all_lflags = (char_u *)"$linkcmd"; + @if _no.get("COMPILEDBY"): + who = $COMPILEDBY +! where = + @else: + :syseval whoami | :eval re.sub("\n", "", stdin) | :assign who + + :syseval hostname | :eval re.sub("\n", "", stdin) | :assign where ++ @who = string.replace(who, '"', '\\"') ++ @where = string.replace(where, '"', '\\"') + :print >> $target char_u *compiled_user = (char_u *)"$who"; + :print >> $target char_u *compiled_sys = (char_u *)"$where"; + +*** ../vim-7.1.175/src/version.c Sun Dec 9 20:25:59 2007 +--- src/version.c Mon Dec 31 16:40:01 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 176, + /**/ + +-- +E M A C S +s e l o h +c t t n i +a a t f +p r t +e o + l + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.177 b/7.1.177 new file mode 100644 index 00000000..cc3b13c5 --- /dev/null +++ b/7.1.177 @@ -0,0 +1,193 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.177 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.177 +Problem: Freeing memory twice when in debug mode while reading a script. +Solution: Ignore script input while in debug mode. +Files: src/ex_cmds2.c, src/getchar.c, src/globals.h + + +*** ../vim-7.1.176/src/ex_cmds2.c Thu May 10 20:55:46 2007 +--- src/ex_cmds2.c Tue Jan 1 14:13:41 2008 +*************** +*** 93,98 **** +--- 93,100 ---- + int save_emsg_silent = emsg_silent; + int save_redir_off = redir_off; + tasave_T typeaheadbuf; ++ int typeahead_saved = FALSE; ++ int save_ignore_script; + # ifdef FEAT_EX_EXTRA + int save_ex_normal_busy; + # endif +*************** +*** 159,176 **** + * This makes sure we get input from the user here and don't interfere + * with the commands being executed. Reset "ex_normal_busy" to avoid + * the side effects of using ":normal". Save the stuff buffer and make +! * it empty. */ + # ifdef FEAT_EX_EXTRA + save_ex_normal_busy = ex_normal_busy; + ex_normal_busy = 0; + # endif + if (!debug_greedy) + save_typeahead(&typeaheadbuf); + + cmdline = getcmdline_prompt('>', NULL, 0, EXPAND_NOTHING, NULL); + +! if (!debug_greedy) + restore_typeahead(&typeaheadbuf); + # ifdef FEAT_EX_EXTRA + ex_normal_busy = save_ex_normal_busy; + # endif +--- 161,186 ---- + * This makes sure we get input from the user here and don't interfere + * with the commands being executed. Reset "ex_normal_busy" to avoid + * the side effects of using ":normal". Save the stuff buffer and make +! * it empty. Set ignore_script to avoid reading from script input. */ + # ifdef FEAT_EX_EXTRA + save_ex_normal_busy = ex_normal_busy; + ex_normal_busy = 0; + # endif + if (!debug_greedy) ++ { + save_typeahead(&typeaheadbuf); ++ typeahead_saved = TRUE; ++ save_ignore_script = ignore_script; ++ ignore_script = TRUE; ++ } + + cmdline = getcmdline_prompt('>', NULL, 0, EXPAND_NOTHING, NULL); + +! if (typeahead_saved) +! { + restore_typeahead(&typeaheadbuf); ++ ignore_script = save_ignore_script; ++ } + # ifdef FEAT_EX_EXTRA + ex_normal_busy = save_ex_normal_busy; + # endif +*** ../vim-7.1.176/src/getchar.c Fri Dec 7 17:30:04 2007 +--- src/getchar.c Tue Jan 1 14:11:42 2008 +*************** +*** 1279,1286 **** + void + free_typebuf() + { +! vim_free(typebuf.tb_buf); +! vim_free(typebuf.tb_noremap); + } + + /* +--- 1279,1292 ---- + void + free_typebuf() + { +! if (typebuf.tb_buf == typebuf_init) +! EMSG2(_(e_intern2), "Free typebuf 1"); +! else +! vim_free(typebuf.tb_buf); +! if (typebuf.tb_buf == noremapbuf_init) +! EMSG2(_(e_intern2), "Free typebuf 2"); +! else +! vim_free(typebuf.tb_noremap); + } + + /* +*************** +*** 1359,1364 **** +--- 1365,1375 ---- + EMSG(_(e_nesting)); + return; + } ++ #ifdef FEAT_EVAL ++ if (ignore_script) ++ /* Not reading from script, also don't open one. Warning message? */ ++ return; ++ #endif + + if (scriptin[curscript] != NULL) /* already reading script */ + ++curscript; +*************** +*** 2346,2352 **** + current_menu->silent[idx]); + } + } +! #endif /* FEAT_GUI */ + continue; /* try mapping again */ + } + +--- 2357,2363 ---- + current_menu->silent[idx]); + } + } +! #endif /* FEAT_GUI && FEAT_MENU */ + continue; /* try mapping again */ + } + +*************** +*** 2862,2872 **** + undo_off = FALSE; /* restart undo now */ + + /* +! * first try script file +! * If interrupted: Stop reading script files. + */ + script_char = -1; +! while (scriptin[curscript] != NULL && script_char < 0) + { + if (got_int || (script_char = getc(scriptin[curscript])) < 0) + { +--- 2873,2887 ---- + undo_off = FALSE; /* restart undo now */ + + /* +! * Get a character from a script file if there is one. +! * If interrupted: Stop reading script files, close them all. + */ + script_char = -1; +! while (scriptin[curscript] != NULL && script_char < 0 +! #ifdef FEAT_EVAL +! && !ignore_script +! #endif +! ) + { + if (got_int || (script_char = getc(scriptin[curscript])) < 0) + { +*** ../vim-7.1.176/src/globals.h Sat Sep 29 14:15:00 2007 +--- src/globals.h Mon Dec 31 17:00:21 2007 +*************** +*** 954,959 **** +--- 954,962 ---- + EXTERN int ex_normal_busy INIT(= 0); /* recursiveness of ex_normal() */ + EXTERN int ex_normal_lock INIT(= 0); /* forbid use of ex_normal() */ + #endif ++ #ifdef FEAT_EVAL ++ EXTERN int ignore_script INIT(= FALSE); /* ignore script input */ ++ #endif + EXTERN int stop_insert_mode; /* for ":stopinsert" and 'insertmode' */ + + EXTERN int KeyTyped; /* TRUE if user typed current char */ +*** ../vim-7.1.176/src/version.c Mon Dec 31 16:41:31 2007 +--- src/version.c Tue Jan 1 14:00:09 2008 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 177, + /**/ + +-- +Back up my hard drive? I can't find the reverse switch! + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.178 b/7.1.178 new file mode 100644 index 00000000..972e4951 --- /dev/null +++ b/7.1.178 @@ -0,0 +1,54 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.178 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.178 +Problem: "%" doesn't work on "/* comment *//* comment */". +Solution: Don't handle the "//" in "*//*" as a C++ comment. (Markus + Heidelberg) +Files: src/search.c + + +*** ../vim-7.1.177/src/search.c Wed Aug 8 22:48:16 2007 +--- src/search.c Mon Dec 10 21:21:17 2007 +*************** +*** 2319,2325 **** + #endif + while ((p = vim_strchr(p, '/')) != NULL) + { +! if (p[1] == '/') + break; + ++p; + } +--- 2319,2327 ---- + #endif + while ((p = vim_strchr(p, '/')) != NULL) + { +! /* accept a double /, unless it's preceded with * and followed by *, +! * because * / / * is an end and start of a C comment */ +! if (p[1] == '/' && (p == line || p[-1] != '*' || p[2] != '*')) + break; + ++p; + } +*** ../vim-7.1.177/src/version.c Tue Jan 1 14:16:42 2008 +--- src/version.c Tue Jan 1 15:41:33 2008 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 178, + /**/ + +-- +I'd like to meet the man who invented sex and see what he's working on now. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.179 b/7.1.179 new file mode 100644 index 00000000..1e131759 --- /dev/null +++ b/7.1.179 @@ -0,0 +1,189 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.179 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.179 +Problem: Need to check for TCL 8.5. +Solution: Adjust configure script. (Alexey Froloff) +Files: src/configure.in, src/auto/configure + + +*** ../vim-7.1.178/src/configure.in Sun Nov 4 15:35:23 2007 +--- src/configure.in Sun Dec 30 13:55:28 2007 +*************** +*** 759,773 **** + + if test "$enable_tclinterp" = "yes"; then + +! dnl on FreeBSD tclsh is a silly script, look for tclsh8.[420] + AC_MSG_CHECKING(--with-tclsh argument) + AC_ARG_WITH(tclsh, [ --with-tclsh=PATH which tclsh to use (default: tclsh8.0)], + tclsh_name="$withval"; AC_MSG_RESULT($tclsh_name), +! tclsh_name="tclsh8.4"; AC_MSG_RESULT(no)) + AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name) + AC_SUBST(vi_cv_path_tcl) + +! dnl when no specific version specified, also try 8.2 and 8.0 + if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.4"; then + tclsh_name="tclsh8.2" + AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name) +--- 759,777 ---- + + if test "$enable_tclinterp" = "yes"; then + +! dnl on FreeBSD tclsh is a silly script, look for tclsh8.[5420] + AC_MSG_CHECKING(--with-tclsh argument) + AC_ARG_WITH(tclsh, [ --with-tclsh=PATH which tclsh to use (default: tclsh8.0)], + tclsh_name="$withval"; AC_MSG_RESULT($tclsh_name), +! tclsh_name="tclsh8.5"; AC_MSG_RESULT(no)) + AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name) + AC_SUBST(vi_cv_path_tcl) + +! dnl when no specific version specified, also try 8.4, 8.2 and 8.0 +! if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.5"; then +! tclsh_name="tclsh8.4" +! AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name) +! fi + if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.4"; then + tclsh_name="tclsh8.2" + AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name) +*************** +*** 810,815 **** +--- 814,820 ---- + AC_MSG_CHECKING(for location of tclConfig.sh script) + if test "x$MACOSX" != "xyes"; then + tclcnf=`echo $tclinc | sed s/include/lib/g` ++ tclcnf="$tclcnf `echo $tclinc | sed s/include/lib64/g`" + else + dnl For Mac OS X 10.3, use the OS-provided framework location + tclcnf="/System/Library/Frameworks/Tcl.framework" +*************** +*** 830,835 **** +--- 835,841 ---- + AC_MSG_RESULT() + AC_MSG_CHECKING(for Tcl library by myself) + tcllib=`echo $tclinc | sed s/include/lib/g` ++ tcllib="$tcllib `echo $tclinc | sed s/include/lib64/g`" + for ext in .so .a ; do + for ver in "" $tclver ; do + for try in $tcllib ; do +*** ../vim-7.1.178/src/auto/configure Sun Nov 4 15:35:23 2007 +--- src/auto/configure Sun Dec 30 13:55:35 2007 +*************** +*** 4445,4451 **** + tclsh_name="$withval"; echo "$as_me:$LINENO: result: $tclsh_name" >&5 + echo "${ECHO_T}$tclsh_name" >&6 + else +! tclsh_name="tclsh8.4"; echo "$as_me:$LINENO: result: no" >&5 + echo "${ECHO_T}no" >&6 + fi; + # Extract the first word of "$tclsh_name", so it can be a program name with args. +--- 4445,4451 ---- + tclsh_name="$withval"; echo "$as_me:$LINENO: result: $tclsh_name" >&5 + echo "${ECHO_T}$tclsh_name" >&6 + else +! tclsh_name="tclsh8.5"; echo "$as_me:$LINENO: result: no" >&5 + echo "${ECHO_T}no" >&6 + fi; + # Extract the first word of "$tclsh_name", so it can be a program name with args. +*************** +*** 4489,4495 **** + + + +! if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.4"; then + tclsh_name="tclsh8.2" + # Extract the first word of "$tclsh_name", so it can be a program name with args. + set dummy $tclsh_name; ac_word=$2 +--- 4489,4537 ---- + + + +! if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.5"; then +! tclsh_name="tclsh8.4" +! # Extract the first word of "$tclsh_name", so it can be a program name with args. +! set dummy $tclsh_name; ac_word=$2 +! echo "$as_me:$LINENO: checking for $ac_word" >&5 +! echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +! if test "${ac_cv_path_vi_cv_path_tcl+set}" = set; then +! echo $ECHO_N "(cached) $ECHO_C" >&6 +! else +! case $vi_cv_path_tcl in +! [\\/]* | ?:[\\/]*) +! ac_cv_path_vi_cv_path_tcl="$vi_cv_path_tcl" # Let the user override the test with a path. +! ;; +! *) +! as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +! for as_dir in $PATH +! do +! IFS=$as_save_IFS +! test -z "$as_dir" && as_dir=. +! for ac_exec_ext in '' $ac_executable_extensions; do +! if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +! ac_cv_path_vi_cv_path_tcl="$as_dir/$ac_word$ac_exec_ext" +! echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 +! break 2 +! fi +! done +! done +! +! ;; +! esac +! fi +! vi_cv_path_tcl=$ac_cv_path_vi_cv_path_tcl +! +! if test -n "$vi_cv_path_tcl"; then +! echo "$as_me:$LINENO: result: $vi_cv_path_tcl" >&5 +! echo "${ECHO_T}$vi_cv_path_tcl" >&6 +! else +! echo "$as_me:$LINENO: result: no" >&5 +! echo "${ECHO_T}no" >&6 +! fi +! +! fi +! if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.4"; then + tclsh_name="tclsh8.2" + # Extract the first word of "$tclsh_name", so it can be a program name with args. + set dummy $tclsh_name; ac_word=$2 +*************** +*** 4649,4654 **** +--- 4691,4697 ---- + echo $ECHO_N "checking for location of tclConfig.sh script... $ECHO_C" >&6 + if test "x$MACOSX" != "xyes"; then + tclcnf=`echo $tclinc | sed s/include/lib/g` ++ tclcnf="$tclcnf `echo $tclinc | sed s/include/lib64/g`" + else + tclcnf="/System/Library/Frameworks/Tcl.framework" + fi +*************** +*** 4668,4673 **** +--- 4711,4717 ---- + echo "$as_me:$LINENO: checking for Tcl library by myself" >&5 + echo $ECHO_N "checking for Tcl library by myself... $ECHO_C" >&6 + tcllib=`echo $tclinc | sed s/include/lib/g` ++ tcllib="$tcllib `echo $tclinc | sed s/include/lib64/g`" + for ext in .so .a ; do + for ver in "" $tclver ; do + for try in $tcllib ; do +*** ../vim-7.1.178/src/version.c Tue Jan 1 15:42:45 2008 +--- src/version.c Tue Jan 1 16:24:07 2008 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 179, + /**/ + +-- +Just think of all the things we haven't thought of yet. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.180 b/7.1.180 new file mode 100644 index 00000000..db8ef5dd --- /dev/null +++ b/7.1.180 @@ -0,0 +1,266 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.180 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.180 +Problem: Regexp patterns not tested sufficiently. +Solution: Add more checks to the regexp test. +Files: src/testdir/test64.in, src/testdir/test64.ok + + +*** ../vim-7.1.179/src/testdir/test64.in Tue Sep 25 17:54:41 2007 +--- src/testdir/test64.in Mon Dec 31 14:20:23 2007 +*************** +*** 14,23 **** +--- 14,136 ---- + :" etc. + :" When there is no match use only the first two items. + :let tl = [] ++ :call add(tl, ['ab', 'aab', 'ab']) + :call add(tl, ['b', 'abcdef', 'b']) + :call add(tl, ['bc*', 'abccccdef', 'bcccc']) + :call add(tl, ['bc\{-}', 'abccccdef', 'b']) + :call add(tl, ['bc\{-}\(d\)', 'abccccdef', 'bccccd', 'd']) ++ :call add(tl, ['bc*', 'abbdef', 'b']) ++ :call add(tl, ['c*', 'ccc', 'ccc']) ++ :call add(tl, ['bc*', 'abdef', 'b']) ++ :call add(tl, ['c*', 'abdef', '']) ++ :call add(tl, ['bc\+', 'abccccdef', 'bcccc']) ++ :call add(tl, ['bc\+', 'abdef']) "no match ++ :" ++ :"operator \| ++ :call add(tl, ['a\|ab', 'cabd', 'a']) "alternation is ordered ++ :" ++ :call add(tl, ['c\?', 'ccb', 'c']) ++ :call add(tl, ['bc\?', 'abd', 'b']) ++ :call add(tl, ['bc\?', 'abccd', 'bc']) ++ :" ++ :call add(tl, ['\va{1}', 'ab', 'a']) ++ :" ++ :call add(tl, ['\va{2}', 'aa', 'aa']) ++ :call add(tl, ['\va{2}', 'caad', 'aa']) ++ :call add(tl, ['\va{2}', 'aba']) ++ :call add(tl, ['\va{2}', 'ab']) ++ :call add(tl, ['\va{2}', 'abaa', 'aa']) ++ :call add(tl, ['\va{2}', 'aaa', 'aa']) ++ :" ++ :call add(tl, ['\vb{1}', 'abca', 'b']) ++ :call add(tl, ['\vba{2}', 'abaa', 'baa']) ++ :call add(tl, ['\vba{3}', 'aabaac']) ++ :" ++ :call add(tl, ['\v(ab){1}', 'ab', 'ab', 'ab']) ++ :call add(tl, ['\v(ab){1}', 'dabc', 'ab', 'ab']) ++ :call add(tl, ['\v(ab){1}', 'acb']) ++ :" ++ :call add(tl, ['\v(ab){0,2}', 'acb', "", ""]) ++ :call add(tl, ['\v(ab){0,2}', 'ab', 'ab', 'ab']) ++ :call add(tl, ['\v(ab){1,2}', 'ab', 'ab', 'ab']) ++ :call add(tl, ['\v(ab){1,2}', 'ababc', 'abab', 'ab']) ++ :call add(tl, ['\v(ab){2,4}', 'ababcab', 'abab', 'ab']) ++ :call add(tl, ['\v(ab){2,4}', 'abcababa', 'abab', 'ab']) ++ :" ++ :call add(tl, ['\v(ab){2}', 'abab', 'abab', 'ab']) ++ :call add(tl, ['\v(ab){2}', 'cdababe', 'abab', 'ab']) ++ :call add(tl, ['\v(ab){2}', 'abac']) ++ :call add(tl, ['\v(ab){2}', 'abacabab', 'abab', 'ab']) ++ :call add(tl, ['\v((ab){2}){2}', 'abababab', 'abababab', 'abab', 'ab']) ++ :call add(tl, ['\v((ab){2}){2}', 'abacabababab', 'abababab', 'abab', 'ab']) ++ :" ++ :call add(tl, ['\v(a{1}){1}', 'a', 'a', 'a']) ++ :call add(tl, ['\v(a{2}){1}', 'aa', 'aa', 'aa']) ++ :call add(tl, ['\v(a{2}){1}', 'aaac', 'aa', 'aa']) ++ :call add(tl, ['\v(a{2}){1}', 'daaac', 'aa', 'aa']) ++ :call add(tl, ['\v(a{1}){2}', 'daaac', 'aa', 'a']) ++ :call add(tl, ['\v(a{1}){2}', 'aaa', 'aa', 'a']) ++ :call add(tl, ['\v(a{2})+', 'adaac', 'aa', 'aa']) ++ :call add(tl, ['\v(a{2})+', 'aa', 'aa', 'aa']) ++ :call add(tl, ['\v(a{2}){1}', 'aa', 'aa', 'aa']) ++ :call add(tl, ['\v(a{1}){2}', 'aa', 'aa', 'a']) ++ :call add(tl, ['\v(a{1}){1}', 'a', 'a', 'a']) ++ :call add(tl, ['\v(a{2}){2}', 'aaaa', 'aaaa', 'aa']) ++ :call add(tl, ['\v(a{2}){2}', 'aaabaaaa', 'aaaa', 'aa']) ++ :" ++ :call add(tl, ['\v(a+){2}', 'dadaac', 'aa', 'a']) ++ :call add(tl, ['\v(a{3}){2}', 'aaaaaaa', 'aaaaaa', 'aaa']) ++ :" ++ :call add(tl, ['\v(a{1,2}){2}', 'daaac', 'aaa', 'a']) ++ :call add(tl, ['\v(a{1,3}){2}', 'daaaac', 'aaaa', 'a']) ++ :call add(tl, ['\v(a{1,3}){2}', 'daaaaac', 'aaaaa', 'aa']) ++ :call add(tl, ['\v(a{1,3}){3}', 'daac']) ++ :call add(tl, ['\v(a{1,2}){2}', 'dac']) ++ :call add(tl, ['\v(a+)+', 'daac', 'aa', 'aa']) ++ :call add(tl, ['\v(a+)+', 'aaa', 'aaa', 'aaa']) ++ :call add(tl, ['\v(a+){1,2}', 'aaa', 'aaa', 'aaa']) ++ :call add(tl, ['\v(a+)(a+)', 'aaa', 'aaa', 'aa', 'a']) ++ :call add(tl, ['\v(a{3})+', 'daaaac', 'aaa', 'aaa']) ++ :call add(tl, ['\v(a|b|c)+', 'aacb', 'aacb', 'b']) ++ :call add(tl, ['\v(a|b|c){2}', 'abcb', 'ab', 'b']) ++ :call add(tl, ['\v(abc){2}', 'abcabd', ]) ++ :call add(tl, ['\v(abc){2}', 'abdabcabc','abcabc', 'abc']) ++ :" ++ :call add(tl, ['a*', 'cc', '']) ++ :call add(tl, ['\v(a*)+', 'cc', '']) ++ :call add(tl, ['\v((ab)+)+', 'ab', 'ab', 'ab', 'ab']) ++ :call add(tl, ['\v(((ab)+)+)+', 'ab', 'ab', 'ab', 'ab', 'ab']) ++ :call add(tl, ['\v(((ab)+)+)+', 'dababc', 'abab', 'abab', 'abab', 'ab']) ++ :call add(tl, ['\v(a{0,2})+', 'cc', '']) ++ :call add(tl, ['\v(a*)+', '', '']) ++ :call add(tl, ['\v((a*)+)+', '', '']) ++ :call add(tl, ['\v((ab)*)+', '', '']) ++ :call add(tl, ['\va{1,3}', 'aab', 'aa']) ++ :call add(tl, ['\va{2,3}', 'abaa', 'aa']) ++ :" ++ :call add(tl, ['\v((ab)+|c*)+', 'abcccaba', 'abcccab', '', 'ab']) ++ :call add(tl, ['\v(a{2})|(b{3})', 'bbabbbb', 'bbb', '', 'bbb']) ++ :call add(tl, ['\va{2}|b{2}', 'abab']) ++ :call add(tl, ['\v(a)+|(c)+', 'bbacbaacbbb', 'a', 'a']) ++ :call add(tl, ['\vab{2,3}c', 'aabbccccccccccccc', 'abbc']) ++ :call add(tl, ['\vab{2,3}c', 'aabbbccccccccccccc', 'abbbc']) ++ :call add(tl, ['\vab{2,3}cd{2,3}e', 'aabbbcddee', 'abbbcdde']) ++ :call add(tl, ['\va(bc){2}d', 'aabcbfbc' ]) ++ :call add(tl, ['\va*a{2}', 'a', ]) ++ :call add(tl, ['\va*a{2}', 'aa', 'aa' ]) ++ :call add(tl, ['\va*a{2}', 'aaa', 'aaa' ]) ++ :call add(tl, ['\va*a{2}', 'bbbabcc', ]) ++ :call add(tl, ['\va*b*|a*c*', 'a', 'a']) ++ :call add(tl, ['\va{1}b{1}|a{1}b{1}', '']) ++ :" ++ :"submatches ++ :call add(tl, ['\v(a)', 'ab', 'a', 'a']) ++ :call add(tl, ['\v(a)(b)', 'ab', 'ab', 'a', 'b']) ++ :call add(tl, ['\v(ab)(b)(c)', 'abbc', 'abbc', 'ab', 'b', 'c']) ++ :call add(tl, ['\v((a)(b))', 'ab', 'ab', 'ab', 'a', 'b']) ++ :call add(tl, ['\v(a)|(b)', 'ab', 'a', 'a']) ++ :" ++ :call add(tl, ['\v(a*)+', 'aaaa', 'aaaa', '']) + :call add(tl, ['x', 'abcdef']) + :" + :for t in tl +*** ../vim-7.1.179/src/testdir/test64.ok Tue Aug 14 17:28:14 2007 +--- src/testdir/test64.ok Mon Dec 31 14:20:26 2007 +*************** +*** 4,6 **** +--- 4,102 ---- + OK + OK + OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK ++ OK +*** ../vim-7.1.179/src/version.c Tue Jan 1 16:25:33 2008 +--- src/version.c Tue Jan 1 17:34:32 2008 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 180, + /**/ + +-- +CONCORDE: Message for you, sir. + He falls forward revealing the arrow with the note. + "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 /// diff --git a/7.1.181 b/7.1.181 new file mode 100644 index 00000000..124ff2a8 --- /dev/null +++ b/7.1.181 @@ -0,0 +1,62 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.181 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.181 +Problem: Accessing uninitialized memory in Farsi mode. (Dominuque Pelle) +Solution: Only invoke lrF_sub() when there is something to do. +Files: src/ex_cmds.c + + +*** ../vim-7.1.180/src/ex_cmds.c Sun Dec 9 19:37:37 2007 +--- src/ex_cmds.c Mon Dec 31 17:29:25 2007 +*************** +*** 4212,4222 **** + sub_nlines = 0; + } + +- #ifdef FEAT_FKMAP /* reverse the flow of the Farsi characters */ +- if (p_altkeymap && curwin->w_p_rl) +- lrF_sub(cmd); +- #endif +- + if (eap->cmdidx == CMD_tilde) + which_pat = RE_LAST; /* use last used regexp */ + else +--- 4212,4217 ---- +*************** +*** 4252,4257 **** +--- 4247,4256 ---- + } + else /* find the end of the regexp */ + { ++ #ifdef FEAT_FKMAP /* reverse the flow of the Farsi characters */ ++ if (p_altkeymap && curwin->w_p_rl) ++ lrF_sub(cmd); ++ #endif + which_pat = RE_LAST; /* use last used regexp */ + delimiter = *cmd++; /* remember delimiter character */ + pat = cmd; /* remember start of search pat */ +*** ../vim-7.1.180/src/version.c Tue Jan 1 17:37:01 2008 +--- src/version.c Wed Jan 2 13:57:31 2008 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 181, + /**/ + +-- +Yah, well, we had to carve our electrons out of driftwood we'd +find. In the winter. Uphill. Both ways. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.182 b/7.1.182 new file mode 100644 index 00000000..23ef997f --- /dev/null +++ b/7.1.182 @@ -0,0 +1,169 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.182 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.182 +Problem: When using tab pages and an argument list the session file may + contain wrong "next" commands. (Alexander Bluem) +Solution: Use "argu" commands and only when needed. +Files: src/ex_docmd.c + + +*** ../vim-7.1.181/src/ex_docmd.c Sun Dec 9 19:37:37 2007 +--- src/ex_docmd.c Mon Dec 31 18:24:16 2007 +*************** +*** 372,378 **** + static char_u *arg_all __ARGS((void)); + #ifdef FEAT_SESSION + static int makeopens __ARGS((FILE *fd, char_u *dirnow)); +! static int put_view __ARGS((FILE *fd, win_T *wp, int add_edit, unsigned *flagp)); + static void ex_loadview __ARGS((exarg_T *eap)); + static char_u *get_view_file __ARGS((int c)); + static int did_lcd; /* whether ":lcd" was produced for a session */ +--- 372,378 ---- + static char_u *arg_all __ARGS((void)); + #ifdef FEAT_SESSION + static int makeopens __ARGS((FILE *fd, char_u *dirnow)); +! static int put_view __ARGS((FILE *fd, win_T *wp, int add_edit, unsigned *flagp, int current_arg_idx)); + static void ex_loadview __ARGS((exarg_T *eap)); + static char_u *get_view_file __ARGS((int c)); + static int did_lcd; /* whether ":lcd" was produced for a session */ +*************** +*** 8762,8768 **** + } + else + { +! failed |= (put_view(fd, curwin, !using_vdir, flagp) == FAIL); + } + if (put_line(fd, "let &so = s:so_save | let &siso = s:siso_save") + == FAIL) +--- 8762,8769 ---- + } + else + { +! failed |= (put_view(fd, curwin, !using_vdir, flagp, +! -1) == FAIL); + } + if (put_line(fd, "let &so = s:so_save | let &siso = s:siso_save") + == FAIL) +*************** +*** 9761,9766 **** +--- 9762,9769 ---- + int tabnr; + win_T *tab_firstwin; + frame_T *tab_topframe; ++ int cur_arg_idx = 0; ++ int next_arg_idx; + + if (ssop_flags & SSOP_BUFFERS) + only_save_windows = FALSE; /* Save ALL buffers */ +*************** +*** 9976,9987 **** + { + if (!ses_do_win(wp)) + continue; +! if (put_view(fd, wp, wp != edited_win, &ssop_flags) == FAIL) + return FAIL; + if (nr > 1 && put_line(fd, "wincmd w") == FAIL) + return FAIL; + } + + /* + * Restore cursor to the current window if it's not the first one. + */ +--- 9979,9997 ---- + { + if (!ses_do_win(wp)) + continue; +! if (put_view(fd, wp, wp != edited_win, &ssop_flags, +! cur_arg_idx) == FAIL) + return FAIL; + if (nr > 1 && put_line(fd, "wincmd w") == FAIL) + return FAIL; ++ next_arg_idx = wp->w_arg_idx; + } + ++ /* The argument index in the first tab page is zero, need to set it in ++ * each window. For further tab pages it's the window where we do ++ * "tabedit". */ ++ cur_arg_idx = next_arg_idx; ++ + /* + * Restore cursor to the current window if it's not the first one. + */ +*************** +*** 10190,10200 **** + * Caller must make sure 'scrolloff' is zero. + */ + static int +! put_view(fd, wp, add_edit, flagp) + FILE *fd; + win_T *wp; + int add_edit; /* add ":edit" command to view */ + unsigned *flagp; /* vop_flags or ssop_flags */ + { + win_T *save_curwin; + int f; +--- 10200,10212 ---- + * Caller must make sure 'scrolloff' is zero. + */ + static int +! put_view(fd, wp, add_edit, flagp, current_arg_idx) + FILE *fd; + win_T *wp; + int add_edit; /* add ":edit" command to view */ + unsigned *flagp; /* vop_flags or ssop_flags */ ++ int current_arg_idx; /* current argument index of the window, use ++ * -1 if unknown */ + { + win_T *save_curwin; + int f; +*************** +*** 10224,10233 **** + + /* Only when part of a session: restore the argument index. Some + * arguments may have been deleted, check if the index is valid. */ +! if (wp->w_arg_idx != 0 && wp->w_arg_idx <= WARGCOUNT(wp) + && flagp == &ssop_flags) + { +! if (fprintf(fd, "%ldnext", (long)wp->w_arg_idx) < 0 + || put_eol(fd) == FAIL) + return FAIL; + did_next = TRUE; +--- 10236,10245 ---- + + /* Only when part of a session: restore the argument index. Some + * arguments may have been deleted, check if the index is valid. */ +! if (wp->w_arg_idx != current_arg_idx && wp->w_arg_idx <= WARGCOUNT(wp) + && flagp == &ssop_flags) + { +! if (fprintf(fd, "%ldargu", (long)wp->w_arg_idx + 1) < 0 + || put_eol(fd) == FAIL) + return FAIL; + did_next = TRUE; +*** ../vim-7.1.181/src/version.c Wed Jan 2 13:58:17 2008 +--- src/version.c Wed Jan 2 15:10:01 2008 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 182, + /**/ + +-- +You were lucky. We lived for three months in a brown paper bag in a +septic tank. We used to have to get up at six o'clock in the morning, +clean the bag, eat a crust of stale bread, go to work down mill for +fourteen hours a day week in-week out. When we got home, our Dad +would thrash us to sleep with his belt! + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.183 b/7.1.183 new file mode 100644 index 00000000..79fd6500 --- /dev/null +++ b/7.1.183 @@ -0,0 +1,99 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.183 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.183 +Problem: "Internal error" for ":echo matchstr('a', 'a\%[\&]')" (Mitanu + Paul) +Solution: Inside "\%[]" detect \&, \| and \) as an error. +Files: src/regexp.c + + +*** ../vim-7.1.182/src/regexp.c Sun Dec 9 19:25:35 2007 +--- src/regexp.c Wed Jan 2 15:02:37 2008 +*************** +*** 1288,1295 **** + } + + /* +! * regbranch - one alternative of an | operator +! * + * Implements the & operator. + */ + static char_u * +--- 1288,1294 ---- + } + + /* +! * Handle one alternative of an | operator. + * Implements the & operator. + */ + static char_u * +*************** +*** 1330,1337 **** + } + + /* +! * regbranch - one alternative of an | or & operator +! * + * Implements the concatenation operator. + */ + static char_u * +--- 1329,1335 ---- + } + + /* +! * Handle one alternative of an | or & operator. + * Implements the concatenation operator. + */ + static char_u * +*************** +*** 1708,1713 **** +--- 1706,1713 ---- + case Magic('|'): + case Magic('&'): + case Magic(')'): ++ if (one_exactly) ++ EMSG_ONE_RET_NULL; + EMSG_RET_NULL(_(e_internal)); /* Supposed to be caught earlier. */ + /* NOTREACHED */ + +*************** +*** 3106,3112 **** + * slow, we keep one allocated piece of memory and only re-allocate it when + * it's too small. It's freed in vim_regexec_both() when finished. + */ +! static char_u *reg_tofree; + static unsigned reg_tofreelen; + + /* +--- 3106,3112 ---- + * slow, we keep one allocated piece of memory and only re-allocate it when + * it's too small. It's freed in vim_regexec_both() when finished. + */ +! static char_u *reg_tofree = NULL; + static unsigned reg_tofreelen; + + /* +*** ../vim-7.1.182/src/version.c Wed Jan 2 15:12:29 2008 +--- src/version.c Wed Jan 2 15:33:52 2008 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 183, + /**/ + +-- +Not too long ago, unzipping in public was illegal... + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.184 b/7.1.184 new file mode 100644 index 00000000..9afeff6a --- /dev/null +++ b/7.1.184 @@ -0,0 +1,63 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.184 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.184 +Problem: Crash when deleting backwards over a line break in Insert mode. +Solution: Don't advance the cursor when it's already on the NUL after a + line. (Matthew Wozniski) +Files: src/normal.c + + +*** ../vim-7.1.183/src/normal.c Sun Oct 14 17:15:45 2007 +--- src/normal.c Tue Jan 1 16:40:24 2008 +*************** +*** 5849,5860 **** + /* When the NL before the first char has to be deleted we + * put the cursor on the NUL after the previous line. + * This is a very special case, be careful! +! * don't adjust op_end now, otherwise it won't work */ + if ( (cap->oap->op_type == OP_DELETE + || cap->oap->op_type == OP_CHANGE) + && !lineempty(curwin->w_cursor.lnum)) + { +! ++curwin->w_cursor.col; + cap->retval |= CA_NO_ADJ_OP_END; + } + continue; +--- 5849,5861 ---- + /* When the NL before the first char has to be deleted we + * put the cursor on the NUL after the previous line. + * This is a very special case, be careful! +! * Don't adjust op_end now, otherwise it won't work. */ + if ( (cap->oap->op_type == OP_DELETE + || cap->oap->op_type == OP_CHANGE) + && !lineempty(curwin->w_cursor.lnum)) + { +! if (*ml_get_cursor() != NUL) +! ++curwin->w_cursor.col; + cap->retval |= CA_NO_ADJ_OP_END; + } + continue; +*** ../vim-7.1.183/src/version.c Wed Jan 2 15:34:48 2008 +--- src/version.c Wed Jan 2 16:24:19 2008 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 184, + /**/ + +-- +Not too long ago, cut and paste was done with scissors and glue... + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.185 b/7.1.185 new file mode 100644 index 00000000..0a1e0923 --- /dev/null +++ b/7.1.185 @@ -0,0 +1,140 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.185 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.185 +Problem: Using "gR" with a multi-byte encoding and typing a CR pushes + characters onto the replace stack incorrectly, resulting in BS + putting back the wrong characters. (Paul B. Mahol) +Solution: Push multi-byte characters onto the replace stack in reverse byte + order. Add replace_push_mb(). +Files: src/edit.c, src/misc1.c, src/proto/edit.pro + + +*** ../vim-7.1.184/src/edit.c Sun Dec 9 20:25:59 2007 +--- src/edit.c Tue Jan 1 17:28:07 2008 +*************** +*** 6939,6944 **** +--- 6939,6963 ---- + ++replace_stack_nr; + } + ++ #if defined(FEAT_MBYTE) || defined(PROTO) ++ /* ++ * Push a character onto the replace stack. Handles a multi-byte character in ++ * reverse byte order, so that the first byte is popped off first. ++ * Return the number of bytes done (includes composing characters). ++ */ ++ int ++ replace_push_mb(p) ++ char_u *p; ++ { ++ int l = (*mb_ptr2len)(p); ++ int j; ++ ++ for (j = l - 1; j >= 0; --j) ++ replace_push(p[j]); ++ return l; ++ } ++ #endif ++ + #if 0 + /* + * call replace_push(c) with replace_offset set to the first NUL. +*** ../vim-7.1.184/src/misc1.c Wed Sep 26 22:35:06 2007 +--- src/misc1.c Wed Jan 2 17:48:00 2008 +*************** +*** 591,597 **** + replace_push(NUL); + p = saved_line + curwin->w_cursor.col; + while (*p != NUL) +! replace_push(*p++); + saved_line[curwin->w_cursor.col] = NUL; + } + #endif +--- 592,605 ---- + replace_push(NUL); + p = saved_line + curwin->w_cursor.col; + while (*p != NUL) +! { +! #ifdef FEAT_MBYTE +! if (has_mbyte) +! p += replace_push_mb(p); +! else +! #endif +! replace_push(*p++); +! } + saved_line[curwin->w_cursor.col] = NUL; + } + #endif +*************** +*** 1914,1920 **** + int charlen; + { + int c = buf[0]; +- int l, j; + #endif + int newlen; /* nr of bytes inserted */ + int oldlen; /* nr of bytes deleted (0 when not replacing) */ +--- 1922,1927 ---- +*************** +*** 2016,2028 **** + for (i = 0; i < oldlen; ++i) + { + #ifdef FEAT_MBYTE +! l = (*mb_ptr2len)(oldp + col + i) - 1; +! for (j = l; j >= 0; --j) +! replace_push(oldp[col + i + j]); +! i += l; +! #else +! replace_push(oldp[col + i]); + #endif + } + } + +--- 2023,2033 ---- + for (i = 0; i < oldlen; ++i) + { + #ifdef FEAT_MBYTE +! if (has_mbyte) +! i += replace_push_mb(oldp + col + i) - 1; +! else + #endif ++ replace_push(oldp[col + i]); + } + } + +*** ../vim-7.1.184/src/proto/edit.pro Sat May 5 20:21:34 2007 +--- src/proto/edit.pro Tue Jan 1 17:21:24 2008 +*************** +*** 32,37 **** +--- 32,38 ---- + char_u *get_last_insert __ARGS((void)); + char_u *get_last_insert_save __ARGS((void)); + void replace_push __ARGS((int c)); ++ int replace_push_mb __ARGS((char_u *p)); + void fixthisline __ARGS((int (*get_the_indent)(void))); + void fix_indent __ARGS((void)); + int in_cinkeys __ARGS((int keytyped, int when, int line_is_empty)); +*** ../vim-7.1.184/src/version.c Wed Jan 2 16:25:20 2008 +--- src/version.c Wed Jan 2 17:45:10 2008 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 185, + /**/ + +-- +Not too long ago, a keyboard was something to make music with... + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.186 b/7.1.186 new file mode 100644 index 00000000..c848cbba --- /dev/null +++ b/7.1.186 @@ -0,0 +1,111 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.186 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.186 +Problem: "expand('')" returns a bogus value after changing + directory. (Dave Fishburn) +Solution: Copy "autocmd_fname" to allocated memory and expand to full + filename. Shorten the path when expanding . +Files: src/ex_docmd.c, src/fileio.c + + +*** ../vim-7.1.185/src/ex_docmd.c Wed Jan 2 15:12:29 2008 +--- src/ex_docmd.c Wed Jan 2 20:12:33 2008 +*************** +*** 7799,7804 **** +--- 7799,7805 ---- + free_cd_dir() + { + vim_free(prev_dir); ++ prev_dir = NULL; + } + #endif + +*************** +*** 9521,9526 **** +--- 9522,9528 ---- + *errormsg = (char_u *)_("E495: no autocommand file name to substitute for \"\""); + return NULL; + } ++ result = shorten_fname1(result); + break; + + case SPEC_ABUF: /* buffer number for autocommand */ +*** ../vim-7.1.185/src/fileio.c Thu Nov 8 20:47:34 2007 +--- src/fileio.c Wed Jan 2 20:21:43 2008 +*************** +*** 5556,5562 **** + #endif + + #if defined(FEAT_VIMINFO) || defined(FEAT_BROWSE) || \ +! defined(FEAT_QUICKFIX) || defined(PROTO) + /* + * Try to find a shortname by comparing the fullname with the current + * directory. +--- 5556,5562 ---- + #endif + + #if defined(FEAT_VIMINFO) || defined(FEAT_BROWSE) || \ +! defined(FEAT_QUICKFIX) || defined(FEAT_AUTOCMD) || defined(PROTO) + /* + * Try to find a shortname by comparing the fullname with the current + * directory. +*************** +*** 8546,8551 **** +--- 8546,8553 ---- + + /* + * Set the file name to be used for . ++ * Make a copy to avoid that changing a buffer name or directory makes it ++ * invalid. + */ + if (fname_io == NULL) + { +*************** +*** 8558,8563 **** +--- 8560,8567 ---- + } + else + autocmd_fname = fname_io; ++ if (autocmd_fname != NULL) ++ autocmd_fname = FullName_save(autocmd_fname, FALSE); + + /* + * Set the buffer number to be used for . +*************** +*** 8740,8745 **** +--- 8744,8750 ---- + vim_free(sourcing_name); + sourcing_name = save_sourcing_name; + sourcing_lnum = save_sourcing_lnum; ++ vim_free(autocmd_fname); + autocmd_fname = save_autocmd_fname; + autocmd_bufnr = save_autocmd_bufnr; + autocmd_match = save_autocmd_match; +*** ../vim-7.1.185/src/version.c Wed Jan 2 17:48:24 2008 +--- src/version.c Wed Jan 2 21:06:35 2008 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 186, + /**/ + +-- + LAUNCELOT leaps into SHOT with a mighty cry and runs the GUARD through and + hacks him to the floor. Blood. Swashbuckling music (perhaps). + LAUNCELOT races through into the castle screaming. +SECOND SENTRY: Hey! + "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 /// diff --git a/7.1.187 b/7.1.187 new file mode 100644 index 00000000..421a42da --- /dev/null +++ b/7.1.187 @@ -0,0 +1,81 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.187 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.187 +Problem: Win32 GUI: Custom completion using system() no longer works + after patch 7.1.104. (Erik Falor) +Solution: Loop when safe_vgetc() returns K_IGNORE. +Files: src/ex_getln.c + + +*** ../vim-7.1.186/src/ex_getln.c Fri Dec 7 20:28:13 2007 +--- src/ex_getln.c Wed Jan 2 21:42:51 2008 +*************** +*** 335,341 **** + quit_more = FALSE; /* reset after CTRL-D which had a more-prompt */ + + cursorcmd(); /* set the cursor on the right spot */ +! c = safe_vgetc(); + if (KeyTyped) + { + some_key_typed = TRUE; +--- 335,348 ---- + quit_more = FALSE; /* reset after CTRL-D which had a more-prompt */ + + cursorcmd(); /* set the cursor on the right spot */ +! +! /* Get a character. Ignore K_IGNORE, it should not do anything, such +! * as stop completion. */ +! do +! { +! c = safe_vgetc(); +! } while (c == K_IGNORE); +! + if (KeyTyped) + { + some_key_typed = TRUE; +*************** +*** 1209,1215 **** + goto cmdline_not_changed; + + case K_IGNORE: +! goto cmdline_not_changed; /* Ignore mouse */ + + #ifdef FEAT_GUI_W32 + /* On Win32 ignore , we get it when closing the window was +--- 1216,1223 ---- + goto cmdline_not_changed; + + case K_IGNORE: +! /* Ignore mouse event or ex_window() result. */ +! goto cmdline_not_changed; + + #ifdef FEAT_GUI_W32 + /* On Win32 ignore , we get it when closing the window was +*** ../vim-7.1.186/src/version.c Wed Jan 2 21:07:32 2008 +--- src/version.c Wed Jan 2 21:53:24 2008 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 187, + /**/ + +-- +FATHER: Who are you? +PRINCE: I'm ... your son ... +FATHER: Not you. +LAUNCELOT: I'm ... er ... Sir Launcelot, sir. + "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 /// diff --git a/7.1.188 b/7.1.188 new file mode 100644 index 00000000..1af3bf2f --- /dev/null +++ b/7.1.188 @@ -0,0 +1,54 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.188 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.188 +Problem: When 'showmode' is off the message for changing a readonly file is + given in the second column instead of the first. (Payl B. Mahol) +Solution: Put the W10 message in the first column. +Files: src/edit.c + + +*** ../vim-7.1.187/src/edit.c Wed Jan 2 17:48:24 2008 +--- src/edit.c Wed Jan 2 20:56:46 2008 +*************** +*** 550,556 **** + i = showmode(); + + if (!p_im && did_restart_edit == 0) +! change_warning(i + 1); + + #ifdef CURSOR_SHAPE + ui_cursor_shape(); /* may show different cursor shape */ +--- 550,556 ---- + i = showmode(); + + if (!p_im && did_restart_edit == 0) +! change_warning(i == 0 ? 0 : i + 1); + + #ifdef CURSOR_SHAPE + ui_cursor_shape(); /* may show different cursor shape */ +*** ../vim-7.1.187/src/version.c Wed Jan 2 21:54:33 2008 +--- src/version.c Wed Jan 2 22:06:19 2008 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 188, + /**/ + +-- +PRINCE: He's come to rescue me, father. +LAUNCELOT: (embarrassed) Well, let's not jump to conclusions ... + "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 /// diff --git a/7.1.189 b/7.1.189 new file mode 100644 index 00000000..86666158 --- /dev/null +++ b/7.1.189 @@ -0,0 +1,76 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.189 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.189 (after 7.1.104) +Problem: Patch 7.1.104 was incomplete. +Solution: Also call plain_vgetc() in ask_yesno(). +Files: src/misc1.c + + +*** ../vim-7.1.188/src/misc1.c Wed Jan 2 17:48:24 2008 +--- src/misc1.c Wed Jan 2 17:48:00 2008 +*************** +*** 222,231 **** + *s++ = *p++; + orig_char_len--; + } + /* Skip over any additional white space (useful when newindent is less + * than old) */ + while (vim_iswhite(*p)) +! (void)*p++; + + } + else +--- 222,232 ---- + *s++ = *p++; + orig_char_len--; + } ++ + /* Skip over any additional white space (useful when newindent is less + * than old) */ + while (vim_iswhite(*p)) +! ++p; + + } + else +*************** +*** 3024,3030 **** + if (direct) + r = get_keystroke(); + else +! r = safe_vgetc(); + if (r == Ctrl_C || r == ESC) + r = 'n'; + msg_putchar(r); /* show what you typed */ +--- 3025,3031 ---- + if (direct) + r = get_keystroke(); + else +! r = plain_vgetc(); + if (r == Ctrl_C || r == ESC) + r = 'n'; + msg_putchar(r); /* show what you typed */ +*** ../vim-7.1.188/src/version.c Wed Jan 2 22:08:43 2008 +--- src/version.c Thu Jan 3 12:40:31 2008 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 189, + /**/ + +-- +Q: How does a UNIX Guru do Sex ? +A: unzip;strip;touch;finger;mount;fsck;more;yes;umount;sleep + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.190 b/7.1.190 new file mode 100644 index 00000000..6cf181c4 --- /dev/null +++ b/7.1.190 @@ -0,0 +1,55 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.190 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.190 +Problem: Cursor after end-of-line: "iA sentence.)" +Solution: Move cursor back and make motion inclusive. +Files: src/normal.c + + +*** ../vim-7.1.189/src/normal.c Wed Jan 2 16:25:20 2008 +--- src/normal.c Wed Jan 2 22:04:38 2008 +*************** +*** 6564,6569 **** +--- 6564,6575 ---- + clearopbeep(cap->oap); + else + { ++ /* Don't leave the cursor on the NUL past a line */ ++ if (curwin->w_cursor.col > 0 && gchar_cursor() == NUL) ++ { ++ --curwin->w_cursor.col; ++ cap->oap->inclusive = TRUE; ++ } + #ifdef FEAT_VIRTUALEDIT + curwin->w_cursor.coladd = 0; + #endif +*** ../vim-7.1.189/src/version.c Thu Jan 3 12:42:39 2008 +--- src/version.c Thu Jan 3 13:19:03 2008 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 190, + /**/ + +-- + [clop clop] +GUARD #1: Halt! Who goes there? +ARTHUR: It is I, Arthur, son of Uther Pendragon, from the castle of + Camelot. King of the Britons, defeator of the Saxons, sovereign of + all England! +GUARD #1: Pull the other one! + 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 /// diff --git a/7.1.191 b/7.1.191 new file mode 100644 index 00000000..4cbc35c3 --- /dev/null +++ b/7.1.191 @@ -0,0 +1,61 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.191 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.191 +Problem: Win32 GUI: after patch 7.1.168 there is still a problem when + clicking in a scrollbar. (Juergen Jottkaerr) +Solution: Don't check the input buffer when dragging the scrollbar. +Files: src/gui.c + + +*** ../vim-7.1.190/src/gui.c Tue Nov 6 22:26:39 2007 +--- src/gui.c Thu Jan 3 13:16:29 2008 +*************** +*** 3734,3741 **** + sb->value = value; + + #ifdef USE_ON_FLY_SCROLL +! /* When not allowed to do the scrolling right now, return. */ +! if (dont_scroll || input_available()) + return; + #endif + #ifdef FEAT_INS_EXPAND +--- 3734,3743 ---- + sb->value = value; + + #ifdef USE_ON_FLY_SCROLL +! /* When not allowed to do the scrolling right now, return. +! * This also checked input_available(), but that causes the first click in +! * a scrollbar to be ignored when Vim doesn't have focus. */ +! if (dont_scroll) + return; + #endif + #ifdef FEAT_INS_EXPAND +*** ../vim-7.1.190/src/version.c Thu Jan 3 13:19:50 2008 +--- src/version.c Thu Jan 3 16:13:23 2008 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 191, + /**/ + +-- +GUARD #1: What -- a swallow carrying a coconut? +ARTHUR: It could grip it by the husk! +GUARD #1: It's not a question of where he grips it! It's a simple question + of weight ratios! A five ounce bird could not carry a 1 pound + coconut. + 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 /// diff --git a/7.1.192 b/7.1.192 new file mode 100644 index 00000000..4dd16382 --- /dev/null +++ b/7.1.192 @@ -0,0 +1,79 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.192 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.192 +Problem: With Visual block selection, "s" and typing something, CTRL-C + doesn't stop Vim from repeating the replacement in other lines, + like happens for "I". +Solution: Check for "got_int" to be set. +Files: src/ops.c + + +*** ../vim-7.1.191/src/ops.c Sat Dec 1 21:12:23 2007 +--- src/ops.c Thu Jan 3 16:26:37 2008 +*************** +*** 2468,2476 **** + + edit(NUL, FALSE, (linenr_T)count1); + +! /* if user has moved off this line, we don't know what to do, so do +! * nothing */ +! if (curwin->w_cursor.lnum != oap->start.lnum) + return; + + if (oap->block_mode) +--- 2468,2477 ---- + + edit(NUL, FALSE, (linenr_T)count1); + +! /* If user has moved off this line, we don't know what to do, so do +! * nothing. +! * Also don't repeat the insert when Insert mode ended with CTRL-C. */ +! if (curwin->w_cursor.lnum != oap->start.lnum || got_int) + return; + + if (oap->block_mode) +*************** +*** 2601,2608 **** + /* + * In Visual block mode, handle copying the new text to all lines of the + * block. + */ +! if (oap->block_mode && oap->start.lnum != oap->end.lnum) + { + /* Auto-indenting may have changed the indent. If the cursor was past + * the indent, exclude that indent change from the inserted text. */ +--- 2602,2610 ---- + /* + * In Visual block mode, handle copying the new text to all lines of the + * block. ++ * Don't repeat the insert when Insert mode ended with CTRL-C. + */ +! if (oap->block_mode && oap->start.lnum != oap->end.lnum && !got_int) + { + /* Auto-indenting may have changed the indent. If the cursor was past + * the indent, exclude that indent change from the inserted text. */ +*** ../vim-7.1.191/src/version.c Thu Jan 3 16:14:25 2008 +--- src/version.c Thu Jan 3 16:30:07 2008 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 192, + /**/ + +-- +"A mouse can be just as dangerous as a bullet or a bomb." + (US Representative Lamar Smith, R-Texas) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.193 b/7.1.193 new file mode 100644 index 00000000..b3836f73 --- /dev/null +++ b/7.1.193 @@ -0,0 +1,100 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.193 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.193 +Problem: Some Vim 5.x digraphs are missing in Vim 7, even though the + character pairs are not used. (Philippe de Muyter) +Solution: Add those Vim 5.x digraphs that don't conflict with others. +Files: src/digraph.c + + +*** ../vim-7.1.192/src/digraph.c Thu Sep 13 18:25:08 2007 +--- src/digraph.c Thu Jan 3 17:48:47 2008 +*************** +*** 1978,1983 **** +--- 1978,2038 ---- + {'f', 't', 0xfb05}, + {'s', 't', 0xfb06}, + # endif /* FEAT_MBYTE */ ++ ++ /* Vim 5.x compatible digraphs that don't conflict with the above */ ++ {'~', '!', 161}, /* */ ++ {'c', '|', 162}, /* */ ++ {'$', '$', 163}, /* */ ++ {'o', 'x', 164}, /* - currency symbol in ISO 8859-1 */ ++ {'Y', '-', 165}, /* */ ++ {'|', '|', 166}, /* */ ++ {'c', 'O', 169}, /* */ ++ {'-', ',', 172}, /* */ ++ {'-', '=', 175}, /* */ ++ {'~', 'o', 176}, /* */ ++ {'2', '2', 178}, /* */ ++ {'3', '3', 179}, /* */ ++ {'p', 'p', 182}, /* */ ++ {'~', '.', 183}, /* */ ++ {'1', '1', 185}, /* */ ++ {'~', '?', 191}, /* */ ++ {'A', '`', 192}, /* */ ++ {'A', '^', 194}, /* */ ++ {'A', '~', 195}, /* */ ++ {'A', '"', 196}, /* */ ++ {'A', '@', 197}, /* */ ++ {'E', '`', 200}, /* */ ++ {'E', '^', 202}, /* */ ++ {'E', '"', 203}, /* */ ++ {'I', '`', 204}, /* */ ++ {'I', '^', 206}, /* */ ++ {'I', '"', 207}, /* */ ++ {'N', '~', 209}, /* */ ++ {'O', '`', 210}, /* */ ++ {'O', '^', 212}, /* */ ++ {'O', '~', 213}, /* */ ++ {'/', '\\', 215}, /* - multiplication symbol in ISO 8859-1 */ ++ {'U', '`', 217}, /* */ ++ {'U', '^', 219}, /* */ ++ {'I', 'p', 222}, /* */ ++ {'a', '`', 224}, /* */ ++ {'a', '^', 226}, /* */ ++ {'a', '~', 227}, /* */ ++ {'a', '"', 228}, /* */ ++ {'a', '@', 229}, /* */ ++ {'e', '`', 232}, /* */ ++ {'e', '^', 234}, /* */ ++ {'e', '"', 235}, /* */ ++ {'i', '`', 236}, /* */ ++ {'i', '^', 238}, /* */ ++ {'n', '~', 241}, /* */ ++ {'o', '`', 242}, /* */ ++ {'o', '^', 244}, /* */ ++ {'o', '~', 245}, /* */ ++ {'u', '`', 249}, /* */ ++ {'u', '^', 251}, /* */ ++ {'y', '"', 255}, /* x XX */ ++ + {NUL, NUL, NUL} + }; + +*** ../vim-7.1.192/src/version.c Thu Jan 3 16:31:17 2008 +--- src/version.c Thu Jan 3 17:52:51 2008 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 193, + /**/ + +-- +Futility Factor: No experiment is ever a complete failure - it can always +serve as a negative example. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.194 b/7.1.194 new file mode 100644 index 00000000..b05ca9ed --- /dev/null +++ b/7.1.194 @@ -0,0 +1,55 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.194 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.194 +Problem: ":echo glob('~/{}')" results in /home/user//. +Solution: Don't add a slash if there already is one. +Files: src/os_unix.c + + +*** ../vim-7.1.193/src/os_unix.c Sat Dec 1 17:18:45 2007 +--- src/os_unix.c Thu Jan 3 18:52:22 2008 +*************** +*** 5482,5488 **** + { + STRCPY(p, (*file)[i]); + if (dir) +! STRCAT(p, "/"); /* add '/' to a directory name */ + (*file)[j++] = p; + } + } +--- 5482,5488 ---- + { + STRCPY(p, (*file)[i]); + if (dir) +! add_pathsep(p); /* add '/' to a directory name */ + (*file)[j++] = p; + } + } +*** ../vim-7.1.193/src/version.c Thu Jan 3 17:53:41 2008 +--- src/version.c Thu Jan 3 18:54:41 2008 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 194, + /**/ + +-- +ARTHUR: Will you ask your master if he wants to join my court at Camelot?! +GUARD #1: But then of course African swallows are not migratory. +GUARD #2: Oh, yeah... +GUARD #1: So they couldn't bring a coconut back anyway... + 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 /// diff --git a/7.1.195 b/7.1.195 new file mode 100644 index 00000000..37e3264f --- /dev/null +++ b/7.1.195 @@ -0,0 +1,75 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.195 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.195 +Problem: '0 mark doesn't work for "~/foo ~ foo". +Solution: Don't expand the whole file name, only "~/". +Files: src/mark.c + + +*** ../vim-7.1.194/src/mark.c Thu May 10 18:48:03 2007 +--- src/mark.c Thu Jan 3 20:17:29 2008 +*************** +*** 505,513 **** + { + /* + * First expand "~/" in the file name to the home directory. +! * Try to shorten the file name. + */ +! expand_env(fm->fname, NameBuff, MAXPATHL); + mch_dirname(IObuff, IOSIZE); + p = shorten_fname(NameBuff, IObuff); + +--- 505,528 ---- + { + /* + * First expand "~/" in the file name to the home directory. +! * Don't expand the whole name, it may contain other '~' chars. + */ +! if (fm->fname[0] == '~' && (fm->fname[1] == '/' +! #ifdef BACKSLASH_IN_FILENAME +! || fm->fname[1] == '\\' +! #endif +! )) +! { +! int len; +! +! expand_env((char_u *)"~/", NameBuff, MAXPATHL); +! len = STRLEN(NameBuff); +! vim_strncpy(NameBuff + len, fm->fname + 2, MAXPATHL - len - 1); +! } +! else +! vim_strncpy(NameBuff, fm->fname, MAXPATHL - 1); +! +! /* Try to shorten the file name. */ + mch_dirname(IObuff, IOSIZE); + p = shorten_fname(NameBuff, IObuff); + +*** ../vim-7.1.194/src/version.c Thu Jan 3 18:55:21 2008 +--- src/version.c Thu Jan 3 20:10:16 2008 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 195, + /**/ + +-- +GUARD #2: Wait a minute -- supposing two swallows carried it together? +GUARD #1: No, they'd have to have it on a line. +GUARD #2: Well, simple! They'd just use a standard creeper! +GUARD #1: What, held under the dorsal guiding feathers? +GUARD #2: Well, why 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 /// diff --git a/7.1.196 b/7.1.196 new file mode 100644 index 00000000..087577a7 --- /dev/null +++ b/7.1.196 @@ -0,0 +1,90 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.196 (extra) +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.196 (extra) +Problem: Win32 GUI: "\n" in a tooltip doesn't cause a line break. (Erik + Falor) +Solution: Use the TTM_SETMAXTIPWIDTH message. +Files: src/gui_w32.c + + +*** ../vim-7.1.195/src/gui_w32.c Thu Aug 30 12:24:21 2007 +--- src/gui_w32.c Thu Jan 3 13:56:26 2008 +*************** +*** 987,992 **** +--- 987,997 ---- + { + LPNMTTDISPINFOW lpdi = (LPNMTTDISPINFOW)lParam; + ++ /* Set the maximum width, this also enables using ++ * \n for line break. */ ++ SendMessage(lpdi->hdr.hwndFrom, TTM_SETMAXTIPWIDTH, ++ 0, 500); ++ + tt_text = enc_to_ucs2(str, NULL); + lpdi->lpszText = tt_text; + /* can't show tooltip if failed */ +*************** +*** 996,1001 **** +--- 1001,1011 ---- + { + LPNMTTDISPINFO lpdi = (LPNMTTDISPINFO)lParam; + ++ /* Set the maximum width, this also enables using ++ * \n for line break. */ ++ SendMessage(lpdi->hdr.hwndFrom, TTM_SETMAXTIPWIDTH, ++ 0, 500); ++ + if (STRLEN(str) < sizeof(lpdi->szText) + || ((tt_text = vim_strsave(str)) == NULL)) + vim_strncpy(lpdi->szText, str, +*************** +*** 4734,4745 **** + cur_beval->showState = ShS_NEUTRAL; + break; + case TTN_GETDISPINFO: +! { +! /* if you get there then we have new common controls */ +! NMTTDISPINFO_NEW *info = (NMTTDISPINFO_NEW *)pnmh; +! info->lpszText = (LPSTR)info->lParam; +! info->uFlags |= TTF_DI_SETITEM; +! } + break; + } + } +--- 4744,4755 ---- + cur_beval->showState = ShS_NEUTRAL; + break; + case TTN_GETDISPINFO: +! { +! /* if you get there then we have new common controls */ +! NMTTDISPINFO_NEW *info = (NMTTDISPINFO_NEW *)pnmh; +! info->lpszText = (LPSTR)info->lParam; +! info->uFlags |= TTF_DI_SETITEM; +! } + break; + } + } +*** ../vim-7.1.195/src/version.c Thu Jan 3 20:21:34 2008 +--- src/version.c Thu Jan 3 20:43:22 2008 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 196, + /**/ + +-- +Shit makes the flowers grow and that's beautiful + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.197 b/7.1.197 new file mode 100644 index 00000000..e9b58c23 --- /dev/null +++ b/7.1.197 @@ -0,0 +1,62 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.197 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.197 +Problem: Mac: "make install" doesn't work when prefix defined. +Solution: Pass different arguments to "make installruntime". (Jjgod Jiang) +Files: src/Makefile + + +*** ../vim-7.1.196/src/Makefile Thu Jan 3 20:44:40 2008 +--- src/Makefile Thu Jan 3 18:30:02 2008 +*************** +*** 2559,2566 **** + # -mkdir $(DESTDIR)$(prefix)/$(APPDIR)/bin + srcdir=`pwd`; $(MAKE) -f Makefile installruntime \ + VIMEXE=$$srcdir/$(VIMTARGET) \ +! prefix=$(DESTDIR)$(prefix)/$(RESDIR)/vim \ +! VIMRTLOC=$(DESTDIR)$(prefix)/$(RESDIR)/vim/runtime + # Put the link back. + ln -s `pwd`/../runtime $(RESDIR)/vim + # Copy rgb.txt, Mac doesn't always have X11 +--- 2564,2574 ---- + # -mkdir $(DESTDIR)$(prefix)/$(APPDIR)/bin + srcdir=`pwd`; $(MAKE) -f Makefile installruntime \ + VIMEXE=$$srcdir/$(VIMTARGET) \ +! prefix=$(DESTDIR)$(prefix)/$(RESDIR)$(VIMDIR) \ +! exec_prefix=$(DESTDIR)$(prefix)/$(APPDIR)/Contents \ +! BINDIR=$(DESTDIR)$(prefix)/$(APPDIR)/Contents/MacOS \ +! VIMLOC=$(DESTDIR)$(prefix)/$(RESDIR)$(VIMDIR) \ +! VIMRTLOC=$(DESTDIR)$(prefix)/$(RESDIR)$(VIMDIR)/runtime + # Put the link back. + ln -s `pwd`/../runtime $(RESDIR)/vim + # Copy rgb.txt, Mac doesn't always have X11 +*** ../vim-7.1.196/src/version.c Thu Jan 3 20:44:35 2008 +--- src/version.c Fri Jan 4 11:52:46 2008 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 197, + /**/ + +-- +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 /// diff --git a/7.1.198 b/7.1.198 new file mode 100644 index 00000000..d5c6f14d --- /dev/null +++ b/7.1.198 @@ -0,0 +1,51 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.198 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.198 +Problem: Hang when using ":s/\n//gn". (Burak Gorkemli) +Solution: Set "skip_match". +Files: src/ex_cmds.c + + +*** ../vim-7.1.197/src/ex_cmds.c Wed Jan 2 13:58:17 2008 +--- src/ex_cmds.c Fri Jan 4 14:46:34 2008 +*************** +*** 4575,4580 **** +--- 4575,4581 ---- + { + matchcol = (colnr_T)STRLEN(sub_firstline); + nmatch = 1; ++ skip_match = TRUE; + } + sub_nsubs++; + did_sub = TRUE; +*** ../vim-7.1.197/src/version.c Fri Jan 4 11:54:11 2008 +--- src/version.c Fri Jan 4 14:52:09 2008 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 198, + /**/ + +-- + [clop clop] +ARTHUR: Old woman! +DENNIS: Man! +ARTHUR: Man, sorry. What knight lives in that castle over there? +DENNIS: I'm thirty seven. +ARTHUR: What? +DENNIS: I'm thirty seven -- I'm not old! + 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 /// diff --git a/7.1.199 b/7.1.199 new file mode 100644 index 00000000..18d731e6 --- /dev/null +++ b/7.1.199 @@ -0,0 +1,105 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.199 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.199 +Problem: Can't do command line completion for a specific file name + extension. +Solution: When the pattern ends in "$" don't add a star for completion and + remove the "$" before matching with file names. +Files: runtime/doc/cmdline.txt, src/ex_getln.c + + +*** ../vim-7.1.198/runtime/doc/cmdline.txt Sat May 12 15:38:39 2007 +--- runtime/doc/cmdline.txt Fri Jan 4 15:13:06 2008 +*************** +*** 1,4 **** +! *cmdline.txt* For Vim version 7.1. Last change: 2006 Jul 18 + + + VIM REFERENCE MANUAL by Bram Moolenaar +--- 1,4 ---- +! *cmdline.txt* For Vim version 7.1. Last change: 2008 Jan 04 + + + VIM REFERENCE MANUAL by Bram Moolenaar +*************** +*** 316,322 **** + command-line is shown. (Note: the shifted arrow keys do not work on all + terminals) + +! *his* *:history* + :his[tory] Print the history of last entered commands. + {not in Vi} + {not available when compiled without the |+cmdline_hist| +--- 316,322 ---- + command-line is shown. (Note: the shifted arrow keys do not work on all + terminals) + +! *:his* *:history* + :his[tory] Print the history of last entered commands. + {not in Vi} + {not available when compiled without the |+cmdline_hist| +*************** +*** 447,452 **** +--- 447,457 ---- + + To completely ignore files with some extension use 'wildignore'. + ++ To match only files that end at the end of the typed text append a "$". For ++ example, to match only files that end in ".c": > ++ :e *.c$ ++ This will not match a file ending in ".cpp". Without the "$" it does match. ++ + The old value of an option can be obtained by hitting 'wildchar' just after + the '='. For example, typing 'wildchar' after ":set dir=" will insert the + current value of 'dir'. This overrules file name completion for the options +*** ../vim-7.1.198/src/ex_getln.c Wed Jan 2 21:54:33 2008 +--- src/ex_getln.c Fri Jan 4 15:05:31 2008 +*************** +*** 4078,4083 **** +--- 4078,4084 ---- + * ~ would be at the start of the file name, but not the tail. + * $ could be anywhere in the tail. + * ` could be anywhere in the file name. ++ * When the name ends in '$' don't add a star, remove the '$'. + */ + tail = gettail(retval); + if ((*retval != '~' || tail != retval) +*************** +*** 4085,4090 **** +--- 4086,4093 ---- + && vim_strchr(tail, '$') == NULL + && vim_strchr(retval, '`') == NULL) + retval[len++] = '*'; ++ else if (len > 0 && retval[len - 1] == '$') ++ --len; + retval[len] = NUL; + } + } +*** ../vim-7.1.198/src/version.c Fri Jan 4 14:52:14 2008 +--- src/version.c Fri Jan 4 15:14:29 2008 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 199, + /**/ + +-- +ARTHUR: Well, I can't just call you `Man'. +DENNIS: Well, you could say `Dennis'. +ARTHUR: Well, I didn't know you were called `Dennis.' +DENNIS: Well, you didn't bother to find out, did you? + 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 /// diff --git a/7.1.200 b/7.1.200 new file mode 100644 index 00000000..8a0a1261 --- /dev/null +++ b/7.1.200 @@ -0,0 +1,74 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.200 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.200 (after 7.1.177 and 7.1.182) +Problem: Compiler warnings for uninitialized variables. +Solution: Init variables. +Files: src/ex_cmds2.c, src/ex_docmd.c + + +*** ../vim-7.1.199/src/ex_cmds2.c Tue Jan 1 14:16:42 2008 +--- src/ex_cmds2.c Fri Jan 4 15:55:54 2008 +*************** +*** 94,100 **** + int save_redir_off = redir_off; + tasave_T typeaheadbuf; + int typeahead_saved = FALSE; +! int save_ignore_script; + # ifdef FEAT_EX_EXTRA + int save_ex_normal_busy; + # endif +--- 94,100 ---- + int save_redir_off = redir_off; + tasave_T typeaheadbuf; + int typeahead_saved = FALSE; +! int save_ignore_script = 0; + # ifdef FEAT_EX_EXTRA + int save_ex_normal_busy; + # endif +*** ../vim-7.1.199/src/ex_docmd.c Wed Jan 2 21:07:32 2008 +--- src/ex_docmd.c Fri Jan 4 15:57:28 2008 +*************** +*** 9765,9771 **** + win_T *tab_firstwin; + frame_T *tab_topframe; + int cur_arg_idx = 0; +! int next_arg_idx; + + if (ssop_flags & SSOP_BUFFERS) + only_save_windows = FALSE; /* Save ALL buffers */ +--- 9766,9772 ---- + win_T *tab_firstwin; + frame_T *tab_topframe; + int cur_arg_idx = 0; +! int next_arg_idx = 0; + + if (ssop_flags & SSOP_BUFFERS) + only_save_windows = FALSE; /* Save ALL buffers */ +*** ../vim-7.1.199/src/version.c Fri Jan 4 15:16:57 2008 +--- src/version.c Fri Jan 4 15:59:46 2008 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 200, + /**/ + +-- +ARTHUR: I did say sorry about the `old woman,' but from the behind you + looked-- +DENNIS: What I object to is you automatically treat me like an inferior! +ARTHUR: Well, I AM king... + 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 /// diff --git a/7.1.201 b/7.1.201 new file mode 100644 index 00000000..6742191b --- /dev/null +++ b/7.1.201 @@ -0,0 +1,87 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.201 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.201 +Problem: When reading stdin 'fenc' and 'ff are not set. +Solution: Set the options after reading stdin. (Ben Schmidt) +Files: src/fileio.c + + +*** ../vim-7.1.200/src/fileio.c Wed Jan 2 21:07:32 2008 +--- src/fileio.c Fri Jan 4 16:18:27 2008 +*************** +*** 221,231 **** + { + int fd = 0; + int newfile = (flags & READ_NEW); +- int set_options = newfile || (eap != NULL && eap->read_edit); + int check_readonly; + int filtering = (flags & READ_FILTER); + int read_stdin = (flags & READ_STDIN); + int read_buffer = (flags & READ_BUFFER); + linenr_T read_buf_lnum = 1; /* next line to read from curbuf */ + colnr_T read_buf_col = 0; /* next char to read from this line */ + char_u c; +--- 221,232 ---- + { + int fd = 0; + int newfile = (flags & READ_NEW); + int check_readonly; + int filtering = (flags & READ_FILTER); + int read_stdin = (flags & READ_STDIN); + int read_buffer = (flags & READ_BUFFER); ++ int set_options = newfile || read_buffer ++ || (eap != NULL && eap->read_edit); + linenr_T read_buf_lnum = 1; /* next line to read from curbuf */ + colnr_T read_buf_col = 0; /* next char to read from this line */ + char_u c; +*************** +*** 650,657 **** + + if (set_options) + { +! curbuf->b_p_eol = TRUE; +! curbuf->b_start_eol = TRUE; + #ifdef FEAT_MBYTE + curbuf->b_p_bomb = FALSE; + curbuf->b_start_bomb = FALSE; +--- 651,663 ---- + + if (set_options) + { +! /* Don't change 'eol' if reading from buffer as it will already be +! * correctly set when reading stdin. */ +! if (!read_buffer) +! { +! curbuf->b_p_eol = TRUE; +! curbuf->b_start_eol = TRUE; +! } + #ifdef FEAT_MBYTE + curbuf->b_p_bomb = FALSE; + curbuf->b_start_bomb = FALSE; +*** ../vim-7.1.200/src/version.c Fri Jan 4 16:00:10 2008 +--- src/version.c Fri Jan 4 16:27:01 2008 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 201, + /**/ + +-- +A mathematician is a device for turning coffee into theorems. + Paul Erdos +A computer programmer is a device for turning coffee into bugs. + Bram Moolenaar + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.202 b/7.1.202 new file mode 100644 index 00000000..5e7006de --- /dev/null +++ b/7.1.202 @@ -0,0 +1,83 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.202 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.202 +Problem: Incomplete utf-8 byte sequence is not checked for validity. +Solution: Check the bytes that are present for being valid. (Ben Schmidt) +Files: src/mbyte.c + + +*** ../vim-7.1.201/src/mbyte.c Thu Aug 30 13:51:52 2007 +--- src/mbyte.c Fri Jan 4 17:30:16 2008 +*************** +*** 1642,1648 **** + * Get the length of UTF-8 byte sequence "p[size]". Does not include any + * following composing characters. + * Returns 1 for "". +! * Returns 1 for an illegal byte sequence. + * Returns number > "size" for an incomplete byte sequence. + */ + int +--- 1642,1648 ---- + * Get the length of UTF-8 byte sequence "p[size]". Does not include any + * following composing characters. + * Returns 1 for "". +! * Returns 1 for an illegal byte sequence (also in incomplete byte seq.). + * Returns number > "size" for an incomplete byte sequence. + */ + int +*************** +*** 1652,1664 **** + { + int len; + int i; + + if (*p == NUL) + return 1; +! len = utf8len_tab[*p]; + if (len > size) +! return len; /* incomplete byte sequence. */ +! for (i = 1; i < len; ++i) + if ((p[i] & 0xc0) != 0x80) + return 1; + return len; +--- 1652,1665 ---- + { + int len; + int i; ++ int m; + + if (*p == NUL) + return 1; +! m = len = utf8len_tab[*p]; + if (len > size) +! m = size; /* incomplete byte sequence. */ +! for (i = 1; i < m; ++i) + if ((p[i] & 0xc0) != 0x80) + return 1; + return len; +*** ../vim-7.1.201/src/version.c Fri Jan 4 16:30:40 2008 +--- src/version.c Fri Jan 4 17:45:33 2008 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 202, + /**/ + +-- +A computer programmer is a device for turning requirements into +undocumented features. It runs on cola, pizza and Dilbert cartoons. + Bram Moolenaar + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.203 b/7.1.203 new file mode 100644 index 00000000..92703946 --- /dev/null +++ b/7.1.203 @@ -0,0 +1,68 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.203 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.203 +Problem: When 'virtualedit' is "onemore" then "99|" works but ":normal 99|" + doesn't. (Andy Wokula) +Solution: Check for "onemore" flag in check_cursor_col(). +Files: src/misc2.c + + +*** ../vim-7.1.202/src/misc2.c Sat Nov 24 21:27:33 2007 +--- src/misc2.c Fri Jan 4 21:24:46 2008 +*************** +*** 507,517 **** + curwin->w_cursor.col = 0; + else if (curwin->w_cursor.col >= len) + { +! /* Allow cursor past end-of-line in Insert mode, restarting Insert +! * mode or when in Visual mode and 'selection' isn't "old" */ + if ((State & INSERT) || restart_edit + #ifdef FEAT_VISUAL + || (VIsual_active && *p_sel != 'o') + #endif + || virtual_active()) + curwin->w_cursor.col = len; +--- 508,523 ---- + curwin->w_cursor.col = 0; + else if (curwin->w_cursor.col >= len) + { +! /* Allow cursor past end-of-line when: +! * - in Insert mode or restarting Insert mode +! * - in Visual mode and 'selection' isn't "old" +! * - 'virtualedit' is set */ + if ((State & INSERT) || restart_edit + #ifdef FEAT_VISUAL + || (VIsual_active && *p_sel != 'o') ++ #endif ++ #ifdef FEAT_VIRTUALEDIT ++ || (ve_flags & VE_ONEMORE) + #endif + || virtual_active()) + curwin->w_cursor.col = len; +*** ../vim-7.1.202/src/version.c Fri Jan 4 17:46:46 2008 +--- src/version.c Fri Jan 4 21:22:29 2008 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 203, + /**/ + +-- +`When any government, or any church for that matter, undertakes to say to + its subjects, "This you may not read, this you must not see, this you are + forbidden to know," the end result is tyranny and oppression no matter how + holy the motives' -- Robert A Heinlein, "If this goes on --" + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.204 b/7.1.204 new file mode 100644 index 00000000..085e88f5 --- /dev/null +++ b/7.1.204 @@ -0,0 +1,74 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.204 (extra) +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.204 (extra) +Problem: Win32: Using the example at 'balloonexpr' the balloon disappears + after four seconds and then comes back again. Also moves the + mouse pointer a little bit. (Yongwei Wu) +Solution: Set the autopop time to 30 seconds (the max value). (Sergey + Khorev) Move the mouse two pixels forward and one back to end up + in the same position (really!). +Files: src/gui_w32.c + + + +*** ../vim-7.1.203/src/gui_w32.c Thu Jan 3 20:44:35 2008 +--- src/gui_w32.c Sat Jan 5 13:09:56 2008 +*************** +*** 4575,4585 **** + SendMessage(beval->balloon, TTM_ADDTOOL, 0, (LPARAM)pti); + /* Make tooltip appear sooner */ + SendMessage(beval->balloon, TTM_SETDELAYTIME, TTDT_INITIAL, 10); + /* + * HACK: force tooltip to appear, because it'll not appear until + * first mouse move. D*mn M$ + */ +! mouse_event(MOUSEEVENTF_MOVE, 1, 1, 0, 0); + mouse_event(MOUSEEVENTF_MOVE, (DWORD)-1, (DWORD)-1, 0, 0); + vim_free(pti); + } +--- 4575,4589 ---- + SendMessage(beval->balloon, TTM_ADDTOOL, 0, (LPARAM)pti); + /* Make tooltip appear sooner */ + SendMessage(beval->balloon, TTM_SETDELAYTIME, TTDT_INITIAL, 10); ++ /* I've performed some tests and it seems the longest possible life time ++ * of tooltip is 30 seconds */ ++ SendMessage(beval->balloon, TTM_SETDELAYTIME, TTDT_AUTOPOP, 30000); + /* + * HACK: force tooltip to appear, because it'll not appear until + * first mouse move. D*mn M$ ++ * Amazingly moving (2, 2) and then (-1, -1) the mouse doesn't move. + */ +! mouse_event(MOUSEEVENTF_MOVE, 2, 2, 0, 0); + mouse_event(MOUSEEVENTF_MOVE, (DWORD)-1, (DWORD)-1, 0, 0); + vim_free(pti); + } +*** ../vim-7.1.203/src/version.c Fri Jan 4 21:25:01 2008 +--- src/version.c Sat Jan 5 13:12:22 2008 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 204, + /**/ + +-- +WOMAN: I didn't know we had a king. I thought we were an autonomous + collective. +DENNIS: You're fooling yourself. We're living in a dictatorship. A + self-perpetuating autocracy in which the working classes-- +WOMAN: Oh there you go, bringing class into it again. +DENNIS: That's what it's all about if only people would-- + 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 /// diff --git a/7.1.205 b/7.1.205 new file mode 100644 index 00000000..a1c15ed7 --- /dev/null +++ b/7.1.205 @@ -0,0 +1,181 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.205 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.205 +Problem: Can't get the operator in an ":omap". +Solution: Add the "v:operator" variable. (Ben Schmidt) +Files: runtime/doc/eval.txt, src/eval.c, src/normal.c, src/vim.h + + +*** ../vim-7.1.204/runtime/doc/eval.txt Tue Sep 25 17:54:41 2007 +--- runtime/doc/eval.txt Fri Jan 4 20:38:55 2008 +*************** +*** 1,4 **** +! *eval.txt* For Vim version 7.1. Last change: 2007 Sep 25 + + + VIM REFERENCE MANUAL by Bram Moolenaar +--- 1,4 ---- +! *eval.txt* For Vim version 7.1. Last change: 2008 Jan 04 + + + VIM REFERENCE MANUAL by Bram Moolenaar +*************** +*** 1401,1410 **** + This is the screen column number, like with |virtcol()|. The + value is zero when there was no mouse button click. + + *v:prevcount* *prevcount-variable* + v:prevcount The count given for the last but one Normal mode command. + This is the v:count value of the previous command. Useful if +! you want to cancel Visual mode and then use the count. > + :vmap % :call MyFilter(v:prevcount) + < Read-only. + +--- 1401,1424 ---- + This is the screen column number, like with |virtcol()|. The + value is zero when there was no mouse button click. + ++ *v:operator* *operator-variable* ++ v:operator The last operator given in Normal mode. This is a single ++ character except for commands starting with or , ++ in which case it is two characters. Best used alongside ++ |v:prevcount| and |v:register|. Useful if you want to cancel ++ Operator-pending mode and then use the operator, e.g.: > ++ :omap O :call MyMotion(v:operator) ++ < The value remains set until another operator is entered, thus ++ don't expect it to be empty. ++ v:operator is not set for |:delete|, |:yank| or other Ex ++ commands. ++ Read-only. ++ + *v:prevcount* *prevcount-variable* + v:prevcount The count given for the last but one Normal mode command. + This is the v:count value of the previous command. Useful if +! you want to cancel Visual or Operator-pending mode and then +! use the count, e.g.: > + :vmap % :call MyFilter(v:prevcount) + < Read-only. + +*** ../vim-7.1.204/src/eval.c Fri Dec 7 17:08:35 2007 +--- src/eval.c Sat Jan 5 13:22:52 2008 +*************** +*** 345,350 **** +--- 345,351 ---- + {VV_NAME("mouse_win", VAR_NUMBER), 0}, + {VV_NAME("mouse_lnum", VAR_NUMBER), 0}, + {VV_NAME("mouse_col", VAR_NUMBER), 0}, ++ {VV_NAME("operator", VAR_STRING), VV_RO}, + }; + + /* shorthand */ +*** ../vim-7.1.204/src/normal.c Thu Jan 3 13:19:50 2008 +--- src/normal.c Fri Jan 4 20:53:43 2008 +*************** +*** 141,146 **** +--- 141,149 ---- + static void nv_Undo __ARGS((cmdarg_T *cap)); + static void nv_tilde __ARGS((cmdarg_T *cap)); + static void nv_operator __ARGS((cmdarg_T *cap)); ++ #ifdef FEAT_EVAL ++ static void set_op_var __ARGS((int optype)); ++ #endif + static void nv_lineop __ARGS((cmdarg_T *cap)); + static void nv_home __ARGS((cmdarg_T *cap)); + static void nv_pipe __ARGS((cmdarg_T *cap)); +*************** +*** 7180,7185 **** +--- 7183,7191 ---- + { + cap->oap->start = curwin->w_cursor; + cap->oap->op_type = OP_DELETE; ++ #ifdef FEAT_EVAL ++ set_op_var(OP_DELETE); ++ #endif + cap->count1 = 1; + nv_dollar(cap); + finish_op = TRUE; +*************** +*** 8219,8226 **** +--- 8225,8257 ---- + { + cap->oap->start = curwin->w_cursor; + cap->oap->op_type = op_type; ++ #ifdef FEAT_EVAL ++ set_op_var(op_type); ++ #endif ++ } ++ } ++ ++ #ifdef FEAT_EVAL ++ /* ++ * Set v:operator to the characters for "optype". ++ */ ++ static void ++ set_op_var(optype) ++ int optype; ++ { ++ char_u opchars[3]; ++ ++ if (optype == OP_NOP) ++ set_vim_var_string(VV_OP, NULL, 0); ++ else ++ { ++ opchars[0] = get_op_char(optype); ++ opchars[1] = get_extra_op_char(optype); ++ opchars[2] = NUL; ++ set_vim_var_string(VV_OP, opchars, -1); + } + } ++ #endif + + /* + * Handle linewise operator "dd", "yy", etc. +*** ../vim-7.1.204/src/vim.h Sat Aug 11 13:57:31 2007 +--- src/vim.h Fri Jan 4 19:11:31 2008 +*************** +*** 1688,1694 **** + #define VV_MOUSE_WIN 49 + #define VV_MOUSE_LNUM 50 + #define VV_MOUSE_COL 51 +! #define VV_LEN 52 /* number of v: vars */ + + #ifdef FEAT_CLIPBOARD + +--- 1688,1695 ---- + #define VV_MOUSE_WIN 49 + #define VV_MOUSE_LNUM 50 + #define VV_MOUSE_COL 51 +! #define VV_OP 52 +! #define VV_LEN 53 /* number of v: vars */ + + #ifdef FEAT_CLIPBOARD + +*** ../vim-7.1.204/src/version.c Sat Jan 5 13:15:08 2008 +--- src/version.c Sat Jan 5 13:31:49 2008 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 205, + /**/ + +-- +ARTHUR: Then who is your lord? +WOMAN: We don't have a lord. +ARTHUR: What? +DENNIS: I told you. We're an anarcho-syndicalist commune. We take it in + turns to act as a sort of executive officer for the week. + 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 /// diff --git a/7.1.206 b/7.1.206 new file mode 100644 index 00000000..4531a002 --- /dev/null +++ b/7.1.206 @@ -0,0 +1,59 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.206 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.206 +Problem: Compiler warnings when using MODIFIED_BY. +Solution: Add type casts. (Ben Schmidt) +Files: src/version.c + + +*** ../vim-7.1.205/src/version.c Sat Jan 5 13:34:01 2008 +--- src/version.c Sat Jan 5 13:56:55 2008 +*************** +*** 1587,1595 **** + + if (*mesg == ' ') + { +! vim_strncpy(modby, _("Modified by "), MODBY_LEN - 1); + l = STRLEN(modby); +! vim_strncpy(modby + l, MODIFIED_BY, MODBY_LEN - l - 1); + mesg = modby; + } + #endif +--- 1589,1597 ---- + + if (*mesg == ' ') + { +! vim_strncpy(modby, (char_u *)_("Modified by "), MODBY_LEN - 1); + l = STRLEN(modby); +! vim_strncpy(modby + l, (char_u *)MODIFIED_BY, MODBY_LEN - l - 1); + mesg = modby; + } + #endif +*** ../vim-7.1.205/src/version.c Sat Jan 5 13:34:01 2008 +--- src/version.c Sat Jan 5 13:56:55 2008 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 206, + /**/ + +-- +ARTHUR: I am your king! +WOMAN: Well, I didn't vote for you. +ARTHUR: You don't vote for kings. +WOMAN: Well, 'ow did you become king then? + 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 /// diff --git a/7.1.207 b/7.1.207 new file mode 100644 index 00000000..1eba2ccf --- /dev/null +++ b/7.1.207 @@ -0,0 +1,253 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.207 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.207 +Problem: Netbeans: "remove" cannot delete one line. +Solution: Remove partial lines and whole lines properly. Avoid a memory + leak. (Xavier de Gaye) +Files: src/netbeans.c + + +*** ../vim-7.1.206/src/netbeans.c Thu May 10 18:40:48 2007 +--- src/netbeans.c Sat Jan 5 18:03:24 2008 +*************** +*** 1204,1209 **** +--- 1204,1257 ---- + return result; + } + ++ /* ++ * Remove from "first" byte to "last" byte (inclusive), at line "lnum" of the ++ * current buffer. Remove to end of line when "last" is MAXCOL. ++ */ ++ static void ++ nb_partialremove(linenr_T lnum, colnr_T first, colnr_T last) ++ { ++ char_u *oldtext, *newtext; ++ int oldlen; ++ int lastbyte = last; ++ ++ oldtext = ml_get(lnum); ++ oldlen = STRLEN(oldtext); ++ if (first >= oldlen || oldlen == 0) /* just in case */ ++ return; ++ if (lastbyte >= oldlen) ++ lastbyte = oldlen - 1; ++ newtext = alloc(oldlen - (int)(lastbyte - first)); ++ if (newtext != NULL) ++ { ++ mch_memmove(newtext, oldtext, first); ++ mch_memmove(newtext + first, oldtext + lastbyte + 1, STRLEN(oldtext + lastbyte + 1) + 1); ++ nbdebug((" NEW LINE %d: %s\n", lnum, newtext)); ++ ml_replace(lnum, newtext, FALSE); ++ } ++ } ++ ++ /* ++ * Replace the "first" line with the concatenation of the "first" and ++ * the "other" line. The "other" line is not removed. ++ */ ++ static void ++ nb_joinlines(linenr_T first, linenr_T other) ++ { ++ int len_first, len_other; ++ char_u *p; ++ ++ len_first = STRLEN(ml_get(first)); ++ len_other = STRLEN(ml_get(other)); ++ p = alloc((unsigned)(len_first + len_other + 1)); ++ if (p != NULL) ++ { ++ mch_memmove(p, ml_get(first), len_first); ++ mch_memmove(p + len_first, ml_get(other), len_other + 1); ++ ml_replace(first, p, FALSE); ++ } ++ } ++ + #define SKIP_STOP 2 + #define streq(a,b) (strcmp(a,b) == 0) + static int needupdate = 0; +*************** +*** 1371,1376 **** +--- 1419,1426 ---- + long count; + pos_T first, last; + pos_T *pos; ++ pos_T *next; ++ linenr_T del_from_lnum, del_to_lnum; /* lines to be deleted as a whole */ + int oldFire = netbeansFireChanges; + int oldSuppress = netbeansSuppressNoLines; + int wasChanged; +*************** +*** 1420,1444 **** + } + last = *pos; + nbdebug((" LAST POS: line %d, col %d\n", last.lnum, last.col)); +! curwin->w_cursor = first; + doupdate = 1; + +! /* keep part of first line */ +! if (first.lnum == last.lnum && first.col != last.col) + { +! /* deletion is within one line */ +! char_u *p = ml_get(first.lnum); +! mch_memmove(p + first.col, p + last.col + 1, STRLEN(p + last.col) + 1); +! nbdebug((" NEW LINE %d: %s\n", first.lnum, p)); +! ml_replace(first.lnum, p, TRUE); + } + +! if (first.lnum < last.lnum) + { + int i; + + /* delete signs from the lines being deleted */ +! for (i = first.lnum; i <= last.lnum; i++) + { + int id = buf_findsign_id(buf->bufp, (linenr_T)i); + if (id > 0) +--- 1470,1544 ---- + } + last = *pos; + nbdebug((" LAST POS: line %d, col %d\n", last.lnum, last.col)); +! del_from_lnum = first.lnum; +! del_to_lnum = last.lnum; + doupdate = 1; + +! /* Get the position of the first byte after the deleted +! * section. "next" is NULL when deleting to the end of the +! * file. */ +! next = off2pos(buf->bufp, off + count); +! +! /* Remove part of the first line. */ +! if (first.col != 0 || (next != NULL && first.lnum == next->lnum)) + { +! if (first.lnum != last.lnum +! || (next != NULL && first.lnum != next->lnum)) +! { +! /* remove to the end of the first line */ +! nb_partialremove(first.lnum, first.col, +! (colnr_T)MAXCOL); +! if (first.lnum == last.lnum) +! { +! /* Partial line to remove includes the end of +! * line. Join the line with the next one, have +! * the next line deleted below. */ +! nb_joinlines(first.lnum, next->lnum); +! del_to_lnum = next->lnum; +! } +! } +! else +! { +! /* remove within one line */ +! nb_partialremove(first.lnum, first.col, last.col); +! } +! ++del_from_lnum; /* don't delete the first line */ +! } +! +! /* Remove part of the last line. */ +! if (first.lnum != last.lnum && next != NULL +! && next->col != 0 && last.lnum == next->lnum) +! { +! nb_partialremove(last.lnum, 0, last.col); +! if (del_from_lnum > first.lnum) +! { +! /* Join end of last line to start of first line; last +! * line is deleted below. */ +! nb_joinlines(first.lnum, last.lnum); +! } +! else +! /* First line is deleted as a whole, keep the last +! * line. */ +! --del_to_lnum; + } + +! /* First is partial line; last line to remove includes +! * the end of line; join first line to line following last +! * line; line following last line is deleted below. */ +! if (first.lnum != last.lnum && del_from_lnum > first.lnum +! && next != NULL && last.lnum != next->lnum) +! { +! nb_joinlines(first.lnum, next->lnum); +! del_to_lnum = next->lnum; +! } +! +! /* Delete whole lines if there are any. */ +! if (del_to_lnum >= del_from_lnum) + { + int i; + + /* delete signs from the lines being deleted */ +! for (i = del_from_lnum; i <= del_to_lnum; i++) + { + int id = buf_findsign_id(buf->bufp, (linenr_T)i); + if (id > 0) +*************** +*** 1450,1459 **** + nbdebug((" No sign on line %d\n", i)); + } + +! /* delete whole lines */ +! nbdebug((" Deleting lines %d through %d\n", first.lnum, last.lnum)); +! del_lines(last.lnum - first.lnum + 1, FALSE); + } + buf->bufp->b_changed = wasChanged; /* logically unchanged */ + netbeansFireChanges = oldFire; + netbeansSuppressNoLines = oldSuppress; +--- 1550,1564 ---- + nbdebug((" No sign on line %d\n", i)); + } + +! nbdebug((" Deleting lines %d through %d\n", del_from_lnum, del_to_lnum)); +! curwin->w_cursor.lnum = del_from_lnum; +! curwin->w_cursor.col = 0; +! del_lines(del_to_lnum - del_from_lnum + 1, FALSE); + } ++ ++ /* Leave cursor at first deleted byte. */ ++ curwin->w_cursor = first; ++ check_cursor_lnum(); + buf->bufp->b_changed = wasChanged; /* logically unchanged */ + netbeansFireChanges = oldFire; + netbeansSuppressNoLines = oldSuppress; +*************** +*** 2374,2381 **** + * the current buffer as "buf". + */ + static void +! nb_set_curbuf(buf) +! buf_T *buf; + { + if (curbuf != buf && buf_jump_open_win(buf) == NULL) + set_curbuf(buf, DOBUF_GOTO); +--- 2479,2485 ---- + * the current buffer as "buf". + */ + static void +! nb_set_curbuf(buf_T *buf) + { + if (curbuf != buf && buf_jump_open_win(buf) == NULL) + set_curbuf(buf, DOBUF_GOTO); +*** ../vim-7.1.206/src/version.c Sat Jan 5 13:58:48 2008 +--- src/version.c Sat Jan 5 18:06:04 2008 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 207, + /**/ + +-- +Q: How many hardware engineers does it take to change a lightbulb? +A: None. We'll fix it in software. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.208 b/7.1.208 new file mode 100644 index 00000000..44f6633b --- /dev/null +++ b/7.1.208 @@ -0,0 +1,69 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.208 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.208 +Problem: On Alpha get an unaligned access error. +Solution: Store the dictitem pointer before using it. (Matthew Luckie) +Files: src/eval.c + + +*** ../vim-7.1.207/src/eval.c Sat Jan 5 13:34:01 2008 +--- src/eval.c Sat Jan 5 13:22:52 2008 +*************** +*** 3407,3412 **** +--- 3407,3413 ---- + hashtab_T *ht; + hashitem_T *hi; + char_u *varname; ++ dictitem_T *di; + + ht = find_var_ht(name, &varname); + if (ht != NULL && *varname != NUL) +*************** +*** 3414,3422 **** + hi = hash_find(ht, varname); + if (!HASHITEM_EMPTY(hi)) + { +! if (var_check_fixed(HI2DI(hi)->di_flags, name)) +! return FAIL; +! if (var_check_ro(HI2DI(hi)->di_flags, name)) + return FAIL; + delete_var(ht, hi); + return OK; +--- 3415,3423 ---- + hi = hash_find(ht, varname); + if (!HASHITEM_EMPTY(hi)) + { +! di = HI2DI(hi); +! if (var_check_fixed(di->di_flags, name) +! || var_check_ro(di->di_flags, name)) + return FAIL; + delete_var(ht, hi); + return OK; +*** ../vim-7.1.207/src/version.c Sat Jan 5 18:06:33 2008 +--- src/version.c Sat Jan 5 22:14:17 2008 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 208, + /**/ + +-- +ARTHUR: Bloody peasant! +DENNIS: Oh, what a give away. Did you here that, did you here that, eh? + That's what I'm on about -- did you see him repressing me, you saw it + didn't you? + 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 /// diff --git a/7.1.209 b/7.1.209 new file mode 100644 index 00000000..c62d2398 --- /dev/null +++ b/7.1.209 @@ -0,0 +1,71 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.209 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.209 +Problem: GTK: When using the netrw plugin and doing ":gui" Vim hangs. +Solution: Stop getting a selection after three seconds. This is a hack. +Files: src/gui_gtk_x11.c + + +*** ../vim-7.1.208/src/gui_gtk_x11.c Fri Oct 19 14:32:50 2007 +--- src/gui_gtk_x11.c Sun Jan 6 15:15:52 2008 +*************** +*** 6660,6665 **** +--- 6660,6666 ---- + unsigned i; + int nbytes; + char_u *buffer; ++ time_t start; + + for (i = 0; i < N_SELECTION_TARGETS; ++i) + { +*************** +*** 6670,6676 **** + cbd->gtk_sel_atom, target, + (guint32)GDK_CURRENT_TIME); + +! while (received_selection == RS_NONE) + gtk_main(); /* wait for selection_received_cb */ + + if (received_selection != RS_FAIL) +--- 6671,6681 ---- + cbd->gtk_sel_atom, target, + (guint32)GDK_CURRENT_TIME); + +! /* Hack: Wait up to three seconds for the selection. A hang was +! * noticed here when using the netrw plugin combined with ":gui" +! * during the FocusGained event. */ +! start = time(NULL); +! while (received_selection == RS_NONE && time(NULL) < start + 3) + gtk_main(); /* wait for selection_received_cb */ + + if (received_selection != RS_FAIL) +*** ../vim-7.1.208/src/version.c Sat Jan 5 22:15:21 2008 +--- src/version.c Sun Jan 6 15:14:48 2008 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 209, + /**/ + +-- +BLACK KNIGHT: I move for no man. +ARTHUR: So be it! + [hah] [parry thrust] + [ARTHUR chops the BLACK KNIGHT's left arm off] +ARTHUR: Now stand aside, worthy adversary. +BLACK KNIGHT: 'Tis but a scratch. + 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 /// diff --git a/7.1.210 b/7.1.210 new file mode 100644 index 00000000..aa92ccdd --- /dev/null +++ b/7.1.210 @@ -0,0 +1,74 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.210 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.210 +Problem: Listing mapping for 0xdb fails when 'encoding' is utf-8. (Tony + Mechelynck) +Solution: Recognize K_SPECIAL KS_EXTRA KE_CSI as a CSI byte. +Files: src/mbyte.c + + +*** ../vim-7.1.209/src/mbyte.c Fri Jan 4 17:46:46 2008 +--- src/mbyte.c Sun Jan 6 17:13:51 2008 +*************** +*** 2863,2877 **** + buf[m++] = K_SPECIAL; + n += 2; + } + # ifdef FEAT_GUI +! else if (str[n] == CSI + && str[n + 1] == KS_EXTRA + && str[n + 2] == (int)KE_CSI) + { + buf[m++] = CSI; + n += 2; + } +- # endif + else if (str[n] == K_SPECIAL + # ifdef FEAT_GUI + || str[n] == CSI +--- 2882,2898 ---- + buf[m++] = K_SPECIAL; + n += 2; + } ++ else if ((str[n] == K_SPECIAL + # ifdef FEAT_GUI +! || str[n] == CSI +! # endif +! ) + && str[n + 1] == KS_EXTRA + && str[n + 2] == (int)KE_CSI) + { + buf[m++] = CSI; + n += 2; + } + else if (str[n] == K_SPECIAL + # ifdef FEAT_GUI + || str[n] == CSI +*** ../vim-7.1.209/src/version.c Sun Jan 6 15:16:12 2008 +--- src/version.c Sun Jan 6 17:17:25 2008 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 210, + /**/ + +-- +ARTHUR: A scratch? Your arm's off! +BLACK KNIGHT: No, it isn't. +ARTHUR: Well, what's that then? +BLACK KNIGHT: I've had worse. + 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 /// diff --git a/7.1.211 b/7.1.211 new file mode 100644 index 00000000..38e3ea1d --- /dev/null +++ b/7.1.211 @@ -0,0 +1,748 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.211 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.211 +Problem: The matchparen plugin may take an unexpected amount of time, so + that it looks like Vim hangs. +Solution: Add a timeout to searchpair(), searchpairpos(), search() and + searchpos(). Use half a second timeout in the plugin. +Files: runtime/doc/eval.txt, runtime/plugin/matchparen.vim, src/edit.c, + src/eval.c, src/ex_cmds2.c, src/ex_docmd.c, src/normal.c, + src/proto/eval.pro, src/proto/ex_cmds2.pro, src/proto/search.pro, + src/search.c + + +*** ../vim-7.1.210/runtime/doc/eval.txt Sat Jan 5 13:34:01 2008 +--- runtime/doc/eval.txt Sun Jan 6 16:27:33 2008 +*************** +*** 1,4 **** +! *eval.txt* For Vim version 7.1. Last change: 2008 Jan 04 + + + VIM REFERENCE MANUAL by Bram Moolenaar +--- 1,4 ---- +! *eval.txt* For Vim version 7.1. Last change: 2008 Jan 06 + + + VIM REFERENCE MANUAL by Bram Moolenaar +*************** +*** 1733,1746 **** + repeat( {expr}, {count}) String repeat {expr} {count} times + resolve( {filename}) String get filename a shortcut points to + reverse( {list}) List reverse {list} in-place +! search( {pattern} [, {flags}]) Number search for {pattern} + searchdecl({name} [, {global} [, {thisblock}]]) + Number search for variable declaration +! searchpair( {start}, {middle}, {end} [, {flags} [, {skip} [, {stopline}]]]) + Number search for other end of start/end pair +! searchpairpos( {start}, {middle}, {end} [, {flags} [, {skip} [, {stopline}]]]) + List search for other end of start/end pair +! searchpos( {pattern} [, {flags} [, {stopline}]]) + List search for {pattern} + server2client( {clientid}, {string}) + Number send reply string +--- 1733,1747 ---- + repeat( {expr}, {count}) String repeat {expr} {count} times + resolve( {filename}) String get filename a shortcut points to + reverse( {list}) List reverse {list} in-place +! search( {pattern} [, {flags} [, {stopline} [, {timeout}]]]) +! Number search for {pattern} + searchdecl({name} [, {global} [, {thisblock}]]) + Number search for variable declaration +! searchpair( {start}, {middle}, {end} [, {flags} [, {skip} [...]]]) + Number search for other end of start/end pair +! searchpairpos( {start}, {middle}, {end} [, {flags} [, {skip} [...]]]) + List search for other end of start/end pair +! searchpos( {pattern} [, {flags} [, {stopline} [, {timeout}]]]) + List search for {pattern} + server2client( {clientid}, {string}) + Number send reply string +*************** +*** 4212,4218 **** + If you want a list to remain unmodified make a copy first: > + :let revlist = reverse(copy(mylist)) + +! search({pattern} [, {flags} [, {stopline}]]) *search()* + Search for regexp pattern {pattern}. The search starts at the + cursor position (you can use |cursor()| to set it). + +--- 4216,4222 ---- + If you want a list to remain unmodified make a copy first: > + :let revlist = reverse(copy(mylist)) + +! search({pattern} [, {flags} [, {stopline} [, {timeout}]]]) *search()* + Search for regexp pattern {pattern}. The search starts at the + cursor position (you can use |cursor()| to set it). + +*************** +*** 4240,4245 **** +--- 4244,4257 ---- + let end = search('END', '', line("w$")) + < When {stopline} is used and it is not zero this also implies + that the search does not wrap around the end of the file. ++ A zero value is equal to not giving the argument. ++ ++ When the {timeout} argument is given the search stops when ++ more than this many milli seconds have passed. Thus when ++ {timeout} is 500 the search stops after half a second. ++ The value must not be negative. A zero value is like not ++ giving the argument. ++ {only available when compiled with the +reltime feature} + + If there is no match a 0 is returned and the cursor doesn't + move. No error message is given. +*************** +*** 4302,4308 **** + endif + < + *searchpair()* +! searchpair({start}, {middle}, {end} [, {flags} [, {skip} [, {stopline}]]]) + Search for the match of a nested start-end pair. This can be + used to find the "endif" that matches an "if", while other + if/endif pairs in between are ignored. +--- 4314,4321 ---- + endif + < + *searchpair()* +! searchpair({start}, {middle}, {end} [, {flags} [, {skip} +! [, {stopline} [, {timeout}]]]]) + Search for the match of a nested start-end pair. This can be + used to find the "endif" that matches an "if", while other + if/endif pairs in between are ignored. +*************** +*** 4337,4343 **** + When evaluating {skip} causes an error the search is aborted + and -1 returned. + +! For {stopline} see |search()|. + + The value of 'ignorecase' is used. 'magic' is ignored, the + patterns are used like it's on. +--- 4350,4356 ---- + When evaluating {skip} causes an error the search is aborted + and -1 returned. + +! For {stopline} and {timeout} see |search()|. + + The value of 'ignorecase' is used. 'magic' is ignored, the + patterns are used like it's on. +*************** +*** 4383,4389 **** + \ 'synIDattr(synID(line("."), col("."), 0), "name") =~? "string"') + < + *searchpairpos()* +! searchpairpos({start}, {middle}, {end} [, {flags} [, {skip} [, {stopline}]]]) + Same as searchpair(), but returns a |List| with the line and + column position of the match. The first element of the |List| + is the line number and the second element is the byte index of +--- 4396,4403 ---- + \ 'synIDattr(synID(line("."), col("."), 0), "name") =~? "string"') + < + *searchpairpos()* +! searchpairpos({start}, {middle}, {end} [, {flags} [, {skip} +! [, {stopline} [, {timeout}]]]]) + Same as searchpair(), but returns a |List| with the line and + column position of the match. The first element of the |List| + is the line number and the second element is the byte index of +*************** +*** 4394,4400 **** + < + See |match-parens| for a bigger and more useful example. + +! searchpos({pattern} [, {flags} [, {stopline}]]) *searchpos()* + Same as |search()|, but returns a |List| with the line and + column position of the match. The first element of the |List| + is the line number and the second element is the byte index of +--- 4408,4414 ---- + < + See |match-parens| for a bigger and more useful example. + +! searchpos({pattern} [, {flags} [, {stopline} [, {timeout}]]]) *searchpos()* + Same as |search()|, but returns a |List| with the line and + column position of the match. The first element of the |List| + is the line number and the second element is the byte index of +*** ../vim-7.1.210/runtime/plugin/matchparen.vim Sat Aug 18 18:20:57 2007 +--- runtime/plugin/matchparen.vim Sun Jan 6 16:22:39 2008 +*************** +*** 1,6 **** + " Vim plugin for showing matching parens + " Maintainer: Bram Moolenaar +! " Last Change: 2007 Aug 8 + + " Exit quickly when: + " - this plugin was already loaded (or disabled) +--- 1,6 ---- + " Vim plugin for showing matching parens + " Maintainer: Bram Moolenaar +! " Last Change: 2008 Jan 06 + + " Exit quickly when: + " - this plugin was already loaded (or disabled) +*************** +*** 111,117 **** + \ '=~? "string\\|character\\|singlequote\\|comment"' + execute 'if' s_skip '| let s_skip = 0 | endif' + +! let [m_lnum, m_col] = searchpairpos(c, '', c2, s_flags, s_skip, stopline) + + if before > 0 + call winrestview(save_cursor) +--- 111,122 ---- + \ '=~? "string\\|character\\|singlequote\\|comment"' + execute 'if' s_skip '| let s_skip = 0 | endif' + +! try +! " Limit the search time to 500 msec to avoid a hang on very long lines. +! let [m_lnum, m_col] = searchpairpos(c, '', c2, s_flags, s_skip, stopline, 500) +! catch /E118/ +! let [m_lnum, m_col] = searchpairpos(c, '', c2, s_flags, s_skip, stopline) +! endtry + + if before > 0 + call winrestview(save_cursor) +*** ../vim-7.1.210/src/edit.c Wed Jan 2 22:08:43 2008 +--- src/edit.c Sun Jan 6 16:08:00 2008 +*************** +*** 4062,4068 **** + found_new_match = searchit(NULL, ins_buf, pos, + compl_direction, + compl_pattern, 1L, SEARCH_KEEP + SEARCH_NFMSG, +! RE_LAST, (linenr_T)0); + --msg_silent; + if (!compl_started) + { +--- 4062,4068 ---- + found_new_match = searchit(NULL, ins_buf, pos, + compl_direction, + compl_pattern, 1L, SEARCH_KEEP + SEARCH_NFMSG, +! RE_LAST, (linenr_T)0, NULL); + --msg_silent; + if (!compl_started) + { +*** ../vim-7.1.210/src/eval.c Sat Jan 5 22:15:21 2008 +--- src/eval.c Sun Jan 6 16:37:42 2008 +*************** +*** 7213,7223 **** + {"repeat", 2, 2, f_repeat}, + {"resolve", 1, 1, f_resolve}, + {"reverse", 1, 1, f_reverse}, +! {"search", 1, 3, f_search}, + {"searchdecl", 1, 3, f_searchdecl}, +! {"searchpair", 3, 6, f_searchpair}, +! {"searchpairpos", 3, 6, f_searchpairpos}, +! {"searchpos", 1, 3, f_searchpos}, + {"server2client", 2, 2, f_server2client}, + {"serverlist", 0, 0, f_serverlist}, + {"setbufvar", 3, 3, f_setbufvar}, +--- 7213,7223 ---- + {"repeat", 2, 2, f_repeat}, + {"resolve", 1, 1, f_resolve}, + {"reverse", 1, 1, f_reverse}, +! {"search", 1, 4, f_search}, + {"searchdecl", 1, 3, f_searchdecl}, +! {"searchpair", 3, 7, f_searchpair}, +! {"searchpairpos", 3, 7, f_searchpairpos}, +! {"searchpos", 1, 4, f_searchpos}, + {"server2client", 2, 2, f_server2client}, + {"serverlist", 0, 0, f_serverlist}, + {"setbufvar", 3, 3, f_setbufvar}, +*************** +*** 14020,14025 **** +--- 14020,14029 ---- + int dir; + int retval = 0; /* default: FAIL */ + long lnum_stop = 0; ++ proftime_T tm; ++ #ifdef FEAT_RELTIME ++ long time_limit = 0; ++ #endif + int options = SEARCH_KEEP; + int subpatnum; + +*************** +*** 14033,14047 **** + if (flags & SP_END) + options |= SEARCH_END; + +! /* Optional extra argument: line number to stop searching. */ +! if (argvars[1].v_type != VAR_UNKNOWN +! && argvars[2].v_type != VAR_UNKNOWN) + { + lnum_stop = get_tv_number_chk(&argvars[2], NULL); + if (lnum_stop < 0) + goto theend; + } + + /* + * This function does not accept SP_REPEAT and SP_RETCOUNT flags. + * Check to make sure only those flags are set. +--- 14037,14063 ---- + if (flags & SP_END) + options |= SEARCH_END; + +! /* Optional arguments: line number to stop searching and timeout. */ +! if (argvars[1].v_type != VAR_UNKNOWN && argvars[2].v_type != VAR_UNKNOWN) + { + lnum_stop = get_tv_number_chk(&argvars[2], NULL); + if (lnum_stop < 0) + goto theend; ++ #ifdef FEAT_RELTIME ++ if (argvars[3].v_type != VAR_UNKNOWN) ++ { ++ time_limit = get_tv_number_chk(&argvars[3], NULL); ++ if (time_limit < 0) ++ goto theend; ++ } ++ #endif + } + ++ #ifdef FEAT_RELTIME ++ /* Set the time limit, if there is one. */ ++ profile_setlimit(time_limit, &tm); ++ #endif ++ + /* + * This function does not accept SP_REPEAT and SP_RETCOUNT flags. + * Check to make sure only those flags are set. +*************** +*** 14057,14063 **** + + pos = save_cursor = curwin->w_cursor; + subpatnum = searchit(curwin, curbuf, &pos, dir, pat, 1L, +! options, RE_SEARCH, (linenr_T)lnum_stop); + if (subpatnum != FAIL) + { + if (flags & SP_SUBPAT) +--- 14073,14079 ---- + + pos = save_cursor = curwin->w_cursor; + subpatnum = searchit(curwin, curbuf, &pos, dir, pat, 1L, +! options, RE_SEARCH, (linenr_T)lnum_stop, &tm); + if (subpatnum != FAIL) + { + if (flags & SP_SUBPAT) +*************** +*** 14147,14152 **** +--- 14163,14169 ---- + char_u nbuf3[NUMBUFLEN]; + int retval = 0; /* default: FAIL */ + long lnum_stop = 0; ++ long time_limit = 0; + + /* Get the three pattern arguments: start, middle, end. */ + spat = get_tv_string_chk(&argvars[0]); +*************** +*** 14182,14194 **** + lnum_stop = get_tv_number_chk(&argvars[5], NULL); + if (lnum_stop < 0) + goto theend; + } + } + if (skip == NULL) + goto theend; /* type error */ + + retval = do_searchpair(spat, mpat, epat, dir, skip, flags, +! match_pos, lnum_stop); + + theend: + p_ws = save_p_ws; +--- 14199,14219 ---- + lnum_stop = get_tv_number_chk(&argvars[5], NULL); + if (lnum_stop < 0) + goto theend; ++ #ifdef FEAT_RELTIME ++ if (argvars[6].v_type != VAR_UNKNOWN) ++ { ++ time_limit = get_tv_number_chk(&argvars[6], NULL); ++ if (time_limit < 0) ++ goto theend; ++ } ++ #endif + } + } + if (skip == NULL) + goto theend; /* type error */ + + retval = do_searchpair(spat, mpat, epat, dir, skip, flags, +! match_pos, lnum_stop, time_limit); + + theend: + p_ws = save_p_ws; +*************** +*** 14240,14246 **** + * Returns 0 or -1 for no match, + */ + long +! do_searchpair(spat, mpat, epat, dir, skip, flags, match_pos, lnum_stop) + char_u *spat; /* start pattern */ + char_u *mpat; /* middle pattern */ + char_u *epat; /* end pattern */ +--- 14265,14272 ---- + * Returns 0 or -1 for no match, + */ + long +! do_searchpair(spat, mpat, epat, dir, skip, flags, match_pos, +! lnum_stop, time_limit) + char_u *spat; /* start pattern */ + char_u *mpat; /* middle pattern */ + char_u *epat; /* end pattern */ +*************** +*** 14249,14254 **** +--- 14275,14281 ---- + int flags; /* SP_SETPCMARK and other SP_ values */ + pos_T *match_pos; + linenr_T lnum_stop; /* stop at this line if not zero */ ++ long time_limit; /* stop after this many msec */ + { + char_u *save_cpo; + char_u *pat, *pat2 = NULL, *pat3 = NULL; +*************** +*** 14263,14273 **** +--- 14290,14306 ---- + int nest = 1; + int err; + int options = SEARCH_KEEP; ++ proftime_T tm; + + /* Make 'cpoptions' empty, the 'l' flag should not be used here. */ + save_cpo = p_cpo; + p_cpo = (char_u *)""; + ++ #ifdef FEAT_RELTIME ++ /* Set the time limit, if there is one. */ ++ profile_setlimit(time_limit, &tm); ++ #endif ++ + /* Make two search patterns: start/end (pat2, for in nested pairs) and + * start/middle/end (pat3, for the top pair). */ + pat2 = alloc((unsigned)(STRLEN(spat) + STRLEN(epat) + 15)); +*************** +*** 14291,14297 **** + for (;;) + { + n = searchit(curwin, curbuf, &pos, dir, pat, 1L, +! options, RE_SEARCH, lnum_stop); + if (n == FAIL || (firstpos.lnum != 0 && equalpos(pos, firstpos))) + /* didn't find it or found the first match again: FAIL */ + break; +--- 14324,14330 ---- + for (;;) + { + n = searchit(curwin, curbuf, &pos, dir, pat, 1L, +! options, RE_SEARCH, lnum_stop, &tm); + if (n == FAIL || (firstpos.lnum != 0 && equalpos(pos, firstpos))) + /* didn't find it or found the first match again: FAIL */ + break; +*** ../vim-7.1.210/src/ex_cmds2.c Fri Jan 4 16:00:10 2008 +--- src/ex_cmds2.c Sun Jan 6 18:22:28 2008 +*************** +*** 895,913 **** + sprintf(buf, "%10.6lf", (double)tm->QuadPart / (double)fr.QuadPart); + # else + sprintf(buf, "%3ld.%06ld", (long)tm->tv_sec, (long)tm->tv_usec); +! #endif + return buf; + } + +! # endif /* FEAT_PROFILE || FEAT_RELTIME */ + +- # if defined(FEAT_PROFILE) || defined(PROTO) + /* +! * Functions for profiling. + */ +! static void script_do_profile __ARGS((scriptitem_T *si)); +! static void script_dump_profile __ARGS((FILE *fd)); +! static proftime_T prof_wait_time; + + /* + * Set the time in "tm" to zero. +--- 895,955 ---- + sprintf(buf, "%10.6lf", (double)tm->QuadPart / (double)fr.QuadPart); + # else + sprintf(buf, "%3ld.%06ld", (long)tm->tv_sec, (long)tm->tv_usec); +! # endif + return buf; + } + +! /* +! * Put the time "msec" past now in "tm". +! */ +! void +! profile_setlimit(msec, tm) +! long msec; +! proftime_T *tm; +! { +! if (msec <= 0) /* no limit */ +! profile_zero(tm); +! else +! { +! # ifdef WIN3264 +! LARGE_INTEGER fr; +! +! QueryPerformanceCounter(tm); +! QueryPerformanceFrequency(&fr); +! tm->QuadPart += (double)msec / 1000.0 * (double)fr.QuadPart; +! # else +! long usec; +! +! gettimeofday(tm, NULL); +! usec = (long)tm->tv_usec + (long)msec * 1000; +! tm->tv_usec = usec % 1000000L; +! tm->tv_sec += usec / 1000000L; +! # endif +! } +! } + + /* +! * Return TRUE if the current time is past "tm". + */ +! int +! profile_passed_limit(tm) +! proftime_T *tm; +! { +! proftime_T now; +! +! # ifdef WIN3264 +! if (tm->QuadPart == 0) /* timer was not set */ +! return FALSE; +! QueryPerformanceCounter(&now); +! return (now.QuadPart > tm->QuadPart); +! # else +! if (tm->tv_sec == 0) /* timer was not set */ +! return FALSE; +! gettimeofday(&now, NULL); +! return (now.tv_sec > tm->tv_sec +! || (now.tv_sec == tm->tv_sec && now.tv_usec > tm->tv_usec)); +! # endif +! } + + /* + * Set the time in "tm" to zero. +*************** +*** 923,928 **** +--- 965,980 ---- + tm->tv_sec = 0; + # endif + } ++ ++ # endif /* FEAT_PROFILE || FEAT_RELTIME */ ++ ++ # if defined(FEAT_PROFILE) || defined(PROTO) ++ /* ++ * Functions for profiling. ++ */ ++ static void script_do_profile __ARGS((scriptitem_T *si)); ++ static void script_dump_profile __ARGS((FILE *fd)); ++ static proftime_T prof_wait_time; + + /* + * Add the time "tm2" to "tm". +*** ../vim-7.1.210/src/ex_docmd.c Fri Jan 4 16:00:10 2008 +--- src/ex_docmd.c Sun Jan 6 16:08:29 2008 +*************** +*** 3979,3985 **** + *cmd == '?' ? BACKWARD : FORWARD, + (char_u *)"", 1L, + SEARCH_MSG + SEARCH_START, +! i, (linenr_T)0) != FAIL) + lnum = pos.lnum; + else + { +--- 3980,3986 ---- + *cmd == '?' ? BACKWARD : FORWARD, + (char_u *)"", 1L, + SEARCH_MSG + SEARCH_START, +! i, (linenr_T)0, NULL) != FAIL) + lnum = pos.lnum; + else + { +*** ../vim-7.1.210/src/normal.c Sat Jan 5 13:34:01 2008 +--- src/normal.c Sun Jan 6 16:08:54 2008 +*************** +*** 4194,4200 **** + for (;;) + { + t = searchit(curwin, curbuf, &curwin->w_cursor, FORWARD, +! pat, 1L, searchflags, RE_LAST, (linenr_T)0); + if (curwin->w_cursor.lnum >= old_pos.lnum) + t = FAIL; /* match after start is failure too */ + +--- 4194,4200 ---- + for (;;) + { + t = searchit(curwin, curbuf, &curwin->w_cursor, FORWARD, +! pat, 1L, searchflags, RE_LAST, (linenr_T)0, NULL); + if (curwin->w_cursor.lnum >= old_pos.lnum) + t = FAIL; /* match after start is failure too */ + +*** ../vim-7.1.210/src/proto/eval.pro Sun May 6 15:18:09 2007 +--- src/proto/eval.pro Sun Jan 6 15:55:47 2008 +*************** +*** 54,60 **** + long get_dict_number __ARGS((dict_T *d, char_u *key)); + char_u *get_function_name __ARGS((expand_T *xp, int idx)); + char_u *get_expr_name __ARGS((expand_T *xp, int idx)); +! long do_searchpair __ARGS((char_u *spat, char_u *mpat, char_u *epat, int dir, char_u *skip, int flags, pos_T *match_pos, linenr_T lnum_stop)); + void set_vim_var_nr __ARGS((int idx, long val)); + long get_vim_var_nr __ARGS((int idx)); + char_u *get_vim_var_str __ARGS((int idx)); +--- 54,60 ---- + long get_dict_number __ARGS((dict_T *d, char_u *key)); + char_u *get_function_name __ARGS((expand_T *xp, int idx)); + char_u *get_expr_name __ARGS((expand_T *xp, int idx)); +! long do_searchpair __ARGS((char_u *spat, char_u *mpat, char_u *epat, int dir, char_u *skip, int flags, pos_T *match_pos, linenr_T lnum_stop, long time_limit)); + void set_vim_var_nr __ARGS((int idx, long val)); + long get_vim_var_nr __ARGS((int idx)); + char_u *get_vim_var_str __ARGS((int idx)); +*** ../vim-7.1.210/src/proto/ex_cmds2.pro Sat May 5 20:21:13 2007 +--- src/proto/ex_cmds2.pro Sun Jan 6 16:42:24 2008 +*************** +*** 14,19 **** +--- 14,21 ---- + void profile_end __ARGS((proftime_T *tm)); + void profile_sub __ARGS((proftime_T *tm, proftime_T *tm2)); + char *profile_msg __ARGS((proftime_T *tm)); ++ void profile_setlimit __ARGS((long msec, proftime_T *tm)); ++ int profile_passed_limit __ARGS((proftime_T *tm)); + void profile_zero __ARGS((proftime_T *tm)); + void profile_add __ARGS((proftime_T *tm, proftime_T *tm2)); + void profile_self __ARGS((proftime_T *self, proftime_T *total, proftime_T *children)); +*** ../vim-7.1.210/src/proto/search.pro Wed Aug 8 22:48:16 2007 +--- src/proto/search.pro Sun Jan 6 16:11:53 2008 +*************** +*** 10,16 **** + void reset_search_dir __ARGS((void)); + void set_last_search_pat __ARGS((char_u *s, int idx, int magic, int setlast)); + void last_pat_prog __ARGS((regmmatch_T *regmatch)); +! int searchit __ARGS((win_T *win, buf_T *buf, pos_T *pos, int dir, char_u *pat, long count, int options, int pat_use, linenr_T stop_lnum)); + int do_search __ARGS((oparg_T *oap, int dirc, char_u *pat, long count, int options)); + int search_for_exact_line __ARGS((buf_T *buf, pos_T *pos, int dir, char_u *pat)); + int searchc __ARGS((cmdarg_T *cap, int t_cmd)); +--- 10,16 ---- + void reset_search_dir __ARGS((void)); + void set_last_search_pat __ARGS((char_u *s, int idx, int magic, int setlast)); + void last_pat_prog __ARGS((regmmatch_T *regmatch)); +! int searchit __ARGS((win_T *win, buf_T *buf, pos_T *pos, int dir, char_u *pat, long count, int options, int pat_use, linenr_T stop_lnum, proftime_T *tm)); + int do_search __ARGS((oparg_T *oap, int dirc, char_u *pat, long count, int options)); + int search_for_exact_line __ARGS((buf_T *buf, pos_T *pos, int dir, char_u *pat)); + int searchc __ARGS((cmdarg_T *cap, int t_cmd)); +*** ../vim-7.1.210/src/search.c Tue Jan 1 15:42:45 2008 +--- src/search.c Sun Jan 6 18:23:37 2008 +*************** +*** 494,501 **** + * When FEAT_EVAL is defined, returns the index of the first matching + * subpattern plus one; one if there was none. + */ + int +! searchit(win, buf, pos, dir, pat, count, options, pat_use, stop_lnum) + win_T *win; /* window to search in; can be NULL for a + buffer without a window! */ + buf_T *buf; +--- 494,502 ---- + * When FEAT_EVAL is defined, returns the index of the first matching + * subpattern plus one; one if there was none. + */ ++ /*ARGSUSED*/ + int +! searchit(win, buf, pos, dir, pat, count, options, pat_use, stop_lnum, tm) + win_T *win; /* window to search in; can be NULL for a + buffer without a window! */ + buf_T *buf; +*************** +*** 506,511 **** +--- 507,513 ---- + int options; + int pat_use; /* which pattern to use when "pat" is empty */ + linenr_T stop_lnum; /* stop after this line number when != 0 */ ++ proftime_T *tm; /* timeout limit or NULL */ + { + int found; + linenr_T lnum; /* no init to shut up Apollo cc */ +*************** +*** 594,599 **** +--- 596,606 ---- + if (stop_lnum != 0 && (dir == FORWARD + ? lnum > stop_lnum : lnum < stop_lnum)) + break; ++ #ifdef FEAT_RELTIME ++ /* Stop after passing the "tm" time limit. */ ++ if (tm != NULL && profile_passed_limit(tm)) ++ break; ++ #endif + + /* + * Look for a match somewhere in line "lnum". +*************** +*** 1249,1255 **** + (SEARCH_KEEP + SEARCH_PEEK + SEARCH_HIS + + SEARCH_MSG + SEARCH_START + + ((pat != NULL && *pat == ';') ? 0 : SEARCH_NOOF))), +! RE_LAST, (linenr_T)0); + + if (dircp != NULL) + *dircp = dirc; /* restore second '/' or '?' for normal_cmd() */ +--- 1256,1262 ---- + (SEARCH_KEEP + SEARCH_PEEK + SEARCH_HIS + + SEARCH_MSG + SEARCH_START + + ((pat != NULL && *pat == ';') ? 0 : SEARCH_NOOF))), +! RE_LAST, (linenr_T)0, NULL); + + if (dircp != NULL) + *dircp = dirc; /* restore second '/' or '?' for normal_cmd() */ +*************** +*** 3780,3786 **** + if (do_searchpair((char_u *)"<[^ \t>/!]\\+\\%(\\_s\\_[^>]\\{-}[^/]>\\|$\\|\\_s\\=>\\)", + (char_u *)"", + (char_u *)"]*>", BACKWARD, (char_u *)"", 0, +! NULL, (linenr_T)0) <= 0) + { + curwin->w_cursor = old_pos; + goto theend; +--- 3787,3793 ---- + if (do_searchpair((char_u *)"<[^ \t>/!]\\+\\%(\\_s\\_[^>]\\{-}[^/]>\\|$\\|\\_s\\=>\\)", + (char_u *)"", + (char_u *)"]*>", BACKWARD, (char_u *)"", 0, +! NULL, (linenr_T)0, 0L) <= 0) + { + curwin->w_cursor = old_pos; + goto theend; +*************** +*** 3814,3820 **** + sprintf((char *)epat, "\\c", len, p); + + r = do_searchpair(spat, (char_u *)"", epat, FORWARD, (char_u *)"", +! 0, NULL, (linenr_T)0); + + vim_free(spat); + vim_free(epat); +--- 3821,3827 ---- + sprintf((char *)epat, "\\c", len, p); + + r = do_searchpair(spat, (char_u *)"", epat, FORWARD, (char_u *)"", +! 0, NULL, (linenr_T)0, 0L); + + vim_free(spat); + vim_free(epat); +*** ../vim-7.1.210/src/version.c Sun Jan 6 17:18:16 2008 +--- src/version.c Sun Jan 6 20:00:03 2008 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 211, + /**/ + +-- +No letters of the alphabet were harmed in the creation of this message. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.212 b/7.1.212 new file mode 100644 index 00000000..a9aa7f55 --- /dev/null +++ b/7.1.212 @@ -0,0 +1,47 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.212 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.212 +Problem: Accessing a byte before a line. +Solution: Check that the column is 1 or more. (Dominuque Pelle) +Files: src/edit.c + + +*** ../vim-7.1.211/src/edit.c Sun Jan 6 20:05:36 2008 +--- src/edit.c Mon Jan 7 22:31:36 2008 +*************** +*** 8452,8457 **** +--- 8452,8458 ---- + if ( mode == BACKSPACE_CHAR + && ((p_sta && in_indent) + || (curbuf->b_p_sts != 0 ++ && curwin->w_cursor.col > 0 + && (*(ml_get_cursor() - 1) == TAB + || (*(ml_get_cursor() - 1) == ' ' + && (!*inserted_space_p +*** ../vim-7.1.211/src/version.c Sun Jan 6 20:05:36 2008 +--- src/version.c Wed Jan 9 10:11:49 2008 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 212, + /**/ + +-- +CRONE: Who sent you? +ARTHUR: The Knights Who Say Ni! +CRONE: Aaaagh! (she looks around in rear) No! We have no shrubberies here. + "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 /// diff --git a/7.1.213 b/7.1.213 new file mode 100644 index 00000000..aee3248d --- /dev/null +++ b/7.1.213 @@ -0,0 +1,57 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.213 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.213 +Problem: A ":tabedit" command that results in the "swap file exists" dialog + and selecting "abort" doesn't close the new tab. (Al Budden) +Solution: Pass "old_curwin" to do_exedit(). +Files: src/ex_docmd.c + + +*** ../vim-7.1.212/src/ex_docmd.c Sun Jan 6 20:05:36 2008 +--- src/ex_docmd.c Wed Jan 9 20:11:13 2008 +*************** +*** 7126,7132 **** + : eap->addr_count == 0 ? 0 + : (int)eap->line2 + 1) != FAIL) + { +! do_exedit(eap, NULL); + + /* set the alternate buffer for the window we came from */ + if (curwin != old_curwin +--- 7127,7133 ---- + : eap->addr_count == 0 ? 0 + : (int)eap->line2 + 1) != FAIL) + { +! do_exedit(eap, old_curwin); + + /* set the alternate buffer for the window we came from */ + if (curwin != old_curwin +*** ../vim-7.1.212/src/version.c Wed Jan 9 10:13:24 2008 +--- src/version.c Wed Jan 9 20:29:09 2008 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 213, + /**/ + +-- +Q: What do you call a fish without an eye? +A: fsh! +Q: What do you call a deer with no eyes? +A: no eye deer. +Q: What do you call a deer with no eyes and no legs? +A: still no eye deer. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.214 b/7.1.214 new file mode 100644 index 00000000..83786675 --- /dev/null +++ b/7.1.214 @@ -0,0 +1,266 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.214 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.214 +Problem: ":1s/g\n\zs1//" deletes characters from the first line. (A Politz) +Solution: Start replacing in the line where the match starts. +Files: src/ex_cmds.c + + +*** ../vim-7.1.213/src/ex_cmds.c Fri Jan 4 14:52:14 2008 +--- src/ex_cmds.c Wed Jan 9 22:32:26 2008 +*************** +*** 4200,4206 **** + linenr_T old_line_count = curbuf->b_ml.ml_line_count; + linenr_T line2; + long nmatch; /* number of lines in match */ +- linenr_T sub_firstlnum; /* nr of first sub line */ + char_u *sub_firstline; /* allocated copy of first sub line */ + int endcolumn = FALSE; /* cursor in last column when done */ + pos_T old_cursor = curwin->w_cursor; +--- 4200,4205 ---- +*************** +*** 4447,4453 **** + #endif + ); ++lnum) + { +- sub_firstlnum = lnum; + nmatch = vim_regexec_multi(®match, curwin, curbuf, lnum, (colnr_T)0); + if (nmatch) + { +--- 4446,4451 ---- +*************** +*** 4463,4468 **** +--- 4461,4467 ---- + long nmatch_tl = 0; /* nr of lines matched below lnum */ + int do_again; /* do it again after joining lines */ + int skip_match = FALSE; ++ linenr_T sub_firstlnum; /* nr of first sub line */ + + /* + * The new text is build up step by step, to avoid too much +*************** +*** 4482,4489 **** + * far. + * new_end The new text, where to append new text. + * +! * lnum The line number where we were looking for the +! * first match in the old line. + * sub_firstlnum The line number in the buffer where to look + * for a match. Can be different from "lnum" + * when the pattern or substitute string contains +--- 4481,4490 ---- + * far. + * new_end The new text, where to append new text. + * +! * lnum The line number where we found the start of +! * the match. Can be below the line we searched +! * when there is a \n before a \zs in the +! * pattern. + * sub_firstlnum The line number in the buffer where to look + * for a match. Can be different from "lnum" + * when the pattern or substitute string contains +*************** +*** 4507,4518 **** + * updating the screen or handling a multi-line match. The "old_" + * pointers point into this copy. + */ +! sub_firstline = vim_strsave(ml_get(sub_firstlnum)); +! if (sub_firstline == NULL) +! { +! vim_free(new_start); +! goto outofmem; +! } + copycol = 0; + matchcol = 0; + +--- 4508,4514 ---- + * updating the screen or handling a multi-line match. The "old_" + * pointers point into this copy. + */ +! sub_firstlnum = lnum; + copycol = 0; + matchcol = 0; + +*************** +*** 4533,4538 **** +--- 4529,4556 ---- + */ + for (;;) + { ++ /* Advance "lnum" to the line where the match starts. The ++ * match does not start in the first line when there is a line ++ * break before \zs. */ ++ if (regmatch.startpos[0].lnum > 0) ++ { ++ lnum += regmatch.startpos[0].lnum; ++ sub_firstlnum += regmatch.startpos[0].lnum; ++ nmatch -= regmatch.startpos[0].lnum; ++ vim_free(sub_firstline); ++ sub_firstline = NULL; ++ } ++ ++ if (sub_firstline == NULL) ++ { ++ sub_firstline = vim_strsave(ml_get(sub_firstlnum)); ++ if (sub_firstline == NULL) ++ { ++ vim_free(new_start); ++ goto outofmem; ++ } ++ } ++ + /* Save the line number of the last change for the final + * cursor position (just like Vi). */ + curwin->w_cursor.lnum = lnum; +*************** +*** 4638,4644 **** + temp = RedrawingDisabled; + RedrawingDisabled = 0; + +! search_match_lines = regmatch.endpos[0].lnum; + search_match_endcol = regmatch.endpos[0].col; + highlight_match = TRUE; + +--- 4656,4663 ---- + temp = RedrawingDisabled; + RedrawingDisabled = 0; + +! search_match_lines = regmatch.endpos[0].lnum +! - regmatch.startpos[0].lnum; + search_match_endcol = regmatch.endpos[0].col; + highlight_match = TRUE; + +*************** +*** 4749,4755 **** + * 3. substitute the string. + */ + /* get length of substitution part */ +! sublen = vim_regsub_multi(®match, sub_firstlnum, + sub, sub_firstline, FALSE, p_magic, TRUE); + + /* When the match included the "$" of the last line it may +--- 4768,4775 ---- + * 3. substitute the string. + */ + /* get length of substitution part */ +! sublen = vim_regsub_multi(®match, +! sub_firstlnum - regmatch.startpos[0].lnum, + sub, sub_firstline, FALSE, p_magic, TRUE); + + /* When the match included the "$" of the last line it may +*************** +*** 4819,4825 **** + mch_memmove(new_end, sub_firstline + copycol, (size_t)i); + new_end += i; + +! (void)vim_regsub_multi(®match, sub_firstlnum, + sub, new_end, TRUE, p_magic, TRUE); + sub_nsubs++; + did_sub = TRUE; +--- 4839,4846 ---- + mch_memmove(new_end, sub_firstline + copycol, (size_t)i); + new_end += i; + +! (void)vim_regsub_multi(®match, +! sub_firstlnum - regmatch.startpos[0].lnum, + sub, new_end, TRUE, p_magic, TRUE); + sub_nsubs++; + did_sub = TRUE; +*************** +*** 4908,4917 **** + skip: + /* We already know that we did the last subst when we are at + * the end of the line, except that a pattern like +! * "bar\|\nfoo" may match at the NUL. */ + lastone = (skip_match + || got_int + || got_quit + || !(do_all || do_again) + || (sub_firstline[matchcol] == NUL && nmatch <= 1 + && !re_multiline(regmatch.regprog))); +--- 4929,4941 ---- + skip: + /* We already know that we did the last subst when we are at + * the end of the line, except that a pattern like +! * "bar\|\nfoo" may match at the NUL. "lnum" can be below +! * "line2" when there is a \zs in the pattern after a line +! * break. */ + lastone = (skip_match + || got_int + || got_quit ++ || lnum > line2 + || !(do_all || do_again) + || (sub_firstline[matchcol] == NUL && nmatch <= 1 + && !re_multiline(regmatch.regprog))); +*************** +*** 4926,4937 **** + * When asking the user we like to show the already replaced + * text, but don't do it when "\<@=" or "\<@!" is used, it + * changes what matches. + */ + if (lastone + || (do_ask && !re_lookbehind(regmatch.regprog)) + || nmatch_tl > 0 + || (nmatch = vim_regexec_multi(®match, curwin, +! curbuf, sub_firstlnum, matchcol)) == 0) + { + if (new_start != NULL) + { +--- 4950,4964 ---- + * When asking the user we like to show the already replaced + * text, but don't do it when "\<@=" or "\<@!" is used, it + * changes what matches. ++ * When the match starts below where we start searching also ++ * need to replace the line first (using \zs after \n). + */ + if (lastone + || (do_ask && !re_lookbehind(regmatch.regprog)) + || nmatch_tl > 0 + || (nmatch = vim_regexec_multi(®match, curwin, +! curbuf, sub_firstlnum, matchcol)) == 0 +! || regmatch.startpos[0].lnum > 0) + { + if (new_start != NULL) + { +*************** +*** 5001,5007 **** +--- 5028,5041 ---- + * 5. break if there isn't another match in this line + */ + if (nmatch <= 0) ++ { ++ /* If the match found didn't start where we were ++ * searching, do the next search in the line where we ++ * found the match. */ ++ if (nmatch == -1) ++ lnum -= regmatch.startpos[0].lnum; + break; ++ } + } + + line_breakcheck(); +*** ../vim-7.1.213/src/version.c Wed Jan 9 20:29:51 2008 +--- src/version.c Wed Jan 9 22:37:47 2008 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 214, + /**/ + +-- +Q: What's orange and sounds like a parrot? +A: A carrot + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.215 b/7.1.215 new file mode 100644 index 00000000..ea4a830a --- /dev/null +++ b/7.1.215 @@ -0,0 +1,198 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.215 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.215 +Problem: It is difficult to figure out what syntax items are nested at a + certain position. +Solution: Add the synstack() function. +Files: runtime/doc/eval.txt, src/eval.c, src/proto/syntax.pro, + src/syntax.c + + +*** ../vim-7.1.214/runtime/doc/eval.txt Sun Jan 6 20:05:36 2008 +--- runtime/doc/eval.txt Thu Jan 10 22:20:31 2008 +*************** +*** 1,4 **** +! *eval.txt* For Vim version 7.1. Last change: 2008 Jan 06 + + + VIM REFERENCE MANUAL by Bram Moolenaar +--- 1,4 ---- +! *eval.txt* For Vim version 7.1. Last change: 2008 Jan 10 + + + VIM REFERENCE MANUAL by Bram Moolenaar +*************** +*** 1786,1791 **** +--- 1786,1792 ---- + synIDattr( {synID}, {what} [, {mode}]) + String attribute {what} of syntax ID {synID} + synIDtrans( {synID}) Number translated syntax ID of {synID} ++ synstack({lnum}, {col}) List stack of syntax IDs at {lnum} and {col} + system( {expr} [, {input}]) String output of shell command/filter {expr} + tabpagebuflist( [{arg}]) List list of buffer numbers in tab page + tabpagenr( [{arg}]) Number number of current or last tab page +*************** +*** 4962,4967 **** +--- 4966,4989 ---- + highlight the character. Highlight links given with + ":highlight link" are followed. + ++ synstack({lnum}, {col}) *synstack()* ++ Return a |List|, which is the stack of syntax items at the ++ position {lnum} and {col} in the current window. Each item in ++ the List is an ID like what |synID()| returns. ++ The stack is the situation in between the character at "col" ++ and the next character. Note that a region of only one ++ character will not show up, it only exists inside that ++ character, not in between characters. ++ The first item in the List is the outer region, following are ++ items contained in that one. The last one is what |synID()| ++ returns, unless not the whole item is highlighted or it is a ++ transparent item. ++ This function is useful for debugging a syntax file. ++ Example that shows the syntax stack under the cursor: > ++ for id in synstack(line("."), col(".")) ++ echo synIDattr(id, "name") ++ endfor ++ + system({expr} [, {input}]) *system()* *E677* + Get the output of the shell command {expr}. + When {input} is given, this string is written to a file and +*** ../vim-7.1.214/src/eval.c Sun Jan 6 20:05:36 2008 +--- src/eval.c Wed Jan 9 13:42:56 2008 +*************** +*** 651,656 **** +--- 651,657 ---- + static void f_synID __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_synIDattr __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_synIDtrans __ARGS((typval_T *argvars, typval_T *rettv)); ++ static void f_synstack __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_system __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_tabpagebuflist __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_tabpagenr __ARGS((typval_T *argvars, typval_T *rettv)); +*************** +*** 7252,7257 **** +--- 7253,7259 ---- + {"synID", 3, 3, f_synID}, + {"synIDattr", 2, 3, f_synIDattr}, + {"synIDtrans", 1, 1, f_synIDtrans}, ++ {"synstack", 2, 2, f_synstack}, + {"system", 1, 2, f_system}, + {"tabpagebuflist", 0, 1, f_tabpagebuflist}, + {"tabpagenr", 0, 1, f_tabpagenr}, +*************** +*** 15843,15848 **** +--- 15845,15890 ---- + id = 0; + + rettv->vval.v_number = id; ++ } ++ ++ /* ++ * "synstack(lnum, col)" function ++ */ ++ /*ARGSUSED*/ ++ static void ++ f_synstack(argvars, rettv) ++ typval_T *argvars; ++ typval_T *rettv; ++ { ++ #ifdef FEAT_SYN_HL ++ long lnum; ++ long col; ++ int i; ++ int id; ++ #endif ++ ++ rettv->v_type = VAR_LIST; ++ rettv->vval.v_list = NULL; ++ ++ #ifdef FEAT_SYN_HL ++ lnum = get_tv_lnum(argvars); /* -1 on type error */ ++ col = get_tv_number(&argvars[1]) - 1; /* -1 on type error */ ++ ++ if (lnum >= 1 && lnum <= curbuf->b_ml.ml_line_count ++ && col >= 0 && col < (long)STRLEN(ml_get(lnum)) ++ && rettv_list_alloc(rettv) != FAIL) ++ { ++ (void)syn_get_id(curwin, lnum, (colnr_T)col, FALSE, NULL); ++ for (i = 0; ; ++i) ++ { ++ id = syn_get_stack_item(i); ++ if (id < 0) ++ break; ++ if (list_append_number(rettv->vval.v_list, id) == FAIL) ++ break; ++ } ++ } ++ #endif + } + + /* +*** ../vim-7.1.214/src/proto/syntax.pro Tue Jul 24 14:32:44 2007 +--- src/proto/syntax.pro Wed Jan 9 13:38:20 2008 +*************** +*** 13,18 **** +--- 13,19 ---- + void set_context_in_syntax_cmd __ARGS((expand_T *xp, char_u *arg)); + char_u *get_syntax_name __ARGS((expand_T *xp, int idx)); + int syn_get_id __ARGS((win_T *wp, long lnum, colnr_T col, int trans, int *spellp)); ++ int syn_get_stack_item __ARGS((int i)); + int syn_get_foldlevel __ARGS((win_T *wp, long lnum)); + void init_highlight __ARGS((int both, int reset)); + int load_colors __ARGS((char_u *name)); +*** ../vim-7.1.214/src/syntax.c Sun Oct 7 15:21:31 2007 +--- src/syntax.c Wed Jan 9 15:17:47 2008 +*************** +*** 6104,6109 **** +--- 6102,6123 ---- + + return (trans ? current_trans_id : current_id); + } ++ ++ #if defined(FEAT_EVAL) || defined(PROTO) ++ /* ++ * Return the syntax ID at position "i" in the current stack. ++ * The caller must have called syn_get_id() before to fill the stack. ++ * Returns -1 when "i" is out of range. ++ */ ++ int ++ syn_get_stack_item(i) ++ int i; ++ { ++ if (i >= current_state.ga_len ) ++ return -1; ++ return CUR_STATE(i).si_id; ++ } ++ #endif + + #if defined(FEAT_FOLDING) || defined(PROTO) + /* +*** ../vim-7.1.214/src/version.c Wed Jan 9 22:39:55 2008 +--- src/version.c Thu Jan 10 22:17:38 2008 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 215, + /**/ + +-- +TALL KNIGHT: We are now no longer the Knights Who Say Ni! +ONE KNIGHT: Ni! +OTHERS: Sh! +ONE KNIGHT: (whispers) Sorry. + "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 /// diff --git a/7.1.216 b/7.1.216 new file mode 100644 index 00000000..392d5d56 --- /dev/null +++ b/7.1.216 @@ -0,0 +1,55 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.216 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.216 +Problem: Variants of --remote-tab are not mentioned for "vim --help". +Solution: Display optional -wait and -silent. +Files: src/main.c + + +*** ../vim-7.1.215/src/main.c Tue Sep 25 17:54:41 2007 +--- src/main.c Sun Dec 30 15:09:11 2007 +*************** +*** 3081,3087 **** + main_msg(_("--remote-wait As --remote but wait for files to have been edited")); + main_msg(_("--remote-wait-silent Same, don't complain if there is no server")); + # ifdef FEAT_WINDOWS +! main_msg(_("--remote-tab As --remote but open tab page for each file")); + # endif + main_msg(_("--remote-send \tSend to a Vim server and exit")); + main_msg(_("--remote-expr \tEvaluate in a Vim server and print result")); +--- 3081,3087 ---- + main_msg(_("--remote-wait As --remote but wait for files to have been edited")); + main_msg(_("--remote-wait-silent Same, don't complain if there is no server")); + # ifdef FEAT_WINDOWS +! main_msg(_("--remote-tab[-wait][-silent] As --remote but use tab page per file")); + # endif + main_msg(_("--remote-send \tSend to a Vim server and exit")); + main_msg(_("--remote-expr \tEvaluate in a Vim server and print result")); +*** ../vim-7.1.215/src/version.c Thu Jan 10 22:23:22 2008 +--- src/version.c Fri Jan 11 20:25:14 2008 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 216, + /**/ + +-- +TIM: But follow only if you are men of valour. For the entrance to this cave + is guarded by a monster, a creature so foul and cruel that no man yet has + fought with it and lived. Bones of full fifty men lie strewn about its + lair ... + "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 /// diff --git a/7.1.217 b/7.1.217 new file mode 100644 index 00000000..de40e64c --- /dev/null +++ b/7.1.217 @@ -0,0 +1,228 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.217 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.217 +Problem: The "help-tags" tag may be missing from runtime/doc/tags when it + was generated during "make install". +Solution: Add the "++t" argument to ":helptags" to force adding the tag. +Files: runtime/doc/Makefile, runtime/doc/various.txt, src/ex_cmds.c, + src/ex_cmds.h + + +*** ../vim-7.1.216/runtime/doc/Makefile Sat May 5 19:14:15 2007 +--- runtime/doc/Makefile Fri Jan 11 20:55:34 2008 +*************** +*** 301,307 **** + # Use Vim to generate the tags file. Can only be used when Vim has been + # compiled and installed. Supports multiple languages. + vimtags: $(DOCS) +! $(VIMEXE) -u NONE -esX -c "helptags ." -c quit + + # Use "doctags" to generate the tags file. Only works for English! + tags: doctags $(DOCS) +--- 301,307 ---- + # Use Vim to generate the tags file. Can only be used when Vim has been + # compiled and installed. Supports multiple languages. + vimtags: $(DOCS) +! $(VIMEXE) -u NONE -esX -c "helptags ++t ." -c quit + + # Use "doctags" to generate the tags file. Only works for English! + tags: doctags $(DOCS) +*** ../vim-7.1.216/runtime/doc/various.txt Sat May 12 17:05:26 2007 +--- runtime/doc/various.txt Fri Jan 11 20:45:45 2008 +*************** +*** 1,4 **** +! *various.txt* For Vim version 7.1. Last change: 2007 Jan 14 + + + VIM REFERENCE MANUAL by Bram Moolenaar +--- 1,4 ---- +! *various.txt* For Vim version 7.1. Last change: 2008 Jan 11 + + + VIM REFERENCE MANUAL by Bram Moolenaar +*************** +*** 748,754 **** + + *:helpt* *:helptags* + *E154* *E150* *E151* *E152* *E153* *E670* +! :helpt[ags] {dir} Generate the help tags file(s) for directory {dir}. + All "*.txt" and "*.??x" files in the directory are + scanned for a help tag definition in between stars. + The "*.??x" files are for translated docs, they +--- 754,761 ---- + + *:helpt* *:helptags* + *E154* *E150* *E151* *E152* *E153* *E670* +! :helpt[ags] [++t] {dir} +! Generate the help tags file(s) for directory {dir}. + All "*.txt" and "*.??x" files in the directory are + scanned for a help tag definition in between stars. + The "*.??x" files are for translated docs, they +*************** +*** 756,761 **** +--- 763,771 ---- + The generated tags files are sorted. + When there are duplicates an error message is given. + An existing tags file is silently overwritten. ++ The optional "++t" argument forces adding the ++ "help-tags" tag. This is also done when the {dir} is ++ equal to $VIMRUNTIME/doc. + To rebuild the help tags in the runtime directory + (requires write permission there): > + :helptags $VIMRUNTIME/doc +*** ../vim-7.1.216/src/ex_cmds.c Wed Jan 9 22:39:55 2008 +--- src/ex_cmds.c Fri Jan 11 20:47:13 2008 +*************** +*** 6091,6097 **** + } + + #if defined(FEAT_EX_EXTRA) || defined(PROTO) +! static void helptags_one __ARGS((char_u *dir, char_u *ext, char_u *lang)); + + /* + * ":helptags" +--- 6091,6097 ---- + } + + #if defined(FEAT_EX_EXTRA) || defined(PROTO) +! static void helptags_one __ARGS((char_u *dir, char_u *ext, char_u *lang, int add_help_tags)); + + /* + * ":helptags" +*************** +*** 6110,6115 **** +--- 6110,6123 ---- + char_u fname[8]; + int filecount; + char_u **files; ++ int add_help_tags = FALSE; ++ ++ /* Check for ":helptags ++t {dir}". */ ++ if (STRNCMP(eap->arg, "++t", 3) == 0 && vim_iswhite(eap->arg[3])) ++ { ++ add_help_tags = TRUE; ++ eap->arg = skipwhite(eap->arg + 3); ++ } + + if (!mch_isdir(eap->arg)) + { +*************** +*** 6192,6198 **** + ext[1] = fname[5]; + ext[2] = fname[6]; + } +! helptags_one(eap->arg, ext, fname); + } + + ga_clear(&ga); +--- 6200,6206 ---- + ext[1] = fname[5]; + ext[2] = fname[6]; + } +! helptags_one(eap->arg, ext, fname, add_help_tags); + } + + ga_clear(&ga); +*************** +*** 6200,6214 **** + + #else + /* No language support, just use "*.txt" and "tags". */ +! helptags_one(eap->arg, (char_u *)".txt", (char_u *)"tags"); + #endif + } + + static void +! helptags_one(dir, ext, tagfname) +! char_u *dir; /* doc directory */ +! char_u *ext; /* suffix, ".txt", ".itx", ".frx", etc. */ +! char_u *tagfname; /* "tags" for English, "tags-it" for Italian. */ + { + FILE *fd_tags; + FILE *fd; +--- 6208,6223 ---- + + #else + /* No language support, just use "*.txt" and "tags". */ +! helptags_one(eap->arg, (char_u *)".txt", (char_u *)"tags", add_help_tags); + #endif + } + + static void +! helptags_one(dir, ext, tagfname, add_help_tags) +! char_u *dir; /* doc directory */ +! char_u *ext; /* suffix, ".txt", ".itx", ".frx", etc. */ +! char_u *tagfname; /* "tags" for English, "tags-fr" for French. */ +! int add_help_tags; /* add "help-tags" tag */ + { + FILE *fd_tags; + FILE *fd; +*************** +*** 6259,6268 **** + } + + /* +! * If generating tags for "$VIMRUNTIME/doc" add the "help-tags" tag. + */ + ga_init2(&ga, (int)sizeof(char_u *), 100); +! if (fullpathcmp((char_u *)"$VIMRUNTIME/doc", dir, FALSE) == FPC_SAME) + { + if (ga_grow(&ga, 1) == FAIL) + got_int = TRUE; +--- 6268,6279 ---- + } + + /* +! * If using the "++t" argument or generating tags for "$VIMRUNTIME/doc" +! * add the "help-tags" tag. + */ + ga_init2(&ga, (int)sizeof(char_u *), 100); +! if (add_help_tags || fullpathcmp((char_u *)"$VIMRUNTIME/doc", +! dir, FALSE) == FPC_SAME) + { + if (ga_grow(&ga, 1) == FAIL) + got_int = TRUE; +*** ../vim-7.1.216/src/ex_cmds.h Thu Mar 8 11:00:55 2007 +--- src/ex_cmds.h Fri Jan 11 20:49:18 2008 +*************** +*** 422,428 **** + EX(CMD_helpgrep, "helpgrep", ex_helpgrep, + EXTRA|NOTRLCOM|NEEDARG), + EX(CMD_helptags, "helptags", ex_helptags, +! NEEDARG|FILE1|TRLBAR|CMDWIN), + EX(CMD_hardcopy, "hardcopy", ex_hardcopy, + RANGE|COUNT|EXTRA|TRLBAR|DFLALL|BANG), + EX(CMD_highlight, "highlight", ex_highlight, +--- 422,428 ---- + EX(CMD_helpgrep, "helpgrep", ex_helpgrep, + EXTRA|NOTRLCOM|NEEDARG), + EX(CMD_helptags, "helptags", ex_helptags, +! NEEDARG|FILES|TRLBAR|CMDWIN), + EX(CMD_hardcopy, "hardcopy", ex_hardcopy, + RANGE|COUNT|EXTRA|TRLBAR|DFLALL|BANG), + EX(CMD_highlight, "highlight", ex_highlight, +*** ../vim-7.1.216/src/version.c Fri Jan 11 20:25:42 2008 +--- src/version.c Fri Jan 11 20:58:44 2008 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 217, + /**/ + +-- +My girlfriend told me I should be more affectionate. +So I got TWO girlfriends. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.218 b/7.1.218 new file mode 100644 index 00000000..859f0b72 --- /dev/null +++ b/7.1.218 @@ -0,0 +1,58 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.218 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.218 +Problem: A syntax region without a "keepend", containing a region with + "extend" could be truncated at the end of the containing region. +Solution: Do not call syn_update_ends() when there are no keepend items. +Files: src/syntax.c + + +*** ../vim-7.1.217/src/syntax.c Thu Jan 10 22:23:22 2008 +--- src/syntax.c Wed Jan 9 15:17:47 2008 +*************** +*** 2495,2501 **** + if (current_state.ga_len == 0) + break; + +! if (had_extend) + { + syn_update_ends(FALSE); + if (current_state.ga_len == 0) +--- 2493,2499 ---- + if (current_state.ga_len == 0) + break; + +! if (had_extend && keepend_level >= 0) + { + syn_update_ends(FALSE); + if (current_state.ga_len == 0) +*** ../vim-7.1.217/src/version.c Fri Jan 11 21:00:49 2008 +--- src/version.c Fri Jan 11 21:25:46 2008 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 218, + /**/ + +-- +The Law of VIM: +For each member b of the possible behaviour space B of program P, there exists +a finite time t before which at least one user u in the total user space U of +program P will request b becomes a member of the allowed behaviour space B' +(B' <= B). +In other words: Sooner or later everyone wants everything as an option. + -- Vince Negri + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.219 b/7.1.219 new file mode 100644 index 00000000..68e4cfa2 --- /dev/null +++ b/7.1.219 @@ -0,0 +1,378 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.219 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.219 (after 7.1.215) +Problem: synstack() returns situation after the current character, can't + see the state for a one-character region. +Solution: Don't update ending states in the requested column. +Files: runtime/doc/eval.txt, src/eval.c, src/hardcopy.c, + src/proto/syntax.pro, src/screen.c, src/spell.c, src/syntax.c + + +*** ../vim-7.1.218/runtime/doc/eval.txt Thu Jan 10 22:23:22 2008 +--- runtime/doc/eval.txt Fri Jan 11 22:04:59 2008 +*************** +*** 1,4 **** +! *eval.txt* For Vim version 7.1. Last change: 2008 Jan 10 + + + VIM REFERENCE MANUAL by Bram Moolenaar +--- 1,4 ---- +! *eval.txt* For Vim version 7.1. Last change: 2008 Jan 11 + + + VIM REFERENCE MANUAL by Bram Moolenaar +*************** +*** 4967,4976 **** + Return a |List|, which is the stack of syntax items at the + position {lnum} and {col} in the current window. Each item in + the List is an ID like what |synID()| returns. +- The stack is the situation in between the character at "col" +- and the next character. Note that a region of only one +- character will not show up, it only exists inside that +- character, not in between characters. + The first item in the List is the outer region, following are + items contained in that one. The last one is what |synID()| + returns, unless not the whole item is highlighted or it is a +--- 4970,4975 ---- +*** ../vim-7.1.218/src/eval.c Thu Jan 10 22:23:22 2008 +--- src/eval.c Fri Jan 11 21:46:12 2008 +*************** +*** 15725,15731 **** + + if (!transerr && lnum >= 1 && lnum <= curbuf->b_ml.ml_line_count + && col >= 0 && col < (long)STRLEN(ml_get(lnum))) +! id = syn_get_id(curwin, lnum, (colnr_T)col, trans, NULL); + #endif + + rettv->vval.v_number = id; +--- 15725,15731 ---- + + if (!transerr && lnum >= 1 && lnum <= curbuf->b_ml.ml_line_count + && col >= 0 && col < (long)STRLEN(ml_get(lnum))) +! id = syn_get_id(curwin, lnum, (colnr_T)col, trans, NULL, FALSE); + #endif + + rettv->vval.v_number = id; +*************** +*** 15874,15880 **** + && col >= 0 && col < (long)STRLEN(ml_get(lnum)) + && rettv_list_alloc(rettv) != FAIL) + { +! (void)syn_get_id(curwin, lnum, (colnr_T)col, FALSE, NULL); + for (i = 0; ; ++i) + { + id = syn_get_stack_item(i); +--- 15874,15880 ---- + && col >= 0 && col < (long)STRLEN(ml_get(lnum)) + && rettv_list_alloc(rettv) != FAIL) + { +! (void)syn_get_id(curwin, lnum, (colnr_T)col, FALSE, NULL, TRUE); + for (i = 0; ; ++i) + { + id = syn_get_stack_item(i); +*** ../vim-7.1.218/src/hardcopy.c Thu May 10 20:40:02 2007 +--- src/hardcopy.c Fri Jan 11 21:46:20 2008 +*************** +*** 876,882 **** + */ + if (psettings->do_syntax) + { +! id = syn_get_id(curwin, ppos->file_line, col, 1, NULL); + if (id > 0) + id = syn_get_final_id(id); + else +--- 876,882 ---- + */ + if (psettings->do_syntax) + { +! id = syn_get_id(curwin, ppos->file_line, col, 1, NULL, FALSE); + if (id > 0) + id = syn_get_final_id(id); + else +*** ../vim-7.1.218/src/proto/syntax.pro Thu Jan 10 22:23:22 2008 +--- src/proto/syntax.pro Fri Jan 11 21:54:19 2008 +*************** +*** 4,10 **** + void syn_stack_apply_changes __ARGS((buf_T *buf)); + void syntax_end_parsing __ARGS((linenr_T lnum)); + int syntax_check_changed __ARGS((linenr_T lnum)); +! int get_syntax_attr __ARGS((colnr_T col, int *can_spell)); + void syntax_clear __ARGS((buf_T *buf)); + void ex_syntax __ARGS((exarg_T *eap)); + int syntax_present __ARGS((buf_T *buf)); +--- 4,10 ---- + void syn_stack_apply_changes __ARGS((buf_T *buf)); + void syntax_end_parsing __ARGS((linenr_T lnum)); + int syntax_check_changed __ARGS((linenr_T lnum)); +! int get_syntax_attr __ARGS((colnr_T col, int *can_spell, int keep_state)); + void syntax_clear __ARGS((buf_T *buf)); + void ex_syntax __ARGS((exarg_T *eap)); + int syntax_present __ARGS((buf_T *buf)); +*************** +*** 12,18 **** + void set_context_in_echohl_cmd __ARGS((expand_T *xp, char_u *arg)); + void set_context_in_syntax_cmd __ARGS((expand_T *xp, char_u *arg)); + char_u *get_syntax_name __ARGS((expand_T *xp, int idx)); +! int syn_get_id __ARGS((win_T *wp, long lnum, colnr_T col, int trans, int *spellp)); + int syn_get_stack_item __ARGS((int i)); + int syn_get_foldlevel __ARGS((win_T *wp, long lnum)); + void init_highlight __ARGS((int both, int reset)); +--- 12,18 ---- + void set_context_in_echohl_cmd __ARGS((expand_T *xp, char_u *arg)); + void set_context_in_syntax_cmd __ARGS((expand_T *xp, char_u *arg)); + char_u *get_syntax_name __ARGS((expand_T *xp, int idx)); +! int syn_get_id __ARGS((win_T *wp, long lnum, colnr_T col, int trans, int *spellp, int keep_state)); + int syn_get_stack_item __ARGS((int i)); + int syn_get_foldlevel __ARGS((win_T *wp, long lnum)); + void init_highlight __ARGS((int both, int reset)); +*** ../vim-7.1.218/src/screen.c Thu Nov 8 21:23:34 2007 +--- src/screen.c Fri Jan 11 21:48:10 2008 +*************** +*** 3885,3891 **** + # ifdef FEAT_SPELL + has_spell ? &can_spell : + # endif +! NULL); + + if (did_emsg) + { +--- 3885,3891 ---- + # ifdef FEAT_SPELL + has_spell ? &can_spell : + # endif +! NULL, FALSE); + + if (did_emsg) + { +*** ../vim-7.1.218/src/spell.c Sun Aug 5 18:32:21 2007 +--- src/spell.c Fri Jan 11 21:46:50 2008 +*************** +*** 2146,2152 **** + { + col = (int)(p - buf); + (void)syn_get_id(wp, lnum, (colnr_T)col, +! FALSE, &can_spell); + if (!can_spell) + attr = HLF_COUNT; + } +--- 2146,2152 ---- + { + col = (int)(p - buf); + (void)syn_get_id(wp, lnum, (colnr_T)col, +! FALSE, &can_spell, FALSE); + if (!can_spell) + attr = HLF_COUNT; + } +*** ../vim-7.1.218/src/syntax.c Fri Jan 11 21:26:49 2008 +--- src/syntax.c Sat Jan 12 16:42:25 2008 +*************** +*** 378,384 **** + static int syn_stack_equal __ARGS((synstate_T *sp)); + static void validate_current_state __ARGS((void)); + static int syn_finish_line __ARGS((int syncing)); +! static int syn_current_attr __ARGS((int syncing, int displaying, int *can_spell)); + static int did_match_already __ARGS((int idx, garray_T *gap)); + static stateitem_T *push_next_match __ARGS((stateitem_T *cur_si)); + static void check_state_ends __ARGS((void)); +--- 378,384 ---- + static int syn_stack_equal __ARGS((synstate_T *sp)); + static void validate_current_state __ARGS((void)); + static int syn_finish_line __ARGS((int syncing)); +! static int syn_current_attr __ARGS((int syncing, int displaying, int *can_spell, int keep_state)); + static int did_match_already __ARGS((int idx, garray_T *gap)); + static stateitem_T *push_next_match __ARGS((stateitem_T *cur_si)); + static void check_state_ends __ARGS((void)); +*************** +*** 1691,1697 **** + { + while (!current_finished) + { +! (void)syn_current_attr(syncing, FALSE, NULL); + /* + * When syncing, and found some item, need to check the item. + */ +--- 1690,1696 ---- + { + while (!current_finished) + { +! (void)syn_current_attr(syncing, FALSE, NULL, FALSE); + /* + * When syncing, and found some item, need to check the item. + */ +*************** +*** 1731,1739 **** + * done. + */ + int +! get_syntax_attr(col, can_spell) + colnr_T col; + int *can_spell; + { + int attr = 0; + +--- 1730,1739 ---- + * done. + */ + int +! get_syntax_attr(col, can_spell, keep_state) + colnr_T col; + int *can_spell; ++ int keep_state; /* keep state of char at "col" */ + { + int attr = 0; + +*************** +*** 1768,1774 **** + */ + while (current_col <= col) + { +! attr = syn_current_attr(FALSE, TRUE, can_spell); + ++current_col; + } + +--- 1768,1775 ---- + */ + while (current_col <= col) + { +! attr = syn_current_attr(FALSE, TRUE, can_spell, +! current_col == col ? keep_state : FALSE); + ++current_col; + } + +*************** +*** 1779,1788 **** + * Get syntax attributes for current_lnum, current_col. + */ + static int +! syn_current_attr(syncing, displaying, can_spell) + int syncing; /* When 1: called for syncing */ + int displaying; /* result will be displayed */ + int *can_spell; /* return: do spell checking */ + { + int syn_id; + lpos_T endpos; /* was: char_u *endp; */ +--- 1780,1790 ---- + * Get syntax attributes for current_lnum, current_col. + */ + static int +! syn_current_attr(syncing, displaying, can_spell, keep_state) + int syncing; /* When 1: called for syncing */ + int displaying; /* result will be displayed */ + int *can_spell; /* return: do spell checking */ ++ int keep_state; /* keep syntax stack afterwards */ + { + int syn_id; + lpos_T endpos; /* was: char_u *endp; */ +*************** +*** 2298,2304 **** + * may be for an empty match and a containing item might end in the + * current column. + */ +! if (!syncing) + { + check_state_ends(); + if (current_state.ga_len > 0 +--- 2300,2306 ---- + * may be for an empty match and a containing item might end in the + * current column. + */ +! if (!syncing && !keep_state) + { + check_state_ends(); + if (current_state.ga_len > 0 +*************** +*** 6086,6097 **** + * Function called for expression evaluation: get syntax ID at file position. + */ + int +! syn_get_id(wp, lnum, col, trans, spellp) + win_T *wp; + long lnum; + colnr_T col; +! int trans; /* remove transparancy */ +! int *spellp; /* return: can do spell checking */ + { + /* When the position is not after the current position and in the same + * line of the same buffer, need to restart parsing. */ +--- 6088,6100 ---- + * Function called for expression evaluation: get syntax ID at file position. + */ + int +! syn_get_id(wp, lnum, col, trans, spellp, keep_state) + win_T *wp; + long lnum; + colnr_T col; +! int trans; /* remove transparancy */ +! int *spellp; /* return: can do spell checking */ +! int keep_state; /* keep state of char at "col" */ + { + /* When the position is not after the current position and in the same + * line of the same buffer, need to restart parsing. */ +*************** +*** 6100,6106 **** + || col < current_col) + syntax_start(wp, lnum); + +! (void)get_syntax_attr(col, spellp); + + return (trans ? current_trans_id : current_id); + } +--- 6103,6109 ---- + || col < current_col) + syntax_start(wp, lnum); + +! (void)get_syntax_attr(col, spellp, keep_state); + + return (trans ? current_trans_id : current_id); + } +*************** +*** 6115,6122 **** + syn_get_stack_item(i) + int i; + { +! if (i >= current_state.ga_len ) + return -1; + return CUR_STATE(i).si_id; + } + #endif +--- 6118,6131 ---- + syn_get_stack_item(i) + int i; + { +! if (i >= current_state.ga_len) +! { +! /* Need to invalidate the state, because we didn't properly finish it +! * for the last character, "keep_state" was TRUE. */ +! invalidate_current_state(); +! current_col = MAXCOL; + return -1; ++ } + return CUR_STATE(i).si_id; + } + #endif +*** ../vim-7.1.218/src/version.c Fri Jan 11 21:26:49 2008 +--- src/version.c Sat Jan 12 16:40:47 2008 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 219, + /**/ + +-- +ARTHUR: Go on, Bors, chop its head off. +BORS: Right. Silly little bleeder. One rabbit stew coming up. + "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 /// diff --git a/7.1.220 b/7.1.220 new file mode 100644 index 00000000..1ba8f040 --- /dev/null +++ b/7.1.220 @@ -0,0 +1,136 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.220 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.220 +Problem: When a ")" or word movement command moves the cursor back from the + end of the line it may end up on the trail byte of a multi-byte + character. It's also moved back when it isn't needed. +Solution: Add the adjust_cursor() function. +Files: src/normal.c + + +*** ../vim-7.1.219/src/normal.c Sun Jan 6 20:05:36 2008 +--- src/normal.c Sat Jan 12 17:10:14 2008 +*************** +*** 150,155 **** +--- 150,156 ---- + static void nv_bck_word __ARGS((cmdarg_T *cap)); + static void nv_wordcmd __ARGS((cmdarg_T *cap)); + static void nv_beginline __ARGS((cmdarg_T *cap)); ++ static void adjust_cursor __ARGS((oparg_T *oap)); + #ifdef FEAT_VISUAL + static void adjust_for_sel __ARGS((cmdarg_T *cap)); + static int unadjust_for_sel __ARGS((void)); +*************** +*** 6567,6578 **** + clearopbeep(cap->oap); + else + { +! /* Don't leave the cursor on the NUL past a line */ +! if (curwin->w_cursor.col > 0 && gchar_cursor() == NUL) +! { +! --curwin->w_cursor.col; +! cap->oap->inclusive = TRUE; +! } + #ifdef FEAT_VIRTUALEDIT + curwin->w_cursor.coladd = 0; + #endif +--- 6568,6575 ---- + clearopbeep(cap->oap); + else + { +! /* Don't leave the cursor on the NUL past end of line. */ +! adjust_cursor(cap->oap); + #ifdef FEAT_VIRTUALEDIT + curwin->w_cursor.coladd = 0; + #endif +*************** +*** 8408,8419 **** + else + n = fwd_word(cap->count1, cap->arg, cap->oap->op_type != OP_NOP); + +! /* Don't leave the cursor on the NUL past a line */ +! if (n != FAIL && curwin->w_cursor.col > 0 && gchar_cursor() == NUL) +! { +! --curwin->w_cursor.col; +! cap->oap->inclusive = TRUE; +! } + + if (n == FAIL && cap->oap->op_type == OP_NOP) + clearopbeep(cap->oap); +--- 8405,8413 ---- + else + n = fwd_word(cap->count1, cap->arg, cap->oap->op_type != OP_NOP); + +! /* Don't leave the cursor on the NUL past the end of line. */ +! if (n != FAIL) +! adjust_cursor(cap->oap); + + if (n == FAIL && cap->oap->op_type == OP_NOP) + clearopbeep(cap->oap); +*************** +*** 8426,8431 **** +--- 8420,8458 ---- + if ((fdo_flags & FDO_HOR) && KeyTyped && cap->oap->op_type == OP_NOP) + foldOpenCursor(); + #endif ++ } ++ } ++ ++ /* ++ * Used after a movement command: If the cursor ends up on the NUL after the ++ * end of the line, may move it back to the last character and make the motion ++ * inclusive. ++ */ ++ static void ++ adjust_cursor(oap) ++ oparg_T *oap; ++ { ++ /* The cursor cannot remain on the NUL when: ++ * - the column is > 0 ++ * - not in Visual mode or 'selection' is "o" ++ * - 'virtualedit' is not "all" and not "onemore". ++ */ ++ if (curwin->w_cursor.col > 0 && gchar_cursor() == NUL ++ #ifdef FEAT_VISUAL ++ && (!VIsual_active || *p_sel == 'o') ++ #endif ++ #ifdef FEAT_VIRTUALEDIT ++ && !virtual_active() && (ve_flags & VE_ONEMORE) == 0 ++ #endif ++ ) ++ { ++ --curwin->w_cursor.col; ++ #ifdef FEAT_MBYTE ++ /* prevent cursor from moving on the trail byte */ ++ if (has_mbyte) ++ mb_adjust_cursor(); ++ #endif ++ oap->inclusive = TRUE; + } + } + +*** ../vim-7.1.219/src/version.c Sat Jan 12 16:45:25 2008 +--- src/version.c Sat Jan 12 17:07:28 2008 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 220, + /**/ + +-- +A hamburger walks into a bar, and the bartender says: "I'm sorry, +but we don't serve food here." + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.221 b/7.1.221 new file mode 100644 index 00000000..14fc9473 --- /dev/null +++ b/7.1.221 @@ -0,0 +1,58 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.221 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.221 +Problem: When inserting a "(", triggering the matchparen plugin, the + following highlighting may be messed up. +Solution: Before triggering the CursorMovedI autocommands update the display + to update the stored syntax stacks for the change. +Files: src/edit.c + + +*** ../vim-7.1.220/src/edit.c Wed Jan 9 10:13:24 2008 +--- src/edit.c Sat Jan 12 16:07:41 2008 +*************** +*** 1455,1460 **** +--- 1455,1468 ---- + # endif + ) + { ++ # ifdef FEAT_SYN_HL ++ /* Need to update the screen first, to make sure syntax ++ * highlighting is correct after making a change (e.g., inserting ++ * a "(". The autocommand may also require a redraw, so it's done ++ * again below, unfortunately. */ ++ if (syntax_present(curbuf) && must_redraw) ++ update_screen(0); ++ # endif + apply_autocmds(EVENT_CURSORMOVEDI, NULL, NULL, FALSE, curbuf); + last_cursormoved = curwin->w_cursor; + } +*** ../vim-7.1.220/src/version.c Sat Jan 12 17:11:25 2008 +--- src/version.c Sat Jan 12 18:11:22 2008 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 221, + /**/ + +-- +ROBIN: The what? +ARTHUR: The Holy Hand Grenade of Antioch. 'Tis one of the sacred relics + Brother Maynard always carries with him. +ALL: Yes. Of course. +ARTHUR: (shouting) Bring up the Holy Hand Grenade! + "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 /// diff --git a/7.1.222 b/7.1.222 new file mode 100644 index 00000000..f092e76b --- /dev/null +++ b/7.1.222 @@ -0,0 +1,135 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.222 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.222 (after 7.1.217) +Problem: Wildcards in argument of ":helptags" are not expanded. (Marcel + Svitalsky) +Solution: Expand wildcards in the directory name. +Files: src/ex_cmds.c + + +*** ../vim-7.1.221/src/ex_cmds.c Fri Jan 11 21:00:49 2008 +--- src/ex_cmds.c Sat Jan 12 21:40:51 2008 +*************** +*** 6106,6111 **** +--- 6106,6113 ---- + #ifdef FEAT_MULTI_LANG + char_u lang[2]; + #endif ++ expand_T xpc; ++ char_u *dirname; + char_u ext[5]; + char_u fname[8]; + int filecount; +*************** +*** 6119,6125 **** + eap->arg = skipwhite(eap->arg + 3); + } + +! if (!mch_isdir(eap->arg)) + { + EMSG2(_("E150: Not a directory: %s"), eap->arg); + return; +--- 6121,6131 ---- + eap->arg = skipwhite(eap->arg + 3); + } + +! ExpandInit(&xpc); +! xpc.xp_context = EXPAND_DIRECTORIES; +! dirname = ExpandOne(&xpc, eap->arg, NULL, +! WILD_LIST_NOTFOUND|WILD_SILENT, WILD_EXPAND_FREE); +! if (dirname == NULL || !mch_isdir(dirname)) + { + EMSG2(_("E150: Not a directory: %s"), eap->arg); + return; +*************** +*** 6127,6133 **** + + #ifdef FEAT_MULTI_LANG + /* Get a list of all files in the directory. */ +! STRCPY(NameBuff, eap->arg); + add_pathsep(NameBuff); + STRCAT(NameBuff, "*"); + if (gen_expand_wildcards(1, &NameBuff, &filecount, &files, +--- 6133,6139 ---- + + #ifdef FEAT_MULTI_LANG + /* Get a list of all files in the directory. */ +! STRCPY(NameBuff, dirname); + add_pathsep(NameBuff); + STRCAT(NameBuff, "*"); + if (gen_expand_wildcards(1, &NameBuff, &filecount, &files, +*************** +*** 6135,6140 **** +--- 6141,6147 ---- + || filecount == 0) + { + EMSG2("E151: No match: %s", NameBuff); ++ vim_free(dirname); + return; + } + +*************** +*** 6200,6206 **** + ext[1] = fname[5]; + ext[2] = fname[6]; + } +! helptags_one(eap->arg, ext, fname, add_help_tags); + } + + ga_clear(&ga); +--- 6207,6213 ---- + ext[1] = fname[5]; + ext[2] = fname[6]; + } +! helptags_one(dirname, ext, fname, add_help_tags); + } + + ga_clear(&ga); +*************** +*** 6208,6215 **** + + #else + /* No language support, just use "*.txt" and "tags". */ +! helptags_one(eap->arg, (char_u *)".txt", (char_u *)"tags", add_help_tags); + #endif + } + + static void +--- 6215,6223 ---- + + #else + /* No language support, just use "*.txt" and "tags". */ +! helptags_one(dirname, (char_u *)".txt", (char_u *)"tags", add_help_tags); + #endif ++ vim_free(dirname); + } + + static void +*** ../vim-7.1.221/src/version.c Sat Jan 12 18:13:05 2008 +--- src/version.c Sun Jan 13 13:27:04 2008 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 222, + /**/ + +-- + Arthur pulls Pin out. The MONK blesses the grenade as ... +ARTHUR: (quietly) One, two, five ... +GALAHAD: Three, sir! +ARTHUR: Three. + "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 /// diff --git a/7.1.223 b/7.1.223 new file mode 100644 index 00000000..0fbfb584 --- /dev/null +++ b/7.1.223 @@ -0,0 +1,263 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.223 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.223 +Problem: glob() doesn't work properly when 'shell' is "sh" or "bash" and + the expanded name contains spaces, '~', single quotes and other + special characters. (Adri Verhoef, Charles Campbell) +Solution: For Posix shells define a vimglob() function to list the matches + instead of using "echo" directly. +Files: src/os_unix.c + + +*** ../vim-7.1.222/src/os_unix.c Thu Jan 3 18:55:21 2008 +--- src/os_unix.c Sun Jan 13 13:52:53 2008 +*************** +*** 4946,4951 **** +--- 4946,4954 ---- + char_u *p; + int dir; + #ifdef __EMX__ ++ /* ++ * This is the OS/2 implementation. ++ */ + # define EXPL_ALLOC_INC 16 + char_u **expl_files; + size_t files_alloced, files_free; +*************** +*** 5056,5075 **** + return OK; + + #else /* __EMX__ */ +! + int j; + char_u *tempname; + char_u *command; + FILE *fd; + char_u *buffer; +! #define STYLE_ECHO 0 /* use "echo" to expand */ +! #define STYLE_GLOB 1 /* use "glob" to expand, for csh */ +! #define STYLE_PRINT 2 /* use "print -N" to expand, for zsh */ +! #define STYLE_BT 3 /* `cmd` expansion, execute the pattern directly */ + int shell_style = STYLE_ECHO; + int check_spaces; + static int did_find_nul = FALSE; + int ampersent = FALSE; + + *num_file = 0; /* default: no files found */ + *file = NULL; +--- 5059,5084 ---- + return OK; + + #else /* __EMX__ */ +! /* +! * This is the non-OS/2 implementation (really Unix). +! */ + int j; + char_u *tempname; + char_u *command; + FILE *fd; + char_u *buffer; +! #define STYLE_ECHO 0 /* use "echo", the default */ +! #define STYLE_GLOB 1 /* use "glob", for csh */ +! #define STYLE_VIMGLOB 2 /* use "vimglob", for Posix sh */ +! #define STYLE_PRINT 3 /* use "print -N", for zsh */ +! #define STYLE_BT 4 /* `cmd` expansion, execute the pattern +! * directly */ + int shell_style = STYLE_ECHO; + int check_spaces; + static int did_find_nul = FALSE; + int ampersent = FALSE; ++ /* vimglob() function to define for Posix shell */ ++ static char *sh_vimglob_func = "vimglob() { while [ $# -ge 1 ]; do echo -n \"$1\"; echo; shift; done }; vimglob >"; + + *num_file = 0; /* default: no files found */ + *file = NULL; +*************** +*** 5107,5115 **** + + /* + * Let the shell expand the patterns and write the result into the temp +! * file. if expanding `cmd` execute it directly. +! * If we use csh, glob will work better than echo. +! * If we use zsh, print -N will work better than glob. + */ + if (num_pat == 1 && *pat[0] == '`' + && (len = STRLEN(pat[0])) > 2 +--- 5116,5132 ---- + + /* + * Let the shell expand the patterns and write the result into the temp +! * file. +! * STYLE_BT: NL separated +! * If expanding `cmd` execute it directly. +! * STYLE_GLOB: NUL separated +! * If we use *csh, "glob" will work better than "echo". +! * STYLE_PRINT: NL or NUL separated +! * If we use *zsh, "print -N" will work better than "glob". +! * STYLE_VIMGLOB: NL separated +! * If we use *sh*, we define "vimglob()". +! * STYLE_ECHO: space separated. +! * A shell we don't know, stay safe and use "echo". + */ + if (num_pat == 1 && *pat[0] == '`' + && (len = STRLEN(pat[0])) > 2 +*************** +*** 5122,5130 **** + else if (STRCMP(p_sh + len - 3, "zsh") == 0) + shell_style = STYLE_PRINT; + } +! +! /* "unset nonomatch; print -N >" plus two is 29 */ + len = STRLEN(tempname) + 29; + for (i = 0; i < num_pat; ++i) + { + /* Count the length of the patterns in the same way as they are put in +--- 5139,5155 ---- + else if (STRCMP(p_sh + len - 3, "zsh") == 0) + shell_style = STYLE_PRINT; + } +! if (shell_style == STYLE_ECHO && strstr((char *)gettail(p_sh), +! "sh") != NULL) +! shell_style = STYLE_VIMGLOB; +! +! /* Compute the length of the command. We need 2 extra bytes: for the +! * optional '&' and for the NUL. +! * Worst case: "unset nonomatch; print -N >" plus two is 29 */ + len = STRLEN(tempname) + 29; ++ if (shell_style == STYLE_VIMGLOB) ++ len += STRLEN(sh_vimglob_func); ++ + for (i = 0; i < num_pat; ++i) + { + /* Count the length of the patterns in the same way as they are put in +*************** +*** 5183,5192 **** +--- 5208,5221 ---- + STRCAT(command, "glob >"); + else if (shell_style == STYLE_PRINT) + STRCAT(command, "print -N >"); ++ else if (shell_style == STYLE_VIMGLOB) ++ STRCAT(command, sh_vimglob_func); + else + STRCAT(command, "echo >"); + } ++ + STRCAT(command, tempname); ++ + if (shell_style != STYLE_BT) + for (i = 0; i < num_pat; ++i) + { +*************** +*** 5232,5239 **** + if (flags & EW_SILENT) + show_shell_mess = FALSE; + if (ampersent) +! STRCAT(command, "&"); /* put the '&' back after the +! redirection */ + + /* + * Using zsh -G: If a pattern has no matches, it is just deleted from +--- 5261,5267 ---- + if (flags & EW_SILENT) + show_shell_mess = FALSE; + if (ampersent) +! STRCAT(command, "&"); /* put the '&' after the redirection */ + + /* + * Using zsh -G: If a pattern has no matches, it is just deleted from +*************** +*** 5265,5271 **** + show_shell_mess = TRUE; + vim_free(command); + +! if (i) /* mch_call_shell() failed */ + { + mch_remove(tempname); + vim_free(tempname); +--- 5293,5299 ---- + show_shell_mess = TRUE; + vim_free(command); + +! if (i != 0) /* mch_call_shell() failed */ + { + mch_remove(tempname); + vim_free(tempname); +*************** +*** 5336,5342 **** + } + vim_free(tempname); + +! #if defined(__CYGWIN__) || defined(__CYGWIN32__) + /* Translate into . Caution, buffer may contain NUL. */ + p = buffer; + for (i = 0; i < len; ++i) +--- 5364,5370 ---- + } + vim_free(tempname); + +! # if defined(__CYGWIN__) || defined(__CYGWIN32__) + /* Translate into . Caution, buffer may contain NUL. */ + p = buffer; + for (i = 0; i < len; ++i) +*************** +*** 5359,5365 **** + } + } + /* file names are separated with NL */ +! else if (shell_style == STYLE_BT) + { + buffer[len] = NUL; /* make sure the buffer ends in NUL */ + p = buffer; +--- 5387,5393 ---- + } + } + /* file names are separated with NL */ +! else if (shell_style == STYLE_BT || shell_style == STYLE_VIMGLOB) + { + buffer[len] = NUL; /* make sure the buffer ends in NUL */ + p = buffer; +*************** +*** 5438,5444 **** + { + (*file)[i] = p; + /* Space or NL separates */ +! if (shell_style == STYLE_ECHO || shell_style == STYLE_BT) + { + while (!(shell_style == STYLE_ECHO && *p == ' ') + && *p != '\n' && *p != NUL) +--- 5466,5473 ---- + { + (*file)[i] = p; + /* Space or NL separates */ +! if (shell_style == STYLE_ECHO || shell_style == STYLE_BT +! || shell_style == STYLE_VIMGLOB) + { + while (!(shell_style == STYLE_ECHO && *p == ' ') + && *p != '\n' && *p != NUL) +*** ../vim-7.1.222/src/version.c Sun Jan 13 13:30:34 2008 +--- src/version.c Sun Jan 13 13:45:04 2008 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 223, + /**/ + +-- +User: I'm having problems with my text editor. +Help desk: Which editor are you using? +User: I don't know, but it's version VI (pronounced: 6). +Help desk: Oh, then you should upgrade to version VIM (pronounced: 994). + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.224 b/7.1.224 new file mode 100644 index 00000000..4e6c9d3d --- /dev/null +++ b/7.1.224 @@ -0,0 +1,73 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.224 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.224 +Problem: When using "vim -F -o file1 file2" only one window is + right-to-left. Same for "-H". (Ben Schmidt) +Solution: use set_option_value() to set 'rightleft'. +Files: src/main.c + + +*** ../vim-7.1.223/src/main.c Fri Jan 11 20:25:42 2008 +--- src/main.c Sun Jan 13 16:12:09 2008 +*************** +*** 1775,1781 **** + + case 'F': /* "-F" start in Farsi mode: rl + fkmap set */ + #ifdef FEAT_FKMAP +! curwin->w_p_rl = p_fkmap = TRUE; + #else + mch_errmsg(_(e_nofarsi)); + mch_exit(2); +--- 1775,1782 ---- + + case 'F': /* "-F" start in Farsi mode: rl + fkmap set */ + #ifdef FEAT_FKMAP +! p_fkmap = TRUE; +! set_option_value((char_u *)"rl", 1L, NULL, 0); + #else + mch_errmsg(_(e_nofarsi)); + mch_exit(2); +*************** +*** 1792,1798 **** + + case 'H': /* "-H" start in Hebrew mode: rl + hkmap set */ + #ifdef FEAT_RIGHTLEFT +! curwin->w_p_rl = p_hkmap = TRUE; + #else + mch_errmsg(_(e_nohebrew)); + mch_exit(2); +--- 1793,1800 ---- + + case 'H': /* "-H" start in Hebrew mode: rl + hkmap set */ + #ifdef FEAT_RIGHTLEFT +! p_hkmap = TRUE; +! set_option_value((char_u *)"rl", 1L, NULL, 0); + #else + mch_errmsg(_(e_nohebrew)); + mch_exit(2); +*** ../vim-7.1.223/src/version.c Sun Jan 13 13:53:30 2008 +--- src/version.c Sun Jan 13 16:15:49 2008 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 224, + /**/ + +-- +LAUNCELOT: Isn't there a St. Aaaaarrrrrrggghhh's in Cornwall? +ARTHUR: No, that's Saint Ives. + "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 /// diff --git a/7.1.225 b/7.1.225 new file mode 100644 index 00000000..acce0c55 --- /dev/null +++ b/7.1.225 @@ -0,0 +1,55 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.225 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.225 +Problem: Using unitialized value when XGetWMNormalHints() fails. +Solution: Check the return value. (Dominique Pelle) +Files: src/os_unix.c + + +*** ../vim-7.1.224/src/os_unix.c Sun Jan 13 13:53:30 2008 +--- src/os_unix.c Sun Jan 13 13:52:53 2008 +*************** +*** 6145,6153 **** + if (xterm_trace == 1) + { + /* Get the hints just before tracking starts. The font size might +! * have changed recently */ +! XGetWMNormalHints(xterm_dpy, x11_window, &xterm_hints, &got_hints); +! if (!(got_hints & PResizeInc) + || xterm_hints.width_inc <= 1 + || xterm_hints.height_inc <= 1) + { +--- 6145,6153 ---- + if (xterm_trace == 1) + { + /* Get the hints just before tracking starts. The font size might +! * have changed recently. */ +! if (!XGetWMNormalHints(xterm_dpy, x11_window, &xterm_hints, &got_hints) +! || !(got_hints & PResizeInc) + || xterm_hints.width_inc <= 1 + || xterm_hints.height_inc <= 1) + { +*** ../vim-7.1.224/src/version.c Sun Jan 13 16:17:02 2008 +--- src/version.c Sun Jan 13 16:29:51 2008 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 225, + /**/ + +-- +"When I die, I want a tombstone that says "GAME OVER" - Ton Richters + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.226 b/7.1.226 new file mode 100644 index 00000000..eb3cb6b7 --- /dev/null +++ b/7.1.226 @@ -0,0 +1,68 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.226 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.226 +Problem: Command line completion doesn't work when a file name contains a + '&' character. +Solution: Accept all characters in a file name, except ones that end a + command or white space. +Files: src/ex_docmd.c + + +*** ../vim-7.1.225/src/ex_docmd.c Wed Jan 9 20:29:51 2008 +--- src/ex_docmd.c Wed Jan 9 20:11:13 2008 +*************** +*** 3338,3349 **** + } + in_quote = !in_quote; + } + #ifdef SPACE_IN_FILENAME +! else if (!vim_isfilec_or_wc(c) +! && (!(ea.argt & NOSPC) || usefilter)) +! #else +! else if (!vim_isfilec_or_wc(c)) + #endif + { + while (*p != NUL) + { +--- 3338,3350 ---- + } + in_quote = !in_quote; + } ++ /* An argument can contain just about everything, except ++ * characters that end the command and white space. */ ++ else if (c == '|' || c == '\n' || c == '"' || (vim_iswhite(c) + #ifdef SPACE_IN_FILENAME +! && (!(ea.argt & NOSPC) || usefilter) + #endif ++ )) + { + while (*p != NUL) + { +*** ../vim-7.1.225/src/version.c Sun Jan 13 16:30:23 2008 +--- src/version.c Sun Jan 13 17:10:15 2008 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 226, + /**/ + +-- + [Another hideous roar.] +BEDEVERE: That's it! +ARTHUR: What? +BEDEVERE: It's The Legendary Black Beast of Aaaaarrrrrrggghhh! + "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 /// diff --git a/7.1.227 b/7.1.227 new file mode 100644 index 00000000..042c4498 --- /dev/null +++ b/7.1.227 @@ -0,0 +1,188 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.227 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.227 +Problem: Hang in syntax HL when moving over a ")". (Dominique Pelle) +Solution: Avoid storing a syntax state in the wrong position in the list of + remembered states. +Files: src/syntax.c + + +*** ../vim-7.1.226/src/syntax.c Sat Jan 12 16:45:25 2008 +--- src/syntax.c Sat Jan 12 16:45:44 2008 +*************** +*** 372,378 **** + static int syn_stack_cleanup __ARGS((void)); + static void syn_stack_free_entry __ARGS((buf_T *buf, synstate_T *p)); + static synstate_T *syn_stack_find_entry __ARGS((linenr_T lnum)); +! static synstate_T *store_current_state __ARGS((synstate_T *sp)); + static void load_current_state __ARGS((synstate_T *from)); + static void invalidate_current_state __ARGS((void)); + static int syn_stack_equal __ARGS((synstate_T *sp)); +--- 372,378 ---- + static int syn_stack_cleanup __ARGS((void)); + static void syn_stack_free_entry __ARGS((buf_T *buf, synstate_T *p)); + static synstate_T *syn_stack_find_entry __ARGS((linenr_T lnum)); +! static synstate_T *store_current_state __ARGS((void)); + static void load_current_state __ARGS((synstate_T *from)); + static void invalidate_current_state __ARGS((void)); + static int syn_stack_equal __ARGS((synstate_T *sp)); +*************** +*** 464,470 **** + synstate_T *p; + synstate_T *last_valid = NULL; + synstate_T *last_min_valid = NULL; +! synstate_T *sp, *prev; + linenr_T parsed_lnum; + linenr_T first_stored; + int dist; +--- 464,470 ---- + synstate_T *p; + synstate_T *last_valid = NULL; + synstate_T *last_min_valid = NULL; +! synstate_T *sp, *prev = NULL; + linenr_T parsed_lnum; + linenr_T first_stored; + int dist; +*************** +*** 502,508 **** + if (!current_state_stored) + { + ++current_lnum; +! (void)store_current_state(NULL); + } + + /* +--- 502,508 ---- + if (!current_state_stored) + { + ++current_lnum; +! (void)store_current_state(); + } + + /* +*************** +*** 558,564 **** + dist = 999999; + else + dist = syn_buf->b_ml.ml_line_count / (syn_buf->b_sst_len - Rows) + 1; +- prev = syn_stack_find_entry(current_lnum); + while (current_lnum < lnum) + { + syn_start_line(); +--- 558,563 ---- +*************** +*** 573,581 **** + * equal to the current state. If so, then validate all saved + * states that depended on a change before the parsed line. */ + if (prev == NULL) + sp = syn_buf->b_sst_first; + else +! sp = prev->sst_next; + if (sp != NULL + && sp->sst_lnum == current_lnum + && syn_stack_equal(sp)) +--- 572,584 ---- + * equal to the current state. If so, then validate all saved + * states that depended on a change before the parsed line. */ + if (prev == NULL) ++ prev = syn_stack_find_entry(current_lnum - 1); ++ if (prev == NULL) + sp = syn_buf->b_sst_first; + else +! sp = prev; +! while (sp != NULL && sp->sst_lnum < current_lnum) +! sp = sp->sst_next; + if (sp != NULL + && sp->sst_lnum == current_lnum + && syn_stack_equal(sp)) +*************** +*** 601,607 **** + else if (prev == NULL + || current_lnum == lnum + || current_lnum >= prev->sst_lnum + dist) +! prev = store_current_state(prev); + } + + /* This can take a long time: break when CTRL-C pressed. The current +--- 604,610 ---- + else if (prev == NULL + || current_lnum == lnum + || current_lnum >= prev->sst_lnum + dist) +! prev = store_current_state(); + } + + /* This can take a long time: break when CTRL-C pressed. The current +*************** +*** 1353,1369 **** + * The current state must be valid for the start of the current_lnum line! + */ + static synstate_T * +! store_current_state(sp) +! synstate_T *sp; /* at or before where state is to be saved or +! NULL */ + { + int i; + synstate_T *p; + bufstate_T *bp; + stateitem_T *cur_si; +! +! if (sp == NULL) +! sp = syn_stack_find_entry(current_lnum); + + /* + * If the current state contains a start or end pattern that continues +--- 1356,1368 ---- + * The current state must be valid for the start of the current_lnum line! + */ + static synstate_T * +! store_current_state() + { + int i; + synstate_T *p; + bufstate_T *bp; + stateitem_T *cur_si; +! synstate_T *sp = syn_stack_find_entry(current_lnum); + + /* + * If the current state contains a start or end pattern that continues +*************** +*** 1667,1673 **** + * Store the current state in b_sst_array[] for later use. + */ + ++current_lnum; +! (void)store_current_state(NULL); + } + } + +--- 1666,1672 ---- + * Store the current state in b_sst_array[] for later use. + */ + ++current_lnum; +! (void)store_current_state(); + } + } + +*** ../vim-7.1.226/src/version.c Sun Jan 13 17:11:25 2008 +--- src/version.c Sun Jan 13 17:37:10 2008 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 227, + /**/ + +-- +Dreams are free, but there's a small charge for alterations. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.228 b/7.1.228 new file mode 100644 index 00000000..bab4dff5 --- /dev/null +++ b/7.1.228 @@ -0,0 +1,51 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.228 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.228 +Problem: When 'foldmethod' is "indent" and a fold is created with ">>" it + can't be closed with "zc". (Daniel Shahaf) +Solution: Reset the "small" flag of a fold when adding a line to it. +Files: src/fold.c + + +*** ../vim-7.1.227/src/fold.c Sun Oct 14 15:32:10 2007 +--- src/fold.c Sun Jan 13 21:26:48 2008 +*************** +*** 2676,2681 **** +--- 2676,2682 ---- + if (fp->fd_len < flp->lnum - fp->fd_top) + { + fp->fd_len = flp->lnum - fp->fd_top; ++ fp->fd_small = MAYBE; + fold_changed = TRUE; + } + +*** ../vim-7.1.227/src/version.c Sun Jan 13 17:39:29 2008 +--- src/version.c Sun Jan 13 21:56:53 2008 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 228, + /**/ + +-- +VOICE OVER: As the horrendous Black Beast lunged forward, escape for Arthur + and his knights seemed hopeless, when, suddenly ... the animator + suffered a fatal heart attack. +ANIMATOR: Aaaaagh! +VOICE OVER: The cartoon peril was no more ... The Quest for Holy Grail could + continue. + "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 /// diff --git a/7.1.229 b/7.1.229 new file mode 100644 index 00000000..c07e8e20 --- /dev/null +++ b/7.1.229 @@ -0,0 +1,55 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.229 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.229 +Problem: A fold is closed when it shouldn't when 'foldmethod' is "indent" + and backspacing a non-white character so that the indent increases. +Solution: Keep the fold open after backspacing a character. +Files: src/edit.c + + +*** ../vim-7.1.228/src/edit.c Sat Jan 12 18:13:05 2008 +--- src/edit.c Mon Jan 14 20:06:43 2008 +*************** +*** 8618,8623 **** +--- 8619,8632 ---- + if (vim_strchr(p_cpo, CPO_BACKSPACE) != NULL && dollar_vcol == 0) + dollar_vcol = curwin->w_virtcol; + ++ #ifdef FEAT_FOLDING ++ /* When deleting a char the cursor line must never be in a closed fold. ++ * E.g., when 'foldmethod' is indent and deleting the first non-white ++ * char before a Tab. */ ++ if (did_backspace) ++ foldOpenCursor(); ++ #endif ++ + return did_backspace; + } + +*** ../vim-7.1.228/src/version.c Sun Jan 13 21:57:25 2008 +--- src/version.c Mon Jan 14 20:08:35 2008 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 229, + /**/ + +-- +ROBIN: (warily) And if you get a question wrong? +ARTHUR: You are cast into the Gorge of Eternal Peril. +ROBIN: Oh ... wacho! + "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 /// diff --git a/7.1.230 b/7.1.230 new file mode 100644 index 00000000..3cd72706 --- /dev/null +++ b/7.1.230 @@ -0,0 +1,64 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.230 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.230 +Problem: Memory leak when executing SourceCmd autocommands. +Solution: Free the memory. (Dominique Pelle) +Files: src/ex_cmds2.c + + +*** ../vim-7.1.229/src/ex_cmds2.c Sun Jan 6 20:05:36 2008 +--- src/ex_cmds2.c Tue Jan 15 20:41:28 2008 +*************** +*** 2889,2899 **** + if (has_autocmd(EVENT_SOURCECMD, fname_exp, NULL) + && apply_autocmds(EVENT_SOURCECMD, fname_exp, fname_exp, + FALSE, curbuf)) + # ifdef FEAT_EVAL +! return aborting() ? FAIL : OK; + # else +! return OK; + # endif + + /* Apply SourcePre autocommands, they may get the file. */ + apply_autocmds(EVENT_SOURCEPRE, fname_exp, fname_exp, FALSE, curbuf); +--- 2889,2902 ---- + if (has_autocmd(EVENT_SOURCECMD, fname_exp, NULL) + && apply_autocmds(EVENT_SOURCECMD, fname_exp, fname_exp, + FALSE, curbuf)) ++ { + # ifdef FEAT_EVAL +! retval = aborting() ? FAIL : OK; + # else +! retval = OK; + # endif ++ goto theend; ++ } + + /* Apply SourcePre autocommands, they may get the file. */ + apply_autocmds(EVENT_SOURCEPRE, fname_exp, fname_exp, FALSE, curbuf); +*** ../vim-7.1.229/src/version.c Mon Jan 14 20:11:37 2008 +--- src/version.c Tue Jan 15 22:15:03 2008 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 230, + /**/ + +-- +Citizens are not allowed to attend a movie house or theater nor ride in a +public streetcar within at least four hours after eating garlic. + [real standing law in Indiana, United States of America] + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.231 b/7.1.231 new file mode 100644 index 00000000..e9c78859 --- /dev/null +++ b/7.1.231 @@ -0,0 +1,291 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.231 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.231 +Problem: When shifting lines the change is acted upon multiple times. +Solution: Don't have shift_line() call changed_bytes. +Files: src/edit.c, src/ops.c, src/proto/edit.pro, src/proto/ops.pro + + +*** ../vim-7.1.230/src/edit.c Mon Jan 14 20:11:37 2008 +--- src/edit.c Mon Jan 14 20:06:43 2008 +*************** +*** 1662,1672 **** + * if round is TRUE, round the indent to 'shiftwidth' (only with _INC and _Dec). + */ + void +! change_indent(type, amount, round, replaced) + int type; + int amount; + int round; + int replaced; /* replaced character, put on replace stack */ + { + int vcol; + int last_vcol; +--- 1662,1673 ---- + * if round is TRUE, round the indent to 'shiftwidth' (only with _INC and _Dec). + */ + void +! change_indent(type, amount, round, replaced, call_changed_bytes) + int type; + int amount; + int round; + int replaced; /* replaced character, put on replace stack */ ++ int call_changed_bytes; /* call changed_bytes() */ + { + int vcol; + int last_vcol; +*************** +*** 1723,1729 **** + * Set the new indent. The cursor will be put on the first non-blank. + */ + if (type == INDENT_SET) +! (void)set_indent(amount, SIN_CHANGED); + else + { + #ifdef FEAT_VREPLACE +--- 1724,1730 ---- + * Set the new indent. The cursor will be put on the first non-blank. + */ + if (type == INDENT_SET) +! (void)set_indent(amount, call_changed_bytes ? SIN_CHANGED : 0); + else + { + #ifdef FEAT_VREPLACE +*************** +*** 1733,1739 **** + if (State & VREPLACE_FLAG) + State = INSERT; + #endif +! shift_line(type == INDENT_DEC, round, 1); + #ifdef FEAT_VREPLACE + State = save_State; + #endif +--- 1734,1740 ---- + if (State & VREPLACE_FLAG) + State = INSERT; + #endif +! shift_line(type == INDENT_DEC, round, 1, call_changed_bytes); + #ifdef FEAT_VREPLACE + State = save_State; + #endif +*************** +*** 5921,5927 **** + { + #ifdef FEAT_VREPLACE + if (State & VREPLACE_FLAG) +! change_indent(INDENT_SET, second_indent, FALSE, NUL); + else + #endif + (void)set_indent(second_indent, SIN_CHANGED); +--- 5922,5928 ---- + { + #ifdef FEAT_VREPLACE + if (State & VREPLACE_FLAG) +! change_indent(INDENT_SET, second_indent, FALSE, NUL, TRUE); + else + #endif + (void)set_indent(second_indent, SIN_CHANGED); +*************** +*** 7227,7233 **** + fixthisline(get_the_indent) + int (*get_the_indent) __ARGS((void)); + { +! change_indent(INDENT_SET, get_the_indent(), FALSE, 0); + if (linewhite(curwin->w_cursor.lnum)) + did_ai = TRUE; /* delete the indent if the line stays empty */ + } +--- 7228,7234 ---- + fixthisline(get_the_indent) + int (*get_the_indent) __ARGS((void)); + { +! change_indent(INDENT_SET, get_the_indent(), FALSE, 0, TRUE); + if (linewhite(curwin->w_cursor.lnum)) + did_ai = TRUE; /* delete the indent if the line stays empty */ + } +*************** +*** 8170,8179 **** + replace_pop_ins(); + if (lastc == '^') + old_indent = get_indent(); /* remember curr. indent */ +! change_indent(INDENT_SET, 0, TRUE, 0); + } + else +! change_indent(c == Ctrl_D ? INDENT_DEC : INDENT_INC, 0, TRUE, 0); + + if (did_ai && *skipwhite(ml_get_curline()) != NUL) + did_ai = FALSE; +--- 8171,8180 ---- + replace_pop_ins(); + if (lastc == '^') + old_indent = get_indent(); /* remember curr. indent */ +! change_indent(INDENT_SET, 0, TRUE, 0, TRUE); + } + else +! change_indent(c == Ctrl_D ? INDENT_DEC : INDENT_INC, 0, TRUE, 0, TRUE); + + if (did_ai && *skipwhite(ml_get_curline()) != NUL) + did_ai = FALSE; +*************** +*** 9633,9639 **** + curwin->w_cursor = old_pos; + #ifdef FEAT_VREPLACE + if (State & VREPLACE_FLAG) +! change_indent(INDENT_SET, i, FALSE, NUL); + else + #endif + (void)set_indent(i, SIN_CHANGED); +--- 9634,9640 ---- + curwin->w_cursor = old_pos; + #ifdef FEAT_VREPLACE + if (State & VREPLACE_FLAG) +! change_indent(INDENT_SET, i, FALSE, NUL, TRUE); + else + #endif + (void)set_indent(i, SIN_CHANGED); +*************** +*** 9662,9668 **** + curwin->w_cursor = old_pos; + } + if (temp) +! shift_line(TRUE, FALSE, 1); + } + } + +--- 9663,9669 ---- + curwin->w_cursor = old_pos; + } + if (temp) +! shift_line(TRUE, FALSE, 1, TRUE); + } + } + +*** ../vim-7.1.230/src/ops.c Thu Jan 3 16:31:17 2008 +--- src/ops.c Sun Jan 13 21:52:18 2008 +*************** +*** 258,264 **** + if (first_char != '#' || !preprocs_left()) + #endif + { +! shift_line(oap->op_type == OP_LSHIFT, p_sr, amount); + } + ++curwin->w_cursor.lnum; + } +--- 258,264 ---- + if (first_char != '#' || !preprocs_left()) + #endif + { +! shift_line(oap->op_type == OP_LSHIFT, p_sr, amount, FALSE); + } + ++curwin->w_cursor.lnum; + } +*************** +*** 321,330 **** + * leaves cursor on first blank in the line + */ + void +! shift_line(left, round, amount) + int left; + int round; + int amount; + { + int count; + int i, j; +--- 321,331 ---- + * leaves cursor on first blank in the line + */ + void +! shift_line(left, round, amount, call_changed_bytes) + int left; + int round; + int amount; ++ int call_changed_bytes; /* call changed_bytes() */ + { + int count; + int i, j; +*************** +*** 363,372 **** + /* Set new indent */ + #ifdef FEAT_VREPLACE + if (State & VREPLACE_FLAG) +! change_indent(INDENT_SET, count, FALSE, NUL); + else + #endif +! (void)set_indent(count, SIN_CHANGED); + } + + #if defined(FEAT_VISUALEXTRA) || defined(PROTO) +--- 364,373 ---- + /* Set new indent */ + #ifdef FEAT_VREPLACE + if (State & VREPLACE_FLAG) +! change_indent(INDENT_SET, count, FALSE, NUL, call_changed_bytes); + else + #endif +! (void)set_indent(count, call_changed_bytes ? SIN_CHANGED : 0); + } + + #if defined(FEAT_VISUALEXTRA) || defined(PROTO) +*** ../vim-7.1.230/src/proto/edit.pro Wed Jan 2 17:48:24 2008 +--- src/proto/edit.pro Sun Jan 13 21:52:27 2008 +*************** +*** 3,9 **** + void edit_putchar __ARGS((int c, int highlight)); + void edit_unputchar __ARGS((void)); + void display_dollar __ARGS((colnr_T col)); +! void change_indent __ARGS((int type, int amount, int round, int replaced)); + void truncate_spaces __ARGS((char_u *line)); + void backspace_until_column __ARGS((int col)); + int vim_is_ctrl_x_key __ARGS((int c)); +--- 3,9 ---- + void edit_putchar __ARGS((int c, int highlight)); + void edit_unputchar __ARGS((void)); + void display_dollar __ARGS((colnr_T col)); +! void change_indent __ARGS((int type, int amount, int round, int replaced, int call_changed_bytes)); + void truncate_spaces __ARGS((char_u *line)); + void backspace_until_column __ARGS((int col)); + int vim_is_ctrl_x_key __ARGS((int c)); +*** ../vim-7.1.230/src/proto/ops.pro Sun May 6 13:56:32 2007 +--- src/proto/ops.pro Sun Jan 13 21:52:30 2008 +*************** +*** 4,10 **** + int get_op_char __ARGS((int optype)); + int get_extra_op_char __ARGS((int optype)); + void op_shift __ARGS((oparg_T *oap, int curs_top, int amount)); +! void shift_line __ARGS((int left, int round, int amount)); + void op_reindent __ARGS((oparg_T *oap, int (*how)(void))); + int get_expr_register __ARGS((void)); + void set_expr_line __ARGS((char_u *new_line)); +--- 4,10 ---- + int get_op_char __ARGS((int optype)); + int get_extra_op_char __ARGS((int optype)); + void op_shift __ARGS((oparg_T *oap, int curs_top, int amount)); +! void shift_line __ARGS((int left, int round, int amount, int call_changed_bytes)); + void op_reindent __ARGS((oparg_T *oap, int (*how)(void))); + int get_expr_register __ARGS((void)); + void set_expr_line __ARGS((char_u *new_line)); +*** ../vim-7.1.230/src/version.c Tue Jan 15 22:16:36 2008 +--- src/version.c Wed Jan 16 19:58:25 2008 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 231, + /**/ + +-- +Snoring is prohibited unless all bedroom windows are closed and securely +locked. + [real standing law in Massachusetts, United States of America] + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.232 b/7.1.232 new file mode 100644 index 00000000..092d6fa9 --- /dev/null +++ b/7.1.232 @@ -0,0 +1,70 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.232 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.232 (after 7.1.207 and 7.1.211) +Problem: Compiler warnings with MSVC. +Solution: Add type casts. (Mike Williams) +Files: src/ex_cmds2.c, src/netbeans.c + + +*** ../vim-7.1.231/src/ex_cmds2.c Tue Jan 15 22:16:36 2008 +--- src/ex_cmds2.c Tue Jan 15 20:41:28 2008 +*************** +*** 916,922 **** + + QueryPerformanceCounter(tm); + QueryPerformanceFrequency(&fr); +! tm->QuadPart += (double)msec / 1000.0 * (double)fr.QuadPart; + # else + long usec; + +--- 916,922 ---- + + QueryPerformanceCounter(tm); + QueryPerformanceFrequency(&fr); +! tm->QuadPart += (LONGLONG)((double)msec / 1000.0 * (double)fr.QuadPart); + # else + long usec; + +*** ../vim-7.1.231/src/netbeans.c Sat Jan 5 18:06:33 2008 +--- src/netbeans.c Mon Jan 14 21:11:02 2008 +*************** +*** 1217,1223 **** + + oldtext = ml_get(lnum); + oldlen = STRLEN(oldtext); +! if (first >= oldlen || oldlen == 0) /* just in case */ + return; + if (lastbyte >= oldlen) + lastbyte = oldlen - 1; +--- 1217,1223 ---- + + oldtext = ml_get(lnum); + oldlen = STRLEN(oldtext); +! if (first >= (colnr_T)oldlen || oldlen == 0) /* just in case */ + return; + if (lastbyte >= oldlen) + lastbyte = oldlen - 1; +*** ../vim-7.1.231/src/version.c Wed Jan 16 20:01:14 2008 +--- src/version.c Fri Jan 18 11:38:39 2008 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 232, + /**/ + +-- +Why is "abbreviation" such a long word? + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.233 b/7.1.233 new file mode 100644 index 00000000..b2f07e3f --- /dev/null +++ b/7.1.233 @@ -0,0 +1,109 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.233 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.233 +Problem: Crash when doing Insert mode completion for a user defined + command. (Yegappan Lakshmanan) +Solution: Don't use the non-existing command line. +Files: src/ex_getln.c + + +*** ../vim-7.1.232/src/ex_getln.c Fri Jan 4 15:16:57 2008 +--- src/ex_getln.c Fri Jan 18 13:07:11 2008 +*************** +*** 4655,4661 **** + static void * call_user_expand_func __ARGS((void *(*user_expand_func) __ARGS((char_u *, int, char_u **, int)), expand_T *xp, int *num_file, char_u ***file)); + + /* +! * call "user_expand_func()" to invoke a user defined VimL function and return + * the result (either a string or a List). + */ + static void * +--- 4655,4661 ---- + static void * call_user_expand_func __ARGS((void *(*user_expand_func) __ARGS((char_u *, int, char_u **, int)), expand_T *xp, int *num_file, char_u ***file)); + + /* +! * Call "user_expand_func()" to invoke a user defined VimL function and return + * the result (either a string or a List). + */ + static void * +*************** +*** 4677,4687 **** + *num_file = 0; + *file = NULL; + +! keep = ccline.cmdbuff[ccline.cmdlen]; +! ccline.cmdbuff[ccline.cmdlen] = 0; +! sprintf((char *)num, "%d", ccline.cmdpos); + args[0] = xp->xp_pattern; +- args[1] = ccline.cmdbuff; + args[2] = num; + + /* Save the cmdline, we don't know what the function may do. */ +--- 4677,4698 ---- + *num_file = 0; + *file = NULL; + +! if (ccline.cmdbuff == NULL) +! { +! /* Completion from Insert mode, pass fake arguments. */ +! keep = 0; +! sprintf((char *)num, "%d", STRLEN(xp->xp_pattern)); +! args[1] = xp->xp_pattern; +! } +! else +! { +! /* Completion on the command line, pass real arguments. */ +! keep = ccline.cmdbuff[ccline.cmdlen]; +! ccline.cmdbuff[ccline.cmdlen] = 0; +! sprintf((char *)num, "%d", ccline.cmdpos); +! args[1] = ccline.cmdbuff; +! } + args[0] = xp->xp_pattern; + args[2] = num; + + /* Save the cmdline, we don't know what the function may do. */ +*************** +*** 4694,4701 **** + + ccline = save_ccline; + current_SID = save_current_SID; +! +! ccline.cmdbuff[ccline.cmdlen] = keep; + + return ret; + } +--- 4705,4712 ---- + + ccline = save_ccline; + current_SID = save_current_SID; +! if (ccline.cmdbuff != NULL) +! ccline.cmdbuff[ccline.cmdlen] = keep; + + return ret; + } +*** ../vim-7.1.232/src/version.c Fri Jan 18 11:40:02 2008 +--- src/version.c Fri Jan 18 13:01:05 2008 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 233, + /**/ + +-- +"I love deadlines. I especially like the whooshing sound they +make as they go flying by." + -- Douglas Adams + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.234 b/7.1.234 new file mode 100644 index 00000000..03fa34da --- /dev/null +++ b/7.1.234 @@ -0,0 +1,210 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.234 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.234 +Problem: When diff'ing three files the third one isn't displayed correctly. + (Gary Johnson) +Solution: Compute the size of diff blocks correctly when merging blocks. + Compute filler lines correctly when scrolling. +Files: src/diff.c + + +*** ../vim-7.1.233/src/diff.c Fri Oct 19 18:57:33 2007 +--- src/diff.c Fri Jan 18 17:32:31 2008 +*************** +*** 1299,1305 **** + } + else + /* second overlap of new block with existing block */ +! dp->df_count[idx_new] += count_new - count_orig; + + /* Adjust the size of the block to include all the lines to the + * end of the existing block or the new diff, whatever ends last. */ +--- 1299,1307 ---- + } + else + /* second overlap of new block with existing block */ +! dp->df_count[idx_new] += count_new - count_orig +! + dpl->df_lnum[idx_orig] + dpl->df_count[idx_orig] +! - (dp->df_lnum[idx_orig] + dp->df_count[idx_orig]); + + /* Adjust the size of the block to include all the lines to the + * end of the existing block or the new diff, whatever ends last. */ +*************** +*** 1628,1641 **** + win_T *fromwin; + win_T *towin; + { +! buf_T *buf = fromwin->w_buffer; + linenr_T lnum = fromwin->w_topline; +! int idx; + diff_T *dp; + int i; + +! idx = diff_buf_idx(buf); +! if (idx == DB_COUNT) + return; /* safety check */ + + if (curtab->tp_diff_invalid) +--- 1630,1645 ---- + win_T *fromwin; + win_T *towin; + { +! buf_T *frombuf = fromwin->w_buffer; + linenr_T lnum = fromwin->w_topline; +! int fromidx; +! int toidx; + diff_T *dp; ++ int max_count; + int i; + +! fromidx = diff_buf_idx(frombuf); +! if (fromidx == DB_COUNT) + return; /* safety check */ + + if (curtab->tp_diff_invalid) +*************** +*** 1645,1686 **** + + /* search for a change that includes "lnum" in the list of diffblocks. */ + for (dp = curtab->tp_first_diff; dp != NULL; dp = dp->df_next) +! if (lnum <= dp->df_lnum[idx] + dp->df_count[idx]) + break; + if (dp == NULL) + { + /* After last change, compute topline relative to end of file; no + * filler lines. */ + towin->w_topline = towin->w_buffer->b_ml.ml_line_count +! - (buf->b_ml.ml_line_count - lnum); + } + else + { + /* Find index for "towin". */ +! i = diff_buf_idx(towin->w_buffer); +! if (i == DB_COUNT) + return; /* safety check */ + +! towin->w_topline = lnum + (dp->df_lnum[i] - dp->df_lnum[idx]); +! if (lnum >= dp->df_lnum[idx]) + { +! /* Inside a change: compute filler lines. */ +! if (dp->df_count[i] == dp->df_count[idx]) + towin->w_topfill = fromwin->w_topfill; +! else if (dp->df_count[i] > dp->df_count[idx]) + { +! if (lnum == dp->df_lnum[idx] + dp->df_count[idx]) +! towin->w_topline = dp->df_lnum[i] + dp->df_count[i] +! - fromwin->w_topfill; + } +! else + { +! if (towin->w_topline >= dp->df_lnum[i] + dp->df_count[i]) + { +! if (diff_flags & DIFF_FILLER) +! towin->w_topfill = dp->df_lnum[idx] +! + dp->df_count[idx] - lnum; +! towin->w_topline = dp->df_lnum[i] + dp->df_count[i]; + } + } + } +--- 1649,1720 ---- + + /* search for a change that includes "lnum" in the list of diffblocks. */ + for (dp = curtab->tp_first_diff; dp != NULL; dp = dp->df_next) +! if (lnum <= dp->df_lnum[fromidx] + dp->df_count[fromidx]) + break; + if (dp == NULL) + { + /* After last change, compute topline relative to end of file; no + * filler lines. */ + towin->w_topline = towin->w_buffer->b_ml.ml_line_count +! - (frombuf->b_ml.ml_line_count - lnum); + } + else + { + /* Find index for "towin". */ +! toidx = diff_buf_idx(towin->w_buffer); +! if (toidx == DB_COUNT) + return; /* safety check */ + +! towin->w_topline = lnum + (dp->df_lnum[toidx] - dp->df_lnum[fromidx]); +! if (lnum >= dp->df_lnum[fromidx]) + { +! /* Inside a change: compute filler lines. With three or more +! * buffers we need to know the largest count. */ +! max_count = 0; +! for (i = 0; i < DB_COUNT; ++i) +! if (curtab->tp_diffbuf[i] != NULL +! && max_count < dp->df_count[i]) +! max_count = dp->df_count[i]; +! +! if (dp->df_count[toidx] == dp->df_count[fromidx]) +! { +! /* same number of lines: use same filler count */ + towin->w_topfill = fromwin->w_topfill; +! } +! else if (dp->df_count[toidx] > dp->df_count[fromidx]) + { +! if (lnum == dp->df_lnum[fromidx] + dp->df_count[fromidx]) +! { +! /* more lines in towin and fromwin doesn't show diff +! * lines, only filler lines */ +! if (max_count - fromwin->w_topfill >= dp->df_count[toidx]) +! { +! /* towin also only shows filler lines */ +! towin->w_topline = dp->df_lnum[toidx] +! + dp->df_count[toidx]; +! towin->w_topfill = fromwin->w_topfill; +! } +! else +! /* towin still has some diff lines to show */ +! towin->w_topline = dp->df_lnum[toidx] +! + max_count - fromwin->w_topfill; +! } + } +! else if (towin->w_topline >= dp->df_lnum[toidx] +! + dp->df_count[toidx]) + { +! /* less lines in towin and no diff lines to show: compute +! * filler lines */ +! towin->w_topline = dp->df_lnum[toidx] + dp->df_count[toidx]; +! if (diff_flags & DIFF_FILLER) + { +! if (lnum == dp->df_lnum[fromidx] + dp->df_count[fromidx]) +! /* fromwin is also out of diff lines */ +! towin->w_topfill = fromwin->w_topfill; +! else +! /* fromwin has some diff lines */ +! towin->w_topfill = dp->df_lnum[fromidx] +! + max_count - lnum; + } + } + } +*** ../vim-7.1.233/src/version.c Fri Jan 18 13:15:32 2008 +--- src/version.c Fri Jan 18 17:37:32 2008 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 234, + /**/ + +-- +ERIC IDLE PLAYED: THE DEAD COLLECTOR, MR BINT (A VILLAGE NE'ER-DO -WELL VERY + KEEN ON BURNING WITCHES), SIR ROBIN, THE GUARD WHO DOESN'T + HICOUGH BUT TRIES TO GET THINGS STRAIGHT, CONCORDE (SIR + LAUNCELOT'S TRUSTY STEED), ROGER THE SHRUBBER (A SHRUBBER), + BROTHER MAYNARD + "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 /// diff --git a/7.1.235 b/7.1.235 new file mode 100644 index 00000000..4ea2e396 --- /dev/null +++ b/7.1.235 @@ -0,0 +1,199 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.235 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.235 +Problem: Pattern matching is slow when using a lot of simple patterns. +Solution: Avoid allocating memory by not freeing it when it's not so much. + (Alexei Alexandrov) +Files: src/regexp.c + + +*** ../vim-7.1.234/src/regexp.c Wed Jan 2 15:34:48 2008 +--- src/regexp.c Fri Jan 18 20:35:21 2008 +*************** +*** 378,391 **** + + static char_u *reg_prev_sub = NULL; + +- #if defined(EXITFREE) || defined(PROTO) +- void +- free_regexp_stuff() +- { +- vim_free(reg_prev_sub); +- } +- #endif +- + /* + * REGEXP_INRANGE contains all characters which are always special in a [] + * range after '\'. +--- 378,383 ---- +*************** +*** 3206,3217 **** + } backpos_T; + + /* +! * regstack and backpos are used by regmatch(). They are kept over calls to +! * avoid invoking malloc() and free() often. + */ +! static garray_T regstack; /* stack with regitem_T items, sometimes +! preceded by regstar_T or regbehind_T. */ +! static garray_T backpos; /* table with backpos_T for BACK */ + + /* + * Get pointer to the line "lnum", which is relative to "reg_firstlnum". +--- 3198,3236 ---- + } backpos_T; + + /* +! * "regstack" and "backpos" are used by regmatch(). They are kept over calls +! * to avoid invoking malloc() and free() often. +! * "regstack" is a stack with regitem_T items, sometimes preceded by regstar_T +! * or regbehind_T. +! * "backpos_T" is a table with backpos_T for BACK +! */ +! static garray_T regstack = {0, 0, 0, 0, NULL}; +! static garray_T backpos = {0, 0, 0, 0, NULL}; +! +! /* +! * Both for regstack and backpos tables we use the following strategy of +! * allocation (to reduce malloc/free calls): +! * - Initial size is fairly small. +! * - When needed, the tables are grown bigger (8 times at first, double after +! * that). +! * - After executing the match we free the memory only if the array has grown. +! * Thus the memory is kept allocated when it's at the initial size. +! * This makes it fast while not keeping a lot of memory allocated. +! * A three times speed increase was observed when using many simple patterns. + */ +! #define REGSTACK_INITIAL 2048 +! #define BACKPOS_INITIAL 64 +! +! #if defined(EXITFREE) || defined(PROTO) +! void +! free_regexp_stuff() +! { +! ga_clear(®stack); +! ga_clear(&backpos); +! vim_free(reg_tofree); +! vim_free(reg_prev_sub); +! } +! #endif + + /* + * Get pointer to the line "lnum", which is relative to "reg_firstlnum". +*************** +*** 3346,3360 **** + char_u *s; + long retval = 0L; + +! reg_tofree = NULL; +! +! /* Init the regstack empty. Use an item size of 1 byte, since we push +! * different things onto it. Use a large grow size to avoid reallocating +! * it too often. */ +! ga_init2(®stack, 1, 10000); +! +! /* Init the backpos table empty. */ +! ga_init2(&backpos, sizeof(backpos_T), 10); + + if (REG_MULTI) + { +--- 3365,3389 ---- + char_u *s; + long retval = 0L; + +! /* Create "regstack" and "backpos" if they are not allocated yet. +! * We allocate *_INITIAL amount of bytes first and then set the grow size +! * to much bigger value to avoid many malloc calls in case of deep regular +! * expressions. */ +! if (regstack.ga_data == NULL) +! { +! /* Use an item size of 1 byte, since we push different things +! * onto the regstack. */ +! ga_init2(®stack, 1, REGSTACK_INITIAL); +! ga_grow(®stack, REGSTACK_INITIAL); +! regstack.ga_growsize = REGSTACK_INITIAL * 8; +! } +! +! if (backpos.ga_data == NULL) +! { +! ga_init2(&backpos, sizeof(backpos_T), BACKPOS_INITIAL); +! ga_grow(&backpos, BACKPOS_INITIAL); +! backpos.ga_growsize = BACKPOS_INITIAL * 8; +! } + + if (REG_MULTI) + { +*************** +*** 3525,3533 **** + } + + theend: +! vim_free(reg_tofree); +! ga_clear(®stack); +! ga_clear(&backpos); + + return retval; + } +--- 3554,3570 ---- + } + + theend: +! /* Free "reg_tofree" when it's a bit big. +! * Free regstack and backpos if they are bigger than their initial size. */ +! if (reg_tofreelen > 400) +! { +! vim_free(reg_tofree); +! reg_tofree = NULL; +! } +! if (regstack.ga_maxlen > REGSTACK_INITIAL) +! ga_clear(®stack); +! if (backpos.ga_maxlen > BACKPOS_INITIAL) +! ga_clear(&backpos); + + return retval; + } +*************** +*** 3717,3724 **** + #define RA_MATCH 4 /* successful match */ + #define RA_NOMATCH 5 /* didn't match */ + +! /* Init the regstack and backpos table empty. They are initialized and +! * freed in vim_regexec_both() to reduce malloc()/free() calls. */ + regstack.ga_len = 0; + backpos.ga_len = 0; + +--- 3754,3761 ---- + #define RA_MATCH 4 /* successful match */ + #define RA_NOMATCH 5 /* didn't match */ + +! /* Make "regstack" and "backpos" empty. They are allocated and freed in +! * vim_regexec_both() to reduce malloc()/free() calls. */ + regstack.ga_len = 0; + backpos.ga_len = 0; + +*** ../vim-7.1.234/src/version.c Fri Jan 18 17:39:10 2008 +--- src/version.c Fri Jan 18 20:33:26 2008 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 235, + /**/ + +-- +NEIL INNES PLAYED: THE FIRST SELF-DESTRUCTIVE MONK, ROBIN'S LEAST FAVORITE + MINSTREL, THE PAGE CRUSHED BY A RABBIT, THE OWNER OF A DUCK + "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 /// diff --git a/7.1.236 b/7.1.236 new file mode 100644 index 00000000..32944c75 --- /dev/null +++ b/7.1.236 @@ -0,0 +1,920 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.236 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.236 +Problem: When using 'incsearch' and 'hlsearch' a complicated pattern may + make Vim hang until CTRL-C is pressed. +Solution: Add the 'redrawtime' option. +Files: runtime/doc/options.txt, src/ex_cmds.c, src/ex_docmd.c, + src/ex_getln.c, src/gui.c, src/misc1.c, src/normal.c, + src/option.c, src/quickfix.c, src/regexp.c, src/proto/regexp.pro, + src/proto/search.pro, src/search.c, src/screen.c, + src/option.h, src/spell.c, src/structs.h, src/syntax.c, src/tag.c, + src/vim.h + + +*** ../vim-7.1.235/runtime/doc/options.txt Sun Aug 12 16:55:01 2007 +--- runtime/doc/options.txt Sat Jan 19 14:01:22 2008 +*************** +*** 3618,3623 **** +--- 3636,3642 ---- + When you get bored looking at the highlighted matches, you can turn it + off with |:nohlsearch|. As soon as you use a search command, the + highlighting comes back. ++ 'redrawtime' specifies the maximum time spend on finding matches. + When the search pattern can match an end-of-line, Vim will try to + highlight all of the matched text. However, this depends on where the + search starts. This will be the first line in the window or the first +*************** +*** 3851,3856 **** +--- 3870,3879 ---- + original position when no match is found and when pressing . You + still need to finish the search command with to move the + cursor to the match. ++ When compiled with the |+reltime| feature Vim only searches for about ++ half a second. With a complicated pattern and/or a lot of text the ++ match may not be found. This is to avoid that Vim hangs while you ++ are typing the pattern. + The highlighting can be set with the 'i' flag in 'highlight'. + See also: 'hlsearch'. + CTRL-L can be used to add one character from after the current match +*************** +*** 5185,5190 **** +--- 5210,5227 ---- + {not in Vi:} When using the ":view" command the 'readonly' option is + set for the newly edited buffer. + ++ *'redrawtime'* *'rdt'* ++ 'redrawtime' 'rdt' number (default 2000) ++ global ++ {not in Vi} ++ {only available when compiled with the |+reltime| ++ feature} ++ The time in milliseconds for redrawing the display. This applies to ++ searching for patterns for 'hlsearch' and |:match| highlighting. ++ When redrawing takes more than this many milliseconds no further ++ matches will be highlighted. This is used to avoid that Vim hangs ++ when using a very complicated pattern. ++ + *'remap'* *'noremap'* + 'remap' boolean (default on) + global +*** ../vim-7.1.235/src/ex_cmds.c Sun Jan 13 13:30:34 2008 +--- src/ex_cmds.c Sat Jan 19 13:04:28 2008 +*************** +*** 4446,4452 **** + #endif + ); ++lnum) + { +! nmatch = vim_regexec_multi(®match, curwin, curbuf, lnum, (colnr_T)0); + if (nmatch) + { + colnr_T copycol; +--- 4446,4453 ---- + #endif + ); ++lnum) + { +! nmatch = vim_regexec_multi(®match, curwin, curbuf, lnum, +! (colnr_T)0, NULL); + if (nmatch) + { + colnr_T copycol; +*************** +*** 4957,4963 **** + || (do_ask && !re_lookbehind(regmatch.regprog)) + || nmatch_tl > 0 + || (nmatch = vim_regexec_multi(®match, curwin, +! curbuf, sub_firstlnum, matchcol)) == 0 + || regmatch.startpos[0].lnum > 0) + { + if (new_start != NULL) +--- 4958,4965 ---- + || (do_ask && !re_lookbehind(regmatch.regprog)) + || nmatch_tl > 0 + || (nmatch = vim_regexec_multi(®match, curwin, +! curbuf, sub_firstlnum, +! matchcol, NULL)) == 0 + || regmatch.startpos[0].lnum > 0) + { + if (new_start != NULL) +*************** +*** 5022,5028 **** + } + if (nmatch == -1 && !lastone) + nmatch = vim_regexec_multi(®match, curwin, curbuf, +! sub_firstlnum, matchcol); + + /* + * 5. break if there isn't another match in this line +--- 5024,5030 ---- + } + if (nmatch == -1 && !lastone) + nmatch = vim_regexec_multi(®match, curwin, curbuf, +! sub_firstlnum, matchcol, NULL); + + /* + * 5. break if there isn't another match in this line +*************** +*** 5252,5258 **** + for (lnum = eap->line1; lnum <= eap->line2 && !got_int; ++lnum) + { + /* a match on this line? */ +! match = vim_regexec_multi(®match, curwin, curbuf, lnum, (colnr_T)0); + if ((type == 'g' && match) || (type == 'v' && !match)) + { + ml_setmarked(lnum); +--- 5254,5261 ---- + for (lnum = eap->line1; lnum <= eap->line2 && !got_int; ++lnum) + { + /* a match on this line? */ +! match = vim_regexec_multi(®match, curwin, curbuf, lnum, +! (colnr_T)0, NULL); + if ((type == 'g' && match) || (type == 'v' && !match)) + { + ml_setmarked(lnum); +*** ../vim-7.1.235/src/ex_docmd.c Sun Jan 13 17:11:25 2008 +--- src/ex_docmd.c Fri Jan 18 21:01:16 2008 +*************** +*** 3931,3937 **** + curwin->w_cursor.col = 0; + searchcmdlen = 0; + if (!do_search(NULL, c, cmd, 1L, +! SEARCH_HIS + SEARCH_MSG + SEARCH_START)) + { + curwin->w_cursor = pos; + cmd = NULL; +--- 3931,3938 ---- + curwin->w_cursor.col = 0; + searchcmdlen = 0; + if (!do_search(NULL, c, cmd, 1L, +! SEARCH_HIS + SEARCH_MSG + SEARCH_START, +! NULL)) + { + curwin->w_cursor = pos; + cmd = NULL; +*** ../vim-7.1.235/src/ex_getln.c Fri Jan 18 13:15:32 2008 +--- src/ex_getln.c Fri Jan 18 21:34:42 2008 +*************** +*** 1709,1714 **** +--- 1709,1717 ---- + if (p_is && !cmd_silent && (firstc == '/' || firstc == '?')) + { + pos_T end_pos; ++ #ifdef FEAT_RELTIME ++ proftime_T tm; ++ #endif + + /* if there is a character waiting, search and redraw later */ + if (char_avail()) +*************** +*** 1727,1734 **** + cursor_off(); /* so the user knows we're busy */ + out_flush(); + ++emsg_off; /* So it doesn't beep if bad expr */ + i = do_search(NULL, firstc, ccline.cmdbuff, count, +! SEARCH_KEEP + SEARCH_OPT + SEARCH_NOOF + SEARCH_PEEK); + --emsg_off; + /* if interrupted while searching, behave like it failed */ + if (got_int) +--- 1730,1747 ---- + cursor_off(); /* so the user knows we're busy */ + out_flush(); + ++emsg_off; /* So it doesn't beep if bad expr */ ++ #ifdef FEAT_RELTIME ++ /* Set the time limit to half a second. */ ++ profile_setlimit(500L, &tm); ++ #endif + i = do_search(NULL, firstc, ccline.cmdbuff, count, +! SEARCH_KEEP + SEARCH_OPT + SEARCH_NOOF + SEARCH_PEEK, +! #ifdef FEAT_RELTIME +! &tm +! #else +! NULL +! #endif +! ); + --emsg_off; + /* if interrupted while searching, behave like it failed */ + if (got_int) +*** ../vim-7.1.235/src/gui.c Thu Jan 3 16:14:25 2008 +--- src/gui.c Fri Jan 18 21:01:36 2008 +*************** +*** 5052,5058 **** + /* Search for the next match. */ + i = msg_scroll; + do_search(NULL, down ? '/' : '?', ga.ga_data, 1L, +! SEARCH_MSG + SEARCH_MARK); + msg_scroll = i; /* don't let an error message set msg_scroll */ + } + +--- 5052,5058 ---- + /* Search for the next match. */ + i = msg_scroll; + do_search(NULL, down ? '/' : '?', ga.ga_data, 1L, +! SEARCH_MSG + SEARCH_MARK, NULL); + msg_scroll = i; /* don't let an error message set msg_scroll */ + } + +*** ../vim-7.1.235/src/misc1.c Thu Jan 3 12:42:38 2008 +--- src/misc1.c Sat Jan 19 13:04:39 2008 +*************** +*** 437,443 **** + { + regmatch.rmm_ic = FALSE; + regmatch.rmm_maxcol = 0; +! if (vim_regexec_multi(®match, curwin, curbuf, lnum, (colnr_T)0)) + { + pos.lnum = regmatch.endpos[0].lnum + lnum; + pos.col = regmatch.endpos[0].col; +--- 437,444 ---- + { + regmatch.rmm_ic = FALSE; + regmatch.rmm_maxcol = 0; +! if (vim_regexec_multi(®match, curwin, curbuf, lnum, +! (colnr_T)0, NULL)) + { + pos.lnum = regmatch.endpos[0].lnum + lnum; + pos.col = regmatch.endpos[0].col; +*** ../vim-7.1.235/src/normal.c Sat Jan 12 17:11:25 2008 +--- src/normal.c Fri Jan 18 21:01:47 2008 +*************** +*** 6093,6099 **** + curwin->w_set_curswant = TRUE; + + i = do_search(cap->oap, dir, pat, cap->count1, +! opt | SEARCH_OPT | SEARCH_ECHO | SEARCH_MSG); + if (i == 0) + clearop(cap->oap); + else +--- 6093,6099 ---- + curwin->w_set_curswant = TRUE; + + i = do_search(cap->oap, dir, pat, cap->count1, +! opt | SEARCH_OPT | SEARCH_ECHO | SEARCH_MSG, NULL); + if (i == 0) + clearop(cap->oap); + else +*** ../vim-7.1.235/src/option.c Tue Oct 2 20:40:01 2007 +--- src/option.c Sat Jan 19 13:44:33 2008 +*************** +*** 1991,1996 **** +--- 1991,2003 ---- + {"redraw", NULL, P_BOOL|P_VI_DEF, + (char_u *)NULL, PV_NONE, + {(char_u *)FALSE, (char_u *)0L}}, ++ {"redrawtime", "rdt", P_NUM|P_VI_DEF, ++ #ifdef FEAT_RELTIME ++ (char_u *)&p_rdt, PV_NONE, ++ #else ++ (char_u *)NULL, PV_NONE, ++ #endif ++ {(char_u *)2000L, (char_u *)0L}}, + {"remap", NULL, P_BOOL|P_VI_DEF, + (char_u *)&p_remap, PV_NONE, + {(char_u *)TRUE, (char_u *)0L}}, +*** ../vim-7.1.235/src/quickfix.c Sun Sep 30 14:00:41 2007 +--- src/quickfix.c Sat Jan 19 13:04:53 2008 +*************** +*** 1803,1809 **** + /* Move the cursor to the first line in the buffer */ + save_cursor = curwin->w_cursor; + curwin->w_cursor.lnum = 0; +! if (!do_search(NULL, '/', qf_ptr->qf_pattern, (long)1, SEARCH_KEEP)) + curwin->w_cursor = save_cursor; + } + +--- 1803,1810 ---- + /* Move the cursor to the first line in the buffer */ + save_cursor = curwin->w_cursor; + curwin->w_cursor.lnum = 0; +! if (!do_search(NULL, '/', qf_ptr->qf_pattern, (long)1, +! SEARCH_KEEP, NULL)) + curwin->w_cursor = save_cursor; + } + +*************** +*** 3159,3165 **** + { + col = 0; + while (vim_regexec_multi(®match, curwin, buf, lnum, +! col) > 0) + { + ; + if (qf_add_entry(qi, &prevp, +--- 3160,3166 ---- + { + col = 0; + while (vim_regexec_multi(®match, curwin, buf, lnum, +! col, NULL) > 0) + { + ; + if (qf_add_entry(qi, &prevp, +*** ../vim-7.1.235/src/regexp.c Fri Jan 18 20:36:40 2008 +--- src/regexp.c Sat Jan 19 15:18:12 2008 +*************** +*** 3040,3046 **** + } save_se_T; + + static char_u *reg_getline __ARGS((linenr_T lnum)); +! static long vim_regexec_both __ARGS((char_u *line, colnr_T col)); + static long regtry __ARGS((regprog_T *prog, colnr_T col)); + static void cleanup_subexpr __ARGS((void)); + #ifdef FEAT_SYN_HL +--- 3040,3046 ---- + } save_se_T; + + static char_u *reg_getline __ARGS((linenr_T lnum)); +! static long vim_regexec_both __ARGS((char_u *line, colnr_T col, proftime_T *tm)); + static long regtry __ARGS((regprog_T *prog, colnr_T col)); + static void cleanup_subexpr __ARGS((void)); + #ifdef FEAT_SYN_HL +*************** +*** 3284,3290 **** + ireg_icombine = FALSE; + #endif + ireg_maxcol = 0; +! return (vim_regexec_both(line, col) != 0); + } + + #if defined(FEAT_MODIFY_FNAME) || defined(FEAT_EVAL) \ +--- 3284,3290 ---- + ireg_icombine = FALSE; + #endif + ireg_maxcol = 0; +! return (vim_regexec_both(line, col, NULL) != 0); + } + + #if defined(FEAT_MODIFY_FNAME) || defined(FEAT_EVAL) \ +*************** +*** 3308,3314 **** + ireg_icombine = FALSE; + #endif + ireg_maxcol = 0; +! return (vim_regexec_both(line, col) != 0); + } + #endif + +--- 3308,3314 ---- + ireg_icombine = FALSE; + #endif + ireg_maxcol = 0; +! return (vim_regexec_both(line, col, NULL) != 0); + } + #endif + +*************** +*** 3321,3332 **** + * match otherwise. + */ + long +! vim_regexec_multi(rmp, win, buf, lnum, col) + regmmatch_T *rmp; + win_T *win; /* window in which to search or NULL */ + buf_T *buf; /* buffer in which to search */ + linenr_T lnum; /* nr of line to start looking for match */ + colnr_T col; /* column to start looking for match */ + { + long r; + buf_T *save_curbuf = curbuf; +--- 3321,3333 ---- + * match otherwise. + */ + long +! vim_regexec_multi(rmp, win, buf, lnum, col, tm) + regmmatch_T *rmp; + win_T *win; /* window in which to search or NULL */ + buf_T *buf; /* buffer in which to search */ + linenr_T lnum; /* nr of line to start looking for match */ + colnr_T col; /* column to start looking for match */ ++ proftime_T *tm; /* timeout limit or NULL */ + { + long r; + buf_T *save_curbuf = curbuf; +*************** +*** 3346,3352 **** + + /* Need to switch to buffer "buf" to make vim_iswordc() work. */ + curbuf = buf; +! r = vim_regexec_both(NULL, col); + curbuf = save_curbuf; + + return r; +--- 3347,3353 ---- + + /* Need to switch to buffer "buf" to make vim_iswordc() work. */ + curbuf = buf; +! r = vim_regexec_both(NULL, col, tm); + curbuf = save_curbuf; + + return r; +*************** +*** 3356,3365 **** + * Match a regexp against a string ("line" points to the string) or multiple + * lines ("line" is NULL, use reg_getline()). + */ + static long +! vim_regexec_both(line, col) + char_u *line; + colnr_T col; /* column to start looking for match */ + { + regprog_T *prog; + char_u *s; +--- 3357,3368 ---- + * Match a regexp against a string ("line" points to the string) or multiple + * lines ("line" is NULL, use reg_getline()). + */ ++ /*ARGSUSED*/ + static long +! vim_regexec_both(line, col, tm) + char_u *line; + colnr_T col; /* column to start looking for match */ ++ proftime_T *tm; /* timeout limit or NULL */ + { + regprog_T *prog; + char_u *s; +*************** +*** 3502,3507 **** +--- 3505,3513 ---- + } + else + { ++ #ifdef FEAT_RELTIME ++ int tm_count = 0; ++ #endif + /* Messy cases: unanchored match. */ + while (!got_int) + { +*************** +*** 3550,3555 **** +--- 3556,3570 ---- + else + #endif + ++col; ++ #ifdef FEAT_RELTIME ++ /* Check for timeout once in a twenty times to avoid overhead. */ ++ if (tm != NULL && ++tm_count == 20) ++ { ++ tm_count = 0; ++ if (profile_passed_limit(tm)) ++ break; ++ } ++ #endif + } + } + +*** ../vim-7.1.235/src/proto/regexp.pro Sat May 5 19:42:08 2007 +--- src/proto/regexp.pro Sat Jan 19 13:14:09 2008 +*************** +*** 1,13 **** + /* regexp.c */ +- void free_regexp_stuff __ARGS((void)); + int re_multiline __ARGS((regprog_T *prog)); + int re_lookbehind __ARGS((regprog_T *prog)); + char_u *skip_regexp __ARGS((char_u *startp, int dirc, int magic, char_u **newp)); + regprog_T *vim_regcomp __ARGS((char_u *expr, int re_flags)); + int vim_regcomp_had_eol __ARGS((void)); + int vim_regexec __ARGS((regmatch_T *rmp, char_u *line, colnr_T col)); + int vim_regexec_nl __ARGS((regmatch_T *rmp, char_u *line, colnr_T col)); +! long vim_regexec_multi __ARGS((regmmatch_T *rmp, win_T *win, buf_T *buf, linenr_T lnum, colnr_T col)); + reg_extmatch_T *ref_extmatch __ARGS((reg_extmatch_T *em)); + void unref_extmatch __ARGS((reg_extmatch_T *em)); + char_u *regtilde __ARGS((char_u *source, int magic)); +--- 1,13 ---- + /* regexp.c */ + int re_multiline __ARGS((regprog_T *prog)); + int re_lookbehind __ARGS((regprog_T *prog)); + char_u *skip_regexp __ARGS((char_u *startp, int dirc, int magic, char_u **newp)); + regprog_T *vim_regcomp __ARGS((char_u *expr, int re_flags)); + int vim_regcomp_had_eol __ARGS((void)); ++ void free_regexp_stuff __ARGS((void)); + int vim_regexec __ARGS((regmatch_T *rmp, char_u *line, colnr_T col)); + int vim_regexec_nl __ARGS((regmatch_T *rmp, char_u *line, colnr_T col)); +! long vim_regexec_multi __ARGS((regmmatch_T *rmp, win_T *win, buf_T *buf, linenr_T lnum, colnr_T col, proftime_T *tm)); + reg_extmatch_T *ref_extmatch __ARGS((reg_extmatch_T *em)); + void unref_extmatch __ARGS((reg_extmatch_T *em)); + char_u *regtilde __ARGS((char_u *source, int magic)); +*** ../vim-7.1.235/src/proto/search.pro Sun Jan 6 20:05:36 2008 +--- src/proto/search.pro Fri Jan 18 21:03:49 2008 +*************** +*** 11,17 **** + void set_last_search_pat __ARGS((char_u *s, int idx, int magic, int setlast)); + void last_pat_prog __ARGS((regmmatch_T *regmatch)); + int searchit __ARGS((win_T *win, buf_T *buf, pos_T *pos, int dir, char_u *pat, long count, int options, int pat_use, linenr_T stop_lnum, proftime_T *tm)); +! int do_search __ARGS((oparg_T *oap, int dirc, char_u *pat, long count, int options)); + int search_for_exact_line __ARGS((buf_T *buf, pos_T *pos, int dir, char_u *pat)); + int searchc __ARGS((cmdarg_T *cap, int t_cmd)); + pos_T *findmatch __ARGS((oparg_T *oap, int initc)); +--- 11,17 ---- + void set_last_search_pat __ARGS((char_u *s, int idx, int magic, int setlast)); + void last_pat_prog __ARGS((regmmatch_T *regmatch)); + int searchit __ARGS((win_T *win, buf_T *buf, pos_T *pos, int dir, char_u *pat, long count, int options, int pat_use, linenr_T stop_lnum, proftime_T *tm)); +! int do_search __ARGS((oparg_T *oap, int dirc, char_u *pat, long count, int options, proftime_T *tm)); + int search_for_exact_line __ARGS((buf_T *buf, pos_T *pos, int dir, char_u *pat)); + int searchc __ARGS((cmdarg_T *cap, int t_cmd)); + pos_T *findmatch __ARGS((oparg_T *oap, int initc)); +*** ../vim-7.1.235/src/search.c Sun Jan 6 20:05:36 2008 +--- src/search.c Sat Jan 19 13:13:25 2008 +*************** +*** 606,612 **** + * Look for a match somewhere in line "lnum". + */ + nmatched = vim_regexec_multi(®match, win, buf, +! lnum, (colnr_T)0); + /* Abort searching on an error (e.g., out of stack). */ + if (called_emsg) + break; +--- 606,618 ---- + * Look for a match somewhere in line "lnum". + */ + nmatched = vim_regexec_multi(®match, win, buf, +! lnum, (colnr_T)0, +! #ifdef FEAT_RELTIME +! tm +! #else +! NULL +! #endif +! ); + /* Abort searching on an error (e.g., out of stack). */ + if (called_emsg) + break; +*************** +*** 615,623 **** + /* match may actually be in another line when using \zs */ + matchpos = regmatch.startpos[0]; + endpos = regmatch.endpos[0]; +! # ifdef FEAT_EVAL + submatch = first_submatch(®match); +! # endif + /* Line me be past end of buffer for "\n\zs". */ + if (lnum + matchpos.lnum > buf->b_ml.ml_line_count) + ptr = (char_u *)""; +--- 621,629 ---- + /* match may actually be in another line when using \zs */ + matchpos = regmatch.startpos[0]; + endpos = regmatch.endpos[0]; +! #ifdef FEAT_EVAL + submatch = first_submatch(®match); +! #endif + /* Line me be past end of buffer for "\n\zs". */ + if (lnum + matchpos.lnum > buf->b_ml.ml_line_count) + ptr = (char_u *)""; +*************** +*** 693,699 **** + if (ptr[matchcol] == NUL + || (nmatched = vim_regexec_multi(®match, + win, buf, lnum + matchpos.lnum, +! matchcol)) == 0) + { + match_ok = FALSE; + break; +--- 699,711 ---- + if (ptr[matchcol] == NUL + || (nmatched = vim_regexec_multi(®match, + win, buf, lnum + matchpos.lnum, +! matchcol, +! #ifdef FEAT_RELTIME +! tm +! #else +! NULL +! #endif +! )) == 0) + { + match_ok = FALSE; + break; +*************** +*** 799,805 **** + if (ptr[matchcol] == NUL + || (nmatched = vim_regexec_multi(®match, + win, buf, lnum + matchpos.lnum, +! matchcol)) == 0) + break; + + /* Need to get the line pointer again, a +--- 811,823 ---- + if (ptr[matchcol] == NUL + || (nmatched = vim_regexec_multi(®match, + win, buf, lnum + matchpos.lnum, +! matchcol, +! #ifdef FEAT_RELTIME +! tm +! #else +! NULL +! #endif +! )) == 0) + break; + + /* Need to get the line pointer again, a +*************** +*** 977,988 **** + * return 0 for failure, 1 for found, 2 for found and line offset added + */ + int +! do_search(oap, dirc, pat, count, options) + oparg_T *oap; /* can be NULL */ + int dirc; /* '/' or '?' */ + char_u *pat; + long count; + int options; + { + pos_T pos; /* position of the last match */ + char_u *searchstr; +--- 995,1007 ---- + * return 0 for failure, 1 for found, 2 for found and line offset added + */ + int +! do_search(oap, dirc, pat, count, options, tm) + oparg_T *oap; /* can be NULL */ + int dirc; /* '/' or '?' */ + char_u *pat; + long count; + int options; ++ proftime_T *tm; /* timeout limit or NULL */ + { + pos_T pos; /* position of the last match */ + char_u *searchstr; +*************** +*** 1256,1262 **** + (SEARCH_KEEP + SEARCH_PEEK + SEARCH_HIS + + SEARCH_MSG + SEARCH_START + + ((pat != NULL && *pat == ';') ? 0 : SEARCH_NOOF))), +! RE_LAST, (linenr_T)0, NULL); + + if (dircp != NULL) + *dircp = dirc; /* restore second '/' or '?' for normal_cmd() */ +--- 1275,1281 ---- + (SEARCH_KEEP + SEARCH_PEEK + SEARCH_HIS + + SEARCH_MSG + SEARCH_START + + ((pat != NULL && *pat == ';') ? 0 : SEARCH_NOOF))), +! RE_LAST, (linenr_T)0, tm); + + if (dircp != NULL) + *dircp = dirc; /* restore second '/' or '?' for normal_cmd() */ +*** ../vim-7.1.235/src/screen.c Sat Jan 12 16:45:25 2008 +--- src/screen.c Sat Jan 19 13:52:29 2008 +*************** +*** 848,858 **** +--- 848,863 ---- + cur->hl.buf = buf; + cur->hl.lnum = 0; + cur->hl.first_lnum = 0; ++ # ifdef FEAT_RELTIME ++ /* Set the time limit to 'redrawtime'. */ ++ profile_setlimit(p_rdt, &(cur->hl.tm)); ++ # endif + cur = cur->next; + } + search_hl.buf = buf; + search_hl.lnum = 0; + search_hl.first_lnum = 0; ++ /* time limit is set at the toplevel, for all windows */ + #endif + + #ifdef FEAT_LINEBREAK +*************** +*** 6462,6467 **** +--- 6467,6476 ---- + { + last_pat_prog(&search_hl.rm); + search_hl.attr = hl_attr(HLF_L); ++ # ifdef FEAT_RELTIME ++ /* Set the time limit to 'redrawtime'. */ ++ profile_setlimit(p_rdt, &search_hl.tm); ++ # endif + } + } + +*************** +*** 6587,6592 **** +--- 6596,6609 ---- + called_emsg = FALSE; + for (;;) + { ++ #ifdef FEAT_RELTIME ++ /* Stop searching after passing the time limit. */ ++ if (profile_passed_limit(&(shl->tm))) ++ { ++ shl->lnum = 0; /* no match found in time */ ++ break; ++ } ++ #endif + /* Three situations: + * 1. No useful previous match: search from start of line. + * 2. Not Vi compatible or empty match: continue at next character. +*************** +*** 6620,6626 **** + matchcol = shl->rm.endpos[0].col; + + shl->lnum = lnum; +! nmatched = vim_regexec_multi(&shl->rm, win, shl->buf, lnum, matchcol); + if (called_emsg) + { + /* Error while handling regexp: stop using this regexp. */ +--- 6637,6649 ---- + matchcol = shl->rm.endpos[0].col; + + shl->lnum = lnum; +! nmatched = vim_regexec_multi(&shl->rm, win, shl->buf, lnum, matchcol, +! #ifdef FEAT_RELTIME +! &(shl->tm) +! #else +! NULL +! #endif +! ); + if (called_emsg) + { + /* Error while handling regexp: stop using this regexp. */ +*** ../vim-7.1.235/src/option.h Thu May 10 20:34:47 2007 +--- src/option.h Sat Jan 19 13:45:51 2008 +*************** +*** 633,638 **** +--- 633,641 ---- + #ifdef FEAT_SEARCHPATH + EXTERN char_u *p_cdpath; /* 'cdpath' */ + #endif ++ #ifdef FEAT_RELTIME ++ EXTERN long p_rdt; /* 'redrawtime' */ ++ #endif + EXTERN int p_remap; /* 'remap' */ + EXTERN long p_report; /* 'report' */ + #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX) +*** ../vim-7.1.235/src/spell.c Sat Jan 12 16:45:25 2008 +--- src/spell.c Fri Jan 18 21:02:47 2008 +*************** +*** 10343,10349 **** + curwin->w_cursor.lnum = 0; + while (!got_int) + { +! if (do_search(NULL, '/', frompat, 1L, SEARCH_KEEP) == 0 + || u_save_cursor() == FAIL) + break; + +--- 10343,10349 ---- + curwin->w_cursor.lnum = 0; + while (!got_int) + { +! if (do_search(NULL, '/', frompat, 1L, SEARCH_KEEP, NULL) == 0 + || u_save_cursor() == FAIL) + break; + +*** ../vim-7.1.235/src/structs.h Mon Oct 1 22:53:27 2007 +--- src/structs.h Fri Jan 18 21:18:53 2008 +*************** +*** 1717,1722 **** +--- 1717,1725 ---- + linenr_T first_lnum; /* first lnum to search for multi-line pat */ + colnr_T startcol; /* in win_line() points to char where HL starts */ + colnr_T endcol; /* in win_line() points to char where HL ends */ ++ #ifdef FEAT_RELTIME ++ proftime_T tm; /* for a time limit */ ++ #endif + } match_T; + + /* +*** ../vim-7.1.235/src/syntax.c Sun Jan 13 17:39:29 2008 +--- src/syntax.c Sat Jan 19 13:13:49 2008 +*************** +*** 3097,3103 **** + colnr_T col; + { + rmp->rmm_maxcol = syn_buf->b_p_smc; +! if (vim_regexec_multi(rmp, syn_win, syn_buf, lnum, col) > 0) + { + rmp->startpos[0].lnum += lnum; + rmp->endpos[0].lnum += lnum; +--- 3097,3103 ---- + colnr_T col; + { + rmp->rmm_maxcol = syn_buf->b_p_smc; +! if (vim_regexec_multi(rmp, syn_win, syn_buf, lnum, col, NULL) > 0) + { + rmp->startpos[0].lnum += lnum; + rmp->endpos[0].lnum += lnum; +*** ../vim-7.1.235/src/tag.c Thu May 10 19:44:07 2007 +--- src/tag.c Fri Jan 18 21:03:41 2008 +*************** +*** 3191,3197 **** + #endif + save_lnum = curwin->w_cursor.lnum; + curwin->w_cursor.lnum = 0; /* start search before first line */ +! if (do_search(NULL, pbuf[0], pbuf + 1, (long)1, search_options)) + retval = OK; + else + { +--- 3191,3198 ---- + #endif + save_lnum = curwin->w_cursor.lnum; + curwin->w_cursor.lnum = 0; /* start search before first line */ +! if (do_search(NULL, pbuf[0], pbuf + 1, (long)1, +! search_options, NULL)) + retval = OK; + else + { +*************** +*** 3203,3209 **** + */ + p_ic = TRUE; + if (!do_search(NULL, pbuf[0], pbuf + 1, (long)1, +! search_options)) + { + /* + * Failed to find pattern, take a guess: "^func (" +--- 3204,3210 ---- + */ + p_ic = TRUE; + if (!do_search(NULL, pbuf[0], pbuf + 1, (long)1, +! search_options, NULL)) + { + /* + * Failed to find pattern, take a guess: "^func (" +*************** +*** 3213,3225 **** + cc = *tagp.tagname_end; + *tagp.tagname_end = NUL; + sprintf((char *)pbuf, "^%s\\s\\*(", tagp.tagname); +! if (!do_search(NULL, '/', pbuf, (long)1, search_options)) + { + /* Guess again: "^char * \ /* for access() */ + + # define stat(a,b) (access(a,0) ? -1 : stat(a,b)) +- #endif +- +- #if (defined(FEAT_PROFILE) || defined(FEAT_RELTIME)) && !defined(PROTO) +- # ifdef WIN3264 +- typedef LARGE_INTEGER proftime_T; +- # else +- typedef struct timeval proftime_T; +- # endif +- #else +- typedef int proftime_T; /* dummy for function prototypes */ + #endif + + #include "ex_cmds.h" /* Ex command defines */ +--- 1770,1775 ---- +*** ../vim-7.1.235/src/version.c Fri Jan 18 20:36:40 2008 +--- src/version.c Sat Jan 19 15:19:48 2008 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 236, + /**/ + +-- +Every time I lose weight, it finds me 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 /// diff --git a/7.1.237 b/7.1.237 new file mode 100644 index 00000000..c631d95a --- /dev/null +++ b/7.1.237 @@ -0,0 +1,54 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.237 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.237 +Problem: Compiler warning on an Alpha processor in Motif code. +Solution: Change a typecast. (Adri Verhoef) +Files: src/gui_motif.c + + +*** ../vim-7.1.236/src/gui_motif.c Thu May 10 19:51:05 2007 +--- src/gui_motif.c Mon Jan 21 21:03:55 2008 +*************** +*** 3813,3819 **** + + XtAddCallback(frdp->find, XmNactivateCallback, + find_replace_callback, +! (XtPointer) (do_replace ? FRD_R_FINDNEXT : FRD_FINDNEXT)); + + if (do_replace) + { +--- 3813,3819 ---- + + XtAddCallback(frdp->find, XmNactivateCallback, + find_replace_callback, +! (do_replace ? (XtPointer)FRD_R_FINDNEXT : (XtPointer)FRD_FINDNEXT)); + + if (do_replace) + { +*** ../vim-7.1.236/src/version.c Sat Jan 19 15:55:51 2008 +--- src/version.c Tue Jan 22 11:05:12 2008 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 237, + /**/ + +-- +I am always surprised in the Linux world how quickly solutions can be +obtained. (Imagine sending an email to Bill Gates, asking why Windows +crashed, and how to fix it... and then getting an answer that fixed the +problem... <0>_<0> !) -- Mark Langdon + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.238 b/7.1.238 new file mode 100644 index 00000000..e7b6a6fe --- /dev/null +++ b/7.1.238 @@ -0,0 +1,61 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.238 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.238 +Problem: Using the 'c' flag with searchpair() may cause it to fail. Using + the 'r' flag doesn't work when 'wrapscan' is set. (A.Politz) +Solution: Only use the 'c' flag for the first search, not for repeating. + When using 'r' imply 'W'. (Antony Scriven) +Files: src/eval.c + + +*** ../vim-7.1.237/src/eval.c Sat Jan 12 16:45:25 2008 +--- src/eval.c Tue Jan 22 11:42:28 2008 +*************** +*** 14189,14194 **** +--- 14189,14198 ---- + goto theend; + } + ++ /* Using 'r' implies 'W', otherwise it doesn't work. */ ++ if (flags & SP_REPEAT) ++ p_ws = FALSE; ++ + /* Optional fifth argument: skip expression */ + if (argvars[3].v_type == VAR_UNKNOWN + || argvars[4].v_type == VAR_UNKNOWN) +*************** +*** 14344,14349 **** +--- 14348,14356 ---- + incl(&pos); + } + foundpos = pos; ++ ++ /* clear the start flag to avoid getting stuck here */ ++ options &= ~SEARCH_START; + + /* If the skip pattern matches, ignore this match. */ + if (*skip != NUL) +*** ../vim-7.1.237/src/version.c Tue Jan 22 11:06:06 2008 +--- src/version.c Tue Jan 22 11:57:28 2008 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 238, + /**/ + +-- +To keep milk from turning sour: Keep it in the cow. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.239 b/7.1.239 new file mode 100644 index 00000000..dca05345 --- /dev/null +++ b/7.1.239 @@ -0,0 +1,53 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.239 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.239 (after 7.1.233) +Problem: Compiler warning for sprintf() argument. +Solution: Add a typecast. (Nico Weber) +Files: src/ex_getln.c + + +*** ../vim-7.1.238/src/ex_getln.c Sat Jan 19 15:55:51 2008 +--- src/ex_getln.c Tue Jan 22 12:40:54 2008 +*************** +*** 4694,4700 **** + { + /* Completion from Insert mode, pass fake arguments. */ + keep = 0; +! sprintf((char *)num, "%d", STRLEN(xp->xp_pattern)); + args[1] = xp->xp_pattern; + } + else +--- 4694,4700 ---- + { + /* Completion from Insert mode, pass fake arguments. */ + keep = 0; +! sprintf((char *)num, "%d", (int)STRLEN(xp->xp_pattern)); + args[1] = xp->xp_pattern; + } + else +*** ../vim-7.1.238/src/version.c Tue Jan 22 11:58:41 2008 +--- src/version.c Tue Jan 22 12:42:36 2008 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 239, + /**/ + +-- +We apologise again for the fault in the subtitles. Those responsible for +sacking the people who have just been sacked have been sacked. + "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 /// diff --git a/7.1.240 b/7.1.240 new file mode 100644 index 00000000..7f690850 --- /dev/null +++ b/7.1.240 @@ -0,0 +1,186 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.240 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.240 +Problem: When "gUe" turns a German sharp s into SS the operation stops + before the end of the word. Latin2 has the same sharp s but it's + not changed to SS there. +Solution: Make sure all the characters are operated upon. Detect the sharp + s in latin2. Also fixes that changing case of a multi-byte + character that changes the byte cound doesn't always work. +Files: src/ops.c + + +*** ../vim-7.1.239/src/ops.c Wed Jan 16 20:01:14 2008 +--- src/ops.c Tue Jan 22 16:00:07 2008 +*************** +*** 2184,2189 **** +--- 2184,2191 ---- + } + #endif + ++ static int swapchars __ARGS((int op_type, pos_T *pos, int length)); ++ + /* + * Handle the (non-standard vi) tilde operator. Also for "gu", "gU" and "g?". + */ +*************** +*** 2194,2202 **** + pos_T pos; + #ifdef FEAT_VISUAL + struct block_def bd; +- int todo; + #endif +! int did_change = 0; + + if (u_save((linenr_T)(oap->start.lnum - 1), + (linenr_T)(oap->end.lnum + 1)) == FAIL) +--- 2196,2203 ---- + pos_T pos; + #ifdef FEAT_VISUAL + struct block_def bd; + #endif +! int did_change; + + if (u_save((linenr_T)(oap->start.lnum - 1), + (linenr_T)(oap->end.lnum + 1)) == FAIL) +*************** +*** 2210,2225 **** + { + block_prep(oap, &bd, pos.lnum, FALSE); + pos.col = bd.textcol; +! for (todo = bd.textlen; todo > 0; --todo) +! { +! # ifdef FEAT_MBYTE +! if (has_mbyte) +! todo -= (*mb_ptr2len)(ml_get_pos(&pos)) - 1; +! # endif +! did_change |= swapchar(oap->op_type, &pos); +! if (inc(&pos) == -1) /* at end of file */ +! break; +! } + # ifdef FEAT_NETBEANS_INTG + if (usingNetbeans && did_change) + { +--- 2211,2218 ---- + { + block_prep(oap, &bd, pos.lnum, FALSE); + pos.col = bd.textcol; +! did_change = swapchars(oap->op_type, &pos, bd.textlen); +! + # ifdef FEAT_NETBEANS_INTG + if (usingNetbeans && did_change) + { +*************** +*** 2249,2261 **** + else if (!oap->inclusive) + dec(&(oap->end)); + +! while (ltoreq(pos, oap->end)) +! { +! did_change |= swapchar(oap->op_type, &pos); +! if (inc(&pos) == -1) /* at end of file */ +! break; +! } +! + if (did_change) + { + changed_lines(oap->start.lnum, oap->start.col, oap->end.lnum + 1, +--- 2242,2248 ---- + else if (!oap->inclusive) + dec(&(oap->end)); + +! did_change = swapchars(oap->op_type, &pos, oap->end.col - pos.col + 1); + if (did_change) + { + changed_lines(oap->start.lnum, oap->start.col, oap->end.lnum + 1, +*************** +*** 2309,2314 **** +--- 2296,2337 ---- + } + + /* ++ * Invoke swapchar() on "length" bytes at position "pos". ++ * "pos" is advanced to just after the changed characters. ++ * "length" is rounded up to include the whole last multi-byte character. ++ * Also works correctly when the number of bytes changes. ++ * Returns TRUE if some character was changed. ++ */ ++ static int ++ swapchars(op_type, pos, length) ++ int op_type; ++ pos_T *pos; ++ int length; ++ { ++ int todo; ++ int did_change = 0; ++ ++ for (todo = length; todo > 0; --todo) ++ { ++ # ifdef FEAT_MBYTE ++ int pos_col = pos->col; ++ ++ if (has_mbyte) ++ /* we're counting bytes, not characters */ ++ todo -= (*mb_ptr2len)(ml_get_pos(pos)) - 1; ++ # endif ++ did_change |= swapchar(op_type, pos); ++ # ifdef FEAT_MBYTE ++ /* Changing German sharp s to SS increases the column. */ ++ todo += pos->col - pos_col; ++ # endif ++ if (inc(pos) == -1) /* at end of file */ ++ break; ++ } ++ return did_change; ++ } ++ ++ /* + * If op_type == OP_UPPER: make uppercase, + * if op_type == OP_LOWER: make lowercase, + * if op_type == OP_ROT13: do rot13 encoding, +*************** +*** 2330,2336 **** + return FALSE; + + #ifdef FEAT_MBYTE +! if (op_type == OP_UPPER && enc_latin1like && c == 0xdf) + { + pos_T sp = curwin->w_cursor; + +--- 2353,2360 ---- + return FALSE; + + #ifdef FEAT_MBYTE +! if (op_type == OP_UPPER && c == 0xdf +! && (enc_latin1like || STRCMP(p_enc, "iso-8859-2") == 0)) + { + pos_T sp = curwin->w_cursor; + +*** ../vim-7.1.239/src/version.c Tue Jan 22 12:44:03 2008 +--- src/version.c Tue Jan 22 15:36:36 2008 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 240, + /**/ + +-- +ARTHUR: It is I, Arthur, son of Uther Pendragon, from the castle of Camelot. + King of all Britons, defeator of the Saxons, sovereign of all England! + [Pause] +SOLDIER: Get away! + "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 /// diff --git a/7.1.241 b/7.1.241 new file mode 100644 index 00000000..4a04c690 --- /dev/null +++ b/7.1.241 @@ -0,0 +1,112 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.241 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.241 +Problem: Focus change events not always ignored. (Erik Falor) +Solution: Ignore K_IGNORE in Insert mode in a few more places. +Files: src/edit.c + + +*** ../vim-7.1.240/src/edit.c Wed Jan 16 20:01:14 2008 +--- src/edit.c Tue Jan 22 17:45:32 2008 +*************** +*** 703,712 **** + #endif + + /* +! * Get a character for Insert mode. + */ + lastc = c; /* remember previous char for CTRL-D */ +! c = safe_vgetc(); + + #ifdef FEAT_AUTOCMD + /* Don't want K_CURSORHOLD for the second key, e.g., after CTRL-V. */ +--- 703,715 ---- + #endif + + /* +! * Get a character for Insert mode. Ignore K_IGNORE. + */ + lastc = c; /* remember previous char for CTRL-D */ +! do +! { +! c = safe_vgetc(); +! } while (c == K_IGNORE); + + #ifdef FEAT_AUTOCMD + /* Don't want K_CURSORHOLD for the second key, e.g., after CTRL-V. */ +*************** +*** 777,783 **** + /* Prepare for or stop CTRL-X mode. This doesn't do completion, but + * it does fix up the text when finishing completion. */ + compl_get_longest = FALSE; +! if (c != K_IGNORE && ins_compl_prep(c)) + continue; + #endif + +--- 780,786 ---- + /* Prepare for or stop CTRL-X mode. This doesn't do completion, but + * it does fix up the text when finishing completion. */ + compl_get_longest = FALSE; +! if (ins_compl_prep(c)) + continue; + #endif + +*************** +*** 4516,4530 **** + else + { + /* Need to get the character to have KeyTyped set. We'll put it +! * back with vungetc() below. */ + c = safe_vgetc(); + +! /* Don't interrupt completion when the character wasn't typed, +! * e.g., when doing @q to replay keys. */ +! if (c != Ctrl_R && KeyTyped) +! compl_interrupted = TRUE; +! +! vungetc(c); + } + } + if (compl_pending != 0 && !got_int) +--- 4519,4535 ---- + else + { + /* Need to get the character to have KeyTyped set. We'll put it +! * back with vungetc() below. But skip K_IGNORE. */ + c = safe_vgetc(); ++ if (c != K_IGNORE) ++ { ++ /* Don't interrupt completion when the character wasn't typed, ++ * e.g., when doing @q to replay keys. */ ++ if (c != Ctrl_R && KeyTyped) ++ compl_interrupted = TRUE; + +! vungetc(c); +! } + } + } + if (compl_pending != 0 && !got_int) +*** ../vim-7.1.240/src/version.c Tue Jan 22 16:01:25 2008 +--- src/version.c Tue Jan 22 17:48:46 2008 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 241, + /**/ + +-- +The problem with political jokes is that they get elected. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.242 b/7.1.242 new file mode 100644 index 00000000..6aab9c87 --- /dev/null +++ b/7.1.242 @@ -0,0 +1,68 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.242 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.242 (after 7.1.005) +Problem: "cib" doesn't work properly on "(x)". (Tim Pope) +Solution: Use ltoreq() instead of lt(). Also fix "ciT" on "x". +Files: src/search.c + + +*** ../vim-7.1.241/src/search.c Sat Jan 19 15:55:51 2008 +--- src/search.c Sat Jan 26 13:56:06 2008 +*************** +*** 3637,3643 **** + 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 +--- 3637,3643 ---- + oap->inclusive = FALSE; + if (sol) + incl(&curwin->w_cursor); +! else if (ltoreq(start_pos, curwin->w_cursor)) + /* Include the character under the cursor. */ + oap->inclusive = TRUE; + else +*************** +*** 3754,3759 **** +--- 3754,3763 ---- + old_pos = curwin->w_cursor; + old_end = curwin->w_cursor; /* remember where we started */ + old_start = old_end; ++ #ifdef FEAT_VISUAL ++ if (!VIsual_active || *p_sel == 'e') ++ #endif ++ decl(&old_end); /* old_end is inclusive */ + + /* + * If we start on "" select that block. +*** ../vim-7.1.241/src/version.c Tue Jan 22 17:49:17 2008 +--- src/version.c Sat Jan 26 21:14:05 2008 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 242, + /**/ + +-- +DENNIS: Oh, very nice. King, eh! I expect you've got a palace and fine + clothes and courtiers and plenty of food. And how d'you get that? By + exploiting the workers! By hanging on to outdated imperialist dogma + which perpetuates the social and economic differences in our society! + "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 /// diff --git a/7.1.243 b/7.1.243 new file mode 100644 index 00000000..102546c1 --- /dev/null +++ b/7.1.243 @@ -0,0 +1,165 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.243 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.243 (after 7.1.240) +Problem: "U" doesn't work on all text in Visual mode. (Adri Verhoef) +Solution: Loop over all the lines to be changed. Add tests for this. +Files: src/ops.c, src/testdir/test39.in, src/testdir/test39.ok + + +*** ../vim-7.1.242/src/ops.c Tue Jan 22 16:01:25 2008 +--- src/ops.c Mon Feb 4 22:23:22 2008 +*************** +*** 2197,2203 **** + #ifdef FEAT_VISUAL + struct block_def bd; + #endif +! int did_change; + + if (u_save((linenr_T)(oap->start.lnum - 1), + (linenr_T)(oap->end.lnum + 1)) == FAIL) +--- 2197,2203 ---- + #ifdef FEAT_VISUAL + struct block_def bd; + #endif +! int did_change = FALSE; + + if (u_save((linenr_T)(oap->start.lnum - 1), + (linenr_T)(oap->end.lnum + 1)) == FAIL) +*************** +*** 2242,2248 **** + else if (!oap->inclusive) + dec(&(oap->end)); + +! did_change = swapchars(oap->op_type, &pos, oap->end.col - pos.col + 1); + if (did_change) + { + changed_lines(oap->start.lnum, oap->start.col, oap->end.lnum + 1, +--- 2242,2259 ---- + else if (!oap->inclusive) + dec(&(oap->end)); + +! if (pos.lnum == oap->end.lnum) +! did_change = swapchars(oap->op_type, &pos, +! oap->end.col - pos.col + 1); +! else +! for (;;) +! { +! did_change |= swapchars(oap->op_type, &pos, +! pos.lnum == oap->end.lnum ? oap->end.col + 1: +! (int)STRLEN(ml_get_pos(&pos))); +! if (ltoreq(oap->end, pos) || inc(&pos) == -1) +! break; +! } + if (did_change) + { + changed_lines(oap->start.lnum, oap->start.col, oap->end.lnum + 1, +*************** +*** 2314,2330 **** + for (todo = length; todo > 0; --todo) + { + # ifdef FEAT_MBYTE +- int pos_col = pos->col; +- + if (has_mbyte) + /* we're counting bytes, not characters */ + todo -= (*mb_ptr2len)(ml_get_pos(pos)) - 1; + # endif + did_change |= swapchar(op_type, pos); +- # ifdef FEAT_MBYTE +- /* Changing German sharp s to SS increases the column. */ +- todo += pos->col - pos_col; +- # endif + if (inc(pos) == -1) /* at end of file */ + break; + } +--- 2325,2335 ---- +*** ../vim-7.1.242/src/testdir/test39.in Sun Jun 13 18:21:09 2004 +--- src/testdir/test39.in Wed Feb 6 13:57:37 2008 +*************** +*** 1,8 **** +--- 1,10 ---- + + Test Visual block mode commands ++ And test "U" in Visual mode, also on German sharp S. + + STARTTEST + :so small.vim ++ :so mbyte.vim + /^abcde + :" Test shift-right of a block + jlllljj>wlljlll> +*************** +*** 14,20 **** + Gllllkkklllrq + :" Test block-change + G$khhhhhkkcmno +! :$-4,$wq! test.out + ENDTEST + + abcdefghijklm +--- 16,37 ---- + Gllllkkklllrq + :" Test block-change + G$khhhhhkkcmno +! :$-4,$w! test.out +! :" gUe must uppercase a whole word, also when changes to SS +! Gothe youtueuu endYpk0wgUe +! :" gUfx must uppercase until x, inclusive. +! O- youtuexu -0fogUfx +! :" VU must uppercase a whole line +! YpkVU +! :" same, when it's the last line in the buffer +! YPGi111VUddP +! :" Uppercase two lines +! Oblah di +! doh dutVkUj +! :" Uppercase part of two lines +! ddppi333k0i222fyllvjfuUk +! :/^the/,$w >> test.out +! :qa! + ENDTEST + + abcdefghijklm +*** ../vim-7.1.242/src/testdir/test39.ok Sun Jun 13 18:59:28 2004 +--- src/testdir/test39.ok Tue Feb 5 22:25:38 2008 +*************** +*** 3,5 **** +--- 3,13 ---- + axyzqqqqef mno ghijklm + axyzqqqqefgmnoklm + abcdqqqqijklm ++ the YOUTUSSEUU end ++ - yOUSSTUSSEXu - ++ THE YOUTUSSEUU END ++ 111THE YOUTUSSEUU END ++ BLAH DI ++ DOH DUT ++ 222the yoUTUSSEUU END ++ 333THE YOUTUeuu end +*** ../vim-7.1.242/src/version.c Sat Jan 26 21:15:00 2008 +--- src/version.c Wed Feb 6 14:41:00 2008 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 243, + /**/ + +-- +It's totally unfair to suggest - as many have - that engineers are socially +inept. Engineers simply have different objectives when it comes to social +interaction. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.244 b/7.1.244 new file mode 100644 index 00000000..6c4c43f2 --- /dev/null +++ b/7.1.244 @@ -0,0 +1,58 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.244 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.244 +Problem: GUI may have part of the command line cut off. +Solution: Don't round the number of lines up, always round down. + (Tony Houghton, Scott Dillard) +Files: src/gui.c + + +*** ../vim-7.1.243/src/gui.c Sat Jan 19 15:55:51 2008 +--- src/gui.c Wed Feb 6 16:43:44 2008 +*************** +*** 1294,1304 **** + out_flush(); + + gui.num_cols = (pixel_width - gui_get_base_width()) / gui.char_width; +! gui.num_rows = (pixel_height - gui_get_base_height() +! #if !defined(FEAT_GUI_PHOTON) && !defined(FEAT_GUI_MSWIN) +! + (gui.char_height / 2) +! #endif +! ) / gui.char_height; + + gui_position_components(pixel_width); + +--- 1294,1300 ---- + out_flush(); + + gui.num_cols = (pixel_width - gui_get_base_width()) / gui.char_width; +! gui.num_rows = (pixel_height - gui_get_base_height()) / gui.char_height; + + gui_position_components(pixel_width); + +*** ../vim-7.1.243/src/version.c Wed Feb 6 14:43:50 2008 +--- src/version.c Wed Feb 6 17:32:35 2008 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 244, + /**/ + +-- +A consultant is a person who takes your money and annoys your employees while +tirelessly searching for the best way to extend the consulting contract. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.1.245 b/7.1.245 new file mode 100644 index 00000000..ce7a7b51 --- /dev/null +++ b/7.1.245 @@ -0,0 +1,92 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.245 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.245 +Problem: Pressing CTRL-\ three times causes Vim to quit. (Ranganath Rao). + Also for f CTRL-\ CTRL-\. +Solution: When going to cooked mode in mch_delay() set a flag to ignore + SIGQUIT. +Files: src/os_unix.c + + +*** ../vim-7.1.244/src/os_unix.c Sun Jan 13 16:30:23 2008 +--- src/os_unix.c Sun Feb 10 22:07:27 2008 +*************** +*** 195,200 **** +--- 195,201 ---- + static int show_shell_mess = TRUE; + #endif + static int deadly_signal = 0; /* The signal we caught */ ++ static int in_mch_delay = FALSE; /* sleeping in mch_delay() */ + + static int curr_tmode = TMODE_COOK; /* contains current terminal mode */ + +*************** +*** 538,544 **** + if (ignoreinput) + { + /* Go to cooked mode without echo, to allow SIGINT interrupting us +! * here */ + old_tmode = curr_tmode; + if (curr_tmode == TMODE_RAW) + settmode(TMODE_SLEEP); +--- 539,547 ---- + if (ignoreinput) + { + /* Go to cooked mode without echo, to allow SIGINT interrupting us +! * here. But we don't want QUIT to kill us (CTRL-\ used in a +! * shell may produce SIGQUIT). */ +! in_mch_delay = TRUE; + old_tmode = curr_tmode; + if (curr_tmode == TMODE_RAW) + settmode(TMODE_SLEEP); +*************** +*** 602,607 **** +--- 605,611 ---- + #endif + + settmode(old_tmode); ++ in_mch_delay = FALSE; + } + else + WaitForChar(msec); +*************** +*** 922,927 **** +--- 926,939 ---- + #endif + + #ifdef SIGHASARG ++ # ifdef SIGQUIT ++ /* While in mch_delay() we go to cooked mode to allow a CTRL-C to ++ * interrupt us. But in cooked mode we may also get SIGQUIT, e.g., when ++ * pressing CTRL-\, but we don't want Vim to exit then. */ ++ if (in_mch_delay && sigarg == SIGQUIT) ++ SIGRETURN; ++ # endif ++ + /* When SIGHUP, SIGQUIT, etc. are blocked: postpone the effect and return + * here. This avoids that a non-reentrant function is interrupted, e.g., + * free(). Calling free() again may then cause a crash. */ +*** ../vim-7.1.244/src/version.c Wed Feb 6 17:33:19 2008 +--- src/version.c Sun Feb 10 22:04:09 2008 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 245, + /**/ + +-- +Me? A skeptic? I trust you have proof. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/Changelog.rpm b/Changelog.rpm new file mode 100644 index 00000000..516862fc --- /dev/null +++ b/Changelog.rpm @@ -0,0 +1,51 @@ +* Thu Mar 09 2006 Karsten Hopp 6.4.007-4 +- fix configure check for python (#184478) + +* Thu Mar 09 2006 Karsten Hopp 6.4.007-3 +- rebuild + +* Mon Feb 20 2006 Karsten Hopp 6.4.007-2 +- gtk-update-icon-cache --ignore-theme-index + (avoids %%post failures when hicolor-icon-theme isn't installed) + +* Wed Feb 15 2006 Karsten Hopp 6.4.007-1 +- fix vim.csh script (#180429) +- patchlevel 7 + +* Fri Feb 10 2006 Jesse Keating - 1:6.4.006-1.2 +- bump again for double-long bug on ppc(64) + +* Tue Feb 07 2006 Jesse Keating - 1:6.4.006-1.1 +- rebuilt for new gcc4.1 snapshot and glibc changes + +* Mon Jan 02 2006 Karsten Hopp 6.4.006-1 +- patchlevel 6, fixes bz# 175048 + +* Tue Dec 20 2005 Karsten Hopp 6.4.004-2 +- disable templates when editing new .c / .h files (#175878) + +* Fri Dec 09 2005 Jesse Keating +- rebuilt + +* Thu Dec 08 2005 Karsten Hopp 6.4.004-1 +- fix fstab syntax file (#174735) +- patchlevel 4 + +* Wed Nov 30 2005 Karsten Hopp 6.4.003-1 +- patchlevel 3 +- remove withgui switch as we include vim-X11 in all our distributions now + (#174271) + +* Fri Nov 25 2005 Karsten Hopp 6.4.000-4 +- enable tmpfile patch + +* Thu Oct 27 2005 Karsten Hopp 6.4.000-3 +- test build + +* Tue Oct 25 2005 Karsten Hopp 6.4.000-2 +- use %%{_sysconfdir} (#171556) +- add syntax highlighting rule for %%check (Ralf Ertzinger, #165277) + +* Mon Oct 17 2005 Karsten Hopp 6.4.000-1 +- vim-6.4 patchlevel 0 + diff --git a/README.patches b/README.patches new file mode 100644 index 00000000..159f3bba --- /dev/null +++ b/README.patches @@ -0,0 +1,279 @@ +Patches for Vim - Vi IMproved 7.1 + +The files in this directory contain source code changes to fix +problems in released versions of Vim. Each file also contains an +explanation of the problem that is fixed, like the message that +was sent to the vim-dev maillist. + +The best is to apply the patches in sequence. This avoids problems +when a patch depends on a previous patch. If you did not unpack the +extra archive, you may want to skip patches marked with "extra:". +Similarly for the "lang" archive. Or ignore errors for missing files. + +Before patching, change to the top Vim directory, where the "src" +and "runtime" directories are located. +Depending on the version of "patch" that you use, you may have add +an argument to make it patch the right file: + patch -p < 7.1.001 + patch -p0 < 7.1.001 + +After applying a patch, you need to compile Vim. There are no +patches for binaries. + +Checksums for the patch files can be found in the file MD5. + +Collection of patches for Vim 7.1: + SIZE NAME INCLUDES + 91424 7.1.001-100.gz patches 7.1.001 to 7.1.100, gzip'ed + 75402 7.1.101-200.gz patches 7.1.101 to 7.1.200, gzip'ed + + +Individual patches for Vim 7.1: + + SIZE NAME FIXES + 2404 7.1.001 can't build with Gnome GUI + 2011 7.1.002 Oracle Pro*C/C++ files are not detected + 1529 7.1.003 (extra) Win32: menu entries end up in message history + 2481 7.1.004 crash when editing a directory + 3841 7.1.005 "cit" used on deletes + 2941 7.1.006 when reading from stdin 'modified' can't be reset in autocmd + 6458 7.1.007 (extra) Mac: context menu does not work, scrollbars not dimmed + 2631 7.1.008 getfsize() returns an invalid number for very big files + 1881 7.1.009 diff mode: tab to spaces change not highlighted correctly + 2796 7.1.010 Gnome: tab pages are not included in the saved session + 1934 7.1.011 buffer overflow when $VIMRUNTIME is very long + 1904 7.1.012 ":let &tw = 'asdf'" does not give an error message + 2139 7.1.013 ":syn include" only loads the first file + 1479 7.1.014 crash in C-indenting + 3743 7.1.015 MzScheme interface doesn't build on Mac; init problem + 2368 7.1.016 (after 7.1.012) error message when using ":cwindow" + 6729 7.1.017 ":confirm w" does not give a prompt when file is read-only + 1771 7.1.018 "p" at end of line doesn't work right when 've' is set + 1650 7.1.019 ":python" doesn't mention the command is not implemented + 3229 7.1.020 reading uninitialized memory when using a dialog + 2875 7.1.021 (after 7.1.015) MzScheme interface doesn't build on Win32 + 1842 7.1.022 when setting 'keymap' twice b:keymap_name variable isn't set + 1718 7.1.023 "dw" in a line with one character deletes the line + 1335 7.1.024 using a pointer that may have become invalid + 2292 7.1.025 search('pat', 'bc) doesn't find word under cursor at BOL + 1710 7.1.026 "[p" doesn't work in Visual mode + 3345 7.1.027 on Sun OS reading from a process substitutions doesn't work + 2239 7.1.028 ":sort" does nothing special with empty search pattern + 2692 7.1.029 (after 7.1.019) can't compile when all interfaces are used + 2364 7.1.030 vimtutor shell script checks for "vim6" but not for "vim7" + 6533 7.1.031 virtcol([123, '$']) doesn't work + 3006 7.1.032 possible crash when doing completion on the command line + 1530 7.1.033 buffer marked modified after ":bdel" and ":next" + 2956 7.1.034 Win64: compiler warnings for typecast, optimizer problem + 1797 7.1.035 after ":s/./&/#" all listed lines have a line number + 12171 7.1.036 add "none" to completion of ":echohl" and ":match" + 1817 7.1.037 using strcpy() for an overlapping string + 5704 7.1.038 'preseveindent' doesn't always work when 'et' is set + 1750 7.1.039 weird help-tags tag in docs file may make cause a crash + 53412 7.1.040 ":match" only supports three matches + 4614 7.1.041 (extra, after 7.1.040) update test makefiles for new test + 2366 7.1.042 (after 7.1.040) internal error when using matchadd() + 2820 7.1.043 in Ex mode using CTRL-D twice may cause a crash + 1632 7.1.044 in Insert mode 0 CTRL-T deletes all indent + 3101 7.1.045 double screen redraw in some situations + 1637 7.1.046 ":s/.*/&/" deletes composing characters + 1552 7.1.047 wrong argument for vim_regcomp() + 5010 7.1.048 paren highlighting is not updated after scrolling + 1722 7.1.049 can't compile with GTK2 when using hangul input feature + 4800 7.1.050 possible crash in C++ indenting + 2295 7.1.051 accessing uninitialized memory when finding spell suggestions + 2435 7.1.052 when creating a new match not all fields are initialized + 1473 7.1.053 reading uninitialized memory when updating command line + 4451 7.1.054 accessing uninitialized memory when displaying the fold column + 5414 7.1.055 using strcpy() with arguments that overlap + 3151 7.1.056 scrolling back at more prompt doesn't work properly + 2514 7.1.057 CursorHold causes problems for Normal and Visual mode commands + 10612 7.1.058 completion menu doesn't work properly when 'righleft' is set + 3350 7.1.059 in Ex mode "g/^/vi" and pressing CTRL-C: Vim hangs and beeps + 5066 7.1.060 splitting quickfix window messes up window layout + 6320 7.1.061 with latin1 'ignorecase' doesn't work for umlauts + 1550 7.1.062 (after 7.0.038) C comment indent can be wrong + 1391 7.1.063 compiler warning for uninitialized variable + 1405 7.1.064 on interix some files appear not to exist + 2983 7.1.065 Win32: MingW Compilation problem for newer version of w32api + 4553 7.1.066 when 'bomb' is changed the file should be considered modified + 7701 7.1.067 'infercase' doesn't work for thesaurus completion + 6709 7.1.068 'equalalways' equalizes windows too often + 2757 7.1.069 GTK GUI: confirm() dialog has a default button when not wanted + 1560 7.1.070 (extra) Win32 GUI: same confirm() default button problem + 5534 7.1.071 (after 7.1.040) add a basic test for regexp patterns + 5705 7.1.072 (extra, after 7.1.041 and 7.1.071) extra part of 7.1.071 + 3595 7.1.073 (after 7.1.062) crash when 'preserveindent' is set + 5259 7.1.074 crash when using string() on a recursively nested List + 1686 7.1.075 ":let v:statusmsg" reads memory already freed + 2376 7.1.076 a couple more strcpy() with overlapping arguments + 1551 7.1.077 "can_spell" is used without initializing it + 2678 7.1.078 dropping file name on gvim containing CSI byte doesn't work + 2922 7.1.079 "@" character in 'isfname' doesn't pick up umlauts for latin1 + 2960 7.1.080 (extra) Compiler warnings for gvimex.cpp + 3253 7.1.081 completion doesn't work after ":!cat ") may return < 0 for a Linewise selection + 1515 7.1.133 shorten_fname1() linked when it's not needed + 10379 7.1.134 (extra) Win32: Can't build with VC8 + 3337 7.1.135 Win32: ":e c:/tmp/foo" and ":e c:/tmp//foo" create two buffers + 1522 7.1.136 memory leak when using Ruby syntax highlighting + 1553 7.1.137 build failure when using EXITFREE + 1836 7.1.138 Perl: Msg() doesn't stop when "q" is typed at the more prompt + 1557 7.1.139 fold truncated when ending Insert mode with CTRL-C + 1664 7.1.140 v:count can't be used in an expression mapping + 2806 7.1.141 GTK: can't use negative offset with -geom argument + 2161 7.1.142 ":redir @A>" doesn't work + 1723 7.1.143 uninitialized memory read when diffing three files + 1250 7.1.144 after ":diffup" cursor can be in the wrong position + 6160 7.1.145 stay in Insert completion mode depending on the char typed + 2838 7.1.146 VMS: writing fails for rare record organisation + 2079 7.1.147 (after 7.1.127) freeing memory twice completing user name + 2557 7.1.148 QNX and some other systems require testing for sys/types.h + 4823 7.1.149 completion menu messed up when using the scroll bar + 1759 7.1.150 Visual mode "p" doesn't work when 'clipboard' has "unnamed" + 2108 7.1.151 lalloc(0) error for line completion with 'ic' and 'inf' set + 3183 7.1.152 display problem when 'hls' and 'cursorcolumn' are set + 4610 7.1.153 compiler warnings on SGI + 1547 7.1.154 (after 7.1.152) compiler warning for signed/unsigned compare + 1594 7.1.155 crash when 'undolevels' is 0 and repeating "udd" + 4174 7.1.156 overlapping arguments for strcpy() during cmdline completion + 1541 7.1.157 :" in Ex mode at end of file results in an error message + 4629 7.1.158 (extra) Win32: with utf-8 and cp1250 Alt-y is the wrong char + 1646 7.1.159 overlapping arguments for a strcpy() + 1661 7.1.160 getting/losing focus may cause hit-enter prompt to be redrawn + 4347 7.1.161 compilation errors with tiny features and EXITFREE + 4691 7.1.162 crash when using a modifier before "while" or "for" + 2367 7.1.163 warning for the unknown option 'bufsecret' + 1576 7.1.164 reading past end of regexp pattern + 5538 7.1.165 crash related to getting X window ID + 2134 7.1.166 memory leak when using "gp" in Visual mode + 2528 7.1.167 xxd crashes when using "xxd -b -c 110" + 2989 7.1.168 (extra) Win32 GUI: when no focus click doesn't position cursor + 1926 7.1.169 using uninitialized memory when system() fails + 1722 7.1.170 overlapping arguments to strcpy() + 2324 7.1.171 reading one byte before allocated memory. + 1536 7.1.172 if 'buftype' is "acwrite" Vim still does overwrite check + 1928 7.1.173 accessing freed memory when using "\%^" pattern + 2197 7.1.174 writing NUL past end of a buffer + 4722 7.1.175 doesn't work with some combination of option settings + 2943 7.1.176 compiling with Aap fails if "compiledby" contains '<' or '>' + 5450 7.1.177 freeing memory twice when in debug mode while reading a script + 1567 7.1.178 "%" doesn't work on "/* comment *//* comment */" + 6581 7.1.179 configure doesn't find TCL 8.5 + 7099 7.1.180 regexp patterns are not sufficiently tested + 1878 7.1.181 accessing uninitialized memory in Farsi mode with ":s" + 5457 7.1.182 with tab pages and an argument list session file may be wrong + 2489 7.1.183 Internal error for ":echo matchstr('a', 'a\%[\&]')" + 2132 7.1.184 crash when deleting backwards over a line break in Insert mode + 3744 7.1.185 "gR" and then BS doesn't work properly with multi-byte chars + 3294 7.1.186 "expand('')" returns a bogus value after ":cd dir" + 2341 7.1.187 Win32 GUI: custom completion using system() doesn't work + 1688 7.1.188 "W10" message could be displayed in the second column + 1950 7.1.189 (after 7.1.104) need to call plain_vgetc() in ask_yesno() + 1685 7.1.190 cursor after end-of-line: "iA sentence.)" + 2007 7.1.191 Win32 GUI: when not in focus click in scrollbar doesn't work + 2605 7.1.192 CTRL-C doesn't stop duplicating text for "s" in Visual block + 2962 7.1.193 some of the Vim 5.x digraphs could be supported + 1650 7.1.194 Unix: ":echo glob('~/{}')" results in "/home/user//" + 2273 7.1.195 '0 mark doesn't work for "~/foo ~ foo" + 2642 7.1.196 (extra) Win32 GUI: "\n" in a tooltip doesn't cause line break + 2308 7.1.197 Mac: "make install" doesn't work when $prefix is set + 1460 7.1.198 hang when using ":s/\n//gn" + 3572 7.1.199 can't do command line completion for a file name extension + 2310 7.1.200 (after 7.1.177 and 7.1.182) compiler warnings + 2705 7.1.201 when reading stdin 'fenc' and 'ff' are not set + 2383 7.1.202 incomplete utf-8 byte sequence is not checked for validity + 2261 7.1.203 if 'virtualedit' is "onemore" then ":normal 99|" is not right + 2891 7.1.204 (extra) Win32: 'balloonexpr' tooltip disappears after 4 sec + 5481 7.1.205 can't get the operator in an ":omap" + 1690 7.1.206 compiler warnings when using MODIFIED_BY + 7708 7.1.207 netbeans: "remove" cannot delete one line + 2051 7.1.208 on Alpha get an unaligned access error + 2249 7.1.209 GTK GUI: when using the netrw plugin ":gui" causes a hang + 1923 7.1.210 listing mapping for 0xdb fails when 'encoding' is utf-8 + 25525 7.1.211 matchparen plugin may take so long it looks like Vim hangs + 1491 7.1.212 accessing a byte before a line + 1750 7.1.213 aborting ":tabedit" from the ATTENTION dialog leaves tab open + 8399 7.1.214 ":1s/g\n\zs1//" deletes characters from the first line + 6476 7.1.215 it's difficult to figure out the nesting of syntax items + 2360 7.1.216 variants of --remote-tab are not mentioned for "vim --help" + 7103 7.1.217 the "help-tags" tag may be missing from runtime/doc/tags + 1864 7.1.218 syntax region without "keepend" could be truncated + 12134 7.1.219 (after 7.1.215) synstack() doesn't work for one char region + 3928 7.1.220 cursor may end up on trail byte after ")" + 1978 7.1.221 when inserting a "(" the following highlighting may be wrong + 3531 7.1.222 (after 7.1.217) wildcards of ":helptags" are not expanded + 8138 7.1.223 glob() doesn't handle "'" when 'shell' is "sh" or "bash" + 2131 7.1.224 "vim -F -o one two" sets 'rightleft' in one window only + 1767 7.1.225 using unitialized value when XGetWMNormalHints() fails + 1957 7.1.226 command line completion fails for a file name with a '&' char + 5595 7.1.227 hang in syntax HL when moving over a ")" + 1678 7.1.228 with 'foldmethod' "indent" fold can't be closed after "3>>" + 1758 7.1.229 a fold is closed when backspacing in Insert mode + 2052 7.1.230 memory leak when executing SourceCmd autocommands + 8648 7.1.231 when shifting lines the change is acted upon multiple times + 2002 7.1.232 (after 7.1.207 and 7.1.211) compiler warnings with MSVC + 3249 7.1.233 crash with Insert mode completion for a user defined command + 6865 7.1.234 display problems when diff'ing three files + 5925 7.1.235 pattern matching is slow when using a lot of simple patterns + 28992 7.1.236 hang when using complicated pattern and 'hlsearch' or ":match" + 1704 7.1.237 compiler warning on an Alpha processor in Motif code + 1801 7.1.238 searchpair() may fail when using 'c' or 'r' flag + 1639 7.1.239 (after 7.1.233) compiler warning for sprintf() argument + 5157 7.1.240 "gUe" may stop before the end of the word + 3093 7.1.241 focus change events not always ignored + 2262 7.1.242 "cib" doesn't work properly on "(x)" + 4475 7.1.243 (after 7.1.240) "U" doesn't work on all text in Visual mode + 1847 7.1.244 GUI may have part of the command line cut off + 2767 7.1.245 pressing CTRL-\ three times causes Vim to quit diff --git a/ci.fmf b/ci.fmf deleted file mode 100644 index c5aa0e08..00000000 --- a/ci.fmf +++ /dev/null @@ -1 +0,0 @@ -resultsdb-testcase: separate diff --git a/gating.yaml b/gating.yaml deleted file mode 100644 index 80852883..00000000 --- a/gating.yaml +++ /dev/null @@ -1,25 +0,0 @@ ---- !Policy -product_versions: - - fedora-* -decision_context: bodhi_update_push_testing -subject_type: koji_build -rules: - - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build./plans/tier1-public.functional} - -#Rawhide ---- !Policy -product_versions: - - fedora-* -decision_context: bodhi_update_push_stable -subject_type: koji_build -rules: - - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build./plans/tier1-public.functional} - -#gating rhel ---- !Policy -product_versions: - - rhel-* -decision_context: osci_compose_gate -rules: - - !PassingTestCaseRule {test_case_name: osci.brew-build./plans/tier1-public.functional} - - !PassingTestCaseRule {test_case_name: osci.brew-build./plans/tier1-internal.functional} diff --git a/gvim.desktop b/gvim.desktop new file mode 100644 index 00000000..72bfdd81 --- /dev/null +++ b/gvim.desktop @@ -0,0 +1,63 @@ +[Desktop Entry] +Name=Vi IMproved +Name[bg]=Vi Ðåäàêòîð +Name[ca]=Vi Millorat +Name[da]=Vi forbedret +Name[eo]=VIM +Name[et]=Täiustatud Vi (vim) +Name[fr]=Vi étendu (VIM) +Name[he]=רפושמ Vi +Name[hu]=Vi +Name[is]=Vi IMproved ritillinn +Name[it]=Vi iMproved +Name[no]=Vi IMproved (forbedret VI) +Name[pl]=Poprawiony VI (vim) +Name[ro]=VIM +Name[ru]=Улучшенный VI +Name[sk]=Vi IMpreved +Name[sl]=Izboljšani vi (vim) +Name[sv]=Förbättrad Vi +Name[zh_CN.GB2312]=改进的 Vi +Comment=Powerful text editor with scripting functions and macro recorder +Comment[bg]=Ðåäàêòîð ñ ìíîãî âúçìîæíîñòè +Comment[ca]=Editor vi potent +Comment[cs]=Mocný textový editor vi +Comment[da]=En kraftig vi tekstbehandler +Comment[de]=Ein leistungsfähiger vi-Editor +Comment[el]=Πανίσχυρος διορθωτής vi +Comment[eo]=VIM similas al redaktilo "vi", sed havas aldonajn ecojn +Comment[es]=Una versión mejorada del editor vi +Comment[et]=Võimas tekstiredaktor vi +Comment[fi]=Tehokas vi-tekstieditori +Comment[fr]=Éditeur vi puissant +Comment[gl]=Potente editor vi +Comment[he]=Vi המצועה בר ךרועה +Comment[hr]=Napredni vi uređivač +Comment[hu]=Vi szövegszerkesztő +Comment[is]=Öflug útgáfa vi ritilsins +Comment[it]=Un editor vi potenziato +Comment[ja]=強力なViエディタ +Comment[lt]=Galingas vi redaktorius +Comment[mk]=Моќен VI уредувач +Comment[nl]=Krachtige vi-editor +Comment[no]=En kraftig vi-redigerer +Comment[no_NY]=Kraftig vi-tekstredigeringsprogram +Comment[pl]=Edytor vi +Comment[pt]=Um poderoso editor de texto +Comment[ro]=Un editor de texte VI, puternic +Comment[ru]=Мощный текстовый редактор vi +Comment[sk]=Silný textový procesor vi +Comment[sl]=Zmogljivi urejevalnik vi +Comment[sr]=Moćni vi editor +Comment[sv]=En kraftfull texteditor +Comment[ta]=ºì¾¢Å¡öó¾ vi ¦¾¡ÌôÀ¡Ç÷ +Comment[tr]=Güçlü vi düzenleyicisi +Comment[uk]=Потужний редактор vi +Comment[zh_CN.GB2312]=功能强大的 vi 编辑器 +MimeType=text/english;text/plain;text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-java;text/x-moc;text/x-pascal;text/x-tcl;text/x-tex;application/x-shellscript;text/x-c;text/x-c++; +Exec=gvim -f %f +Icon=gvim +Type=Application +Terminal=0 +X-XClassHintResName=VIM +MapNotify=false diff --git a/gvim16.png b/gvim16.png index fb45d22a..b0859d66 100644 Binary files a/gvim16.png and b/gvim16.png differ diff --git a/gvim32.png b/gvim32.png index c6e04fab..961040c5 100644 Binary files a/gvim32.png and b/gvim32.png differ diff --git a/gvim48.png b/gvim48.png index 4bac67e6..71876645 100644 Binary files a/gvim48.png and b/gvim48.png differ diff --git a/gvim64.png b/gvim64.png index 5dcd4d33..2bdc8bd8 100644 Binary files a/gvim64.png and b/gvim64.png differ diff --git a/macros.vim b/macros.vim deleted file mode 100644 index a43156e7..00000000 --- a/macros.vim +++ /dev/null @@ -1 +0,0 @@ -%vimfiles_root %{_datadir}/vim/vimfiles diff --git a/plans.fmf b/plans.fmf deleted file mode 100644 index 0b2564f3..00000000 --- a/plans.fmf +++ /dev/null @@ -1,35 +0,0 @@ -/tier1-internal: - plan: - import: - url: https://gitlab.com/redhat/centos-stream/tests/vim.git - name: /plans/tier1/internal - -/tier1-public: - plan: - import: - url: https://gitlab.com/redhat/centos-stream/tests/vim.git - name: /plans/tier1/public - -/tier2-tier3-internal: - plan: - import: - url: https://gitlab.com/redhat/centos-stream/tests/vim.git - name: /plans/tier2-tier3/internal - -/tier2-tier3-public: - plan: - import: - url: https://gitlab.com/redhat/centos-stream/tests/vim.git - name: /plans/tier2-tier3/public - -/others-internal: - plan: - import: - url: https://gitlab.com/redhat/centos-stream/tests/vim.git - name: /plans/others/internal - -/others-public: - plan: - import: - url: https://gitlab.com/redhat/centos-stream/tests/vim.git - name: /plans/others/public \ No newline at end of file diff --git a/sources b/sources index 14532821..786a587f 100644 --- a/sources +++ b/sources @@ -1 +1,3 @@ -SHA512 (vim-9.1-2068.tar.bz2) = f19ae5898f7c388f437fe03af23d956ef66706c2a629a3389622e0b583d9bd831dd4e250badb181fceacb2b52b1f8a6bda4f72fbece122b5f5097153daf774f3 +605cc7ae31bcc9d7864bb0bb6025f55d vim-7.1-extra.tar.gz +144aa049ba70621acf4247f0459f3ee7 vim-7.1-lang.tar.gz +44c6b4914f38d6f9aa959640b89da329 vim-7.1.tar.bz2 diff --git a/spec-template.new b/spec-template.new deleted file mode 100644 index 2a558fb7..00000000 --- a/spec-template.new +++ /dev/null @@ -1,41 +0,0 @@ -# SPEC file overview: -# https://docs.fedoraproject.org/en-US/quick-docs/creating-rpm-packages/#con_rpm-spec-file-overview -# Fedora packaging guidelines: -# https://docs.fedoraproject.org/en-US/packaging-guidelines/ - - -Name: -Version: -Release: 0%{?dist} -Summary: - -License: -URL: -Source0: - -BuildRequires: -Requires: - -%description - - -%prep -%setup -q - - -%build -%configure -make %{?_smp_mflags} - - -%install -%make_install - - -%files -%doc -%license - - - -%changelog diff --git a/vi_wrapper b/vi_wrapper deleted file mode 100644 index 1bb1aece..00000000 --- a/vi_wrapper +++ /dev/null @@ -1,23 +0,0 @@ -#!/usr/bin/sh - -# run vim if: -# - 'vi' command is used and 'vim' binary is available -# - 'vim' command is used -# NOTE: Set up a local alias if you want vim -> vi functionality. We will not -# do it globally, because it messes up with available startup options (see -# ':help starting', 'vi' is not capable of '-d'). The introducing an environment -# variable, which an user must set to get the feature, will do the same trick -# as setting an alias (needs user input, does not work with sudo), so it is left -# on user whether he decides to use an alias: -# -# alias vim=vi -# -# in bashrc file. - -if test -f /usr/bin/vim -then - exec /usr/bin/vim "$@" -fi - -# run vi otherwise -exec /usr/libexec/vi "$@" diff --git a/view_wrapper b/view_wrapper deleted file mode 100644 index 9e8d7207..00000000 --- a/view_wrapper +++ /dev/null @@ -1,10 +0,0 @@ -#!/usr/bin/sh - -# run vim -R if available -if test -f /usr/bin/vim -then - exec /usr/bin/vim -R "$@" -fi - -# run vi otherwise -exec /usr/libexec/vi -R "$@" diff --git a/vim-6.1-rh3.patch b/vim-6.1-rh3.patch new file mode 100644 index 00000000..5d3b8cfc --- /dev/null +++ b/vim-6.1-rh3.patch @@ -0,0 +1,11 @@ +--- vim61/runtime/scripts.vim.rh3 2003-02-12 13:00:49.000000000 +0100 ++++ vim61/runtime/scripts.vim 2003-02-12 13:01:37.000000000 +0100 +@@ -22,6 +22,8 @@ + endif + endif + ++set formatoptions=tcql nocindent comments& ++ + " Line continuation is used here, remove 'C' from 'cpoptions' + let s:cpo_save = &cpo + set cpo&vim diff --git a/vim-6.2-specsyntax.patch b/vim-6.2-specsyntax.patch new file mode 100644 index 00000000..334d8a17 --- /dev/null +++ b/vim-6.2-specsyntax.patch @@ -0,0 +1,32 @@ +--- vim62d/runtime/syntax/spec.vim.highlite 2003-05-13 14:48:55.000000000 +0200 ++++ vim62d/runtime/syntax/spec.vim 2003-05-13 14:52:51.000000000 +0200 +@@ -38,7 +38,7 @@ + syn match specManpageFile '[a-zA-Z]\.1' + + "Day, Month and most used license acronyms +-syn keyword specLicense contained GPL LGPL BSD MIT GNU ++syn keyword specLicense contained GPL LGPL BSD MIT GNU distributable + syn keyword specWeekday contained Mon Tue Wed Thu Fri Sat Sun + syn keyword specMonth contained Jan Feb Mar Apr Jun Jul Aug Sep Oct Nov Dec + syn keyword specMonth contained January February March April May June July August September October November December +@@ -61,9 +61,9 @@ + + "specComands + syn match specConfigure contained '\./configure' +-syn match specTarCommand contained '\ ++" Taylor Venable + " Neil Bird +-" $Author: karsten $ +-" $Date: 2008/02/11 16:41:46 $ +-" Version: 4.2 +-" $Revision: 1.1 $ +-" $HeadURL: https://svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/autoload/ada.vim $ ++" Ned Okie ++" $Author: karsten $ ++" $Date: 2008/02/11 16:41:46 $ ++" Version: 4.5 ++" $Revision: 1.1 $ ++" $HeadURL: https://gnuada.svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/autoload/ada.vim $ + " History: 24.05.2006 MK Unified Headers + " 26.05.2006 MK ' should not be in iskeyword. + " 16.07.2006 MK Ada-Mode as vim-ball +@@ -17,6 +19,10 @@ + " 05.11.2006 MK Bram suggested not to use include protection for + " autoload + " 05.11.2006 MK Bram suggested to save on spaces ++" 08.07.2007 TV fix mapleader problems. ++" 09.05.2007 MK Session just won't work no matter how much ++" tweaking is done ++" 19.09.2007 NO still some mapleader problems + " Help Page: ft-ada-functions + "------------------------------------------------------------------------------ + +@@ -425,7 +431,15 @@ + execute '!ctags --excmd=number ' . l:Filename + endfunction ada#Create_Tags + +-function ada#Switch_Session (New_Session) "{{{1 ++" Section: ada#Switch_Session {{{1 ++" ++function ada#Switch_Session (New_Session) ++ " ++ " you should not save to much date into the seession since they will ++ " be sourced ++ " ++ set sessionoptions=buffers,curdir,folds,globals,resize,slash,tabpages,tabpages,unix,winpos,winsize ++ + if a:New_Session != v:this_session + " + " We actualy got a new session - otherwise there +@@ -437,18 +451,23 @@ + + let v:this_session = a:New_Session + +- if filereadable (v:this_session) +- execute 'source ' . v:this_session +- endif ++ "if filereadable (v:this_session) ++ "execute 'source ' . v:this_session ++ "endif + + augroup ada_session + autocmd! + autocmd VimLeavePre * execute 'mksession! ' . v:this_session + augroup END ++ " ++ "if exists ("g:Tlist_Auto_Open") && g:Tlist_Auto_Open ++ "TlistOpen ++ "endif ++ + endif + + return +-endfunction ada#Switch_Session "}}}1 ++endfunction ada#Switch_Session + + " Section: GNAT Pretty Printer folding {{{1 + " +@@ -546,18 +565,23 @@ + \ a:Keys . + \" :" . a:Command . "" + else ++ if exists("g:mapleader") ++ let l:leader = g:mapleader ++ else ++ let l:leader = '\' ++ endif + execute + \ "50amenu " . + \ "Ada." . escape(a:Text, ' ') . +- \ "" . escape(g:mapleader . "a" . a:Keys , '\') . ++ \ "" . escape(l:leader . "a" . a:Keys , '\') . + \ " :" . a:Command . "" + execute + \ "nnoremap " . +- \ escape(g:mapleader . "a" . a:Keys , '\') . ++ \ escape(l:leader . "a" . a:Keys , '\') . + \" :" . a:Command + execute + \ "inoremap " . +- \ escape(g:mapleader . "a" . a:Keys , '\') . ++ \ escape(l:leader . "a" . a:Keys , '\') . + \" :" . a:Command + endif + return +@@ -566,10 +590,15 @@ + " Section: ada#Map_Popup {{{2 + " + function ada#Map_Popup (Text, Keys, Command) ++ if exists("g:mapleader") ++ let l:leader = g:mapleader ++ else ++ let l:leader = '\' ++ endif + execute + \ "50amenu " . + \ "PopUp." . escape(a:Text, ' ') . +- \ "" . escape(g:mapleader . "a" . a:Keys , '\') . ++ \ "" . escape(l:leader . "a" . a:Keys , '\') . + \ " :" . a:Command . "" + + call ada#Map_Menu (a:Text, a:Keys, a:Command) +diff -urN vim71/runtime/autoload/decada.vim vim71_ada/runtime/autoload/decada.vim +--- vim71/runtime/autoload/decada.vim 2007-05-05 19:25:32.000000000 +0200 ++++ vim71_ada/runtime/autoload/decada.vim 2008-01-16 16:46:41.000000000 +0100 +@@ -1,14 +1,14 @@ + "------------------------------------------------------------------------------ + " Description: Vim Ada/Dec Ada compiler file + " Language: Ada (Dec Ada) +-" $Id: vim-7.1-ada.patch,v 1.1 2008/02/11 16:41:46 karsten Exp $ ++" $Id: vim-7.1-ada.patch,v 1.1 2008/02/11 16:41:46 karsten Exp $ + " Copyright: Copyright (C) 2006 Martin Krischik +-" Maintainer: Martin Krischik +-" $Author: karsten $ +-" $Date: 2008/02/11 16:41:46 $ +-" Version: 4.2 +-" $Revision: 1.1 $ +-" $HeadURL: https://svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/autoload/decada.vim $ ++" Maintainer: Martin Krischik ++" $Author: karsten $ ++" $Date: 2008/02/11 16:41:46 $ ++" Version: 4.5 ++" $Revision: 1.1 $ ++" $HeadURL: https://gnuada.svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/autoload/decada.vim $ + " History: 21.07.2006 MK New Dec Ada + " 15.10.2006 MK Bram's suggestion for runtime integration + " 05.11.2006 MK Bram suggested not to use include protection for +@@ -45,7 +45,7 @@ + call ada#Switch_Session (a:1) + elseif argc() == 0 && strlen (v:servername) > 0 + call ada#Switch_Session ( +- \ expand('~')[0:-2] . ".vimfiles.session]" . ++ \ expand('~')[0:-2] . ".vimfiles.session]decada_" . + \ v:servername . ".vim") + endif + return +diff -urN vim71/runtime/autoload/gnat.vim vim71_ada/runtime/autoload/gnat.vim +--- vim71/runtime/autoload/gnat.vim 2007-05-05 20:18:20.000000000 +0200 ++++ vim71_ada/runtime/autoload/gnat.vim 2008-01-16 16:46:46.000000000 +0100 +@@ -1,14 +1,15 @@ + "------------------------------------------------------------------------------ + " Description: Vim Ada/GNAT compiler file + " Language: Ada (GNAT) +-" $Id: vim-7.1-ada.patch,v 1.1 2008/02/11 16:41:46 karsten Exp $ ++" $Id: vim-7.1-ada.patch,v 1.1 2008/02/11 16:41:46 karsten Exp $ + " Copyright: Copyright (C) 2006 Martin Krischik +-" Maintainer: Martin Krischik +-" $Author: karsten $ +-" $Date: 2008/02/11 16:41:46 $ +-" Version: 4.2 +-" $Revision: 1.1 $ +-" $HeadURL: https://svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/autoload/gnat.vim $ ++" Maintainer: Martin Krischi k ++" Ned Okie ++" $Author: karsten $ ++" $Date: 2008/02/11 16:41:46 $ ++" Version: 4.5 ++" $Revision: 1.1 $ ++" $HeadURL: https://gnuada.svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/autoload/gnat.vim $ + " History: 24.05.2006 MK Unified Headers + " 16.07.2006 MK Ada-Mode as vim-ball + " 05.08.2006 MK Add session support +@@ -16,6 +17,7 @@ + " 05.11.2006 MK Bram suggested not to use include protection for + " autoload + " 05.11.2006 MK Bram suggested to save on spaces ++" 19.09.2007 NO use project file only when there is a project + " Help Page: compiler-gnat + "------------------------------------------------------------------------------ + +@@ -71,13 +73,19 @@ + execute 'mksession! ' . v:this_session + endif + +- if strlen (self.Project_File) > 0 +- call ada#Switch_Session ( +- \ expand('~') . "/vimfiles/session/" . +- \ fnamemodify (self.Project_File, ":t:r") . ".vim") +- else +- call ada#Switch_Session ('') +- endif ++ "if strlen (self.Project_File) > 0 ++ "if has("vms") ++ "call ada#Switch_Session ( ++ "\ expand('~')[0:-2] . ".vimfiles.session]gnat_" . ++ "\ fnamemodify (self.Project_File, ":t:r") . ".vim") ++ "else ++ "call ada#Switch_Session ( ++ "\ expand('~') . "/vimfiles/session/gnat_" . ++ "\ fnamemodify (self.Project_File, ":t:r") . ".vim") ++ "endif ++ "else ++ "call ada#Switch_Session ('') ++ "endif + + return + endfunction gnat#Set_Project_File " }}}1 +diff -urN vim71/runtime/compiler/decada.vim vim71_ada/runtime/compiler/decada.vim +--- vim71/runtime/compiler/decada.vim 2007-05-05 20:09:54.000000000 +0200 ++++ vim71_ada/runtime/compiler/decada.vim 2008-01-16 16:37:03.000000000 +0100 +@@ -1,16 +1,17 @@ + "------------------------------------------------------------------------------ + " Description: Vim Ada/Dec Ada compiler file + " Language: Ada (Dec Ada) +-" $Id: vim-7.1-ada.patch,v 1.1 2008/02/11 16:41:46 karsten Exp $ ++" $Id: vim-7.1-ada.patch,v 1.1 2008/02/11 16:41:46 karsten Exp $ + " Copyright: Copyright (C) 2006 Martin Krischik +-" Maintainer: Martin Krischik +-" $Author: karsten $ +-" $Date: 2008/02/11 16:41:46 $ +-" Version: 4.2 +-" $Revision: 1.1 $ +-" $HeadURL: https://svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/compiler/decada.vim $ ++" Maintainer: Martin Krischik ++" $Author: karsten $ ++" $Date: 2008/02/11 16:41:46 $ ++" Version: 4.5 ++" $Revision: 1.1 $ ++" $HeadURL: https://gnuada.svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/compiler/decada.vim $ + " History: 21.07.2006 MK New Dec Ada + " 15.10.2006 MK Bram's suggestion for runtime integration ++" 08.09.2006 MK Correct double load protection. + " Help Page: compiler-decada + "------------------------------------------------------------------------------ + +@@ -24,6 +25,13 @@ + + if !exists("g:decada") + let g:decada = decada#New () ++ ++ call ada#Map_Menu ( ++ \'Dec Ada.Build', ++ \'', ++ \'call decada.Make ()') ++ ++ call g:decada.Set_Session () + endif + + if exists(":CompilerSet") != 2 +@@ -33,16 +41,9 @@ + command -nargs=* CompilerSet setlocal + endif + +-call g:decada.Set_Session () +- + execute "CompilerSet makeprg=" . escape (g:decada.Make_Command, ' ') + execute "CompilerSet errorformat=" . escape (g:decada.Error_Format, ' ') + +-call ada#Map_Menu ( +- \'Dec Ada.Build', +- \'', +- \'call decada.Make ()') +- + finish " 1}}} + + "------------------------------------------------------------------------------ +diff -urN vim71/runtime/compiler/gnat.vim vim71_ada/runtime/compiler/gnat.vim +--- vim71/runtime/compiler/gnat.vim 2007-05-05 20:04:19.000000000 +0200 ++++ vim71_ada/runtime/compiler/gnat.vim 2008-01-16 16:37:03.000000000 +0100 +@@ -1,17 +1,19 @@ + "------------------------------------------------------------------------------ + " Description: Vim Ada/GNAT compiler file + " Language: Ada (GNAT) +-" $Id: vim-7.1-ada.patch,v 1.1 2008/02/11 16:41:46 karsten Exp $ ++" $Id: vim-7.1-ada.patch,v 1.1 2008/02/11 16:41:46 karsten Exp $ + " Copyright: Copyright (C) 2006 Martin Krischik +-" Maintainer: Martin Krischik +-" $Author: karsten $ +-" $Date: 2008/02/11 16:41:46 $ +-" Version: 4.2 +-" $Revision: 1.1 $ +-" $HeadURL: https://svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/compiler/gnat.vim $ ++" Maintainer: Martin Krischi k ++" Ned Okie ++" $Author: karsten $ ++" $Date: 2008/02/11 16:41:46 $ ++" Version: 4.5 ++" $Revision: 1.1 $ ++" $HeadURL: https://gnuada.svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/compiler/gnat.vim $ + " History: 24.05.2006 MK Unified Headers + " 16.07.2006 MK Ada-Mode as vim-ball + " 15.10.2006 MK Bram's suggestion for runtime integration ++" 19.09.2007 NO use project file only when there is a project + " Help Page: compiler-gnat + "------------------------------------------------------------------------------ + +@@ -46,6 +48,8 @@ + \ 'GNAT.Set Projectfile\.\.\.', + \ ':SetProject', + \ 'call gnat.Set_Project_File ()') ++ ++ call g:gnat.Set_Session () + endif + + if exists(":CompilerSet") != 2 +@@ -55,8 +59,6 @@ + command -nargs=* CompilerSet setlocal + endif + +-call g:gnat.Set_Session () +- + execute "CompilerSet makeprg=" . escape (g:gnat.Get_Command('Make'), ' ') + execute "CompilerSet errorformat=" . escape (g:gnat.Error_Format, ' ') + +diff -urN vim71/runtime/doc/ft_ada.txt vim71_ada/runtime/doc/ft_ada.txt +--- vim71/runtime/doc/ft_ada.txt 1970-01-01 01:00:00.000000000 +0100 ++++ vim71_ada/runtime/doc/ft_ada.txt 2008-01-16 16:37:03.000000000 +0100 +@@ -0,0 +1,516 @@ ++*ft_ada.txt* Ada File type Plug-ins Last change: 2007 Seb 17 ++ ++ ++ ADA FILE TYPE PLUG-INS REFERENCE MANUAL~ ++ ++ADA *ada.vim* ++ ++1. Syntax Highlighting |ft-ada-syntax| ++2. Plug-in |ft-ada-plugin| ++3. Omni Completion |ft-ada-omni| ++ 3.1 Omni Completion with "gnat xref" |gnat-xref| ++ 3.2 Omni Completion with "ctags" |ada-ctags| ++4. Compiler Support |ada-compiler| ++ 4.1 GNAT |compiler-gnat| ++ 4.1 Dec Ada |compiler-decada| ++5. References |ada-reference| ++ 5.1 Options |ft-ada-options| ++ 5.2 Functions |ft-ada-functions| ++ 5.3 Commands |ft-ada-commands| ++ 5.4 Variables |ft-ada-variables| ++ 5.5 Constants |ft-ada-contstants| ++8. Extra Plug-ins |ada-extra-plugins| ++ ++============================================================================== ++1. Syntax Highlighting ~ ++ *ft-ada-syntax* ++ ++This mode is designed for the 2005 edition of Ada ("Ada 2005"), which includes ++support for objected-programming, protected types, and so on. It handles code ++written for the original Ada language ("Ada83", "Ada87", "Ada95") as well, ++though code which uses Ada 2005-only keywords will be wrongly colored (such ++code should be fixed anyway). For more information about Ada, see ++http://www.adapower.com. ++ ++The Ada mode handles a number of situations cleanly. ++ ++For example, it knows that the "-" in "-5" is a number, but the same character ++in "A-5" is an operator. Normally, a "with" or "use" clause referencing ++another compilation unit is coloured the same way as C's "#include" is coloured. ++If you have "Conditional" or "Repeat" groups coloured differently, then "end ++if" and "end loop" will be coloured as part of those respective groups. ++ ++You can set these to different colours using vim's "highlight" command (e.g., ++to change how loops are displayed, enter the command ":hi Repeat" followed by ++the colour specification; on simple terminals the colour specification ++ctermfg=White often shows well). ++ ++There are several options you can select in this Ada mode. See|ft-ada-options| ++for a complete list. ++ ++To enable them, assign a value to the option. For example, to turn one on: ++ > ++ > let g:ada_standard_types = 1 ++> ++To disable them use ":unlet". Example: ++> ++ > unlet g:ada_standard_types ++ ++You can just use ":" and type these into the command line to set these ++temporarily before loading an Ada file. You can make these option settings ++permanent by adding the "let" command(s), without a colon, to your "~/.vimrc" ++file. ++ ++Even on a slow (90Mhz) PC this mode works quickly, but if you find the ++performance unacceptable, turn on |g:ada_withuse_ordinary|. ++ ++Syntax folding instructions (|fold-syntax|) are added when |g:ada_folding| is ++set. ++ ++============================================================================== ++2. File type Plug-in ~ ++ *ft-ada-indent* *ft-ada-plugin* ++ ++The Ada plug-in provides support for: ++ ++ - auto indenting (|indent.txt|) ++ - insert completion (|i_CTRL-N|) ++ - user completion (|i_CTRL-X_CTRL-U|) ++ - tag searches (|tagsrch.txt|) ++ - Quick Fix (|quickfix.txt|) ++ - backspace handling (|'backspace'|) ++ - comment handling (|'comments'|, |'commentstring'|) ++ ++The plug-in only activates the features of the Ada mode whenever an Ada ++files is opened and add adds Ada related entries to the main and pop-up menu. ++ ++============================================================================== ++3. Omni Completion ~ ++ *ft-ada-omni* ++ ++The Ada omni-completions (|i_CTRL-X_CTRL-O|) uses tags database created either ++by "gnat xref -v" or the "exuberant Ctags (http://ctags.sourceforge.net). The ++complete function will automatically detect which tool was used to create the ++tags file. ++ ++------------------------------------------------------------------------------ ++3.1 Omni Completion with "gnat xref" ~ ++ *gnat-xref* ++ ++GNAT XREF uses the compiler internal information (ali-files) to produce the ++tags file. This has the advantage to be 100% correct and the option of deep ++nested analysis. However the code must compile, the generator is quite ++slow and the created tags file contains only the basic Ctags information for ++each entry - not enough for some of the more advanced Vim code browser ++plug-ins. ++ ++NOTE: "gnat xref -v" is very tricky to use as it has almost no diagnostic ++ output - If nothing is printed then usually the parameters are wrong. ++ Here some important tips: ++ ++1) You need to compile your code first and use the "-aO" option to point to ++ your .ali files. ++2) "gnat xref -v ../Include/adacl.ads" won't work - use the "gnat xref -v ++ -aI../Include adacl.ads" instead. ++3) "gnat xref -v -aI../Include *.ad?" won't work - use "cd ../Include" and ++ then "gnat xref -v *.ad?" ++4) Project manager support is completely broken - don't even try "gnat xref ++ -Padacl.gpr". ++5) VIM is faster when the tags file is sorted - use "sort --unique ++ --ignore-case --output=tags tags" . ++6) Remember to insert "!_TAG_FILE_SORTED 2 %sort ui" as first line to mark ++ the file assorted. ++ ++------------------------------------------------------------------------------ ++3.2 Omni Completion with "ctags"~ ++ *ada-ctags* ++ ++Exuberant Ctags uses it's own multi-language code parser. The parser is quite ++fast, produces a lot of extra informations (hence the name "Exuberant Ctags") ++and can run on files which currently do not compile. ++ ++There are also lots of other Vim-tools which use exuberant Ctags. ++ ++You will need to install a version of the Exuberant Ctags which has Ada ++support patched in. Such a version is available from the GNU Ada Project ++(http://gnuada.sourceforge.net). ++ ++The Ada parser for Exuberant Ctags is fairly new - don't expect complete ++support yet. ++ ++============================================================================== ++4. Compiler Support ~ ++ *ada-compiler* ++ ++The Ada mode supports more then one Ada compiler and will automatically load the ++compiler set in|g:ada_default_compiler|whenever an Ada source is opened. The ++provided compiler plug-ins are split into the actual compiler plug-in and a ++collection of support functions and variables. This allows the easy ++development of specialized compiler plug-ins fine tuned to your development ++environment. ++ ++------------------------------------------------------------------------------ ++4.1 GNAT ~ ++ *compiler-gnat* ++ ++GNAT is the only free (beer and speech) Ada compiler available. There are ++several version available which differentiate in the licence terms used. ++ ++The GNAT compiler plug-in will perform a compile on pressing and then ++immediately shows the result. You can set the project file to be used by ++setting: ++ > ++ > call g:gnat.Set_Project_File ('my_project.gpr') ++ ++Setting a project file will also create a Vim session (|views-sessions|) so - ++like with the GPS - opened files, window positions etc. will remembered ++separately for all projects. ++ ++ *gnat_members* ++GNAT OBJECT ~ ++ ++ *g:gnat.Make()* ++g:gnat.Make() ++ Calls|g:gnat.Make_Command|and displays the result inside a ++ |quickfix| window. ++ ++ *g:gnat.Pretty()* ++g:gnat.Pretty() ++ Calls|g:gnat.Pretty_Command| ++ ++ *g:gnat.Find()* ++g:gnat.Find() ++ Calls|g:gnat.Find_Command| ++ ++ *g:gnat.Tags()* ++g:gnat.Tags() ++ Calls|g:gnat.Tags_Command| ++ ++ *g:gnat.Set_Project_File()* ++g:gnat.Set_Project_File([{file}]) ++ Set gnat project file and load associated session. An open ++ project will be closed and the session written. If called ++ without file name the file selector opens for selection of a ++ project file. If called with an empty string then the project ++ and associated session are closed. ++ ++ *g:gnat.Project_File* ++g:gnat.Project_File string ++ Current project file. ++ ++ *g:gnat.Make_Command* ++g:gnat.Make_Command string ++ External command used for|g:gnat.Make()| (|'makeprg'|). ++ ++ *g:gnat.Pretty_Program* ++g:gnat.Pretty_Program string ++ External command used for|g:gnat.Pretty()| ++ ++ *g:gnat.Find_Program* ++g:gnat.Find_Program string ++ External command used for|g:gnat.Find()| ++ ++ *g:gnat.Tags_Command* ++g:gnat.Tags_Command string ++ External command used for|g:gnat.Tags()| ++ ++ *g:gnat.Error_Format* ++g:gnat.Error_Format string ++ Error format (|'errorformat'|) ++ ++------------------------------------------------------------------------------ ++4.2 Dec Ada ~ ++ *compiler-hpada* *compiler-decada* ++ *compiler-vaxada* *compiler-compaqada* ++ ++Dec Ada (also known by - in chronological order - VAX Ada, Dec Ada, Compaq Ada ++and HP Ada) is a fairly dated Ada 83 compiler. Support is basic: will ++compile the current unit. ++ ++The Dec Ada compiler expects the package name and not the file name to be ++passed a parameter. The compiler plug-in supports the usual file name ++convention to convert the file into a unit name. For separates both '-' and ++'__' are allowed. ++ ++ *decada_members* ++DEC ADA OBJECT ~ ++ ++ *g:decada.Make()* ++g:decada.Make() function ++ Calls|g:decada.Make_Command|and displays the result inside a ++ |quickfix| window. ++ ++ *g:decada.Unit_Name()* ++g:decada.Unit_Name() function ++ Get the Unit name for the current file. ++ ++ *g:decada.Make_Command* ++g:decada.Make_Command string ++ External command used for|g:decadat.Make()| (|'makeprg'|). ++ ++ *g:decada.Error_Format* ++g:decada.Error_Format| string ++ Error format (|'errorformat'|). ++ ++============================================================================== ++5. References ~ ++ *ada-reference* ++ ++------------------------------------------------------------------------------ ++5.1 Options ~ ++ *ft-ada-options* ++ ++ *g:ada_standard_types* ++g:ada_standard_types bool (true when exists) ++ Highlight types in package Standard (e.g., "Float") ++ ++ *g:ada_space_errors* ++ *g:ada_no_trail_space_error* ++ *g:ada_no_tab_space_error* ++ *g:ada_all_tab_usage* ++g:ada_space_errors bool (true when exists) ++ Highlight extraneous errors in spaces ... ++ g:ada_no_trail_space_error ++ - but ignore trailing spaces at the end of a line ++ g:ada_no_tab_space_error ++ - but ignore tabs after spaces ++ g:ada_all_tab_usage ++ - highlight all tab use ++ ++ *g:ada_line_errors* ++g:ada_line_errors bool (true when exists) ++ Highlight lines which are to long. Note: This highlighting ++ option is quite CPU intensive. ++ ++ *g:ada_rainbow_color* ++g:ada_rainbow_color bool (true when exists) ++ Use rainbow colours for '(' and ')'. You need the ++ rainbow_parenthesis for this to work ++ ++ *g:ada_folding* ++g:ada_folding set ('sigpft') ++ Use folding for Ada sources. ++ 's': activate syntax folding on load ++ 'p': fold packages ++ 'f': fold functions and procedures ++ 't': fold types ++ 'c': fold conditionals ++ 'g': activate gnat pretty print folding on load ++ 'i': lone 'is' folded with line above ++ 'b': lone 'begin' folded with line above ++ 'p': lone 'private' folded with line above ++ 'x': lone 'exception' folded with line above ++ 'i': activate indent folding on load ++ ++ Note: Syntax folding is in an early (unuseable) stage and ++ indent or gnat pretty folding is suggested. ++ ++ For gnat pretty folding to work the following settings are ++ suggested: -cl3 -M79 -c2 -c3 -c4 -A1 -A2 -A3 -A4 -A5 ++ ++ For indent folding to work the following settings are ++ suggested: shiftwidth=3 softtabstop=3 ++ ++ *g:ada_abbrev* ++g:ada_abbrev bool (true when exists) ++ Add some abbreviations. This feature more or less superseded ++ by the various completion methods. ++ ++ *g:ada_withuse_ordinary* ++g:ada_withuse_ordinary bool (true when exists) ++ Show "with" and "use" as ordinary keywords (when used to ++ reference other compilation units they're normally highlighted ++ specially). ++ ++ *g:ada_begin_preproc* ++g:ada_begin_preproc bool (true when exists) ++ Show all begin-like keywords using the colouring of C ++ preprocessor commands. ++ ++ *g:ada_omni_with_keywords* ++g:ada_omni_with_keywords ++ Add Keywords, Pragmas, Attributes to omni-completions ++ (|compl-omni|). Note: You can always complete then with user ++ completion (|i_CTRL-X_CTRL-U|). ++ ++ *g:ada_extended_tagging* ++g:ada_extended_tagging enum ('jump', 'list') ++ use extended tagging, two options are available ++ 'jump': use tjump to jump. ++ 'list': add tags quick fix list. ++ Normal tagging does not support function or operator ++ overloading as these features are not available in C and ++ tagging was originally developed for C. ++ ++ *g:ada_extended_completion* ++g:ada_extended_completion ++ Uses extended completion for and completions ++ (|i_CTRL-N|). In this mode the '.' is used as part of the ++ identifier so that 'Object.Method' or 'Package.Procedure' are ++ completed together. ++ ++ *g:ada_gnat_extensions* ++g:ada_gnat_extensions bool (true when exists) ++ Support GNAT extensions. ++ ++ *g:ada_with_gnat_project_files* ++g:ada_with_gnat_project_files bool (true when exists) ++ Add gnat project file keywords and Attributes. ++ ++ *g:ada_default_compiler* ++g:ada_default_compiler string ++ set default compiler. Currently supported is 'gnat' and ++ 'decada'. ++ ++An "exists" type is a boolean is considered true when the variable is defined ++and false when the variable is undefined. The value which the variable is ++set makes no difference. ++ ++------------------------------------------------------------------------------ ++5.3 Commands ~ ++ *ft-ada-commands* ++ ++:AdaRainbow *:AdaRainbow* ++ Toggles rainbow colour (|g:ada_rainbow_color|) mode for ++ '(' and ')' ++ ++:AdaLines *:AdaLines* ++ Toggles line error (|g:ada_line_errors|) display ++ ++:AdaSpaces *:AdaSpaces* ++ Toggles space error (|g:ada_space_errors|) display. ++ ++:AdaTagDir *:AdaTagDir* ++ Creates tags file for the directory of the current file. ++ ++:AdaTagFile *:AdaTagFile* ++ Creates tags file for the current file. ++ ++:AdaTypes *:AdaTypes* ++ Toggles standard types (|g:ada_standard_types|) colour. ++ ++:GnatFind *:GnatFind* ++ Calls |g:gnat.Find()| ++ ++:GnatPretty *:GnatPretty* ++ Calls |g:gnat.Pretty()| ++ ++:GnatTags *:GnatTags* ++ Calls |g:gnat.Tags()| ++ ++------------------------------------------------------------------------------ ++5.3 Variables ~ ++ *ft-ada-variables* ++ ++ *g:gnat* ++g:gnat object ++ Control object which manages GNAT compiles. The object ++ is created when the first Ada source code is loaded provided ++ that |g:ada_default_compiler|is set to 'gnat'. See|gnat_members| ++ for details. ++ ++ *g:decada* ++g:decada object ++ Control object which manages Dec Ada compiles. The object ++ is created when the first Ada source code is loaded provided ++ that |g:ada_default_compiler|is set to 'decada'. See ++ |decada_members|for details. ++ ++------------------------------------------------------------------------------ ++5.4 Constants ~ ++ *ft-ada-constants* ++ ft-ada-constants ++ ++All constants are locked. See |:lockvar| for details. ++ ++ *g:ada#WordRegex* ++g:ada#WordRegex string ++ Regular expression to search for Ada words ++ ++ *g:ada#DotWordRegex* ++g:ada#DotWordRegex string ++ Regular expression to search for Ada words separated by dots. ++ ++ *g:ada#Comment* ++g:ada#Comment string ++ Regular expression to search for Ada comments ++ ++ *g:ada#Keywords* ++g:ada#Keywords list of dictionaries ++ List of keywords, attributes etc. pp. in the format used by ++ omni completion. See |complete-items| for details. ++ ++ *g:ada#Ctags_Kinds* ++g:ada#Ctags_Kinds dictionary of lists ++ Dictionary of the various kinds of items which the Ada support ++ for Ctags generates. ++ ++------------------------------------------------------------------------------ ++5.2 Functions ~ ++ *ft-ada-functions* ++ ++ada#Word([{line}, {col}]) *ada#Word()* ++ Return full name of Ada entity under the cursor (or at given ++ line/column), stripping white space/newlines as necessary. ++ ++ada#List_Tag([{line}, {col}]) *ada#Listtags()* ++ List all occurrences of the Ada entity under the cursor (or at ++ given line/column) inside the quick-fix window ++ ++ada#Jump_Tag ({ident}, {mode}) *ada#Jump_Tag()* ++ List all occurrences of the Ada entity under the cursor (or at ++ given line/column) in the tag jump list. Mode can either be ++ 'tjump' or 'stjump'. ++ ++ada#Create_Tags ({option}) *ada#Create_Tags()* ++ Creates tag file using Ctags. The option can either be 'file' ++ for the current file, 'dir' for the directory of the current ++ file or a file name. ++ ++gnat#Insert_Tags_Header() *gnat#Insert_Tags_Header()* ++ Adds the tag file header (!_TAG_) information to the current ++ file which are missing from the GNAT XREF output. ++ ++ada#Switch_Syntax_Option ({option}) *ada#Switch_Syntax_Option()* ++ Toggles highlighting options on or off. Used for the Ada menu. ++ ++ *gnat#New()* ++gnat#New () ++ Create a new gnat object. See |g:gnat| for details. ++ ++ ++============================================================================== ++8. Extra Plugins ~ ++ *ada-extra-plugins* ++ ++You can optionally install the following extra plug-in. They work well with Ada ++and enhance the ability of the Ada mode.: ++ ++backup.vim ++ http://www.vim.org/scripts/script.php?script_id=1537 ++ Keeps as many backups as you like so you don't have to. ++ ++rainbow_parenthsis.vim ++ http://www.vim.org/scripts/script.php?script_id=1561 ++ Very helpful since Ada uses only '(' and ')'. ++ ++nerd_comments.vim ++ http://www.vim.org/scripts/script.php?script_id=1218 ++ Excellent commenting and uncommenting support for almost any ++ programming language. ++ ++matchit.vim ++ http://www.vim.org/scripts/script.php?script_id=39 ++ '%' jumping for any language. The normal '%' jump only works for '{}' ++ style languages. The Ada mode will set the needed search patters. ++ ++taglist.vim ++ http://www.vim.org/scripts/script.php?script_id=273 ++ Source code explorer sidebar. There is a patch for Ada available. ++ ++The GNU Ada Project distribution (http://gnuada.sourceforge.net) of Vim ++contains all of the above. ++ ++============================================================================== ++vim: textwidth=78 nowrap tabstop=8 shiftwidth=4 softtabstop=4 noexpandtab ++vim: filetype=help +diff -urN vim71/runtime/ftplugin/ada.vim vim71_ada/runtime/ftplugin/ada.vim +--- vim71/runtime/ftplugin/ada.vim 2007-05-05 19:17:45.000000000 +0200 ++++ vim71_ada/runtime/ftplugin/ada.vim 2008-01-16 16:37:03.000000000 +0100 +@@ -1,14 +1,15 @@ + "------------------------------------------------------------------------------ + " Description: Perform Ada specific completion & tagging. + " Language: Ada (2005) +-" $Id: vim-7.1-ada.patch,v 1.1 2008/02/11 16:41:46 karsten Exp $ +-" Maintainer: Martin Krischik ++" $Id: vim-7.1-ada.patch,v 1.1 2008/02/11 16:41:46 karsten Exp $ ++" Maintainer: Martin Krischik ++" Taylor Venable + " Neil Bird +-" $Author: karsten $ +-" $Date: 2008/02/11 16:41:46 $ +-" Version: 4.2 +-" $Revision: 1.1 $ +-" $HeadURL: https://svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/ftplugin/ada.vim $ ++" $Author: karsten $ ++" $Date: 2008/02/11 16:41:46 $ ++" Version: 4.5 ++" $Revision: 1.1 $ ++" $HeadURL: https://gnuada.svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/ftplugin/ada.vim $ + " History: 24.05.2006 MK Unified Headers + " 26.05.2006 MK ' should not be in iskeyword. + " 16.07.2006 MK Ada-Mode as vim-ball +@@ -17,6 +18,7 @@ + " 05.11.2006 MK Bram suggested not to use include protection for + " autoload + " 05.11.2006 MK Bram suggested to save on spaces ++" 08.07.2007 TV fix default compiler problems. + " Help Page: ft-ada-plugin + "------------------------------------------------------------------------------ + " Provides mapping overrides for tag jumping that figure out the current +@@ -30,7 +32,7 @@ + endif + + " Don't load another plugin for this buffer +-let b:did_ftplugin = 38 ++let b:did_ftplugin = 45 + + " + " Temporarily set cpoptions to ensure the script loads OK +@@ -104,8 +106,17 @@ + \ s:notend . '\:\\s\+\' + endif + ++ + " Section: Compiler {{{1 + " ++if ! exists("g:ada_default_compiler") ++ if has("vms") ++ let g:ada_default_compiler = 'decada' ++ else ++ let g:ada_default_compiler = 'gnat' ++ endif ++endif ++ + if ! exists("current_compiler") || + \ current_compiler != g:ada_default_compiler + execute "compiler " . g:ada_default_compiler +diff -urN vim71/runtime/indent/ada.vim vim71_ada/runtime/indent/ada.vim +--- vim71/runtime/indent/ada.vim 2007-05-05 19:25:37.000000000 +0200 ++++ vim71_ada/runtime/indent/ada.vim 2008-01-16 16:37:02.000000000 +0100 +@@ -1,19 +1,21 @@ + "------------------------------------------------------------------------------ + " Description: Vim Ada indent file + " Language: Ada (2005) +-" $Id: vim-7.1-ada.patch,v 1.1 2008/02/11 16:41:46 karsten Exp $ ++" $Id: vim-7.1-ada.patch,v 1.1 2008/02/11 16:41:46 karsten Exp $ + " Copyright: Copyright (C) 2006 Martin Krischik +-" Maintainer: Martin Krischik ++" Maintainer: Martin Krischik + " Neil Bird +-" $Author: karsten $ +-" $Date: 2008/02/11 16:41:46 $ +-" Version: 4.2 +-" $Revision: 1.1 $ +-" $HeadURL: https://svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/indent/ada.vim $ ++" Ned Okie ++" $Author: karsten $ ++" $Date: 2008/02/11 16:41:46 $ ++" Version: 4.5 ++" $Revision: 1.1 $ ++" $HeadURL: https://gnuada.svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/indent/ada.vim $ + " History: 24.05.2006 MK Unified Headers + " 16.07.2006 MK Ada-Mode as vim-ball + " 15.10.2006 MK Bram's suggestion for runtime integration + " 05.11.2006 MK Bram suggested to save on spaces ++" 19.09.2007 NO g: missing before ada#Comment + " Help Page: ft-vim-indent + "------------------------------------------------------------------------------ + " ToDo: +@@ -27,7 +29,7 @@ + finish + endif + +-let b:did_indent = 1 ++let b:did_indent = 45 + + setlocal indentexpr=GetAdaIndent() + setlocal indentkeys-=0{,0} +@@ -58,7 +60,7 @@ + " Seems to work OK as it 'starts' with the indent of the /previous/ line. + function s:MainBlockIndent (prev_indent, prev_lnum, blockstart, stop_at) + let lnum = a:prev_lnum +- let line = substitute( getline(lnum), ada#Comment, '', '' ) ++ let line = substitute( getline(lnum), g:ada#Comment, '', '' ) + while lnum > 1 + if a:stop_at != '' && line =~ '^\s*' . a:stop_at && indent(lnum) < a:prev_indent + return a:prev_indent +@@ -72,7 +74,7 @@ + let lnum = prevnonblank(lnum - 1) + " Get previous non-blank/non-comment-only line + while 1 +- let line = substitute( getline(lnum), ada#Comment, '', '' ) ++ let line = substitute( getline(lnum), g:ada#Comment, '', '' ) + if line !~ '^\s*$' && line !~ '^\s*#' + break + endif +@@ -116,7 +118,7 @@ + " Get previous non-blank/non-comment-only line + while 1 + let line = getline(lnum) +- let line = substitute( line, ada#Comment, '', '' ) ++ let line = substitute( line, g:ada#Comment, '', '' ) + if line !~ '^\s*$' + break + endif +@@ -143,7 +145,8 @@ + let lnum = prevnonblank(lnum - 1) + " Get previous non-blank/non-comment-only line + while 1 +- let line = substitute( getline(lnum), ada#Comment, '', '' ) ++ let line = substitute( getline(lnum), g:ada#Comment, '', '' ) ++ + if line !~ '^\s*$' && line !~ '^\s*#' + break + endif +@@ -222,7 +225,7 @@ + exe lnum + exe 'normal! $F)%' + if getline('.') =~ '^\s*(' +- " Dire layout - use previous indent (could check for ada#Comment here) ++ " Dire layout - use previous indent (could check for g:ada#Comment here) + let ind = indent( prevnonblank( line('.')-1 ) ) + else + let ind = indent('.') +diff -urN vim71/runtime/macros/svnignore.bash vim71_ada/runtime/macros/svnignore.bash +--- vim71/runtime/macros/svnignore.bash 1970-01-01 01:00:00.000000000 +0100 ++++ vim71_ada/runtime/macros/svnignore.bash 2008-01-16 16:37:02.000000000 +0100 +@@ -0,0 +1,9 @@ ++#!/bin/bash ++ ++svn propedit \ ++ --editor-cmd="gvim -f" \ ++ svn:ignore \ ++ "${@}" ; ++ ++# vim: textwidth=0 nowrap tabstop=8 shiftwidth=4 softtabstop=4 expandtab ++# vim: filetype=sh encoding=utf-8 fileformat=unix foldmethod=marker nospell +diff -urN vim71/runtime/macros/svnignore.btm vim71_ada/runtime/macros/svnignore.btm +--- vim71/runtime/macros/svnignore.btm 1970-01-01 01:00:00.000000000 +0100 ++++ vim71_ada/runtime/macros/svnignore.btm 2008-01-16 16:37:02.000000000 +0100 +@@ -0,0 +1,27 @@ ++::!C:\Bin\4Portable\App\4\4nt.EXE ++:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ++:: Description: Works like "tail -f" . ++:: $Id: vim-7.1-ada.patch,v 1.1 2008/02/11 16:41:46 karsten Exp $ ++:: Maintainer: Martin Krischik ++:: Jason Heddings (vim at heddway dot com) ++:: $Author: karsten $ ++:: $Date: 2008/02/11 16:41:46 $ ++:: Version: 3.0 ++:: $Revision: 1.1 $ ++:: $HeadURL: https://gnuada.svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/macros/svnignore.btm $ ++:: History: 17.11.2007 Edit svn:ignore data ++:: Help Page: tail.txt ++:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ++ ++svn propedit ^ ++ --editor-cmd="gvim -f" ^ ++ svn:ignore ^ ++ "%[$]" ++ ++:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ++:: Copyright (C) 2006 Martin Krischik ++:: ++:: Vim is Charityware - see ":help license" or uganda.txt for licence details. ++:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ++:: vim: textwidth=0 nowrap tabstop=8 shiftwidth=4 softtabstop=4 noexpandtab ++:: vim: filetype=btm encoding=utf-8 fileformat=unix foldmethod=marker nospell +diff -urN vim71/runtime/macros/svnignore.zsh vim71_ada/runtime/macros/svnignore.zsh +--- vim71/runtime/macros/svnignore.zsh 1970-01-01 01:00:00.000000000 +0100 ++++ vim71_ada/runtime/macros/svnignore.zsh 2008-01-16 16:37:02.000000000 +0100 +@@ -0,0 +1,29 @@ ++#!/bin/zsh ++#------------------------------------------------------------------------------ ++# Description: Works like "tail -f" . ++# $Id: vim-7.1-ada.patch,v 1.1 2008/02/11 16:41:46 karsten Exp $ ++# Maintainer: Martin Krischik ++# Jason Heddings (vim at heddway dot com) ++# $Author: karsten $ ++# $Date: 2008/02/11 16:41:46 $ ++# Version: 3.0 ++# $Revision: 1.1 $ ++# $HeadURL: https://gnuada.svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/macros/svnignore.zsh $ ++# History: 17.11.2007 Edit svn:ignore data ++# Help Page: tail.txt ++#------------------------------------------------------------------------------ ++ ++setopt No_X_Trace; ++ ++svn propedit \ ++ --editor-cmd="gvim -f" \ ++ svn:ignore \ ++ "${=@}" ; ++ ++#------------------------------------------------------------------------------ ++# Copyright (C) 2006 Martin Krischik ++# ++# Vim is Charityware - see ":help license" or uganda.txt for licence details. ++#------------------------------------------------------------------------------ ++# vim: textwidth=0 nowrap tabstop=8 shiftwidth=4 softtabstop=4 noexpandtab ++# vim: filetype=zsh encoding=utf-8 fileformat=unix foldmethod=marker nospell +diff -urN vim71/runtime/macros/vim.bash vim71_ada/runtime/macros/vim.bash +--- vim71/runtime/macros/vim.bash 1970-01-01 01:00:00.000000000 +0100 ++++ vim71_ada/runtime/macros/vim.bash 2008-01-16 16:37:02.000000000 +0100 +@@ -0,0 +1,191 @@ ++#!/bin/echo usage: source ++########################################################### {{{1 ########### ++# Description: Set alias names for a custom installed vim/ctags. ++# Language: Bash Shell Script ++# $Id: vim-7.1-ada.patch,v 1.1 2008/02/11 16:41:46 karsten Exp $ ++# Maintainer: Martin Krischik ++# $Author: karsten $ ++# $Date: 2008/02/11 16:41:46 $ ++# Version: 3.6 ++# $Revision: 1.1 $ ++# $HeadURL: https://gnuada.svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/macros/vim.bash $ ++# History: 26.07.2006 MK pretty new ++# Usage: copy to /etc/profile.d and make world executable ++########################################################### }}}1 ########### ++ ++ ++if ! type lxpm 2>/dev/null 1>/dev/null; then ++ ++ # Variablen ++ UName=$(uname) ++ ++ case "${UName}" in # {{{1 ++ (Linux*) # {{{2 ++ if test -x "/opt/gnat/tools/bin/vim"; then ++ declare -x VIM="/opt/gnat/tools"; ++ declare -x VIMRUNTIME="${VIM}/share/vim/vim71"; ++ else ++ unset VIM 1>/dev/null 2>/dev/null; ++ unset VIMRUNTIME 1>/dev/null 2>/dev/null; ++ fi; ++ ;; # }}}2 ++ (CYGWIN*) # {{{2 ++ if test -x "/opt/gnat/tools/bin/vim"; then ++ declare -x VIM="/opt/gnat/tools"; ++ declare -x VIMRUNTIME="${VIM}/share/vim/vim71" ++ else ++ unset VIM 1>/dev/null 2>/dev/null; ++ unset VIMRUNTIME 1>/dev/null 2>/dev/null; ++ fi; ++ ;; # }}}2 ++ (SunOS) # {{{2 ++ if test -x "/opt/gnat/tools/bin/vim"; then ++ declare -x VIM="/opt/gnat/tools"; ++ declare -x VIMRUNTIME="${VIM}/share/vim/vim71"; ++ elif test -x "${HOME}/opt/gnat/tools/bin/vim"; then ++ declare -x VIM="${HOME}/opt/gnat/tools"; ++ declare -x VIMRUNTIME="${VIM}/share/vim/vim71" ++ PATH="${VIM}/bin:${PATH}" ++ else ++ unset VIM 1>/dev/null 2>/dev/null; ++ unset VIMRUNTIME 1>/dev/null 2>/dev/null; ++ fi ++ ;; # }}}2 ++ (*) # {{{2 ++ ;; # }}}2 ++ esac; # }}}1 ++ ++ # Simple Functions ++ ++ for i in ctags etags eview evim ex gview gvim gvimdiff rgview rgvim rview rvim view vim vimdiff vimtutor xxd; do # {{{1 ++ ++ case "${UName}" in # {{{2 ++ (MINGW*) # {{{3 ++ if test -n "${VIM}"; then ++ declare -x -f ${i}; ++ ++ eval "function ${i} () ++ { ++ ${VIM}/vim71/gvim.exe \"\${@}\" ++ return; ++ }" ++ else ++ unset -f ${i} 1>/dev/null 2>/dev/null; ++ fi; ++ ;; # }}}3 ++ (Linux|CYGWIN*) # {{{3 ++ if test -n "${VIM}"; then ++ declare -x -f ${i}; ++ ++ eval "function ${i} () ++ { ++ LD_LIBRARY_PATH=\"\${LD_LIBRARY_PATH}:${VIM}/lib\" \ ++ \"${VIM}/bin/${i}\" \"\${@}\" ; ++ return; ++ }" ++ else ++ unset -f ${i} 1>/dev/null 2>/dev/null; ++ fi; ++ ;; # }}}3 ++ (*) # {{{3 ++ ;; # }}}3 ++ esac; # }}}2 ++ done; # }}}1 ++ ++ # Server Functions ++ ++ for i in lxpm med epm; do # {{{1 ++ declare -x -f ${i} ++ ++ case "${UName}" in # {{{2 ++ (MINGW*) # {{{3 ++ if test -n "${VIM}"; then ++ eval "function ${i} () ++ { ++ if test -z "\${1}"; then ++ ${VIM}/vim71/gvim.exe --servername ${i} 1>/dev/null 2>/dev/null & ++ else ++ ${VIM}/vim71/gvim.exe --servername ${i} --remote-silent \"\${@}\" 1>/dev/null 2>/dev/null & ++ fi; ++ return; ++ }" ++ else ++ eval "function ${i} () ++ { ++ if test -z "\${1}"; then ++ gvim.exe --servername ${i} 1>/dev/null 2>/dev/null & ++ else ++ gvim.exe --servername ${i} --remote-silent \"\${@}\" 1>/dev/null 2>/dev/null & ++ fi; ++ return; ++ }" ++ fi; ++ ;; # }}}3 ++ (Linux|CYGWIN*|SunOS) # {{{3 ++ if test -n "${VIM}"; then ++ eval "function ${i} () ++ { ++ if test -z \"\${1}\"; then ++ LD_LIBRARY_PATH=\"\${LD_LIBRARY_PATH}:${VIM}/lib\" \ ++ \"${VIM}/bin/gvim\" --servername \"${i} ${HOSTNAME}\" \"\${@}\" \ ++ >/dev/null 2>/dev/null & ++ else ++ LD_LIBRARY_PATH=\"\${LD_LIBRARY_PATH}:${VIM}/lib\" \ ++ \"${VIM}/bin/gvim\" --servername \"${i} ${HOSTNAME}\" --remote-silent \"\${@}\" \ ++ >/dev/null 2>/dev/null & ++ fi ++ return; ++ }" ++ else ++ eval "function ${i} () ++ { ++ if test -z \"\${1}\"; then ++ gvim --servername \"${i} ${HOSTNAME}\" >/dev/null 2>/dev/null & ++ else ++ gvim --servername \"${i} ${HOSTNAME}\" --remote-silent \"\${@}\" >/dev/null 2>/dev/null & ++ fi ++ return; ++ }" ++ fi; ++ ;; # }}}3 ++ (*) # {{{3 ++ ;; # }}}3 ++ esac; # }}}2 ++ done; # }}}1 ++ ++ # Some applications read the EDITOR variable to determine your favourite text ++ # editor. So uncomment the line below and enter the editor of your choice :-) ++ if test -n "${VIM}"; then ++ declare -x EDITOR="${VIM}/bin/gvim -f"; ++ declare -x VISUAL="${VIM}/bin/gvim -f"; ++ else ++ declare -x EDITOR="$(which gvim) -f"; ++ declare -x VISUAL="$(which gvim) -f"; ++ fi; ++ # Unset local Variablen ++ ++ unset UName ++ ++ printf "\e[42m%-30.30s : \e[43m %-40.40s \e[m\n" "$(basename ${BASH_SOURCE:-${0}})" "VIM 7.0 symbols set." ++ ++fi; ++ ++########################################################### {{{1 ########### ++# Copyright (C) 2006 Martin Krischik ++# ++# This program is free software; you can redistribute it and/or ++# modify it under the terms of the GNU General Public License ++# as published by the Free Software Foundation; either version 2 ++# of the License, or (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program; if not, write to the Free Software ++# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ++########################################################### }}}1 ########### ++# vim: textwidth=0 nowrap tabstop=8 shiftwidth=4 softtabstop=4 noexpandtab ++# vim: filetype=sh encoding=utf-8 fileformat=unix foldmethod=marker +diff -urN vim71/runtime/macros/vim.zsh vim71_ada/runtime/macros/vim.zsh +--- vim71/runtime/macros/vim.zsh 1970-01-01 01:00:00.000000000 +0100 ++++ vim71_ada/runtime/macros/vim.zsh 2008-01-16 16:37:02.000000000 +0100 +@@ -0,0 +1,17 @@ ++#!/bin/echo usage: source ++ ++setopt No_Verbose ++setopt No_X_Trace ++setopt Typeset_Silent; ++ ++# ++# Bash script is zsh compatible ++# ++HOSTNAME="${HOSTNAME:-${HOST}}" ++BASH_SOURCE="$(basename ${0} .zsh).bash" ++source "$(dirname ${0})/${BASH_SOURCE}" ++unset BASH_SOURCE; ++ ++############################################################# {{{1 ########### ++# vim: textwidth=0 nowrap tabstop=8 shiftwidth=4 softtabstop=4 expandtab ++# vim: filetype=zsh encoding=utf-8 fileformat=unix foldmethod=marker nospell +diff -urN vim71/runtime/plugin/matchit.vim vim71_ada/runtime/plugin/matchit.vim +--- vim71/runtime/plugin/matchit.vim 1970-01-01 01:00:00.000000000 +0100 ++++ vim71_ada/runtime/plugin/matchit.vim 2008-01-16 16:37:03.000000000 +0100 +@@ -0,0 +1,814 @@ ++" matchit.vim: (global plugin) Extended "%" matching ++" Last Change: Tue Oct 24 11:00 AM 2006 EDT ++" Maintainer: Benji Fisher PhD ++" Version: 1.12, for Vim 6.3+ ++" URL: http://www.vim.org/script.php?script_id=39 ++ ++" Documentation: ++" The documentation is in a separate file, matchit.txt . ++ ++" Credits: ++" Vim editor by Bram Moolenaar (Thanks, Bram!) ++" Original script and design by Raul Segura Acevedo ++" Support for comments by Douglas Potts ++" Support for back references and other improvements by Benji Fisher ++" Support for many languages by Johannes Zellner ++" Suggestions for improvement, bug reports, and support for additional ++" languages by Jordi-Albert Batalla, Neil Bird, Servatius Brandt, Mark ++" Collett, Stephen Wall, Dany St-Amant, Yuheng Xie, and Johannes Zellner. ++ ++" Debugging: ++" If you'd like to try the built-in debugging commands... ++" :MatchDebug to activate debugging for the current buffer ++" This saves the values of several key script variables as buffer-local ++" variables. See the MatchDebug() function, below, for details. ++ ++" TODO: I should think about multi-line patterns for b:match_words. ++" This would require an option: how many lines to scan (default 1). ++" This would be useful for Python, maybe also for *ML. ++" TODO: Maybe I should add a menu so that people will actually use some of ++" the features that I have implemented. ++" TODO: Eliminate the MultiMatch function. Add yet another argument to ++" Match_wrapper() instead. ++" TODO: Allow :let b:match_words = '\(\(foo\)\(bar\)\):\3\2:end\1' ++" TODO: Make backrefs safer by using '\V' (very no-magic). ++" TODO: Add a level of indirection, so that custom % scripts can use my ++" work but extend it. ++ ++" allow user to prevent loading ++" and prevent duplicate loading ++if exists("loaded_matchit") || &cp ++ finish ++endif ++let loaded_matchit = 1 ++let s:last_mps = "" ++let s:last_words = "" ++ ++let s:save_cpo = &cpo ++set cpo&vim ++ ++nnoremap % :call Match_wrapper('',1,'n') ++nnoremap g% :call Match_wrapper('',0,'n') ++vnoremap % :call Match_wrapper('',1,'v') m'gv`` ++vnoremap g% :call Match_wrapper('',0,'v') m'gv`` ++onoremap % v:call Match_wrapper('',1,'o') ++onoremap g% v:call Match_wrapper('',0,'o') ++ ++" Analogues of [{ and ]} using matching patterns: ++nnoremap [% :call MultiMatch("bW", "n") ++nnoremap ]% :call MultiMatch("W", "n") ++vmap [% [%m'gv`` ++vmap ]% ]%m'gv`` ++" vnoremap [% :call MultiMatch("bW", "v") m'gv`` ++" vnoremap ]% :call MultiMatch("W", "v") m'gv`` ++onoremap [% v:call MultiMatch("bW", "o") ++onoremap ]% v:call MultiMatch("W", "o") ++ ++" text object: ++vmap a% [%v]% ++ ++" Auto-complete mappings: (not yet "ready for prime time") ++" TODO Read :help write-plugin for the "right" way to let the user ++" specify a key binding. ++" let g:match_auto = '' ++" let g:match_autoCR = '' ++" if exists("g:match_auto") ++" execute "inoremap " . g:match_auto . ' x"=Autocomplete()Pls' ++" endif ++" if exists("g:match_autoCR") ++" execute "inoremap " . g:match_autoCR . ' =Autocomplete()' ++" endif ++" if exists("g:match_gthhoh") ++" execute "inoremap " . g:match_gthhoh . ' :call Gthhoh()' ++" endif " gthhoh = "Get the heck out of here!" ++ ++let s:notslash = '\\\@" ++ endif ++ " In s:CleanUp(), we may need to check whether the cursor moved forward. ++ let startline = line(".") ++ let startcol = col(".") ++ " Use default behavior if called with a count or if no patterns are defined. ++ if v:count ++ exe "normal! " . v:count . "%" ++ return s:CleanUp(restore_options, a:mode, startline, startcol) ++ elseif !exists("b:match_words") || b:match_words == "" ++ silent! normal! % ++ return s:CleanUp(restore_options, a:mode, startline, startcol) ++ end ++ ++ " First step: if not already done, set the script variables ++ " s:do_BR flag for whether there are backrefs ++ " s:pat parsed version of b:match_words ++ " s:all regexp based on s:pat and the default groups ++ " ++ " Allow b:match_words = "GetVimMatchWords()" . ++ if b:match_words =~ ":" ++ let match_words = b:match_words ++ else ++ execute "let match_words =" b:match_words ++ endif ++" Thanks to Preben "Peppe" Guldberg and Bram Moolenaar for this suggestion! ++ if (match_words != s:last_words) || (&mps != s:last_mps) || ++ \ exists("b:match_debug") ++ let s:last_words = match_words ++ let s:last_mps = &mps ++ if match_words !~ s:notslash . '\\\d' ++ let s:do_BR = 0 ++ let s:pat = match_words ++ else ++ let s:do_BR = 1 ++ let s:pat = s:ParseWords(match_words) ++ endif ++ " The next several lines were here before ++ " BF started messing with this script. ++ " quote the special chars in 'matchpairs', replace [,:] with \| and then ++ " append the builtin pairs (/*, */, #if, #ifdef, #else, #elif, #endif) ++ " let default = substitute(escape(&mps, '[$^.*~\\/?]'), '[,:]\+', ++ " \ '\\|', 'g').'\|\/\*\|\*\/\|#if\>\|#ifdef\>\|#else\>\|#elif\>\|#endif\>' ++ let default = escape(&mps, '[$^.*~\\/?]') . (strlen(&mps) ? "," : "") . ++ \ '\/\*:\*\/,#if\%(def\)\=:#else\>:#elif\>:#endif\>' ++ " s:all = pattern with all the keywords ++ let s:all = s:pat . (strlen(s:pat) ? "," : "") . default ++ let s:all = substitute(s:all, s:notslash . '\zs[,:]\+', '\\|', 'g') ++ let s:all = '\%(' . s:all . '\)' ++ " let s:all = '\%(' . substitute(s:all, '\\\ze[,:]', '', 'g') . '\)' ++ if exists("b:match_debug") ++ let b:match_pat = s:pat ++ endif ++ endif ++ ++ " Second step: set the following local variables: ++ " matchline = line on which the cursor started ++ " curcol = number of characters before match ++ " prefix = regexp for start of line to start of match ++ " suffix = regexp for end of match to end of line ++ " Require match to end on or after the cursor and prefer it to ++ " start on or before the cursor. ++ let matchline = getline(startline) ++ if a:word != '' ++ " word given ++ if a:word !~ s:all ++ echohl WarningMsg|echo 'Missing rule for word:"'.a:word.'"'|echohl NONE ++ return s:CleanUp(restore_options, a:mode, startline, startcol) ++ endif ++ let matchline = a:word ++ let curcol = 0 ++ let prefix = '^\%(' ++ let suffix = '\)$' ++ " Now the case when "word" is not given ++ else " Find the match that ends on or after the cursor and set curcol. ++ let regexp = s:Wholematch(matchline, s:all, startcol-1) ++ let curcol = match(matchline, regexp) ++ let endcol = matchend(matchline, regexp) ++ let suf = strlen(matchline) - endcol ++ let prefix = (curcol ? '^.*\%' . (curcol + 1) . 'c\%(' : '^\%(') ++ let suffix = (suf ? '\)\%' . (endcol + 1) . 'c.*$' : '\)$') ++ " If the match comes from the defaults, bail out. ++ if matchline !~ prefix . ++ \ substitute(s:pat, s:notslash.'\zs[,:]\+', '\\|', 'g') . suffix ++ silent! norm! % ++ return s:CleanUp(restore_options, a:mode, startline, startcol) ++ endif ++ endif ++ if exists("b:match_debug") ++ let b:match_match = matchstr(matchline, regexp) ++ let b:match_col = curcol+1 ++ endif ++ ++ " Third step: Find the group and single word that match, and the original ++ " (backref) versions of these. Then, resolve the backrefs. ++ " Set the following local variable: ++ " group = colon-separated list of patterns, one of which matches ++ " = ini:mid:fin or ini:fin ++ " ++ " Reconstruct the version with unresolved backrefs. ++ let patBR = substitute(match_words.',', ++ \ s:notslash.'\zs[,:]*,[,:]*', ',', 'g') ++ let patBR = substitute(patBR, s:notslash.'\zs:\{2,}', ':', 'g') ++ " Now, set group and groupBR to the matching group: 'if:endif' or ++ " 'while:endwhile' or whatever. A bit of a kluge: s:Choose() returns ++ " group . "," . groupBR, and we pick it apart. ++ let group = s:Choose(s:pat, matchline, ",", ":", prefix, suffix, patBR) ++ let i = matchend(group, s:notslash . ",") ++ let groupBR = strpart(group, i) ++ let group = strpart(group, 0, i-1) ++ " Now, matchline =~ prefix . substitute(group,':','\|','g') . suffix ++ if s:do_BR " Do the hard part: resolve those backrefs! ++ let group = s:InsertRefs(groupBR, prefix, group, suffix, matchline) ++ endif ++ if exists("b:match_debug") ++ let b:match_wholeBR = groupBR ++ let i = matchend(groupBR, s:notslash . ":") ++ let b:match_iniBR = strpart(groupBR, 0, i-1) ++ endif ++ ++ " Fourth step: Set the arguments for searchpair(). ++ let i = matchend(group, s:notslash . ":") ++ let j = matchend(group, '.*' . s:notslash . ":") ++ let ini = strpart(group, 0, i-1) ++ let mid = substitute(strpart(group, i,j-i-1), s:notslash.'\zs:', '\\|', 'g') ++ let fin = strpart(group, j) ++ "Un-escape the remaining , and : characters. ++ let ini = substitute(ini, s:notslash . '\zs\\\(:\|,\)', '\1', 'g') ++ let mid = substitute(mid, s:notslash . '\zs\\\(:\|,\)', '\1', 'g') ++ let fin = substitute(fin, s:notslash . '\zs\\\(:\|,\)', '\1', 'g') ++ " searchpair() requires that these patterns avoid \(\) groups. ++ let ini = substitute(ini, s:notslash . '\zs\\(', '\\%(', 'g') ++ let mid = substitute(mid, s:notslash . '\zs\\(', '\\%(', 'g') ++ let fin = substitute(fin, s:notslash . '\zs\\(', '\\%(', 'g') ++ " Set mid. This is optimized for readability, not micro-efficiency! ++ if a:forward && matchline =~ prefix . fin . suffix ++ \ || !a:forward && matchline =~ prefix . ini . suffix ++ let mid = "" ++ endif ++ " Set flag. This is optimized for readability, not micro-efficiency! ++ if a:forward && matchline =~ prefix . fin . suffix ++ \ || !a:forward && matchline !~ prefix . ini . suffix ++ let flag = "bW" ++ else ++ let flag = "W" ++ endif ++ " Set skip. ++ if exists("b:match_skip") ++ let skip = b:match_skip ++ elseif exists("b:match_comment") " backwards compatibility and testing! ++ let skip = "r:" . b:match_comment ++ else ++ let skip = 's:comment\|string' ++ endif ++ let skip = s:ParseSkip(skip) ++ if exists("b:match_debug") ++ let b:match_ini = ini ++ let b:match_tail = (strlen(mid) ? mid.'\|' : '') . fin ++ endif ++ ++ " Fifth step: actually start moving the cursor and call searchpair(). ++ " Later, :execute restore_cursor to get to the original screen. ++ let restore_cursor = virtcol(".") . "|" ++ normal! g0 ++ let restore_cursor = line(".") . "G" . virtcol(".") . "|zs" . restore_cursor ++ normal! H ++ let restore_cursor = "normal!" . line(".") . "Gzt" . restore_cursor ++ execute restore_cursor ++ call cursor(0, curcol + 1) ++ " normal! 0 ++ " if curcol ++ " execute "normal!" . curcol . "l" ++ " endif ++ if skip =~ 'synID' && !(has("syntax") && exists("g:syntax_on")) ++ let skip = "0" ++ else ++ execute "if " . skip . "| let skip = '0' | endif" ++ endif ++ let sp_return = searchpair(ini, mid, fin, flag, skip) ++ let final_position = "call cursor(" . line(".") . "," . col(".") . ")" ++ " Restore cursor position and original screen. ++ execute restore_cursor ++ normal! m' ++ if sp_return > 0 ++ execute final_position ++ endif ++ return s:CleanUp(restore_options, a:mode, startline, startcol, mid.'\|'.fin) ++endfun ++ ++" Restore options and do some special handling for Operator-pending mode. ++" The optional argument is the tail of the matching group. ++fun! s:CleanUp(options, mode, startline, startcol, ...) ++ execute "set" a:options ++ " Open folds, if appropriate. ++ if a:mode != "o" ++ if &foldopen =~ "percent" ++ normal! zv ++ endif ++ " In Operator-pending mode, we want to include the whole match ++ " (for example, d%). ++ " This is only a problem if we end up moving in the forward direction. ++ elseif (a:startline < line(".")) || ++ \ (a:startline == line(".") && a:startcol < col(".")) ++ if a:0 ++ " Check whether the match is a single character. If not, move to the ++ " end of the match. ++ let matchline = getline(".") ++ let currcol = col(".") ++ let regexp = s:Wholematch(matchline, a:1, currcol-1) ++ let endcol = matchend(matchline, regexp) ++ if endcol > currcol " This is NOT off by one! ++ execute "normal!" . (endcol - currcol) . "l" ++ endif ++ endif " a:0 ++ endif " a:mode != "o" && etc. ++ return 0 ++endfun ++ ++" Example (simplified HTML patterns): if ++" a:groupBR = '<\(\k\+\)>:' ++" a:prefix = '^.\{3}\(' ++" a:group = '<\(\k\+\)>:' ++" a:suffix = '\).\{2}$' ++" a:matchline = "12312" or "12312" ++" then extract "tag" from a:matchline and return ":" . ++fun! s:InsertRefs(groupBR, prefix, group, suffix, matchline) ++ if a:matchline !~ a:prefix . ++ \ substitute(a:group, s:notslash . '\zs:', '\\|', 'g') . a:suffix ++ return a:group ++ endif ++ let i = matchend(a:groupBR, s:notslash . ':') ++ let ini = strpart(a:groupBR, 0, i-1) ++ let tailBR = strpart(a:groupBR, i) ++ let word = s:Choose(a:group, a:matchline, ":", "", a:prefix, a:suffix, ++ \ a:groupBR) ++ let i = matchend(word, s:notslash . ":") ++ let wordBR = strpart(word, i) ++ let word = strpart(word, 0, i-1) ++ " Now, a:matchline =~ a:prefix . word . a:suffix ++ if wordBR != ini ++ let table = s:Resolve(ini, wordBR, "table") ++ else ++ " let table = "----------" ++ let table = "" ++ let d = 0 ++ while d < 10 ++ if tailBR =~ s:notslash . '\\' . d ++ " let table[d] = d ++ let table = table . d ++ else ++ let table = table . "-" ++ endif ++ let d = d + 1 ++ endwhile ++ endif ++ let d = 9 ++ while d ++ if table[d] != "-" ++ let backref = substitute(a:matchline, a:prefix.word.a:suffix, ++ \ '\'.table[d], "") ++ " Are there any other characters that should be escaped? ++ let backref = escape(backref, '*,:') ++ execute s:Ref(ini, d, "start", "len") ++ let ini = strpart(ini, 0, start) . backref . strpart(ini, start+len) ++ let tailBR = substitute(tailBR, s:notslash . '\zs\\' . d, ++ \ escape(backref, '\\'), 'g') ++ endif ++ let d = d-1 ++ endwhile ++ if exists("b:match_debug") ++ if s:do_BR ++ let b:match_table = table ++ let b:match_word = word ++ else ++ let b:match_table = "" ++ let b:match_word = "" ++ endif ++ endif ++ return ini . ":" . tailBR ++endfun ++ ++" Input a comma-separated list of groups with backrefs, such as ++" a:groups = '\(foo\):end\1,\(bar\):end\1' ++" and return a comma-separated list of groups with backrefs replaced: ++" return '\(foo\):end\(foo\),\(bar\):end\(bar\)' ++fun! s:ParseWords(groups) ++ let groups = substitute(a:groups.",", s:notslash.'\zs[,:]*,[,:]*', ',', 'g') ++ let groups = substitute(groups, s:notslash . '\zs:\{2,}', ':', 'g') ++ let parsed = "" ++ while groups =~ '[^,:]' ++ let i = matchend(groups, s:notslash . ':') ++ let j = matchend(groups, s:notslash . ',') ++ let ini = strpart(groups, 0, i-1) ++ let tail = strpart(groups, i, j-i-1) . ":" ++ let groups = strpart(groups, j) ++ let parsed = parsed . ini ++ let i = matchend(tail, s:notslash . ':') ++ while i != -1 ++ " In 'if:else:endif', ini='if' and word='else' and then word='endif'. ++ let word = strpart(tail, 0, i-1) ++ let tail = strpart(tail, i) ++ let i = matchend(tail, s:notslash . ':') ++ let parsed = parsed . ":" . s:Resolve(ini, word, "word") ++ endwhile " Now, tail has been used up. ++ let parsed = parsed . "," ++ endwhile " groups =~ '[^,:]' ++ return parsed ++endfun ++ ++" TODO I think this can be simplified and/or made more efficient. ++" TODO What should I do if a:start is out of range? ++" Return a regexp that matches all of a:string, such that ++" matchstr(a:string, regexp) represents the match for a:pat that starts ++" as close to a:start as possible, before being preferred to after, and ++" ends after a:start . ++" Usage: ++" let regexp = s:Wholematch(getline("."), 'foo\|bar', col(".")-1) ++" let i = match(getline("."), regexp) ++" let j = matchend(getline("."), regexp) ++" let match = matchstr(getline("."), regexp) ++fun! s:Wholematch(string, pat, start) ++ let group = '\%(' . a:pat . '\)' ++ let prefix = (a:start ? '\(^.*\%<' . (a:start + 2) . 'c\)\zs' : '^') ++ let len = strlen(a:string) ++ let suffix = (a:start+1 < len ? '\(\%>'.(a:start+1).'c.*$\)\@=' : '$') ++ if a:string !~ prefix . group . suffix ++ let prefix = '' ++ endif ++ return prefix . group . suffix ++endfun ++ ++" No extra arguments: s:Ref(string, d) will ++" find the d'th occurrence of '\(' and return it, along with everything up ++" to and including the matching '\)'. ++" One argument: s:Ref(string, d, "start") returns the index of the start ++" of the d'th '\(' and any other argument returns the length of the group. ++" Two arguments: s:Ref(string, d, "foo", "bar") returns a string to be ++" executed, having the effect of ++" :let foo = s:Ref(string, d, "start") ++" :let bar = s:Ref(string, d, "len") ++fun! s:Ref(string, d, ...) ++ let len = strlen(a:string) ++ if a:d == 0 ++ let start = 0 ++ else ++ let cnt = a:d ++ let match = a:string ++ while cnt ++ let cnt = cnt - 1 ++ let index = matchend(match, s:notslash . '\\(') ++ if index == -1 ++ return "" ++ endif ++ let match = strpart(match, index) ++ endwhile ++ let start = len - strlen(match) ++ if a:0 == 1 && a:1 == "start" ++ return start - 2 ++ endif ++ let cnt = 1 ++ while cnt ++ let index = matchend(match, s:notslash . '\\(\|\\)') - 1 ++ if index == -2 ++ return "" ++ endif ++ " Increment if an open, decrement if a ')': ++ let cnt = cnt + (match[index]=="(" ? 1 : -1) " ')' ++ " let cnt = stridx('0(', match[index]) + cnt ++ let match = strpart(match, index+1) ++ endwhile ++ let start = start - 2 ++ let len = len - start - strlen(match) ++ endif ++ if a:0 == 1 ++ return len ++ elseif a:0 == 2 ++ return "let " . a:1 . "=" . start . "| let " . a:2 . "=" . len ++ else ++ return strpart(a:string, start, len) ++ endif ++endfun ++ ++" Count the number of disjoint copies of pattern in string. ++" If the pattern is a literal string and contains no '0' or '1' characters ++" then s:Count(string, pattern, '0', '1') should be faster than ++" s:Count(string, pattern). ++fun! s:Count(string, pattern, ...) ++ let pat = escape(a:pattern, '\\') ++ if a:0 > 1 ++ let foo = substitute(a:string, '[^'.a:pattern.']', "a:1", "g") ++ let foo = substitute(a:string, pat, a:2, "g") ++ let foo = substitute(foo, '[^' . a:2 . ']', "", "g") ++ return strlen(foo) ++ endif ++ let result = 0 ++ let foo = a:string ++ let index = matchend(foo, pat) ++ while index != -1 ++ let result = result + 1 ++ let foo = strpart(foo, index) ++ let index = matchend(foo, pat) ++ endwhile ++ return result ++endfun ++ ++" s:Resolve('\(a\)\(b\)', '\(c\)\2\1\1\2') should return table.word, where ++" word = '\(c\)\(b\)\(a\)\3\2' and table = '-32-------'. That is, the first ++" '\1' in target is replaced by '\(a\)' in word, table[1] = 3, and this ++" indicates that all other instances of '\1' in target are to be replaced ++" by '\3'. The hard part is dealing with nesting... ++" Note that ":" is an illegal character for source and target, ++" unless it is preceded by "\". ++fun! s:Resolve(source, target, output) ++ let word = a:target ++ let i = matchend(word, s:notslash . '\\\d') - 1 ++ let table = "----------" ++ while i != -2 " There are back references to be replaced. ++ let d = word[i] ++ let backref = s:Ref(a:source, d) ++ " The idea is to replace '\d' with backref. Before we do this, ++ " replace any \(\) groups in backref with :1, :2, ... if they ++ " correspond to the first, second, ... group already inserted ++ " into backref. Later, replace :1 with \1 and so on. The group ++ " number w+b within backref corresponds to the group number ++ " s within a:source. ++ " w = number of '\(' in word before the current one ++ let w = s:Count( ++ \ substitute(strpart(word, 0, i-1), '\\\\', '', 'g'), '\(', '1') ++ let b = 1 " number of the current '\(' in backref ++ let s = d " number of the current '\(' in a:source ++ while b <= s:Count(substitute(backref, '\\\\', '', 'g'), '\(', '1') ++ \ && s < 10 ++ if table[s] == "-" ++ if w + b < 10 ++ " let table[s] = w + b ++ let table = strpart(table, 0, s) . (w+b) . strpart(table, s+1) ++ endif ++ let b = b + 1 ++ let s = s + 1 ++ else ++ execute s:Ref(backref, b, "start", "len") ++ let ref = strpart(backref, start, len) ++ let backref = strpart(backref, 0, start) . ":". table[s] ++ \ . strpart(backref, start+len) ++ let s = s + s:Count(substitute(ref, '\\\\', '', 'g'), '\(', '1') ++ endif ++ endwhile ++ let word = strpart(word, 0, i-1) . backref . strpart(word, i+1) ++ let i = matchend(word, s:notslash . '\\\d') - 1 ++ endwhile ++ let word = substitute(word, s:notslash . '\zs:', '\\', 'g') ++ if a:output == "table" ++ return table ++ elseif a:output == "word" ++ return word ++ else ++ return table . word ++ endif ++endfun ++ ++" Assume a:comma = ",". Then the format for a:patterns and a:1 is ++" a:patterns = ",,..." ++" a:1 = ",,..." ++" If is the first pattern that matches a:string then return ++" if no optional arguments are given; return , if a:1 is given. ++fun! s:Choose(patterns, string, comma, branch, prefix, suffix, ...) ++ let tail = (a:patterns =~ a:comma."$" ? a:patterns : a:patterns . a:comma) ++ let i = matchend(tail, s:notslash . a:comma) ++ if a:0 ++ let alttail = (a:1 =~ a:comma."$" ? a:1 : a:1 . a:comma) ++ let j = matchend(alttail, s:notslash . a:comma) ++ endif ++ let current = strpart(tail, 0, i-1) ++ if a:branch == "" ++ let currpat = current ++ else ++ let currpat = substitute(current, s:notslash . a:branch, '\\|', 'g') ++ endif ++ while a:string !~ a:prefix . currpat . a:suffix ++ let tail = strpart(tail, i) ++ let i = matchend(tail, s:notslash . a:comma) ++ if i == -1 ++ return -1 ++ endif ++ let current = strpart(tail, 0, i-1) ++ if a:branch == "" ++ let currpat = current ++ else ++ let currpat = substitute(current, s:notslash . a:branch, '\\|', 'g') ++ endif ++ if a:0 ++ let alttail = strpart(alttail, j) ++ let j = matchend(alttail, s:notslash . a:comma) ++ endif ++ endwhile ++ if a:0 ++ let current = current . a:comma . strpart(alttail, 0, j-1) ++ endif ++ return current ++endfun ++ ++" Call this function to turn on debugging information. Every time the main ++" script is run, buffer variables will be saved. These can be used directly ++" or viewed using the menu items below. ++if !exists(":MatchDebug") ++ command! -nargs=0 MatchDebug call s:Match_debug() ++endif ++ ++fun! s:Match_debug() ++ let b:match_debug = 1 " Save debugging information. ++ " pat = all of b:match_words with backrefs parsed ++ amenu &Matchit.&pat :echo b:match_pat ++ " match = bit of text that is recognized as a match ++ amenu &Matchit.&match :echo b:match_match ++ " curcol = cursor column of the start of the matching text ++ amenu &Matchit.&curcol :echo b:match_col ++ " wholeBR = matching group, original version ++ amenu &Matchit.wh&oleBR :echo b:match_wholeBR ++ " iniBR = 'if' piece, original version ++ amenu &Matchit.ini&BR :echo b:match_iniBR ++ " ini = 'if' piece, with all backrefs resolved from match ++ amenu &Matchit.&ini :echo b:match_ini ++ " tail = 'else\|endif' piece, with all backrefs resolved from match ++ amenu &Matchit.&tail :echo b:match_tail ++ " fin = 'endif' piece, with all backrefs resolved from match ++ amenu &Matchit.&word :echo b:match_word ++ " '\'.d in ini refers to the same thing as '\'.table[d] in word. ++ amenu &Matchit.t&able :echo '0:' . b:match_table . ':9' ++endfun ++ ++" Jump to the nearest unmatched "(" or "if" or "" if a:spflag == "bW" ++" or the nearest unmatched "" or "endif" or ")" if a:spflag == "W". ++" Return a "mark" for the original position, so that ++" let m = MultiMatch("bW", "n") ... execute m ++" will return to the original position. If there is a problem, do not ++" move the cursor and return "", unless a count is given, in which case ++" go up or down as many levels as possible and again return "". ++" TODO This relies on the same patterns as % matching. It might be a good ++" idea to give it its own matching patterns. ++fun! s:MultiMatch(spflag, mode) ++ if !exists("b:match_words") || b:match_words == "" ++ return "" ++ end ++ let restore_options = (&ic ? "" : "no") . "ignorecase" ++ if exists("b:match_ignorecase") ++ let &ignorecase = b:match_ignorecase ++ endif ++ let startline = line(".") ++ let startcol = col(".") ++ ++ " First step: if not already done, set the script variables ++ " s:do_BR flag for whether there are backrefs ++ " s:pat parsed version of b:match_words ++ " s:all regexp based on s:pat and the default groups ++ " This part is copied and slightly modified from s:Match_wrapper(). ++ let default = escape(&mps, '[$^.*~\\/?]') . (strlen(&mps) ? "," : "") . ++ \ '\/\*:\*\/,#if\%(def\)\=:#else\>:#elif\>:#endif\>' ++ " Allow b:match_words = "GetVimMatchWords()" . ++ if b:match_words =~ ":" ++ let match_words = b:match_words ++ else ++ execute "let match_words =" b:match_words ++ endif ++ if (match_words != s:last_words) || (&mps != s:last_mps) || ++ \ exists("b:match_debug") ++ let s:last_words = match_words ++ let s:last_mps = &mps ++ if match_words !~ s:notslash . '\\\d' ++ let s:do_BR = 0 ++ let s:pat = match_words ++ else ++ let s:do_BR = 1 ++ let s:pat = s:ParseWords(match_words) ++ endif ++ let s:all = '\%(' . substitute(s:pat . (strlen(s:pat)?",":"") . default, ++ \ '[,:]\+','\\|','g') . '\)' ++ if exists("b:match_debug") ++ let b:match_pat = s:pat ++ endif ++ endif ++ ++ " Second step: figure out the patterns for searchpair() ++ " and save the screen, cursor position, and 'ignorecase'. ++ " - TODO: A lot of this is copied from s:Match_wrapper(). ++ " - maybe even more functionality should be split off ++ " - into separate functions! ++ let cdefault = (s:pat =~ '[^,]$' ? "," : "") . default ++ let open = substitute(s:pat . cdefault, ++ \ s:notslash . '\zs:.\{-}' . s:notslash . ',', '\\),\\(', 'g') ++ let open = '\(' . substitute(open, s:notslash . '\zs:.*$', '\\)', '') ++ let close = substitute(s:pat . cdefault, ++ \ s:notslash . '\zs,.\{-}' . s:notslash . ':', '\\),\\(', 'g') ++ let close = substitute(close, '^.\{-}' . s:notslash . ':', '\\(', '') . '\)' ++ if exists("b:match_skip") ++ let skip = b:match_skip ++ elseif exists("b:match_comment") " backwards compatibility and testing! ++ let skip = "r:" . b:match_comment ++ else ++ let skip = 's:comment\|string' ++ endif ++ let skip = s:ParseSkip(skip) ++ " let restore_cursor = line(".") . "G" . virtcol(".") . "|" ++ " normal! H ++ " let restore_cursor = "normal!" . line(".") . "Gzt" . restore_cursor ++ let restore_cursor = virtcol(".") . "|" ++ normal! g0 ++ let restore_cursor = line(".") . "G" . virtcol(".") . "|zs" . restore_cursor ++ normal! H ++ let restore_cursor = "normal!" . line(".") . "Gzt" . restore_cursor ++ execute restore_cursor ++ ++ " Third step: call searchpair(). ++ " Replace '\('--but not '\\('--with '\%(' and ',' with '\|'. ++ let openpat = substitute(open, '\(\\\@" or ... ++" and return "endif" or "endwhile" or "" or ... . ++" For now, this uses b:match_words and the same script variables ++" as s:Match_wrapper() . Later, it may get its own patterns, ++" either from a buffer variable or passed as arguments. ++" fun! s:Autocomplete() ++" echo "autocomplete not yet implemented :-(" ++" if !exists("b:match_words") || b:match_words == "" ++" return "" ++" end ++" let startpos = s:MultiMatch("bW") ++" ++" if startpos == "" ++" return "" ++" endif ++" " - TODO: figure out whether 'if' or '' matched, and construct ++" " - the appropriate closing. ++" let matchline = getline(".") ++" let curcol = col(".") - 1 ++" " - TODO: Change the s:all argument if there is a new set of match pats. ++" let regexp = s:Wholematch(matchline, s:all, curcol) ++" let suf = strlen(matchline) - matchend(matchline, regexp) ++" let prefix = (curcol ? '^.\{' . curcol . '}\%(' : '^\%(') ++" let suffix = (suf ? '\).\{' . suf . '}$' : '\)$') ++" " Reconstruct the version with unresolved backrefs. ++" let patBR = substitute(b:match_words.',', '[,:]*,[,:]*', ',', 'g') ++" let patBR = substitute(patBR, ':\{2,}', ':', "g") ++" " Now, set group and groupBR to the matching group: 'if:endif' or ++" " 'while:endwhile' or whatever. ++" let group = s:Choose(s:pat, matchline, ",", ":", prefix, suffix, patBR) ++" let i = matchend(group, s:notslash . ",") ++" let groupBR = strpart(group, i) ++" let group = strpart(group, 0, i-1) ++" " Now, matchline =~ prefix . substitute(group,':','\|','g') . suffix ++" if s:do_BR ++" let group = s:InsertRefs(groupBR, prefix, group, suffix, matchline) ++" endif ++" " let g:group = group ++" ++" " - TODO: Construct the closing from group. ++" let fake = "end" . expand("") ++" execute startpos ++" return fake ++" endfun ++ ++" Close all open structures. "Get the heck out of here!" ++" fun! s:Gthhoh() ++" let close = s:Autocomplete() ++" while strlen(close) ++" put=close ++" let close = s:Autocomplete() ++" endwhile ++" endfun ++ ++" Parse special strings as typical skip arguments for searchpair(): ++" s:foo becomes (current syntax item) =~ foo ++" S:foo becomes (current syntax item) !~ foo ++" r:foo becomes (line before cursor) =~ foo ++" R:foo becomes (line before cursor) !~ foo ++fun! s:ParseSkip(str) ++ let skip = a:str ++ if skip[1] == ":" ++ if skip[0] == "s" ++ let skip = "synIDattr(synID(line('.'),col('.'),1),'name') =~? '" . ++ \ strpart(skip,2) . "'" ++ elseif skip[0] == "S" ++ let skip = "synIDattr(synID(line('.'),col('.'),1),'name') !~? '" . ++ \ strpart(skip,2) . "'" ++ elseif skip[0] == "r" ++ let skip = "strpart(getline('.'),0,col('.'))=~'" . strpart(skip,2). "'" ++ elseif skip[0] == "R" ++ let skip = "strpart(getline('.'),0,col('.'))!~'" . strpart(skip,2). "'" ++ endif ++ endif ++ return skip ++endfun ++ ++let &cpo = s:save_cpo ++ ++" vim:sts=2:sw=2: +diff -urN vim71/runtime/plugin/taglist.vim vim71_ada/runtime/plugin/taglist.vim +--- vim71/runtime/plugin/taglist.vim 1970-01-01 01:00:00.000000000 +0100 ++++ vim71_ada/runtime/plugin/taglist.vim 2008-01-16 16:37:03.000000000 +0100 +@@ -0,0 +1,4524 @@ ++" File: taglist.vim ++" Author: Yegappan Lakshmanan (yegappan AT yahoo DOT com) ++" Version: 4.3 ++" Last Modified: February 18, 2007 ++" Copyright: Copyright (C) 2002-2006 Yegappan Lakshmanan ++" Permission is hereby granted to use and distribute this code, ++" with or without modifications, provided that this copyright ++" notice is copied with it. Like anything else that's free, ++" taglist.vim is provided *as is* and comes with no warranty of any ++" kind, either expressed or implied. In no event will the copyright ++" holder be liable for any damamges resulting from the use of this ++" software. ++" ++" The "Tag List" plugin is a source code browser plugin for Vim and provides ++" an overview of the structure of the programming language files and allows ++" you to efficiently browse through source code files for different ++" programming languages. You can visit the taglist plugin home page for more ++" information: ++" ++" http://vim-taglist.sourceforge.net ++" ++" You can subscribe to the taglist mailing list to post your questions ++" or suggestions for improvement or to report bugs. Visit the following ++" page for subscribing to the mailing list: ++" ++" http://groups.yahoo.com/group/taglist/ ++" ++" For more information about using this plugin, after installing the ++" taglist plugin, use the ":help taglist" command. ++" ++" Installation ++" ------------ ++" 1. Download the taglist.zip file and unzip the files to the $HOME/.vim ++" or the $HOME/vimfiles or the $VIM/vimfiles directory. This should ++" unzip the following two files (the directory structure should be ++" preserved): ++" ++" plugin/taglist.vim - main taglist plugin file ++" doc/taglist.txt - documentation (help) file ++" ++" Refer to the 'add-plugin', 'add-global-plugin' and 'runtimepath' ++" Vim help pages for more details about installing Vim plugins. ++" 2. Change to the $HOME/.vim/doc or $HOME/vimfiles/doc or ++" $VIM/vimfiles/doc directory, start Vim and run the ":helptags ." ++" command to process the taglist help file. ++" 3. If the exuberant ctags utility is not present in your PATH, then set the ++" Tlist_Ctags_Cmd variable to point to the location of the exuberant ctags ++" utility (not to the directory) in the .vimrc file. ++" 4. If you are running a terminal/console version of Vim and the ++" terminal doesn't support changing the window width then set the ++" 'Tlist_Inc_Winwidth' variable to 0 in the .vimrc file. ++" 5. Restart Vim. ++" 6. You can now use the ":TlistToggle" command to open/close the taglist ++" window. You can use the ":help taglist" command to get more ++" information about using the taglist plugin. ++" ++" ****************** Do not modify after this line ************************ ++ ++" Line continuation used here ++let s:cpo_save = &cpo ++set cpo&vim ++ ++if !exists('loaded_taglist') ++ " First time loading the taglist plugin ++ " ++ " To speed up the loading of Vim, the taglist plugin uses autoload ++ " mechanism to load the taglist functions. ++ " Only define the configuration variables, user commands and some ++ " auto-commands and finish sourcing the file ++ ++ " The taglist plugin requires the built-in Vim system() function. If this ++ " function is not available, then don't load the plugin. ++ if !exists('*system') ++ echomsg 'Taglist: Vim system() built-in function is not available. ' . ++ \ 'Plugin is not loaded.' ++ let loaded_taglist = 'no' ++ let &cpo = s:cpo_save ++ finish ++ endif ++ ++ " Location of the exuberant ctags tool ++ if !exists('Tlist_Ctags_Cmd') ++ if executable('exuberant-ctags') ++ " On Debian Linux, exuberant ctags is installed ++ " as exuberant-ctags ++ let Tlist_Ctags_Cmd = 'exuberant-ctags' ++ elseif executable(' exctags') ++ " On Free-BSD, exuberant ctags is installed as exctags ++ let Tlist_Ctags_ Cmd = 'exctags' ++ elseif executable('ctags') ++ let Tlist_Ctags_Cmd = 'ctags' ++ elseif executable('ctags.exe') ++ let Tlist_Ctags_Cmd = 'ctags.exe' ++ elseif executable('tags') ++ let Tlist_Ctags_Cmd = 'tags' ++ else ++ " echomsg 'Taglist: Exuberant ctags (http://ctags.sf.net) ' . ++ " \ 'not found in PATH. Plugin is not loaded.' ++ " Skip loading the plugin ++ let loaded_taglist = 'no' ++ let &cpo = s:cpo_save ++ finish ++ endif ++ endif ++ ++ ++ " Automatically open the taglist window on Vim startup ++ if !exists('Tlist_Auto_Open') ++ let Tlist_Auto_Open = 0 ++ endif ++ ++ " When the taglist window is toggle opened, move the cursor to the ++ " taglist window ++ if !exists('Tlist_GainFocus_On_ToggleOpen') ++ let Tlist_GainFocus_On_ToggleOpen = 0 ++ endif ++ ++ " Process files even when the taglist window is not open ++ if !exists('Tlist_Process_File_Always') ++ let Tlist_Process_File_Always = 0 ++ endif ++ ++ if !exists('Tlist_Show_Menu') ++ let Tlist_Show_Menu = 0 ++ endif ++ ++ " Tag listing sort type - 'name' or 'order' ++ if !exists('Tlist_Sort_Type') ++ let Tlist_Sort_Type = 'order' ++ endif ++ ++ " Tag listing window split (horizontal/vertical) control ++ if !exists('Tlist_Use_Horiz_Window') ++ let Tlist_Use_Horiz_Window = 0 ++ endif ++ ++ " Open the vertically split taglist window on the left or on the right ++ " side. This setting is relevant only if Tlist_Use_Horiz_Window is set to ++ " zero (i.e. only for vertically split windows) ++ if !exists('Tlist_Use_Right_Window') ++ let Tlist_Use_Right_Window = 0 ++ endif ++ ++ " Increase Vim window width to display vertically split taglist window. ++ " For MS-Windows version of Vim running in a MS-DOS window, this must be ++ " set to 0 otherwise the system may hang due to a Vim limitation. ++ if !exists('Tlist_Inc_Winwidth') ++ if (has('win16') || has('win95')) && !has('gui_running') ++ let Tlist_Inc_Winwidth = 0 ++ else ++ let Tlist_Inc_Winwidth = 1 ++ endif ++ endif ++ ++ " Vertically split taglist window width setting ++ if !exists('Tlist_WinWidth') ++ let Tlist_WinWidth = 30 ++ endif ++ ++ " Horizontally split taglist window height setting ++ if !exists('Tlist_WinHeight') ++ let Tlist_WinHeight = 10 ++ endif ++ ++ " Display tag prototypes or tag names in the taglist window ++ if !exists('Tlist_Display_Prototype') ++ let Tlist_Display_Prototype = 0 ++ endif ++ ++ " Display tag scopes in the taglist window ++ if !exists('Tlist_Display_Tag_Scope') ++ let Tlist_Display_Tag_Scope = 1 ++ endif ++ ++ " Use single left mouse click to jump to a tag. By default this is disabled. ++ " Only double click using the mouse will be processed. ++ if !exists('Tlist_Use_SingleClick') ++ let Tlist_Use_SingleClick = 0 ++ endif ++ ++ " Control whether additional help is displayed as part of the taglist or ++ " not. Also, controls whether empty lines are used to separate the tag ++ " tree. ++ if !exists('Tlist_Compact_Format') ++ let Tlist_Compact_Format = 0 ++ endif ++ ++ " Exit Vim if only the taglist window is currently open. By default, this is ++ " set to zero. ++ if !exists('Tlist_Exit_OnlyWindow') ++ let Tlist_Exit_OnlyWindow = 0 ++ endif ++ ++ " Automatically close the folds for the non-active files in the taglist ++ " window ++ if !exists('Tlist_File_Fold_Auto_Close') ++ let Tlist_File_Fold_Auto_Close = 0 ++ endif ++ ++ " Close the taglist window when a tag is selected ++ if !exists('Tlist_Close_On_Select') ++ let Tlist_Close_On_Select = 0 ++ endif ++ ++ " Automatically update the taglist window to display tags for newly ++ " edited files ++ if !exists('Tlist_Auto_Update') ++ let Tlist_Auto_Update = 1 ++ endif ++ ++ " Automatically highlight the current tag ++ if !exists('Tlist_Auto_Highlight_Tag') ++ let Tlist_Auto_Highlight_Tag = 1 ++ endif ++ ++ " Automatically highlight the current tag on entering a buffer ++ if !exists('Tlist_Highlight_Tag_On_BufEnter') ++ let Tlist_Highlight_Tag_On_BufEnter = 1 ++ endif ++ ++ " Enable fold column to display the folding for the tag tree ++ if !exists('Tlist_Enable_Fold_Column') ++ let Tlist_Enable_Fold_Column = 1 ++ endif ++ ++ " Display the tags for only one file in the taglist window ++ if !exists('Tlist_Show_One_File') ++ let Tlist_Show_One_File = 0 ++ endif ++ ++ if !exists('Tlist_Max_Submenu_Items') ++ let Tlist_Max_Submenu_Items = 20 ++ endif ++ ++ if !exists('Tlist_Max_Tag_Length') ++ let Tlist_Max_Tag_Length = 10 ++ endif ++ ++ " Do not change the name of the taglist title variable. The winmanager ++ " plugin relies on this name to determine the title for the taglist ++ " plugin. ++ let TagList_title = "__Tag_List__" ++ ++ " Taglist debug messages ++ let s:tlist_msg = '' ++ ++ " Define the taglist autocommand to automatically open the taglist window ++ " on Vim startup ++ if g:Tlist_Auto_Open ++ autocmd VimEnter * nested call s:Tlist_Window_Check_Auto_Open() ++ endif ++ ++ " Refresh the taglist ++ if g:Tlist_Process_File_Always ++ autocmd BufEnter * call s:Tlist_Refresh() ++ endif ++ ++ if g:Tlist_Show_Menu ++ autocmd GUIEnter * call s:Tlist_Menu_Init() ++ endif ++ ++ " When the taglist buffer is created when loading a Vim session file, ++ " the taglist buffer needs to be initialized. The BufFilePost event ++ " is used to handle this case. ++ autocmd BufFilePost __Tag_List__ call s:Tlist_Vim_Session_Load() ++ ++ " Define the user commands to manage the taglist window ++ command! -nargs=0 -bar TlistToggle call s:Tlist_Window_Toggle() ++ command! -nargs=0 -bar TlistOpen call s:Tlist_Window_Open() ++ " For backwards compatiblity define the Tlist command ++ command! -nargs=0 -bar Tlist TlistToggle ++ command! -nargs=+ -complete=file TlistAddFiles ++ \ call s:Tlist_Add_Files() ++ command! -nargs=+ -complete=dir TlistAddFilesRecursive ++ \ call s:Tlist_Add_Files_Recursive() ++ command! -nargs=0 -bar TlistClose call s:Tlist_Window_Close() ++ command! -nargs=0 -bar TlistUpdate call s:Tlist_Update_Current_File() ++ command! -nargs=0 -bar TlistHighlightTag call s:Tlist_Window_Highlight_Tag( ++ \ fnamemodify(bufname('%'), ':p'), line('.'), 2, 1) ++ " For backwards compatiblity define the TlistSync command ++ command! -nargs=0 -bar TlistSync TlistHighlightTag ++ command! -nargs=* -complete=buffer TlistShowPrototype ++ \ echo Tlist_Get_Tag_Prototype_By_Line() ++ command! -nargs=* -complete=buffer TlistShowTag ++ \ echo Tlist_Get_Tagname_By_Line() ++ command! -nargs=* -complete=file TlistSessionLoad ++ \ call s:Tlist_Session_Load() ++ command! -nargs=* -complete=file TlistSessionSave ++ \ call s:Tlist_Session_Save() ++ command! -bar TlistLock let Tlist_Auto_Update=0 ++ command! -bar TlistUnlock let Tlist_Auto_Update=1 ++ ++ " Commands for enabling/disabling debug and to display debug messages ++ command! -nargs=? -complete=file -bar TlistDebug ++ \ call s:Tlist_Debug_Enable() ++ command! -nargs=0 -bar TlistUndebug call s:Tlist_Debug_Disable() ++ command! -nargs=0 -bar TlistMessages call s:Tlist_Debug_Show() ++ ++ " Define autocommands to autoload the taglist plugin when needed. ++ ++ " Trick to get the current script ID ++ map xx xx ++ let s:tlist_sid = substitute(maparg('xx'), '\(\d\+_\)xx$', ++ \ '\1', '') ++ unmap xx ++ ++ exe 'autocmd FuncUndefined *' . s:tlist_sid . 'Tlist_* source ' . ++ \ escape(expand(''), ' ') ++ exe 'autocmd FuncUndefined *' . s:tlist_sid . 'Tlist_Window_* source ' . ++ \ escape(expand(''), ' ') ++ exe 'autocmd FuncUndefined *' . s:tlist_sid . 'Tlist_Menu_* source ' . ++ \ escape(expand(''), ' ') ++ exe 'autocmd FuncUndefined Tlist_* source ' . ++ \ escape(expand(''), ' ') ++ exe 'autocmd FuncUndefined TagList_* source ' . ++ \ escape(expand(''), ' ') ++ ++ let loaded_taglist = 'fast_load_done' ++ ++ if g:Tlist_Show_Menu && has('gui_running') ++ call s:Tlist_Menu_Init() ++ endif ++ ++ " restore 'cpo' ++ let &cpo = s:cpo_save ++ finish ++endif ++ ++if !exists('s:tlist_sid') ++ " Two or more versions of taglist plugin are installed. Don't ++ " load this version of the plugin. ++ finish ++endif ++ ++unlet! s:tlist_sid ++ ++if loaded_taglist != 'fast_load_done' ++ " restore 'cpo' ++ let &cpo = s:cpo_save ++ finish ++endif ++ ++" Taglist plugin functionality is available ++let loaded_taglist = 'available' ++ ++"------------------- end of user configurable options -------------------- ++ ++" Default language specific settings for supported file types and tag types ++" ++" Variable name format: ++" ++" s:tlist_def_{vim_ftype}_settings ++" ++" vim_ftype - Filetype detected by Vim ++" ++" Value format: ++" ++" ;:;:;... ++" ++" ctags_ftype - File type supported by exuberant ctags ++" flag - Flag supported by exuberant ctags to generate a tag type ++" name - Name of the tag type used in the taglist window to display the ++" tags of this type ++" ++ ++" Ada language ++let s:tlist_def_ada_settings = 'ada;' . ++ \ 'P:package spec;' . ++ \ 'p:package body;' . ++ \ 'T:type spec;' . ++ \ 't:type;' . ++ \ 'U:subtype spec;' . ++ \ 'u:subtype;' . ++ \ 'c:component;' . ++ \ 'l:literal;' . ++ \ 'V:variable spec;' . ++ \ 'v:variable;' . ++ \ 'f:formal;' . ++ \ 'n:constant;' . ++ \ 'x:exception;' . ++ \ 'R:subprogram spec;' . ++ \ 'r:subprogram body;' . ++ \ 'K:task spec;' . ++ \ 'k:task body;' . ++ \ 'O:protected spec;' . ++ \ 'o:protected body;' . ++ \ 'E:entry spec;' . ++ \ 'e:entry body;' . ++ \ 'b:label;' . ++ \ 'i:identifier;' . ++ \ 'a:autovar;' . ++ \ 'y:annon' ++ ++" assembly language ++let s:tlist_def_asm_settings = 'asm;d:define;l:label;m:macro;t:type' ++ ++" aspperl language ++let s:tlist_def_aspperl_settings = 'asp;f:function;s:sub;v:variable' ++ ++" aspvbs language ++let s:tlist_def_aspvbs_settings = 'asp;f:function;s:sub;v:variable' ++ ++" awk language ++let s:tlist_def_awk_settings = 'awk;f:function' ++ ++" beta language ++let s:tlist_def_beta_settings = 'beta;f:fragment;s:slot;v:pattern' ++ ++" c language ++let s:tlist_def_c_settings = 'c;d:macro;g:enum;s:struct;u:union;t:typedef;' . ++ \ 'v:variable;f:function' ++ ++" c++ language ++let s:tlist_def_cpp_settings = 'c++;n:namespace;v:variable;d:macro;t:typedef;' . ++ \ 'c:class;g:enum;s:struct;u:union;f:function' ++ ++" c# language ++let s:tlist_def_cs_settings = 'c#;d:macro;t:typedef;n:namespace;c:class;' . ++ \ 'E:event;g:enum;s:struct;i:interface;' . ++ \ 'p:properties;m:method' ++ ++" cobol language ++let s:tlist_def_cobol_settings = 'cobol;d:data;f:file;g:group;p:paragraph;' . ++ \ 'P:program;s:section' ++ ++" eiffel language ++let s:tlist_def_eiffel_settings = 'eiffel;c:class;f:feature' ++ ++" erlang language ++let s:tlist_def_erlang_settings = 'erlang;d:macro;r:record;m:module;f:function' ++ ++" expect (same as tcl) language ++let s:tlist_def_expect_settings = 'tcl;c:class;f:method;p:procedure' ++ ++" fortran language ++let s:tlist_def_fortran_settings = 'fortran;p:program;b:block data;' . ++ \ 'c:common;e:entry;i:interface;k:type;l:label;m:module;' . ++ \ 'n:namelist;t:derived;v:variable;f:function;s:subroutine' ++ ++" HTML language ++let s:tlist_def_html_settings = 'html;a:anchor;f:javascript function' ++ ++" java language ++let s:tlist_def_java_settings = 'java;p:package;c:class;i:interface;' . ++ \ 'f:field;m:method' ++ ++" javascript language ++let s:tlist_def_javascript_settings = 'javascript;f:function' ++ ++" lisp language ++let s:tlist_def_lisp_settings = 'lisp;f:function' ++ ++" lua language ++let s:tlist_def_lua_settings = 'lua;f:function' ++ ++" makefiles ++let s:tlist_def_make_settings = 'make;m:macro' ++ ++" pascal language ++let s:tlist_def_pascal_settings = 'pascal;f:function;p:procedure' ++ ++" perl language ++let s:tlist_def_perl_settings = 'perl;c:constant;l:label;p:package;s:subroutine' ++ ++" php language ++let s:tlist_def_php_settings = 'php;c:class;d:constant;v:variable;f:function' ++ ++" python language ++let s:tlist_def_python_settings = 'python;c:class;m:member;f:function' ++ ++" rexx language ++let s:tlist_def_rexx_settings = 'rexx;s:subroutine' ++ ++" ruby language ++let s:tlist_def_ruby_settings = 'ruby;c:class;f:method;F:function;' . ++ \ 'm:singleton method' ++ ++" scheme language ++let s:tlist_def_scheme_settings = 'scheme;s:set;f:function' ++ ++" shell language ++let s:tlist_def_sh_settings = 'sh;f:function' ++ ++" C shell language ++let s:tlist_def_csh_settings = 'sh;f:function' ++ ++" Z shell language ++let s:tlist_def_zsh_settings = 'sh;f:function' ++ ++" slang language ++let s:tlist_def_slang_settings = 'slang;n:namespace;f:function' ++ ++" sml language ++let s:tlist_def_sml_settings = 'sml;e:exception;c:functor;s:signature;' . ++ \ 'r:structure;t:type;v:value;f:function' ++ ++" sql language ++let s:tlist_def_sql_settings = 'sql;c:cursor;F:field;P:package;r:record;' . ++ \ 's:subtype;t:table;T:trigger;v:variable;f:function;p:procedure' ++ ++" tcl language ++let s:tlist_def_tcl_settings = 'tcl;c:class;f:method;m:method;p:procedure' ++ ++" vera language ++let s:tlist_def_vera_settings = 'vera;c:class;d:macro;e:enumerator;' . ++ \ 'f:function;g:enum;m:member;p:program;' . ++ \ 'P:prototype;t:task;T:typedef;v:variable;' . ++ \ 'x:externvar' ++ ++"verilog language ++let s:tlist_def_verilog_settings = 'verilog;m:module;c:constant;P:parameter;' . ++ \ 'e:event;r:register;t:task;w:write;p:port;v:variable;f:function' ++ ++" vim language ++let s:tlist_def_vim_settings = 'vim;a:autocmds;v:variable;f:function' ++ ++" yacc language ++let s:tlist_def_yacc_settings = 'yacc;l:label' ++ ++"------------------- end of language specific options -------------------- ++ ++" Vim window size is changed by the taglist plugin or not ++let s:tlist_winsize_chgd = -1 ++" Taglist window is maximized or not ++let s:tlist_win_maximized = 0 ++" Name of files in the taglist ++let s:tlist_file_names='' ++" Number of files in the taglist ++let s:tlist_file_count = 0 ++" Number of filetypes supported by taglist ++let s:tlist_ftype_count = 0 ++" Is taglist part of other plugins like winmanager or cream? ++let s:tlist_app_name = "none" ++" Are we displaying brief help text ++let s:tlist_brief_help = 1 ++" List of files removed on user request ++let s:tlist_removed_flist = "" ++" Index of current file displayed in the taglist window ++let s:tlist_cur_file_idx = -1 ++" Taglist menu is empty or not ++let s:tlist_menu_empty = 1 ++ ++" An autocommand is used to refresh the taglist window when entering any ++" buffer. We don't want to refresh the taglist window if we are entering the ++" file window from one of the taglist functions. The 'Tlist_Skip_Refresh' ++" variable is used to skip the refresh of the taglist window and is set ++" and cleared appropriately. ++let s:Tlist_Skip_Refresh = 0 ++ ++" Tlist_Window_Display_Help() ++function! s:Tlist_Window_Display_Help() ++ if s:tlist_app_name == "winmanager" ++ " To handle a bug in the winmanager plugin, add a space at the ++ " last line ++ call setline('$', ' ') ++ endif ++ ++ if s:tlist_brief_help ++ " Add the brief help ++ call append(0, '" Press to display help text') ++ else ++ " Add the extensive help ++ call append(0, '" : Jump to tag definition') ++ call append(1, '" o : Jump to tag definition in new window') ++ call append(2, '" p : Preview the tag definition') ++ call append(3, '" : Display tag prototype') ++ call append(4, '" u : Update tag list') ++ call append(5, '" s : Select sort field') ++ call append(6, '" d : Remove file from taglist') ++ call append(7, '" x : Zoom-out/Zoom-in taglist window') ++ call append(8, '" + : Open a fold') ++ call append(9, '" - : Close a fold') ++ call append(10, '" * : Open all folds') ++ call append(11, '" = : Close all folds') ++ call append(12, '" [[ : Move to the start of previous file') ++ call append(13, '" ]] : Move to the start of next file') ++ call append(14, '" q : Close the taglist window') ++ call append(15, '" : Remove help text') ++ endif ++endfunction ++ ++" Tlist_Window_Toggle_Help_Text() ++" Toggle taglist plugin help text between the full version and the brief ++" version ++function! s:Tlist_Window_Toggle_Help_Text() ++ if g:Tlist_Compact_Format ++ " In compact display mode, do not display help ++ return ++ endif ++ ++ " Include the empty line displayed after the help text ++ let brief_help_size = 1 ++ let full_help_size = 16 ++ ++ setlocal modifiable ++ ++ " Set report option to a huge value to prevent informational messages ++ " while deleting the lines ++ let old_report = &report ++ set report=99999 ++ ++ " Remove the currently highlighted tag. Otherwise, the help text ++ " might be highlighted by mistake ++ match none ++ ++ " Toggle between brief and full help text ++ if s:tlist_brief_help ++ let s:tlist_brief_help = 0 ++ ++ " Remove the previous help ++ exe '1,' . brief_help_size . ' delete _' ++ ++ " Adjust the start/end line numbers for the files ++ call s:Tlist_Window_Update_Line_Offsets(0, 1, full_help_size - brief_help_size) ++ else ++ let s:tlist_brief_help = 1 ++ ++ " Remove the previous help ++ exe '1,' . full_help_size . ' delete _' ++ ++ " Adjust the start/end line numbers for the files ++ call s:Tlist_Window_Update_Line_Offsets(0, 0, full_help_size - brief_help_size) ++ endif ++ ++ call s:Tlist_Window_Display_Help() ++ ++ " Restore the report option ++ let &report = old_report ++ ++ setlocal nomodifiable ++endfunction ++ ++" Taglist debug support ++let s:tlist_debug = 0 ++ ++" File for storing the debug messages ++let s:tlist_debug_file = '' ++ ++" Tlist_Debug_Enable ++" Enable logging of taglist debug messages. ++function! s:Tlist_Debug_Enable(...) ++ let s:tlist_debug = 1 ++ ++ " Check whether a valid file name is supplied. ++ if a:1 != '' ++ let s:tlist_debug_file = fnamemodify(a:1, ':p') ++ ++ " Empty the log file ++ exe 'redir! > ' . s:tlist_debug_file ++ redir END ++ ++ " Check whether the log file is present/created ++ if !filewritable(s:tlist_debug_file) ++ call s:Tlist_Warning_Msg('Taglist: Unable to create log file ' ++ \ . s:tlist_debug_file) ++ let s:tlist_debug_file = '' ++ endif ++ endif ++endfunction ++ ++" Tlist_Debug_Disable ++" Disable logging of taglist debug messages. ++function! s:Tlist_Debug_Disable(...) ++ let s:tlist_debug = 0 ++ let s:tlist_debug_file = '' ++endfunction ++ ++" Tlist_Debug_Show ++" Display the taglist debug messages in a new window ++function! s:Tlist_Debug_Show() ++ if s:tlist_msg == '' ++ call s:Tlist_Warning_Msg('Taglist: No debug messages') ++ return ++ endif ++ ++ " Open a new window to display the taglist debug messages ++ new taglist_debug.txt ++ " Delete all the lines (if the buffer already exists) ++ silent! %delete _ ++ " Add the messages ++ silent! put =s:tlist_msg ++ " Move the cursor to the first line ++ normal! gg ++endfunction ++ ++" Tlist_Log_Msg ++" Log the supplied debug message along with the time ++function! s:Tlist_Log_Msg(msg) ++ if s:tlist_debug ++ if s:tlist_debug_file != '' ++ exe 'redir >> ' . s:tlist_debug_file ++ silent echon strftime('%H:%M:%S') . ': ' . a:msg . "\n" ++ redir END ++ else ++ " Log the message into a variable ++ " Retain only the last 3000 characters ++ let len = strlen(s:tlist_msg) ++ if len > 3000 ++ let s:tlist_msg = strpart(s:tlist_msg, len - 3000) ++ endif ++ let s:tlist_msg = s:tlist_msg . strftime('%H:%M:%S') . ': ' . ++ \ a:msg . "\n" ++ endif ++ endif ++endfunction ++ ++" Tlist_Warning_Msg() ++" Display a message using WarningMsg highlight group ++function! s:Tlist_Warning_Msg(msg) ++ echohl WarningMsg ++ echomsg a:msg ++ echohl None ++endfunction ++ ++" Last returned file index for file name lookup. ++" Used to speed up file lookup ++let s:tlist_file_name_idx_cache = -1 ++ ++" Tlist_Get_File_Index() ++" Return the index of the specified filename ++function! s:Tlist_Get_File_Index(fname) ++ if s:tlist_file_count == 0 || a:fname == '' ++ return -1 ++ endif ++ ++ " If the new filename is same as the last accessed filename, then ++ " return that index ++ if s:tlist_file_name_idx_cache != -1 && ++ \ s:tlist_file_name_idx_cache < s:tlist_file_count ++ if s:tlist_{s:tlist_file_name_idx_cache}_filename == a:fname ++ " Same as the last accessed file ++ return s:tlist_file_name_idx_cache ++ endif ++ endif ++ ++ " First, check whether the filename is present ++ let s_fname = a:fname . "\n" ++ let i = stridx(s:tlist_file_names, s_fname) ++ if i == -1 ++ let s:tlist_file_name_idx_cache = -1 ++ return -1 ++ endif ++ ++ " Second, compute the file name index ++ let nl_txt = substitute(strpart(s:tlist_file_names, 0, i), "[^\n]", '', 'g') ++ let s:tlist_file_name_idx_cache = strlen(nl_txt) ++ return s:tlist_file_name_idx_cache ++endfunction ++ ++" Last returned file index for line number lookup. ++" Used to speed up file lookup ++let s:tlist_file_lnum_idx_cache = -1 ++ ++" Tlist_Window_Get_File_Index_By_Linenum() ++" Return the index of the filename present in the specified line number ++" Line number refers to the line number in the taglist window ++function! s:Tlist_Window_Get_File_Index_By_Linenum(lnum) ++ call s:Tlist_Log_Msg('Tlist_Window_Get_File_Index_By_Linenum (' . a:lnum . ')') ++ ++ " First try to see whether the new line number is within the range ++ " of the last returned file ++ if s:tlist_file_lnum_idx_cache != -1 && ++ \ s:tlist_file_lnum_idx_cache < s:tlist_file_count ++ if a:lnum >= s:tlist_{s:tlist_file_lnum_idx_cache}_start && ++ \ a:lnum <= s:tlist_{s:tlist_file_lnum_idx_cache}_end ++ return s:tlist_file_lnum_idx_cache ++ endif ++ endif ++ ++ let fidx = -1 ++ ++ if g:Tlist_Show_One_File ++ " Displaying only one file in the taglist window. Check whether ++ " the line is within the tags displayed for that file ++ if s:tlist_cur_file_idx != -1 ++ if a:lnum >= s:tlist_{s:tlist_cur_file_idx}_start ++ \ && a:lnum <= s:tlist_{s:tlist_cur_file_idx}_end ++ let fidx = s:tlist_cur_file_idx ++ endif ++ ++ endif ++ else ++ " Do a binary search in the taglist ++ let left = 0 ++ let right = s:tlist_file_count - 1 ++ ++ while left < right ++ let mid = (left + right) / 2 ++ ++ if a:lnum >= s:tlist_{mid}_start && a:lnum <= s:tlist_{mid}_end ++ let s:tlist_file_lnum_idx_cache = mid ++ return mid ++ endif ++ ++ if a:lnum < s:tlist_{mid}_start ++ let right = mid - 1 ++ else ++ let left = mid + 1 ++ endif ++ endwhile ++ ++ if left >= 0 && left < s:tlist_file_count ++ \ && a:lnum >= s:tlist_{left}_start ++ \ && a:lnum <= s:tlist_{left}_end ++ let fidx = left ++ endif ++ endif ++ ++ let s:tlist_file_lnum_idx_cache = fidx ++ ++ return fidx ++endfunction ++ ++" Tlist_Exe_Cmd_No_Acmds ++" Execute the specified Ex command after disabling autocommands ++function! s:Tlist_Exe_Cmd_No_Acmds(cmd) ++ let old_eventignore = &eventignore ++ set eventignore=all ++ exe a:cmd ++ let &eventignore = old_eventignore ++endfunction ++ ++" Tlist_Skip_File() ++" Check whether tag listing is supported for the specified file ++function! s:Tlist_Skip_File(filename, ftype) ++ " Skip buffers with no names and buffers with filetype not set ++ if a:filename == '' || a:ftype == '' ++ return 1 ++ endif ++ ++ " Skip files which are not supported by exuberant ctags ++ " First check whether default settings for this filetype are available. ++ " If it is not available, then check whether user specified settings are ++ " available. If both are not available, then don't list the tags for this ++ " filetype ++ let var = 's:tlist_def_' . a:ftype . '_settings' ++ if !exists(var) ++ let var = 'g:tlist_' . a:ftype . '_settings' ++ if !exists(var) ++ return 1 ++ endif ++ endif ++ ++ " Skip files which are not readable or files which are not yet stored ++ " to the disk ++ if !filereadable(a:filename) ++ return 1 ++ endif ++ ++ return 0 ++endfunction ++ ++" Tlist_User_Removed_File ++" Returns 1 if a file is removed by a user from the taglist ++function! s:Tlist_User_Removed_File(filename) ++ return stridx(s:tlist_removed_flist, a:filename . "\n") != -1 ++endfunction ++ ++" Tlist_Update_Remove_List ++" Update the list of user removed files from the taglist ++" add == 1, add the file to the removed list ++" add == 0, delete the file from the removed list ++function! s:Tlist_Update_Remove_List(filename, add) ++ if a:add ++ let s:tlist_removed_flist = s:tlist_removed_flist . a:filename . "\n" ++ else ++ let idx = stridx(s:tlist_removed_flist, a:filename . "\n") ++ let text_before = strpart(s:tlist_removed_flist, 0, idx) ++ let rem_text = strpart(s:tlist_removed_flist, idx) ++ let next_idx = stridx(rem_text, "\n") ++ let text_after = strpart(rem_text, next_idx + 1) ++ ++ let s:tlist_removed_flist = text_before . text_after ++ endif ++endfunction ++ ++" Tlist_FileType_Init ++" Initialize the ctags arguments and tag variable for the specified ++" file type ++function! s:Tlist_FileType_Init(ftype) ++ call s:Tlist_Log_Msg('Tlist_FileType_Init (' . a:ftype . ')') ++ " If the user didn't specify any settings, then use the default ++ " ctags args. Otherwise, use the settings specified by the user ++ let var = 'g:tlist_' . a:ftype . '_settings' ++ if exists(var) ++ " User specified ctags arguments ++ let settings = {var} . ';' ++ else ++ " Default ctags arguments ++ let var = 's:tlist_def_' . a:ftype . '_settings' ++ if !exists(var) ++ " No default settings for this file type. This filetype is ++ " not supported ++ return 0 ++ endif ++ let settings = s:tlist_def_{a:ftype}_settings . ';' ++ endif ++ ++ let msg = 'Taglist: Invalid ctags option setting - ' . settings ++ ++ " Format of the option that specifies the filetype and ctags arugments: ++ " ++ " ;flag1:name1;flag2:name2;flag3:name3 ++ " ++ ++ " Extract the file type to pass to ctags. This may be different from the ++ " file type detected by Vim ++ let pos = stridx(settings, ';') ++ if pos == -1 ++ call s:Tlist_Warning_Msg(msg) ++ return 0 ++ endif ++ let ctags_ftype = strpart(settings, 0, pos) ++ if ctags_ftype == '' ++ call s:Tlist_Warning_Msg(msg) ++ return 0 ++ endif ++ " Make sure a valid filetype is supplied. If the user didn't specify a ++ " valid filetype, then the ctags option settings may be treated as the ++ " filetype ++ if ctags_ftype =~ ':' ++ call s:Tlist_Warning_Msg(msg) ++ return 0 ++ endif ++ ++ " Remove the file type from settings ++ let settings = strpart(settings, pos + 1) ++ if settings == '' ++ call s:Tlist_Warning_Msg(msg) ++ return 0 ++ endif ++ ++ " Process all the specified ctags flags. The format is ++ " flag1:name1;flag2:name2;flag3:name3 ++ let ctags_flags = '' ++ let cnt = 0 ++ while settings != '' ++ " Extract the flag ++ let pos = stridx(settings, ':') ++ if pos == -1 ++ call s:Tlist_Warning_Msg(msg) ++ return 0 ++ endif ++ let flag = strpart(settings, 0, pos) ++ if flag == '' ++ call s:Tlist_Warning_Msg(msg) ++ return 0 ++ endif ++ " Remove the flag from settings ++ let settings = strpart(settings, pos + 1) ++ ++ " Extract the tag type name ++ let pos = stridx(settings, ';') ++ if pos == -1 ++ call s:Tlist_Warning_Msg(msg) ++ return 0 ++ endif ++ let name = strpart(settings, 0, pos) ++ if name == '' ++ call s:Tlist_Warning_Msg(msg) ++ return 0 ++ endif ++ let settings = strpart(settings, pos + 1) ++ ++ let cnt = cnt + 1 ++ ++ let s:tlist_{a:ftype}_{cnt}_name = flag ++ let s:tlist_{a:ftype}_{cnt}_fullname = name ++ let ctags_flags = ctags_flags . flag ++ endwhile ++ ++ let s:tlist_{a:ftype}_ctags_args = '--language-force=' . ctags_ftype . ++ \ ' --' . ctags_ftype . '-types=' . ctags_flags ++ let s:tlist_{a:ftype}_count = cnt ++ let s:tlist_{a:ftype}_ctags_flags = ctags_flags ++ ++ " Save the filetype name ++ let s:tlist_ftype_{s:tlist_ftype_count}_name = a:ftype ++ let s:tlist_ftype_count = s:tlist_ftype_count + 1 ++ ++ return 1 ++endfunction ++ ++" Tlist_Get_Filetype ++" Determine the filetype for the specified file ++function! s:Tlist_Get_Filetype(fname) ++ " Ignore the filetype autocommands ++ let old_eventignore = &eventignore ++ set eventignore=FileType ++ ++ " Save the 'filetype', as this will be changed temporarily ++ let old_filetype = &filetype ++ ++ " Run the filetypedetect group of autocommands to determine ++ " the filetype ++ exe 'doautocmd filetypedetect BufRead ' . a:fname ++ ++ " Save the detected filetype ++ let ftype = &filetype ++ ++ " Restore the previous state ++ let &filetype = old_filetype ++ let &eventignore = old_eventignore ++ ++ return ftype ++endfunction ++ ++" Tlist_Get_Buffer_Filetype ++" Get the filetype for the specified buffer ++function! s:Tlist_Get_Buffer_Filetype(bnum) ++ if bufloaded(a:bnum) ++ " For loaded buffers, the 'filetype' is already determined ++ return getbufvar(a:bnum, '&filetype') ++ endif ++ ++ " For unloaded buffers, if the 'filetype' option is set, return it ++ let ftype = getbufvar(a:bnum, '&filetype') ++ if ftype != '' ++ return ftype ++ endif ++ ++ " Skip non-existent buffers ++ if !bufexists(a:bnum) ++ return '' ++ endif ++ ++ " For buffers whose filetype is not yet determined, try to determine ++ " the filetype ++ let bname = bufname(a:bnum) ++ ++ return s:Tlist_Get_Filetype(bname) ++endfunction ++ ++" Tlist_Discard_TagInfo ++" Discard the stored tag information for a file ++function! s:Tlist_Discard_TagInfo(fidx) ++ call s:Tlist_Log_Msg('Tlist_Discard_TagInfo (' . ++ \ s:tlist_{a:fidx}_filename . ')') ++ let ftype = s:tlist_{a:fidx}_filetype ++ ++ " Discard information about the tags defined in the file ++ let i = 1 ++ while i <= s:tlist_{a:fidx}_tag_count ++ let fidx_i = 's:tlist_' . a:fidx . '_' . i ++ unlet! {fidx_i}_tag ++ unlet! {fidx_i}_tag_name ++ unlet! {fidx_i}_tag_type ++ unlet! {fidx_i}_ttype_idx ++ unlet! {fidx_i}_tag_proto ++ unlet! {fidx_i}_tag_searchpat ++ unlet! {fidx_i}_tag_linenum ++ let i = i + 1 ++ endwhile ++ ++ let s:tlist_{a:fidx}_tag_count = 0 ++ ++ " Discard information about tag type groups ++ let i = 1 ++ while i <= s:tlist_{ftype}_count ++ let ttype = s:tlist_{ftype}_{i}_name ++ if s:tlist_{a:fidx}_{ttype} != '' ++ let fidx_ttype = 's:tlist_' . a:fidx . '_' . ttype ++ let {fidx_ttype} = '' ++ let {fidx_ttype}_offset = 0 ++ let cnt = {fidx_ttype}_count ++ let {fidx_ttype}_count = 0 ++ let j = 1 ++ while j <= cnt ++ unlet! {fidx_ttype}_{j} ++ let j = j + 1 ++ endwhile ++ endif ++ let i = i + 1 ++ endwhile ++ ++ " Discard the stored menu command also ++ let s:tlist_{a:fidx}_menu_cmd = '' ++endfunction ++ ++" Tlist_Window_Update_Line_Offsets ++" Update the line offsets for tags for files starting from start_idx ++" and displayed in the taglist window by the specified offset ++function! s:Tlist_Window_Update_Line_Offsets(start_idx, increment, offset) ++ let i = a:start_idx ++ ++ while i < s:tlist_file_count ++ if s:tlist_{i}_visible ++ " Update the start/end line number only if the file is visible ++ if a:increment ++ let s:tlist_{i}_start = s:tlist_{i}_start + a:offset ++ let s:tlist_{i}_end = s:tlist_{i}_end + a:offset ++ else ++ let s:tlist_{i}_start = s:tlist_{i}_start - a:offset ++ let s:tlist_{i}_end = s:tlist_{i}_end - a:offset ++ endif ++ endif ++ let i = i + 1 ++ endwhile ++endfunction ++ ++" Tlist_Discard_FileInfo ++" Discard the stored information for a file ++function! s:Tlist_Discard_FileInfo(fidx) ++ call s:Tlist_Log_Msg('Tlist_Discard_FileInfo (' . ++ \ s:tlist_{a:fidx}_filename . ')') ++ call s:Tlist_Discard_TagInfo(a:fidx) ++ ++ let ftype = s:tlist_{a:fidx}_filetype ++ ++ let i = 1 ++ while i <= s:tlist_{ftype}_count ++ let ttype = s:tlist_{ftype}_{i}_name ++ unlet! s:tlist_{a:fidx}_{ttype} ++ unlet! s:tlist_{a:fidx}_{ttype}_offset ++ unlet! s:tlist_{a:fidx}_{ttype}_count ++ let i = i + 1 ++ endwhile ++ ++ unlet! s:tlist_{a:fidx}_filename ++ unlet! s:tlist_{a:fidx}_sort_type ++ unlet! s:tlist_{a:fidx}_filetype ++ unlet! s:tlist_{a:fidx}_mtime ++ unlet! s:tlist_{a:fidx}_start ++ unlet! s:tlist_{a:fidx}_end ++ unlet! s:tlist_{a:fidx}_valid ++ unlet! s:tlist_{a:fidx}_visible ++ unlet! s:tlist_{a:fidx}_tag_count ++ unlet! s:tlist_{a:fidx}_menu_cmd ++endfunction ++ ++" Tlist_Window_Remove_File_From_Display ++" Remove the specified file from display ++function! s:Tlist_Window_Remove_File_From_Display(fidx) ++ call s:Tlist_Log_Msg('Tlist_Window_Remove_File_From_Display (' . ++ \ s:tlist_{a:fidx}_filename . ')') ++ " If the file is not visible then no need to remove it ++ if !s:tlist_{a:fidx}_visible ++ return ++ endif ++ ++ " Remove the tags displayed for the specified file from the window ++ let start = s:tlist_{a:fidx}_start ++ " Include the empty line after the last line also ++ if g:Tlist_Compact_Format ++ let end = s:tlist_{a:fidx}_end ++ else ++ let end = s:tlist_{a:fidx}_end + 1 ++ endif ++ ++ setlocal modifiable ++ exe 'silent! ' . start . ',' . end . 'delete _' ++ setlocal nomodifiable ++ ++ " Correct the start and end line offsets for all the files following ++ " this file, as the tags for this file are removed ++ call s:Tlist_Window_Update_Line_Offsets(a:fidx + 1, 0, end - start + 1) ++endfunction ++ ++" Tlist_Remove_File ++" Remove the file under the cursor or the specified file index ++" user_request - User requested to remove the file from taglist ++function! s:Tlist_Remove_File(file_idx, user_request) ++ let fidx = a:file_idx ++ ++ if fidx == -1 ++ let fidx = s:Tlist_Window_Get_File_Index_By_Linenum(line('.')) ++ if fidx == -1 ++ return ++ endif ++ endif ++ call s:Tlist_Log_Msg('Tlist_Remove_File (' . ++ \ s:tlist_{fidx}_filename . ', ' . a:user_request . ')') ++ ++ let save_winnr = winnr() ++ let winnum = bufwinnr(g:TagList_title) ++ if winnum != -1 ++ " Taglist window is open, remove the file from display ++ ++ if save_winnr != winnum ++ let old_eventignore = &eventignore ++ set eventignore=all ++ exe winnum . 'wincmd w' ++ endif ++ ++ call s:Tlist_Window_Remove_File_From_Display(fidx) ++ ++ if save_winnr != winnum ++ exe save_winnr . 'wincmd w' ++ let &eventignore = old_eventignore ++ endif ++ endif ++ ++ let fname = s:tlist_{fidx}_filename ++ ++ if a:user_request ++ " As the user requested to remove the file from taglist, ++ " add it to the removed list ++ call s:Tlist_Update_Remove_List(fname, 1) ++ endif ++ ++ " Remove the file name from the taglist list of filenames ++ let idx = stridx(s:tlist_file_names, fname . "\n") ++ let text_before = strpart(s:tlist_file_names, 0, idx) ++ let rem_text = strpart(s:tlist_file_names, idx) ++ let next_idx = stridx(rem_text, "\n") ++ let text_after = strpart(rem_text, next_idx + 1) ++ let s:tlist_file_names = text_before . text_after ++ ++ call s:Tlist_Discard_FileInfo(fidx) ++ ++ " Shift all the file variables by one index ++ let i = fidx + 1 ++ ++ while i < s:tlist_file_count ++ let j = i - 1 ++ ++ let s:tlist_{j}_filename = s:tlist_{i}_filename ++ let s:tlist_{j}_sort_type = s:tlist_{i}_sort_type ++ let s:tlist_{j}_filetype = s:tlist_{i}_filetype ++ let s:tlist_{j}_mtime = s:tlist_{i}_mtime ++ let s:tlist_{j}_start = s:tlist_{i}_start ++ let s:tlist_{j}_end = s:tlist_{i}_end ++ let s:tlist_{j}_valid = s:tlist_{i}_valid ++ let s:tlist_{j}_visible = s:tlist_{i}_visible ++ let s:tlist_{j}_tag_count = s:tlist_{i}_tag_count ++ let s:tlist_{j}_menu_cmd = s:tlist_{i}_menu_cmd ++ ++ let k = 1 ++ while k <= s:tlist_{j}_tag_count ++ let s:tlist_{j}_{k}_tag = s:tlist_{i}_{k}_tag ++ let s:tlist_{j}_{k}_tag_name = s:tlist_{i}_{k}_tag_name ++ let s:tlist_{j}_{k}_tag_type = s:Tlist_Get_Tag_Type_By_Tag(i, k) ++ let s:tlist_{j}_{k}_ttype_idx = s:tlist_{i}_{k}_ttype_idx ++ let s:tlist_{j}_{k}_tag_proto = s:Tlist_Get_Tag_Prototype(i, k) ++ let s:tlist_{j}_{k}_tag_searchpat = s:Tlist_Get_Tag_SearchPat(i, k) ++ let s:tlist_{j}_{k}_tag_linenum = s:Tlist_Get_Tag_Linenum(i, k) ++ let k = k + 1 ++ endwhile ++ ++ let ftype = s:tlist_{i}_filetype ++ ++ let k = 1 ++ while k <= s:tlist_{ftype}_count ++ let ttype = s:tlist_{ftype}_{k}_name ++ let s:tlist_{j}_{ttype} = s:tlist_{i}_{ttype} ++ let s:tlist_{j}_{ttype}_offset = s:tlist_{i}_{ttype}_offset ++ let s:tlist_{j}_{ttype}_count = s:tlist_{i}_{ttype}_count ++ if s:tlist_{j}_{ttype} != '' ++ let l = 1 ++ while l <= s:tlist_{j}_{ttype}_count ++ let s:tlist_{j}_{ttype}_{l} = s:tlist_{i}_{ttype}_{l} ++ let l = l + 1 ++ endwhile ++ endif ++ let k = k + 1 ++ endwhile ++ ++ " As the file and tag information is copied to the new index, ++ " discard the previous information ++ call s:Tlist_Discard_FileInfo(i) ++ ++ let i = i + 1 ++ endwhile ++ ++ " Reduce the number of files displayed ++ let s:tlist_file_count = s:tlist_file_count - 1 ++ ++ if g:Tlist_Show_One_File ++ " If the tags for only one file is displayed and if we just ++ " now removed that file, then invalidate the current file idx ++ if s:tlist_cur_file_idx == fidx ++ let s:tlist_cur_file_idx = -1 ++ endif ++ endif ++endfunction ++ ++" Tlist_Window_Goto_Window ++" Goto the taglist window ++function! s:Tlist_Window_Goto_Window() ++ let winnum = bufwinnr(g:TagList_title) ++ if winnum != -1 ++ if winnr() != winnum ++ call s:Tlist_Exe_Cmd_No_Acmds(winnum . 'wincmd w') ++ endif ++ endif ++endfunction ++ ++" Tlist_Window_Create ++" Create a new taglist window. If it is already open, jump to it ++function! s:Tlist_Window_Create() ++ call s:Tlist_Log_Msg('Tlist_Window_Create()') ++ " If the window is open, jump to it ++ let winnum = bufwinnr(g:TagList_title) ++ if winnum != -1 ++ " Jump to the existing window ++ if winnr() != winnum ++ exe winnum . 'wincmd w' ++ endif ++ return ++ endif ++ ++ " If used with winmanager don't open windows. Winmanager will handle ++ " the window/buffer management ++ if s:tlist_app_name == "winmanager" ++ return ++ endif ++ ++ " Create a new window. If user prefers a horizontal window, then open ++ " a horizontally split window. Otherwise open a vertically split ++ " window ++ if g:Tlist_Use_Horiz_Window ++ " Open a horizontally split window ++ let win_dir = 'botright' ++ " Horizontal window height ++ let win_size = g:Tlist_WinHeight ++ else ++ if s:tlist_winsize_chgd == -1 ++ " Open a vertically split window. Increase the window size, if ++ " needed, to accomodate the new window ++ if g:Tlist_Inc_Winwidth && ++ \ &columns < (80 + g:Tlist_WinWidth) ++ " Save the original window position ++ let s:tlist_pre_winx = getwinposx() ++ let s:tlist_pre_winy = getwinposy() ++ ++ " one extra column is needed to include the vertical split ++ let &columns= &columns + g:Tlist_WinWidth + 1 ++ ++ let s:tlist_winsize_chgd = 1 ++ else ++ let s:tlist_winsize_chgd = 0 ++ endif ++ endif ++ ++ if g:Tlist_Use_Right_Window ++ " Open the window at the rightmost place ++ let win_dir = 'botright vertical' ++ else ++ " Open the window at the leftmost place ++ let win_dir = 'topleft vertical' ++ endif ++ let win_size = g:Tlist_WinWidth ++ endif ++ ++ " If the tag listing temporary buffer already exists, then reuse it. ++ " Otherwise create a new buffer ++ let bufnum = bufnr(g:TagList_title) ++ if bufnum == -1 ++ " Create a new buffer ++ let wcmd = g:TagList_title ++ else ++ " Edit the existing buffer ++ let wcmd = '+buffer' . bufnum ++ endif ++ ++ " Create the taglist window ++ exe 'silent! ' . win_dir . ' ' . win_size . 'split ' . wcmd ++ ++ " Save the new window position ++ let s:tlist_winx = getwinposx() ++ let s:tlist_winy = getwinposy() ++ ++ " Initialize the taglist window ++ call s:Tlist_Window_Init() ++endfunction ++ ++" Tlist_Window_Zoom ++" Zoom (maximize/minimize) the taglist window ++function! s:Tlist_Window_Zoom() ++ if s:tlist_win_maximized ++ " Restore the window back to the previous size ++ if g:Tlist_Use_Horiz_Window ++ exe 'resize ' . g:Tlist_WinHeight ++ else ++ exe 'vert resize ' . g:Tlist_WinWidth ++ endif ++ let s:tlist_win_maximized = 0 ++ else ++ " Set the window size to the maximum possible without closing other ++ " windows ++ if g:Tlist_Use_Horiz_Window ++ resize ++ else ++ vert resize ++ endif ++ let s:tlist_win_maximized = 1 ++ endif ++endfunction ++ ++" Tlist_Ballon_Expr ++" When the mouse cursor is over a tag in the taglist window, display the ++" tag prototype (balloon) ++function! Tlist_Ballon_Expr() ++ " Get the file index ++ let fidx = s:Tlist_Window_Get_File_Index_By_Linenum(v:beval_lnum) ++ if fidx == -1 ++ return '' ++ endif ++ ++ " Get the tag output line for the current tag ++ let tidx = s:Tlist_Window_Get_Tag_Index(fidx, v:beval_lnum) ++ if tidx == 0 ++ return '' ++ endif ++ ++ " Get the tag search pattern and display it ++ return s:Tlist_Get_Tag_Prototype(fidx, tidx) ++endfunction ++ ++" Tlist_Window_Check_Width ++" Check the width of the taglist window. For horizontally split windows, the ++" 'winfixheight' option is used to fix the height of the window. For ++" vertically split windows, Vim doesn't support the 'winfixwidth' option. So ++" need to handle window width changes from this function. ++function! s:Tlist_Window_Check_Width() ++ let tlist_winnr = bufwinnr(g:TagList_title) ++ if tlist_winnr == -1 ++ return ++ endif ++ ++ let width = winwidth(tlist_winnr) ++ if width != g:Tlist_WinWidth ++ call s:Tlist_Log_Msg("Tlist_Window_Check_Width: Changing window " . ++ \ "width from " . width . " to " . g:Tlist_WinWidth) ++ let save_winnr = winnr() ++ if save_winnr != tlist_winnr ++ call s:Tlist_Exe_Cmd_No_Acmds(tlist_winnr . 'wincmd w') ++ endif ++ exe 'vert resize ' . g:Tlist_WinWidth ++ if save_winnr != tlist_winnr ++ call s:Tlist_Exe_Cmd_No_Acmds('wincmd p') ++ endif ++ endif ++endfunction ++ ++" Tlist_Window_Exit_Only_Window ++" If the 'Tlist_Exit_OnlyWindow' option is set, then exit Vim if only the ++" taglist window is present. ++function! s:Tlist_Window_Exit_Only_Window() ++ " Before quitting Vim, delete the taglist buffer so that ++ " the '0 mark is correctly set to the previous buffer. ++ if v:version < 700 ++ if winbufnr(2) == -1 ++ bdelete ++ quit ++ endif ++ else ++ if winbufnr(2) == -1 ++ if tabpagenr('$') == 1 ++ " Only one tag page is present ++ bdelete ++ quit ++ else ++ " More than one tab page is present. Close only the current ++ " tab page ++ close ++ endif ++ endif ++ endif ++endfunction ++ ++" Tlist_Window_Init ++" Set the default options for the taglist window ++function! s:Tlist_Window_Init() ++ call s:Tlist_Log_Msg('Tlist_Window_Init()') ++ ++ " The 'readonly' option should not be set for the taglist buffer. ++ " If Vim is started as "view/gview" or if the ":view" command is ++ " used, then the 'readonly' option is set for all the buffers. ++ " Unset it for the taglist buffer ++ setlocal noreadonly ++ ++ " Set the taglist buffer filetype to taglist ++ setlocal filetype=taglist ++ ++ " Define taglist window element highlighting ++ syntax match TagListComment '^" .*' ++ syntax match TagListFileName '^[^" ].*$' ++ syntax match TagListTitle '^ \S.*$' ++ syntax match TagListTagScope '\s\[.\{-\}\]$' ++ ++ " Define the highlighting only if colors are supported ++ if has('gui_running') || &t_Co > 2 ++ " Colors to highlight various taglist window elements ++ " If user defined highlighting group exists, then use them. ++ " Otherwise, use default highlight groups. ++ if hlexists('MyTagListTagName') ++ highlight link TagListTagName MyTagListTagName ++ else ++ highlight default link TagListTagName Search ++ endif ++ " Colors to highlight comments and titles ++ if hlexists('MyTagListComment') ++ highlight link TagListComment MyTagListComment ++ else ++ highlight clear TagListComment ++ highlight default link TagListComment Comment ++ endif ++ if hlexists('MyTagListTitle') ++ highlight link TagListTitle MyTagListTitle ++ else ++ highlight clear TagListTitle ++ highlight default link TagListTitle Title ++ endif ++ if hlexists('MyTagListFileName') ++ highlight link TagListFileName MyTagListFileName ++ else ++ highlight clear TagListFileName ++ highlight default TagListFileName guibg=Grey ctermbg=darkgray ++ \ guifg=white ctermfg=white ++ endif ++ if hlexists('MyTagListTagScope') ++ highlight link TagListTagScope MyTagListTagScope ++ else ++ highlight clear TagListTagScope ++ highlight default link TagListTagScope Identifier ++ endif ++ else ++ highlight default TagListTagName term=reverse cterm=reverse ++ endif ++ ++ " Folding related settings ++ setlocal foldenable ++ setlocal foldminlines=0 ++ setlocal foldmethod=manual ++ setlocal foldlevel=9999 ++ if g:Tlist_Enable_Fold_Column ++ setlocal foldcolumn=3 ++ else ++ setlocal foldcolumn=0 ++ endif ++ setlocal foldtext=v:folddashes.getline(v:foldstart) ++ ++ if s:tlist_app_name != "winmanager" ++ " Mark buffer as scratch ++ silent! setlocal buftype=nofile ++ if s:tlist_app_name == "none" ++ silent! setlocal bufhidden=delete ++ endif ++ silent! setlocal noswapfile ++ " Due to a bug in Vim 6.0, the winbufnr() function fails for unlisted ++ " buffers. So if the taglist buffer is unlisted, multiple taglist ++ " windows will be opened. This bug is fixed in Vim 6.1 and above ++ if v:version >= 601 ++ silent! setlocal nobuflisted ++ endif ++ endif ++ ++ silent! setlocal nowrap ++ ++ " If the 'number' option is set in the source window, it will affect the ++ " taglist window. So forcefully disable 'number' option for the taglist ++ " window ++ silent! setlocal nonumber ++ ++ " Use fixed height when horizontally split window is used ++ if g:Tlist_Use_Horiz_Window ++ if v:version >= 602 ++ set winfixheight ++ endif ++ endif ++ if !g:Tlist_Use_Horiz_Window && v:version >= 700 ++ set winfixwidth ++ endif ++ ++ " Setup balloon evaluation to display tag prototype ++ if v:version >= 700 && has('balloon_eval') ++ setlocal balloonexpr=Tlist_Ballon_Expr() ++ set ballooneval ++ endif ++ ++ " Setup the cpoptions properly for the maps to work ++ let old_cpoptions = &cpoptions ++ set cpoptions&vim ++ ++ " Create buffer local mappings for jumping to the tags and sorting the list ++ nnoremap ++ \ :call Tlist_Window_Jump_To_Tag('useopen') ++ nnoremap o ++ \ :call Tlist_Window_Jump_To_Tag('newwin') ++ nnoremap p ++ \ :call Tlist_Window_Jump_To_Tag('preview') ++ nnoremap P ++ \ :call Tlist_Window_Jump_To_Tag('prevwin') ++ if v:version >= 700 ++ nnoremap t ++ \ :call Tlist_Window_Jump_To_Tag('checktab') ++ nnoremap ++ \ :call Tlist_Window_Jump_To_Tag('newtab') ++ endif ++ nnoremap <2-LeftMouse> ++ \ :call Tlist_Window_Jump_To_Tag('useopen') ++ nnoremap s ++ \ :call Tlist_Change_Sort('cmd', 'toggle', '') ++ nnoremap + :silent! foldopen ++ nnoremap - :silent! foldclose ++ nnoremap * :silent! %foldopen! ++ nnoremap = :silent! %foldclose ++ nnoremap :silent! foldopen ++ nnoremap :silent! foldclose ++ nnoremap :silent! %foldopen! ++ nnoremap :call Tlist_Window_Show_Info() ++ nnoremap u :call Tlist_Window_Update_File() ++ nnoremap d :call Tlist_Remove_File(-1, 1) ++ nnoremap x :call Tlist_Window_Zoom() ++ nnoremap [[ :call Tlist_Window_Move_To_File(-1) ++ nnoremap :call Tlist_Window_Move_To_File(-1) ++ nnoremap ]] :call Tlist_Window_Move_To_File(1) ++ nnoremap :call Tlist_Window_Move_To_File(1) ++ nnoremap :call Tlist_Window_Toggle_Help_Text() ++ nnoremap q :close ++ ++ " Insert mode mappings ++ inoremap ++ \ :call Tlist_Window_Jump_To_Tag('useopen') ++ " Windows needs return ++ inoremap ++ \ :call Tlist_Window_Jump_To_Tag('useopen') ++ inoremap o ++ \ :call Tlist_Window_Jump_To_Tag('newwin') ++ inoremap p ++ \ :call Tlist_Window_Jump_To_Tag('preview') ++ inoremap P ++ \ :call Tlist_Window_Jump_To_Tag('prevwin') ++ if v:version >= 700 ++ inoremap t ++ \ :call Tlist_Window_Jump_To_Tag('checktab') ++ inoremap ++ \ :call Tlist_Window_Jump_To_Tag('newtab') ++ endif ++ inoremap <2-LeftMouse> ++ \ :call Tlist_Window_Jump_To_Tag('useopen') ++ inoremap s ++ \ :call Tlist_Change_Sort('cmd', 'toggle', '') ++ inoremap + :silent! foldopen ++ inoremap - :silent! foldclose ++ inoremap * :silent! %foldopen! ++ inoremap = :silent! %foldclose ++ inoremap :silent! foldopen ++ inoremap :silent! foldclose ++ inoremap :silent! %foldopen! ++ inoremap :call ++ \ Tlist_Window_Show_Info() ++ inoremap u ++ \ :call Tlist_Window_Update_File() ++ inoremap d :call Tlist_Remove_File(-1, 1) ++ inoremap x :call Tlist_Window_Zoom() ++ inoremap [[ :call Tlist_Window_Move_To_File(-1) ++ inoremap :call Tlist_Window_Move_To_File(-1) ++ inoremap ]] :call Tlist_Window_Move_To_File(1) ++ inoremap :call Tlist_Window_Move_To_File(1) ++ inoremap :call Tlist_Window_Toggle_Help_Text() ++ inoremap q :close ++ ++ " Map single left mouse click if the user wants this functionality ++ if g:Tlist_Use_SingleClick == 1 ++ " Contributed by Bindu Wavell ++ " attempt to perform single click mapping, it would be much ++ " nicer if we could nnoremap ... however vim does ++ " not fire the when you use the mouse ++ " to enter a buffer. ++ let clickmap = ':if bufname("%") =~ "__Tag_List__" ' . ++ \ 'call Tlist_Window_Jump_To_Tag("useopen") ' . ++ \ ' endif ' ++ if maparg('', 'n') == '' ++ " no mapping for leftmouse ++ exe ':nnoremap ' . clickmap ++ else ++ " we have a mapping ++ let mapcmd = ':nnoremap ' ++ let mapcmd = mapcmd . substitute(substitute( ++ \ maparg('', 'n'), '|', '', 'g'), ++ \ '\c^', '', '') ++ let mapcmd = mapcmd . clickmap ++ exe mapcmd ++ endif ++ endif ++ ++ " Define the taglist autocommands ++ augroup TagListAutoCmds ++ autocmd! ++ " Display the tag prototype for the tag under the cursor. ++ autocmd CursorHold __Tag_List__ call s:Tlist_Window_Show_Info() ++ " Highlight the current tag periodically ++ autocmd CursorHold * silent call s:Tlist_Window_Highlight_Tag( ++ \ fnamemodify(bufname('%'), ':p'), line('.'), 1, 0) ++ ++ " Adjust the Vim window width when taglist window is closed ++ autocmd BufUnload __Tag_List__ call s:Tlist_Post_Close_Cleanup() ++ " Close the fold for this buffer when leaving the buffer ++ if g:Tlist_File_Fold_Auto_Close ++ autocmd BufEnter * silent ++ \ call s:Tlist_Window_Open_File_Fold(expand('')) ++ endif ++ " Exit Vim itself if only the taglist window is present (optional) ++ if g:Tlist_Exit_OnlyWindow ++ autocmd BufEnter __Tag_List__ nested ++ \ call s:Tlist_Window_Exit_Only_Window() ++ endif ++ if s:tlist_app_name != "winmanager" && ++ \ !g:Tlist_Process_File_Always && ++ \ (!has('gui_running') || !g:Tlist_Show_Menu) ++ " Auto refresh the taglist window ++ autocmd BufEnter * call s:Tlist_Refresh() ++ endif ++ ++ if !g:Tlist_Use_Horiz_Window ++ if v:version < 700 ++ autocmd WinEnter * call s:Tlist_Window_Check_Width() ++ endif ++ endif ++ augroup end ++ ++ " Restore the previous cpoptions settings ++ let &cpoptions = old_cpoptions ++endfunction ++ ++" Tlist_Window_Refresh ++" Display the tags for all the files in the taglist window ++function! s:Tlist_Window_Refresh() ++ call s:Tlist_Log_Msg('Tlist_Window_Refresh()') ++ " Set report option to a huge value to prevent informational messages ++ " while deleting the lines ++ let old_report = &report ++ set report=99999 ++ ++ " Mark the buffer as modifiable ++ setlocal modifiable ++ ++ " Delete the contents of the buffer to the black-hole register ++ silent! %delete _ ++ ++ " As we have cleared the taglist window, mark all the files ++ " as not visible ++ let i = 0 ++ while i < s:tlist_file_count ++ let s:tlist_{i}_visible = 0 ++ let i = i + 1 ++ endwhile ++ ++ if g:Tlist_Compact_Format == 0 ++ " Display help in non-compact mode ++ call s:Tlist_Window_Display_Help() ++ endif ++ ++ " Mark the buffer as not modifiable ++ setlocal nomodifiable ++ ++ " Restore the report option ++ let &report = old_report ++ ++ " If the tags for only one file should be displayed in the taglist ++ " window, then no need to add the tags here. The bufenter autocommand ++ " will add the tags for that file. ++ if g:Tlist_Show_One_File ++ return ++ endif ++ ++ " List all the tags for the previously processed files ++ " Do this only if taglist is configured to display tags for more than ++ " one file. Otherwise, when Tlist_Show_One_File is configured, ++ " tags for the wrong file will be displayed. ++ let i = 0 ++ while i < s:tlist_file_count ++ call s:Tlist_Window_Refresh_File(s:tlist_{i}_filename, ++ \ s:tlist_{i}_filetype) ++ let i = i + 1 ++ endwhile ++ ++ if g:Tlist_Auto_Update ++ " Add and list the tags for all buffers in the Vim buffer list ++ let i = 1 ++ let last_bufnum = bufnr('$') ++ while i <= last_bufnum ++ if buflisted(i) ++ let fname = fnamemodify(bufname(i), ':p') ++ let ftype = s:Tlist_Get_Buffer_Filetype(i) ++ " If the file doesn't support tag listing, skip it ++ if !s:Tlist_Skip_File(fname, ftype) ++ call s:Tlist_Window_Refresh_File(fname, ftype) ++ endif ++ endif ++ let i = i + 1 ++ endwhile ++ endif ++ ++ " If Tlist_File_Fold_Auto_Close option is set, then close all the folds ++ if g:Tlist_File_Fold_Auto_Close ++ " Close all the folds ++ silent! %foldclose ++ endif ++ ++ " Move the cursor to the top of the taglist window ++ normal! gg ++endfunction ++ ++" Tlist_Post_Close_Cleanup() ++" Close the taglist window and adjust the Vim window width ++function! s:Tlist_Post_Close_Cleanup() ++ call s:Tlist_Log_Msg('Tlist_Post_Close_Cleanup()') ++ " Mark all the files as not visible ++ let i = 0 ++ while i < s:tlist_file_count ++ let s:tlist_{i}_visible = 0 ++ let i = i + 1 ++ endwhile ++ ++ " Remove the taglist autocommands ++ silent! autocmd! TagListAutoCmds ++ ++ " Clear all the highlights ++ match none ++ ++ silent! syntax clear TagListTitle ++ silent! syntax clear TagListComment ++ silent! syntax clear TagListTagScope ++ ++ " Remove the left mouse click mapping if it was setup initially ++ if g:Tlist_Use_SingleClick ++ if hasmapto('') ++ nunmap ++ endif ++ endif ++ ++ if s:tlist_app_name != "winmanager" ++ if g:Tlist_Use_Horiz_Window || g:Tlist_Inc_Winwidth == 0 || ++ \ s:tlist_winsize_chgd != 1 || ++ \ &columns < (80 + g:Tlist_WinWidth) ++ " No need to adjust window width if using horizontally split taglist ++ " window or if columns is less than 101 or if the user chose not to ++ " adjust the window width ++ else ++ " If the user didn't manually move the window, then restore the window ++ " position to the pre-taglist position ++ if s:tlist_pre_winx != -1 && s:tlist_pre_winy != -1 && ++ \ getwinposx() == s:tlist_winx && ++ \ getwinposy() == s:tlist_winy ++ exe 'winpos ' . s:tlist_pre_winx . ' ' . s:tlist_pre_winy ++ endif ++ ++ " Adjust the Vim window width ++ let &columns= &columns - (g:Tlist_WinWidth + 1) ++ endif ++ endif ++ ++ let s:tlist_winsize_chgd = -1 ++ ++ " Reset taglist state variables ++ if s:tlist_app_name == "winmanager" ++ let s:tlist_app_name = "none" ++ endif ++ let s:tlist_window_initialized = 0 ++endfunction ++ ++" Tlist_Window_Refresh_File() ++" List the tags defined in the specified file in a Vim window ++function! s:Tlist_Window_Refresh_File(filename, ftype) ++ call s:Tlist_Log_Msg('Tlist_Window_Refresh_File (' . a:filename . ')') ++ " First check whether the file already exists ++ let fidx = s:Tlist_Get_File_Index(a:filename) ++ if fidx != -1 ++ let file_listed = 1 ++ else ++ let file_listed = 0 ++ endif ++ ++ if !file_listed ++ " Check whether this file is removed based on user request ++ " If it is, then don't display the tags for this file ++ if s:Tlist_User_Removed_File(a:filename) ++ return ++ endif ++ endif ++ ++ if file_listed && s:tlist_{fidx}_visible ++ " Check whether the file tags are currently valid ++ if s:tlist_{fidx}_valid ++ " Goto the first line in the file ++ exe s:tlist_{fidx}_start ++ ++ " If the line is inside a fold, open the fold ++ if foldclosed('.') != -1 ++ exe "silent! " . s:tlist_{fidx}_start . "," . ++ \ s:tlist_{fidx}_end . "foldopen!" ++ endif ++ return ++ endif ++ ++ " Discard and remove the tags for this file from display ++ call s:Tlist_Discard_TagInfo(fidx) ++ call s:Tlist_Window_Remove_File_From_Display(fidx) ++ endif ++ ++ " Process and generate a list of tags defined in the file ++ if !file_listed || !s:tlist_{fidx}_valid ++ let ret_fidx = s:Tlist_Process_File(a:filename, a:ftype) ++ if ret_fidx == -1 ++ return ++ endif ++ let fidx = ret_fidx ++ endif ++ ++ " Set report option to a huge value to prevent informational messages ++ " while adding lines to the taglist window ++ let old_report = &report ++ set report=99999 ++ ++ if g:Tlist_Show_One_File ++ " Remove the previous file ++ if s:tlist_cur_file_idx != -1 ++ call s:Tlist_Window_Remove_File_From_Display(s:tlist_cur_file_idx) ++ let s:tlist_{s:tlist_cur_file_idx}_visible = 0 ++ let s:tlist_{s:tlist_cur_file_idx}_start = 0 ++ let s:tlist_{s:tlist_cur_file_idx}_end = 0 ++ endif ++ let s:tlist_cur_file_idx = fidx ++ endif ++ ++ " Mark the buffer as modifiable ++ setlocal modifiable ++ ++ " Add new files to the end of the window. For existing files, add them at ++ " the same line where they were previously present. If the file is not ++ " visible, then add it at the end ++ if s:tlist_{fidx}_start == 0 || !s:tlist_{fidx}_visible ++ if g:Tlist_Compact_Format ++ let s:tlist_{fidx}_start = line('$') ++ else ++ let s:tlist_{fidx}_start = line('$') + 1 ++ endif ++ endif ++ ++ let s:tlist_{fidx}_visible = 1 ++ ++ " Goto the line where this file should be placed ++ if g:Tlist_Compact_Format ++ exe s:tlist_{fidx}_start ++ else ++ exe s:tlist_{fidx}_start - 1 ++ endif ++ ++ let txt = fnamemodify(s:tlist_{fidx}_filename, ':t') . ' (' . ++ \ fnamemodify(s:tlist_{fidx}_filename, ':p:h') . ')' ++ if g:Tlist_Compact_Format == 0 ++ silent! put =txt ++ else ++ silent! put! =txt ++ " Move to the next line ++ exe line('.') + 1 ++ endif ++ let file_start = s:tlist_{fidx}_start ++ ++ " Add the tag names grouped by tag type to the buffer with a title ++ let i = 1 ++ let ttype_cnt = s:tlist_{a:ftype}_count ++ while i <= ttype_cnt ++ let ttype = s:tlist_{a:ftype}_{i}_name ++ " Add the tag type only if there are tags for that type ++ let fidx_ttype = 's:tlist_' . fidx . '_' . ttype ++ let ttype_txt = {fidx_ttype} ++ if ttype_txt != '' ++ let txt = ' ' . s:tlist_{a:ftype}_{i}_fullname ++ if g:Tlist_Compact_Format == 0 ++ let ttype_start_lnum = line('.') + 1 ++ silent! put =txt ++ else ++ let ttype_start_lnum = line('.') ++ silent! put! =txt ++ endif ++ silent! put =ttype_txt ++ ++ let {fidx_ttype}_offset = ttype_start_lnum - file_start ++ ++ " create a fold for this tag type ++ let fold_start = ttype_start_lnum ++ let fold_end = fold_start + {fidx_ttype}_count ++ exe fold_start . ',' . fold_end . 'fold' ++ ++ " Adjust the cursor position ++ if g:Tlist_Compact_Format == 0 ++ exe ttype_start_lnum + {fidx_ttype}_count ++ else ++ exe ttype_start_lnum + {fidx_ttype}_count + 1 ++ endif ++ ++ if g:Tlist_Compact_Format == 0 ++ " Separate the tag types by a empty line ++ silent! put ='' ++ endif ++ endif ++ let i = i + 1 ++ endwhile ++ ++ if s:tlist_{fidx}_tag_count == 0 ++ if g:Tlist_Compact_Format == 0 ++ silent! put ='' ++ endif ++ endif ++ ++ let s:tlist_{fidx}_end = line('.') - 1 ++ ++ " Create a fold for the entire file ++ exe s:tlist_{fidx}_start . ',' . s:tlist_{fidx}_end . 'fold' ++ exe 'silent! ' . s:tlist_{fidx}_start . ',' . ++ \ s:tlist_{fidx}_end . 'foldopen!' ++ ++ " Goto the starting line for this file, ++ exe s:tlist_{fidx}_start ++ ++ if s:tlist_app_name == "winmanager" ++ " To handle a bug in the winmanager plugin, add a space at the ++ " last line ++ call setline('$', ' ') ++ endif ++ ++ " Mark the buffer as not modifiable ++ setlocal nomodifiable ++ ++ " Restore the report option ++ let &report = old_report ++ ++ " Update the start and end line numbers for all the files following this ++ " file ++ let start = s:tlist_{fidx}_start ++ " include the empty line after the last line ++ if g:Tlist_Compact_Format ++ let end = s:tlist_{fidx}_end ++ else ++ let end = s:tlist_{fidx}_end + 1 ++ endif ++ call s:Tlist_Window_Update_Line_Offsets(fidx + 1, 1, end - start + 1) ++ ++ " Now that we have updated the taglist window, update the tags ++ " menu (if present) ++ if g:Tlist_Show_Menu ++ call s:Tlist_Menu_Update_File(1) ++ endif ++endfunction ++ ++" Tlist_Init_File ++" Initialize the variables for a new file ++function! s:Tlist_Init_File(filename, ftype) ++ call s:Tlist_Log_Msg('Tlist_Init_File (' . a:filename . ')') ++ " Add new files at the end of the list ++ let fidx = s:tlist_file_count ++ let s:tlist_file_count = s:tlist_file_count + 1 ++ " Add the new file name to the taglist list of file names ++ let s:tlist_file_names = s:tlist_file_names . a:filename . "\n" ++ ++ " Initialize the file variables ++ let s:tlist_{fidx}_filename = a:filename ++ let s:tlist_{fidx}_sort_type = g:Tlist_Sort_Type ++ let s:tlist_{fidx}_filetype = a:ftype ++ let s:tlist_{fidx}_mtime = -1 ++ let s:tlist_{fidx}_start = 0 ++ let s:tlist_{fidx}_end = 0 ++ let s:tlist_{fidx}_valid = 0 ++ let s:tlist_{fidx}_visible = 0 ++ let s:tlist_{fidx}_tag_count = 0 ++ let s:tlist_{fidx}_menu_cmd = '' ++ ++ " Initialize the tag type variables ++ let i = 1 ++ while i <= s:tlist_{a:ftype}_count ++ let ttype = s:tlist_{a:ftype}_{i}_name ++ let s:tlist_{fidx}_{ttype} = '' ++ let s:tlist_{fidx}_{ttype}_offset = 0 ++ let s:tlist_{fidx}_{ttype}_count = 0 ++ let i = i + 1 ++ endwhile ++ ++ return fidx ++endfunction ++ ++" Tlist_Get_Tag_Type_By_Tag ++" Return the tag type for the specified tag index ++function! s:Tlist_Get_Tag_Type_By_Tag(fidx, tidx) ++ let ttype_var = 's:tlist_' . a:fidx . '_' . a:tidx . '_tag_type' ++ ++ " Already parsed and have the tag name ++ if exists(ttype_var) ++ return {ttype_var} ++ endif ++ ++ let tag_line = s:tlist_{a:fidx}_{a:tidx}_tag ++ let {ttype_var} = s:Tlist_Extract_Tagtype(tag_line) ++ ++ return {ttype_var} ++endfunction ++ ++" Tlist_Get_Tag_Prototype ++function! s:Tlist_Get_Tag_Prototype(fidx, tidx) ++ let tproto_var = 's:tlist_' . a:fidx . '_' . a:tidx . '_tag_proto' ++ ++ " Already parsed and have the tag prototype ++ if exists(tproto_var) ++ return {tproto_var} ++ endif ++ ++ " Parse and extract the tag prototype ++ let tag_line = s:tlist_{a:fidx}_{a:tidx}_tag ++ let start = stridx(tag_line, '/^') + 2 ++ let end = stridx(tag_line, '/;"' . "\t") ++ if tag_line[end - 1] == '$' ++ let end = end -1 ++ endif ++ let tag_proto = strpart(tag_line, start, end - start) ++ let {tproto_var} = substitute(tag_proto, '\s*', '', '') ++ ++ return {tproto_var} ++endfunction ++ ++" Tlist_Get_Tag_SearchPat ++function! s:Tlist_Get_Tag_SearchPat(fidx, tidx) ++ let tpat_var = 's:tlist_' . a:fidx . '_' . a:tidx . '_tag_searchpat' ++ ++ " Already parsed and have the tag search pattern ++ if exists(tpat_var) ++ return {tpat_var} ++ endif ++ ++ " Parse and extract the tag search pattern ++ let tag_line = s:tlist_{a:fidx}_{a:tidx}_tag ++ let start = stridx(tag_line, '/^') + 2 ++ let end = stridx(tag_line, '/;"' . "\t") ++ if tag_line[end - 1] == '$' ++ let end = end -1 ++ endif ++ let {tpat_var} = '\V\^' . strpart(tag_line, start, end - start) . ++ \ (tag_line[end] == '$' ? '\$' : '') ++ ++ return {tpat_var} ++endfunction ++ ++" Tlist_Get_Tag_Linenum ++" Return the tag line number, given the tag index ++function! s:Tlist_Get_Tag_Linenum(fidx, tidx) ++ let tline_var = 's:tlist_' . a:fidx . '_' . a:tidx . '_tag_linenum' ++ ++ " Already parsed and have the tag line number ++ if exists(tline_var) ++ return {tline_var} ++ endif ++ ++ " Parse and extract the tag line number ++ let tag_line = s:tlist_{a:fidx}_{a:tidx}_tag ++ let start = strridx(tag_line, 'line:') + 5 ++ let end = strridx(tag_line, "\t") ++ if end < start ++ let {tline_var} = strpart(tag_line, start) + 0 ++ else ++ let {tline_var} = strpart(tag_line, start, end - start) + 0 ++ endif ++ ++ return {tline_var} ++endfunction ++ ++" Tlist_Parse_Tagline ++" Parse a tag line from the ctags output. Separate the tag output based on the ++" tag type and store it in the tag type variable. ++" The format of each line in the ctags output is: ++" ++" tag_namefile_nameex_cmd;"extension_fields ++" ++function! s:Tlist_Parse_Tagline(tag_line) ++ if a:tag_line == '' ++ " Skip empty lines ++ return ++ endif ++ ++ " Extract the tag type ++ let ttype = s:Tlist_Extract_Tagtype(a:tag_line) ++ ++ " Make sure the tag type is a valid and supported one ++ if ttype == '' || stridx(s:ctags_flags, ttype) == -1 ++ " Line is not in proper tags format or Tag type is not supported ++ return ++ endif ++ ++ " Update the total tag count ++ let s:tidx = s:tidx + 1 ++ ++ " The following variables are used to optimize this code. Vim is slow in ++ " using curly brace names. To reduce the amount of processing needed, the ++ " curly brace variables are pre-processed here ++ let fidx_tidx = 's:tlist_' . s:fidx . '_' . s:tidx ++ let fidx_ttype = 's:tlist_' . s:fidx . '_' . ttype ++ ++ " Update the count of this tag type ++ let ttype_idx = {fidx_ttype}_count + 1 ++ let {fidx_ttype}_count = ttype_idx ++ ++ " Store the ctags output for this tag ++ let {fidx_tidx}_tag = a:tag_line ++ ++ " Store the tag index and the tag type index (back pointers) ++ let {fidx_ttype}_{ttype_idx} = s:tidx ++ let {fidx_tidx}_ttype_idx = ttype_idx ++ ++ " Extract the tag name ++ let tag_name = strpart(a:tag_line, 0, stridx(a:tag_line, "\t")) ++ ++ " Extract the tag scope/prototype ++ if g:Tlist_Display_Prototype ++ let ttxt = ' ' . s:Tlist_Get_Tag_Prototype(s:fidx, s:tidx) ++ else ++ let ttxt = ' ' . tag_name ++ ++ " Add the tag scope, if it is available and is configured. Tag ++ " scope is the last field after the 'line:\t' field ++ if g:Tlist_Display_Tag_Scope ++ let tag_scope = s:Tlist_Extract_Tag_Scope(a:tag_line) ++ if tag_scope != '' ++ let ttxt = ttxt . ' [' . tag_scope . ']' ++ endif ++ endif ++ endif ++ ++ " Add this tag to the tag type variable ++ let {fidx_ttype} = {fidx_ttype} . ttxt . "\n" ++ ++ " Save the tag name ++ let {fidx_tidx}_tag_name = tag_name ++endfunction ++ ++" Tlist_Process_File ++" Get the list of tags defined in the specified file and store them ++" in Vim variables. Returns the file index where the tags are stored. ++function! s:Tlist_Process_File(filename, ftype) ++ call s:Tlist_Log_Msg('Tlist_Process_File (' . a:filename . ', ' . ++ \ a:ftype . ')') ++ " Check whether this file is supported ++ if s:Tlist_Skip_File(a:filename, a:ftype) ++ return -1 ++ endif ++ ++ " If the tag types for this filetype are not yet created, then create ++ " them now ++ let var = 's:tlist_' . a:ftype . '_count' ++ if !exists(var) ++ if s:Tlist_FileType_Init(a:ftype) == 0 ++ return -1 ++ endif ++ endif ++ ++ " If this file is already processed, then use the cached values ++ let fidx = s:Tlist_Get_File_Index(a:filename) ++ if fidx == -1 ++ " First time, this file is loaded ++ let fidx = s:Tlist_Init_File(a:filename, a:ftype) ++ else ++ " File was previously processed. Discard the tag information ++ call s:Tlist_Discard_TagInfo(fidx) ++ endif ++ ++ let s:tlist_{fidx}_valid = 1 ++ ++ " Exuberant ctags arguments to generate a tag list ++ let ctags_args = ' -f - --format=2 --excmd=pattern --fields=nks ' ++ ++ " Form the ctags argument depending on the sort type ++ if s:tlist_{fidx}_sort_type == 'name' ++ let ctags_args = ctags_args . '--sort=yes' ++ else ++ let ctags_args = ctags_args . '--sort=no' ++ endif ++ ++ " Add the filetype specific arguments ++ let ctags_args = ctags_args . ' ' . s:tlist_{a:ftype}_ctags_args ++ ++ " Ctags command to produce output with regexp for locating the tags ++ let ctags_cmd = g:Tlist_Ctags_Cmd . ctags_args ++ let ctags_cmd = ctags_cmd . ' "' . a:filename . '"' ++ ++ if &shellxquote == '"' ++ " Double-quotes within double-quotes will not work in the ++ " command-line.If the 'shellxquote' option is set to double-quotes, ++ " then escape the double-quotes in the ctags command-line. ++ let ctags_cmd = escape(ctags_cmd, '"') ++ endif ++ ++ " In Windows 95, if not using cygwin, disable the 'shellslash' ++ " option. Otherwise, this will cause problems when running the ++ " ctags command. ++ if has('win95') && !has('win32unix') ++ let old_shellslash = &shellslash ++ set noshellslash ++ endif ++ ++ if has('win32') && !has('win32unix') && !has('win95') ++ \ && (&shell =~ 'cmd.exe') ++ " Windows does not correctly deal with commands that have more than 1 ++ " set of double quotes. It will strip them all resulting in: ++ " 'C:\Program' is not recognized as an internal or external command ++ " operable program or batch file. To work around this, place the ++ " command inside a batch file and call the batch file. ++ " Do this only on Win2K, WinXP and above. ++ " Contributed by: David Fishburn. ++ let s:taglist_tempfile = fnamemodify(tempname(), ':h') . ++ \ '\taglist.cmd' ++ exe 'redir! > ' . s:taglist_tempfile ++ silent echo ctags_cmd ++ redir END ++ ++ call s:Tlist_Log_Msg('Cmd inside batch file: ' . ctags_cmd) ++ let ctags_cmd = '"' . s:taglist_tempfile . '"' ++ endif ++ ++ call s:Tlist_Log_Msg('Cmd: ' . ctags_cmd) ++ ++ " Run ctags and get the tag list ++ let cmd_output = system(ctags_cmd) ++ ++ " Restore the value of the 'shellslash' option. ++ if has('win95') && !has('win32unix') ++ let &shellslash = old_shellslash ++ endif ++ ++ if exists('s:taglist_tempfile') ++ " Delete the temporary cmd file created on MS-Windows ++ call delete(s:taglist_tempfile) ++ endif ++ ++ " Handle errors ++ if v:shell_error ++ let msg = "Taglist: Failed to generate tags for " . a:filename ++ call s:Tlist_Warning_Msg(msg) ++ if cmd_output != '' ++ call s:Tlist_Warning_Msg(cmd_output) ++ endif ++ return fidx ++ endif ++ ++ " Store the modification time for the file ++ let s:tlist_{fidx}_mtime = getftime(a:filename) ++ ++ " No tags for current file ++ if cmd_output == '' ++ call s:Tlist_Log_Msg('No tags defined in ' . a:filename) ++ return fidx ++ endif ++ ++ call s:Tlist_Log_Msg('Generated tags information for ' . a:filename) ++ ++ if v:version > 601 ++ " The following script local variables are used by the ++ " Tlist_Parse_Tagline() function. ++ let s:ctags_flags = s:tlist_{a:ftype}_ctags_flags ++ let s:fidx = fidx ++ let s:tidx = 0 ++ ++ " Process the ctags output one line at a time. The substitute() ++ " command is used to parse the tag lines instead of using the ++ " matchstr()/stridx()/strpart() functions for performance reason ++ call substitute(cmd_output, "\\([^\n]\\+\\)\n", ++ \ '\=s:Tlist_Parse_Tagline(submatch(1))', 'g') ++ ++ " Save the number of tags for this file ++ let s:tlist_{fidx}_tag_count = s:tidx ++ ++ " The following script local variables are no longer needed ++ unlet! s:ctags_flags ++ unlet! s:tidx ++ unlet! s:fidx ++ else ++ " Due to a bug in Vim earlier than version 6.1, ++ " we cannot use substitute() to parse the ctags output. ++ " Instead the slow str*() functions are used ++ let ctags_flags = s:tlist_{a:ftype}_ctags_flags ++ let tidx = 0 ++ ++ while cmd_output != '' ++ " Extract one line at a time ++ let idx = stridx(cmd_output, "\n") ++ let one_line = strpart(cmd_output, 0, idx) ++ " Remove the line from the tags output ++ let cmd_output = strpart(cmd_output, idx + 1) ++ ++ if one_line == '' ++ " Line is not in proper tags format ++ continue ++ endif ++ ++ " Extract the tag type ++ let ttype = s:Tlist_Extract_Tagtype(one_line) ++ ++ " Make sure the tag type is a valid and supported one ++ if ttype == '' || stridx(ctags_flags, ttype) == -1 ++ " Line is not in proper tags format or Tag type is not ++ " supported ++ continue ++ endif ++ ++ " Update the total tag count ++ let tidx = tidx + 1 ++ ++ " The following variables are used to optimize this code. Vim is ++ " slow in using curly brace names. To reduce the amount of ++ " processing needed, the curly brace variables are pre-processed ++ " here ++ let fidx_tidx = 's:tlist_' . fidx . '_' . tidx ++ let fidx_ttype = 's:tlist_' . fidx . '_' . ttype ++ ++ " Update the count of this tag type ++ let ttype_idx = {fidx_ttype}_count + 1 ++ let {fidx_ttype}_count = ttype_idx ++ ++ " Store the ctags output for this tag ++ let {fidx_tidx}_tag = one_line ++ ++ " Store the tag index and the tag type index (back pointers) ++ let {fidx_ttype}_{ttype_idx} = tidx ++ let {fidx_tidx}_ttype_idx = ttype_idx ++ ++ " Extract the tag name ++ let tag_name = strpart(one_line, 0, stridx(one_line, "\t")) ++ ++ " Extract the tag scope/prototype ++ if g:Tlist_Display_Prototype ++ let ttxt = ' ' . s:Tlist_Get_Tag_Prototype(fidx, tidx) ++ else ++ let ttxt = ' ' . tag_name ++ ++ " Add the tag scope, if it is available and is configured. Tag ++ " scope is the last field after the 'line:\t' field ++ if g:Tlist_Display_Tag_Scope ++ let tag_scope = s:Tlist_Extract_Tag_Scope(one_line) ++ if tag_scope != '' ++ let ttxt = ttxt . ' [' . tag_scope . ']' ++ endif ++ endif ++ endif ++ ++ " Add this tag to the tag type variable ++ let {fidx_ttype} = {fidx_ttype} . ttxt . "\n" ++ ++ " Save the tag name ++ let {fidx_tidx}_tag_name = tag_name ++ endwhile ++ ++ " Save the number of tags for this file ++ let s:tlist_{fidx}_tag_count = tidx ++ endif ++ ++ call s:Tlist_Log_Msg('Processed ' . s:tlist_{fidx}_tag_count . ++ \ ' tags in ' . a:filename) ++ ++ return fidx ++endfunction ++ ++" Tlist_Update_File ++" Update the tags for a file (if needed) ++function! Tlist_Update_File(filename, ftype) ++ call s:Tlist_Log_Msg('Tlist_Update_File (' . a:filename . ')') ++ " If the file doesn't support tag listing, skip it ++ if s:Tlist_Skip_File(a:filename, a:ftype) ++ return ++ endif ++ ++ " Convert the file name to a full path ++ let fname = fnamemodify(a:filename, ':p') ++ ++ " First check whether the file already exists ++ let fidx = s:Tlist_Get_File_Index(fname) ++ ++ if fidx != -1 && s:tlist_{fidx}_valid ++ " File exists and the tags are valid ++ " Check whether the file was modified after the last tags update ++ " If it is modified, then update the tags ++ if s:tlist_{fidx}_mtime == getftime(fname) ++ return ++ endif ++ else ++ " If the tags were removed previously based on a user request, ++ " as we are going to update the tags (based on the user request), ++ " remove the filename from the deleted list ++ call s:Tlist_Update_Remove_List(fname, 0) ++ endif ++ ++ " If the taglist window is opened, update it ++ let winnum = bufwinnr(g:TagList_title) ++ if winnum == -1 ++ " Taglist window is not present. Just update the taglist ++ " and return ++ call s:Tlist_Process_File(fname, a:ftype) ++ else ++ if g:Tlist_Show_One_File && s:tlist_cur_file_idx != -1 ++ " If tags for only one file are displayed and we are not ++ " updating the tags for that file, then no need to ++ " refresh the taglist window. Otherwise, the taglist ++ " window should be updated. ++ if s:tlist_{s:tlist_cur_file_idx}_filename != fname ++ call s:Tlist_Process_File(fname, a:ftype) ++ return ++ endif ++ endif ++ ++ " Save the current window number ++ let save_winnr = winnr() ++ ++ " Goto the taglist window ++ call s:Tlist_Window_Goto_Window() ++ ++ " Save the cursor position ++ let save_line = line('.') ++ let save_col = col('.') ++ ++ " Update the taglist window ++ call s:Tlist_Window_Refresh_File(fname, a:ftype) ++ ++ " Restore the cursor position ++ if v:version >= 601 ++ call cursor(save_line, save_col) ++ else ++ exe save_line ++ exe 'normal! ' . save_col . '|' ++ endif ++ ++ if winnr() != save_winnr ++ " Go back to the original window ++ call s:Tlist_Exe_Cmd_No_Acmds(save_winnr . 'wincmd w') ++ endif ++ endif ++ ++ " Update the taglist menu ++ if g:Tlist_Show_Menu ++ call s:Tlist_Menu_Update_File(1) ++ endif ++endfunction ++ ++" Tlist_Window_Close ++" Close the taglist window ++function! s:Tlist_Window_Close() ++ call s:Tlist_Log_Msg('Tlist_Window_Close()') ++ " Make sure the taglist window exists ++ let winnum = bufwinnr(g:TagList_title) ++ if winnum == -1 ++ call s:Tlist_Warning_Msg('Error: Taglist window is not open') ++ return ++ endif ++ ++ if winnr() == winnum ++ " Already in the taglist window. Close it and return ++ if winbufnr(2) != -1 ++ " If a window other than the taglist window is open, ++ " then only close the taglist window. ++ close ++ endif ++ else ++ " Goto the taglist window, close it and then come back to the ++ " original window ++ let curbufnr = bufnr('%') ++ exe winnum . 'wincmd w' ++ close ++ " Need to jump back to the original window only if we are not ++ " already in that window ++ let winnum = bufwinnr(curbufnr) ++ if winnr() != winnum ++ exe winnum . 'wincmd w' ++ endif ++ endif ++endfunction ++ ++" Tlist_Window_Mark_File_Window ++" Mark the current window as the file window to use when jumping to a tag. ++" Only if the current window is a non-plugin, non-preview and non-taglist ++" window ++function! s:Tlist_Window_Mark_File_Window() ++ if getbufvar('%', '&buftype') == '' && !&previewwindow ++ let w:tlist_file_window = "yes" ++ endif ++endfunction ++ ++" Tlist_Window_Open ++" Open and refresh the taglist window ++function! s:Tlist_Window_Open() ++ call s:Tlist_Log_Msg('Tlist_Window_Open()') ++ " If the window is open, jump to it ++ let winnum = bufwinnr(g:TagList_title) ++ if winnum != -1 ++ " Jump to the existing window ++ if winnr() != winnum ++ exe winnum . 'wincmd w' ++ endif ++ return ++ endif ++ ++ if s:tlist_app_name == "winmanager" ++ " Taglist plugin is no longer part of the winmanager app ++ let s:tlist_app_name = "none" ++ endif ++ ++ " Get the filename and filetype for the specified buffer ++ let curbuf_name = fnamemodify(bufname('%'), ':p') ++ let curbuf_ftype = getbufvar('%', '&filetype') ++ let cur_lnum = line('.') ++ ++ " Mark the current window as the desired window to open a file when a tag ++ " is selected. ++ call s:Tlist_Window_Mark_File_Window() ++ ++ " Open the taglist window ++ call s:Tlist_Window_Create() ++ ++ call s:Tlist_Window_Refresh() ++ ++ if g:Tlist_Show_One_File ++ " Add only the current buffer and file ++ " ++ " If the file doesn't support tag listing, skip it ++ if !s:Tlist_Skip_File(curbuf_name, curbuf_ftype) ++ call s:Tlist_Window_Refresh_File(curbuf_name, curbuf_ftype) ++ endif ++ endif ++ ++ if g:Tlist_File_Fold_Auto_Close ++ " Open the fold for the current file, as all the folds in ++ " the taglist window are closed ++ let fidx = s:Tlist_Get_File_Index(curbuf_name) ++ if fidx != -1 ++ exe "silent! " . s:tlist_{fidx}_start . "," . ++ \ s:tlist_{fidx}_end . "foldopen!" ++ endif ++ endif ++ ++ " Highlight the current tag ++ call s:Tlist_Window_Highlight_Tag(curbuf_name, cur_lnum, 1, 1) ++endfunction ++ ++" Tlist_Window_Toggle() ++" Open or close a taglist window ++function! s:Tlist_Window_Toggle() ++ call s:Tlist_Log_Msg('Tlist_Window_Toggle()') ++ " If taglist window is open then close it. ++ let winnum = bufwinnr(g:TagList_title) ++ if winnum != -1 ++ call s:Tlist_Window_Close() ++ return ++ endif ++ ++ call s:Tlist_Window_Open() ++ ++ " Go back to the original window, if Tlist_GainFocus_On_ToggleOpen is not ++ " set ++ if !g:Tlist_GainFocus_On_ToggleOpen ++ call s:Tlist_Exe_Cmd_No_Acmds('wincmd p') ++ endif ++ ++ " Update the taglist menu ++ if g:Tlist_Show_Menu ++ call s:Tlist_Menu_Update_File(0) ++ endif ++endfunction ++ ++" Tlist_Process_Filelist ++" Process multiple files. Each filename is separated by "\n" ++" Returns the number of processed files ++function! s:Tlist_Process_Filelist(file_names) ++ let flist = a:file_names ++ ++ " Enable lazy screen updates ++ let old_lazyredraw = &lazyredraw ++ set lazyredraw ++ ++ " Keep track of the number of processed files ++ let fcnt = 0 ++ ++ " Process one file at a time ++ while flist != '' ++ let nl_idx = stridx(flist, "\n") ++ let one_file = strpart(flist, 0, nl_idx) ++ ++ " Remove the filename from the list ++ let flist = strpart(flist, nl_idx + 1) ++ ++ if one_file == '' ++ continue ++ endif ++ ++ " Skip directories ++ if isdirectory(one_file) ++ continue ++ endif ++ ++ let ftype = s:Tlist_Get_Filetype(one_file) ++ ++ echon "\r " ++ echon "\rProcessing tags for " . fnamemodify(one_file, ':p:t') ++ ++ let fcnt = fcnt + 1 ++ ++ call Tlist_Update_File(one_file, ftype) ++ endwhile ++ ++ " Clear the displayed informational messages ++ echon "\r " ++ ++ " Restore the previous state ++ let &lazyredraw = old_lazyredraw ++ ++ return fcnt ++endfunction ++ ++" Tlist_Process_Dir ++" Process the files in a directory matching the specified pattern ++function! s:Tlist_Process_Dir(dir_name, pat) ++ let flist = glob(a:dir_name . '/' . a:pat) . "\n" ++ ++ let fcnt = s:Tlist_Process_Filelist(flist) ++ ++ let len = strlen(a:dir_name) ++ if a:dir_name[len - 1] == '\' || a:dir_name[len - 1] == '/' ++ let glob_expr = a:dir_name . '*' ++ else ++ let glob_expr = a:dir_name . '/*' ++ endif ++ let all_files = glob(glob_expr) . "\n" ++ ++ while all_files != '' ++ let nl_idx = stridx(all_files, "\n") ++ let one_file = strpart(all_files, 0, nl_idx) ++ ++ let all_files = strpart(all_files, nl_idx + 1) ++ if one_file == '' ++ continue ++ endif ++ ++ " Skip non-directory names ++ if !isdirectory(one_file) ++ continue ++ endif ++ ++ echon "\r " ++ echon "\rProcessing files in directory " . fnamemodify(one_file, ':t') ++ let fcnt = fcnt + s:Tlist_Process_Dir(one_file, a:pat) ++ endwhile ++ ++ return fcnt ++endfunction ++ ++" Tlist_Add_Files_Recursive ++" Add files recursively from a directory ++function! s:Tlist_Add_Files_Recursive(dir, ...) ++ let dir_name = fnamemodify(a:dir, ':p') ++ if !isdirectory(dir_name) ++ call s:Tlist_Warning_Msg('Error: ' . dir_name . ' is not a directory') ++ return ++ endif ++ ++ if a:0 == 1 ++ " User specified file pattern ++ let pat = a:1 ++ else ++ " Default file pattern ++ let pat = '*' ++ endif ++ ++ echon "\r " ++ echon "\rProcessing files in directory " . fnamemodify(dir_name, ':t') ++ let fcnt = s:Tlist_Process_Dir(dir_name, pat) ++ ++ echon "\rAdded " . fcnt . " files to the taglist" ++endfunction ++ ++" Tlist_Add_Files ++" Add the specified list of files to the taglist ++function! s:Tlist_Add_Files(...) ++ let flist = '' ++ let i = 1 ++ ++ " Get all the files matching the file patterns supplied as argument ++ while i <= a:0 ++ let flist = flist . glob(a:{i}) . "\n" ++ let i = i + 1 ++ endwhile ++ ++ if flist == '' ++ call s:Tlist_Warning_Msg('Error: No matching files are found') ++ return ++ endif ++ ++ let fcnt = s:Tlist_Process_Filelist(flist) ++ echon "\rAdded " . fcnt . " files to the taglist" ++endfunction ++ ++" Tlist_Extract_Tagtype ++" Extract the tag type from the tag text ++function! s:Tlist_Extract_Tagtype(tag_line) ++ " The tag type is after the tag prototype field. The prototype field ++ " ends with the /;"\t string. We add 4 at the end to skip the characters ++ " in this special string.. ++ let start = strridx(a:tag_line, '/;"' . "\t") + 4 ++ let end = strridx(a:tag_line, 'line:') - 1 ++ let ttype = strpart(a:tag_line, start, end - start) ++ ++ return ttype ++endfunction ++ ++" Tlist_Extract_Tag_Scope ++" Extract the tag scope from the tag text ++function! s:Tlist_Extract_Tag_Scope(tag_line) ++ let start = strridx(a:tag_line, 'line:') ++ let end = strridx(a:tag_line, "\t") ++ if end <= start ++ return '' ++ endif ++ ++ let tag_scope = strpart(a:tag_line, end + 1) ++ let tag_scope = strpart(tag_scope, stridx(tag_scope, ':') + 1) ++ ++ return tag_scope ++endfunction ++ ++" Tlist_Refresh() ++" Refresh the taglist ++function! s:Tlist_Refresh() ++ call s:Tlist_Log_Msg('Tlist_Refresh (Skip_Refresh = ' . ++ \ s:Tlist_Skip_Refresh . ', ' . bufname('%') . ')') ++ " If we are entering the buffer from one of the taglist functions, then ++ " no need to refresh the taglist window again. ++ if s:Tlist_Skip_Refresh ++ " We still need to update the taglist menu ++ if g:Tlist_Show_Menu ++ call s:Tlist_Menu_Update_File(0) ++ endif ++ return ++ endif ++ ++ " If part of the winmanager plugin and not configured to process ++ " tags always and not configured to display the tags menu, then return ++ if (s:tlist_app_name == 'winmanager') && !g:Tlist_Process_File_Always ++ \ && !g:Tlist_Show_Menu ++ return ++ endif ++ ++ " Skip buffers with 'buftype' set to nofile, nowrite, quickfix or help ++ if &buftype != '' ++ return ++ endif ++ ++ let filename = fnamemodify(bufname('%'), ':p') ++ let ftype = &filetype ++ ++ " If the file doesn't support tag listing, skip it ++ if s:Tlist_Skip_File(filename, ftype) ++ return ++ endif ++ ++ let tlist_win = bufwinnr(g:TagList_title) ++ ++ " If the taglist window is not opened and not configured to process ++ " tags always and not displaying the tags menu, then return ++ if tlist_win == -1 && !g:Tlist_Process_File_Always && !g:Tlist_Show_Menu ++ return ++ endif ++ ++ let fidx = s:Tlist_Get_File_Index(filename) ++ if fidx == -1 ++ " Check whether this file is removed based on user request ++ " If it is, then don't display the tags for this file ++ if s:Tlist_User_Removed_File(filename) ++ return ++ endif ++ ++ " If the taglist should not be auto updated, then return ++ if !g:Tlist_Auto_Update ++ return ++ endif ++ endif ++ ++ let cur_lnum = line('.') ++ ++ if fidx == -1 ++ " Update the tags for the file ++ let fidx = s:Tlist_Process_File(filename, ftype) ++ else ++ let mtime = getftime(filename) ++ if s:tlist_{fidx}_mtime != mtime ++ " Invalidate the tags listed for this file ++ let s:tlist_{fidx}_valid = 0 ++ ++ " Update the taglist and the window ++ call Tlist_Update_File(filename, ftype) ++ ++ " Store the new file modification time ++ let s:tlist_{fidx}_mtime = mtime ++ endif ++ endif ++ ++ " Update the taglist window ++ if tlist_win != -1 ++ " Disable screen updates ++ let old_lazyredraw = &lazyredraw ++ set nolazyredraw ++ ++ " Save the current window number ++ let save_winnr = winnr() ++ ++ " Goto the taglist window ++ call s:Tlist_Window_Goto_Window() ++ ++ if !g:Tlist_Auto_Highlight_Tag || !g:Tlist_Highlight_Tag_On_BufEnter ++ " Save the cursor position ++ let save_line = line('.') ++ let save_col = col('.') ++ endif ++ ++ " Update the taglist window ++ call s:Tlist_Window_Refresh_File(filename, ftype) ++ ++ " Open the fold for the file ++ exe "silent! " . s:tlist_{fidx}_start . "," . ++ \ s:tlist_{fidx}_end . "foldopen!" ++ ++ if g:Tlist_Highlight_Tag_On_BufEnter && g:Tlist_Auto_Highlight_Tag ++ if g:Tlist_Show_One_File && s:tlist_cur_file_idx != fidx ++ " If displaying tags for only one file in the taglist ++ " window and about to display the tags for a new file, ++ " then center the current tag line for the new file ++ let center_tag_line = 1 ++ else ++ let center_tag_line = 0 ++ endif ++ ++ " Highlight the current tag ++ call s:Tlist_Window_Highlight_Tag(filename, cur_lnum, 1, center_tag_line) ++ else ++ " Restore the cursor position ++ if v:version >= 601 ++ call cursor(save_line, save_col) ++ else ++ exe save_line ++ exe 'normal! ' . save_col . '|' ++ endif ++ endif ++ ++ " Jump back to the original window ++ if save_winnr != winnr() ++ call s:Tlist_Exe_Cmd_No_Acmds(save_winnr . 'wincmd w') ++ endif ++ ++ " Restore screen updates ++ let &lazyredraw = old_lazyredraw ++ endif ++ ++ " Update the taglist menu ++ if g:Tlist_Show_Menu ++ call s:Tlist_Menu_Update_File(0) ++ endif ++endfunction ++ ++" Tlist_Change_Sort() ++" Change the sort order of the tag listing ++" caller == 'cmd', command used in the taglist window ++" caller == 'menu', taglist menu ++" action == 'toggle', toggle sort from name to order and vice versa ++" action == 'set', set the sort order to sort_type ++function! s:Tlist_Change_Sort(caller, action, sort_type) ++ call s:Tlist_Log_Msg('Tlist_Change_Sort (caller = ' . a:caller . ++ \ ', action = ' . a:action . ', sort_type = ' . a:sort_type . ')') ++ if a:caller == 'cmd' ++ let fidx = s:Tlist_Window_Get_File_Index_By_Linenum(line('.')) ++ if fidx == -1 ++ return ++ endif ++ ++ " Remove the previous highlighting ++ match none ++ elseif a:caller == 'menu' ++ let fidx = s:Tlist_Get_File_Index(fnamemodify(bufname('%'), ':p')) ++ if fidx == -1 ++ return ++ endif ++ endif ++ ++ if a:action == 'toggle' ++ let sort_type = s:tlist_{fidx}_sort_type ++ ++ " Toggle the sort order from 'name' to 'order' and vice versa ++ if sort_type == 'name' ++ let s:tlist_{fidx}_sort_type = 'order' ++ else ++ let s:tlist_{fidx}_sort_type = 'name' ++ endif ++ else ++ let s:tlist_{fidx}_sort_type = a:sort_type ++ endif ++ ++ " Invalidate the tags listed for this file ++ let s:tlist_{fidx}_valid = 0 ++ ++ if a:caller == 'cmd' ++ " Save the current line for later restoration ++ let curline = '\V\^' . getline('.') . '\$' ++ ++ call s:Tlist_Window_Refresh_File(s:tlist_{fidx}_filename, ++ \ s:tlist_{fidx}_filetype) ++ ++ exe s:tlist_{fidx}_start . ',' . s:tlist_{fidx}_end . 'foldopen!' ++ ++ " Go back to the cursor line before the tag list is sorted ++ call search(curline, 'w') ++ ++ call s:Tlist_Menu_Update_File(1) ++ else ++ call s:Tlist_Menu_Remove_File() ++ ++ call s:Tlist_Refresh() ++ endif ++endfunction ++ ++" Tlist_Update_Current_File() ++" Update taglist for the current buffer by regenerating the tag list ++" Contributed by WEN Guopeng. ++function! s:Tlist_Update_Current_File() ++ call s:Tlist_Log_Msg('Tlist_Update_Current_File()') ++ if winnr() == bufwinnr(g:TagList_title) ++ " In the taglist window. Update the current file ++ call s:Tlist_Window_Update_File() ++ else ++ " Not in the taglist window. Update the current buffer ++ let filename = fnamemodify(bufname('%'), ':p') ++ let fidx = s:Tlist_Get_File_Index(filename) ++ if fidx != -1 ++ let s:tlist_{fidx}_valid = 0 ++ endif ++ call Tlist_Update_File(filename, &filetype) ++ endif ++endfunction ++ ++" Tlist_Window_Update_File() ++" Update the tags displayed in the taglist window ++function! s:Tlist_Window_Update_File() ++ call s:Tlist_Log_Msg('Tlist_Window_Update_File()') ++ let fidx = s:Tlist_Window_Get_File_Index_By_Linenum(line('.')) ++ if fidx == -1 ++ return ++ endif ++ ++ " Remove the previous highlighting ++ match none ++ ++ " Save the current line for later restoration ++ let curline = '\V\^' . getline('.') . '\$' ++ ++ let s:tlist_{fidx}_valid = 0 ++ ++ " Update the taglist window ++ call s:Tlist_Window_Refresh_File(s:tlist_{fidx}_filename, ++ \ s:tlist_{fidx}_filetype) ++ ++ exe s:tlist_{fidx}_start . ',' . s:tlist_{fidx}_end . 'foldopen!' ++ ++ " Go back to the tag line before the list is updated ++ call search(curline, 'w') ++endfunction ++ ++" Tlist_Window_Get_Tag_Type_By_Linenum() ++" Return the tag type index for the specified line in the taglist window ++function! s:Tlist_Window_Get_Tag_Type_By_Linenum(fidx, lnum) ++ let ftype = s:tlist_{a:fidx}_filetype ++ ++ " Determine to which tag type the current line number belongs to using the ++ " tag type start line number and the number of tags in a tag type ++ let i = 1 ++ while i <= s:tlist_{ftype}_count ++ let ttype = s:tlist_{ftype}_{i}_name ++ let start_lnum = ++ \ s:tlist_{a:fidx}_start + s:tlist_{a:fidx}_{ttype}_offset ++ let end = start_lnum + s:tlist_{a:fidx}_{ttype}_count ++ if a:lnum >= start_lnum && a:lnum <= end ++ break ++ endif ++ let i = i + 1 ++ endwhile ++ ++ " Current line doesn't belong to any of the displayed tag types ++ if i > s:tlist_{ftype}_count ++ return '' ++ endif ++ ++ return ttype ++endfunction ++ ++" Tlist_Window_Get_Tag_Index() ++" Return the tag index for the specified line in the taglist window ++function! s:Tlist_Window_Get_Tag_Index(fidx, lnum) ++ let ttype = s:Tlist_Window_Get_Tag_Type_By_Linenum(a:fidx, a:lnum) ++ ++ " Current line doesn't belong to any of the displayed tag types ++ if ttype == '' ++ return 0 ++ endif ++ ++ " Compute the index into the displayed tags for the tag type ++ let ttype_lnum = s:tlist_{a:fidx}_start + s:tlist_{a:fidx}_{ttype}_offset ++ let tidx = a:lnum - ttype_lnum ++ if tidx == 0 ++ return 0 ++ endif ++ ++ " Get the corresponding tag line and return it ++ return s:tlist_{a:fidx}_{ttype}_{tidx} ++endfunction ++ ++" Tlist_Window_Highlight_Line ++" Highlight the current line ++function! s:Tlist_Window_Highlight_Line() ++ " Clear previously selected name ++ match none ++ ++ " Highlight the current line ++ if g:Tlist_Display_Prototype == 0 ++ let pat = '/\%' . line('.') . 'l\s\+\zs.*/' ++ else ++ let pat = '/\%' . line('.') . 'l.*/' ++ endif ++ ++ exe 'match TagListTagName ' . pat ++endfunction ++ ++" Tlist_Window_Open_File ++" Open the specified file in either a new window or an existing window ++" and place the cursor at the specified tag pattern ++function! s:Tlist_Window_Open_File(win_ctrl, filename, tagpat) ++ call s:Tlist_Log_Msg('Tlist_Window_Open_File (' . a:filename . ',' . ++ \ a:win_ctrl . ')') ++ let prev_Tlist_Skip_Refresh = s:Tlist_Skip_Refresh ++ let s:Tlist_Skip_Refresh = 1 ++ ++ if s:tlist_app_name == "winmanager" ++ " Let the winmanager edit the file ++ call WinManagerFileEdit(a:filename, a:win_ctrl == 'newwin') ++ else ++ ++ if a:win_ctrl == 'newtab' ++ " Create a new tab ++ exe 'tabnew ' . escape(a:filename, ' ') ++ " Open the taglist window in the new tab ++ call s:Tlist_Window_Open() ++ endif ++ ++ if a:win_ctrl == 'checktab' ++ " Check whether the file is present in any of the tabs. ++ " If the file is present in the current tab, then use the ++ " current tab. ++ if bufwinnr(a:filename) != -1 ++ let file_present_in_tab = 1 ++ let i = tabpagenr() ++ else ++ let i = 1 ++ let bnum = bufnr(a:filename) ++ let file_present_in_tab = 0 ++ while i <= tabpagenr('$') ++ if index(tabpagebuflist(i), bnum) != -1 ++ let file_present_in_tab = 1 ++ break ++ endif ++ let i += 1 ++ endwhile ++ endif ++ ++ if file_present_in_tab ++ " Goto the tab containing the file ++ exe 'tabnext ' . i ++ else ++ " Open a new tab ++ exe 'tabnew ' . escape(a:filename, ' ') ++ ++ " Open the taglist window ++ call s:Tlist_Window_Open() ++ endif ++ endif ++ ++ let winnum = -1 ++ if a:win_ctrl == 'prevwin' ++ " Open the file in the previous window, if it is usable ++ let cur_win = winnr() ++ wincmd p ++ if &buftype == '' && !&previewwindow ++ exe "edit " . escape(a:filename, ' ') ++ let winnum = winnr() ++ else ++ " Previous window is not usable ++ exe cur_win . 'wincmd w' ++ endif ++ endif ++ ++ " Goto the window containing the file. If the window is not there, open a ++ " new window ++ if winnum == -1 ++ let winnum = bufwinnr(a:filename) ++ endif ++ ++ if winnum == -1 ++ " Locate the previously used window for opening a file ++ let fwin_num = 0 ++ let first_usable_win = 0 ++ ++ let i = 1 ++ let bnum = winbufnr(i) ++ while bnum != -1 ++ if getwinvar(i, 'tlist_file_window') == 'yes' ++ let fwin_num = i ++ break ++ endif ++ if first_usable_win == 0 && ++ \ getbufvar(bnum, '&buftype') == '' && ++ \ !getwinvar(i, '&previewwindow') ++ " First non-taglist, non-plugin and non-preview window ++ let first_usable_win = i ++ endif ++ let i = i + 1 ++ let bnum = winbufnr(i) ++ endwhile ++ ++ " If a previously used window is not found, then use the first ++ " non-taglist window ++ if fwin_num == 0 ++ let fwin_num = first_usable_win ++ endif ++ ++ if fwin_num != 0 ++ " Jump to the file window ++ exe fwin_num . "wincmd w" ++ ++ " If the user asked to jump to the tag in a new window, then split ++ " the existing window into two. ++ if a:win_ctrl == 'newwin' ++ split ++ endif ++ exe "edit " . escape(a:filename, ' ') ++ else ++ " Open a new window ++ if g:Tlist_Use_Horiz_Window ++ exe 'leftabove split ' . escape(a:filename, ' ') ++ else ++ if winbufnr(2) == -1 ++ " Only the taglist window is present ++ if g:Tlist_Use_Right_Window ++ exe 'leftabove vertical split ' . ++ \ escape(a:filename, ' ') ++ else ++ exe 'rightbelow vertical split ' . ++ \ escape(a:filename, ' ') ++ endif ++ ++ " Go to the taglist window to change the window size to ++ " the user configured value ++ call s:Tlist_Exe_Cmd_No_Acmds('wincmd p') ++ if g:Tlist_Use_Horiz_Window ++ exe 'resize ' . g:Tlist_WinHeight ++ else ++ exe 'vertical resize ' . g:Tlist_WinWidth ++ endif ++ " Go back to the file window ++ call s:Tlist_Exe_Cmd_No_Acmds('wincmd p') ++ else ++ " A plugin or help window is also present ++ wincmd w ++ exe 'leftabove split ' . escape(a:filename, ' ') ++ endif ++ endif ++ endif ++ " Mark the window, so that it can be reused. ++ call s:Tlist_Window_Mark_File_Window() ++ else ++ if v:version >= 700 ++ " If the file is opened in more than one window, then check ++ " whether the last accessed window has the selected file. ++ " If it does, then use that window. ++ let lastwin_bufnum = winbufnr(winnr('#')) ++ if bufnr(a:filename) == lastwin_bufnum ++ let winnum = winnr('#') ++ endif ++ endif ++ exe winnum . 'wincmd w' ++ ++ " If the user asked to jump to the tag in a new window, then split the ++ " existing window into two. ++ if a:win_ctrl == 'newwin' ++ split ++ endif ++ endif ++ endif ++ ++ " Jump to the tag ++ if a:tagpat != '' ++ " Add the current cursor position to the jump list, so that user can ++ " jump back using the ' and ` marks. ++ mark ' ++ silent call search(a:tagpat, 'w') ++ ++ " Bring the line to the middle of the window ++ normal! z. ++ ++ " If the line is inside a fold, open the fold ++ if foldclosed('.') != -1 ++ .foldopen ++ endif ++ endif ++ ++ " If the user selects to preview the tag then jump back to the ++ " taglist window ++ if a:win_ctrl == 'preview' ++ " Go back to the taglist window ++ let winnum = bufwinnr(g:TagList_title) ++ exe winnum . 'wincmd w' ++ else ++ " If the user has selected to close the taglist window, when a ++ " tag is selected, close the taglist window ++ if g:Tlist_Close_On_Select ++ call s:Tlist_Window_Goto_Window() ++ close ++ ++ " Go back to the window displaying the selected file ++ let wnum = bufwinnr(a:filename) ++ if wnum != -1 && wnum != winnr() ++ call s:Tlist_Exe_Cmd_No_Acmds(wnum . 'wincmd w') ++ endif ++ endif ++ endif ++ ++ let s:Tlist_Skip_Refresh = prev_Tlist_Skip_Refresh ++endfunction ++ ++" Tlist_Window_Jump_To_Tag() ++" Jump to the location of the current tag ++" win_ctrl == useopen - Reuse the existing file window ++" win_ctrl == newwin - Open a new window ++" win_ctrl == preview - Preview the tag ++" win_ctrl == prevwin - Open in previous window ++" win_ctrl == newtab - Open in new tab ++function! s:Tlist_Window_Jump_To_Tag(win_ctrl) ++ call s:Tlist_Log_Msg('Tlist_Window_Jump_To_Tag(' . a:win_ctrl . ')') ++ " Do not process comment lines and empty lines ++ let curline = getline('.') ++ if curline =~ '^\s*$' || curline[0] == '"' ++ return ++ endif ++ ++ " If inside a closed fold, then use the first line of the fold ++ " and jump to the file. ++ let lnum = foldclosed('.') ++ if lnum == -1 ++ " Jump to the selected tag or file ++ let lnum = line('.') ++ else ++ " Open the closed fold ++ .foldopen! ++ endif ++ ++ let fidx = s:Tlist_Window_Get_File_Index_By_Linenum(lnum) ++ if fidx == -1 ++ return ++ endif ++ ++ " Get the tag output for the current tag ++ let tidx = s:Tlist_Window_Get_Tag_Index(fidx, lnum) ++ if tidx != 0 ++ let tagpat = s:Tlist_Get_Tag_SearchPat(fidx, tidx) ++ ++ " Highlight the tagline ++ call s:Tlist_Window_Highlight_Line() ++ else ++ " Selected a line which is not a tag name. Just edit the file ++ let tagpat = '' ++ endif ++ ++ call s:Tlist_Window_Open_File(a:win_ctrl, s:tlist_{fidx}_filename, tagpat) ++endfunction ++ ++" Tlist_Window_Show_Info() ++" Display information about the entry under the cursor ++function! s:Tlist_Window_Show_Info() ++ call s:Tlist_Log_Msg('Tlist_Window_Show_Info()') ++ ++ " Clear the previously displayed line ++ echo ++ ++ " Do not process comment lines and empty lines ++ let curline = getline('.') ++ if curline =~ '^\s*$' || curline[0] == '"' ++ return ++ endif ++ ++ " If inside a fold, then don't display the prototype ++ if foldclosed('.') != -1 ++ return ++ endif ++ ++ let lnum = line('.') ++ ++ " Get the file index ++ let fidx = s:Tlist_Window_Get_File_Index_By_Linenum(lnum) ++ if fidx == -1 ++ return ++ endif ++ ++ if lnum == s:tlist_{fidx}_start ++ " Cursor is on a file name ++ let fname = s:tlist_{fidx}_filename ++ if strlen(fname) > 50 ++ let fname = fnamemodify(fname, ':t') ++ endif ++ echo fname . ', Filetype=' . s:tlist_{fidx}_filetype . ++ \ ', Tag count=' . s:tlist_{fidx}_tag_count ++ return ++ endif ++ ++ " Get the tag output line for the current tag ++ let tidx = s:Tlist_Window_Get_Tag_Index(fidx, lnum) ++ if tidx == 0 ++ " Cursor is on a tag type ++ let ttype = s:Tlist_Window_Get_Tag_Type_By_Linenum(fidx, lnum) ++ if ttype == '' ++ return ++ endif ++ ++ let ttype_name = '' ++ ++ let ftype = s:tlist_{fidx}_filetype ++ let i = 1 ++ while i <= s:tlist_{ftype}_count ++ if ttype == s:tlist_{ftype}_{i}_name ++ let ttype_name = s:tlist_{ftype}_{i}_fullname ++ break ++ endif ++ let i = i + 1 ++ endwhile ++ ++ echo 'Tag type=' . ttype_name . ++ \ ', Tag count=' . s:tlist_{fidx}_{ttype}_count ++ return ++ endif ++ ++ " Get the tag search pattern and display it ++ echo s:Tlist_Get_Tag_Prototype(fidx, tidx) ++endfunction ++ ++" Tlist_Find_Nearest_Tag_Idx ++" Find the tag idx nearest to the supplied line number ++" Returns -1, if a tag couldn't be found for the specified line number ++function! s:Tlist_Find_Nearest_Tag_Idx(fidx, linenum) ++ let sort_type = s:tlist_{a:fidx}_sort_type ++ ++ let left = 1 ++ let right = s:tlist_{a:fidx}_tag_count ++ ++ if sort_type == 'order' ++ " Tags sorted by order, use a binary search. ++ " The idea behind this function is taken from the ctags.vim script (by ++ " Alexey Marinichev) available at the Vim online website. ++ ++ " If the current line is the less than the first tag, then no need to ++ " search ++ let first_lnum = s:Tlist_Get_Tag_Linenum(a:fidx, 1) ++ ++ if a:linenum < first_lnum ++ return -1 ++ endif ++ ++ while left < right ++ let middle = (right + left + 1) / 2 ++ let middle_lnum = s:Tlist_Get_Tag_Linenum(a:fidx, middle) ++ ++ if middle_lnum == a:linenum ++ let left = middle ++ break ++ endif ++ ++ if middle_lnum > a:linenum ++ let right = middle - 1 ++ else ++ let left = middle ++ endif ++ endwhile ++ else ++ " Tags sorted by name, use a linear search. (contributed by Dave ++ " Eggum). ++ " Look for a tag with a line number less than or equal to the supplied ++ " line number. If multiple tags are found, then use the tag with the ++ " line number closest to the supplied line number. IOW, use the tag ++ " with the highest line number. ++ let closest_lnum = 0 ++ let final_left = 0 ++ while left <= right ++ let lnum = s:Tlist_Get_Tag_Linenum(a:fidx, left) ++ ++ if lnum < a:linenum && lnum > closest_lnum ++ let closest_lnum = lnum ++ let final_left = left ++ elseif lnum == a:linenum ++ let closest_lnum = lnum ++ let final_left = left ++ break ++ else ++ let left = left + 1 ++ endif ++ endwhile ++ if closest_lnum == 0 ++ return -1 ++ endif ++ if left >= right ++ let left = final_left ++ endif ++ endif ++ ++ return left ++endfunction ++ ++" Tlist_Window_Highlight_Tag() ++" Highlight the current tag ++" cntx == 1, Called by the taglist plugin itself ++" cntx == 2, Forced by the user through the TlistHighlightTag command ++" center = 1, move the tag line to the center of the taglist window ++function! s:Tlist_Window_Highlight_Tag(filename, cur_lnum, cntx, center) ++ " Highlight the current tag only if the user configured the ++ " taglist plugin to do so or if the user explictly invoked the ++ " command to highlight the current tag. ++ if !g:Tlist_Auto_Highlight_Tag && a:cntx == 1 ++ return ++ endif ++ ++ if a:filename == '' ++ return ++ endif ++ ++ " Make sure the taglist window is present ++ let winnum = bufwinnr(g:TagList_title) ++ if winnum == -1 ++ call s:Tlist_Warning_Msg('Error: Taglist window is not open') ++ return ++ endif ++ ++ let fidx = s:Tlist_Get_File_Index(a:filename) ++ if fidx == -1 ++ return ++ endif ++ ++ " If the file is currently not displayed in the taglist window, then retrn ++ if !s:tlist_{fidx}_visible ++ return ++ endif ++ ++ " If there are no tags for this file, then no need to proceed further ++ if s:tlist_{fidx}_tag_count == 0 ++ return ++ endif ++ ++ " Ignore all autocommands ++ let old_ei = &eventignore ++ set eventignore=all ++ ++ " Save the original window number ++ let org_winnr = winnr() ++ ++ if org_winnr == winnum ++ let in_taglist_window = 1 ++ else ++ let in_taglist_window = 0 ++ endif ++ ++ " Go to the taglist window ++ if !in_taglist_window ++ exe winnum . 'wincmd w' ++ endif ++ ++ " Clear previously selected name ++ match none ++ ++ let tidx = s:Tlist_Find_Nearest_Tag_Idx(fidx, a:cur_lnum) ++ if tidx == -1 ++ " Make sure the current tag line is visible in the taglist window. ++ " Calling the winline() function makes the line visible. Don't know ++ " of a better way to achieve this. ++ let lnum = line('.') ++ ++ if lnum < s:tlist_{fidx}_start || lnum > s:tlist_{fidx}_end ++ " Move the cursor to the beginning of the file ++ exe s:tlist_{fidx}_start ++ endif ++ ++ if foldclosed('.') != -1 ++ .foldopen ++ endif ++ ++ call winline() ++ ++ if !in_taglist_window ++ exe org_winnr . 'wincmd w' ++ endif ++ ++ " Restore the autocommands ++ let &eventignore = old_ei ++ return ++ endif ++ ++ " Extract the tag type ++ let ttype = s:Tlist_Get_Tag_Type_By_Tag(fidx, tidx) ++ ++ " Compute the line number ++ " Start of file + Start of tag type + offset ++ let lnum = s:tlist_{fidx}_start + s:tlist_{fidx}_{ttype}_offset + ++ \ s:tlist_{fidx}_{tidx}_ttype_idx ++ ++ " Goto the line containing the tag ++ exe lnum ++ ++ " Open the fold ++ if foldclosed('.') != -1 ++ .foldopen ++ endif ++ ++ if a:center ++ " Move the tag line to the center of the taglist window ++ normal! z. ++ else ++ " Make sure the current tag line is visible in the taglist window. ++ " Calling the winline() function makes the line visible. Don't know ++ " of a better way to achieve this. ++ call winline() ++ endif ++ ++ " Highlight the tag name ++ call s:Tlist_Window_Highlight_Line() ++ ++ " Go back to the original window ++ if !in_taglist_window ++ exe org_winnr . 'wincmd w' ++ endif ++ ++ " Restore the autocommands ++ let &eventignore = old_ei ++ return ++endfunction ++ ++" Tlist_Get_Tag_Prototype_By_Line ++" Get the prototype for the tag on or before the specified line number in the ++" current buffer ++function! Tlist_Get_Tag_Prototype_By_Line(...) ++ if a:0 == 0 ++ " Arguments are not supplied. Use the current buffer name ++ " and line number ++ let filename = bufname('%') ++ let linenr = line('.') ++ elseif a:0 == 2 ++ " Filename and line number are specified ++ let filename = a:1 ++ let linenr = a:2 ++ if linenr !~ '\d\+' ++ " Invalid line number ++ return "" ++ endif ++ else ++ " Sufficient arguments are not supplied ++ let msg = 'Usage: Tlist_Get_Tag_Prototype_By_Line ' . ++ \ '' ++ call s:Tlist_Warning_Msg(msg) ++ return "" ++ endif ++ ++ " Expand the file to a fully qualified name ++ let filename = fnamemodify(filename, ':p') ++ if filename == '' ++ return "" ++ endif ++ ++ let fidx = s:Tlist_Get_File_Index(filename) ++ if fidx == -1 ++ return "" ++ endif ++ ++ " If there are no tags for this file, then no need to proceed further ++ if s:tlist_{fidx}_tag_count == 0 ++ return "" ++ endif ++ ++ " Get the tag text using the line number ++ let tidx = s:Tlist_Find_Nearest_Tag_Idx(fidx, linenr) ++ if tidx == -1 ++ return "" ++ endif ++ ++ return s:Tlist_Get_Tag_Prototype(fidx, tidx) ++endfunction ++ ++" Tlist_Get_Tagname_By_Line ++" Get the tag name on or before the specified line number in the ++" current buffer ++function! Tlist_Get_Tagname_By_Line(...) ++ if a:0 == 0 ++ " Arguments are not supplied. Use the current buffer name ++ " and line number ++ let filename = bufname('%') ++ let linenr = line('.') ++ elseif a:0 == 2 ++ " Filename and line number are specified ++ let filename = a:1 ++ let linenr = a:2 ++ if linenr !~ '\d\+' ++ " Invalid line number ++ return "" ++ endif ++ else ++ " Sufficient arguments are not supplied ++ let msg = 'Usage: Tlist_Get_Tagname_By_Line ' ++ call s:Tlist_Warning_Msg(msg) ++ return "" ++ endif ++ ++ " Make sure the current file has a name ++ let filename = fnamemodify(filename, ':p') ++ if filename == '' ++ return "" ++ endif ++ ++ let fidx = s:Tlist_Get_File_Index(filename) ++ if fidx == -1 ++ return "" ++ endif ++ ++ " If there are no tags for this file, then no need to proceed further ++ if s:tlist_{fidx}_tag_count == 0 ++ return "" ++ endif ++ ++ " Get the tag name using the line number ++ let tidx = s:Tlist_Find_Nearest_Tag_Idx(fidx, linenr) ++ if tidx == -1 ++ return "" ++ endif ++ ++ return s:tlist_{fidx}_{tidx}_tag_name ++endfunction ++ ++" Tlist_Window_Move_To_File ++" Move the cursor to the beginning of the current file or the next file ++" or the previous file in the taglist window ++" dir == -1, move to start of current or previous function ++" dir == 1, move to start of next function ++function! s:Tlist_Window_Move_To_File(dir) ++ if foldlevel('.') == 0 ++ " Cursor is on a non-folded line (it is not in any of the files) ++ " Move it to a folded line ++ if a:dir == -1 ++ normal! zk ++ else ++ " While moving down to the start of the next fold, ++ " no need to do go to the start of the next file. ++ normal! zj ++ return ++ endif ++ endif ++ ++ let fidx = s:Tlist_Window_Get_File_Index_By_Linenum(line('.')) ++ if fidx == -1 ++ return ++ endif ++ ++ let cur_lnum = line('.') ++ ++ if a:dir == -1 ++ if cur_lnum > s:tlist_{fidx}_start ++ " Move to the beginning of the current file ++ exe s:tlist_{fidx}_start ++ return ++ endif ++ ++ if fidx != 0 ++ " Move to the beginning of the previous file ++ let fidx = fidx - 1 ++ else ++ " Cursor is at the first file, wrap around to the last file ++ let fidx = s:tlist_file_count - 1 ++ endif ++ ++ exe s:tlist_{fidx}_start ++ return ++ else ++ " Move to the beginning of the next file ++ let fidx = fidx + 1 ++ ++ if fidx >= s:tlist_file_count ++ " Cursor is at the last file, wrap around to the first file ++ let fidx = 0 ++ endif ++ ++ if s:tlist_{fidx}_start != 0 ++ exe s:tlist_{fidx}_start ++ endif ++ return ++ endif ++endfunction ++ ++" Tlist_Session_Load ++" Load a taglist session (information about all the displayed files ++" and the tags) from the specified file ++function! s:Tlist_Session_Load(...) ++ if a:0 == 0 || a:1 == '' ++ call s:Tlist_Warning_Msg('Usage: TlistSessionLoad ') ++ return ++ endif ++ ++ let sessionfile = a:1 ++ ++ if !filereadable(sessionfile) ++ let msg = 'Taglist: Error - Unable to open file ' . sessionfile ++ call s:Tlist_Warning_Msg(msg) ++ return ++ endif ++ ++ " Mark the current window as the file window ++ call s:Tlist_Window_Mark_File_Window() ++ ++ " Source the session file ++ exe 'source ' . sessionfile ++ ++ let new_file_count = g:tlist_file_count ++ unlet! g:tlist_file_count ++ ++ let i = 0 ++ while i < new_file_count ++ let ftype = g:tlist_{i}_filetype ++ unlet! g:tlist_{i}_filetype ++ ++ if !exists('s:tlist_' . ftype . '_count') ++ if s:Tlist_FileType_Init(ftype) == 0 ++ let i = i + 1 ++ continue ++ endif ++ endif ++ ++ let fname = g:tlist_{i}_filename ++ unlet! g:tlist_{i}_filename ++ ++ let fidx = s:Tlist_Get_File_Index(fname) ++ if fidx != -1 ++ let s:tlist_{fidx}_visible = 0 ++ let i = i + 1 ++ continue ++ else ++ " As we are loading the tags from the session file, if this ++ " file was previously deleted by the user, now we need to ++ " add it back. So remove the file from the deleted list. ++ call s:Tlist_Update_Remove_List(fname, 0) ++ endif ++ ++ let fidx = s:Tlist_Init_File(fname, ftype) ++ ++ let s:tlist_{fidx}_filename = fname ++ ++ let s:tlist_{fidx}_sort_type = g:tlist_{i}_sort_type ++ unlet! g:tlist_{i}_sort_type ++ ++ let s:tlist_{fidx}_filetype = ftype ++ let s:tlist_{fidx}_mtime = getftime(fname) ++ ++ let s:tlist_{fidx}_start = 0 ++ let s:tlist_{fidx}_end = 0 ++ ++ let s:tlist_{fidx}_valid = 1 ++ ++ let s:tlist_{fidx}_tag_count = g:tlist_{i}_tag_count ++ unlet! g:tlist_{i}_tag_count ++ ++ let j = 1 ++ while j <= s:tlist_{fidx}_tag_count ++ let s:tlist_{fidx}_{j}_tag = g:tlist_{i}_{j}_tag ++ let s:tlist_{fidx}_{j}_tag_name = g:tlist_{i}_{j}_tag_name ++ let s:tlist_{fidx}_{j}_ttype_idx = g:tlist_{i}_{j}_ttype_idx ++ unlet! g:tlist_{i}_{j}_tag ++ unlet! g:tlist_{i}_{j}_tag_name ++ unlet! g:tlist_{i}_{j}_ttype_idx ++ let j = j + 1 ++ endwhile ++ ++ let j = 1 ++ while j <= s:tlist_{ftype}_count ++ let ttype = s:tlist_{ftype}_{j}_name ++ ++ if exists('g:tlist_' . i . '_' . ttype) ++ let s:tlist_{fidx}_{ttype} = g:tlist_{i}_{ttype} ++ unlet! g:tlist_{i}_{ttype} ++ let s:tlist_{fidx}_{ttype}_offset = 0 ++ let s:tlist_{fidx}_{ttype}_count = g:tlist_{i}_{ttype}_count ++ unlet! g:tlist_{i}_{ttype}_count ++ ++ let k = 1 ++ while k <= s:tlist_{fidx}_{ttype}_count ++ let s:tlist_{fidx}_{ttype}_{k} = g:tlist_{i}_{ttype}_{k} ++ unlet! g:tlist_{i}_{ttype}_{k} ++ let k = k + 1 ++ endwhile ++ else ++ let s:tlist_{fidx}_{ttype} = '' ++ let s:tlist_{fidx}_{ttype}_offset = 0 ++ let s:tlist_{fidx}_{ttype}_count = 0 ++ endif ++ ++ let j = j + 1 ++ endwhile ++ ++ let i = i + 1 ++ endwhile ++ ++ " If the taglist window is open, then update it ++ let winnum = bufwinnr(g:TagList_title) ++ if winnum != -1 ++ let save_winnr = winnr() ++ ++ " Goto the taglist window ++ call s:Tlist_Window_Goto_Window() ++ ++ " Refresh the taglist window ++ call s:Tlist_Window_Refresh() ++ ++ " Go back to the original window ++ if save_winnr != winnr() ++ call s:Tlist_Exe_Cmd_No_Acmds('wincmd p') ++ endif ++ endif ++endfunction ++ ++" Tlist_Session_Save ++" Save a taglist session (information about all the displayed files ++" and the tags) into the specified file ++function! s:Tlist_Session_Save(...) ++ if a:0 == 0 || a:1 == '' ++ call s:Tlist_Warning_Msg('Usage: TlistSessionSave ') ++ return ++ endif ++ ++ let sessionfile = a:1 ++ ++ if s:tlist_file_count == 0 ++ " There is nothing to save ++ call s:Tlist_Warning_Msg('Warning: Taglist is empty. Nothing to save.') ++ return ++ endif ++ ++ if filereadable(sessionfile) ++ let ans = input('Do you want to overwrite ' . sessionfile . ' (Y/N)?') ++ if ans !=? 'y' ++ return ++ endif ++ ++ echo "\n" ++ endif ++ ++ let old_verbose = &verbose ++ set verbose&vim ++ ++ exe 'redir! > ' . sessionfile ++ ++ silent! echo '" Taglist session file. This file is auto-generated.' ++ silent! echo '" File information' ++ silent! echo 'let tlist_file_count = ' . s:tlist_file_count ++ ++ let i = 0 ++ ++ while i < s:tlist_file_count ++ " Store information about the file ++ silent! echo 'let tlist_' . i . "_filename = '" . ++ \ s:tlist_{i}_filename . "'" ++ silent! echo 'let tlist_' . i . '_sort_type = "' . ++ \ s:tlist_{i}_sort_type . '"' ++ silent! echo 'let tlist_' . i . '_filetype = "' . ++ \ s:tlist_{i}_filetype . '"' ++ silent! echo 'let tlist_' . i . '_tag_count = ' . ++ \ s:tlist_{i}_tag_count ++ " Store information about all the tags ++ let j = 1 ++ while j <= s:tlist_{i}_tag_count ++ let txt = escape(s:tlist_{i}_{j}_tag, '"\\') ++ silent! echo 'let tlist_' . i . '_' . j . '_tag = "' . txt . '"' ++ silent! echo 'let tlist_' . i . '_' . j . '_tag_name = "' . ++ \ s:tlist_{i}_{j}_tag_name . '"' ++ silent! echo 'let tlist_' . i . '_' . j . '_ttype_idx' . ' = ' . ++ \ s:tlist_{i}_{j}_ttype_idx ++ let j = j + 1 ++ endwhile ++ ++ " Store information about all the tags grouped by their type ++ let ftype = s:tlist_{i}_filetype ++ let j = 1 ++ while j <= s:tlist_{ftype}_count ++ let ttype = s:tlist_{ftype}_{j}_name ++ if s:tlist_{i}_{ttype}_count != 0 ++ let txt = substitute(s:tlist_{i}_{ttype}, "\n", "\\\\n", 'g') ++ silent! echo 'let tlist_' . i . '_' . ttype . ' = "' . ++ \ txt . '"' ++ silent! echo 'let tlist_' . i . '_' . ttype . '_count = ' . ++ \ s:tlist_{i}_{ttype}_count ++ let k = 1 ++ while k <= s:tlist_{i}_{ttype}_count ++ silent! echo 'let tlist_' . i . '_' . ttype . '_' . k . ++ \ ' = ' . s:tlist_{i}_{ttype}_{k} ++ let k = k + 1 ++ endwhile ++ endif ++ let j = j + 1 ++ endwhile ++ ++ silent! echo ++ ++ let i = i + 1 ++ endwhile ++ ++ redir END ++ ++ let &verbose = old_verbose ++endfunction ++ ++" Tlist_Buffer_Removed ++" A buffer is removed from the Vim buffer list. Remove the tags defined ++" for that file ++function! s:Tlist_Buffer_Removed(filename) ++ call s:Tlist_Log_Msg('Tlist_Buffer_Removed (' . a:filename . ')') ++ ++ " Make sure a valid filename is supplied ++ if a:filename == '' ++ return ++ endif ++ ++ " Get tag list index of the specified file ++ let fidx = s:Tlist_Get_File_Index(a:filename) ++ if fidx == -1 ++ " File not present in the taglist ++ return ++ endif ++ ++ " Remove the file from the list ++ call s:Tlist_Remove_File(fidx, 0) ++endfunction ++ ++" When a buffer is deleted, remove the file from the taglist ++autocmd BufDelete * silent call s:Tlist_Buffer_Removed(expand(':p')) ++ ++" Tlist_Window_Open_File_Fold ++" Open the fold for the specified file and close the fold for all the ++" other files ++function! s:Tlist_Window_Open_File_Fold(acmd_file) ++ call s:Tlist_Log_Msg('Tlist_Window_Open_File_Fold (' . a:acmd_file . ')') ++ ++ " Make sure the taglist window is present ++ let winnum = bufwinnr(g:TagList_title) ++ if winnum == -1 ++ call s:Tlist_Warning_Msg('Taglist: Error - Taglist window is not open') ++ return ++ endif ++ ++ " Save the original window number ++ let org_winnr = winnr() ++ if org_winnr == winnum ++ let in_taglist_window = 1 ++ else ++ let in_taglist_window = 0 ++ endif ++ ++ if in_taglist_window ++ " When entering the taglist window, no need to update the folds ++ return ++ endif ++ ++ " Go to the taglist window ++ if !in_taglist_window ++ call s:Tlist_Exe_Cmd_No_Acmds(winnum . 'wincmd w') ++ endif ++ ++ " Close all the folds ++ silent! %foldclose ++ ++ " Get tag list index of the specified file ++ let fname = fnamemodify(a:acmd_file, ":p") ++ if filereadable(fname) ++ let fidx = s:Tlist_Get_File_Index(fname) ++ if fidx != -1 ++ " Open the fold for the file ++ exe "silent! " . s:tlist_{fidx}_start . "," . ++ \ s:tlist_{fidx}_end . "foldopen" ++ endif ++ endif ++ ++ " Go back to the original window ++ if !in_taglist_window ++ call s:Tlist_Exe_Cmd_No_Acmds(org_winnr . 'wincmd w') ++ endif ++endfunction ++ ++" Tlist_Window_Check_Auto_Open ++" Open the taglist window automatically on Vim startup. ++" Open the window only when files present in any of the Vim windows support ++" tags. ++function! s:Tlist_Window_Check_Auto_Open() ++ let open_window = 0 ++ ++ let i = 1 ++ let buf_num = winbufnr(i) ++ while buf_num != -1 ++ let filename = fnamemodify(bufname(buf_num), ':p') ++ if !s:Tlist_Skip_File(filename, getbufvar(buf_num, '&filetype')) ++ let open_window = 1 ++ break ++ endif ++ let i = i + 1 ++ let buf_num = winbufnr(i) ++ endwhile ++ ++ if open_window ++ call s:Tlist_Window_Toggle() ++ endif ++endfunction ++ ++function! s:Tlist_Menu_Add_Base_Menu() ++ call s:Tlist_Log_Msg('Adding the base menu') ++ ++ " Add the menu ++ anoremenu T&ags.Refresh\ menu :call Tlist_Menu_Refresh() ++ anoremenu T&ags.Sort\ menu\ by.Name ++ \ :call Tlist_Change_Sort('menu', 'set', 'name') ++ anoremenu T&ags.Sort\ menu\ by.Order ++ \ :call Tlist_Change_Sort('menu', 'set', 'order') ++ anoremenu T&ags.-SEP1- : ++ ++ if &mousemodel =~ 'popup' ++ anoremenu PopUp.T&ags.Refresh\ menu ++ \ :call Tlist_Menu_Refresh() ++ anoremenu PopUp.T&ags.Sort\ menu\ by.Name ++ \ :call Tlist_Change_Sort('menu', 'set', 'name') ++ anoremenu PopUp.T&ags.Sort\ menu\ by.Order ++ \ :call Tlist_Change_Sort('menu', 'set', 'order') ++ anoremenu PopUp.T&ags.-SEP1- : ++ endif ++endfunction ++ ++let s:menu_char_prefix = ++ \ '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' ++ ++" Tlist_Menu_Get_Tag_Type_Cmd ++" Get the menu command for the specified tag type ++" fidx - File type index ++" ftype - File Type ++" add_ttype_name - To add or not to add the tag type name to the menu entries ++" ttype_idx - Tag type index ++function! s:Tlist_Menu_Get_Tag_Type_Cmd(fidx, ftype, add_ttype_name, ttype_idx) ++ " Curly brace variable name optimization ++ let ftype_ttype_idx = a:ftype . '_' . a:ttype_idx ++ ++ let ttype = s:tlist_{ftype_ttype_idx}_name ++ if a:add_ttype_name ++ " If the tag type name contains space characters, escape it. This ++ " will be used to create the menu entries. ++ let ttype_fullname = escape(s:tlist_{ftype_ttype_idx}_fullname, ' ') ++ endif ++ ++ " Curly brace variable name optimization ++ let fidx_ttype = a:fidx . '_' . ttype ++ ++ " Number of tag entries for this tag type ++ let tcnt = s:tlist_{fidx_ttype}_count ++ if tcnt == 0 " No entries for this tag type ++ return '' ++ endif ++ ++ let mcmd = '' ++ ++ " Create the menu items for the tags. ++ " Depending on the number of tags of this type, split the menu into ++ " multiple sub-menus, if needed. ++ if tcnt > g:Tlist_Max_Submenu_Items ++ let j = 1 ++ while j <= tcnt ++ let final_index = j + g:Tlist_Max_Submenu_Items - 1 ++ if final_index > tcnt ++ let final_index = tcnt ++ endif ++ ++ " Extract the first and last tag name and form the ++ " sub-menu name ++ let tidx = s:tlist_{fidx_ttype}_{j} ++ let first_tag = s:tlist_{a:fidx}_{tidx}_tag_name ++ ++ let tidx = s:tlist_{fidx_ttype}_{final_index} ++ let last_tag = s:tlist_{a:fidx}_{tidx}_tag_name ++ ++ " Truncate the names, if they are greater than the ++ " max length ++ let first_tag = strpart(first_tag, 0, g:Tlist_Max_Tag_Length) ++ let last_tag = strpart(last_tag, 0, g:Tlist_Max_Tag_Length) ++ ++ " Form the menu command prefix ++ let m_prefix = 'anoremenu T\&ags.' ++ if a:add_ttype_name ++ let m_prefix = m_prefix . ttype_fullname . '.' ++ endif ++ let m_prefix = m_prefix . first_tag . '\.\.\.' . last_tag . '.' ++ ++ " Character prefix used to number the menu items (hotkey) ++ let m_prefix_idx = 0 ++ ++ while j <= final_index ++ let tidx = s:tlist_{fidx_ttype}_{j} ++ ++ let tname = s:tlist_{a:fidx}_{tidx}_tag_name ++ ++ let mcmd = mcmd . m_prefix . '\&' . ++ \ s:menu_char_prefix[m_prefix_idx] . '\.' . ++ \ tname . ' :call Tlist_Menu_Jump_To_Tag(' . ++ \ tidx . ')|' ++ ++ let m_prefix_idx = m_prefix_idx + 1 ++ let j = j + 1 ++ endwhile ++ endwhile ++ else ++ " Character prefix used to number the menu items (hotkey) ++ let m_prefix_idx = 0 ++ ++ let m_prefix = 'anoremenu T\&ags.' ++ if a:add_ttype_name ++ let m_prefix = m_prefix . ttype_fullname . '.' ++ endif ++ let j = 1 ++ while j <= tcnt ++ let tidx = s:tlist_{fidx_ttype}_{j} ++ ++ let tname = s:tlist_{a:fidx}_{tidx}_tag_name ++ ++ let mcmd = mcmd . m_prefix . '\&' . ++ \ s:menu_char_prefix[m_prefix_idx] . '\.' . ++ \ tname . ' :call Tlist_Menu_Jump_To_Tag(' . tidx ++ \ . ')|' ++ ++ let m_prefix_idx = m_prefix_idx + 1 ++ let j = j + 1 ++ endwhile ++ endif ++ ++ return mcmd ++endfunction ++ ++" Update the taglist menu with the tags for the specified file ++function! s:Tlist_Menu_File_Refresh(fidx) ++ call s:Tlist_Log_Msg('Refreshing the tag menu for ' . s:tlist_{a:fidx}_filename) ++ " The 'B' flag is needed in the 'cpoptions' option ++ let old_cpoptions = &cpoptions ++ set cpoptions&vim ++ ++ exe s:tlist_{a:fidx}_menu_cmd ++ ++ " Update the popup menu (if enabled) ++ if &mousemodel =~ 'popup' ++ let cmd = substitute(s:tlist_{a:fidx}_menu_cmd, ' T\\&ags\.', ++ \ ' PopUp.T\\\&ags.', "g") ++ exe cmd ++ endif ++ ++ " The taglist menu is not empty now ++ let s:tlist_menu_empty = 0 ++ ++ " Restore the 'cpoptions' settings ++ let &cpoptions = old_cpoptions ++endfunction ++ ++" Tlist_Menu_Update_File ++" Add the taglist menu ++function! s:Tlist_Menu_Update_File(clear_menu) ++ if !has('gui_running') ++ " Not running in GUI mode ++ return ++ endif ++ ++ call s:Tlist_Log_Msg('Updating the tag menu, clear_menu = ' . a:clear_menu) ++ ++ " Remove the tags menu ++ if a:clear_menu ++ call s:Tlist_Menu_Remove_File() ++ ++ endif ++ ++ let fname = escape(fnamemodify(bufname('%'), ':t'), '.') ++ if fname != '' ++ exe 'anoremenu T&ags.' . fname . ' ' ++ anoremenu T&ags.-SEP2- : ++ endif ++ ++ " Skip buffers with 'buftype' set to nofile, nowrite, quickfix or help ++ if &buftype != '' ++ return ++ endif ++ ++ let filename = fnamemodify(bufname('%'), ':p') ++ let ftype = &filetype ++ ++ " If the file doesn't support tag listing, skip it ++ if s:Tlist_Skip_File(filename, ftype) ++ return ++ endif ++ ++ let fidx = s:Tlist_Get_File_Index(filename) ++ if fidx == -1 || !s:tlist_{fidx}_valid ++ " Check whether this file is removed based on user request ++ " If it is, then don't display the tags for this file ++ if s:Tlist_User_Removed_File(filename) ++ return ++ endif ++ ++ " Process the tags for the file ++ let fidx = s:Tlist_Process_File(filename, ftype) ++ if fidx == -1 ++ return ++ endif ++ endif ++ ++ if !s:tlist_{fidx}_tag_count ++ return ++ endif ++ ++ if s:tlist_{fidx}_menu_cmd != '' ++ " Update the menu with the cached command ++ call s:Tlist_Menu_File_Refresh(fidx) ++ ++ return ++ endif ++ ++ " We are going to add entries to the tags menu, so the menu won't be ++ " empty ++ let s:tlist_menu_empty = 0 ++ ++ let cmd = '' ++ ++ " Determine whether the tag type name needs to be added to the menu ++ " If more than one tag type is present in the taglisting for a file, ++ " then the tag type name needs to be present ++ let add_ttype_name = -1 ++ let i = 1 ++ while i <= s:tlist_{ftype}_count && add_ttype_name < 1 ++ let ttype = s:tlist_{ftype}_{i}_name ++ if s:tlist_{fidx}_{ttype}_count ++ let add_ttype_name = add_ttype_name + 1 ++ endif ++ let i = i + 1 ++ endwhile ++ ++ " Process the tags by the tag type and get the menu command ++ let i = 1 ++ while i <= s:tlist_{ftype}_count ++ let mcmd = s:Tlist_Menu_Get_Tag_Type_Cmd(fidx, ftype, add_ttype_name, i) ++ if mcmd != '' ++ let cmd = cmd . mcmd ++ endif ++ ++ let i = i + 1 ++ endwhile ++ ++ " Cache the menu command for reuse ++ let s:tlist_{fidx}_menu_cmd = cmd ++ ++ " Update the menu ++ call s:Tlist_Menu_File_Refresh(fidx) ++endfunction ++ ++" Tlist_Menu_Remove_File ++" Remove the tags displayed in the tags menu ++function! s:Tlist_Menu_Remove_File() ++ if !has('gui_running') || s:tlist_menu_empty ++ return ++ endif ++ ++ call s:Tlist_Log_Msg('Removing the tags menu for a file') ++ ++ " Cleanup the Tags menu ++ silent! unmenu T&ags ++ if &mousemodel =~ 'popup' ++ silent! unmenu PopUp.T&ags ++ endif ++ ++ " Add a dummy menu item to retain teared off menu ++ noremenu T&ags.Dummy l ++ ++ silent! unmenu! T&ags ++ if &mousemodel =~ 'popup' ++ silent! unmenu! PopUp.T&ags ++ endif ++ ++ call s:Tlist_Menu_Add_Base_Menu() ++ ++ " Remove the dummy menu item ++ unmenu T&ags.Dummy ++ ++ let s:tlist_menu_empty = 1 ++endfunction ++ ++" Tlist_Menu_Refresh ++" Refresh the taglist menu ++function! s:Tlist_Menu_Refresh() ++ call s:Tlist_Log_Msg('Refreshing the tags menu') ++ let fidx = s:Tlist_Get_File_Index(fnamemodify(bufname('%'), ':p')) ++ if fidx != -1 ++ " Invalidate the cached menu command ++ let s:tlist_{fidx}_menu_cmd = '' ++ endif ++ ++ " Update the taglist, menu and window ++ call s:Tlist_Update_Current_File() ++endfunction ++ ++" Tlist_Menu_Jump_To_Tag ++" Jump to the selected tag ++function! s:Tlist_Menu_Jump_To_Tag(tidx) ++ let fidx = s:Tlist_Get_File_Index(fnamemodify(bufname('%'), ':p')) ++ if fidx == -1 ++ return ++ endif ++ ++ let tagpat = s:Tlist_Get_Tag_SearchPat(fidx, a:tidx) ++ if tagpat == '' ++ return ++ endif ++ ++ " Add the current cursor position to the jump list, so that user can ++ " jump back using the ' and ` marks. ++ mark ' ++ ++ silent call search(tagpat, 'w') ++ ++ " Bring the line to the middle of the window ++ normal! z. ++ ++ " If the line is inside a fold, open the fold ++ if foldclosed('.') != -1 ++ .foldopen ++ endif ++endfunction ++ ++" Tlist_Menu_Init ++" Initialize the taglist menu ++function! s:Tlist_Menu_Init() ++ call s:Tlist_Menu_Add_Base_Menu() ++ ++ " Automatically add the tags defined in the current file to the menu ++ augroup TagListMenuCmds ++ autocmd! ++ ++ if !g:Tlist_Process_File_Always ++ autocmd BufEnter * call s:Tlist_Refresh() ++ endif ++ autocmd BufLeave * call s:Tlist_Menu_Remove_File() ++ augroup end ++ ++ call s:Tlist_Menu_Update_File(0) ++endfunction ++ ++" Tlist_Vim_Session_Load ++" Initialize the taglist window/buffer, which is created when loading ++" a Vim session file. ++function! s:Tlist_Vim_Session_Load() ++ call s:Tlist_Log_Msg('Tlist_Vim_Session_Load') ++ ++ " Initialize the taglist window ++ call s:Tlist_Window_Init() ++ ++ " Refresh the taglist window ++ call s:Tlist_Window_Refresh() ++endfunction ++ ++" Tlist_Set_App ++" Set the name of the external plugin/application to which taglist ++" belongs. ++" Taglist plugin is part of another plugin like cream or winmanager. ++function! Tlist_Set_App(name) ++ if a:name == "" ++ return ++ endif ++ ++ let s:tlist_app_name = a:name ++endfunction ++ ++" Winmanager integration ++ ++" Initialization required for integration with winmanager ++function! TagList_Start() ++ " If current buffer is not taglist buffer, then don't proceed ++ if bufname('%') != '__Tag_List__' ++ return ++ endif ++ ++ call Tlist_Set_App('winmanager') ++ ++ " Get the current filename from the winmanager plugin ++ let bufnum = WinManagerGetLastEditedFile() ++ if bufnum != -1 ++ let filename = fnamemodify(bufname(bufnum), ':p') ++ let ftype = getbufvar(bufnum, '&filetype') ++ endif ++ ++ " Initialize the taglist window, if it is not already initialized ++ if !exists('s:tlist_window_initialized') || !s:tlist_window_initialized ++ call s:Tlist_Window_Init() ++ call s:Tlist_Window_Refresh() ++ let s:tlist_window_initialized = 1 ++ endif ++ ++ " Update the taglist window ++ if bufnum != -1 ++ if !s:Tlist_Skip_File(filename, ftype) && g:Tlist_Auto_Update ++ call s:Tlist_Window_Refresh_File(filename, ftype) ++ endif ++ endif ++endfunction ++ ++function! TagList_IsValid() ++ return 0 ++endfunction ++ ++function! TagList_WrapUp() ++ return 0 ++endfunction ++ ++" restore 'cpo' ++let &cpo = s:cpo_save ++unlet s:cpo_save ++ +diff -urN vim71/runtime/syntax/ada.vim vim71_ada/runtime/syntax/ada.vim +--- vim71/runtime/syntax/ada.vim 2007-05-05 20:22:26.000000000 +0200 ++++ vim71_ada/runtime/syntax/ada.vim 2008-01-16 16:37:03.000000000 +0100 +@@ -1,17 +1,17 @@ + "---------------------------------------------------------------------------- + " Description: Vim Ada syntax file + " Language: Ada (2005) +-" $Id: vim-7.1-ada.patch,v 1.1 2008/02/11 16:41:46 karsten Exp $ ++" $Id: vim-7.1-ada.patch,v 1.1 2008/02/11 16:41:46 karsten Exp $ + " Copyright: Copyright (C) 2006 Martin Krischik + " Maintainer: Martin Krischik + " David A. Wheeler + " Simon Bradley + " Contributors: Preben Randhol. +-" $Author: karsten $ +-" $Date: 2008/02/11 16:41:46 $ +-" Version: 4.2 +-" $Revision: 1.1 $ +-" $HeadURL: https://svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/syntax/ada.vim $ ++" $Author: karsten $ ++" $Date: 2008/02/11 16:41:46 $ ++" Version: 4.5 ++" $Revision: 1.1 $ ++" $HeadURL: https://gnuada.svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/syntax/ada.vim $ + " http://www.dwheeler.com/vim + " History: 24.05.2006 MK Unified Headers + " 26.05.2006 MK ' should not be in iskeyword. +@@ -98,7 +98,8 @@ + " + if exists("g:ada_rainbow_color") + syntax match adaSpecial "[:;.,]" +- runtime plugin/Rainbow_Parenthsis.vim ++ call rainbow_parenthsis#LoadRound () ++ call rainbow_parenthsis#Activate () + else + syntax match adaSpecial "[:;().,]" + endif +@@ -159,7 +160,7 @@ + " Section: end {{{1 + " Unless special ("end loop", "end if", etc.), "end" marks the end of a + " begin, package, task etc. Assiging it to adaEnd. +-syntax match adaEnd "\" ++syntax match adaEnd /\/ + + syntax keyword adaPreproc pragma + +diff -urN vim71/runtime/syntax/bush.vim vim71_ada/runtime/syntax/bush.vim +--- vim71/runtime/syntax/bush.vim 1970-01-01 01:00:00.000000000 +0100 ++++ vim71_ada/runtime/syntax/bush.vim 2008-01-16 16:37:03.000000000 +0100 +@@ -0,0 +1,309 @@ ++" Vim syntax file ++" Language: BUSH / AdaScript ++" Maintainer: Ken O. Burtch ++" URL: http://www.pegasoft.ca/bush ++" Last Change: 2004-06-29 ++ ++" Former Maintainer: Simon Bradley ++" (was ) ++" Other contributors: Preben Randhol. ++" The formal spec of Ada95 (ARM) is the "Ada95 Reference Manual". ++" For more Ada95 info, see http://www.gnuada.org and http://www.adapower.com. ++ ++" This vim syntax file works on vim 5.6, 5.7, 5.8 and 6.x. ++" It implements Bram Moolenaar's April 25, 2001 recommendations to make ++" the syntax file maximally portable across different versions of vim. ++" If vim 6.0+ is available, ++" this syntax file takes advantage of the vim 6.0 advanced pattern-matching ++" functions to avoid highlighting uninteresting leading spaces in ++" some expressions containing "with" and "use". ++ ++" For version 5.x: Clear all syntax items ++" For version 6.x: Quit when a syntax file was already loaded ++if version < 600 ++ syntax clear ++elseif exists("b:current_syntax") ++ finish ++endif ++ ++" Ada is entirely case-insensitive. ++syn case ignore ++ ++" We don't need to look backwards to highlight correctly; ++" this speeds things up greatly. ++syn sync minlines=1 maxlines=1 ++ ++" Highlighting commands. There are 69 reserved words in total in Ada95. ++" Some keywords are used in more than one way. For example: ++" 1. "end" is a general keyword, but "end if" ends a Conditional. ++" 2. "then" is a conditional, but "and then" is an operator. ++ ++ ++" Standard Exceptions (including I/O). ++" We'll highlight the standard exceptions, similar to vim's Python mode. ++" It's possible to redefine the standard exceptions as something else, ++" but doing so is very bad practice, so simply highlighting them makes sense. ++syn keyword adaException Constraint_Error Program_Error Storage_Error ++syn keyword adaException Tasking_Error ++syn keyword adaException Status_Error Mode_Error Name_Error Use_Error ++syn keyword adaException Device_Error End_Error Data_Error Layout_Error ++syn keyword adaException Length_Error Pattern_Error Index_Error ++syn keyword adaException Translation_Error ++syn keyword adaException Time_Error Argument_Error ++syn keyword adaException Tag_Error ++syn keyword adaException Picture_Error ++" Interfaces ++syn keyword adaException Terminator_Error Conversion_Error ++syn keyword adaException Pointer_Error Dereference_Error Update_Error ++" This isn't in the Ada spec, but a GNAT extension. ++syn keyword adaException Assert_Failure ++" We don't list ALL exceptions defined in particular compilers (e.g., GNAT), ++" because it's quite reasonable to define those phrases as non-exceptions. ++ ++ ++" We don't normally highlight types in package Standard ++" (Integer, Character, Float, etc.). I don't think it looks good ++" with the other type keywords, and many Ada programs define ++" so many of their own types that it looks inconsistent. ++" However, if you want this highlighting, turn on "ada_standard_types". ++" For package Standard's definition, see ARM section A.1. ++ ++if exists("ada_standard_types") ++ syn keyword adaBuiltinType Boolean Integer Natural Positive Float ++ syn keyword adaBuiltinType Character Wide_Character ++ syn keyword adaBuiltinType String Wide_String ++ syn keyword adaBuiltinType Duration ++ " These aren't listed in ARM section A.1's code, but they're noted as ++ " options in ARM sections 3.5.4 and 3.5.7: ++ syn keyword adaBuiltinType Short_Integer Short_Short_Integer ++ syn keyword adaBuiltinType Long_Integer Long_Long_Integer ++ syn keyword adaBuiltinType Short_Float Short_Short_Float ++ syn keyword adaBuiltinType Long_Float Long_Long_Float ++ " BUSH-specific types ++ syn keyword adaBuiltinType command ++ syn keyword adaBuiltinType socket_type ++ syn keyword adaBuiltinType unbounded_string ++ syn keyword adaBuiltinType universal_typeless ++ syn keyword adaBuiltinType universal_string ++ syn keyword adaBuiltinType universal_numeric ++endif ++ ++" There are MANY other predefined types; they've not been added, because ++" determining when they're a type requires context in general. ++" One potential addition would be Unbounded_String. ++ ++ ++syn keyword adaLabel others ++ ++syn keyword adaOperator abs mod not rem xor ++syn match adaOperator "\" ++syn match adaOperator "\" ++syn match adaOperator "\" ++syn match adaOperator "\" ++syn match adaOperator "[-+*/<>&]" ++syn keyword adaOperator ** ++syn match adaOperator "[/<>]=" ++syn keyword adaOperator => ++syn match adaOperator "\.\." ++syn match adaOperator "=" ++ ++" We won't map "adaAssignment" by default, but we need to map ":=" to ++" something or the "=" inside it will be mislabelled as an operator. ++" Note that in Ada, assignment (:=) is not considered an operator. ++syn match adaAssignment ":=" ++ ++" Handle the box, <>, specially: ++syn keyword adaSpecial <> ++ ++" Numbers, including floating point, exponents, and alternate bases. ++syn match adaNumber "\<\d[0-9_]*\(\.\d[0-9_]*\)\=\([Ee][+-]\=\d[0-9_]*\)\=\>" ++syn match adaNumber "\<\d\d\=#\x[0-9A-Fa-f_]*\(\.\x[0-9A-Fa-f_]*\)\=#\([Ee][+-]\=\d[0-9_]*\)\=" ++ ++" Identify leading numeric signs. In "A-5" the "-" is an operator, ++" but in "A:=-5" the "-" is a sign. This handles "A3+-5" (etc.) correctly. ++" This assumes that if you put a don't put a space after +/- when it's used ++" as an operator, you won't put a space before it either -- which is true ++" in code I've seen. ++syn match adaSign "[[:space:]<>=(,|:;&*/+-][+-]\d"lc=1,hs=s+1,he=e-1,me=e-1 ++ ++" Labels for the goto statement. ++syn region adaLabel start="<<" end=">>" ++ ++" Boolean Constants. ++syn keyword adaBoolean true false ++ ++" Warn people who try to use C/C++ notation erroneously: ++syn match adaError "//" ++syn match adaError "/\*" ++syn match adaError "==" ++ ++ ++if exists("ada_space_errors") ++ if !exists("ada_no_trail_space_error") ++ syn match adaSpaceError excludenl "\s\+$" ++ endif ++ if !exists("ada_no_tab_space_error") ++ syn match adaSpaceError " \+\t"me=e-1 ++ endif ++endif ++ ++" Unless special ("end loop", "end if", etc.), "end" marks the end of a ++" begin, package, task etc. Assiging it to adaEnd. ++syn match adaEnd "\" ++ ++syn keyword adaPreproc pragma ++ ++syn keyword adaRepeat exit for loop reverse while ++syn match adaRepeat "\" ++ ++syn keyword adaStatement accept delay goto raise requeue return ++syn keyword adaStatement terminate ++" BUSH-specific statements ++syn keyword adaStatement cd ++syn keyword adaStatement clear ++syn keyword adaStatement env ++syn keyword adaStatement inkey ++syn keyword adaStatement jobs ++syn keyword adaStatement logout ++syn keyword adaStatement pwd ++syn keyword adaStatement step ++syn keyword adaStatement trace ++syn keyword adaStatement typeset ++syn keyword adaStatement unset ++syn keyword adaStatement wait ++syn keyword adaStatement history ++syn keyword adaStatement "?" ++syn match adaStatement "\" ++ ++" Handle Ada's record keywords. ++" 'record' usually starts a structure, but "with null record;" does not, ++" and 'end record;' ends a structure. The ordering here is critical - ++" 'record;' matches a "with null record", so make it a keyword (this can ++" match when the 'with' or 'null' is on a previous line). ++" We see the "end" in "end record" before the word record, so we match that ++" pattern as adaStructure (and it won't match the "record;" pattern). ++syn match adaStructure "\" ++syn match adaStructure "\" ++syn match adaKeyword "\" ++syn match adaConditional "\" ++syn match adaConditional "\" ++syn match adaConditional "\" ++syn match adaConditional "\" ++syn match adaConditional "\" ++syn keyword adaConditional if case select ++syn keyword adaConditional elsif when ++ ++syn keyword adaKeyword all do exception in is new null out ++syn keyword adaKeyword separate until ++ ++" These keywords begin various constructs, and you _might_ want to ++" highlight them differently. ++syn keyword adaBegin begin body declare entry function generic ++syn keyword adaBegin package procedure protected renames task ++ ++ ++if exists("ada_withuse_ordinary") ++" Don't be fancy. Display "with" and "use" as ordinary keywords in all cases. ++ syn keyword adaKeyword with use ++else ++ " Highlight "with" and "use" clauses like C's "#include" when they're used ++ " to reference other compilation units; otherwise they're ordinary keywords. ++ " If we have vim 6.0 or later, we'll use its advanced pattern-matching ++ " capabilities so that we won't match leading spaces. ++ syn match adaKeyword "\" ++ syn match adaKeyword "\" ++ if version < 600 ++ syn match adaBeginWith "^\s*\(\(with\(\s\+type\)\=\)\|\(use\)\)\>" contains=adaInc ++ syn match adaSemiWith ";\s*\(\(with\(\s\+type\)\=\)\|\(use\)\)\>"lc=1 contains=adaInc ++ else ++ syn match adaBeginWith "^\s*\zs\(\(with\(\s\+type\)\=\)\|\(use\)\)\>" contains=adaInc ++ syn match adaSemiWith ";\s*\zs\(\(with\(\s\+type\)\=\)\|\(use\)\)\>" contains=adaInc ++ endif ++ syn match adaInc "\" contained contains=NONE ++ syn match adaInc "\" contained contains=NONE ++ syn match adaInc "\" contained contains=NONE ++ " Recognize "with null record" as a keyword (even the "record"). ++ syn match adaKeyword "\" ++ " Consider generic formal parameters of subprograms and packages as keywords. ++ if version < 600 ++ syn match adaKeyword ";\s*with\s\+\(function\|procedure\|package\)\>" ++ syn match adaKeyword "^\s*with\s\+\(function\|procedure\|package\)\>" ++ else ++ syn match adaKeyword ";\s*\zswith\s\+\(function\|procedure\|package\)\>" ++ syn match adaKeyword "^\s*\zswith\s\+\(function\|procedure\|package\)\>" ++ endif ++endif ++ ++ ++" String and character constants. ++syn region adaString start=+"+ skip=+""+ end=+"+ ++syn match adaCharacter "'.'" ++ ++" Todo (only highlighted in comments) ++syn keyword adaTodo contained TODO FIXME XXX ++ ++" Comments. ++syn region adaComment oneline contains=adaTodo start="--" end="$" ++ ++ ++ ++" Define the default highlighting. ++" For version 5.7 and earlier: only when not done already ++" For version 5.8 and later: only when an item doesn't have highlighting yet ++if version >= 508 || !exists("did_ada_syn_inits") ++ if version < 508 ++ let did_ada_syn_inits = 1 ++ command -nargs=+ HiLink hi link ++ else ++ command -nargs=+ HiLink hi def link ++ endif ++ ++ " The default methods for highlighting. Can be overridden later. ++ HiLink adaCharacter Character ++ HiLink adaComment Comment ++ HiLink adaConditional Conditional ++ HiLink adaKeyword Keyword ++ HiLink adaLabel Label ++ HiLink adaNumber Number ++ HiLink adaSign Number ++ HiLink adaOperator Operator ++ HiLink adaPreproc PreProc ++ HiLink adaRepeat Repeat ++ HiLink adaSpecial Special ++ HiLink adaStatement Statement ++ HiLink adaString String ++ HiLink adaStructure Structure ++ HiLink adaTodo Todo ++ HiLink adaType Type ++ HiLink adaTypedef Typedef ++ HiLink adaStorageClass StorageClass ++ HiLink adaBoolean Boolean ++ HiLink adaException Exception ++ HiLink adaInc Include ++ HiLink adaError Error ++ HiLink adaSpaceError Error ++ HiLink adaBuiltinType Type ++ ++ if exists("ada_begin_preproc") ++ " This is the old default display: ++ HiLink adaBegin PreProc ++ HiLink adaEnd PreProc ++ else ++ " This is the new default display: ++ HiLink adaBegin Keyword ++ HiLink adaEnd Keyword ++ endif ++ ++ delcommand HiLink ++endif ++ ++let b:current_syntax = "ada" ++ ++" vim: ts=8 diff --git a/vim-7.1-nowarnings.patch b/vim-7.1-nowarnings.patch new file mode 100644 index 00000000..fe16c810 --- /dev/null +++ b/vim-7.1-nowarnings.patch @@ -0,0 +1,10 @@ +--- vim71/src/ex_docmd.c.nowarnings 2007-06-04 14:43:26.000000000 +0200 ++++ vim71/src/ex_docmd.c 2007-06-04 14:43:43.000000000 +0200 +@@ -3993,6 +3993,7 @@ get_flags(eap) + ex_ni(eap) + exarg_T *eap; + { ++ return; + if (!eap->skip) + eap->errmsg = (char_u *)N_("E319: Sorry, the command is not available in this version"); + } diff --git a/vim-7.3-manpage-typo-668894-675480.patch b/vim-7.3-manpage-typo-668894-675480.patch deleted file mode 100644 index 0604fc4b..00000000 --- a/vim-7.3-manpage-typo-668894-675480.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -up vim73/runtime/doc/vim.1.668894 vim73/runtime/doc/vim.1 ---- vim73/runtime/doc/vim.1.668894 2010-05-15 13:04:00.000000000 +0200 -+++ vim73/runtime/doc/vim.1 2012-08-28 12:41:36.000000000 +0200 -@@ -73,7 +73,7 @@ To edit a file that starts with a dash, - .TP - \- - The file to edit is read from stdin. Commands are read from stderr, which --should be a tty. -+should be a TTY. - .TP - \-t {tag} - The file to edit and the initial cursor position depends on a "tag", a sort diff --git a/vim-7.4-globalsyntax.patch b/vim-7.4-globalsyntax.patch deleted file mode 100644 index 2f7fe16b..00000000 --- a/vim-7.4-globalsyntax.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -up vim91/runtime/syntax/spec.vim.globalsyntax vim91/runtime/syntax/spec.vim ---- vim91/runtime/syntax/spec.vim.globalsyntax 2024-09-20 22:29:01.858870640 +0200 -+++ vim91/runtime/syntax/spec.vim 2024-09-20 22:31:43.776217933 +0200 -@@ -112,7 +112,7 @@ syn region specDescriptionArea matchgrou - syn region specPackageArea matchgroup=specSection start='^%package' end='^%'me=e-1 contains=specPackageOpts,specPreAmble,specComment - - "%% Scripts Section %% --syn region specScriptArea matchgroup=specSection start='^%\(prep\|generate_buildrequires\|conf\|build\|install\|clean\|check\|pre\|postun\|preun\|post\|posttrans\|filetriggerin\|filetriggerun\|filetriggerpostun\|transfiletriggerin\|transfiletriggerun\|transfiletriggerpostun\)\>' skip='^%{\|^%\(define\|patch\d*\|configure\|GNUconfigure\|setup\|autosetup\|autopatch\|find_lang\|make_build\|makeinstall\|make_install\)\>' end='^%'me=e-1 contains=specSpecialVariables,specVariables,@specCommands,specVariables,shDo,shFor,shCaseEsac,specNoNumberHilite,specCommandOpts,shComment,shIf,specSpecialChar,specMacroIdentifier,specSectionMacroArea,specSectionMacroBracketArea,shOperator,shQuote1,shQuote2 -+syn region specScriptArea matchgroup=specSection start='^%\(prep\|generate_buildrequires\|conf\|build\|install\|clean\|check\|pre\|postun\|preun\|post\|posttrans\|filetriggerin\|filetriggerun\|filetriggerpostun\|transfiletriggerin\|transfiletriggerun\|transfiletriggerpostun\)\>' skip='^%{\|^%\(define\|global\|patch\d*\|configure\|GNUconfigure\|setup\|autosetup\|autopatch\|find_lang\|make_build\|makeinstall\|make_install\)\>' end='^%'me=e-1 contains=specSpecialVariables,specVariables,@specCommands,specVariables,shDo,shFor,shCaseEsac,specNoNumberHilite,specCommandOpts,shComment,shIf,specSpecialChar,specMacroIdentifier,specSectionMacroArea,specSectionMacroBracketArea,shOperator,shQuote1,shQuote2 - - "%% Changelog Section %% - syn region specChangelogArea matchgroup=specSection start='^%changelog' end='^%'me=e-1 contains=specEmail,specURL,specWeekday,specMonth,specNumber,specComment,specLicense diff --git a/vim-7.4-specsyntax.patch b/vim-7.4-specsyntax.patch deleted file mode 100644 index ace7607f..00000000 --- a/vim-7.4-specsyntax.patch +++ /dev/null @@ -1,21 +0,0 @@ -diff -up vim91/runtime/syntax/spec.vim.spec-syntax vim91/runtime/syntax/spec.vim ---- vim91/runtime/syntax/spec.vim.spec-syntax 2025-11-14 07:38:27.000000000 +0100 -+++ vim91/runtime/syntax/spec.vim 2025-11-14 07:52:56.081212607 +0100 -@@ -38,7 +38,7 @@ syn match specNoNumberHilite 'X11\|X11R6 - syn match specManpageFile '[a-zA-Z]\.1' - - "Day, Month and most used license acronyms --syn keyword specLicense contained GPL LGPL BSD MIT GNU -+syn keyword specLicense contained GPL LGPL BSD MIT GNU distributable - syn keyword specWeekday contained Mon Tue Wed Thu Fri Sat Sun - syn keyword specMonth contained Jan Feb Mar Apr Jun Jul Aug Sep Oct Nov Dec - syn keyword specMonth contained January February March April May June July August September October November December -@@ -105,7 +105,7 @@ syn case ignore - "%% PreAmble Section %% - "Copyright and Serial were deprecated by License and Epoch - syn region specPreAmbleDeprecated oneline matchgroup=specError start='^\(Copyright\|Serial\)' end='$' contains=specEmail,specURL,specURLMacro,specLicense,specColon,specVariables,specSpecialChar,specMacroIdentifier --syn region specPreAmble oneline matchgroup=specCommand start='^\(Prereq\|Summary\|Name\|Version\|Packager\|Requires\|Recommends\|Suggests\|Supplements\|Enhances\|Icon\|URL\|SourceLicense\|Source\d*\|Patch\d*\|Prefix\|Packager\|Group\|License\|Release\|BuildRoot\|Distribution\|DistTag\|Vendor\|Provides\|ExclusiveArch\|ExcludeArch\|ExclusiveOS\|Obsoletes\|BuildArch\|BuildArchitectures\|BuildRequires\|BuildConflicts\|BuildPreReq\|Conflicts\|AutoRequires\|AutoReq\|AutoReqProv\|AutoProv\|Epoch\|ModularityLabel\)' end='$' contains=specEmail,specURL,specURLMacro,specLicense,specColon,specVariables,specSpecialChar,specMacroIdentifier -+syn region specPreAmble oneline matchgroup=specCommand start='^\(Prereq\|Summary\|Name\|Version\|Packager\|Requires\|Recommends\|Suggests\|Supplements\|Enhances\|Icon\|URL\|SourceLicense\|Source\d*\|Patch\d*\|Prefix\|Packager\|Group\|License\|Release\|BuildRoot\|Distribution\|DistTag\|Vendor\|Provides\|ExclusiveArch\|ExcludeArch\|ExcludeOS\|ExclusiveOS\|Obsoletes\|BuildArch\|BuildArchitectures\|BuildRequires\|BuildConflicts\|BuildPreReq\|Conflicts\|AutoRequires\|AutoReq\|AutoReqProv\|AutoProv\|Epoch\|ModularityLabel\)' end='$' contains=specEmail,specURL,specURLMacro,specLicense,specColon,specVariables,specSpecialChar,specMacroIdentifier - - "%% Description Section %% - syn region specDescriptionArea matchgroup=specSection start='^%description' end='^%'me=e-1 contains=specDescriptionOpts,specEmail,specURL,specNumber,specMacroIdentifier,specComment diff --git a/vim-8.0-copy-paste.patch b/vim-8.0-copy-paste.patch deleted file mode 100644 index 07f1e5a6..00000000 --- a/vim-8.0-copy-paste.patch +++ /dev/null @@ -1,95 +0,0 @@ -diff -up vim91/runtime/defaults.vim.copypaste vim91/runtime/defaults.vim ---- vim91/runtime/defaults.vim.copypaste 2025-06-27 06:43:53.000000000 +0200 -+++ vim91/runtime/defaults.vim 2025-07-11 09:16:19.013363739 +0200 -@@ -70,18 +70,6 @@ sunmap Q - " Revert with ":iunmap ". - inoremap u - --" In many terminal emulators the mouse works just fine. By enabling it you --" can position the cursor, Visually select and scroll with the mouse. --" Only xterm can grab the mouse events when using the shift key, for other --" terminals use ":", select text and press Esc. --if has('mouse') -- if &term =~ 'xterm' -- set mouse=a -- else -- set mouse=nvi -- endif --endif -- - " Only do this part when Vim was compiled with the +eval feature. - if 1 - -diff -up vim91/src/testdir/test_balloon.vim.copypaste vim91/src/testdir/test_balloon.vim ---- vim91/src/testdir/test_balloon.vim.copypaste 2025-07-11 09:16:19.013500976 +0200 -+++ vim91/src/testdir/test_balloon.vim 2025-07-11 09:17:20.168187029 +0200 -@@ -7,6 +7,7 @@ CheckFeature balloon_eval_term - source util/screendump.vim - - let s:common_script =<< trim [CODE] -+ set mouse=a - call setline(1, ["one one one", "two tXo two", "three three three"]) - set balloonevalterm balloonexpr=MyBalloonExpr()..s:trailing balloondelay=100 - let s:trailing = '<' " check that script context is set -diff -up vim91/src/testdir/test_popup.vim.copypaste vim91/src/testdir/test_popup.vim ---- vim91/src/testdir/test_popup.vim.copypaste 2025-07-11 08:58:40.000000000 +0200 -+++ vim91/src/testdir/test_popup.vim 2025-07-11 09:16:19.013692144 +0200 -@@ -957,6 +957,7 @@ func Test_mouse_popup_position() - let script =<< trim END - set mousemodel=popup_setpos - source $VIMRUNTIME/menu.vim -+ set mouse=a - call setline(1, join(range(20))) - func Trigger(col) - call test_setmouse(1, a:col) -diff -up vim91/src/testdir/test_popupwin.vim.copypaste vim91/src/testdir/test_popupwin.vim ---- vim91/src/testdir/test_popupwin.vim.copypaste 2025-07-11 08:58:40.000000000 +0200 -+++ vim91/src/testdir/test_popupwin.vim 2025-07-11 09:16:19.013971633 +0200 -@@ -556,6 +556,7 @@ func Test_popup_drag() - " create a popup that covers the command line - let lines =<< trim END - call setline(1, range(1, 20)) -+ set mouse=a - split - vsplit - $wincmd w -@@ -623,6 +624,7 @@ func Test_popup_drag_minwidth() - - " create a popup that does not fit - let lines =<< trim END -+ set mouse=a - call range(40) - \ ->map({_,i -> string(i)}) - \ ->popup_create({ -@@ -670,6 +672,7 @@ func Test_popup_drag_termwin() - let lines =<< trim END - set foldmethod=marker - call setline(1, range(100)) -+ set mouse=a - for nr in range(7) - call setline(nr * 12 + 1, "fold {{{") - call setline(nr * 12 + 11, "end }}}") -@@ -722,6 +725,7 @@ func Test_popup_close_with_mouse() - - let lines =<< trim END - call setline(1, range(1, 20)) -+ set mouse=a - " With border, can click on X - let winid = popup_create('foobar', #{ - \ close: 'button', -@@ -1559,6 +1563,7 @@ func Test_popup_beval() - let lines =<< trim END - call setline(1, range(1, 20)) - call setline(5, 'here is some text to hover over') -+ set mouse=a - set balloonevalterm - set balloonexpr=BalloonExpr() - set balloondelay=100 -@@ -2269,6 +2274,7 @@ func Test_popup_scrollbar() - - let lines =<< trim END - call setline(1, range(1, 20)) -+ set mouse=a - hi ScrollThumb ctermbg=blue - hi ScrollBar ctermbg=red - let winid = popup_create(['one', 'two', 'three', 'four', 'five', diff --git a/vim-crypto-warning.patch b/vim-crypto-warning.patch deleted file mode 100644 index 6f55807f..00000000 --- a/vim-crypto-warning.patch +++ /dev/null @@ -1,85 +0,0 @@ -diff -up vim91/src/config.h.in.fips-warning vim91/src/config.h.in ---- vim91/src/config.h.in.fips-warning 2025-10-31 08:12:59.598267544 +0100 -+++ vim91/src/config.h.in 2025-10-31 08:14:45.661859595 +0100 -@@ -526,5 +526,14 @@ - /* Define if _SC_SIGSTKSZ is available via sysconf() */ - #undef HAVE_SYSCONF_SIGSTKSZ - -+/* Do we need FIPS warning? */ -+#undef HAVE_FIPS_WARNING -+ -+/* Link to system-fips file */ -+#undef SYSTEM_FIPS_FILE_LINK -+ -+/* Link to fips_enabled file */ -+#undef FIPS_ENABLED_FILE_LINK -+ - /* Define if you want to load libgpm dynamically */ - #undef DYNAMIC_GPM -diff -up vim91/src/configure.ac.fips-warning vim91/src/configure.ac ---- vim91/src/configure.ac.fips-warning 2025-10-31 08:12:59.596711911 +0100 -+++ vim91/src/configure.ac 2025-10-31 08:12:59.598566242 +0100 -@@ -631,6 +631,38 @@ else - AC_SUBST(XDIFF_OBJS_USED) - fi - -+dnl Checking if we want FIPS warning -+ -+AC_MSG_CHECKING(--enable-fips-warning) -+AC_ARG_ENABLE([fips-warning], -+ AS_HELP_STRING([--enable-fips-warning], [Enable FIPS warning]), -+ ,[enable_fips_warning="no"]) -+ -+if test "$enable_fips_warning" = "yes"; then -+ AC_MSG_RESULT(yes) -+ AC_DEFINE([HAVE_FIPS_WARNING]) -+ -+ dnl Setting path for system-fips file -+ -+ AC_MSG_CHECKING(--with-system-fips-file argument) -+ AC_ARG_WITH([system-fips-file], [ --with-system-fips-file=PATH Link to system-fips file (default: /etc/system-fips)], -+ with_system_fips_file=$withval, -+ with_system_fips_file="/etc/system-fips") -+ AC_MSG_RESULT([$with_system_fips_file]) -+ AC_DEFINE_UNQUOTED([SYSTEM_FIPS_FILE_LINK], ["$with_system_fips_file"]) -+ -+ dnl Setting link to fips_enabled file -+ -+ AC_MSG_CHECKING(--with-fips-enabled-file argument) -+ AC_ARG_WITH([fips-enabled-file], [ --with-fips-enabled-file=PATH Link to fibs_enabled file (default: /proc/sys/crypto/fips_enabled)], -+ with_fips_enabled_file=$withval, -+ with_fips_enabled_file="/proc/sys/crypto/fips_enabled") -+ AC_MSG_RESULT([$with_fips_enabled_file]) -+ AC_DEFINE_UNQUOTED([FIPS_ENABLED_FILE_LINK], ["$with_fips_enabled_file"]) -+else -+ AC_MSG_RESULT(no) -+fi -+ - dnl Check for Lua feature. - AC_MSG_CHECKING(--enable-luainterp argument) - AC_ARG_ENABLE(luainterp, -diff -up vim91/src/crypt.c.fips-warning vim91/src/crypt.c ---- vim91/src/crypt.c.fips-warning 2025-10-10 07:16:11.000000000 +0200 -+++ vim91/src/crypt.c 2025-10-31 08:12:59.598872032 +0100 -@@ -806,6 +806,21 @@ crypt_check_method(int method) - msg_scroll = TRUE; - msg(_("Warning: Using a weak encryption method; see :help 'cm'")); - } -+#ifdef HAVE_FIPS_WARNING -+ FILE *fips_enable_fd = fopen(FIPS_ENABLED_FILE_LINK, "r"); -+ if (fips_enable_fd == NULL) -+ return; -+ -+ int enabled = fgetc(fips_enable_fd); -+ -+ if ( access(SYSTEM_FIPS_FILE_LINK, F_OK) != -1 && enabled == '1') -+ { -+ msg_scroll = TRUE; -+ msg(_("Warning: This cryptography is not FIPS 140-2 compliant.")); -+ } -+ -+ fclose(fips_enable_fd); -+#endif - } - - /* diff --git a/vim-default-editor.csh b/vim-default-editor.csh deleted file mode 100644 index d98316d5..00000000 --- a/vim-default-editor.csh +++ /dev/null @@ -1,5 +0,0 @@ -# Ensure vim is set as EDITOR if it isn't already set - -if ( ! ($?EDITOR) ) then - setenv EDITOR "/usr/bin/vim" -endif diff --git a/vim-default-editor.fish b/vim-default-editor.fish deleted file mode 100644 index e4288c18..00000000 --- a/vim-default-editor.fish +++ /dev/null @@ -1,8 +0,0 @@ -# Ensure vim is set as EDITOR if it isn't already set -# This is set as a universal variable so that any other definition -# by the user would win -# Cf. https://fishshell.com/docs/current/index.html#variables-scope - -if ! set -q EDITOR; - set -x EDITOR /usr/bin/vim -end diff --git a/vim-default-editor.sh b/vim-default-editor.sh deleted file mode 100644 index 1a53dafd..00000000 --- a/vim-default-editor.sh +++ /dev/null @@ -1,5 +0,0 @@ -# Ensure vim is set as EDITOR if it isn't already set - -if [ -z "$EDITOR" ]; then - export EDITOR="/usr/bin/vim" -fi diff --git a/vim-manpagefixes-948566.patch b/vim-manpagefixes-948566.patch deleted file mode 100644 index c0806d65..00000000 --- a/vim-manpagefixes-948566.patch +++ /dev/null @@ -1,306 +0,0 @@ -diff -up vim91/runtime/doc/vim.1.manpagefixes vim91/runtime/doc/vim.1 ---- vim91/runtime/doc/vim.1.manpagefixes 2024-11-29 12:17:53.553382696 +0100 -+++ vim91/runtime/doc/vim.1 2024-11-29 12:17:53.556382667 +0100 -@@ -17,11 +17,13 @@ vim \- Vi IMproved, a programmer's text - .PP - .br - .B ex -+.B gex - .br - .B view - .br - .B gvim - .B gview -+.B vimx - .B evim - .B eview - .br -@@ -114,7 +116,12 @@ Can also be done with the "\-R" argument - gvim gview - The GUI version. - Starts a new window. --Can also be done with the "\-g" argument. -+.TP -+gex -+Starts a new gvim window in Ex mode. Can also be done with the "-e" argument to gvim -+.TP -+vimx -+Starts gvim in "Vi" mode similar to "vim", but with additional features like xterm clipboard support - .TP - evim eview - The GUI version in easy mode. -@@ -491,6 +498,12 @@ As \-\-remote, but Vim does not exit unt - \-\-remote\-wait\-silent - As \-\-remote\-wait, but without the warning when no server is found. - .TP -+\-\-remote\-tab[\-wait][\-silent] -+As \-\-remote but use tab page per file -+.TP -+\-\-role -+Set a unique role to identify the main window -+.TP - \-\-serverlist - List the names of all Vim servers that can be found. - .TP -diff -up vim91/runtime/doc/vim-fr.1.manpagefixes vim91/runtime/doc/vim-fr.1 ---- vim91/runtime/doc/vim-fr.1.manpagefixes 2024-11-15 06:32:23.000000000 +0100 -+++ vim91/runtime/doc/vim-fr.1 2024-11-29 12:17:53.556382667 +0100 -@@ -24,11 +24,13 @@ vim \- Vi IMproved, diteur de texte pou - .PP - .br - .B ex -+.B gex - .br - .B view - .br - .B gvim - .B gview -+.B vimx - .B evim - .B eview - .br -diff -up vim91/runtime/doc/vim-fr.UTF-8.1.manpagefixes vim91/runtime/doc/vim-fr.UTF-8.1 ---- vim91/runtime/doc/vim-fr.UTF-8.1.manpagefixes 2024-11-15 06:32:23.000000000 +0100 -+++ vim91/runtime/doc/vim-fr.UTF-8.1 2024-11-29 12:17:53.556382667 +0100 -@@ -24,11 +24,13 @@ vim \- Vi IMproved, éditeur de texte po - .PP - .br - .B ex -+.B gex - .br - .B view - .br - .B gvim - .B gview -+.B vimx - .B evim - .B eview - .br -diff -up vim91/runtime/doc/vim-it.1.manpagefixes vim91/runtime/doc/vim-it.1 ---- vim91/runtime/doc/vim-it.1.manpagefixes 2024-11-15 06:32:23.000000000 +0100 -+++ vim91/runtime/doc/vim-it.1 2024-11-29 12:17:53.557382658 +0100 -@@ -17,11 +17,13 @@ vim \- VI Migliorato, un editor di testi - .PP - .br - .B ex -+.B gex - .br - .B view - .br - .B gvim - .B gview -+.B vimx - .B evim - .B eview - .br -diff -up vim91/runtime/doc/vim-it.UTF-8.1.manpagefixes vim91/runtime/doc/vim-it.UTF-8.1 ---- vim91/runtime/doc/vim-it.UTF-8.1.manpagefixes 2024-11-15 06:32:23.000000000 +0100 -+++ vim91/runtime/doc/vim-it.UTF-8.1 2024-11-29 12:17:53.557382658 +0100 -@@ -17,11 +17,13 @@ vim \- VI Migliorato, un editor di testi - .PP - .br - .B ex -+.B gex - .br - .B view - .br - .B gvim - .B gview -+.B vimx - .B evim - .B eview - .br -diff -up vim91/runtime/doc/vim.man.manpagefixes vim91/runtime/doc/vim.man ---- vim91/runtime/doc/vim.man.manpagefixes 2024-11-15 06:32:23.000000000 +0100 -+++ vim91/runtime/doc/vim.man 2024-11-29 12:17:53.557382658 +0100 -@@ -9,9 +9,9 @@ SYNOPSIS - vim [options] -t tag - vim [options] -q [errorfile] - -- ex -+ ex gex - view -- gvim gview evim eview -+ gvim gview vimx evim eview - rvim rview rgvim rgview - - DESCRIPTION -@@ -77,8 +77,13 @@ DESCRIPTION - the files. Can also be done with the "-R" argument. - - gvim gview -- The GUI version. Starts a new window. Can also be done with -- the "-g" argument. -+ The GUI version. Starts a new window. -+ -+ gex Starts a new gvim window in Ex mode. Can also be done with -+ the "-e" argument to gvim -+ -+ vimx Starts gvim in "Vi" mode similar to "vim", but with -+ additional features like xterm clipboard support - - evim eview - The GUI version in easy mode. Starts a new window. Can also -diff -up vim91/runtime/doc/vim-pl.1.manpagefixes vim91/runtime/doc/vim-pl.1 ---- vim91/runtime/doc/vim-pl.1.manpagefixes 2024-11-15 06:32:23.000000000 +0100 -+++ vim91/runtime/doc/vim-pl.1 2024-11-29 12:17:53.557382658 +0100 -@@ -17,11 +17,13 @@ vim \- Vi rozbudowany, edytor tekstu dla - .PP - .br - .B ex -+.B gex - .br - .B view - .br - .B gvim - .B gview -+.B vimx - .B evim - .B eview - .br -diff -up vim91/runtime/doc/vim-pl.UTF-8.1.manpagefixes vim91/runtime/doc/vim-pl.UTF-8.1 ---- vim91/runtime/doc/vim-pl.UTF-8.1.manpagefixes 2024-11-15 06:32:23.000000000 +0100 -+++ vim91/runtime/doc/vim-pl.UTF-8.1 2024-11-29 12:17:53.558382649 +0100 -@@ -17,11 +17,13 @@ vim \- Vi rozbudowany, edytor tekstu dla - .PP - .br - .B ex -+.B gex - .br - .B view - .br - .B gvim - .B gview -+.B vimx - .B evim - .B eview - .br -diff -up vim91/runtime/doc/vim-ru.1.manpagefixes vim91/runtime/doc/vim-ru.1 ---- vim91/runtime/doc/vim-ru.1.manpagefixes 2024-11-15 06:32:23.000000000 +0100 -+++ vim91/runtime/doc/vim-ru.1 2024-11-29 12:17:53.558382649 +0100 -@@ -18,11 +18,13 @@ - .PP - .br - .B ex -+.B gex - .br - .B view - .br - .B gvim - .B gview -+.B vimx - .B evim - .B eview - .br -diff -up vim91/runtime/doc/vim-ru.UTF-8.1.manpagefixes vim91/runtime/doc/vim-ru.UTF-8.1 ---- vim91/runtime/doc/vim-ru.UTF-8.1.manpagefixes 2024-11-15 06:32:23.000000000 +0100 -+++ vim91/runtime/doc/vim-ru.UTF-8.1 2024-11-29 12:17:53.558382649 +0100 -@@ -18,11 +18,13 @@ программистов. - .PP - .br - .B ex -+.B gex - .br - .B view - .br - .B gvim - .B gview -+.B vimx - .B evim - .B eview - .br -diff -up vim91/runtime/doc/vimtutor.1.manpagefixes vim91/runtime/doc/vimtutor.1 ---- vim91/runtime/doc/vimtutor.1.manpagefixes 2024-11-15 06:32:23.000000000 +0100 -+++ vim91/runtime/doc/vimtutor.1 2024-11-29 12:17:53.559382639 +0100 -@@ -8,6 +8,8 @@ vimtutor \- the Vim tutor - .B vimtutor [\-h | \-\-help] - .br - .B vimtutor [\-\-list] -+.br -+.B gvimtutor - .SH DESCRIPTION - .B Vimtutor - starts the -diff -up vim91/runtime/doc/vimtutor-it.1.manpagefixes vim91/runtime/doc/vimtutor-it.1 ---- vim91/runtime/doc/vimtutor-it.1.manpagefixes 2024-11-15 06:32:23.000000000 +0100 -+++ vim91/runtime/doc/vimtutor-it.1 2024-11-29 12:17:53.559382639 +0100 -@@ -8,6 +8,8 @@ vimtutor \- Un breve corso introduttivo - .B vimtutor [\-h | \-\-help] - .br - .B vimtutor [\-\-list] -+.br -+.B gvimtutor - .SH DESCRIZIONE - .B Vimtutor - inizia il -diff -up vim91/runtime/doc/vimtutor-it.UTF-8.1.manpagefixes vim91/runtime/doc/vimtutor-it.UTF-8.1 ---- vim91/runtime/doc/vimtutor-it.UTF-8.1.manpagefixes 2024-11-15 06:32:23.000000000 +0100 -+++ vim91/runtime/doc/vimtutor-it.UTF-8.1 2024-11-29 12:17:53.559382639 +0100 -@@ -8,6 +8,8 @@ vimtutor \- Un breve corso introduttivo - .B vimtutor [\-h | \-\-help] - .br - .B vimtutor [\-\-list] -+.br -+.B gvimtutor - .SH DESCRIZIONE - .B Vimtutor - inizia il -diff -up vim91/runtime/doc/vimtutor.man.manpagefixes vim91/runtime/doc/vimtutor.man ---- vim91/runtime/doc/vimtutor.man.manpagefixes 2024-11-15 06:32:23.000000000 +0100 -+++ vim91/runtime/doc/vimtutor.man 2024-11-29 12:17:53.559382639 +0100 -@@ -8,6 +8,7 @@ SYNOPSIS - [ISO639] - vimtutor [-h | --help] - vimtutor [--list] -+ gvimtutor - - DESCRIPTION - Vimtutor starts the Vim tutor. -diff -up vim91/runtime/doc/vimtutor-pl.1.manpagefixes vim91/runtime/doc/vimtutor-pl.1 ---- vim91/runtime/doc/vimtutor-pl.1.manpagefixes 2024-11-15 06:32:23.000000000 +0100 -+++ vim91/runtime/doc/vimtutor-pl.1 2024-11-29 12:17:53.559382639 +0100 -@@ -4,6 +4,8 @@ vimtutor \- nauczyciel Vima - .SH SYNOPSIS - .br - .B vimtutor -g [jzyk] -+.br -+.B gvimtutor - .SH OPIS - .B Vimtutor - uruchamia nauczyciela -diff -up vim91/runtime/doc/vimtutor-pl.UTF-8.1.manpagefixes vim91/runtime/doc/vimtutor-pl.UTF-8.1 ---- vim91/runtime/doc/vimtutor-pl.UTF-8.1.manpagefixes 2024-11-15 06:32:23.000000000 +0100 -+++ vim91/runtime/doc/vimtutor-pl.UTF-8.1 2024-11-29 12:17:53.560382630 +0100 -@@ -4,6 +4,8 @@ vimtutor \- nauczyciel Vima - .SH SYNOPSIS - .br - .B vimtutor -g [język] -+.br -+.B gvimtutor - .SH OPIS - .B Vimtutor - uruchamia nauczyciela -diff -up vim91/runtime/doc/vimtutor-ru.1.manpagefixes vim91/runtime/doc/vimtutor-ru.1 ---- vim91/runtime/doc/vimtutor-ru.1.manpagefixes 2024-11-29 12:17:53.560382630 +0100 -+++ vim91/runtime/doc/vimtutor-ru.1 2024-11-29 12:20:14.883047832 +0100 -@@ -8,6 +8,8 @@ - .B vimtutor [\-h | \-\-help] - .br - .B vimtutor [\-\-list] -+.br -+.B gvimtutor - .SH - - .B vimtutor -diff -up vim91/runtime/doc/vimtutor-ru.UTF-8.1.manpagefixes vim91/runtime/doc/vimtutor-ru.UTF-8.1 ---- vim91/runtime/doc/vimtutor-ru.UTF-8.1.manpagefixes 2024-11-29 12:17:53.560382630 +0100 -+++ vim91/runtime/doc/vimtutor-ru.UTF-8.1 2024-11-29 12:19:27.318497067 +0100 -@@ -11,6 +11,8 @@ Программа vimtutor \[em] вып - .SH ОПИСАНИЕ - По команде - .B vimtutor -+.br -+.B gvimtutor - выполняется запуск редактора - .B Vim. - с загруженным файлом, содержащем текст учебника. diff --git a/vim-python3-tests.patch b/vim-python3-tests.patch deleted file mode 100644 index 98b5f758..00000000 --- a/vim-python3-tests.patch +++ /dev/null @@ -1,87 +0,0 @@ -diff -up vim82/runtime/tools/demoserver.py.python-tests vim82/runtime/tools/demoserver.py ---- vim82/runtime/tools/demoserver.py.python-tests 2019-07-26 07:58:50.000000000 +0200 -+++ vim82/runtime/tools/demoserver.py 2020-04-17 06:18:06.748977527 +0200 -@@ -1,4 +1,4 @@ --#!/usr/bin/python -+#!/usr/bin/python3 - # - # Server that will accept connections from a Vim channel. - # Run this server and then in Vim you can open the channel: -diff -up vim82/src/auto/configure.python-tests vim82/src/auto/configure ---- vim82/src/auto/configure.python-tests 2020-04-17 06:07:48.000000000 +0200 -+++ vim82/src/auto/configure 2020-04-17 06:18:06.750977509 +0200 -@@ -6418,7 +6418,7 @@ eof - if test "x$MACOS_X" = "xyes" && test -n "${python_PYTHONFRAMEWORK}" && ${vi_cv_path_python} -c \ - "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"; then - vi_cv_path_python_plibs="-framework Python" -- if test "x${vi_cv_path_python}" != "x/usr/bin/python" && test -n "${python_PYTHONFRAMEWORKPREFIX}"; then -+ if test "x${vi_cv_path_python}" != "x/usr/bin/python2" && test -n "${python_PYTHONFRAMEWORKPREFIX}"; then - vi_cv_path_python_plibs="-F${python_PYTHONFRAMEWORKPREFIX} -framework Python" - fi - else -diff -up vim82/src/configure.ac.python-tests vim82/src/configure.ac ---- vim82/src/configure.ac.python-tests 2020-04-17 06:07:48.000000000 +0200 -+++ vim82/src/configure.ac 2020-04-17 06:18:06.750977509 +0200 -@@ -1263,7 +1263,7 @@ eof - if test "x$MACOS_X" = "xyes" && test -n "${python_PYTHONFRAMEWORK}" && ${vi_cv_path_python} -c \ - "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"; then - vi_cv_path_python_plibs="-framework Python" -- if test "x${vi_cv_path_python}" != "x/usr/bin/python" && test -n "${python_PYTHONFRAMEWORKPREFIX}"; then -+ if test "x${vi_cv_path_python}" != "x/usr/bin/python2" && test -n "${python_PYTHONFRAMEWORKPREFIX}"; then - vi_cv_path_python_plibs="-F${python_PYTHONFRAMEWORKPREFIX} -framework Python" - fi - else -diff -up vim82/src/testdir/test_channel_pipe.py.python-tests vim82/src/testdir/test_channel_pipe.py ---- vim82/src/testdir/test_channel_pipe.py.python-tests 2019-07-26 07:58:53.000000000 +0200 -+++ vim82/src/testdir/test_channel_pipe.py 2020-04-17 06:18:06.751977500 +0200 -@@ -1,4 +1,4 @@ --#!/usr/bin/python -+#!/usr/bin/python3 - # - # Server that will communicate over stdin/stderr - # -diff -up vim82/src/testdir/test_channel.py.python-tests vim82/src/testdir/test_channel.py ---- vim82/src/testdir/test_channel.py.python-tests 2020-04-17 06:18:06.751977500 +0200 -+++ vim82/src/testdir/test_channel.py 2020-04-17 06:18:24.517813082 +0200 -@@ -1,4 +1,4 @@ --#!/usr/bin/env python -+#!/usr/bin/python3 - # - # Server that will accept connections from a Vim channel. - # Used by test_channel.vim. -diff -up vim82/src/testdir/test_channel_write.py.python-tests vim82/src/testdir/test_channel_write.py ---- vim82/src/testdir/test_channel_write.py.python-tests 2019-07-26 07:58:53.000000000 +0200 -+++ vim82/src/testdir/test_channel_write.py 2020-04-17 06:18:06.751977500 +0200 -@@ -1,4 +1,4 @@ --#!/usr/bin/python -+#!/usr/bin/python3 - # - # Program that writes a number to stdout repeatedly - # -diff -up vim82/src/testdir/test_makeencoding.py.python-tests vim82/src/testdir/test_makeencoding.py ---- vim82/src/testdir/test_makeencoding.py.python-tests 2019-07-26 07:58:53.000000000 +0200 -+++ vim82/src/testdir/test_makeencoding.py 2020-04-17 06:18:06.751977500 +0200 -@@ -1,4 +1,4 @@ --#!/usr/bin/python -+#!/usr/bin/python3 - # -*- coding: utf-8 -*- - - # Test program for :make, :grep and :cgetfile. -diff -up vim82/src/testdir/test_netbeans.py.python-tests vim82/src/testdir/test_netbeans.py ---- vim82/src/testdir/test_netbeans.py.python-tests 2019-07-26 07:58:53.000000000 +0200 -+++ vim82/src/testdir/test_netbeans.py 2020-04-17 06:18:06.751977500 +0200 -@@ -1,4 +1,4 @@ --#!/usr/bin/python -+#!/usr/bin/python3 - # - # Server that will communicate with Vim through the netbeans interface. - # Used by test_netbeans.vim. -diff -up vim82/src/testdir/test_short_sleep.py.python-tests vim82/src/testdir/test_short_sleep.py ---- vim82/src/testdir/test_short_sleep.py.python-tests 2019-07-26 07:58:53.000000000 +0200 -+++ vim82/src/testdir/test_short_sleep.py 2020-04-17 06:18:06.751977500 +0200 -@@ -1,4 +1,4 @@ --#!/usr/bin/python -+#!/usr/bin/python3 - # - # Program that sleeps for 100 msec - # diff --git a/vim-selinux.patch b/vim-selinux.patch new file mode 100644 index 00000000..c657f71e --- /dev/null +++ b/vim-selinux.patch @@ -0,0 +1,143 @@ +--- vim62/src/configure.in.selinux 2004-01-20 11:34:17.177103792 -0500 ++++ vim62/src/configure.in 2004-01-20 11:34:18.507126105 -0500 +@@ -195,6 +195,21 @@ + fi + + ++dnl vim: set sw=2 tw=78 fo+=l: ++dnl Link with -lselinux for SELinux stuff; if not found ++AC_MSG_CHECKING(--disable-selinux argument) ++AC_ARG_ENABLE(selinux, ++ [ --disable-selinux Don't check for SELinux support.], ++ , [enable_selinux="yes"]) ++if test "$enable_selinux" = "yes"; then ++ AC_MSG_RESULT(no) ++ AC_CHECK_LIB(selinux, is_selinux_enabled, ++ [LIBS="$LIBS -lselinux" ++ AC_DEFINE(HAVE_SELINUX)]) ++else ++ AC_MSG_RESULT(yes) ++fi ++ + dnl Check user requested features. + + AC_MSG_CHECKING(--with-features argument) +--- vim62/src/config.h.in.selinux 2003-05-25 12:07:42.000000000 -0400 ++++ vim62/src/config.h.in 2004-01-20 11:34:18.507126105 -0500 +@@ -155,6 +155,7 @@ + #undef HAVE_READLINK + #undef HAVE_RENAME + #undef HAVE_SELECT ++#undef HAVE_SELINUX + #undef HAVE_SETENV + #undef HAVE_SETPGID + #undef HAVE_SETSID +--- vim62/src/fileio.c.selinux 2004-01-20 11:34:16.577093725 -0500 ++++ vim62/src/fileio.c 2004-01-20 11:34:18.517126273 -0500 +@@ -1,3 +1,4 @@ ++ + /* vi:set ts=8 sts=4 sw=4: + * + * VIM - Vi IMproved by Bram Moolenaar +@@ -3079,6 +3080,9 @@ + ) + mch_setperm(backup, + (perm & 0707) | ((perm & 07) << 3)); ++#ifdef HAVE_SELINUX ++ mch_copy_sec(fname, backup); ++#endif + #endif + + /* +@@ -3115,6 +3119,9 @@ + #ifdef HAVE_ACL + mch_set_acl(backup, acl); + #endif ++#ifdef HAVE_SELINUX ++ mch_copy_sec(fname, backup); ++#endif + break; + } + } +@@ -3719,6 +3726,12 @@ + mch_set_acl(wfname, acl); + #endif + ++#ifdef HAVE_SELINUX ++ /* Probably need to set the security context */ ++ if (!backup_copy) ++ mch_copy_sec(backup, wfname); ++#endif ++ + #ifdef UNIX + /* When creating a new file, set its owner/group to that of the original + * file. Get the new device and inode number. */ +--- vim62/src/os_unix.c.selinux 2004-01-20 11:34:15.897082317 -0500 ++++ vim62/src/os_unix.c 2004-01-20 11:37:54.310746614 -0500 +@@ -41,6 +41,10 @@ + # include + #endif + ++#ifdef HAVE_SELINUX ++#include ++static int selinux_enabled=-1; ++#endif + /* + * Use this prototype for select, some include files have a wrong prototype + */ +@@ -2279,6 +2283,55 @@ + } vim_acl_solaris_T; + # endif + ++mch_copy_sec(from_file, to_file) ++ char_u *from_file; ++ char_u *to_file; ++{ ++ if (from_file == NULL) ++ return; ++ ++#ifdef HAVE_SELINUX ++ if (selinux_enabled == -1) ++ selinux_enabled = is_selinux_enabled (); ++ ++ if (selinux_enabled>0) ++ { ++ security_context_t from_context=NULL; ++ security_context_t to_context=NULL; ++ if (getfilecon (from_file, &from_context) < 0) ++ { ++ /* If the filesystem doesn't support extended attributes, ++ the original had no special security context and the ++ target cannot have one either. */ ++ if (errno == EOPNOTSUPP) ++ return ; ++ ++ MSG_PUTS(_("\nCould not get security context for ")); ++ msg_outtrans(from_file); ++ msg_putchar('\n'); ++ return ; ++ } ++ if (getfilecon (to_file, &to_context) < 0) ++ { ++ MSG_PUTS(_("\nCould not get security context for ")); ++ msg_outtrans(to_file); ++ msg_putchar('\n'); ++ freecon (from_context); ++ return ; ++ } ++ if (strcmp(from_context,to_context) != 0 ) { ++ if (setfilecon (to_file, from_context) < 0) ++ { ++ MSG_PUTS(_("\nCould not set security context for ")); ++ msg_outtrans(to_file); ++ msg_putchar('\n'); ++ } ++ } ++ freecon (to_context); ++ freecon (from_context); ++ } ++#endif /* HAVE_SELINUX */ ++} + /* + * Return a pointer to the ACL of file "fname" in allocated memory. + * Return NULL if the ACL is not available for whatever reason. diff --git a/vim-selinux2.patch b/vim-selinux2.patch new file mode 100644 index 00000000..3bb6b649 --- /dev/null +++ b/vim-selinux2.patch @@ -0,0 +1,11 @@ +--- vim70/src/memfile.c 2006-05-08 11:37:01.000000000 +0200 ++++ vim70/src/memfile.c.selinux 2006-05-08 11:34:45.000000000 +0200 +@@ -1325,5 +1325,8 @@ + mfp->mf_ffname = NULL; + } + else ++#ifdef HAVE_SELINUX ++ mch_copy_sec(fname, mfp->mf_fname); ++#endif + mch_hide(mfp->mf_fname); /* try setting the 'hidden' flag */ + } diff --git a/vim-update.sh b/vim-update.sh deleted file mode 100755 index fc37e160..00000000 --- a/vim-update.sh +++ /dev/null @@ -1,199 +0,0 @@ -#!/bin/bash -debug="" -#debug="echo " -branches=( "rawhide" "f43" "f42" ) -releases=( "fc44" "fc43" "fc42" ) -# the first bodhi enabled release is the last without \| - all -# others need to have \| -regexps=( "fc44" "fc43" "\|fc42" ) -bodhi_enabled=( "0" "1" "1" ) -needs_update=() -#releases_regexp=fc28\\\|fc27\\\|fc28 - -branches_index=0 -release_index=0 -regexp_index=0 -bodhi_enabled_index=0 -done_build=0 -releases_regexp="" -let "regexp_index+=1" - -cd `dirname $0` -LANG=C -SPEC=vim.spec -CHANGES=1 -force=0 - -if [ "x$1" == "x--force" ]; then - force=1 -fi - -DATE=`date +"%a %b %d %Y"` -$debug fedpkg switch-branch "${branches[@]: $branches_index: 1}" - - -if [ $? -ne 0 ]; then - echo "Error with switching branch" - exit 1 -fi - -MAJORVERSION=`grep "define baseversion" vim.spec | cut -d ' ' -f 3` -MAJORVERDIR=$(echo $MAJORVERSION | sed -e 's/\.//') -EPOCH=`grep "Epoch:" vim.spec | cut -d ':' -f 2` -PACKAGER=`rpmdev-packager` -ORIGPL=`grep "define patchlevel" vim.spec | cut -d ' ' -f 3 | sed -e "s/^0*//g"` -ORIGPLFILLED=`printf "%03d" $ORIGPL` - -if [ ! -d vim-upstream ]; then - git clone https://github.com/vim/vim.git vim-upstream -else - pushd vim-upstream - git pull - popd -fi - -pushd vim-upstream - -# get the latest tag. Might be tricky with other packages, but upstream vim uses just a single branch: -LASTTAG=$(git describe --tags $(git rev-list --tags --max-count=1)) - -# vim upstream tags have the form v7.4.123. Remove the 'v' and get major release and patchlevel: -UPSTREAMMAJOR=$(echo $LASTTAG | sed -e 's/v\([0-9]*\.[0-9]*\).*/\1/') -UPSTREAMMAJORDIR=$(echo $UPSTREAMMAJOR | sed -e 's/\.//') -LASTPL=`echo $LASTTAG| sed -e 's/.*\.//;s/^0*//'` -LASTPLFILLED=`printf "%03d" $LASTPL` -if [ $force -ne 1 -a "$ORIGPLFILLED" == "$LASTPLFILLED" ]; then - echo "No new patchlevel available" - CHANGES=0 -fi -rm -rf dist/* 2>/dev/null -make unixall - -# include patchlevel in tarball name so that older sources won't get overwritten: -mv dist/vim-${UPSTREAMMAJOR}.tar.bz2 dist/vim-${UPSTREAMMAJOR}-${LASTPLFILLED}.tar.bz2 - -# We don't include the full upstream changelog in the rpm changelog, just ship a file with -# the changes: -popd - -cp -f vim-upstream/dist/vim-${UPSTREAMMAJOR}-${LASTPLFILLED}.tar.bz2 . -#wget https://raw.githubusercontent.com/ignatenkobrain/vim-spec-plugin/rawhide/ftplugin/spec.vim -O ftplugin-spec.vim -#wget https://raw.githubusercontent.com/ignatenkobrain/vim-spec-plugin/rawhide/syntax/spec.vim -O syntax-spec.vim -if [ $CHANGES -ne 0 ]; then - CHLOG="* $DATE $PACKAGER -$EPOCH:$UPSTREAMMAJOR" - $debug sed -i -e "/Release: /cRelease: 1%{?dist}" $SPEC - if [ "x$MAJORVERSION" != "x$UPSTREAMMAJOR" ]; then - $debug sed -i -s "s/define baseversion $MAJORVERSION/define baseversion $UPSTREAMMAJOR/" $SPEC - $debug sed -i -s "s/define vimdir vim$MAJORVERDIR/define vimdir vim$UPSTREAMMAJORDIR/" $SPEC - fi - $debug sed -i -e "s/define patchlevel $ORIGPLFILLED/define patchlevel $LASTPLFILLED/" $SPEC - $debug sed -i -e "/\%changelog/a$CHLOG.$LASTPLFILLED-1\n- patchlevel $LASTPLFILLED\n" $SPEC - $debug fedpkg new-sources vim-${UPSTREAMMAJOR}-${LASTPLFILLED}.tar.bz2 - $debug git add vim.spec - $debug git commit -m "- patchlevel $LASTPL" - - # mockbuild - $debug fedpkg mockbuild - if [ $? -ne 0 ]; then - echo "Error: fedpkg mockbuild" - exit 1 - fi - - # push - $debug fedpkg push - if [ $? -ne 0 ]; then - echo "Error: fedpkg push" - exit 1 - fi - - $debug fedpkg build - if [ $? -eq 0 ]; then - done_build=1 - else - echo "Error when building package in $branch" - exit 1 - fi - - let "release_index+=1" - let "bodhi_enabled_index+=1" - - for branch in "${branches[@]:(1)}"; - do - # switch to branch - $debug fedpkg switch-branch $branch - - # merge with previous branch - $debug bash -c "git merge rawhide <<<':x'" - if [ $? -ne 0 ]; then - echo "Error: git merge rawhide" - exit 1 - fi - - # mockbuild - $debug fedpkg mockbuild - if [ $? -ne 0 ]; then - echo "Error: fedpkg mockbuild failed" - exit 1 - fi - - # push - $debug fedpkg push - if [ $? -ne 0 ]; then - echo "Error: fedpkg push" - exit 1 - fi - - # append next release to regexp if the branch is enabled in bodhi - because we - # need to check if there aren't any testing updates from higher enabled branches - # (lower branch cannot have bigger NVR than higher branch) in next iteration - if [ ${bodhi_enabled[@]: $bodhi_enabled_index: 1} -eq 1 ] - then - releases_regexp="$releases_regexp${regexps[@]: regexp_index: 1}" - fi - - # Check if release has an update in testing - if not, build package - # and submit update for testing - # done_build is a check, if previous branch did build - lower branch can do - # a build only when higher branch build was ok. - testing_update=`bodhi updates query --packages vim --status testing \ - | grep $releases_regexp` - if [ "$testing_update" == "" ] && [ $done_build -eq 1 ]; then - $debug fedpkg build - if [ $? -eq 0 ]; then - # if branch isn't rawhide or branch is enabled in bodhi, create the update if newer branch does - # not have an update in testing - if [ $branch != "rawhide" ] || [ ${bodhi_enabled[@]: $bodhi_enabled_index: 1} -eq 1 ]; then - $debug bodhi updates new --type enhancement --notes "The newest upstream commit" --request testing --autotime --autokarma --stable-karma 3 --unstable-karma -3 vim-${UPSTREAMMAJOR}.${LASTPLFILLED}-1.${releases[@]: $release_index: 1} - fi - else - echo "Error when building package for $branch" - exit 1 - fi - else - done_build=0 - fi - - # Increment index - let "branches_index+=1" - let "release_index+=1" - let "regexp_index+=1" - let "bodhi_enabled_index+=1" - done - #$debug git push - #if [ $? -eq 0 ]; then - # $debug rm -f $HOME/.koji/config - # $debug fedpkg build - # $debug ln -sf ppc-config $HOME/.koji/config - #else - # echo "GIT push failed" - #fi -fi - -#go back to rawhide -$debug fedpkg switch-branch rawhide - -# clean up the downloaded vim-upstream repo - to prevent changes in it and breaking update process -# prevents #1931099 -$debug rm -rf vim-upstream - -exit 0 diff --git a/vim.spec b/vim.spec index b2c29f97..62900a38 100644 --- a/vim.spec +++ b/vim.spec @@ -1,179 +1,329 @@ -%bcond_without gui - - -%if 0%{?fedora} -%bcond_without default_editor -%bcond_without gpm -%bcond_without libsodium_crypt -%else -%bcond_with default_editor -%bcond_with gpm -%bcond_with libsodium_crypt -%endif - - -%define patchlevel 2068 -%define withnetbeans 1 - -%define withhunspell 0 -%define withlua 1 -%define withperl 1 - -# VIm upstream wants to build with FORTIFY_SOURCE=1, -# because higher levels causes crashes of valid code constructs -# and their reimplementation would cost unnecessary maintenance -# https://github.com/vim/vim/pull/3507 -%define _fortify_level 1 - -%define baseversion 9.1 -%define vimdir vim91 - - +# used for CVS snapshots: +%define CVSDATE %{nil} %if %{?WITH_SELINUX:0}%{!?WITH_SELINUX:1} %define WITH_SELINUX 1 %endif - -%if %{with gui} %define desktop_file 1 -%else -%define desktop_file 0 -%endif - %if %{desktop_file} %define desktop_file_utils_version 0.2.93 %endif -%if 0%{?flatpak} -%define withruby 0 -%else -%define withruby 1 -%endif +%define withnetbeans 0 +%define withvimspell 0 +%define withhunspell 0 + +%define baseversion 7.1 +#used for pre-releases: +%define beta %{nil} +%define vimdir vim71%{?beta} +%define patchlevel 245 Summary: The VIM editor -URL: https://www.vim.org/ +URL: http://www.vim.org/ Name: vim -Version: %{baseversion}.%{patchlevel} +Version: %{baseversion}.%{beta}%{patchlevel} Release: 1%{?dist} -Epoch: 2 -# swift.vim contains Apache 2.0 with runtime library exception: -# which is taken as Apache-2.0 WITH Swift-exception - reported to legal as https://gitlab.com/fedora/legal/fedora-license-data/-/issues/188 -# resolution: the license is good for Fedora, but the file does not have a creativity from -# -# Open Publication License 1.0 or later for Vim documentation - reported to legal for adding to the allowed licenses list -# response here: https://lists.fedoraproject.org/archives/list/legal@lists.fedoraproject.org/message/4UTW5GFDELGMG6K3NQ7NBU42LC2FJOB5/ -# resolution: take it as OPUBL-1.0, the license won't be added to allowed license list, but if a project uses it for documentation -# and don't use license options mentioned in the OPUBL 1.0 license text (which both are the case for Vim), the license is allowed -License: Vim AND LGPL-2.1-or-later AND MIT AND GPL-1.0-only AND (GPL-2.0-only OR Vim) AND Apache-2.0 AND BSD-2-Clause AND BSD-3-Clause AND GPL-2.0-or-later AND GPL-3.0-or-later AND OPUBL-1.0 AND Apache-2.0 WITH Swift-exception -Source0: ftp://ftp.vim.org/pub/vim/unix/vim-%{baseversion}-%{patchlevel}.tar.bz2 -Source1: virc -Source2: vimrc -Source3: gvim16.png -Source4: gvim32.png -Source5: gvim48.png -Source6: gvim64.png -Source7: spec-template.new -Source8: macros.vim -Source9: vim-default-editor.sh -Source10: vim-default-editor.csh -Source11: vim-default-editor.fish -Source12: view_wrapper -Source13: vi_wrapper - - -Patch1: vim-7.0-fixkeys.patch -Patch2: vim-7.4-specsyntax.patch -Patch3: vim-7.3-manpage-typo-668894-675480.patch -Patch4: vim-manpagefixes-948566.patch -Patch5: vim-7.4-globalsyntax.patch -# migrate shebangs in script to /usr/bin/python3 and use python2 when necessary -Patch6: vim-python3-tests.patch -# fips warning (Fedora downstream patch) -Patch7: vim-crypto-warning.patch -# don't ever set mouse (Fedora downstream patch) -Patch8: vim-8.0-copy-paste.patch - - -# patch only when hunspell is enabled -Patch10000: vim-7.0-hunspell.patch - - -# uses autoconf in spec file -BuildRequires: autoconf - -# gcc is no longer in buildroot by default -BuildRequires: gcc -# for translations -BuildRequires: gettext - -# glibc in F35 bootstraped several conversion formats from -# iconv into a separate package. Vim needs those additional -# formats during compilation. -BuildRequires: glibc-gconv-extra - -# for setting ACL on created files -BuildRequires: libacl-devel - -# uses libtool for linking -BuildRequires: libtool - -# uses make -BuildRequires: make -# screen handling library -BuildRequires: ncurses-devel - -# for building function prototypes -BuildRequires: python3 -BuildRequires: python3-clang - -# for python plugin -BuildRequires: python3-devel - - -%if %{desktop_file} -# for /usr/bin/desktop-file-install -BuildRequires: desktop-file-utils >= %{desktop_file_utils_version} -Requires: desktop-file-utils -%endif - -%if %{with gpm} -# for mouse support in console -BuildRequires: gpm-devel +License: Vim +Group: Applications/Editors +Source0: ftp://ftp.vim.org/pub/vim/unix/vim-%{baseversion}%{?beta}%{?CVSDATE}.tar.bz2 +Source1: ftp://ftp.vim.org/pub/vim/extra/vim-%{baseversion}%{?beta}-lang%{?CVSDATE}.tar.gz +Source2: ftp://ftp.vim.org/pub/vim/extra/vim-%{baseversion}%{?beta}-extra%{?CVSDATE}.tar.gz +Source3: gvim.desktop +Source4: vimrc +#Source5: ftp://ftp.vim.org/pub/vim/patches/README.patches +Source7: gvim16.png +Source8: gvim32.png +Source9: gvim48.png +Source10: gvim64.png +Source11: Changelog.rpm +#Source12: vi-help.txt +%if %{withvimspell} +Source13: vim-spell-files.tar.bz2 %endif +Patch2002: vim-7.0-fixkeys.patch +Patch2003: vim-6.2-specsyntax.patch +Patch2004: vim-7.0-crv.patch +Patch2010: xxd-locale.patch %if %{withhunspell} +Patch2011: vim-7.0-hunspell.patch BuildRequires: hunspell-devel %endif +# Patches 001 < 999 are patches from the base maintainer. +# If you're as lazy as me, generate the list using +# for i in `seq 1 14`; do printf "Patch%03d: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.%03d\n" $i $i; done +Patch001: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.001 +Patch002: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.002 +Patch003: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.003 +Patch004: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.004 +Patch005: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.005 +Patch006: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.006 +Patch007: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.007 +Patch008: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.008 +Patch009: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.009 +Patch010: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.010 +Patch011: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.011 +Patch012: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.012 +Patch013: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.013 +Patch014: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.014 +Patch015: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.015 +Patch016: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.016 +Patch017: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.017 +Patch018: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.018 +Patch019: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.019 +Patch020: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.020 +Patch021: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.021 +Patch022: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.022 +Patch023: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.023 +Patch024: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.024 +Patch025: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.025 +Patch026: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.026 +Patch027: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.027 +Patch028: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.028 +Patch029: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.029 +Patch030: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.030 +Patch031: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.031 +Patch032: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.032 +Patch033: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.033 +Patch034: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.034 +Patch035: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.035 +Patch036: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.036 +Patch037: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.037 +Patch038: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.038 +Patch039: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.039 +Patch040: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.040 +Patch041: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.041 +Patch042: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.042 +Patch043: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.043 +Patch044: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.044 +Patch045: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.045 +Patch046: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.046 +Patch047: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.047 +Patch048: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.048 +Patch049: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.049 +Patch050: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.050 +Patch051: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.051 +Patch052: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.052 +Patch053: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.053 +Patch054: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.054 +Patch055: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.055 +Patch056: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.056 +Patch057: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.057 +Patch058: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.058 +Patch059: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.059 +Patch060: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.060 +Patch061: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.061 +Patch062: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.062 +Patch063: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.063 +Patch064: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.064 +Patch065: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.065 +Patch066: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.066 +Patch067: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.067 +Patch068: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.068 +Patch069: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.069 +Patch070: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.070 +Patch071: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.071 +Patch072: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.072 +Patch073: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.073 +Patch074: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.074 +Patch075: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.075 +Patch076: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.076 +Patch077: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.077 +Patch078: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.078 +Patch079: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.079 +Patch080: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.080 +Patch081: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.081 +Patch082: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.082 +Patch083: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.083 +Patch084: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.084 +Patch085: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.085 +Patch086: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.086 +Patch087: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.087 +Patch088: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.088 +Patch089: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.089 +Patch090: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.090 +Patch091: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.091 +Patch092: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.092 +Patch093: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.093 +Patch094: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.094 +Patch095: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.095 +Patch096: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.096 +Patch097: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.097 +Patch098: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.098 +Patch099: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.099 +Patch100: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.100 +Patch101: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.101 +Patch102: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.102 +Patch103: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.103 +Patch104: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.104 +Patch105: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.105 +Patch106: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.106 +Patch107: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.107 +Patch108: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.108 +Patch109: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.109 +Patch110: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.110 +Patch111: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.111 +Patch112: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.112 +Patch113: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.113 +Patch114: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.114 +Patch115: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.115 +Patch116: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.116 +Patch117: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.117 +Patch118: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.118 +Patch119: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.119 +Patch120: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.120 +Patch121: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.121 +Patch122: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.122 +Patch123: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.123 +Patch124: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.124 +Patch125: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.125 +Patch126: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.126 +Patch127: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.127 +Patch128: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.128 +Patch129: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.129 +Patch130: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.130 +Patch131: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.131 +Patch132: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.132 +Patch133: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.133 +Patch134: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.134 +Patch135: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.135 +Patch136: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.136 +Patch137: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.137 +Patch138: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.138 +Patch139: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.139 +Patch140: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.140 +Patch141: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.141 +Patch142: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.142 +Patch143: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.143 +Patch144: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.144 +Patch145: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.145 +Patch146: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.146 +Patch147: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.147 +Patch148: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.148 +Patch149: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.149 +Patch150: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.150 +Patch151: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.151 +Patch152: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.152 +Patch153: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.153 +Patch154: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.154 +Patch155: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.155 +Patch156: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.156 +Patch157: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.157 +Patch158: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.158 +Patch159: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.159 +Patch160: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.160 +Patch161: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.161 +Patch162: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.162 +Patch163: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.163 +Patch164: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.164 +Patch165: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.165 +Patch166: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.166 +Patch167: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.167 +Patch168: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.168 +Patch169: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.169 +Patch170: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.170 +Patch171: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.171 +Patch172: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.172 +Patch173: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.173 +Patch174: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.174 +Patch175: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.175 +Patch176: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.176 +Patch177: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.177 +Patch178: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.178 +Patch179: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.179 +Patch180: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.180 +Patch181: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.181 +Patch182: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.182 +Patch183: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.183 +Patch184: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.184 +Patch185: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.185 +Patch186: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.186 +Patch187: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.187 +Patch188: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.188 +Patch189: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.189 +Patch190: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.190 +Patch191: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.191 +Patch192: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.192 +Patch193: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.193 +Patch194: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.194 +Patch195: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.195 +Patch196: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.196 +Patch197: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.197 +Patch198: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.198 +Patch199: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.199 +Patch200: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.200 +Patch201: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.201 +Patch202: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.202 +Patch203: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.203 +Patch204: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.204 +Patch205: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.205 +Patch206: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.206 +Patch207: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.207 +Patch208: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.208 +Patch209: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.209 +Patch210: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.210 +Patch211: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.211 +Patch212: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.212 +Patch213: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.213 +Patch214: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.214 +Patch215: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.215 +Patch216: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.216 +Patch217: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.217 +Patch218: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.218 +Patch219: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.219 +Patch220: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.220 +Patch221: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.221 +Patch222: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.222 +Patch223: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.223 +Patch224: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.224 +Patch225: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.225 +Patch226: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.226 +Patch227: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.227 +Patch228: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.228 +Patch229: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.229 +Patch230: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.230 +Patch231: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.231 +Patch232: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.232 +Patch233: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.233 +Patch234: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.234 +Patch235: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.235 +Patch236: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.236 +Patch237: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.237 +Patch238: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.238 +Patch239: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.239 +Patch240: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.240 +Patch241: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.241 +Patch242: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.242 -# for xchacha20 encryption -%if %{with libsodium_crypt} -BuildRequires: libsodium-devel -%endif +Patch3000: vim-7.0-syntax.patch +Patch3002: vim-7.1-nowarnings.patch +Patch3003: vim-6.1-rh3.patch +Patch3004: vim-7.0-rclocation.patch +Patch3006: vim-6.4-checkhl.patch +Patch3007: vim-7.0-fstabsyntax.patch +Patch3008: vim-6.4-lib64.patch +Patch3009: vim-7.0-warning.patch +Patch3010: vim-7.0-syncolor.patch +Patch3011: vim-7.0-vimspelltypo.patch +Patch3012: vim-7.0-specedit.patch +# Remove this one when the runtime files get updated (#246378): +Patch3013: vim-7.1-ada.patch +# +Patch3100: vim-selinux.patch +Patch3101: vim-selinux2.patch -# for lua plugin -%if "%{withlua}" == "1" -BuildRequires: lua-devel -%endif - -# for perl plugin -%if "%{withperl}" == "1" -BuildRequires: perl-devel -BuildRequires: perl-generators -BuildRequires: perl(ExtUtils::Embed) -BuildRequires: perl(ExtUtils::ParseXS) -%endif - -# for ruby plugin -%if "%{withruby}" == "1" -BuildRequires: ruby -BuildRequires: ruby-devel -%endif - -# selinux support +Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) +BuildRequires: python-devel ncurses-devel gettext perl-devel +BuildRequires: libacl-devel gpm-devel autoconf %if %{WITH_SELINUX} BuildRequires: libselinux-devel %endif - +%if %{desktop_file} +Requires: /usr/bin/desktop-file-install +BuildRequires: desktop-file-utils >= %{desktop_file_utils_version} +%endif +Epoch: 2 %description VIM (VIsual editor iMproved) is an updated and improved version of the @@ -181,17 +331,12 @@ vi editor. Vi was the first real screen-based editor for UNIX, and is still very popular. VIM improves on vi by adding new features: multiple windows, multi-level undo, block highlighting and more. - %package common Summary: The common files needed by any version of the VIM editor -# move evim manpage to common - remove the conflict after C11S is branched -Conflicts: %{name}-X11 < 2:9.1.1706-2 -# shared files between common and minimal -Requires: %{name}-data = %{epoch}:%{version}-%{release} -Requires: %{name}-filesystem -# the hexdump binary was part of the package for long time, ship it with it -# still for convenience -Requires: xxd +Group: Applications/Editors +Conflicts: man-pages-fr < 0.9.7-14 +Conflicts: man-pages-it < 0.3.0-17 +Conflicts: man-pages-pl < 0.24-2 %description common VIM (VIsual editor iMproved) is an updated and improved version of the @@ -204,53 +349,35 @@ order to run. If you are installing vim-enhanced or vim-X11, you'll also need to install the vim-common package. +%package spell +Summary: The dictionaries for spell checking. This package is optional +Group: Applications/Editors +Requires: vim-common = %{epoch}:%{version}-%{release} + +%description spell +This subpackage contains dictionaries for vim spell checking in +many different languages. %package minimal Summary: A minimal version of the VIM editor -Provides: vi -Provides: %{_bindir}/vi -# shared files between common and minimal -Requires: %{name}-data = %{epoch}:%{version}-%{release} +Group: Applications/Editors +Provides: vi = %{version}-%{release} %description minimal VIM (VIsual editor iMproved) is an updated and improved version of the vi editor. Vi was the first real screen-based editor for UNIX, and is still very popular. VIM improves on vi by adding new features: multiple windows, multi-level undo, block highlighting and more. The -vim-minimal package includes a minimal version of VIM, providing -the commands vi, view, ex, rvi, and rview. NOTE: The online help is -only available when the vim-common package is installed. - +vim-minimal package includes a minimal version of VIM, which is +installed into /bin/vi for use when only the root partition is +present. NOTE: The online help is only available when the vim-common +package is installed. %package enhanced Summary: A version of the VIM editor which includes recent enhancements -# vim bundles libvterm, which is used during build - so we need to provide -# bundled libvterm for catching possible libvterm CVEs -Provides: bundled(libvterm) -Provides: vim -Provides: vim(plugins-supported) -Provides: %{_bindir}/mergetool -Provides: %{_bindir}/vim -Requires: vim-common = %{epoch}:%{version}-%{release} -# required for vimtutor (#395371) -Requires: which -Suggests: python3 -Suggests: python3-libs - -# suggest python3, python2, lua, ruby and perl packages because of their -# embedded functionality in Vim/GVim -%if "%{withlua}" == "1" -Suggests: lua-libs -%endif - -%if "%{withperl}" == "1" -Suggests: perl-devel -%endif - -%if "%{withruby}" == "1" -Suggests: ruby -Suggests: ruby-libs -%endif +Group: Applications/Editors +Requires: vim-common = %{epoch}:%{version}-%{release} which +Provides: vim = %{version}-%{release} %description enhanced VIM (VIsual editor iMproved) is an updated and improved version of the @@ -265,102 +392,12 @@ VIM editor which includes recently added enhancements like interpreters for the Python and Perl scripting languages. You'll also need to install the vim-common package. - -%package filesystem -Summary: VIM filesystem layout -BuildArch: noarch - -%Description filesystem -This package provides some directories which are required by other -packages that add vim files, p.e. additional syntax files or filetypes. - - -%package data -Summary: Shared data for Vi and Vim -BuildArch: noarch - -%description data -The subpackage is used for shipping files and directories, which need to be -shared between vim-minimal and vim-common packages. - - -%package -n xxd -Summary: A hex dump utility - -%description -n xxd -xxd creates a hex dump of a given file or standard input. It can also convert -a hex dump back to its original binary form. - - -%if %{with default_editor} -%package default-editor -Summary: Set vim as the default editor -BuildArch: noarch -Conflicts: system-default-editor -Provides: system-default-editor -Requires: vim-enhanced - -%description default-editor -This subpackage contains files needed to set Vim as the default editor. -%endif - -%if %{with gui} %package X11 -Summary: The VIM version of the vi editor for the X Window System - GVim -# move evim manpage to common - remove the conflict after C11S is branched -Conflicts: %{name}-common < 2:9.1.1706-2 -# devel of libICE, gtk3, libSM, libX11, libXpm and libXt are needed in buildroot -# so configure script can have correct macros enabled for GUI (#1603272) -# generic gnome toolkit for graphical support -BuildRequires: gtk3-devel -# inter-client exchange library - for X session management protocol -BuildRequires: libICE-devel -# X session management library -BuildRequires: libSM-devel -# core X11 protocol client library -BuildRequires: libX11-devel -# X Toolkit Intrinsics library - working with widgets? -BuildRequires: libXt-devel -# for testing validity of appdata file -BuildRequires: libappstream-glib -# for sound support -BuildRequires: libcanberra-devel - -Provides: gvim -Provides: vim(plugins-supported) -Provides: %{_bindir}/mergetool -Provides: %{_bindir}/gvim - -# glib2 in Fedora 40 introduced a new function, which is not used in GVim, but it is present -# in compiled gvim binary as symbol when Vim is compiled with glib2-2.79.1 -# there does not seem to be a better solution than version based requires on glib2... -# https://bugzilla.redhat.com/show_bug.cgi?id=2262371 -Requires: glib2 >= 2.79.1 -# GVIM graphics are based on GTK3 -Requires: gtk3 -# needed for icons (#226526) -Requires: hicolor-icon-theme -# for getting/setting extended attributes - they are pairs (name:value) -# from inodes (files, dirs etc.) -Requires: libattr >= 2.4 -Requires: vim-common = %{epoch}:%{version}-%{release} -Suggests: python3 -Suggests: python3-libs - -# suggest python3, python2, lua, ruby and perl packages because of their -# embedded functionality in Vim/GVim - %if "%{withlua}" == "1" -Suggests: lua-libs - %endif - - %if "%{withperl}" == "1" -Suggests: perl-devel - %endif - - %if "%{withruby}" == "1" -Suggests: ruby -Suggests: ruby-libs - %endif +Summary: The VIM version of the vi editor for the X Window System +Group: Applications/Editors +Requires: vim-common = %{epoch}:%{version}-%{release} libattr >= 2.4 gtk2 >= 2.6 +Provides: gvim = %{version}-%{release} +BuildRequires: gtk2-devel libSM-devel libXt-devel libXpm-devel %description X11 VIM (VIsual editor iMproved) is an updated and improved version of the @@ -369,36 +406,295 @@ still very popular. VIM improves on vi by adding new features: multiple windows, multi-level undo, block highlighting and more. VIM-X11 is a version of the VIM editor which will run within the X Window System. If you install this package, you can run VIM as an X -application with a full GUI interface and mouse support by command gvim. +application with a full GUI interface and mouse support. Install the vim-X11 package if you'd like to try out a version of vi with graphics and mouse capabilities. You'll also need to install the vim-common package. -%endif - %prep %setup -q -b 0 -n %{vimdir} - -# use %%{__python3} macro for defining shebangs in python3 tests -sed -i -e 's,/usr/bin/python3,%{__python3},' %{PATCH6} - +%setup -q -D -b 1 -n %{vimdir} +%setup -q -D -b 2 -n %{vimdir} # fix rogue dependencies from sample code chmod -x runtime/tools/mve.awk -%patch -P 1 -p1 -b .fixkeys -%patch -P 2 -p1 -b .spec-syntax - +%patch2002 -p1 +%patch2003 -p1 +%patch2004 -p1 +%patch2010 -p1 +%if %{withhunspell} +%patch2011 -p1 +%endif perl -pi -e "s,bin/nawk,bin/awk,g" runtime/tools/mve.awk -%patch -P 3 -p1 -b .mantypo -%patch -P 4 -p1 -b .manpagefixes -%patch -P 5 -p1 -b .globalsyntax -%patch -P 6 -p1 -b .python-tests -%patch -P 7 -p1 -b .fips-warning -%patch -P 8 -p1 -b .copypaste +# Base patches... +# for i in `seq 1 14`; do printf "%%patch%03d -p0 \n" $i; done +%patch001 -p0 +%patch002 -p0 +%patch003 -p0 +%patch004 -p0 +%patch005 -p0 +%patch006 -p0 +%patch007 -p0 +%patch008 -p0 +%patch009 -p0 +%patch010 -p0 +%patch011 -p0 +%patch012 -p0 +%patch013 -p0 +%patch014 -p0 +%patch015 -p0 +%patch016 -p0 +%patch017 -p0 +%patch018 -p0 +%patch019 -p0 +%patch020 -p0 +%patch021 -p0 +%patch022 -p0 +%patch023 -p0 +%patch024 -p0 +%patch025 -p0 +%patch026 -p0 +%patch027 -p0 +%patch028 -p0 +%patch029 -p0 +%patch030 -p0 +%patch031 -p0 +%patch032 -p0 +%patch033 -p0 +%patch034 -p0 +%patch035 -p0 +%patch036 -p0 +%patch037 -p0 +%patch038 -p0 +%patch039 -p0 +%patch040 -p0 +%patch041 -p0 +%patch042 -p0 +%patch043 -p0 +%patch044 -p0 +%patch045 -p0 +%patch046 -p0 +%patch047 -p0 +%patch048 -p0 +%patch049 -p0 +%patch050 -p0 +%patch051 -p0 +%patch052 -p0 +%patch053 -p0 +%patch054 -p0 +%patch055 -p0 +%patch056 -p0 +%patch057 -p0 +%patch058 -p0 +%patch059 -p0 +%patch060 -p0 +%patch061 -p0 +%patch062 -p0 +%patch063 -p0 +%patch064 -p0 +%patch065 -p0 +%patch066 -p0 +%patch067 -p0 +%patch068 -p0 +%patch069 -p0 +%patch070 -p0 +%patch071 -p0 +%patch072 -p0 +%patch073 -p0 +%patch074 -p0 +%patch075 -p0 +%patch076 -p0 +%patch077 -p0 +%patch078 -p0 +%patch079 -p0 +%patch080 -p0 +%patch081 -p0 +%patch082 -p0 +%patch083 -p0 +%patch084 -p0 +%patch085 -p0 +%patch086 -p0 +%patch087 -p0 +%patch088 -p0 +%patch089 -p0 +%patch090 -p0 +%patch091 -p0 +%patch092 -p0 +%patch093 -p0 +%patch094 -p0 +%patch095 -p0 +%patch096 -p0 +%patch097 -p0 +%patch098 -p0 +%patch099 -p0 +%patch100 -p0 +%patch101 -p0 +%patch102 -p0 +%patch103 -p0 +%patch104 -p0 +%patch105 -p0 +%patch106 -p0 +%patch107 -p0 +%patch108 -p0 +%patch109 -p0 +%patch110 -p0 +%patch111 -p0 +%patch112 -p0 +%patch113 -p0 +%patch114 -p0 +%patch115 -p0 +%patch116 -p0 +%patch117 -p0 +%patch118 -p0 +%patch119 -p0 +%patch120 -p0 +%patch121 -p0 +%patch122 -p0 +%patch123 -p0 +%patch124 -p0 +%patch125 -p0 +%patch126 -p0 +%patch127 -p0 +%patch128 -p0 +%patch129 -p0 +%patch130 -p0 +%patch131 -p0 +%patch132 -p0 +%patch133 -p0 +%patch134 -p0 +%patch135 -p0 +%patch136 -p0 +%patch137 -p0 +%patch138 -p0 +%patch139 -p0 +%patch140 -p0 +%patch141 -p0 +%patch142 -p0 +%patch143 -p0 +%patch144 -p0 +%patch145 -p0 +%patch146 -p0 +%patch147 -p0 +%patch148 -p0 +%patch149 -p0 +%patch150 -p0 +%patch151 -p0 +%patch152 -p0 +%patch153 -p0 +%patch154 -p0 +%patch155 -p0 +%patch156 -p0 +%patch157 -p0 +%patch158 -p0 +%patch159 -p0 +%patch160 -p0 +%patch161 -p0 +%patch162 -p0 +%patch163 -p0 +%patch164 -p0 +%patch165 -p0 +%patch166 -p0 +%patch167 -p0 +%patch168 -p0 +%patch169 -p0 +%patch170 -p0 +%patch171 -p0 +%patch172 -p0 +%patch173 -p0 +%patch174 -p0 +%patch175 -p0 +%patch176 -p0 +%patch177 -p0 +%patch178 -p0 +%patch179 -p0 +%patch180 -p0 +%patch181 -p0 +%patch182 -p0 +%patch183 -p0 +%patch184 -p0 +%patch185 -p0 +%patch186 -p0 +%patch187 -p0 +%patch188 -p0 +%patch189 -p0 +%patch190 -p0 +%patch191 -p0 +%patch192 -p0 +%patch193 -p0 +%patch194 -p0 +%patch195 -p0 +%patch196 -p0 +%patch197 -p0 +%patch198 -p0 +%patch199 -p0 +%patch200 -p0 +%patch201 -p0 +%patch202 -p0 +%patch203 -p0 +%patch204 -p0 +%patch205 -p0 +%patch206 -p0 +%patch207 -p0 +%patch208 -p0 +%patch209 -p0 +%patch210 -p0 +%patch211 -p0 +%patch212 -p0 +%patch213 -p0 +%patch214 -p0 +%patch215 -p0 +%patch216 -p0 +%patch217 -p0 +%patch218 -p0 +%patch219 -p0 +%patch220 -p0 +%patch221 -p0 +%patch222 -p0 +%patch223 -p0 +%patch224 -p0 +%patch225 -p0 +%patch226 -p0 +%patch227 -p0 +%patch228 -p0 +%patch229 -p0 +%patch230 -p0 +%patch231 -p0 +%patch232 -p0 +%patch233 -p0 +%patch234 -p0 +%patch235 -p0 +%patch236 -p0 +%patch237 -p0 +%patch238 -p0 +%patch239 -p0 +%patch240 -p0 +%patch241 -p0 +%patch242 -p0 -%if %{withhunspell} -%patch -P 10000 -p1 + +# install spell files +%if %{withvimspell} +%{__tar} xjf %{SOURCE13} +%endif + +%patch3000 -p1 +%patch3002 -p1 +%patch3003 -p1 +%patch3004 -p1 + +%patch3006 -p1 +%patch3007 -p1 +%patch3008 -p1 +%patch3009 -p1 +%patch3010 -p1 +%patch3011 -p1 +%patch3012 -p1 +%patch3013 -p1 + +%if %{WITH_SELINUX} +%patch3100 -p1 +%patch3101 -p1 %endif @@ -406,420 +702,217 @@ perl -pi -e "s,bin/nawk,bin/awk,g" runtime/tools/mve.awk cd src autoconf -# added -std=c17 because F42 uses c23 by default and dynamically loaded Ruby plugin fails to build -# with c23 due using `()` for callback arguments to be able to use callbacks with different number -# of arguments in one function -# reported upstream as https://github.com/vim/vim/issues/16575 -export CFLAGS="%{optflags} -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2 -std=c17" -export CXXFLAGS="%{optflags} -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2 -std=c17" +export CFLAGS="$RPM_OPT_FLAGS -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2" +export CXXFLAGS="$RPM_OPT_FLAGS -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2" -cp -f os_unix.h os_unix.h.save - -# Configure options: -# --enable-fail-if-missing - we need to fail if configure options aren't satisfied -# --with-features - for setting how big amount of features is enabled -# --enable-multibyte - enabling multibyte editing support - for editing files in languages, which one character -# cannot be represented by one byte - Asian languages, Unicode -# --disable-netbeans - disabling socket interface for integrating Vim into NetBeans IDE -# --enable-selinux - enabling selinux support -# --enable-Ninterp - enabling internal interpreter -# --with-x - yes if we want X11 support (graphical Vim for X11) -# --with-tlib - which terminal library to use -# --disable-gpm - disabling support for General Purpose Mouse - Linux mouse daemon - -perl -pi -e "s/vimrc/virc/" os_unix.h -%configure CFLAGS="${CFLAGS} -DSYS_VIMRC_FILE='\"/etc/virc\"'" \ - --prefix=%{_prefix} --with-features=tiny --with-x=no \ - --enable-multibyte \ - --disable-netbeans \ -%if %{WITH_SELINUX} - --enable-selinux \ -%else - --disable-selinux \ -%endif - --disable-pythoninterp --disable-perlinterp --disable-tclinterp \ - --with-tlib=ncurses --enable-gui=no --disable-gpm --exec-prefix=/ \ - --with-compiledby="" \ +%configure --with-features=huge --enable-pythoninterp --enable-perlinterp \ + --disable-tclinterp --with-x=yes \ + --enable-xim --enable-multibyte \ + --with-tlib=ncurses \ + --enable-gtk2-check --enable-gui=gtk2 \ + --with-compiledby="" --enable-cscope \ --with-modified-by="" \ - --enable-fips-warning \ - --enable-fail-if-missing \ - --disable-canberra \ - --without-wayland \ - --enable-year2038 \ - --disable-libsodium - -%make_build -cp vim minimal-vim -make clean - - -mv -f os_unix.h.save os_unix.h - -%configure CFLAGS="${CFLAGS} -DSYS_VIMRC_FILE='\"/etc/vimrc\"'" \ - --prefix=%{_prefix} --with-features=huge \ - --enable-python3interp=dynamic \ - --with-python3-stable-abi \ - --disable-tclinterp \ - --with-x=no \ - --enable-gui=no --exec-prefix=%{_prefix} --enable-multibyte \ - --enable-cscope --with-modified-by="" \ - --with-tlib=ncurses \ - --enable-fips-warning \ - --with-compiledby="" \ -%if %{with gpm} - --enable-gpm \ -%else - --disable-gpm \ -%endif %if "%{withnetbeans}" == "1" --enable-netbeans \ %else --disable-netbeans \ %endif -%if %{WITH_SELINUX} - --enable-selinux \ -%else - --disable-selinux \ -%endif -%if "%{withperl}" == "1" - --enable-perlinterp=dynamic \ - --with-xsubpp=$(which xsubpp) \ -%else - --disable-perlinterp \ -%endif -%if "%{withruby}" == "1" - --enable-rubyinterp=dynamic \ -%else - --disable-rubyinterp \ -%endif -%if "%{withlua}" == "1" - --enable-luainterp=dynamic \ -%else - --disable-luainterp \ -%endif -%if %{with libsodium_crypt} - --enable-libsodium \ -%else - --disable-libsodium \ -%endif - --enable-fail-if-missing \ - --without-wayland \ - --enable-year2038 \ - --disable-canberra -%make_build -cp vim enhanced-vim - - -%if %{with gui} -# More configure options: -# --enable-xim - enabling X Input Method - international input module for X, -# it is for multibyte languages in Vim with X -# --enable-termtruecolor - use terminal with true colors - -%configure CFLAGS="${CFLAGS} -DSYS_VIMRC_FILE='\"/etc/vimrc\"'" \ - --with-features=huge \ - --enable-python3interp=dynamic \ - --with-python3-stable-abi \ - --disable-tclinterp --with-x=yes \ - --enable-xim --enable-multibyte \ - --with-tlib=ncurses \ - --enable-gtk3-check --enable-gui=gtk3 \ - --enable-fips-warning \ - --with-compiledby="" --enable-cscope \ - --with-modified-by="" \ - %if %{with gpm} - --enable-gpm \ - %else - --disable-gpm \ - %endif - %if "%{withnetbeans}" == "1" - --enable-netbeans \ - %else - --disable-netbeans \ - %endif - %if %{WITH_SELINUX} - --enable-selinux \ - %else - --disable-selinux \ - %endif - %if "%{withperl}" == "1" - --enable-perlinterp=dynamic \ - --with-xsubpp=$(which xsubpp) \ - %else - --disable-perlinterp \ - %endif - %if "%{withruby}" == "1" - --enable-rubyinterp=dynamic \ - %else - --disable-rubyinterp \ - %endif - %if "%{withlua}" == "1" - --enable-luainterp=dynamic \ - %else - --disable-luainterp \ - %endif - %if %{with libsodium_crypt} - --enable-libsodium \ - %else - --disable-libsodium \ - %endif - --enable-fail-if-missing \ - --with-wayland \ - --enable-year2038 \ - --enable-socketserver \ - --enable-canberra - -%make_build +make %{?_smp_mflags} cp vim gvim make clean + +%configure --prefix=%{_prefix} --with-features=huge --enable-pythoninterp \ + --enable-perlinterp --disable-tclinterp --with-x=no \ + --enable-gui=no --exec-prefix=%{_prefix} --enable-multibyte \ + --enable-cscope --with-modified-by="" \ + --with-tlib=ncurses \ + --with-compiledby="" \ +%if "%{withnetbeans}" == "1" + --enable-netbeans \ +%else + --disable-netbeans \ %endif +make %{?_smp_mflags} +cp vim enhanced-vim +make clean + +#perl -pi -e "s/help.txt/vi-help.txt/" os_unix.h ex_cmds.c +perl -pi -e "s/\/etc\/vimrc/\/etc\/virc/" os_unix.h +%configure --prefix=%{_prefix} --with-features=small --with-x=no \ + --enable-multibyte \ + --disable-netbeans \ + --disable-pythoninterp --disable-perlinterp --disable-tclinterp \ + --with-tlib=ncurses --enable-gui=no --disable-gpm --exec-prefix=/ \ + --with-compiledby="" \ + --with-modified-by="" + +make %{?_smp_mflags} %install -mkdir -p %{buildroot}/%{_bindir} -mkdir -p %{buildroot}/%{_datadir}/%{name}/vimfiles/{after,autoload,colors,compiler,doc,ftdetect,ftplugin,indent,keymap,lang,plugin,print,spell,syntax,tutor} -mkdir -p %{buildroot}/%{_datadir}/%{name}/vimfiles/after/{autoload,colors,compiler,doc,ftdetect,ftplugin,indent,keymap,lang,plugin,print,spell,syntax,tutor} -cp -f %{SOURCE7} %{buildroot}/%{_datadir}/%{name}/vimfiles/template.spec -# Those aren't Linux info files but some binary files for Amiga: -rm -f README*.info +rm -rf $RPM_BUILD_ROOT +mkdir -p $RPM_BUILD_ROOT/bin +mkdir -p $RPM_BUILD_ROOT/%{_bindir} +mkdir -p $RPM_BUILD_ROOT/%{_datadir}/%{name}/vimfiles/after +cp -f %{SOURCE11} . +cp runtime/doc/uganda.txt LICENSE + cd src -# related to the issue with `make depend`, auto/osdef.h -# has to be generated -make auto/osdef.h auto/gui_gtk_gresources.h auto/wayland/wlr-data-control-unstable-v1.h -# Adding STRIP=/bin/true, because Vim wants to strip the binaries by himself -# and put the stripped files into correct dirs. Build system (koji/brew) -# does it for us, so there is no need to do it in Vim -%make_install BINDIR=%{_bindir} STRIP=/bin/true +make install DESTDIR=$RPM_BUILD_ROOT BINDIR=/bin +mv $RPM_BUILD_ROOT/bin/xxd $RPM_BUILD_ROOT/%{_bindir}/xxd +make installmacros DESTDIR=$RPM_BUILD_ROOT +mkdir -p $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/{16x16,32x32,48x48,64x64}/apps +install -m755 gvim $RPM_BUILD_ROOT/%{_bindir}/gvim +install -p -m644 %{SOURCE7} \ + $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/16x16/apps/gvim.png +install -p -m644 %{SOURCE8} \ + $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/32x32/apps/gvim.png +install -p -m644 %{SOURCE9} \ + $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/48x48/apps/gvim.png +install -p -m644 %{SOURCE10} \ + $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/64x64/apps/gvim.png +install -m755 enhanced-vim $RPM_BUILD_ROOT/%{_bindir}/vim -# make install creates vim binary and view symlink, they will be wrappers -# so remove them here -rm -f %{buildroot}%{_bindir}/{vim,view} -mkdir -p %{buildroot}%{_datadir}/icons/hicolor/{16x16,32x32,48x48,64x64}/apps -mkdir -p %{buildroot}%{_libexecdir} -install -m755 minimal-vim %{buildroot}%{_libexecdir}/vi -install -m755 enhanced-vim %{buildroot}%{_bindir}/vim -install -m755 %{SOURCE12} %{buildroot}%{_bindir}/view -install -m755 %{SOURCE13} %{buildroot}%{_bindir}/vi - -%if %{with gui} -make installgtutorbin DESTDIR=%{buildroot} BINDIR=%{_bindir} -install -m755 gvim %{buildroot}%{_bindir}/gvim -install -p -m644 %{SOURCE3} \ - %{buildroot}%{_datadir}/icons/hicolor/16x16/apps/gvim.png -install -p -m644 %{SOURCE4} \ - %{buildroot}%{_datadir}/icons/hicolor/32x32/apps/gvim.png -install -p -m644 %{SOURCE5} \ - %{buildroot}%{_datadir}/icons/hicolor/48x48/apps/gvim.png -install -p -m644 %{SOURCE6} \ - %{buildroot}%{_datadir}/icons/hicolor/64x64/apps/gvim.png - -# Register as an application to be visible in the software center -# -# NOTE: It would be *awesome* if this file was maintained by the upstream -# project, translated and installed into the right place during `make install`. -# -# See http://www.freedesktop.org/software/appstream/docs/ for more details. -# -mkdir -p $RPM_BUILD_ROOT%{_datadir}/metainfo -cat > $RPM_BUILD_ROOT%{_datadir}/metainfo/gvim.appdata.xml <<"EOF" - - - - - org.vim.Vim - GVim - CC0-1.0 - Vim - The VIM version of the vi editor for the X Window System - -

- Vim is an advanced text editor that seeks to provide the power of the - de-facto Unix editor 'Vi', with a more complete feature set. - It's useful whether you're already using vi or using a different editor. -

-

- Vim is a highly configurable text editor built to enable efficient text - editing. - Vim is often called a "programmer's editor," and so useful for programming - that many consider it an entire IDE. It is not just for programmers, though. - Vim is perfect for all kinds of text editing, from composing email to - editing configuration files. -

-

- We ship the current Vim stable release - %{baseversion} - with the upstream - patchlevel %{patchlevel} applied, which is combined into version %{version} - used during packaging. -

-
- - - - - - https://raw.githubusercontent.com/zdohnal/vim/zdohnal-screenshot/gvim16_9.png - - - http://www.vim.org/ - - - gvim.desktop -
-EOF - -appstream-util validate-relax --nonet %{buildroot}/%{_datadir}/metainfo/*.appdata.xml - -# do not put gvim.1, gview.1, eview.1, rgvim and rgview here - they already contains the link, -# and changing it here will rewrite original vim.1 - bz#2392178 -for i in gex.1 vimx.1 evim.1; do - echo ".so man1/vim.1" > %{buildroot}/%{_mandir}/man1/$i -done - -echo ".so man1/vimtutor.1" > %{buildroot}/%{_mandir}/man1/gvimtutor.1 -%else -# Remove files included in X11 subpackage, but built by default: -rm %{buildroot}/%{_mandir}/man1/evim.* -rm %{buildroot}/%{_datadir}/applications/{vim,gvim}.desktop -rm %{buildroot}/%{_datadir}/icons/{hicolor,locolor}/*/apps/gvim.png -%endif - -( cd %{buildroot} - ln -sf ../..%{_libexecdir}/vi .%{_bindir}/rvi - ln -sf ../..%{_libexecdir}/vi .%{_bindir}/rview - ln -sf ../..%{_libexecdir}/vi .%{_bindir}/ex - ln -sf vim .%{_bindir}/rvim - ln -sf vim .%{_bindir}/vimdiff - perl -pi -e "s,%{buildroot},," .%{_mandir}/man1/vim.1 .%{_mandir}/man1/vimtutor.1 +( cd $RPM_BUILD_ROOT + mv ./bin/vimtutor ./%{_bindir}/vimtutor + mv ./bin/vim ./bin/vi + rm -f ./bin/rvim + ln -sf vi ./bin/ex + ln -sf vi ./bin/rvi + ln -sf vi ./bin/rview + ln -sf vi ./bin/view + ln -sf vim ./%{_bindir}/ex + ln -sf vim ./%{_bindir}/rvim + ln -sf vim ./%{_bindir}/vimdiff + perl -pi -e "s,$RPM_BUILD_ROOT,," .%{_mandir}/man1/vim.1 .%{_mandir}/man1/vimtutor.1 rm -f .%{_mandir}/man1/rvim.1 - cp -p .%{_mandir}/man1/vim.1 .%{_mandir}/man1/vi.1 - ln -sf vi.1.gz .%{_mandir}/man1/rvi.1.gz - ln -sf vi.1.gz .%{_mandir}/man1/ex.1 - ln -sf vi.1.gz .%{_mandir}/man1/view.1 - ln -sf vi.1.gz .%{_mandir}/man1/rview.1 + ln -sf vim.1.gz .%{_mandir}/man1/vi.1.gz + ln -sf vim.1.gz .%{_mandir}/man1/rvi.1.gz + ln -sf vim.1.gz .%{_mandir}/man1/rvim.1.gz ln -sf vim.1.gz .%{_mandir}/man1/vimdiff.1.gz - -%if %{with gui} - ln -sf gvim ./%{_bindir}/evim - ln -sf gvim ./%{_bindir}/eview ln -sf gvim ./%{_bindir}/gview ln -sf gvim ./%{_bindir}/gex + ln -sf gvim ./%{_bindir}/evim ln -sf gvim ./%{_bindir}/gvimdiff - ln -sf gvim ./%{_bindir}/rgvim - ln -sf gvim ./%{_bindir}/rgview + ln -sf vim.1.gz .%{_mandir}/man1/gvim.1.gz + ln -sf vim.1.gz .%{_mandir}/man1/gvimdiff.1.gz ln -sf gvim ./%{_bindir}/vimx - %if "%{desktop_file}" == "1" - desktop-file-install \ - --dir %{buildroot}/%{_datadir}/applications \ - %{buildroot}/%{_datadir}/applications/gvim.desktop - # --add-category "Development;TextEditor;X-Red-Hat-Base" D\ + mkdir -p $RPM_BUILD_ROOT/%{_datadir}/applications + desktop-file-install --vendor fedora \ + --dir $RPM_BUILD_ROOT/%{_datadir}/applications \ + --add-category "Application;Development;X-Red-Hat-Base" \ + %{SOURCE3} %else mkdir -p ./%{_sysconfdir}/X11/applnk/Applications - cp %{buildroot}/%{_datadir}/applications/gvim.desktop ./%{_sysconfdir}/X11/applnk/Applications/gvim.desktop + cp %{SOURCE3} ./%{_sysconfdir}/X11/applnk/Applications/gvim.desktop %endif - -%endif - # ja_JP.ujis is obsolete, ja_JP.eucJP is recommended. ( cd ./%{_datadir}/%{name}/%{vimdir}/lang; \ ln -sf menu_ja_jp.ujis.vim menu_ja_jp.eucjp.vim ) ) +pushd $RPM_BUILD_ROOT/%{_datadir}/%{name}/%{vimdir}/tutor +mkdir conv + iconv -f CP1252 -t UTF8 tutor.ca > conv/tutor.ca + iconv -f CP1252 -t UTF8 tutor.it > conv/tutor.it + iconv -f CP1253 -t UTF8 tutor.gr > conv/tutor.gr + iconv -f CP1252 -t UTF8 tutor.fr > conv/tutor.fr + iconv -f CP1252 -t UTF8 tutor.es > conv/tutor.es + iconv -f CP1252 -t UTF8 tutor.de > conv/tutor.de + #iconv -f CP737 -t UTF8 tutor.gr.cp737 > conv/tutor.gr.cp737 + #iconv -f EUC-JP -t UTF8 tutor.ja.euc > conv/tutor.ja.euc + #iconv -f SJIS -t UTF8 tutor.ja.sjis > conv/tutor.ja.sjis + iconv -f UTF8 -t UTF8 tutor.ja.utf-8 > conv/tutor.ja.utf-8 + iconv -f UTF8 -t UTF8 tutor.ko.utf-8 > conv/tutor.ko.utf-8 + iconv -f CP1252 -t UTF8 tutor.no > conv/tutor.no + iconv -f ISO-8859-2 -t UTF8 tutor.pl > conv/tutor.pl + iconv -f ISO-8859-2 -t UTF8 tutor.sk > conv/tutor.sk + iconv -f KOI8R -t UTF8 tutor.ru > conv/tutor.ru + iconv -f CP1252 -t UTF8 tutor.sv > conv/tutor.sv + mv -f tutor.gr.cp737 tutor.ja.euc tutor.ja.sjis tutor.ko.euc tutor.pl.cp1250 tutor.zh.big5 tutor.ru.cp1251 tutor.zh.euc conv/ + rm -f tutor.ca tutor.de tutor.es tutor.fr tutor.gr tutor.it tutor.ja.utf-8 tutor.ko.utf-8 tutor.no tutor.pl tutor.sk tutor.ru tutor.sv +mv -f conv/* . +rmdir conv +popd + # Dependency cleanups -chmod 644 %{buildroot}/%{_datadir}/%{name}/%{vimdir}/doc/vim2html.pl \ - %{buildroot}/%{_datadir}/%{name}/%{vimdir}/tools/*.pl \ - %{buildroot}/%{_datadir}/%{name}/%{vimdir}/tools/vim132 +chmod 644 $RPM_BUILD_ROOT/%{_datadir}/%{name}/%{vimdir}/doc/vim2html.pl \ + $RPM_BUILD_ROOT/%{_datadir}/%{name}/%{vimdir}/tools/*.pl \ + $RPM_BUILD_ROOT/%{_datadir}/%{name}/%{vimdir}/tools/vim132 chmod 644 ../runtime/doc/vim2html.pl -mkdir -p %{buildroot}%{_sysconfdir} -install -p -m644 %{SOURCE1} %{buildroot}%{_sysconfdir}/virc -install -p -m644 %{SOURCE2} %{buildroot}%{_sysconfdir}/vimrc - -mkdir -p %{buildroot}%{_rpmconfigdir}/macros.d/ -install -p -m644 %{SOURCE8} %{buildroot}%{_rpmconfigdir}/macros.d/ - +mkdir -p $RPM_BUILD_ROOT/%{_sysconfdir}/profile.d +cat >$RPM_BUILD_ROOT/%{_sysconfdir}/profile.d/vim.sh </dev/null 2>&1 || alias vi=vim +fi +EOF +cat >$RPM_BUILD_ROOT/%{_sysconfdir}/profile.d/vim.csh < tags.new; mv -f tags.new tags +# cp %{SOURCE12} . + ) (cd ../runtime; rm -rf doc; ln -svf ../../vim/%{vimdir}/doc docs;) -rm -f %{buildroot}/%{_datadir}/vim/%{vimdir}/macros/maze/maze*.c -rm -rf %{buildroot}/%{_datadir}/vim/%{vimdir}/tools -rm -rf %{buildroot}/%{_datadir}/vim/%{vimdir}/doc/vim2html.pl -rm -f %{buildroot}/%{_datadir}/vim/%{vimdir}/tutor/tutor.gr.utf-8~ +rm -f $RPM_BUILD_ROOT/%{_datadir}/vim/%{vimdir}/macros/maze/maze*.c +rm -rf $RPM_BUILD_ROOT/%{_datadir}/vim/%{vimdir}/tools +rm -rf $RPM_BUILD_ROOT/%{_datadir}/vim/%{vimdir}/doc/vim2html.pl +rm -f $RPM_BUILD_ROOT/%{_datadir}/vim/%{vimdir}/tutor/tutor.gr.utf-8~ +( cd $RPM_BUILD_ROOT/%{_mandir} + for i in `find ??/ -type f`; do + bi=`basename $i` + iconv -f latin1 -t UTF8 $i > $RPM_BUILD_ROOT/$bi + mv -f $RPM_BUILD_ROOT/$bi $i + done +) -# Remove not UTF-8 manpages -for i in pl.ISO8859-2 it.ISO8859-1 ru.KOI8-R fr.ISO8859-1 da.ISO8859-1 de.ISO8859-1 tr.ISO8859-9; do - rm -rf %{buildroot}/%{_mandir}/$i -done +%post X11 +touch --no-create %{_datadir}/icons/hicolor +if [ -x /%{_bindir}/gtk-update-icon-cache ]; then + gtk-update-icon-cache --ignore-theme-index -q %{_datadir}/icons/hicolor +fi +update-desktop-database &> /dev/null ||: -# use common man1/ru directory -mv %{buildroot}/%{_mandir}/ru.UTF-8 %{buildroot}/%{_mandir}/ru +%postun X11 +touch --no-create %{_datadir}/icons/hicolor +if [ -x /%{_bindir}/gtk-update-icon-cache ]; then + gtk-update-icon-cache --ignore-theme-index -q %{_datadir}/icons/hicolor +fi +update-desktop-database &> /dev/null ||: -# Remove duplicate man pages -for i in fr.UTF-8 it.UTF-8 pl.UTF-8 da.UTF-8 de.UTF-8 tr.UTF-8; do - rm -rf %{buildroot}/%{_mandir}/$i -done - -# Install symlink for rvim man page -echo ".so man1/vim.1" > %{buildroot}/%{_mandir}/man1/rvim.1 - -mkdir -p %{buildroot}/%{_mandir}/man5 -echo ".so man1/vim.1" > %{buildroot}/%{_mandir}/man5/vimrc.5 -echo ".so man1/vi.1" > %{buildroot}/%{_mandir}/man5/virc.5 -touch %{buildroot}/%{_datadir}/%{name}/vimfiles/doc/tags - -# upstream now tries to install LICENSE and README into VIMDIR -# but we ship them in licensedir and docdir, so we remove the dupes -# from VIMDIR -rm %{buildroot}%{_datadir}/%{name}/%{vimdir}/LICENSE -rm %{buildroot}%{_datadir}/%{name}/%{vimdir}/README.txt - -# if Vim isn't built for Fedora, use redhat augroup -%if 0%{?rhel} >= 7 -sed -i -e "s/augroup fedora/augroup redhat/" %{buildroot}/%{_sysconfdir}/vimrc -sed -i -e "s/augroup fedora/augroup redhat/" %{buildroot}/%{_sysconfdir}/virc -%endif - -%if %{with default_editor} -mkdir -p %{buildroot}/%{_sysconfdir}/profile.d -install -p -m644 %{SOURCE9} %{buildroot}/%{_sysconfdir}/profile.d/vim-default-editor.sh -install -p -m644 %{SOURCE10} %{buildroot}/%{_sysconfdir}/profile.d/vim-default-editor.csh -mkdir -p %{buildroot}/%{_datadir}/fish/vendor_conf.d/ -install -p -m644 %{SOURCE11} %{buildroot}/%{_datadir}/fish/vendor_conf.d/vim-default-editor.fish -mkdir -p %{buildroot}/%{_datadir}/fish/vendor_functions.d/ -%endif - - -# Refresh documentation helptags -%transfiletriggerin common -- %{_datadir}/%{name}/vimfiles/doc -%{_bindir}/vim -c ":helptags %{_datadir}/%{name}/vimfiles/doc" -c :q &> /dev/null || : - -%transfiletriggerpostun common -- %{_datadir}/%{name}/vimfiles/doc -> %{_datadir}/%{name}/vimfiles/doc/tags || : -%{_bindir}/vim -c ":helptags %{_datadir}/%{name}/vimfiles/doc" -c :q &> /dev/null || : +%clean +rm -rf $RPM_BUILD_ROOT %files common +%defattr(-,root,root) %config(noreplace) %{_sysconfdir}/vimrc -%{!?_licensedir:%global license %%doc} -%doc README* +%doc README* LICENSE %doc runtime/docs +%doc Changelog.rpm +%dir %{_datadir}/%{name} +%dir %{_datadir}/%{name}/%{vimdir} +%dir %{_datadir}/%{name}/vimfiles +%dir %{_datadir}/%{name}/vimfiles/after %{_datadir}/%{name}/%{vimdir}/autoload %{_datadir}/%{name}/%{vimdir}/colors %{_datadir}/%{name}/%{vimdir}/compiler -%{_datadir}/%{name}/%{vimdir}/pack %{_datadir}/%{name}/%{vimdir}/doc +#exclude /%{_bindir}/vim/%{vimdir}/doc/vi-help.txt %{_datadir}/%{name}/%{vimdir}/*.vim -%exclude %{_datadir}/%{name}/%{vimdir}/defaults.vim %{_datadir}/%{name}/%{vimdir}/ftplugin -%{_datadir}/%{name}/%{vimdir}/import/dist/vimhelp.vim -%{_datadir}/%{name}/%{vimdir}/import/dist/vimhighlight.vim %{_datadir}/%{name}/%{vimdir}/indent %{_datadir}/%{name}/%{vimdir}/keymap %{_datadir}/%{name}/%{vimdir}/lang/*.vim @@ -830,3104 +923,447 @@ mkdir -p %{buildroot}/%{_datadir}/fish/vendor_functions.d/ %{_datadir}/%{name}/%{vimdir}/print %{_datadir}/%{name}/%{vimdir}/syntax %{_datadir}/%{name}/%{vimdir}/tutor +%if ! %{withvimspell} %{_datadir}/%{name}/%{vimdir}/spell +%endif %lang(af) %{_datadir}/%{name}/%{vimdir}/lang/af %lang(ca) %{_datadir}/%{name}/%{vimdir}/lang/ca %lang(cs) %{_datadir}/%{name}/%{vimdir}/lang/cs -%lang(cs.cp1250) %{_datadir}/%{name}/%{vimdir}/lang/cs.cp1250 -%lang(da) %{_datadir}/%{name}/%{vimdir}/lang/da %lang(de) %{_datadir}/%{name}/%{vimdir}/lang/de %lang(en_GB) %{_datadir}/%{name}/%{vimdir}/lang/en_GB -%lang(eo) %{_datadir}/%{name}/%{vimdir}/lang/eo %lang(es) %{_datadir}/%{name}/%{vimdir}/lang/es -%lang(fi) %{_datadir}/%{name}/%{vimdir}/lang/fi %lang(fr) %{_datadir}/%{name}/%{vimdir}/lang/fr %lang(ga) %{_datadir}/%{name}/%{vimdir}/lang/ga -%lang(hu) %{_datadir}/%{name}/%{vimdir}/lang/hu -%lang(hy) %{_datadir}/%{name}/%{vimdir}/lang/hy %lang(it) %{_datadir}/%{name}/%{vimdir}/lang/it %lang(ja) %{_datadir}/%{name}/%{vimdir}/lang/ja -%lang(ja.euc-jp) %{_datadir}/%{name}/%{vimdir}/lang/ja.euc-jp -%lang(ja.sjis) %{_datadir}/%{name}/%{vimdir}/lang/ja.sjis %lang(ko) %{_datadir}/%{name}/%{vimdir}/lang/ko -%lang(ko) %{_datadir}/%{name}/%{vimdir}/lang/ko.UTF-8 -%lang(lv) %{_datadir}/%{name}/%{vimdir}/lang/lv -%lang(nb) %{_datadir}/%{name}/%{vimdir}/lang/nb -%lang(nl) %{_datadir}/%{name}/%{vimdir}/lang/nl %lang(no) %{_datadir}/%{name}/%{vimdir}/lang/no %lang(pl) %{_datadir}/%{name}/%{vimdir}/lang/pl -%lang(pl.UTF-8) %{_datadir}/%{name}/%{vimdir}/lang/pl.UTF-8 -%lang(pl.cp1250) %{_datadir}/%{name}/%{vimdir}/lang/pl.cp1250 -%lang(pt_BR) %{_datadir}/%{name}/%{vimdir}/lang/pt_BR %lang(ru) %{_datadir}/%{name}/%{vimdir}/lang/ru -%lang(ru.cp1251) %{_datadir}/%{name}/%{vimdir}/lang/ru.cp1251 %lang(sk) %{_datadir}/%{name}/%{vimdir}/lang/sk -%lang(sk.cp1250) %{_datadir}/%{name}/%{vimdir}/lang/sk.cp1250 -%lang(sr) %{_datadir}/%{name}/%{vimdir}/lang/sr %lang(sv) %{_datadir}/%{name}/%{vimdir}/lang/sv -%lang(tr) %{_datadir}/%{name}/%{vimdir}/lang/tr %lang(uk) %{_datadir}/%{name}/%{vimdir}/lang/uk -%lang(uk.cp1251) %{_datadir}/%{name}/%{vimdir}/lang/uk.cp1251 %lang(vi) %{_datadir}/%{name}/%{vimdir}/lang/vi %lang(zh_CN) %{_datadir}/%{name}/%{vimdir}/lang/zh_CN -%lang(zh_CN.cp936) %{_datadir}/%{name}/%{vimdir}/lang/zh_CN.cp936 %lang(zh_TW) %{_datadir}/%{name}/%{vimdir}/lang/zh_TW %lang(zh_CN.UTF-8) %{_datadir}/%{name}/%{vimdir}/lang/zh_CN.UTF-8 %lang(zh_TW.UTF-8) %{_datadir}/%{name}/%{vimdir}/lang/zh_TW.UTF-8 -%{_mandir}/man1/rvim.* +/%{_bindir}/xxd %{_mandir}/man1/vim.* -%{_mandir}/man1/vimdiff.* -%{_mandir}/man1/vimtutor.* -%{_mandir}/man5/vimrc.* - -%if %{with gui} -%{_mandir}/man1/eview.* -%{_mandir}/man1/evim.* -%{_mandir}/man1/gex.* -%{_mandir}/man1/gview.* -%{_mandir}/man1/gvim* -%{_mandir}/man1/rgvim.* -%{_mandir}/man1/rgview.* -%{_mandir}/man1/vimx.* -%endif - -%lang(fr) %{_mandir}/fr/man1/* -%lang(da) %{_mandir}/da/man1/* -%lang(de) %{_mandir}/de/man1/* -%lang(it) %{_mandir}/it/man1/* -%lang(ja) %{_mandir}/ja/man1/* -%lang(pl) %{_mandir}/pl/man1/* -%lang(ru) %{_mandir}/ru/man1/* -%lang(tr) %{_mandir}/tr/man1/* - -%files minimal -%config(noreplace) %{_sysconfdir}/virc -%{_bindir}/ex -%{_bindir}/rvi -%{_bindir}/rview -%{_bindir}/vi -%{_bindir}/view -%{_libexecdir}/vi -%{_mandir}/man1/vi.* %{_mandir}/man1/ex.* +%{_mandir}/man1/vi.* +%{_mandir}/man1/view.* %{_mandir}/man1/rvi.* %{_mandir}/man1/rview.* -%{_mandir}/man1/view.* -%{_mandir}/man5/virc.* +%{_mandir}/man1/xxd.* +%lang(fr) %{_mandir}/fr*/*/* +%lang(it) %{_mandir}/it*/*/* +%lang(ru) %{_mandir}/ru*/*/* +%lang(pl) %{_mandir}/pl*/*/* + +%if %{withvimspell} +%files spell +%defattr(-,root,root) +%dir %{_datadir}/%{name}/%{vimdir}/spell +%{_datadir}/%{name}/vim70/spell/cleanadd.vim +%lang(af) %{_datadir}/%{name}/%{vimdir}/spell/af.* +%lang(am) %{_datadir}/%{name}/%{vimdir}/spell/am.* +%lang(bg) %{_datadir}/%{name}/%{vimdir}/spell/bg.* +%lang(ca) %{_datadir}/%{name}/%{vimdir}/spell/ca.* +%lang(cs) %{_datadir}/%{name}/%{vimdir}/spell/cs.* +%lang(cy) %{_datadir}/%{name}/%{vimdir}/spell/cy.* +%lang(da) %{_datadir}/%{name}/%{vimdir}/spell/da.* +%lang(de) %{_datadir}/%{name}/%{vimdir}/spell/de.* +%lang(el) %{_datadir}/%{name}/%{vimdir}/spell/el.* +%lang(en) %{_datadir}/%{name}/%{vimdir}/spell/en.* +%lang(eo) %{_datadir}/%{name}/%{vimdir}/spell/eo.* +%lang(es) %{_datadir}/%{name}/%{vimdir}/spell/es.* +%lang(fo) %{_datadir}/%{name}/%{vimdir}/spell/fo.* +%lang(fr) %{_datadir}/%{name}/%{vimdir}/spell/fr.* +%lang(ga) %{_datadir}/%{name}/%{vimdir}/spell/ga.* +%lang(gd) %{_datadir}/%{name}/%{vimdir}/spell/gd.* +%lang(gl) %{_datadir}/%{name}/%{vimdir}/spell/gl.* +%lang(he) %{_datadir}/%{name}/%{vimdir}/spell/he.* +%lang(hr) %{_datadir}/%{name}/%{vimdir}/spell/hr.* +%lang(hu) %{_datadir}/%{name}/%{vimdir}/spell/hu.* +%lang(id) %{_datadir}/%{name}/%{vimdir}/spell/id.* +%lang(it) %{_datadir}/%{name}/%{vimdir}/spell/it.* +%lang(ku) %{_datadir}/%{name}/%{vimdir}/spell/ku.* +%lang(la) %{_datadir}/%{name}/%{vimdir}/spell/la.* +%lang(lt) %{_datadir}/%{name}/%{vimdir}/spell/lt.* +%lang(lv) %{_datadir}/%{name}/%{vimdir}/spell/lv.* +%lang(mg) %{_datadir}/%{name}/%{vimdir}/spell/mg.* +%lang(mi) %{_datadir}/%{name}/%{vimdir}/spell/mi.* +%lang(ms) %{_datadir}/%{name}/%{vimdir}/spell/ms.* +%lang(nb) %{_datadir}/%{name}/%{vimdir}/spell/nb.* +%lang(nl) %{_datadir}/%{name}/%{vimdir}/spell/nl.* +%lang(nn) %{_datadir}/%{name}/%{vimdir}/spell/nn.* +%lang(ny) %{_datadir}/%{name}/%{vimdir}/spell/ny.* +%lang(pl) %{_datadir}/%{name}/%{vimdir}/spell/pl.* +%lang(pt) %{_datadir}/%{name}/%{vimdir}/spell/pt.* +%lang(ro) %{_datadir}/%{name}/%{vimdir}/spell/ro.* +%lang(ru) %{_datadir}/%{name}/%{vimdir}/spell/ru.* +%lang(rw) %{_datadir}/%{name}/%{vimdir}/spell/rw.* +%lang(sk) %{_datadir}/%{name}/%{vimdir}/spell/sk.* +%lang(sl) %{_datadir}/%{name}/%{vimdir}/spell/sl.* +%lang(sv) %{_datadir}/%{name}/%{vimdir}/spell/sv.* +%lang(sw) %{_datadir}/%{name}/%{vimdir}/spell/sw.* +%lang(tet) %{_datadir}/%{name}/%{vimdir}/spell/tet.* +%lang(th) %{_datadir}/%{name}/%{vimdir}/spell/th.* +%lang(tl) %{_datadir}/%{name}/%{vimdir}/spell/tl.* +%lang(tn) %{_datadir}/%{name}/%{vimdir}/spell/tn.* +%lang(uk) %{_datadir}/%{name}/%{vimdir}/spell/uk.* +%lang(yi) %{_datadir}/%{name}/%{vimdir}/spell/yi.* +%lang(yi-tr) %{_datadir}/%{name}/%{vimdir}/spell/yi-tr.* +%lang(zu) %{_datadir}/%{name}/%{vimdir}/spell/zu.* +%endif + +%files minimal +%defattr(-,root,root) +%config(noreplace) %{_sysconfdir}/virc +/bin/ex +/bin/vi +/bin/view +/bin/rvi +/bin/rview +#%{_datadir}/%{name}/%{vimdir}/doc/vi-help.txt %files enhanced -%{_bindir}/rvim +%defattr(-,root,root) %{_bindir}/vim +%{_bindir}/rvim %{_bindir}/vimdiff +%{_bindir}/ex %{_bindir}/vimtutor +%config(noreplace) %{_sysconfdir}/profile.d/vim.* +%{_mandir}/man1/rvim.* +%{_mandir}/man1/vimdiff.* +%{_mandir}/man1/vimtutor.* -%files filesystem -%{_rpmconfigdir}/macros.d/macros.vim -%dir %{_datadir}/%{name}/vimfiles/after -%dir %{_datadir}/%{name}/vimfiles/after/* -%dir %{_datadir}/%{name}/vimfiles/autoload -%dir %{_datadir}/%{name}/vimfiles/colors -%dir %{_datadir}/%{name}/vimfiles/compiler -%dir %{_datadir}/%{name}/vimfiles/doc -%ghost %{_datadir}/%{name}/vimfiles/doc/tags -%dir %{_datadir}/%{name}/vimfiles/ftdetect -%dir %{_datadir}/%{name}/vimfiles/ftplugin -%dir %{_datadir}/%{name}/%{vimdir}/import -%dir %{_datadir}/%{name}/%{vimdir}/import/dist -%dir %{_datadir}/%{name}/vimfiles/indent -%dir %{_datadir}/%{name}/vimfiles/keymap -%dir %{_datadir}/%{name}/vimfiles/lang -%dir %{_datadir}/%{name}/vimfiles/plugin -%dir %{_datadir}/%{name}/vimfiles/print -%dir %{_datadir}/%{name}/vimfiles/spell -%dir %{_datadir}/%{name}/vimfiles/syntax -%dir %{_datadir}/%{name}/vimfiles/tutor - -%if %{with gui} %files X11 - %if "%{desktop_file}" == "1" -%{_datadir}/metainfo/*.appdata.xml +%defattr(-,root,root) +%if "%{desktop_file}" == "1" /%{_datadir}/applications/* -%exclude /%{_datadir}/applications/vim.desktop - %else +%else /%{_sysconfdir}/X11/applnk/*/gvim.desktop - %endif -%{_bindir}/gvimtutor +%endif %{_bindir}/gvim %{_bindir}/gvimdiff %{_bindir}/gview %{_bindir}/gex -%{_bindir}/vimtutor %{_bindir}/vimx %{_bindir}/evim -%{_bindir}/eview -%{_bindir}/rgvim -%{_bindir}/rgview -%dir %{_datadir}/icons/hicolor -%dir %{_datadir}/icons/hicolor/* -%dir %{_datadir}/icons/hicolor/*/apps +%{_mandir}/man1/evim.* +%{_mandir}/man1/gvim* %{_datadir}/icons/hicolor/*/apps/* -%dir %{_datadir}/icons/locolor -%dir %{_datadir}/icons/locolor/* -%dir %{_datadir}/icons/locolor/*/apps -%{_datadir}/icons/locolor/*/apps/* -%endif - -%files data -%license LICENSE -%dir %{_datadir}/%{name} -%dir %{_datadir}/%{name}/%{vimdir} -%{_datadir}/%{name}/%{vimdir}/defaults.vim -%dir %{_datadir}/%{name}/vimfiles -%{_datadir}/%{name}/vimfiles/template.spec - -%if %{with default_editor} -%files default-editor -%dir %{_datadir}/fish/vendor_conf.d -%{_datadir}/fish/vendor_conf.d/vim-default-editor.fish -%config(noreplace) %{_sysconfdir}/profile.d/vim-default-editor.* -%endif - -%files -n xxd -%license LICENSE -%{_bindir}/xxd -%{_mandir}/man1/xxd.* - %changelog -* Fri Jan 09 2026 Zdenek Dohnal - 2:9.1.2068-1 -- patchlevel 2068 +* Mon Feb 11 2008 Karsten Hopp 7.1.245-1 +- patchlevel 245 -* Fri Dec 19 2025 Zdenek Dohnal - 2:9.1.1999-1 -- patchlevel 1999 +* Sun Jan 27 2008 Karsten Hopp 7.1.242-1 +- patchlevel 242 -* Fri Dec 12 2025 Zdenek Dohnal - 2:9.1.1972-1 -- patchlevel 1972 +* Fri Jan 18 2008 Karsten Hopp 7.1.233-2 +- silence taglist plugin (#429200) -* Fri Dec 05 2025 Zdenek Dohnal - 2:9.1.1952-1 -- patchlevel 1952 - -* Fri Nov 14 2025 Zdenek Dohnal - 2:9.1.1914-1 -- patchlevel 1914 - -* Fri Oct 31 2025 Zdenek Dohnal - 2:9.1.1888-1 -- patchlevel 1888 - -* Fri Oct 17 2025 Zdenek Dohnal - 2:9.1.1863-1 -- patchlevel 1863 - -* Fri Oct 10 2025 Zdenek Dohnal - 2:9.1.1845-1 -- patchlevel 1845 - -* Fri Oct 03 2025 Zdenek Dohnal - 2:9.1.1818-1 -- patchlevel 1818 - -* Mon Sep 29 2025 Zdenek Dohnal - 2:9.1.1775-2 -- remove XPM support - GVim icons work without it - -* Fri Sep 19 2025 Zdenek Dohnal - 2:9.1.1775-1 -- patchlevel 1775 - -* Wed Sep 10 2025 Zdenek Dohnal - 2:9.1.1723-2 -- Restore lost --remote-tab... functionality on wayland (fedora#2393716) - -* Mon Sep 01 2025 Zdenek Dohnal - 2:9.1.1723-1 -- patchlevel 1723 - -* Mon Sep 01 2025 Zdenek Dohnal - 2:9.1.1706-2 -- broken /usr/bin/ex symlink in vim-9.1.1706-1.fc42 (fedora#2392249) -- vim-common has broken manpages (fedora#2392178) - -* Fri Aug 29 2025 Zdenek Dohnal - 2:9.1.1706-1 -- patchlevel 1706 - -* Mon Aug 11 2025 Zdenek Dohnal - 2:9.1.1623-1 -- patchlevel 1623 - -* Fri Aug 01 2025 Zdenek Dohnal - 2:9.1.1591-1 -- patchlevel 1591 - -* Fri Jul 25 2025 Fedora Release Engineering - 2:9.1.1552-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild - -* Wed Jul 16 2025 Zdenek Dohnal - 2:9.1.1552-1 -- patchlevel 1552 - -* Mon Jul 14 2025 Zdenek Dohnal - 2:9.1.1537-2 -- 2379759 - remove wayland-libs from vim and vi (fedora#2379759) - -* Fri Jul 11 2025 Zdenek Dohnal - 2:9.1.1537-1 -- patchlevel 1537 - -* Fri Jun 27 2025 Zdenek Dohnal - 2:9.1.1484-1 -- patchlevel 1484 - -* Thu Jun 19 2025 Zdenek Dohnal - 2:9.1.1435-2 -- FTBFS with Python 3.14 (fedora#2373314) - -* Fri Jun 06 2025 Zdenek Dohnal - 2:9.1.1435-1 -- patchlevel 1435 - -* Fri May 30 2025 Zdenek Dohnal - 2:9.1.1418-1 -- patchlevel 1418 - -* Fri Apr 11 2025 Zdenek Dohnal - 2:9.1.1291-1 -- patchlevel 1291 - -* Fri Apr 04 2025 Zdenek Dohnal - 2:9.1.1275-1 -- patchlevel 1275 - -* Fri Mar 21 2025 Zdenek Dohnal - 2:9.1.1227-1 -- patchlevel 1227 - -* Fri Mar 14 2025 Zdenek Dohnal - 2:9.1.1202-1 -- patchlevel 1202 - -* Fri Mar 07 2025 Zdenek Dohnal - 2:9.1.1179-1 -- patchlevel 1179 - -* Tue Mar 04 2025 Zdenek Dohnal - 2:9.1.1169-1 -- patchlevel 1169 - -* Wed Feb 19 2025 Zdenek Dohnal - 2:9.1.1122-1 -- patchlevel 1122 - -* Fri Feb 07 2025 Zdenek Dohnal - 2:9.1.1081-1 -- patchlevel 1081 - -* Mon Feb 03 2025 Zdenek Dohnal - 2:9.1.1000-2 -- Fix FTBFS (fedora#2341508) - -* Sun Jan 19 2025 Fedora Release Engineering - 2:9.1.1000-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild - -* Fri Jan 10 2025 Zdenek Dohnal - 2:9.1.1000-1 -- patchlevel 1000 - -* Fri Jan 03 2025 Zdenek Dohnal - 2:9.1.984-1 -- patchlevel 984 - -* Fri Dec 13 2024 Zdenek Dohnal - 2:9.1.919-1 -- patchlevel 919 - -* Fri Dec 06 2024 Zdenek Dohnal - 2:9.1.906-1 -- patchlevel 906 - -* Fri Nov 29 2024 Zdenek Dohnal - 2:9.1.895-1 -- patchlevel 895 - -* Fri Nov 15 2024 Zdenek Dohnal - 2:9.1.866-1 -- patchlevel 866 - -* Fri Nov 01 2024 Zdenek Dohnal - 2:9.1.825-1 -- patchlevel 825 - -* Tue Oct 15 2024 Zdenek Dohnal - 2:9.1.785-1 -- patchlevel 785 - -* Fri Sep 20 2024 Zdenek Dohnal - 2:9.1.737-1 -- patchlevel 737 (fedora#2311860) - -* Fri Sep 06 2024 Zdenek Dohnal - 2:9.1.719-1 -- patchlevel 719 - -* Fri Aug 30 2024 Zdenek Dohnal - 2:9.1.703-1 -- patchlevel 703 - -* Mon Aug 12 2024 Zdenek Dohnal - 2:9.1.672-1 -- patchlevel 672 - -* Fri Aug 09 2024 Zdenek Dohnal - 2:9.1.660-2 -- 2303669 - vim in rawhide (41) can't load python library - -* Mon Aug 05 2024 Zdenek Dohnal - 2:9.1.660-1 -- patchlevel 660 - -* Fri Jul 26 2024 Benjamin Gilbert - 2:9.1.571-3 -- Require gdk-pixbuf2-modules-extra on F41+ -X11 for XPM loading (rhbz#2277751) - -* Sat Jul 20 2024 Fedora Release Engineering - 2:9.1.571-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild - -* Fri Jul 12 2024 Zdenek Dohnal - 2:9.1.571-1 -- patchlevel 571 - -* Fri Jul 12 2024 Zdenek Dohnal - 2:9.1.544-2 -- fix upstream-scripttests in CI - new test needs our downstream 'set mouse=a' to pass - -* Mon Jul 08 2024 Zdenek Dohnal - 2:9.1.544-1 -- patchlevel 544 - -* Fri May 31 2024 Zdenek Dohnal - 2:9.1.452-1 -- patchlevel 452 - -* Mon May 06 2024 Zdenek Dohnal - 2:9.1.393-1 -- patchlevel 393 - -* Fri Apr 19 2024 Zdenek Dohnal - 2:9.1.354-1 -- patchlevel 354 - -* Fri Apr 12 2024 Zdenek Dohnal - 2:9.1.309-1 -- patchlevel 309 - -* Fri Apr 05 2024 Zdenek Dohnal - 2:9.1.264-1 -- patchlevel 264 - -* Tue Apr 02 2024 Zdenek Dohnal - 2:9.1.252-1 -- patchlevel 252 - -* Fri Mar 15 2024 Zdenek Dohnal - 2:9.1.181-1 -- patchlevel 181 - -* Fri Mar 08 2024 Zdenek Dohnal - 2:9.1.158-1 -- patchlevel 158 - -* Fri Feb 16 2024 Zdenek Dohnal - 2:9.1.113-1 -- patchlevel 113 - -* Fri Feb 09 2024 Zdenek Dohnal - 2:9.1.083-1 -- patchlevel 083 - -* Mon Feb 05 2024 Zdenek Dohnal - 2:9.1.076-2 -- enable building without GPM support - build with GPM in Fedora -- 2262371 - gvim: symbol lookup error: gvim: undefined symbol: g_once_init_enter_pointer - -* Mon Feb 05 2024 Zdenek Dohnal - 2:9.1.076-1 -- patchlevel 076 - -* Sat Jan 27 2024 Fedora Release Engineering - 2:9.1.031-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Tue Jan 16 2024 Zdenek Dohnal - 2:9.1.031-1 -- patchlevel 031 - -* Mon Jan 08 2024 Zdenek Dohnal - 2:9.1.016-1 -- patchlevel 016 - -* Tue Jan 02 2024 Zdenek Dohnal - 2:9.0.2190-1 -- patchlevel 2190 - -* Fri Dec 15 2023 Zdenek Dohnal - 2:9.0.2167-1 -- patchlevel 2167 - -* Fri Dec 08 2023 Zdenek Dohnal - 2:9.0.2153-1 -- patchlevel 2153 - -* Wed Nov 22 2023 Zdenek Dohnal - 2:9.0.2120-1 -- patchlevel 2120 - -* Thu Nov 16 2023 Zdenek Dohnal - 2:9.0.2105-1 -- patchlevel 2105 - -* Wed Nov 01 2023 Zdenek Dohnal - 2:9.0.2081-1 -- patchlevel 2081 - -* Wed Oct 18 2023 Zdenek Dohnal - 2:9.0.2048-1 -- patchlevel 2048 - -* Thu Oct 05 2023 Remi Collet - 2:9.0.1984-2 -- rebuild for new libsodium - -* Thu Oct 05 2023 Zdenek Dohnal - 2:9.0.1984-1 -- patchlevel 1984 - -* Mon Oct 02 2023 Zdenek Dohnal - 2:9.0.1968-1 -- patchlevel 1968 - -* Fri Sep 22 2023 Zdenek Dohnal - 2:9.0.1927-1 -- patchlevel 1927 - -* Thu Sep 07 2023 Zdenek Dohnal - 2:9.0.1882-1 -- patchlevel 1882 - -* Wed Sep 06 2023 Zdenek Dohnal - 2:9.0.1872-2 -- test_xxd_color2 is flaky - -* Tue Sep 05 2023 Zdenek Dohnal - 2:9.0.1872-1 -- patchlevel 1872 - -* Wed Aug 30 2023 Zdenek Dohnal - 2:9.0.1822-1 -- patchlevel 1822 - -* Mon Aug 14 2023 Zdenek Dohnal - 2:9.0.1712-1 -- patchlevel 1712 - -* Fri Aug 11 2023 Zdenek Dohnal - 2:9.0.1677-4 -- fix test suite from python3 syntax warnings - -* Sat Jul 22 2023 Fedora Release Engineering - 2:9.0.1677-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild - -* Thu Jul 13 2023 Zdenek Dohnal - 2:9.0.1677-2 -- 2222671 - fix FTBFS due Python3 rebase -- 2222648 - fix FailToInstall due Perl rebase - -* Tue Jul 11 2023 Zdenek Dohnal - 2:9.0.1677-2 -- patchlevel 1677 - -* Tue Jul 11 2023 Jitka Plesnikova - 2:9.0.1671-2 -- Perl 5.38 rebuild - -* Fri Jun 30 2023 Zdenek Dohnal - 2:9.0.1671-1 -- patchlevel 1671 - -* Fri Jun 23 2023 Zdenek Dohnal - 2:9.0.1649-1 -- patchlevel 1649 - -* Tue Jun 13 2023 Zdenek Dohnal - 2:9.0.1627-1 -- patchlevel 1627 - -* Mon Jun 05 2023 Zdenek Dohnal - 2:9.0.1607-1 -- patchlevel 1607 - -* Wed May 31 2023 Zdenek Dohnal - 2:9.0.1592-1 -- patchlevel 1592 - -* Mon May 29 2023 Zdenek Dohnal - 2:9.0.1587-1 -- patchlevel 1587 - -* Wed May 24 2023 Zdenek Dohnal - 2:9.0.1575-1 -- patchlevel 1575 - -* Thu May 18 2023 Zdenek Dohnal - 2:9.0.1562-1 -- patchlevel 1562 - -* Thu Apr 27 2023 Zdenek Dohnal - 2:9.0.1491-1 -- patchlevel 1491 - -* Tue Apr 25 2023 Zdenek Dohnal - 2:9.0.1486-1 -- patchlevel 1486 - -* Fri Apr 21 2023 Zdenek Dohnal - 2:9.0.1472-1 -- patchlevel 1472 - -* Tue Apr 11 2023 Zdenek Dohnal - 2:9.0.1443-1 -- patchlevel 1443 - -* Tue Apr 11 2023 Zdenek Dohnal - 2:9.0.1440-2 -- incorporate License tag changes based on legal team response - -* Wed Apr 05 2023 Andreas Schneider - 2:9.0.1440-2 -- create xxd package, because it is used by hex.nvim - -* Wed Apr 05 2023 Zdenek Dohnal - 2:9.0.1440-2 -- list most licenses available in binary rpms and migrate them into SPDX syntax - -* Wed Apr 05 2023 Zdenek Dohnal - 2:9.0.1440-1 -- patchlevel 1440 - -* Mon Mar 27 2023 Zdenek Dohnal - 2:9.0.1429-1 -- patchlevel 1429 - -* Wed Mar 22 2023 Zdenek Dohnal - 2:9.0.1423-1 -- patchlevel 1423 - -* Thu Mar 16 2023 Zdenek Dohnal - 2:9.0.1407-1 -- patchlevel 1407 - -* Tue Mar 14 2023 Zdenek Dohnal - 2:9.0.1403-1 -- patchlevel 1403 - -* Thu Mar 02 2023 Zdenek Dohnal - 2:9.0.1367-1 -- patchlevel 1367 - -* Fri Feb 17 2023 Zdenek Dohnal - 2:9.0.1314-1 -- patchlevel 1314 - -* Tue Feb 14 2023 Zdenek Dohnal - 2:9.0.1307-1 -- patchlevel 1307 - -* Tue Feb 14 2023 Zdenek Dohnal - 2:9.0.1293-2 -- 2169641 - Syntax highlight for sh files broken - -* Thu Feb 09 2023 Zdenek Dohnal - 2:9.0.1293-1 -- patchlevel 1293 - -* Mon Jan 30 2023 Zdenek Dohnal - 2:9.0.1262-1 -- patchlevel 1262 - -* Thu Jan 19 2023 Zdenek Dohnal - 2:9.0.1221-1 -- patchlevel 1221 - -* Thu Jan 12 2023 Zdenek Dohnal - 2:9.0.1182-1 -- patchlevel 1182 - -* Mon Jan 09 2023 Zdenek Dohnal - 2:9.0.1160-1 -- patchlevel 1160 - -* Mon Jan 09 2023 Zdenek Dohnal - 2:9.0.1054-2 -- FTBFS with new FORTIFY_SOURCE=3 - remove it since Vim wants level 1 - -* Wed Dec 14 2022 Zdenek Dohnal - 2:9.0.1054-1 -- patchlevel 1054 - -* Mon Dec 05 2022 Zdenek Dohnal - 2:9.0.1006-1 -- patchlevel 1006 - -* Mon Nov 28 2022 Zdenek Dohnal - 2:9.0.963-1 -- patchlevel 963 - -* Mon Nov 21 2022 Zdenek Dohnal - 2:9.0.915-1 -- patchlevel 915 - -* Thu Nov 03 2022 Zdenek Dohnal - 2:9.0.828-1 -- patchlevel 828 - -* Thu Oct 20 2022 Zdenek Dohnal - 2:9.0.803-1 -- patchlevel 803 - -* Mon Oct 17 2022 Zdenek Dohnal - 2:9.0.777-1 -- patchlevel 777 - -* Wed Oct 12 2022 Zdenek Dohnal - 2:9.0.720-2 -- the current configure option for Vi is 'tiny' - -* Tue Oct 11 2022 Zdenek Dohnal - 2:9.0.720-1 -- patchlevel 720 - -* Wed Sep 28 2022 Carl George - 2:9.0.475-2 -- Obsolete vim-toml since the runtime files are now part of vim-common - -* Fri Sep 16 2022 Zdenek Dohnal - 2:9.0.475-1 -- patchlevel 475 - -* Fri Sep 16 2022 Zdenek Dohnal - 2:9.0.412-2 -- provide 'vim(plugins-supported)' for plugins to require Vim/GVim - -* Thu Sep 08 2022 Zdenek Dohnal - 2:9.0.412-1 -- patchlevel 412 - -* Thu Sep 01 2022 Zdenek Dohnal - 2:9.0.348-1 -- patchlevel 348 - -* Tue Aug 30 2022 Zdenek Dohnal - 2:9.0.327-1 -- patchlevel 327 - -* Tue Aug 23 2022 Zdenek Dohnal - 2:9.0.246-1 -- patchlevel 246 - -* Mon Aug 15 2022 Zdenek Dohnal - 2:9.0.213-1 -- patchlevel 213 - -* Thu Aug 11 2022 Zdenek Dohnal - 2:9.0.189-1 -- patchlevel 189 - -* Thu Aug 04 2022 Zdenek Dohnal - 2:9.0.137-1 -- patchlevel 137 - -* Tue Jul 26 2022 Zdenek Dohnal - 2:9.0.077-1 -- patchlevel 077 - -* Sat Jul 23 2022 Fedora Release Engineering - 2:9.0.049-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild - -* Mon Jul 11 2022 Zdenek Dohnal - 2:9.0.049-1 -- patchlevel 049 - -* Tue Jun 28 2022 Zdenek Dohnal - 2:8.2.5172-1 -- patchlevel 5172 - -* Tue Jun 21 2022 Zdenek Dohnal - 2:8.2.5141-1 -- patchlevel 5141 - -* Tue Jun 14 2022 Zdenek Dohnal - 2:8.2.5085-1 -- patchlevel 5085 - -* Fri Jun 03 2022 Zdenek Dohnal - 2:8.2.5052-1 -- patchlevel 5052 - -* Tue May 31 2022 Zdenek Dohnal - 2:8.2.5046-1 -- patchlevel 5046 - -* Wed May 18 2022 Zdenek Dohnal - 2:8.2.4975-1 -- patchlevel 4975 - -* Tue May 17 2022 Zdenek Dohnal - 2:8.2.4969-1 -- patchlevel 4969 - -* Mon May 09 2022 Zdenek Dohnal - 2:8.2.4927-1 -- patchlevel 4927 - -* Mon May 09 2022 Zdenek Dohnal - 2:8.2.4877-2 -- add new file vimhelp.vim - -* Fri May 06 2022 Zdenek Dohnal - 2:8.2.4877-1 -- patchlevel 4877 - -* Mon May 02 2022 Zdenek Dohnal - 2:8.2.4857-1 -- patchlevel 4857 - -* Fri Apr 29 2022 Zdenek Dohnal - 2:8.2.4845-1 -- patchlevel 4845 - -* Fri Apr 22 2022 Zdenek Dohnal - 2:8.2.4804-1 -- patchlevel 4804 - -* Fri Apr 08 2022 Zdenek Dohnal - 2:8.2.4701-2 -- fix the upstream testsuite failure due downstream patch - -* Thu Apr 07 2022 Zdenek Dohnal - 2:8.2.4701-1 -- patchlevel 4701 - -* Fri Mar 25 2022 Zdenek Dohnal - 2:8.2.4621-1 -- patchlevel 4621 - -* Wed Mar 16 2022 Zdenek Dohnal - 2:8.2.4579-1 -- patchlevel 4579 - -* Wed Mar 09 2022 Zdenek Dohnal - 2:8.2.4529-1 -- patchlevel 4529 - -* Tue Mar 01 2022 Zdenek Dohnal - 2:8.2.4485-1 -- patchlevel 4485 - -* Thu Feb 24 2022 Zdenek Dohnal - 2:8.2.4460-1 -- patchlevel 4460 - -* Mon Feb 21 2022 Zdenek Dohnal - 2:8.2.4428-1 -- patchlevel 4428 - -* Tue Feb 15 2022 Zdenek Dohnal - 2:8.2.4386-1 -- patchlevel 4386 - -* Mon Feb 07 2022 Zdenek Dohnal - 2:8.2.4314-1 -- patchlevel 4314 - -* Thu Jan 27 2022 Zdenek Dohnal - 2:8.2.4232-1 -- patchlevel 4232 - -* Mon Jan 24 2022 Zdenek Dohnal - 2:8.2.4198-1 -- patchlevel 4198 - -* Sat Jan 22 2022 Fedora Release Engineering - 2:8.2.4068-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild - -* Wed Jan 12 2022 Zdenek Dohnal - 2:8.2.4068-1 -- patchlevel 4068 - -* Mon Jan 10 2022 Zdenek Dohnal - 2:8.2.4051-1 -- patchlevel 4051 - -* Fri Jan 07 2022 Malcolm Inglis - 2:8.2.4006-2 -- add 'gui' build condition for vim-X11 - -* Wed Jan 05 2022 Zdenek Dohnal - 2:8.2.4006-1 -- patchlevel 4006 - -* Wed Dec 15 2021 Zdenek Dohnal - 2:8.2.3811-1 -- patchlevel 3811 - -* Tue Dec 07 2021 Zdenek Dohnal - 2:8.2.3755-1 -- patchlevel 3755 - -* Thu Dec 02 2021 Zdenek Dohnal - 2:8.2.3717-1 -- patchlevel 3717 - -* Thu Nov 25 2021 Zdenek Dohnal - 2:8.2.3642-2 -- 2026651 - defaults.vim changes create conflicts between vim-minimal and vim-common - -* Mon Nov 22 2021 Zdenek Dohnal - 2:8.2.3642-1 -- patchlevel 3642 - -* Mon Nov 08 2021 Zdenek Dohnal - 2:8.2.3582-1 -- patchlevel 3582 - -* Mon Nov 01 2021 Zdenek Dohnal - 2:8.2.3568-1 -- patchlevel 3568 - -* Fri Oct 15 2021 Zdenek Dohnal - 2:8.2.3512-1 -- patchlevel 3512 - -* Thu Oct 14 2021 Zdenek Dohnal - 2:8.2.3404-2 -- adjust test suite to Python 3.10 - -* Thu Oct 14 2021 Zdenek Dohnal - 2:8.2.3404-2 -- remove filetype plugin from virc - it doesn't work with vi - -* Mon Oct 11 2021 Zdenek Dohnal - 2:8.2.3404-2 -- set system vimrc via compiler macros - -* Thu Sep 23 2021 Zdenek Dohnal - 2:8.2.3404-2 -- remove downstream patch vim-8.0-copypaste.patch - put mouse settings into defaults.vim again - -* Mon Sep 06 2021 Zdenek Dohnal - 2:8.2.3404-1 -- patchlevel 3404 - -* Wed Sep 01 2021 Zdenek Dohnal - 2:8.2.3391-1 -- patchlevel 3391 - -* Mon Aug 23 2021 Zdenek Dohnal - 2:8.2.3367-1 -- patchlevel 3367 - -* Mon Aug 16 2021 Zdenek Dohnal - 2:8.2.3354-1 -- patchlevel 3354 - -* Mon Aug 09 2021 Zdenek Dohnal - 2:8.2.3318-1 -- patchlevel 3318 - -* Thu Aug 05 2021 Zdenek Dohnal - 2:8.2.3290-1 -- patchlevel 3290 - -* Mon Aug 02 2021 Zdenek Dohnal - 2:8.2.3273-1 -- patchlevel 3273 - -* Mon Jul 26 2021 Zdenek Dohnal - 2:8.2.3223-1 -- patchlevel 3223 - -* Fri Jul 23 2021 Fedora Release Engineering - 2:8.2.3182-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild - -* Mon Jul 19 2021 Zdenek Dohnal - 2:8.2.3182-1 -- patchlevel 3182 - -* Mon Jul 12 2021 Zdenek Dohnal - 2:8.2.3154-1 -- patchlevel 3154 - -* Mon Jun 28 2021 Zdenek Dohnal - 2:8.2.3070-1 -- patchlevel 3070 - -* Fri Jun 25 2021 Zdenek Dohnal - 2:8.2.3046-1 -- patchlevel 3046 - -* Thu Jun 24 2021 Zdenek Dohnal - 2:8.2.3043-1 -- patchlevel 3043 -- enable libsodium encryption in Fedora -- require glibc-gconv-extra on F35 and later - -* Wed Jun 16 2021 Zdenek Dohnal - 2:8.2.3009-1 -- patchlevel 3009 - -* Thu Jun 10 2021 Zdenek Dohnal - 2:8.2.2956-2 -- 1969936 - Failed to source defaults.vim - -* Mon Jun 07 2021 Zdenek Dohnal - 2:8.2.2956-1 -- patchlevel 2956 - -* Fri Jun 04 2021 Zdenek Dohnal - 2:8.2.2932-1 -- patchlevel 2932 - -* Mon May 24 2021 Zdenek Dohnal - 2:8.2.2879-1 -- patchlevel 2879 - -* Fri May 21 2021 Zdenek Dohnal - 2:8.2.2875-1 -- patchlevel 2875 - -* Mon May 10 2021 Zdenek Dohnal - 2:8.2.2846-1 -- patchlevel 2846 - -* Wed May 05 2021 Zdenek Dohnal - 2:8.2.2825-2 -- make default-editor built only on Fedora - -* Mon May 03 2021 Zdenek Dohnal - 2:8.2.2825-1 -- patchlevel 2825 - -* Mon Apr 26 2021 Zdenek Dohnal - 2:8.2.2811-1 -- patchlevel 2811 - -* Tue Apr 20 2021 Zdenek Dohnal - 2:8.2.2787-1 -- patchlevel 2787 - -* Mon Apr 12 2021 Zdenek Dohnal - 2:8.2.2756-1 -- patchlevel 2756 - -* Thu Apr 08 2021 Zdenek Dohnal - 2:8.2.2735-1 -- patchlevel 2735 - -* Mon Mar 22 2021 Zdenek Dohnal - 2:8.2.2637-1 -- patchlevel 2637 - -* Mon Mar 15 2021 Zdenek Dohnal - 2:8.2.2607-1 -- patchlevel 2607 - -* Mon Mar 08 2021 Zdenek Dohnal - 2:8.2.2576-1 -- patchlevel 2576 - -* Mon Mar 01 2021 Zdenek Dohnal - 2:8.2.2559-1 -- patchlevel 2559 - -* Mon Mar 01 2021 Zdenek Dohnal - 2:8.2.2541-2 -- 1928442 - vim-enhanced is replacing vim-wrappers-8.2.2465-1 - -* Mon Feb 22 2021 Zdenek Dohnal - 2:8.2.2541-1 -- patchlevel 2541 -- 1931099 - Build version numbers don't match the actual build patchlevel - -* Thu Feb 18 2021 Zdenek Dohnal - 2:8.2.2529-1 -- patchlevel 2529 - -* Tue Feb 09 2021 Zdenek Dohnal - 2:8.2.2488-1 -- patchlevel 2488 - -* Tue Feb 09 2021 Zdenek Dohnal - 2:8.2.2465-2 -- remove vim-wrappers, vim is a binary again, vi and view stay as wrappers -- removed vim -> vi functionality, because it cannot be optional and work - for all cases at the same time - -* Mon Feb 08 2021 Zdenek Dohnal - 2:8.2.2465-2 -- view is not readonly right now, fix it by -R - -* Thu Feb 04 2021 Zdenek Dohnal - 2:8.2.2465-1 -- patchlevel 2465 -- 1918575 - Use wrappers for vi/vim instead of aliases - -* Thu Feb 04 2021 Zdenek Dohnal - 2:8.2.2451-2 -- vim-update.sh: apply changes master->rawhide - -* Tue Feb 02 2021 Zdenek Dohnal - 2:8.2.2451-1 -- patchlevel 2451 - -* Wed Jan 27 2021 Fedora Release Engineering - 2:8.2.2311-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild - -* Mon Jan 11 2021 Zdenek Dohnal - 2:8.2.2311-2 -- conflicting the version when the change happened doesnt make sense - -* Fri Jan 08 2021 Zdenek Dohnal - 2:8.2.2311-1 -- patchlevel 2311 - -* Fri Dec 18 2020 Zdenek Dohnal - 2:8.2.2146-2 -- install vim-minimal profiles under different name to avoid future conflicts -- remove old conflicts - -* Wed Dec 16 2020 Zdenek Dohnal - 2:8.2.2146-1 -- patchlevel 2146 - -* Wed Dec 16 2020 Zdenek Dohnal - 2:8.2.2143-2 -- make profile files as ghosts to prevent further conflicts -- remove ownership of /etc/profile.d - rpmlinter reports it as an error -- remove interactive prompt from profile scripts - -* Mon Dec 14 2020 Zdenek Dohnal - 2:8.2.2143-1 -- patchlevel 2143 - -* Mon Dec 14 2020 Zdenek Dohnal - 2:8.2.2115-2 -- 1907335 - installing vim no longer works, due to package conflicts with vim-minimal - -* Wed Dec 09 2020 Zdenek Dohnal - 2:8.2.2115-1 -- patchlevel 2115 - -* Wed Dec 09 2020 Zdenek Dohnal - 2:8.2.2108-2 -- 1902772 - "vim" from vim-minimal defunct on zsh - -* Tue Dec 08 2020 Zdenek Dohnal - 2:8.2.2108-1 -- patchlevel 2108 - -* Fri Dec 04 2020 Zdenek Dohnal - 2:8.2.2086-1 -- patchlevel 2086 - -* Tue Dec 01 2020 Zdenek Dohnal - 2:8.2.2072-1 -- patchlevel 2072 - -* Fri Nov 20 2020 Zdenek Dohnal - 2:8.2.2018-1 -- patchlevel 2018 - -* Tue Nov 10 2020 Zdenek Dohnal - 2:8.2.1971-1 -- patchlevel 1971 - -* Fri Nov 06 2020 Zdenek Dohnal - 2:8.2.1961-1 -- patchlevel 1961 - -* Thu Nov 05 2020 Zdenek Dohnal - 2:8.2.1941-2 -- make is no longer in buildroot by default -- disable F31 updating - -* Mon Nov 02 2020 Zdenek Dohnal - 2:8.2.1941-1 -- patchlevel 1941 - -* Mon Nov 02 2020 Zdenek Dohnal - 2:8.2.1885-2 -- move vim.fish to vendor_functions.d - -* Thu Oct 22 2020 Zdenek Dohnal - 2:8.2.1885-1 -- patchlevel 1885 - -* Mon Oct 19 2020 Zdenek Dohnal - 2:8.2.1815-2 -- vim.sh, vim.csh, vim.fish - drop 'which', use 'command' - -* Thu Oct 15 2020 Zdenek Dohnal - 2:8.2.1815-2 -- vim-default-editor.fish - dont give EDITOR universal scope -- vim.sh, vim.csh - set aliases only for OS default vi and vim -- add fish profile for Vim - -* Mon Oct 12 2020 Zdenek Dohnal - 2:8.2.1815-2 -- fix installing fish profile, set virtual provide for default editor - (thanks Neal Gompa and Kamil Dudka) -- set conflicts to nano-default-editor which doesnt provide system-default-editor - -* Fri Oct 09 2020 Paweł Marciniak - 2:8.2.1815-2 -- A new subpackage, set vim as a default editor. - -* Fri Oct 09 2020 Zdenek Dohnal - 2:8.2.1815-1 -- patchlevel 1815 - -* Tue Oct 06 2020 Zdenek Dohnal - 2:8.2.1805-1 -- patchlevel 1805 - -* Tue Sep 29 2020 Zdenek Dohnal - 2:8.2.1770-1 -- patchlevel 1770 - -* Tue Sep 15 2020 Zdenek Dohnal - 2:8.2.1687-1 -- patchlevel 1687 - -* Thu Sep 10 2020 Zdenek Dohnal - 2:8.2.1651-1 -- patchlevel 1651 - -* Tue Sep 08 2020 Zdenek Dohnal - 2:8.2.1634-1 -- patchlevel 1634 - -* Mon Aug 31 2020 Zdenek Dohnal - 2:8.2.1551-1 -- patchlevel 1551 - -* Mon Aug 31 2020 Zdenek Dohnal - 2:8.2.1522-3 -- F33 has update-testing now - -* Tue Aug 25 2020 Zdenek Dohnal - 2:8.2.1522-2 -- typo in vim-update.sh - -* Tue Aug 25 2020 Zdenek Dohnal - 2:8.2.1522-1 -- patchlevel 1522 - -* Mon Aug 24 2020 Zdenek Dohnal - 2:8.2.1520-1 -- patchlevel 1520 - -* Thu Aug 20 2020 Zdenek Dohnal - 2:8.2.1484-2 -- explicitly disable canberra for vi and vim - -* Wed Aug 19 2020 Zdenek Dohnal - 2:8.2.1484-1 -- patchlevel 1484 - -* Tue Aug 18 2020 Zdenek Dohnal - 2:8.2.1412-2 -- F33 got branched, updates-testing isn't enabled for it yet -- enable sounds for gvim - -* Mon Aug 10 2020 Zdenek Dohnal - 2:8.2.1412-1 -- patchlevel 1412 - -* Fri Aug 07 2020 Zdenek Dohnal - 2:8.2.1382-1 -- patchlevel 1382 - -* Wed Aug 05 2020 Zdenek Dohnal - 2:8.2.1359-2 -- own directories for icons - -* Mon Aug 03 2020 Zdenek Dohnal - 2:8.2.1359-1 -- patchlevel 1359 - -* Fri Jul 31 2020 Zane Bitter - 2:8.2.1328-2 -- Alias view to "vim -R" when available - -* Fri Jul 31 2020 Zdenek Dohnal - 2:8.2.1328-1 -- patchlevel 1328 - -* Wed Jul 29 2020 Zdenek Dohnal - 2:8.2.1307-2 -- 1703774 - ex, view and rview manpages were dangling symlinks - -* Tue Jul 28 2020 Zdenek Dohnal - 2:8.2.1307-1 -- patchlevel 1307 - -* Fri Jul 24 2020 Zdenek Dohnal - 2:8.2.1273-2 -- vim-update.sh: bodhi no longer sets a default automatic time to stable - -* Thu Jul 23 2020 Zdenek Dohnal - 2:8.2.1273-1 -- patchlevel 1273 - -* Thu Jul 23 2020 Zdenek Dohnal - 2:8.2.1224-4 -- python3 dynamic linking patch is already in upstream, remove it - -* Wed Jul 22 2020 Zdenek Dohnal - 2:8.2.1224-3 -- use %%make_build and %%make_install according FPG - -* Thu Jul 16 2020 Zdenek Dohnal - 2:8.2.1224-2 -- proper fix for python3 dynamic linking - -* Thu Jul 16 2020 Zdenek Dohnal - 2:8.2.1224-1 -- patchlevel 1224 - -* Wed Jul 15 2020 Zdenek Dohnal - 2:8.2.1217-1 -- patchlevel 1217 - -* Wed Jul 15 2020 Zdenek Dohnal - 2:8.2.1199-1 -- fix python3 dynamic linking with python >= 3.8 -- clean up unused stuff - -* Tue Jul 14 2020 Zdenek Dohnal - 2:8.2.1199-1 -- FTBFS with Lua - backported patch from upstream pull request to prevent linking with lua - -* Mon Jul 13 2020 Zdenek Dohnal - 2:8.2.1199-1 -- patchlevel 1199 - -* Mon Jun 29 2020 Zdenek Dohnal - 2:8.2.1081-1 -- patchlevel 1081 - -* Thu Jun 25 2020 Zdenek Dohnal - 2:8.2.1052-2 -- remove python2 stuff for RHEL -- %%{fedora} macro is undefined in ELN, causes python3-config to use old options - -* Thu Jun 25 2020 Zdenek Dohnal - 2:8.2.1052-1 -- patchlevel 1052 - -* Fri Jun 19 2020 Zdenek Dohnal - 2:8.2.1009-1 -- patchlevel 1009 - -* Wed Jun 17 2020 Zdenek Dohnal - 2:8.2.993-1 -- patchlevel 993 - -* Tue Jun 16 2020 Zdenek Dohnal - 2:8.2.987-1 -- patchlevel 987 - -* Fri Jun 05 2020 Zdenek Dohnal - 2:8.2.905-1 -- patchlevel 905 - -* Tue Jun 02 2020 Zdenek Dohnal - 2:8.2.869-2 -- remove tests from dist-git, we use base os ci - -* Mon Jun 01 2020 Zdenek Dohnal - 2:8.2.869-1 -- patchlevel 869 - -* Thu May 28 2020 Miro Hrončok - 2:8.2.834-2 -- Rebuilt for Python 3.9 - -* Thu May 28 2020 Zdenek Dohnal - 2:8.2.834-1 -- patchlevel 834 - -* Tue May 26 2020 Miro Hrončok - 2:8.2.806-2 -- Rebuilt for Python 3.9 - -* Fri May 22 2020 Zdenek Dohnal - 2:8.2.806-1 -- patchlevel 806 - -* Mon May 18 2020 Zdenek Dohnal - 2:8.2.789-1 -- patchlevel 789 - -* Thu May 14 2020 Zdenek Dohnal - 2:8.2.752-2 -- F30 will be EOL in less than 14 days, remove it from automatic updates - -* Thu May 14 2020 Zdenek Dohnal - 2:8.2.752-1 -- patchlevel 752 - -* Mon May 11 2020 Zdenek Dohnal - 2:8.2.735-1 -- patchlevel 735 - -* Mon May 04 2020 Zdenek Dohnal - 2:8.2.694-1 -- patchlevel 694 - -* Fri Apr 24 2020 Zdenek Dohnal - 2:8.2.628-1 -- patchlevel 628 - -* Tue Apr 21 2020 Zdenek Dohnal - 2:8.2.613-1 -- patchlevel 613 - -* Fri Apr 17 2020 Zdenek Dohnal - 2:8.2.587-1 -- patchlevel 587 - -* Thu Apr 09 2020 Zdenek Dohnal - 2:8.2.534-1 -- patchlevel 534 - -* Tue Apr 07 2020 Zdenek Dohnal - 2:8.2.525-1 -- patchlevel 525 - -* Mon Apr 06 2020 Zdenek Dohnal - 2:8.2.520-1 -- patchlevel 520 - -* Mon Mar 30 2020 Zdenek Dohnal - 2:8.2.480-1 -- patchlevel 480 - -* Thu Mar 26 2020 Zdenek Dohnal - 2:8.2.448-1 -- patchlevel 448 - -* Wed Mar 25 2020 Zdenek Dohnal - 2:8.2.444-1 -- patchlevel 444 - -* Mon Mar 16 2020 Lubomir Rintel - 2:8.2.390-2 -- source /etc/vimrc.local if it exists - -* Mon Mar 16 2020 Zdenek Dohnal - 2:8.2.390-1 -- patchlevel 390 - -* Tue Mar 10 2020 Zdenek Dohnal - 2:8.2.357-2 -- put providing bundled libvterm into subpackage vim-enhanced - -* Fri Mar 06 2020 Zdenek Dohnal - 2:8.2.357-1 -- patchlevel 357 - -* Thu Mar 05 2020 Zdenek Dohnal - 2:8.2.356-1 -- patchlevel 356 - -* Tue Mar 03 2020 Zdenek Dohnal - 2:8.2.348-1 -- patchlevel 348 - -* Thu Feb 13 2020 Zdenek Dohnal - 2:8.2.236-2 -- F32 got branched - do separate update for it - -* Mon Feb 10 2020 Zdenek Dohnal - 2:8.2.236-1 -- patchlevel 236 - -* Wed Jan 29 2020 Zdenek Dohnal - 2:8.2.158-2 -- man page file format conversion is not needed anymore - -* Mon Jan 27 2020 Zdenek Dohnal - 2:8.2.158-1 -- patchlevel 158 - -* Fri Jan 10 2020 Zdenek Dohnal - 2:8.2.109-1 -- patchlevel 109 - -* Thu Jan 02 2020 Zdenek Dohnal - 2:8.2.076-1 -- patchlevel 076 - -* Wed Dec 18 2019 Zdenek Dohnal - 2:8.2.019-1 -- patchlevel 019 - -* Mon Dec 16 2019 Zdenek Dohnal - 2:8.2.012-1 -- patchlevel 012 - -* Thu Dec 12 2019 Zdenek Dohnal - 2:8.1.2424-1 -- patchlevel 2424 - -* Thu Nov 28 2019 Zdenek Dohnal - 2:8.1.2352-1 -- patchlevel 2352 - -* Thu Nov 28 2019 Zdenek Dohnal - 2:8.1.2267-2 -- leave out f29, will be soon EOL - -* Thu Nov 07 2019 Zdenek Dohnal - 2:8.1.2267-1 -- patchlevel 2267 - -* Wed Nov 06 2019 Zdenek Dohnal - 2:8.1.2234-2 -- do not add python-libs into LDFLAGS until we build vim and gvim - -* Wed Oct 30 2019 Zdenek Dohnal - 2:8.1.2234-1 -- patchlevel 2234 - -* Tue Oct 22 2019 Zdenek Dohnal - 2:8.1.2198-1 -- patchlevel 2198 - -* Mon Oct 21 2019 Zdenek Dohnal - 2:8.1.2197-1 -- patchlevel 2197 - -* Thu Oct 17 2019 Zdenek Dohnal - 2:8.1.2168-1 -- patchlevel 2168 - -* Mon Oct 07 2019 Zdenek Dohnal - 2:8.1.2120-1 -- patchlevel 2120 - -* Mon Sep 30 2019 Zdenek Dohnal - 2:8.1.2102-1 -- patchlevel 2102 - -* Thu Sep 19 2019 Zdenek Dohnal - 2:8.1.2056-1 -- patchlevel 2056 - -* Mon Sep 16 2019 Zdenek Dohnal - 2:8.1.2019-2 -- enable fips warning - -* Tue Sep 10 2019 Zdenek Dohnal - 2:8.1.2019-1 -- patchlevel 2019 - -* Fri Sep 06 2019 Zdenek Dohnal - 2:8.1.1991-2 -- add f32 as rawhide and f31 as standalone branch - -* Fri Sep 06 2019 Zdenek Dohnal - 2:8.1.1991-1 -- patchlevel 1991 - -* Tue Sep 03 2019 Zdenek Dohnal - 2:8.1.1912-3 -- 1744956 - vim does not build with python3.8 - -* Mon Aug 26 2019 Zdenek Dohnal - 2:8.1.1912-2 -- remove python2 interpreter - python2 will be retired soon. -- use 'file' with '--mime' option - output is more stable - -* Fri Aug 23 2019 Zdenek Dohnal - 2:8.1.1912-1 -- patchlevel 1912 - -* Fri Aug 23 2019 Zdenek Dohnal - 2:8.1.1890-2 -- revert vimx removal - -* Tue Aug 20 2019 Zdenek Dohnal - 2:8.1.1890-1 -- patchlevel 1890 - -* Tue Aug 20 2019 Zdenek Dohnal - 2:8.1.1790-2 -- 1740892 - vimx is symlink to gvim instead of vim - -* Fri Aug 02 2019 Zdenek Dohnal - 2:8.1.1790-1 -- patchlevel 1790 - -* Fri Jul 26 2019 Zdenek Dohnal - 2:8.1.1749-1 -- patchlevel 1749 - -* Tue Jul 23 2019 Zdenek Dohnal - 2:8.1.1713-6 -- Provides must be unversioned according FPG - -* Mon Jul 22 2019 Zdenek Dohnal - 2:8.1.1713-5 -- remove perl-libs, because they are supplied perl MODULE_COMPAT - -* Fri Jul 19 2019 Zdenek Dohnal - 2:8.1.1713-4 -- remove unused patch - -* Fri Jul 19 2019 Zdenek Dohnal - 2:8.1.1713-3 -- 1724126 - disable showing spec template for new file with .spec suffix -- minor changes in spec.template - tabs->spaces - -* Fri Jul 19 2019 Zdenek Dohnal - 2:8.1.1713-2 -- remove skip_defaults_vim - it does not make sense to have it in system vimrc - -* Thu Jul 18 2019 Zdenek Dohnal - 2:8.1.1713-1 -- patchlevel 1713 - -* Thu Jul 18 2019 Zdenek Dohnal - 2:8.1.1661-2 -- 1643311 - add several defaults from Vim upstream and remove forcing fileencodings - -* Thu Jul 11 2019 Zdenek Dohnal - 2:8.1.1661-1 -- patchlevel 1661 - -* Fri Jun 28 2019 Zdenek Dohnal - 2:8.1.1602-1 -- patchlevel 1602 - -* Mon Jun 17 2019 Zdenek Dohnal - 2:8.1.1561-1 -- patchlevel 1561 - -* Tue Jun 11 2019 Zdenek Dohnal - 2:8.1.1517-1 -- patchlevel 1517 - -* Tue Jun 11 2019 Zdenek Dohnal - 2:8.1.1471-2 -- remove desktop patch, already in upstream - -* Thu Jun 06 2019 Zdenek Dohnal - 2:8.1.1471-1 -- patchlevel 1471 - -* Tue May 28 2019 Zdenek Dohnal - 2:8.1.1413-1 -- patchlevel 1413 - -* Mon May 20 2019 Zdenek Dohnal - 2:8.1.1359-2 -- stop updating f28 - -* Mon May 20 2019 Zdenek Dohnal - 2:8.1.1359-1 -- patchlevel 1359 - -* Mon May 20 2019 Zdenek Dohnal - 2:8.1.1137-2 -- remove upstream patch - -* Mon Apr 08 2019 Zdenek Dohnal - 2:8.1.1137-1 -- patchlevel 1137 - -* Mon Apr 08 2019 Zdenek Dohnal - 2:8.1.1099-2 -- 1697104 - new spec file template contains deprecated tags - -* Tue Apr 02 2019 Zdenek Dohnal - 2:8.1.1099-1 -- patchlevel 1099 - -* Tue Mar 26 2019 Zdenek Dohnal - 2:8.1.1048-2 -- add bundled libvterm - -* Mon Mar 25 2019 Zdenek Dohnal - 2:8.1.1048-1 -- patchlevel 1048 - -* Fri Mar 08 2019 Zdenek Dohnal - 2:8.1.998-1 -- patchlevel 998 - -* Fri Mar 08 2019 Zdenek Dohnal - 2:8.1.994-2 -- F30 is already active in bodhi - -* Mon Mar 04 2019 Zdenek Dohnal - 2:8.1.994-1 -- patchlevel 994 - -* Wed Feb 20 2019 Zdenek Dohnal - 2:8.1.956-1 -- patchlevel 956 - -* Wed Feb 20 2019 Zdenek Dohnal - 2:8.1.918-2 -- we have Fedora 30 branch now, enable updates for it in vim-update.sh - -* Thu Feb 14 2019 Zdenek Dohnal - 2:8.1.918-1 -- patchlevel 918 - -* Thu Feb 14 2019 Zdenek Dohnal - 2:8.1.897-2 -- we do not need exact include path for python3 now - -* Tue Feb 12 2019 Zdenek Dohnal - 2:8.1.897-1 -- patchlevel 897 - -* Fri Feb 08 2019 Zdenek Dohnal - 2:8.1.880-1 -- patchlevel 880 - -* Mon Feb 04 2019 Zdenek Dohnal - 2:8.1.873-1 -- patchlevel 873 - -* Mon Feb 04 2019 Zdenek Dohnal - 2:8.1.847-4 -- remove downstream fix for new ruby, upstream solved it different way - -* Sun Feb 03 2019 Fedora Release Engineering - 2:8.1.847-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild - -* Thu Jan 31 2019 Karsten Hopp - 2:8.1.847-2 -- remove ancient Changelog.rpm - -* Wed Jan 30 2019 Zdenek Dohnal - 2:8.1.847-2 -- fix patch for new ruby-2.6 - -* Wed Jan 30 2019 Zdenek Dohnal - 2:8.1.847-1 -- patchlevel 847 - -* Tue Jan 29 2019 Zdenek Dohnal - 2:8.1.837-2 -- FTBFS with new ruby-2.6 - -* Mon Jan 28 2019 Zdenek Dohnal - 2:8.1.837-1 -- patchlevel 837 - -* Fri Jan 25 2019 Zdenek Dohnal - 2:8.1.818-1 -- patchlevel 818 - -* Tue Jan 22 2019 Zdenek Dohnal - 2:8.1.789-1 -- patchlevel 789 - -* Fri Jan 11 2019 Zdenek Dohnal - 2:8.1.714-1 -- patchlevel 714 - -* Tue Jan 08 2019 Zdenek Dohnal - 2:8.1.702-1 -- patchlevel 702 - -* Mon Dec 10 2018 Zdenek Dohnal - 2:8.1.575-1 -- patchlevel 575 - -* Wed Dec 05 2018 Zdenek Dohnal - 2:8.1.549-2 -- do not strip binaries before build system strips it - -* Tue Nov 27 2018 Zdenek Dohnal - 2:8.1.549-1 -- patchlevel 549 - -* Tue Nov 27 2018 Zdenek Dohnal - 2:8.1.527-2 -- update vim-update.sh - F27 EOL - -* Fri Nov 16 2018 Zdenek Dohnal - 2:8.1.527-1 -- patchlevel 527 - -* Thu Nov 08 2018 Zdenek Dohnal - 2:8.1.513-2 -- #1646183 - do not forget the epoch - -* Thu Nov 08 2018 Zdenek Dohnal - 2:8.1.513-1 -- patchlevel 513 - -* Thu Nov 08 2018 Zdenek Dohnal - 2:8.1.511-2 -- fix #1646183 properly - we need to conflict with vim-enhanced, not vim-common - -* Mon Nov 05 2018 Zdenek Dohnal - 2:8.1.511-1 -- patchlevel 511 - -* Mon Nov 05 2018 Zdenek Dohnal - 2:8.1.497-2 -- 1646183 - Man file conflict for vim-minimal and vim-enhanced - -* Fri Oct 26 2018 Zdenek Dohnal - 2:8.1.497-1 -- patchlevel 497 - -* Fri Oct 19 2018 Zdenek Dohnal - 2:8.1.483-1 -- patchlevel 483 - -* Fri Oct 19 2018 Zdenek Dohnal - 2:8.1.451-2 -- 1640972 - vimrc/virc should reflect correct augroup - -* Fri Oct 05 2018 Zdenek Dohnal - 2:8.1.451-1 -- patchlevel 451 - -* Wed Oct 03 2018 Zdenek Dohnal - 2:8.1.450-1 -- patchlevel 450 - -* Wed Sep 19 2018 Zdenek Dohnal - 2:8.1.408-1 -- patchlevel 408 -- src/libvterm/src/termscreen.c is missing - -* Fri Sep 07 2018 Zdenek Dohnal - 2:8.1.351-1 -- patchlevel 351 - -* Fri Aug 31 2018 Zdenek Dohnal - 2:8.1.328-2 -- vim-update.sh - F29 got enabled in bodhi - -* Mon Aug 27 2018 Zdenek Dohnal - 2:8.1.328-1 -- patchlevel 328 - -* Wed Aug 15 2018 Zdenek Dohnal - 2:8.1.287-2 -- vim-update.sh - add f29 branch - -* Wed Aug 15 2018 Zdenek Dohnal - 2:8.1.287-1 -- patchlevel 287 - -* Mon Aug 13 2018 Zdenek Dohnal - 2:8.1.279-1 -- patchlevel 279 - -* Fri Aug 10 2018 Zdenek Dohnal - 2:8.1.264-1 -- patchlevel 264 - -* Thu Aug 09 2018 Zdenek Dohnal - 2:8.1.258-1 -- patchlevel 258 - -* Wed Aug 08 2018 Zdenek Dohnal - 2:8.1.254-1 -- patchlevel 254 - -* Mon Aug 06 2018 Zdenek Dohnal - 2:8.1.240-1 -- patchlevel 240 - -* Thu Aug 02 2018 Zdenek Dohnal - 2:8.1.233-1 +* Fri Jan 18 2008 Karsten Hopp 7.1.233-1 - patchlevel 233 +- fix ada patch -* Tue Jul 31 2018 Florian Weimer - 2:8.1.229-2 -- Rebuild with fixed binutils +* Wed Jan 16 2008 Karsten Hopp 7.1.230-2 +- add newer ada runtime files to fix bugzilla #246378 -* Mon Jul 30 2018 Zdenek Dohnal - 2:8.1.229-1 -- patchlevel 229 +* Wed Jan 16 2008 Karsten Hopp 7.1.230-1 +- patchlevel 230, fixes memory leak -* Fri Jul 27 2018 Zdenek Dohnal - 2:8.1.213-1 -- patchlevel 213 +* Mon Jan 14 2008 Karsten Hopp 7.1.228-1 +- patchlevel 228 +- allow overwriting WITH_SELING at build time (#427710) -* Fri Jul 27 2018 Zdenek Dohnal - 2:8.1.209-2 -- fail if configure option isn't satisfied +* Thu Jan 10 2008 Karsten Hopp 7.1.214-1 +- patchlevel 214 -* Wed Jul 25 2018 Zdenek Dohnal - 2:8.1.209-1 -- patchlevel 209 +* Mon Jan 07 2008 Karsten Hopp 7.1.211-1 +- patchlevel 211 -* Tue Jul 24 2018 Zdenek Dohnal - 2:8.1.207-2 -- correcting license +* Sat Dec 22 2007 Karsten Hopp 7.1.175-1 +- patchlevel 175 -* Mon Jul 23 2018 Zdenek Dohnal - 2:8.1.207-1 -- patchlevel 207 +* Thu Nov 22 2007 Karsten Hopp 7.1.159-1 +- patchlevel 159 +- vim-enhanced requires which for vimtutor (#395371) -* Fri Jul 20 2018 Zdenek Dohnal - 2:8.1.197-1 -- patchlevel 197 +* Thu Oct 04 2007 Karsten Hopp 7.1.135-1 +- patchlevel 135 -* Thu Jul 19 2018 Zdenek Dohnal - 2:8.1.189-2 -- 1603272 - vim-X11 doesn't provide the gui when certain devel packages missing from buildroot +* Wed Sep 26 2007 Karsten Hopp 7.1.122-1 +- patchlevel 122 -* Mon Jul 16 2018 Zdenek Dohnal - 2:8.1.189-1 -- patchlevel 189 - -* Mon Jul 16 2018 Zdenek Dohnal - 2:8.1.177-3 -- remove disable-gtk3-check configure option - -* Sat Jul 14 2018 Fedora Release Engineering - 2:8.1.177-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild - -* Wed Jul 11 2018 Zdenek Dohnal - 2:8.1.177-1 -- patchlevel 177 - -* Wed Jul 11 2018 Zdenek Dohnal - 2:8.1.119-8 -- add packager and epoch into update script to have better changelog - -* Wed Jul 11 2018 Zdenek Dohnal - 2:8.1.119-7 -- use %%{__python3} macro for defining shebang in python3 tests - -* Tue Jul 10 2018 Zdenek Dohnal - 2:8.1.119-6 -- 1599663 - Conflicting manpages rvi.1.gz and vi.1.gz during update - -* Fri Jul 06 2018 Petr Pisar - 2:8.1.119-5 -- Perl 5.28 rebuild - -* Wed Jul 04 2018 Ondřej Lysoněk - 2:8.1.119-4 -- Backport patch 8.1.0121: crash when using ballooneval related to 'vartabstop' -- Resolves: rhbz#1597842 - -* Tue Jul 03 2018 Petr Pisar - 2:8.1.119-3 -- Perl 5.28 rebuild - -* Mon Jul 02 2018 Miro Hrončok - 2:8.1.119-2 -- Rebuilt for Python 3.7 - -* Thu Jun 28 2018 Karsten Hopp 8.1.119-1 +* Tue Sep 25 2007 Karsten Hopp 7.1.119-1 - patchlevel 119 -* Thu Jun 28 2018 Jitka Plesnikova - 2:8.1.117-2 -- Perl 5.28 rebuild +* Mon Sep 24 2007 Karsten Hopp 7.1.116-1 +- patchlevel 116 -* Wed Jun 27 2018 Karsten Hopp 8.1.117-1 -- patchlevel 117 +* Fri Sep 07 2007 Karsten Hopp 7.1.100-1 +- patchlevel 100 -* Mon Jun 25 2018 Karsten Hopp 8.1.115-1 -- patchlevel 115 +* Fri Aug 24 2007 Karsten Hopp 7.1.87-1 +- add build requirement perl-devel +- fix tarball unpacking +- patchlevel 87 -* Fri Jun 22 2018 Karsten Hopp 8.1.095-1 -- patchlevel 095 +* Wed Aug 15 2007 Karsten Hopp 7.1.77-1 +- patchlevel 77 -* Tue Jun 19 2018 Miro Hrončok - 2:8.1.072-2 -- Rebuilt for Python 3.7 +* Mon Aug 13 2007 Karsten Hopp 7.1.68-1 +- patchlevel 68 -* Mon Jun 18 2018 Karsten Hopp 8.1.072-1 -- patchlevel 072 +* Thu Aug 02 2007 Karsten Hopp 7.1.47-1 +- patchlevel 47 -* Fri Jun 15 2018 Karsten Hopp 8.1.055-1 -- patchlevel 055 +* Wed Jul 11 2007 Karsten Hopp 7.1.28-1 +- patchlevel 28 -* Mon Jun 11 2018 Karsten Hopp 8.1.042-1 -- patchlevel 042 +* Wed Jun 27 2007 Karsten Hopp 7.1.12-1 +- Patchlevel 12 -* Fri Jun 08 2018 Karsten Hopp 8.1.039-1 -- patchlevel 039 +* Mon Jun 04 2007 Karsten Hopp 7.1.2-1 +- vim 7.1 +- drop 240 patches -* Wed Jun 06 2018 Karsten Hopp 8.1.035-1 -- patchlevel 035 +* Tue May 22 2007 Karsten Hopp 7.0.235-1 +- Don't wake up system with blinking gvim cursor: + http://www.linuxpowertop.org/known.php -* Tue Jun 05 2018 Karsten Hopp 8.1.034-1 -- patchlevel 034 +* Mon Apr 30 2007 Karsten Hopp 7.0.235-1 +- update to patchlevel 235, fixes modeline issues -* Mon May 28 2018 Karsten Hopp 8.1.026-1 -- patchlevel 026 +* Tue Apr 17 2007 Karsten Hopp 7.0.224-3 +- fix typo in require line (vim-X11 - 2:7.0.224-2.fc7.i386 requires 4) -* Thu May 24 2018 Karsten Hopp 8.1.022-1 -- patchlevel 022 +* Mon Apr 16 2007 Karsten Hopp 7.0.224-2 +- use more macros +- drop BR perl +- move license to main doc directory +- set vendor to 'fedora' (desktop-file) +- don't own man directories +- preserve timestamps of non-generated files +- run update-desktop-database -* Wed May 23 2018 Karsten Hopp 8.1.020-1 -- patchlevel 020 +* Thu Apr 05 2007 Karsten Hopp 7.0.224-1 +- vim-X11 provides gvim -* Tue May 22 2018 Karsten Hopp 8.1.016-1 +* Fri Mar 30 2007 Karsten Hopp 7.0.224-1 +- patchlevel 224 + +* Wed Feb 21 2007 Karsten Hopp 7.0.195-2 +- rpmlint fixes (#226526) + +* Tue Feb 13 2007 Karsten Hopp 7.0.195-1 +- patchlevel 195 + +* Mon Feb 12 2007 Karsten Hopp 7.0.192-1 +- patchlevel 192 +- test fix for highlighting problems with curly brackets in #define (#203577) + +* Tue Feb 06 2007 Karsten Hopp 7.0.191-2 +- uses ncurses instead of ncursesw + +* Tue Feb 06 2007 Karsten Hopp 7.0.191-1 +- patchlevel 191 +- clean up spec file for rpmlint +- drop cvim stuff + +* Tue Jan 23 2007 Karsten Hopp 7.0.188-3 +- patchlevel 188 + +* Mon Jan 08 2007 Karsten Hopp 7.0.178-3 +- enable filetype plugin + +* Thu Dec 14 2006 Karsten Hopp 7.0.178-2 +- build vim-minimal with features=small instead of tiny (#219605) + +* Tue Dec 12 2006 Karsten Hopp 7.0.178-1 +- add vimfiles/after to list of owned directories + +* Tue Dec 12 2006 Karsten Hopp 7.0.178-1 +- patchlevel 178 +- use macros +- Resolves: #219154 + add directory /usr/share/vim/vimfiles for plugins + +* Thu Dec 7 2006 Jeremy Katz +- rebuild for python 2.5 + +* Wed Nov 22 2006 Karsten Hopp 7.0.168-1 +- patchlevel 168 +- link with ncurses + +* Tue Nov 21 2006 Karsten Hopp 7.0.164-2 +- patchlevel 164 + +* Mon Nov 13 2006 Karsten Hopp 7.0.162-2 +- fix lang problem in spec file mode +- use old g:packager variable when set + +* Fri Nov 10 2006 Karsten Hopp 7.0.162-1 +- patchlevel 162 + +* Mon Nov 06 2006 Karsten Hopp 7.0.158-1 +- patchlevel 158 + +* Tue Oct 17 2006 Karsten Hopp 7.0.139-1 +- patchlevel 139 +- provide vim, vi (#210950) + +* Thu Sep 28 2006 Jeremy Katz - 7.0.109-3 +- disable vim-spell subpackage as it pushes us over CD boundaries + +* Tue Sep 28 2006 Karsten Hopp 7.0.109-2 +- fix typo in vimspell.sh (#203178) + +* Tue Sep 19 2006 Karsten Hopp 7.0.109-1 +- update to patchlevel 109 to fix some redraw problems +- fix invisible comments in diff mode (#204042) + +* Tue Sep 12 2006 Karsten Hopp 7.0.100-1 +- Patchlevel 100 +- replace runtime files with newer ones + +* Mon Sep 11 2006 Karsten Hopp 7.0.099-1 +- Patchlevel 99 + +* Mon Sep 05 2006 Karsten Hopp 7.0.086-1 +- Patchlevel 86 + +* Mon Sep 04 2006 Karsten Hopp 7.0.083-1 +- Patchlevel 83 + +* Wed Aug 30 2006 Karsten Hopp 7.0.076-1 +- Patchlevel 76 + +* Thu Aug 25 2006 Karsten Hopp 7.0.066-2 +- fix vimdiff colors (#204042) + +* Thu Aug 24 2006 Karsten Hopp 7.0.066-1 +- fix syntax patch (#203798) +- patchlevel 66 + +* Wed Aug 17 2006 Karsten Hopp 7.0.063-1 +- Patchlevel 63 + +* Wed Aug 15 2006 Karsten Hopp 7.0.053-1 +- Patchlevel 53 +- Buildrequires libXpm-devel + +* Wed Aug 09 2006 Karsten Hopp 7.0.050-1 +- Patchlevel 50 + +* Thu Aug 03 2006 Karsten Hopp 7.0.042-2 +- clean up spec file + +* Mon Jul 24 2006 Karsten Hopp 7.0.042-1 +- patchlevel 42 + +* Wed Jul 20 2006 Karsten Hopp 7.0.039-1 +- patchlevel 39 +- allow usage of $VIM variable (#199465) + +* Wed Jul 12 2006 Jesse Keating - 2:7.0.035-1.1 +- rebuild + +* Tue Jun 27 2006 Karsten Hopp 7.0.035-1 +- patchlevel 35 + +* Wed Jun 21 2006 Karsten Hopp 7.0.022-2 +- add binfmt_misc rpc_pipefs to fstypes for better mtab highlighting + +* Tue Jun 20 2006 Karsten Hopp 7.0.022-1 +- patchlevel 22 + +* Tue Jun 20 2006 Karsten Hopp 7.0.020-1 +- patchlevel 20 + +* Tue Jun 20 2006 Karsten Hopp 7.0.019-1 +- patchlevel 19 +- buildrequire autoconf + +* Tue May 30 2006 Karsten Hopp 7.0.017-1 +- patchlevel 17, although it affects just the Motif version +- own some directories (#192787) + +* Sat May 13 2006 Karsten Hopp 7.0.016-1 - patchlevel 016 -* Mon May 21 2018 Karsten Hopp 8.1.010-1 +* Fri May 12 2006 Karsten Hopp 7.0.012-1 +- patchlevel 012 + +* Thu May 11 2006 Karsten Hopp 7.0.010-1 - patchlevel 010 -* Fri May 18 2018 Karsten Hopp 8.1.001-1 -- patchlevel 001 - -* Fri May 18 2018 Zdenek Dohnal - 8.0.1848-2 -- vim-update.sh - update vimdir and baseversion(for major rebases) -- vim-update.sh - enhance debugging of vim-update script - -* Thu May 17 2018 Karsten Hopp 8.0.1848-1 -- patchlevel 1848 - -* Tue May 15 2018 Zdenek Dohnal - 8.0.1842-2 -- do not update F26 anymore - EOL in 2 weeks - -* Tue May 15 2018 Karsten Hopp 8.0.1842-1 -- patchlevel 1842 - -* Tue May 15 2018 Zdenek Dohnal - 8.0.1813-2 -- use environment variable in build phase - -* Fri May 11 2018 Karsten Hopp 8.0.1813-1 -- patchlevel 1813 - -* Fri May 11 2018 Zdenek Dohnal - 8.0.1806-2 -- use python2 and python3 in code - -* Thu May 10 2018 Karsten Hopp 8.0.1806-1 -- patchlevel 1806 - -* Wed May 09 2018 Zdenek Dohnal - 8.0.1789-2 -- 1575354 - suggest more packages for embedded interpreters - -* Fri May 04 2018 Karsten Hopp 8.0.1789-1 -- patchlevel 1789 - -* Thu May 03 2018 Karsten Hopp 8.0.1788-1 -- patchlevel 1788 - -* Wed May 02 2018 Karsten Hopp 8.0.1787-1 -- patchlevel 1787 - -* Fri Apr 27 2018 Karsten Hopp 8.0.1766-1 -- patchlevel 1766 - -* Thu Apr 26 2018 Karsten Hopp 8.0.1765-1 -- patchlevel 1765 - -* Wed Apr 25 2018 Karsten Hopp 8.0.1763-1 -- patchlevel 1763 - -* Tue Apr 24 2018 Karsten Hopp 8.0.1755-1 -- patchlevel 1755 - -* Fri Apr 13 2018 Karsten Hopp 8.0.1704-1 -- patchlevel 1704 - -* Mon Apr 09 2018 Karsten Hopp 8.0.1679-1 -- patchlevel 1679 - -* Fri Apr 06 2018 Zdenek Dohnal - 8.0.1666-2 -- suggests ruby-libs, python2-libs, python3-libs, perl-libs and lua-libs for vim and gvim(bug #1562057) - -* Fri Apr 06 2018 Karsten Hopp 8.0.1666-1 -- patchlevel 1666 - -* Thu Apr 05 2018 Karsten Hopp 8.0.1661-1 -- patchlevel 1661 - -* Fri Mar 23 2018 Karsten Hopp 8.0.1630-1 -- patchlevel 1630 - -* Thu Mar 22 2018 Karsten Hopp 8.0.1626-1 -- patchlevel 1626 - -* Wed Mar 21 2018 Karsten Hopp 8.0.1625-1 -- patchlevel 1625 - -* Wed Mar 14 2018 Karsten Hopp 8.0.1605-1 -- patchlevel 1605 - -* Tue Mar 13 2018 Karsten Hopp 8.0.1603-1 -- patchlevel 1603 - -* Mon Mar 12 2018 Karsten Hopp 8.0.1599-1 -- patchlevel 1599 - -* Fri Mar 09 2018 Karsten Hopp 8.0.1591-1 -- patchlevel 1591 - -* Thu Mar 08 2018 Karsten Hopp 8.0.1589-1 -- patchlevel 1589 - -* Wed Mar 07 2018 Karsten Hopp 8.0.1587-1 -- patchlevel 1587 - -* Tue Mar 06 2018 Zdenek Dohnal - 2:8.0.1573-2 -- vim-update.sh - unify if condition style - -* Tue Mar 06 2018 Karsten Hopp 8.0.1573-1 -- patchlevel 1573 - -* Tue Mar 06 2018 Zdenek Dohnal - 2:8.0.1569-2 -- update spec -- f28 got enabled in bodhi - -* Mon Mar 05 2018 Karsten Hopp 8.0.1569-1 -- patchlevel 1569 - -* Wed Feb 28 2018 Karsten Hopp 8.0.1553-1 -- added Serbian localization files -- patchlevel 1553 - -* Wed Feb 28 2018 Zdenek Dohnal - 2:8.0.1543-2 -- fix vim-update.sh - bodhi update wasn't created - -* Tue Feb 27 2018 Karsten Hopp 8.0.1543-1 -- patchlevel 1543 - -* Mon Feb 26 2018 Zdenek Dohnal - 8.0.1527-3 -- add Provides for vim, gvim and correcting paths to /usr/bin - -* Wed Feb 21 2018 Zdenek Dohnal - 8.0.1527-2 -- adapt vim-update.sh for Fedora 28 and adding check for bodhi enablement - -* Tue Feb 20 2018 Karsten Hopp 8.0.1527-1 -- patchlevel 1527 - -* Mon Feb 19 2018 Zdenek Dohnal - 8.0.1523-2 -- gcc is no longer in buildroot by default -- 1546116 - make vim-filesystem noarch package -- remove %%{_libdir}/vim, because it is unused - -* Mon Feb 19 2018 Karsten Hopp 8.0.1523-1 -- patchlevel 1523 - -* Wed Feb 14 2018 Karsten Hopp 8.0.1520-1 -- patchlevel 1520 - -* Tue Feb 13 2018 Karsten Hopp 8.0.1509-1 -- patchlevel 1509 - -* Mon Feb 12 2018 Karsten Hopp 8.0.1505-1 -- patchlevel 1505 - -* Fri Feb 09 2018 Karsten Hopp 8.0.1478-1 -- patchlevel 1478 - -* Thu Feb 08 2018 Zdenek Dohnal - 8.0.1475-2 -- remove old stuff - -* Wed Feb 07 2018 Karsten Hopp 8.0.1475-1 -- patchlevel 1475 - -* Mon Feb 05 2018 Karsten Hopp 8.0.1473-1 -- patchlevel 1473 - -* Thu Feb 01 2018 Karsten Hopp 8.0.1451-1 -- patchlevel 1451 - -* Mon Jan 29 2018 Karsten Hopp 8.0.1438-1 -- patchlevel 1438 - -* Tue Jan 23 2018 Zdenek Dohnal - 8.0.1428-4 -- throw vim.1.gz out from vim-minimal and other manpages from vim-common -- appdata should be in metainfo folder now - -* Fri Jan 19 2018 Zdenek Dohnal - 8.0.1428-3 -- 1525506 - gvim goes into infinite loop when blink_state is OFF - -* Fri Jan 12 2018 Zdenek Dohnal - 8.0.1428-2 -- removing old icon cache update - -* Wed Jan 03 2018 Karsten Hopp 8.0.1428-1 -- patchlevel 1428 - -* Tue Jan 02 2018 Karsten Hopp 8.0.1427-1 -- patchlevel 1427 - -* Tue Dec 19 2017 Karsten Hopp 8.0.1406-1 -- patchlevel 1406 - -* Mon Dec 18 2017 Karsten Hopp 8.0.1401-1 -- patchlevel 1401 - -* Fri Dec 15 2017 Karsten Hopp 8.0.1390-1 -- patchlevel 1390 - -* Fri Dec 15 2017 Zdenek Dohnal - 8.0.1389-2 -- fixing vim-update.sh - -* Wed Dec 13 2017 Karsten Hopp 8.0.1389-1 -- patchlevel 1389 - -* Tue Dec 12 2017 Karsten Hopp 8.0.1387-1 -- patchlevel 1387 - -* Mon Dec 11 2017 Karsten Hopp 8.0.1386-1 -- patchlevel 1386 - -* Fri Dec 08 2017 Karsten Hopp 8.0.1379-1 -- patchlevel 1379 - -* Wed Dec 06 2017 Karsten Hopp 8.0.1376-1 -- patchlevel 1376 - -* Mon Dec 04 2017 Zdenek Dohnal - 8.0.1367-2 -- fix regexp in vim-update.sh - -* Mon Dec 04 2017 Karsten Hopp 8.0.1367-1 -- patchlevel 1367 - -* Fri Dec 01 2017 Zdenek Dohnal - 8.0.1360-2 -- fix in vim-update.sh - -* Fri Dec 01 2017 Karsten Hopp 8.0.1360-1 -- patchlevel 1360 - -* Fri Dec 01 2017 Zdenek Dohnal - 8.0.1359-3 -- rewrite vim-update to update from the newest branch to the oldest - -* Thu Nov 30 2017 Zdenek Dohnal - 8.0.1359-2 -- 1508629 - missing full path and safe guards in file triggers in -common - -* Thu Nov 30 2017 Karsten Hopp 8.0.1359-1 -- patchlevel 1359 - -* Wed Nov 29 2017 Karsten Hopp 8.0.1358-1 -- patchlevel 1358 -- fix error in vim-update.sh - -* Tue Nov 28 2017 Karsten Hopp 8.0.1351-1 -- patchlevel 1351 - -* Mon Nov 27 2017 Karsten Hopp 8.0.1349-1 -- patchlevel 1349 - -* Mon Nov 27 2017 Zdenek Dohnal - 8.0.1330-2 -- removing vim-8.0-beval-pro.patch and stop updating f25 - -* Wed Nov 22 2017 Karsten Hopp 8.0.1330-1 -- patchlevel 1330 - -* Tue Nov 21 2017 Karsten Hopp 8.0.1326-1 -- patchlevel 1326 - -* Mon Nov 20 2017 Karsten Hopp 8.0.1322-1 -- patchlevel 1322 - -* Fri Nov 10 2017 Karsten Hopp 8.0.1283-1 -- patchlevel 1283 - -* Tue Nov 07 2017 Karsten Hopp 8.0.1274-1 -- patchlevel 1274 - -* Mon Nov 06 2017 Karsten Hopp 8.0.1272-1 -- patchlevel 1272 - -* Fri Nov 03 2017 Karsten Hopp 8.0.1257-1 -- patchlevel 1257 - -* Wed Nov 01 2017 Karsten Hopp 8.0.1241-1 -- patchlevel 1241 - -* Tue Oct 31 2017 Karsten Hopp 8.0.1240-1 -- patchlevel 1240 - -* Mon Oct 30 2017 Karsten Hopp 8.0.1238-1 -- patchlevel 1238 - -* Fri Oct 27 2017 Karsten Hopp 8.0.1226-1 -- patchlevel 1226 - -* Thu Oct 26 2017 Zdenek Dohnal - 8.0.1216-2 -- mention GVim in Summary and Description of vim-x11 subpackage - -* Wed Oct 25 2017 Karsten Hopp 8.0.1216-1 -- patchlevel 1216 - -* Mon Oct 23 2017 Karsten Hopp 8.0.1213-1 -- patchlevel 1213 - -* Fri Oct 20 2017 Karsten Hopp 8.0.1207-1 -- patchlevel 1207 - -* Mon Oct 16 2017 Karsten Hopp 8.0.1203-1 -- patchlevel 1203 - -* Fri Oct 13 2017 Karsten Hopp 8.0.1187-1 -- patchlevel 1187 - -* Mon Oct 09 2017 Karsten Hopp 8.0.1184-1 -- patchlevel 1184 - -* Fri Oct 06 2017 Karsten Hopp 8.0.1176-1 -- patchlevel 1176 - -* Thu Oct 05 2017 Karsten Hopp 8.0.1175-1 -- patchlevel 1175 - -* Tue Oct 03 2017 Karsten Hopp 8.0.1173-1 -- patchlevel 1173 - -* Mon Oct 02 2017 Karsten Hopp 8.0.1171-1 -- patchlevel 1171 - -* Wed Sep 27 2017 Karsten Hopp 8.0.1155-1 -- patchlevel 1155 - -* Tue Sep 26 2017 Zdenek Dohnal - 8.0.1144-2 -- removing README.patches - -* Mon Sep 25 2017 Karsten Hopp 8.0.1144-1 -- patchlevel 1144 - -* Fri Sep 22 2017 Karsten Hopp 8.0.1132-1 -- patchlevel 1132 - -* Wed Sep 20 2017 Zdenek Dohnal - 8.0.1129-2 -- vim-update.sh - update was in bad form - -* Wed Sep 20 2017 Karsten Hopp 8.0.1129-1 -- patchlevel 1129 - -* Wed Sep 20 2017 Zdenek Dohnal - 8.0.1127-2 -- vim-update.sh - update script tried to push for previous version - -* Tue Sep 19 2017 Karsten Hopp 8.0.1127-1 -- patchlevel 1127 - -* Tue Sep 19 2017 Zdenek Dohnal - 8.0.1123-2 -- vim-update.sh - fixing bug with submiting update (update got submitted for previous version) - -* Mon Sep 18 2017 Karsten Hopp 8.0.1123-1 -- patchlevel 1123 - -* Thu Sep 14 2017 Karsten Hopp 8.0.1102-1 -- vim-update.sh - add test for succesful build and fixing grepping of update's list -- patchlevel 1102 - -* Wed Sep 13 2017 Karsten Hopp 8.0.1098-1 -- editing vim-update.sh - check updates for newer releases and create update -- patchlevel 1098 - -* Tue Sep 12 2017 Karsten Hopp 8.0.1097-1 -- patchlevel 1097 -- editing vim-update.sh - wrong condition for checking fedkpg push return value - -* Mon Sep 11 2017 Karsten Hopp 8.0.1092-1 -- editing vim-update.sh for building package -- patchlevel 1092 -- 1487175 - VIm conflicts in man pages - -* Fri Sep 08 2017 Zdenek Dohnal - 8.0.1071-2 -- fixing merge and push in vim-update.sh - -* Fri Sep 08 2017 Karsten Hopp 8.0.1071-1 -- patchlevel 1071 - -* Fri Sep 08 2017 Zdenek Dohnal - 8.0.1067-2 -- editing vim-update.sh to do whole update automatically - -* Thu Sep 07 2017 Karsten Hopp 8.0.1067-1 -- patchlevel 1067 - -* Wed Sep 06 2017 Karsten Hopp 8.0.1064-1 -- patchlevel 1064 - -* Tue Sep 05 2017 Karsten Hopp 8.0.1056-1 -- patchlevel 1056 - -* Mon Sep 04 2017 Karsten Hopp 8.0.1052-1 -- patchlevel 1052 - -* Fri Sep 01 2017 Karsten Hopp 8.0.1030-1 -- patchlevel 1030 - -* Thu Aug 24 2017 Karsten Hopp 8.0.992-1 -- patchlevel 992 - -* Wed Aug 23 2017 Karsten Hopp 8.0.987-1 -- patchlevel 987 - -* Tue Aug 22 2017 Karsten Hopp 8.0.983-1 -- patchlevel 983 - -* Fri Aug 18 2017 Karsten Hopp 8.0.956-1 -- patchlevel 956 - -* Tue Aug 15 2017 Karsten Hopp 8.0.946-1 -- patchlevel 946 - -* Mon Aug 14 2017 Karsten Hopp 8.0.938-1 -- patchlevel 938 - -* Fri Aug 11 2017 Karsten Hopp 8.0.896-1 -- patchlevel 896 - -* Thu Aug 10 2017 Karsten Hopp 8.0.895-1 -- patchlevel 895 - -* Wed Aug 09 2017 Karsten Hopp 8.0.893-1 -- patchlevel 893 - -* Wed Aug 09 2017 Zdenek Dohnal 8.0.891-2 -- editing vim-update.sh - now it takes branch name as argument for switching and run mockbuild - -* Tue Aug 08 2017 Karsten Hopp 8.0.891-1 -- patchlevel 891 - -* Mon Aug 07 2017 Karsten Hopp 8.0.885-1 -- patchlevel 885 - -* Thu Aug 03 2017 Fedora Release Engineering - 2:8.0.844-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild - -* Thu Aug 03 2017 Karsten Hopp 8.0.844-1 -- patchlevel 844 - -* Tue Aug 01 2017 Karsten Hopp 8.0.826-1 -- patchlevel 826 - -* Mon Jul 31 2017 Karsten Hopp 8.0.823-1 -- patchlevel 823 - -* Thu Jul 27 2017 Fedora Release Engineering - 2:8.0.739-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild - -* Fri Jul 21 2017 Karsten Hopp 8.0.739-1 -- patchlevel 739 - -* Thu Jul 20 2017 Karsten Hopp 8.0.738-1 -- patchlevel 738 - -* Wed Jul 19 2017 Karsten Hopp 8.0.730-1 -- patchlevel 730 - -* Tue Jul 18 2017 Karsten Hopp 8.0.728-1 -- patchlevel 728 - -* Thu Jul 13 2017 Karsten Hopp 8.0.711-1 -- patchlevel 711 - -* Tue Jul 11 2017 Karsten Hopp 8.0.705-1 -- patchlevel 705 - -* Fri Jun 30 2017 Karsten Hopp 8.0.691-1 -- patchlevel 691 - -* Thu Jun 29 2017 Karsten Hopp 8.0.688-1 -- patchlevel 688 - -* Thu Jun 29 2017 Zdenek Dohnal - 8.0.685-3 -- update python dependencies accordingly Fedora Guidelines for Python (python-devel -> python2-devel) - -* Wed Jun 28 2017 Karsten Hopp 8.0.685-1 -- patchlevel 685 - -* Mon Jun 26 2017 Karsten Hopp 8.0.679-1 -- patchlevel 679 - -* Fri Jun 23 2017 Karsten Hopp 8.0.662-1 -- patchlevel 662 - -* Tue Jun 20 2017 Karsten Hopp 8.0.648-1 -- patchlevel 648 - -* Mon Jun 19 2017 Karsten Hopp 8.0.647-1 -- patchlevel 647 - -* Thu Jun 15 2017 Karsten Hopp 8.0.642-1 -- patchlevel 642 - -* Mon Jun 12 2017 Karsten Hopp 8.0.636-1 -- patchlevel 636, removing perl ftbfs patch - -* Fri Jun 09 2017 Karsten Hopp 8.0.628-1 -- patchlevel 628 - -* Wed Jun 07 2017 Jitka Plesnikova - 2:8.0.627-2 -- Perl 5.26 re-rebuild of bootstrapped packages - -* Wed Jun 07 2017 Karsten Hopp 8.0.627-1 -- patchlevel 627 - -* Mon Jun 05 2017 Karsten Hopp 8.0.617-1 -- patchlevel 617 - -* Sun Jun 04 2017 Jitka Plesnikova - 2:8.0.606-3 -- Perl 5.26 rebuild - -* Mon May 29 2017 Zdenek Dohnal - 2:8.0.606-2 -- 1456455 - vim-8.0.600-1.fc27 FTBFS with Perl 5.26.0 - -* Mon May 29 2017 Karsten Hopp 8.0.606-1 -- patchlevel 606 - -* Thu May 25 2017 Karsten Hopp 8.0.604-1 -- patchlevel 604 - -* Fri May 19 2017 Karsten Hopp 8.0.600-1 -- patchlevel 600 - -* Wed May 17 2017 Karsten Hopp 8.0.599-1 -- patchlevel 599 - -* Tue May 16 2017 Karsten Hopp 8.0.598-1 -- patchlevel 598 - -* Mon May 15 2017 Karsten Hopp 8.0.597-1 -- patchlevel 597 - -* Tue May 02 2017 Karsten Hopp 8.0.596-1 -- patchlevel 596 - -* Mon Apr 24 2017 Karsten Hopp 8.0.586-1 -- patchlevel 586 - -* Tue Apr 18 2017 Karsten Hopp 8.0.566-1 -- patchlevel 566 - -* Thu Apr 13 2017 Karsten Hopp 8.0.563-1 -- patchlevel 563 - -* Tue Apr 11 2017 Karsten Hopp 8.0.562-1 -- patchlevel 562 - -* Mon Apr 10 2017 Karsten Hopp 8.0.559-1 -- patchlevel 559 - -* Thu Apr 06 2017 Karsten Hopp 8.0.543-1 -- patchlevel 543 - -* Mon Apr 03 2017 Karsten Hopp 8.0.540-1 -- patchlevel 540 - -* Fri Mar 31 2017 Karsten Hopp 8.0.529-1 -- patchlevel 529 - -* Thu Mar 30 2017 Karsten Hopp 8.0.525-1 -- patchlevel 525 - -* Wed Mar 29 2017 Karsten Hopp 8.0.517-1 -- patchlevel 517 -- enhance rhbz#1436124 - -* Tue Mar 28 2017 Karsten Hopp 8.0.515-1 -- patchlevel 515 - -* Mon Mar 27 2017 Karsten Hopp 8.0.514-1 -- patchlevel 514 -- 1436124 - VIM chooses ft=bindzone for sudoedit /etc/named.conf - -* Fri Mar 24 2017 Karsten Hopp 8.0.503-1 -- patchlevel 503 - -* Wed Mar 22 2017 Karsten Hopp 8.0.502-1 -- patchlevel 502 - -* Tue Mar 21 2017 Karsten Hopp 8.0.497-1 -- patchlevel 497 - -* Mon Mar 20 2017 Karsten Hopp 8.0.494-1 -- patchlevel 494 - -* Wed Mar 15 2017 Karsten Hopp 8.0.458-1 -- patchlevel 458 - -* Tue Mar 14 2017 Karsten Hopp 8.0.456-1 -- patchlevel 456 - -* Fri Mar 10 2017 Karsten Hopp 8.0.442-1 -- patchlevel 442 - -* Wed Mar 08 2017 Karsten Hopp 8.0.430-1 -- patchlevel 430 - -* Tue Mar 07 2017 Karsten Hopp 8.0.427-1 -- patchlevel 427 - -* Mon Mar 06 2017 Karsten Hopp 8.0.425-1 -- patchlevel 425 - -* Fri Mar 03 2017 Karsten Hopp 8.0.402-1 -- patchlevel 402 - -* Thu Mar 02 2017 Karsten Hopp 8.0.398-1 -- patchlevel 398 - -* Wed Mar 01 2017 Karsten Hopp 8.0.388-1 -- patchlevel 388 - -* Tue Feb 28 2017 Karsten Hopp 8.0.386-1 -- patchlevel 386 - -* Mon Feb 27 2017 Karsten Hopp 8.0.381-1 -- patchlevel 381 - -* Fri Feb 24 2017 Karsten Hopp 8.0.363-1 -- patchlevel 363 -- removing vim-8.0-gtk-render.patch - -* Fri Feb 24 2017 Karsten Hopp 8.0.347-1 -- patchlevel 347 -- 1405234 - Gvim fails to properly render after Openbox desktop switch -- 1426296 - vim: FTBFS with python3-3.6.0-18.fc26 - -* Tue Feb 21 2017 Karsten Hopp 8.0.344-1 -- patchlevel 344 - -* Mon Feb 20 2017 Karsten Hopp 8.0.342-1 -- patchlevel 342 - -* Thu Feb 16 2017 Zdenek Dohnal 8.0.329-1 -- 1422833 - Syntax error in tex.vim: missing bracket - -* Mon Feb 13 2017 Karsten Hopp 8.0.329-1 -- patchlevel 329 - -* Fri Feb 10 2017 Karsten Hopp 8.0.324-1 -- patchlevel 324 - -* Thu Feb 09 2017 Karsten Hopp 8.0.318-1 -- patchlevel 318 - -* Tue Feb 07 2017 Karsten Hopp 8.0.314-1 -- patchlevel 314, added screenshot to appdata and testing validity of appdata.xml - -* Mon Feb 06 2017 Karsten Hopp 8.0.311-1 -- patchlevel 311 - -* Fri Feb 03 2017 Karsten Hopp 8.0.297-1 -- patchlevel 297 - -* Wed Feb 01 2017 Karsten Hopp 8.0.275-1 -- patchlevel 275 - -* Tue Jan 31 2017 Karsten Hopp 8.0.273-1 -- patchlevel 273 - -* Mon Jan 30 2017 Karsten Hopp 8.0.271-1 -- patchlevel 271 - -* Thu Jan 26 2017 Karsten Hopp 8.0.238-1 -- patchlevel 238 - -* Thu Jan 19 2017 Karsten Hopp 8.0.206-1 -- patchlevel 206 - -* Tue Jan 17 2017 Karsten Hopp 8.0.197-1 -- patchlevel 197 -- update runtime files - -* Mon Jan 16 2017 Karsten Hopp 8.0.194-1 -- patchlevel 194 - -* Fri Jan 13 2017 Karsten Hopp 8.0.176-1 -- patchlevel 176 - -* Thu Jan 12 2017 Karsten Hopp 8.0.172-1 -- patchlevel 172 - -* Wed Jan 11 2017 Karsten Hopp 8.0.170-1 -- patchlevel 170 - -* Mon Jan 09 2017 Karsten Hopp 8.0.160-1 -- patchlevel 160 - -* Tue Jan 03 2017 Karsten Hopp 8.0.142-1 -- patchlevel 142 - -* Mon Dec 19 2016 Zdenek Dohnal - 2:8.0.134-2 -- f24->f25 vim: copy paste no longer works (bug #1401410) - fixing error in prep - -* Mon Dec 19 2016 Zdenek Dohnal - 2:8.0.134-2 -- f24->f25 vim: copy paste no longer works (bug #1401410) - deleting mouse setting block from defaults.vim - -* Mon Dec 19 2016 Karsten Hopp 8.0.134-1 -- patchlevel 134 -- f24->f25 vim: copy paste no longer works (bug #1401410) - revert previous changes, set mouse=v in defaults.vim - -* Thu Dec 15 2016 Zdenek Dohnal - 2:8.0.133-2 -- f24->f25 vim: copy paste no longer works (bug #1401410) - change mouse default setting to 'v' - -* Thu Dec 15 2016 Karsten Hopp - 8.0.133-2 -- fix fstab syntax highlighting (rhbz#1365258) - -* Mon Dec 12 2016 Karsten Hopp 8.0.133-1 -- patchlevel 133 - -* Mon Dec 05 2016 Zdenek Dohnal - 2:8.0.124-2 -- add new sources - -* Mon Dec 05 2016 Karsten Hopp 8.0.124-1 -- patchlevel 124 - -* Fri Dec 02 2016 Karsten Hopp 8.0.118-1 -- patchlevel 118 - -* Mon Nov 28 2016 Zdenek Dohnal - 2:8.0.104-2 -- do not ship vim.desktop - -* Mon Nov 28 2016 Karsten Hopp 8.0.104-1 -- patchlevel 104 - -* Thu Nov 24 2016 Karsten Hopp 8.0.095-1 -- patchlevel 095 - -* Thu Nov 24 2016 Karsten Hopp 8.0.095-1 -- patchlevel 095 - -* Thu Nov 24 2016 Karsten Hopp 8.0.095-1 -- patchlevel 095 - -* Thu Nov 24 2016 Karsten Hopp 8.0.095-2 -- disable download of spec.vim, main sources are newer - -* Tue Nov 22 2016 Karsten Hopp 8.0.095-1 -- patchlevel 095 - -* Mon Nov 21 2016 Karsten Hopp 8.0.094-1 -- patchlevel 094 - -* Wed Nov 16 2016 Karsten Hopp 8.0.086-1 -- patchlevel 086 - -* Tue Nov 15 2016 Karsten Hopp 8.0.085-1 -- patchlevel 085 - -* Mon Nov 14 2016 Karsten Hopp 8.0.084-1 -- patchlevel 084 - -* Mon Nov 14 2016 Zdenek Dohnal - 8.0.070-1 -- patchlevel 070 - -* Mon Nov 14 2016 Karsten Hopp 8.0.000-1 -- patchlevel 000 - -* Wed Nov 09 2016 Karsten Hopp 8.0.057-1 -- patchlevel 057 - -* Mon Nov 07 2016 Vít Ondruch - 8.0.037-2 -- Add RPM file triggers support. - -* Wed Oct 19 2016 Karsten Hopp 8.0.037-1 -- patchlevel 037 - -* Wed Oct 19 2016 Karsten Hopp 8.0.018-1 -- switch to gtk3 - -* Thu Oct 06 2016 Karsten Hopp 8.0.018-1 -- patchlevel 018 - -* Tue Sep 13 2016 Karsten Hopp 8.0.003-1 -- patchlevel 003 - -* Wed Sep 07 2016 Karsten Hopp 7.4.2342-1 -- patchlevel 2342 - -* Mon Sep 05 2016 Karsten Hopp 7.4.2330-1 -- patchlevel 2330 - -* Thu Aug 04 2016 Karsten Hopp 7.4.1989-2 -- redo patches, some upstream updates broke them - -* Tue Jul 05 2016 Karsten Hopp 7.4.1989-1 -- patchlevel 1989 - -* Mon Jul 04 2016 Karsten Hopp 7.4.1988-1 -- patchlevel 1988 - -* Thu Jun 02 2016 Karsten Hopp 7.4.1868-1 -- patchlevel 1868 - -* Wed May 25 2016 Karsten Hopp 7.4.1842-1 -- patchlevel 1842 - -* Tue May 24 2016 Karsten Hopp - 7.4.1835-2 -- compile perl support as a dynamic module (rhbz#1327755) - -* Tue May 24 2016 Karsten Hopp 7.4.1835-1 -- patchlevel 1835 - -* Tue May 24 2016 Karsten Hopp - 7.4.1830-3 -- mv vim.sh and vim.csh to source files -- sh profile.d improvements: don't leak $ID, don't fail on nounset - (rhbz#1339106 Ville Skyttä) - -* Sun May 15 2016 Jitka Plesnikova - 2:7.4.1830-2 -- Perl 5.24 rebuild - -* Fri May 13 2016 Karsten Hopp 7.4.1830-1 -- patchlevel 1830 - -* Mon May 02 2016 Karsten Hopp 7.4.1816-1 -- patchlevel 1816 - -* Fri Apr 29 2016 Karsten Hopp - 7.4.1797-3 -- use uncompressed help files. vimtutor and vi will access those when - vim-common is installed. (rhbz#1262182) - No hard requirement vim-minimal -> vim-common added, to allow minimal - installations - -* Fri Apr 29 2016 Karsten Hopp - 7.4.1797-2 -- merge git branches and rebuild - -* Fri Apr 29 2016 Karsten Hopp 7.4.1797-1 -- patchlevel 1797 - -* Tue Apr 26 2016 Karsten Hopp 7.4.1786-1 -- patchlevel 1786 - -* Tue Apr 26 2016 Karsten Hopp - 7.4.1775-2 -- fix error in spec.vim (rhbz#1318991) - -* Mon Apr 25 2016 Karsten Hopp - 7.4.1320-2 -- update ftplugin/spec.vim, syntax/spec.vim (rhbz#1297746) - -* Fri Apr 22 2016 Karsten Hopp 7.4.1775-1 -- patchlevel 1775 - -* Tue Apr 12 2016 Karsten Hopp - 7.4.1718-2 -- add vimfiles_root macro (rhbz#844975) -- add %%_libdir/vim directory for plugins (rhbz#1193230) -- vi, rvi, rview, ex, view don't read vimrc anymore. They use virc instead - (rhbz#1045815) -- fix dates in changelogs when spec.vim is used and locale != 'C' - -* Fri Apr 08 2016 Karsten Hopp 7.4.1718-1 -- patchlevel 1718 - -* Tue Mar 15 2016 Karsten Hopp 7.4.1570-1 -- patchlevel 1570 - -* Wed Feb 17 2016 Karsten Hopp 7.4.1344-1 -- patchlevel 1344 - -* Mon Feb 15 2016 Karsten Hopp 7.4.1320-1 -- patchlevel 1320 - -* Sun Feb 14 2016 Karsten Hopp 7.4.1317-1 -- patchlevel 1317 - -* Sat Feb 13 2016 Karsten Hopp 7.4.1308-1 -- patchlevel 1308 - -* Fri Feb 12 2016 Karsten Hopp 7.4.1304-1 -- patchlevel 1304 - -* Thu Feb 11 2016 Karsten Hopp 7.4.1301-1 -- patchlevel 1301 - -* Wed Feb 10 2016 Karsten Hopp 7.4.1297-1 -- patchlevel 1297 - -* Tue Feb 09 2016 Karsten Hopp 7.4.1293-1 -- patchlevel 1293 - -* Mon Feb 08 2016 Karsten Hopp 7.4.1290-1 -- patchlevel 1290 - -* Sun Feb 07 2016 Karsten Hopp 7.4.1273-1 -- patchlevel 1273 - -* Sat Feb 06 2016 Karsten Hopp 7.4.1265-1 -- patchlevel 1265 - -* Fri Feb 05 2016 Fedora Release Engineering - 2:7.4.1229-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild - -* Mon Feb 01 2016 Karsten Hopp 7.4.1229-1 -- patchlevel 1229 - -* Sat Jan 23 2016 Karsten Hopp 7.4.1153-1 -- patchlevel 1153 - -* Fri Jan 22 2016 Karsten Hopp 7.4.1152-1 -- patchlevel 1152 - -* Thu Jan 21 2016 Karsten Hopp 7.4.1147-1 -- patchlevel 1147 - -* Wed Jan 20 2016 Karsten Hopp 7.4.1143-1 -- patchlevel 1143 - -* Tue Jan 19 2016 Karsten Hopp 7.4.1142-1 -- patchlevel 1142 - -* Tue Jan 19 2016 Karsten Hopp 7.4.1131-1 -- patchlevel 1131 - -* Mon Jan 18 2016 Karsten Hopp 7.4.1129-1 -- patchlevel 1129 - -* Sun Jan 17 2016 Karsten Hopp 7.4.1112-1 -- patchlevel 1112 - -* Sat Jan 16 2016 Karsten Hopp 7.4.1101-1 -- patchlevel 1101 - -* Fri Jan 15 2016 Karsten Hopp 7.4.1090-1 -- patchlevel 1090 - -* Wed Jan 13 2016 Karsten Hopp 7.4.1089-1 -- patchlevel 1089 - -* Tue Jan 12 2016 Karsten Hopp - 7.4.1087-2 -- fix ssh syntax files -- fix %%global in spec.vim (rhbz#1058041) - -* Mon Jan 11 2016 Karsten Hopp 7.4.1087-1 -- patchlevel 1087 - -* Sun Dec 20 2015 Karsten Hopp 7.4.979-1 -- patchlevel 979 - -* Fri Dec 18 2015 Karsten Hopp 7.4.977-1 -- patchlevel 977 - -* Mon Dec 14 2015 Karsten Hopp 7.4.972-1 -- patchlevel 972 - -* Sun Dec 13 2015 Karsten Hopp 7.4.970-1 -- patchlevel 970 - -* Sat Dec 12 2015 Karsten Hopp 7.4.969-1 -- patchlevel 969 - -* Mon Dec 07 2015 Karsten Hopp 7.4.963-1 -- patchlevel 963 - -* Sun Dec 06 2015 Karsten Hopp 7.4.962-1 -- patchlevel 962 - -* Fri Dec 04 2015 Karsten Hopp 7.4.960-1 -- patchlevel 960 - -* Wed Dec 02 2015 Karsten Hopp 7.4.947-1 -- patchlevel 947 - -* Tue Dec 01 2015 Karsten Hopp 7.4.945-1 -- patchlevel 945 - -* Mon Nov 30 2015 Karsten Hopp 7.4.944-1 -- patchlevel 944 - -* Thu Nov 26 2015 Karsten Hopp 7.4.942-1 -- patchlevel 942 - -* Wed Nov 25 2015 Karsten Hopp 7.4.941-1 -- patchlevel 941 - -* Mon Nov 23 2015 Karsten Hopp 7.4.936-1 -- patchlevel 936 - -* Sun Nov 22 2015 Karsten Hopp 7.4.934-1 -- patchlevel 934 - -* Fri Nov 20 2015 Karsten Hopp 7.4.930-1 -- patchlevel 930 - -* Wed Nov 11 2015 Karsten Hopp 7.4.922-1 -- patchlevel 922 - -* Tue Nov 10 2015 Karsten Hopp 7.4.917-1 -- patchlevel 917 - -* Wed Nov 04 2015 Karsten Hopp 7.4.909-1 -- patchlevel 909 -- Fedora vim now uses tarballs created from upstream git instead - of just upstream patches. Now runtime files will have fixes, too. - -* Tue Nov 03 2015 Karsten Hopp 7.4.908-1 -- patchlevel 908 - -* Mon Nov 02 2015 Karsten Hopp 7.4.903-1 -- patchlevel 903 - -* Sat Oct 31 2015 Karsten Hopp 7.4.902-1 -- patchlevel 902 - -* Mon Oct 26 2015 Karsten Hopp 7.4.900-1 -- patchlevel 900 - -* Wed Oct 14 2015 Karsten Hopp 7.4.898-1 -- patchlevel 898 - -* Thu Oct 08 2015 Karsten Hopp 7.4.891-1 -- patchlevel 891 - -* Wed Oct 07 2015 Karsten Hopp 7.4.890-1 -- patchlevel 890 - -* Wed Sep 30 2015 Karsten Hopp 7.4.889-1 -- patchlevel 889 - -* Sat Sep 26 2015 Karsten Hopp 7.4.884-1 -- patchlevel 884 - -* Tue Sep 22 2015 Karsten Hopp 7.4.873-2 -- fix garbled xxd manpage in Japanese locale (bugzilla #1035606), Masayuki Oshima - -* Tue Sep 22 2015 Karsten Hopp 7.4.873-1 -- add Provides: mergetool for bugzilla #990444 - -* Fri Sep 18 2015 Karsten Hopp 7.4.873-1 -- patchlevel 873 - -* Wed Sep 16 2015 Karsten Hopp 7.4.871-1 -- patchlevel 871 - -* Thu Sep 10 2015 Karsten Hopp 7.4.865-1 -- patchlevel 865 - -* Wed Sep 09 2015 Karsten Hopp 7.4.861-1 -- patchlevel 861 - -* Wed Sep 02 2015 Karsten Hopp 7.4.854-1 -- patchlevel 854 - -* Fri Aug 28 2015 Karsten Hopp 7.4.843-1 -- patchlevel 843 - -* Thu Aug 27 2015 Karsten Hopp 7.4.841-1 -- patchlevel 841 - -* Wed Aug 26 2015 Karsten Hopp 7.4.838-1 -- patchlevel 838 - -* Wed Aug 19 2015 Karsten Hopp 7.4.827-1 -- patchlevel 827 -- re-enable lua -- enable python3 - -* Fri Jul 10 2015 Lubomir Rintel 7.4.769-3 -- drop forcing background, vim detects this since 7.4.757, rhbz#1159920 - -* Sat Jul 04 2015 Karsten Hopp 7.4.769-1 -- patchlevel 769 - -* Fri Jul 03 2015 Karsten Hopp 7.4.768-1 -- patchlevel 768 - -* Mon Jun 29 2015 Karsten Hopp 7.4.764-1 -- patchlevel 764 - -* Sun Jun 28 2015 Karsten Hopp 7.4.763-1 -- patchlevel 763 - -* Fri Jun 26 2015 Karsten Hopp 7.4.761-1 -- patchlevel 761 - -* Thu Jun 25 2015 Karsten Hopp 7.4.757-1 -- patchlevel 757 - -* Mon Jun 22 2015 Karsten Hopp 7.4.752-1 -- patchlevel 752 - -* Fri Jun 19 2015 Fedora Release Engineering - 2:7.4.737-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild - -* Wed Jun 10 2015 Karsten Hopp 7.4.737-1 -- patchlevel 737 - -* Thu May 14 2015 Karsten Hopp 7.4.729-1 -- patchlevel 729 - -* Wed May 06 2015 Karsten Hopp 7.4.728-1 -- patchlevel 728 - -* Tue May 05 2015 Karsten Hopp 7.4.726-1 -- patchlevel 726 - -* Mon May 04 2015 Karsten Hopp 7.4.723-1 -- patchlevel 723 - -* Thu Apr 23 2015 Karsten Hopp 7.4.712-1 -- patchlevel 712 - -* Wed Apr 22 2015 Karsten Hopp 7.4.711-1 -- patchlevel 711 - -* Tue Apr 21 2015 Karsten Hopp 7.4.708-1 -- patchlevel 708 - -* Sat Apr 18 2015 Karsten Hopp 7.4.703-1 -- patchlevel 703 - -* Fri Apr 17 2015 Karsten Hopp 7.4.702-1 -- patchlevel 702 - -* Wed Apr 15 2015 Karsten Hopp 7.4.701-1 -- patchlevel 701 - -* Tue Apr 14 2015 Karsten Hopp 7.4.699-1 -- patchlevel 699 - -* Mon Apr 13 2015 Karsten Hopp 7.4.698-1 -- patchlevel 698 - -* Fri Apr 10 2015 Karsten Hopp 7.4.692-1 -- patchlevel 692 - -* Sat Apr 04 2015 Karsten Hopp 7.4.691-1 -- patchlevel 691 - -* Fri Apr 03 2015 Karsten Hopp 7.4.690-1 -- patchlevel 690 - -* Wed Apr 01 2015 Karsten Hopp 7.4.688-1 -- patchlevel 688 - -* Tue Mar 31 2015 Karsten Hopp 7.4.686-1 -- patchlevel 686 - -* Thu Mar 26 2015 Karsten Hopp 7.4.683-1 -- patchlevel 683 - -* Wed Mar 25 2015 Karsten Hopp 7.4.682-1 -- patchlevel 682 - -* Tue Mar 24 2015 Karsten Hopp 7.4.681-1 -- patchlevel 681 - -* Sun Mar 22 2015 Karsten Hopp 7.4.674-1 -- patchlevel 674 - -* Sat Mar 21 2015 Karsten Hopp 7.4.672-1 -- patchlevel 672 - -* Fri Mar 20 2015 Karsten Hopp 7.4.668-1 -- patchlevel 668 - -* Thu Mar 19 2015 Jitka Plesnikova - 7.4.663-3 -- Perl 5.22 rebuild - -* Wed Mar 18 2015 Richard Hughes - 7.4.663-2 -- Add an AppData file for the software center - -* Sat Mar 14 2015 Karsten Hopp 7.4.663-1 -- patchlevel 663 - -* Fri Mar 13 2015 Karsten Hopp 7.4.662-1 -- patchlevel 662 - -* Sun Mar 08 2015 Karsten Hopp 7.4.658-1 -- patchlevel 658 - -* Sat Mar 07 2015 Karsten Hopp 7.4.657-1 -- patchlevel 657 - -* Fri Mar 06 2015 Karsten Hopp 7.4.656-1 -- patchlevel 656 - -* Thu Mar 05 2015 Karsten Hopp 7.4.652-1 -- patchlevel 652 - -* Sat Feb 28 2015 Karsten Hopp 7.4.648-1 -- patchlevel 648 - -* Fri Feb 27 2015 Karsten Hopp 7.4.643-1 -- patchlevel 643 - -* Fri Feb 27 2015 Dave Airlie 7.4.640-4 -- fix vimrc using wrong comment character - -* Thu Feb 26 2015 Karsten Hopp 7.4.640-3 -- bump release - -* Thu Feb 26 2015 Karsten Hopp 7.4.640-2 -- set background to dark in gnome-terminal, rhbz#1159920 - -* Wed Feb 25 2015 Karsten Hopp 7.4.640-1 -- patchlevel 640 - -* Sat Feb 21 2015 Till Maas - 7.4.629-2 -- Rebuilt for Fedora 23 Change - https://fedoraproject.org/wiki/Changes/Harden_all_packages_with_position-independent_code - -* Wed Feb 11 2015 Karsten Hopp 7.4.629-2 -- fix syntax highlighting for some ssh_config sshd_config keywords - -* Wed Feb 11 2015 Karsten Hopp 7.4.629-1 -- patchlevel 629 - -* Fri Feb 06 2015 Karsten Hopp 7.4.622-1 -- patchlevel 622 - -* Thu Feb 05 2015 Karsten Hopp 7.4.621-1 -- patchlevel 621 - -* Wed Feb 04 2015 Karsten Hopp 7.4.618-1 -- patchlevel 618 - -* Tue Feb 03 2015 Karsten Hopp 7.4.615-1 -- patchlevel 615 - -* Wed Jan 28 2015 Karsten Hopp 7.4.608-1 -- patchlevel 608 - -* Tue Jan 27 2015 Karsten Hopp 7.4.604-1 -- patchlevel 604 - -* Fri Jan 23 2015 Karsten Hopp 7.4.591-1 -- patchlevel 591 - -* Wed Jan 21 2015 Karsten Hopp 7.4.589-1 -- patchlevel 589 - -* Tue Jan 20 2015 Karsten Hopp 7.4.586-1 -- patchlevel 586 - -* Sun Jan 18 2015 Karsten Hopp 7.4.582-1 -- patchlevel 582 - -* Thu Jan 15 2015 Karsten Hopp 7.4.580-1 -- patchlevel 580 - -* Wed Jan 14 2015 Karsten Hopp 7.4.576-1 -- patchlevel 576 - -* Mon Jan 12 2015 Karsten Hopp 7.4.567-1 -- use %%make_install in spec-template.new (rhbz#919270) - -* Thu Jan 08 2015 Karsten Hopp 7.4.567-1 -- patchlevel 567 - -* Wed Jan 07 2015 Karsten Hopp 7.4.566-1 -- patchlevel 566 - -* Thu Dec 18 2014 Karsten Hopp 7.4.560-1 -- patchlevel 560 - -* Wed Dec 17 2014 Karsten Hopp 7.4.557-1 -- patchlevel 557 - -* Sun Dec 14 2014 Karsten Hopp 7.4.552-1 -- patchlevel 552 - -* Sat Dec 13 2014 Karsten Hopp 7.4.546-1 -- patchlevel 546 - -* Mon Dec 08 2014 Karsten Hopp 7.4.542-1 -- patchlevel 542 - -* Sun Dec 07 2014 Karsten Hopp 7.4.541-1 -- patchlevel 541 - -* Mon Dec 01 2014 Karsten Hopp 7.4.540-1 -- patchlevel 540 - -* Sun Nov 30 2014 Karsten Hopp 7.4.539-1 -- patchlevel 539 - -* Fri Nov 28 2014 Karsten Hopp 7.4.537-1 -- patchlevel 537 - -* Thu Nov 27 2014 Karsten Hopp 7.4.534-1 -- patchlevel 534 - -* Sun Nov 23 2014 Karsten Hopp 7.4.527-1 -- patchlevel 527 - -* Fri Nov 21 2014 Karsten Hopp 7.4.526-1 -- patchlevel 526 - -* Thu Nov 20 2014 Karsten Hopp 7.4.525-1 -- patchlevel 525 - -* Wed Nov 19 2014 Karsten Hopp 7.4.521-1 -- patchlevel 521 - -* Thu Nov 13 2014 Karsten Hopp 7.4.516-1 -- patchlevel 516 - -* Wed Nov 12 2014 Karsten Hopp 7.4.512-1 -- patchlevel 512 - -* Thu Nov 06 2014 Karsten Hopp 7.4.507-1 -- patchlevel 507 - -* Wed Nov 05 2014 Karsten Hopp 7.4.502-1 -- patchlevel 502 - -* Sat Nov 01 2014 Karsten Hopp 7.4.492-1 -- patchlevel 492 - -* Fri Oct 31 2014 Karsten Hopp 7.4.491-1 -- patchlevel 491 - -* Thu Oct 23 2014 Karsten Hopp 7.4.488-1 -- patchlevel 488 - -* Wed Oct 22 2014 Karsten Hopp 7.4.487-1 -- patchlevel 487 - -* Tue Oct 21 2014 Karsten Hopp 7.4.483-1 -- patchlevel 483 - -* Fri Oct 17 2014 Karsten Hopp 7.4.481-1 -- patchlevel 481 - -* Thu Oct 16 2014 Karsten Hopp 7.4.480-1 -- patchlevel 480 - -* Wed Oct 15 2014 Karsten Hopp 7.4.477-1 -- patchlevel 477 - -* Mon Oct 13 2014 Karsten Hopp 7.4.475-2 -- add support for %%license macro (Petr Šabata) - -* Sat Oct 11 2014 Karsten Hopp 7.4.475-1 -- patchlevel 475 - -* Fri Oct 10 2014 Karsten Hopp 7.4.473-1 -- patchlevel 473 - -* Thu Oct 09 2014 Karsten Hopp 7.4.471-1 -- patchlevel 471 - -* Tue Oct 07 2014 Karsten Hopp 7.4.465-1 -- patchlevel 465 - -* Tue Sep 30 2014 Karsten Hopp 7.4.463-1 -- patchlevel 463 - -* Mon Sep 29 2014 Karsten Hopp 7.4.462-1 -- patchlevel 462 - -* Sat Sep 27 2014 Karsten Hopp 7.4.461-1 -- patchlevel 461 - -* Wed Sep 24 2014 Karsten Hopp 7.4.460-1 -- patchlevel 460 - -* Wed Sep 24 2014 Karsten Hopp 7.4.458-1 -- patchlevel 458 - -* Tue Sep 23 2014 Karsten Hopp 7.4.457-1 -- patchlevel 457 - -* Sat Sep 20 2014 Karsten Hopp 7.4.453-1 -- patchlevel 453 - -* Tue Sep 16 2014 Karsten Hopp 7.4.444-1 -- patchlevel 444 - -* Mon Sep 15 2014 Karsten Hopp 7.4.443-1 -- patchlevel 443 - -* Wed Sep 10 2014 Karsten Hopp 7.4.442-1 -- patchlevel 442 - -* Tue Aug 26 2014 Jitka Plesnikova - 2:7.4.417-2 -- Perl 5.20 rebuild - -* Tue Aug 26 2014 Karsten Hopp 7.4.417-1 -- patchlevel 417 - -* Fri Aug 22 2014 Karsten Hopp 7.4.410-1 -- patchlevel 410 -- xsubpp-path patch is obsolete now - -* Fri Aug 22 2014 Karsten Hopp 7.4.402-3 -- fix help file names - -* Mon Aug 18 2014 Fedora Release Engineering - 2:7.4.402-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild - - -* Wed Aug 13 2014 Karsten Hopp 7.4.402-1 -- patchlevel 402 - -* Tue Aug 12 2014 Karsten Hopp 7.4.401-1 -- patchlevel 401 - -* Wed Aug 6 2014 Tom Callaway 2:7.4.373-2 -- fix license handling - -* Tue Jul 22 2014 Karsten Hopp 7.4.373-1 -- patchlevel 373 - -* Sun Jun 08 2014 Fedora Release Engineering - 2:7.4.307-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild - -* Tue May 27 2014 Karsten Hopp 7.4.307-1 -- patchlevel 307 - -* Tue Apr 29 2014 Vít Ondruch - 2:7.4.258-2 -- Rebuilt for https://fedoraproject.org/wiki/Changes/Ruby_2.1 - -* Wed Apr 16 2014 Karsten Hopp 7.4.258-1 -- patchlevel 258 - -* Mon Apr 07 2014 Karsten Hopp 7.4.253-1 -- patchlevel 253 - -* Wed Mar 12 2014 Karsten Hopp 7.4.204-1 -- patchlevel 204 - -* Mon Feb 24 2014 Karsten Hopp 7.4.192-1 -- patchlevel 192 - -* Tue Feb 18 2014 Karsten Hopp 7.4.182-1 -- patchlevel 182 - -* Tue Feb 18 2014 Karsten Hopp 7.4.179-2 -- enable dynamic lua interpreter - -* Sat Feb 15 2014 Karsten Hopp 7.4.179-1 -- patchlevel 179 - -* Wed Jan 29 2014 Karsten Hopp 7.4.160-1 -- patchlevel 160 - -* Tue Dec 17 2013 Karsten Hopp 7.4.131-1 -- patchlevel 131 - -* Wed Nov 20 2013 Karsten Hopp 7.4.094-1 -- patchlevel 094 - -* Tue Oct 15 2013 Karsten Hopp 7.4.052-1 -- patchlevel 052 - -* Wed Sep 11 2013 Karsten Hopp 7.4.027-2 -- update vim icons (#1004788) -- check if 'id -u' returns empty string (vim.sh) - -* Wed Sep 11 2013 Karsten Hopp 7.4.027-1 -- patchlevel 027 - -* Wed Sep 04 2013 Karsten Hopp 7.4.016-1 -- patchlevel 016 - -* Wed Aug 28 2013 Karsten Hopp 7.4.009-1 -- patchlevel 009 - mkdir("foo/bar/", "p") gives an error message - creating a preview window on startup messes up the screen - new regexp engine can't be interrupted - too easy to write a file was not decrypted (yet) - -* Wed Aug 21 2013 Karsten Hopp 7.4.5-1 -- patchlevel 5 -- when closing a window fails ":bwipe" may hang -- "vaB" while 'virtualedit' is set selects the wrong area - -* Wed Aug 21 2013 Karsten Hopp 7.4.3-1 -- patchlevel 3, memory access error in Ruby syntax highlighting - -* Wed Aug 21 2013 Karsten Hopp 7.4.2-1 -- patchlevel 2, pattern with two alternative look-behind matches doesn't match - -* Wed Aug 21 2013 Karsten Hopp 7.4.1-1 -- patchlevel 1, 'ic' doesn't work for patterns such as [a-z] - -* Mon Aug 12 2013 Karsten Hopp 7.4.0-1 -- update to vim-7.4 - -* Sun Aug 04 2013 Fedora Release Engineering - 2:7.3.1314-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild - -* Fri Jul 26 2013 Karsten Hopp 7.3.1314-2 -- document gex and vimx in man page -- fix gvimdiff and gvimtutor man page redirects - -* Wed Jul 17 2013 Petr Pisar - 2:7.3.1314-2 -- Perl 5.18 rebuild - -* Tue Jul 09 2013 Karsten Hopp 7.3.1314-1 -- patchlevel 1314 - -* Thu Jul 04 2013 Karsten Hopp 7.3.1293-1 -- patchlevel 1293 - -* Fri Jun 14 2013 Karsten Hopp 7.3.1189-1 -- patchlevel 1189 - -* Tue Jun 04 2013 Karsten Hopp 7.3.1109-1 -- patchlevel 1109 - -* Wed May 22 2013 Karsten Hopp 7.3.1004-1 -- patchlevel 1004 - -* Wed May 22 2013 Karsten Hopp 7.3.1000-1 -- patchlevel 1000 ! - -* Tue May 21 2013 Karsten Hopp 7.3.987-1 -- patchlevel 987 - -* Tue May 21 2013 Karsten Hopp 7.3.944-2 -- consistent use of macros in spec file -- add some links to man pages - -* Tue May 14 2013 Karsten Hopp 7.3.944-1 -- patchlevel 944 - -* Mon May 13 2013 Karsten Hopp 7.3.943-2 -- add BR perl(ExtUtils::ParseXS) - -* Mon May 13 2013 Karsten Hopp 7.3.943-1 -- patchlevel 943 - -* Wed May 08 2013 Karsten Hopp 7.3.931-1 -- patchlevel 931 - -* Wed May 08 2013 Karsten Hopp 7.3.903-1 -- fix ruby version check - -* Fri Apr 19 2013 Karsten Hopp 7.3.903-1 -- drop crv patch -- update 7.3.838 patch, it was broken upstream - -* Mon Apr 15 2013 Karsten Hopp 7.3.903-1 -- patchlevel 903 - -* Mon Feb 18 2013 Karsten Hopp 7.3.822-1 -- patchlevel 822 - -* Fri Feb 15 2013 Toshio Kuratomi - 7.3.797-2 -- Only use --vendor for desktop-file-install on F18 or less - -* Thu Jan 31 2013 Karsten Hopp 7.3.797-1 -- patchlevel 797 - -* Mon Jan 28 2013 Karsten Hopp 7.3.785-1 -- patchlevel 785 - -* Tue Nov 20 2012 Karsten Hopp 7.3.715-1 -- patchlevel 715 - -* Mon Nov 12 2012 Karsten Hopp 7.3.712-1 -- patchlevel 712 - -* Mon Nov 12 2012 Karsten Hopp 7.3.682-2 -- fix vim.csh syntax - -* Tue Oct 23 2012 Karsten Hopp 7.3.712-1 -- patchlevel 712 - -* Mon Oct 15 2012 Karsten Hopp 7.3.691-1 -- patchlevel 691 - -* Fri Oct 05 2012 Karsten Hopp 7.3.682-1 -- patchlevel 682 -- use --enable-rubyinterp=dynamic and --enable-pythoninterp=dynamic - -* Mon Sep 03 2012 Karsten Hopp 7.3.646-1 -- patchlevel 646 - -* Tue Aug 28 2012 Karsten Hopp 7.3.638-2 -- fix some man page typos (#668894, #675480) -- own usr/share/vim/vimfiles/doc/tags (#845564) -- add path to csope database (#844843) - -* Tue Aug 28 2012 Karsten Hopp 7.3.638-1 -- patchlevel 638 +* Wed May 10 2006 Karsten Hopp 7.0.005-2 +- patchlevel 005 +- move older changelogs (<7.0) into a file, no need to keep them + in the rpm database + +* Tue May 09 2006 Karsten Hopp 7.0.000-2 +- bump epoch, the buildsystem thinks 7.0.000-2 is older than 7.0.g001-1 + although rpm is quite happy with it. + +* Mon May 08 2006 Karsten Hopp 7.0.000-1 +- vim-7.0 +- Spell checking support for about 50 languages +- Intelligent completion for C, HTML, Ruby, Python, PHP, etc. +- Tab pages, each containing multiple windows +- Undo branches: never accidentally lose text again +- Vim script supports Lists and Dictionaries (similar to Python) +- Vim script profiling +- Improved Unicode support +- Highlighting of cursor line, cursor column and matching braces +- Translated manual pages support. +- Internal grep; works on all platforms, searches compressed files +- Browsing remote directories, zip and tar archives +- Printing multi-byte text +- find details about the changes since vim-6.4 with :help version7 + +- fix SE Linux context of temporary (.swp) files (#189968) +- /bin/vi /vim-minimal is now using /etc/virc to avoid .rpmnew files + when updating + +* Tue May 02 2006 Karsten Hopp 7.0.g001-1 +- vim-7.0g BETA + +* Fri Apr 28 2006 Karsten Hopp 7.0.f001-1 +- vim-7.0f3 BETA + +* Thu Apr 20 2006 Karsten Hopp 7.0.e001-1 +- vim-7.0e BETA + +* Tue Apr 11 2006 Karsten Hopp 7.0.d001-1 +- vim-7.0d BETA + +* Fri Apr 07 2006 Karsten Hopp 7.0c.000-3 +- fix vimrc filename + +* Thu Apr 06 2006 Karsten Hopp 7.0c.000-2 +- new snapshot + +* Tue Apr 04 2006 Karsten Hopp 7.0c.000-1 +- vim-7.0c BETA + +* Wed Mar 22 2006 Karsten Hopp 7.0aa.000-3 +- Rawhide build as vim, opposed to vim7 (prerelease) +- conflict with older man-pages-{it,fr} packages +- cleanup lang stuff + +* Thu Mar 16 2006 Karsten Hopp 7.0aa.000-2 +- make it coexist with vim-6 (temporarily) +- new CVS snapshot + +* Tue Mar 14 2006 Karsten Hopp 7.0aa.000-1 +- vim7 pre Release +- older changelogs available in Changelog.rpm # vim:nrformats-=octal diff --git a/vimrc b/vimrc index 4ef9d92d..69a06225 100644 --- a/vimrc +++ b/vimrc @@ -1,75 +1,25 @@ -" When started as "evim", evim.vim will already have done these settings. -if v:progname =~? "evim" - finish +if v:lang =~ "utf8$" || v:lang =~ "UTF-8$" + set fileencodings=utf-8,latin1 endif -" Use Vim settings, rather than Vi settings (much better!). -" This must be first, because it changes other options as a side effect. -" Avoid side effects when it was already reset. -if &compatible - set nocompatible -endif - -" When the +eval feature is missing, the set command above will be skipped. -" Use a trick to reset compatible only when the +eval feature is missing. -silent! while 0 - set nocompatible -silent! endwhile - -" Allow backspacing over everything in insert mode. -set backspace=indent,eol,start - +set nocompatible " Use Vim defaults (much better!) +set bs=indent,eol,start " allow backspacing over everything in insert mode "set ai " always set autoindenting on "set backup " keep a backup file set viminfo='20,\"50 " read/write a .viminfo file, don't store more " than 50 lines of registers set history=50 " keep 50 lines of command line history set ruler " show the cursor position all the time -set showcmd " display incomplete commands -set wildmenu " display completion matches in a status line - -set ttimeout " time out for key codes -set ttimeoutlen=100 " wait up to 100ms after Esc for special key - -" Show @@@ in the last line if it is truncated. -set display=truncate - -" Show a few lines of context around the cursor. Note that this makes the -" text scroll if you mouse-click near the start or end of the window. -set scrolloff=5 - -" Do incremental searching when it's possible to timeout. -if has('reltime') - set incsearch -endif - -" Do not recognize octal numbers for Ctrl-A and Ctrl-X, most users find it -" confusing. -set nrformats-=octal " Only do this part when compiled with support for autocommands if has("autocmd") - augroup fedora - autocmd! " In text files, always limit the width of text to 78 characters - " autocmd BufRead *.txt set tw=78 + autocmd BufRead *.txt set tw=78 " When editing a file, always jump to the last cursor position - " (taken from Vim's defaults.vim) autocmd BufReadPost * - \ let line = line("'\"") - \ | if line >= 1 && line <= line("$") && &filetype !~# 'commit' - \ && index(['xxd', 'gitrebase', 'tutor'], &filetype) == -1 - \ && !&diff - \ | execute "normal! g`\"" - \ | endif - " don't write swapfile on most commonly used directories for NFS mounts or USB sticks - autocmd BufNewFile,BufReadPre /media/*,/run/media/*,/mnt/* set directory=~/tmp,/var/tmp,/tmp - " start with spec file template - " 1724126 - do not open new file with .spec suffix with spec file template - " apparently there are other file types with .spec suffix, so disable the - " template - " autocmd BufNewFile *.spec 0r /usr/share/vim/vimfiles/template.spec - augroup END + \ if line("'\"") > 0 && line ("'\"") <= line("$") | + \ exe "normal! g'\"" | + \ endif endif if has("cscope") && filereadable("/usr/bin/cscope") @@ -79,7 +29,7 @@ if has("cscope") && filereadable("/usr/bin/cscope") set nocsverb " add any database in current directory if filereadable("cscope.out") - cs add $PWD/cscope.out + cs add cscope.out " else add database pointed to by environment elseif $CSCOPE_DB != "" cs add $CSCOPE_DB @@ -90,12 +40,7 @@ endif " Switch syntax highlighting on, when the terminal has colors " Also switch on highlighting the last used search pattern. if &t_Co > 2 || has("gui_running") - " Revert with ":syntax off". syntax on - - " I like highlighting strings inside C comments. - " Revert with ":unlet c_comment_strings". - let c_comment_strings=1 set hlsearch endif @@ -107,26 +52,6 @@ if &term=="xterm" set t_Sf=[3%dm endif -" Convenient command to see the difference between the current buffer and the -" file it was loaded from, thus the changes you made. -" Only define it when not defined already. -" Revert with: ":delcommand DiffOrig". -if !exists(":DiffOrig") - command DiffOrig vert new | set bt=nofile | r ++edit # | 0d_ | diffthis - \ | wincmd p | diffthis -endif - -if has('langmap') && exists('+langremap') - " Prevent that the langmap option applies to characters that result from a - " mapping. If set (default), this may break plugins (but it's backward - " compatible). - set nolangremap -endif - " Don't wake up system with blinking cursor: +" http://www.linuxpowertop.org/known.php let &guicursor = &guicursor . ",a:blinkon0" - -" Source a global configuration file if available -if filereadable("/etc/vimrc.local") - source /etc/vimrc.local -endif diff --git a/virc b/virc deleted file mode 100644 index 6d779826..00000000 --- a/virc +++ /dev/null @@ -1,34 +0,0 @@ -if v:lang =~ "utf8$" || v:lang =~ "UTF-8$" - set fileencodings=ucs-bom,utf-8,latin1 -endif - -set nocompatible " Use Vim defaults (much better!) -set bs=indent,eol,start " allow backspacing over everything in insert mode -"set ai " always set autoindenting on -"set backup " keep a backup file -set history=50 " keep 50 lines of command line history -set ruler " show the cursor position all the time - -" Only do this part when compiled with support for autocommands -if has("autocmd") - augroup fedora - autocmd! - " In text files, always limit the width of text to 78 characters - " autocmd BufRead *.txt set tw=78 - " When editing a file, always jump to the last cursor position - autocmd BufReadPost * - \ if line("'\"") > 0 && line ("'\"") <= line("$") | - \ exe "normal! g'\"" | - \ endif - " don't write swapfile on most commonly used directories for NFS mounts or USB sticks - autocmd BufNewFile,BufReadPre /media/*,/run/media/*,/mnt/* set directory=~/tmp,/var/tmp,/tmp - " start with spec file template - autocmd BufNewFile *.spec 0r /usr/share/vim/vimfiles/template.spec - augroup END -endif - -if &term=="xterm" - set t_Co=8 - set t_Sb=[4%dm - set t_Sf=[3%dm -endif diff --git a/xxd-locale.patch b/xxd-locale.patch new file mode 100644 index 00000000..4ac5777b --- /dev/null +++ b/xxd-locale.patch @@ -0,0 +1,31 @@ +--- vim60ag/src/xxd/xxd.c.37073 Mon May 21 16:17:29 2001 ++++ vim60ag/src/xxd/xxd.c Mon May 21 16:32:12 2001 +@@ -81,6 +81,7 @@ + #if __MWERKS__ && !defined(BEBOX) + # include /* for fdopen() on MAC */ + #endif ++#include + + /* This corrects the problem of missing prototypes for certain functions + * in some GNU installations (e.g. SunOS 4.1.x). +@@ -424,6 +425,11 @@ + long length = -1, n = 0, seekoff = 0; + char l[LLEN+1]; + char *pname, *pp; ++ char *lang=getenv("LANG"); ++ if(!lang) lang=getenv("LC_ALL"); ++ if(!lang) lang=getenv("LC_CTYPE"); ++ if(lang) ++ setlocale(LC_ALL, lang); + + #ifdef AMIGA + /* This program doesn't work when started from the Workbench */ +@@ -728,7 +734,7 @@ + #else + (e > 31 && e < 127) + #endif +- ? e : '.'; ++ ? e : isalnum(e) ? e : '.'; + if (e) + nonzero++; + n++;