From b1dd63cbfb51e7f270f0f0edf6807ced290bd1c3 Mon Sep 17 00:00:00 2001 From: Karsten Hopp Date: May 14 2013 13:03:41 +0000 Subject: Merge commit '0a58aceceb59f05d8d11071bf2c436026b2a6fd1' into f18 Conflicts: README.patches vim-update.sh vim.spec --- diff --git a/7.3.336 b/7.3.336 index f1a92c6..902f578 100644 --- a/7.3.336 +++ b/7.3.336 @@ -880,7 +880,7 @@ Files: src/tag.c, src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, *** 0 **** --- 1,2 ---- + !_TAG_FILE_ENCODING cp932 // -+ ‚`‚a‚b Xtags2.txt /‚`‚a‚b ++ �`�a�b Xtags2.txt /�`�a�b *** ../vim-7.3.335/src/testdir/test83-tags3 2011-10-12 19:49:38.000000000 +0200 --- src/testdir/test83-tags3 2011-10-12 19:35:42.000000000 +0200 *************** @@ -888,106 +888,106 @@ Files: src/tag.c, src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, --- 1,102 ---- + !_TAG_FILE_SORTED 1 // + !_TAG_FILE_ENCODING cp932 // -+ abc1 Xtags3.txt /‚`‚a‚b -+ abc2 Xtags3.txt /‚`‚a‚b -+ abc3 Xtags3.txt /‚`‚a‚b -+ abc4 Xtags3.txt /‚`‚a‚b -+ abc5 Xtags3.txt /‚`‚a‚b -+ abc6 Xtags3.txt /‚`‚a‚b -+ abc7 Xtags3.txt /‚`‚a‚b -+ abc8 Xtags3.txt /‚`‚a‚b -+ abc9 Xtags3.txt /‚`‚a‚b -+ abc10 Xtags3.txt /‚`‚a‚b -+ abc11 Xtags3.txt /‚`‚a‚b -+ abc12 Xtags3.txt /‚`‚a‚b -+ abc13 Xtags3.txt /‚`‚a‚b -+ abc14 Xtags3.txt /‚`‚a‚b -+ abc15 Xtags3.txt /‚`‚a‚b -+ abc16 Xtags3.txt /‚`‚a‚b -+ abc17 Xtags3.txt /‚`‚a‚b -+ abc18 Xtags3.txt /‚`‚a‚b -+ abc19 Xtags3.txt /‚`‚a‚b -+ abc20 Xtags3.txt /‚`‚a‚b -+ abc21 Xtags3.txt /‚`‚a‚b -+ abc22 Xtags3.txt /‚`‚a‚b -+ abc23 Xtags3.txt /‚`‚a‚b -+ abc24 Xtags3.txt /‚`‚a‚b -+ abc25 Xtags3.txt /‚`‚a‚b -+ abc26 Xtags3.txt /‚`‚a‚b -+ abc27 Xtags3.txt /‚`‚a‚b -+ abc28 Xtags3.txt /‚`‚a‚b -+ abc29 Xtags3.txt /‚`‚a‚b -+ abc30 Xtags3.txt /‚`‚a‚b -+ abc31 Xtags3.txt /‚`‚a‚b -+ abc32 Xtags3.txt /‚`‚a‚b -+ abc33 Xtags3.txt /‚`‚a‚b -+ abc34 Xtags3.txt /‚`‚a‚b -+ abc35 Xtags3.txt /‚`‚a‚b -+ abc36 Xtags3.txt /‚`‚a‚b -+ abc37 Xtags3.txt /‚`‚a‚b -+ abc38 Xtags3.txt /‚`‚a‚b -+ abc39 Xtags3.txt /‚`‚a‚b -+ abc40 Xtags3.txt /‚`‚a‚b -+ abc41 Xtags3.txt /‚`‚a‚b -+ abc42 Xtags3.txt /‚`‚a‚b -+ abc43 Xtags3.txt /‚`‚a‚b -+ abc44 Xtags3.txt /‚`‚a‚b -+ abc45 Xtags3.txt /‚`‚a‚b -+ abc46 Xtags3.txt /‚`‚a‚b -+ abc47 Xtags3.txt /‚`‚a‚b -+ abc48 Xtags3.txt /‚`‚a‚b -+ abc49 Xtags3.txt /‚`‚a‚b -+ abc50 Xtags3.txt /‚`‚a‚b -+ abc51 Xtags3.txt /‚`‚a‚b -+ abc52 Xtags3.txt /‚`‚a‚b -+ abc53 Xtags3.txt /‚`‚a‚b -+ abc54 Xtags3.txt /‚`‚a‚b -+ abc55 Xtags3.txt /‚`‚a‚b -+ abc56 Xtags3.txt /‚`‚a‚b -+ abc57 Xtags3.txt /‚`‚a‚b -+ abc58 Xtags3.txt /‚`‚a‚b -+ abc59 Xtags3.txt /‚`‚a‚b -+ abc60 Xtags3.txt /‚`‚a‚b -+ abc61 Xtags3.txt /‚`‚a‚b -+ abc62 Xtags3.txt /‚`‚a‚b -+ abc63 Xtags3.txt /‚`‚a‚b -+ abc64 Xtags3.txt /‚`‚a‚b -+ abc65 Xtags3.txt /‚`‚a‚b -+ abc66 Xtags3.txt /‚`‚a‚b -+ abc67 Xtags3.txt /‚`‚a‚b -+ abc68 Xtags3.txt /‚`‚a‚b -+ abc69 Xtags3.txt /‚`‚a‚b -+ abc70 Xtags3.txt /‚`‚a‚b -+ abc71 Xtags3.txt /‚`‚a‚b -+ abc72 Xtags3.txt /‚`‚a‚b -+ abc73 Xtags3.txt /‚`‚a‚b -+ abc74 Xtags3.txt /‚`‚a‚b -+ abc75 Xtags3.txt /‚`‚a‚b -+ abc76 Xtags3.txt /‚`‚a‚b -+ abc77 Xtags3.txt /‚`‚a‚b -+ abc78 Xtags3.txt /‚`‚a‚b -+ abc79 Xtags3.txt /‚`‚a‚b -+ abc80 Xtags3.txt /‚`‚a‚b -+ abc81 Xtags3.txt /‚`‚a‚b -+ abc82 Xtags3.txt /‚`‚a‚b -+ abc83 Xtags3.txt /‚`‚a‚b -+ abc84 Xtags3.txt /‚`‚a‚b -+ abc85 Xtags3.txt /‚`‚a‚b -+ abc86 Xtags3.txt /‚`‚a‚b -+ abc87 Xtags3.txt /‚`‚a‚b -+ abc88 Xtags3.txt /‚`‚a‚b -+ abc89 Xtags3.txt /‚`‚a‚b -+ abc90 Xtags3.txt /‚`‚a‚b -+ abc91 Xtags3.txt /‚`‚a‚b -+ abc92 Xtags3.txt /‚`‚a‚b -+ abc93 Xtags3.txt /‚`‚a‚b -+ abc94 Xtags3.txt /‚`‚a‚b -+ abc95 Xtags3.txt /‚`‚a‚b -+ abc96 Xtags3.txt /‚`‚a‚b -+ abc97 Xtags3.txt /‚`‚a‚b -+ abc98 Xtags3.txt /‚`‚a‚b -+ abc99 Xtags3.txt /‚`‚a‚b -+ abc100 Xtags3.txt /‚`‚a‚b ++ abc1 Xtags3.txt /�`�a�b ++ abc2 Xtags3.txt /�`�a�b ++ abc3 Xtags3.txt /�`�a�b ++ abc4 Xtags3.txt /�`�a�b ++ abc5 Xtags3.txt /�`�a�b ++ abc6 Xtags3.txt /�`�a�b ++ abc7 Xtags3.txt /�`�a�b ++ abc8 Xtags3.txt /�`�a�b ++ abc9 Xtags3.txt /�`�a�b ++ abc10 Xtags3.txt /�`�a�b ++ abc11 Xtags3.txt /�`�a�b ++ abc12 Xtags3.txt /�`�a�b ++ abc13 Xtags3.txt /�`�a�b ++ abc14 Xtags3.txt /�`�a�b ++ abc15 Xtags3.txt /�`�a�b ++ abc16 Xtags3.txt /�`�a�b ++ abc17 Xtags3.txt /�`�a�b ++ abc18 Xtags3.txt /�`�a�b ++ abc19 Xtags3.txt /�`�a�b ++ abc20 Xtags3.txt /�`�a�b ++ abc21 Xtags3.txt /�`�a�b ++ abc22 Xtags3.txt /�`�a�b ++ abc23 Xtags3.txt /�`�a�b ++ abc24 Xtags3.txt /�`�a�b ++ abc25 Xtags3.txt /�`�a�b ++ abc26 Xtags3.txt /�`�a�b ++ abc27 Xtags3.txt /�`�a�b ++ abc28 Xtags3.txt /�`�a�b ++ abc29 Xtags3.txt /�`�a�b ++ abc30 Xtags3.txt /�`�a�b ++ abc31 Xtags3.txt /�`�a�b ++ abc32 Xtags3.txt /�`�a�b ++ abc33 Xtags3.txt /�`�a�b ++ abc34 Xtags3.txt /�`�a�b ++ abc35 Xtags3.txt /�`�a�b ++ abc36 Xtags3.txt /�`�a�b ++ abc37 Xtags3.txt /�`�a�b ++ abc38 Xtags3.txt /�`�a�b ++ abc39 Xtags3.txt /�`�a�b ++ abc40 Xtags3.txt /�`�a�b ++ abc41 Xtags3.txt /�`�a�b ++ abc42 Xtags3.txt /�`�a�b ++ abc43 Xtags3.txt /�`�a�b ++ abc44 Xtags3.txt /�`�a�b ++ abc45 Xtags3.txt /�`�a�b ++ abc46 Xtags3.txt /�`�a�b ++ abc47 Xtags3.txt /�`�a�b ++ abc48 Xtags3.txt /�`�a�b ++ abc49 Xtags3.txt /�`�a�b ++ abc50 Xtags3.txt /�`�a�b ++ abc51 Xtags3.txt /�`�a�b ++ abc52 Xtags3.txt /�`�a�b ++ abc53 Xtags3.txt /�`�a�b ++ abc54 Xtags3.txt /�`�a�b ++ abc55 Xtags3.txt /�`�a�b ++ abc56 Xtags3.txt /�`�a�b ++ abc57 Xtags3.txt /�`�a�b ++ abc58 Xtags3.txt /�`�a�b ++ abc59 Xtags3.txt /�`�a�b ++ abc60 Xtags3.txt /�`�a�b ++ abc61 Xtags3.txt /�`�a�b ++ abc62 Xtags3.txt /�`�a�b ++ abc63 Xtags3.txt /�`�a�b ++ abc64 Xtags3.txt /�`�a�b ++ abc65 Xtags3.txt /�`�a�b ++ abc66 Xtags3.txt /�`�a�b ++ abc67 Xtags3.txt /�`�a�b ++ abc68 Xtags3.txt /�`�a�b ++ abc69 Xtags3.txt /�`�a�b ++ abc70 Xtags3.txt /�`�a�b ++ abc71 Xtags3.txt /�`�a�b ++ abc72 Xtags3.txt /�`�a�b ++ abc73 Xtags3.txt /�`�a�b ++ abc74 Xtags3.txt /�`�a�b ++ abc75 Xtags3.txt /�`�a�b ++ abc76 Xtags3.txt /�`�a�b ++ abc77 Xtags3.txt /�`�a�b ++ abc78 Xtags3.txt /�`�a�b ++ abc79 Xtags3.txt /�`�a�b ++ abc80 Xtags3.txt /�`�a�b ++ abc81 Xtags3.txt /�`�a�b ++ abc82 Xtags3.txt /�`�a�b ++ abc83 Xtags3.txt /�`�a�b ++ abc84 Xtags3.txt /�`�a�b ++ abc85 Xtags3.txt /�`�a�b ++ abc86 Xtags3.txt /�`�a�b ++ abc87 Xtags3.txt /�`�a�b ++ abc88 Xtags3.txt /�`�a�b ++ abc89 Xtags3.txt /�`�a�b ++ abc90 Xtags3.txt /�`�a�b ++ abc91 Xtags3.txt /�`�a�b ++ abc92 Xtags3.txt /�`�a�b ++ abc93 Xtags3.txt /�`�a�b ++ abc94 Xtags3.txt /�`�a�b ++ abc95 Xtags3.txt /�`�a�b ++ abc96 Xtags3.txt /�`�a�b ++ abc97 Xtags3.txt /�`�a�b ++ abc98 Xtags3.txt /�`�a�b ++ abc99 Xtags3.txt /�`�a�b ++ abc100 Xtags3.txt /�`�a�b *** ../vim-7.3.335/src/testdir/test83.in 2011-10-12 19:49:38.000000000 +0200 --- src/testdir/test83.in 2011-10-12 19:40:47.000000000 +0200 *************** @@ -1030,8 +1030,8 @@ Files: src/tag.c, src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + :new + :set tags=test83-tags2 + :let v:errmsg = '' -+ :tag /.BC -+ :if v:errmsg =~ 'E426:' || getline('.') != 'ABC' ++ :tag /.BC ++ :if v:errmsg =~ 'E426:' || getline('.') != 'ABC' + : close + : put ='case2: failed' + :else @@ -1044,7 +1044,7 @@ Files: src/tag.c, src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + :set tags=test83-tags3 + :let v:errmsg = '' + :tag abc50 -+ :if v:errmsg =~ 'E426:' || getline('.') != 'ABC' ++ :if v:errmsg =~ 'E426:' || getline('.') != 'ABC' + : close + : put ='case3: failed' + :else @@ -1060,10 +1060,10 @@ Files: src/tag.c, src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + abcdefghijklmnopqrs + + text for tags2 -+ ABC ++ ABC + + text for tags3 -+ ABC ++ ABC + + tags1 + !_TAG_FILE_ENCODING utf-8 // diff --git a/7.3.713 b/7.3.713 new file mode 100644 index 0000000..e195bf7 --- /dev/null +++ b/7.3.713 @@ -0,0 +1,114 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.713 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.713 +Problem: printf() can only align to bytes, not characters. +Solution: Add the "S" item. (Christian Brabandt) +Files: runtime/doc/eval.txt, src/message.c + + +*** ../vim-7.3.712/runtime/doc/eval.txt 2012-10-21 00:44:59.000000000 +0200 +--- runtime/doc/eval.txt 2012-11-14 18:00:40.000000000 +0100 +*************** +*** 4427,4432 **** +--- 4451,4457 ---- + + Often used items are: + %s string ++ %6S string right-aligned in 6 display cells + %6s string right-aligned in 6 bytes + %.9s string truncated to 9 bytes + %c single byte +*************** +*** 4541,4546 **** +--- 4566,4575 ---- + s The text of the String argument is used. If a + precision is specified, no more bytes than the number + specified are used. ++ S The text of the String argument is used. If a ++ precision is specified, no more display cells than the ++ number specified are used. Without the |+multi_byte| ++ feature works just like 's'. + + *printf-f* *E807* + f The Float argument is converted into a string of the +*** ../vim-7.3.712/src/message.c 2012-03-28 16:49:25.000000000 +0200 +--- src/message.c 2012-11-14 17:58:25.000000000 +0100 +*************** +*** 4290,4295 **** +--- 4290,4296 ---- + case '%': + case 'c': + case 's': ++ case 'S': + length_modifier = '\0'; + str_arg_l = 1; + switch (fmt_spec) +*************** +*** 4318,4323 **** +--- 4319,4325 ---- + } + + case 's': ++ case 'S': + str_arg = + #ifndef HAVE_STDARG_H + (char *)get_a_arg(arg_idx); +*************** +*** 4354,4359 **** +--- 4356,4379 ---- + str_arg_l = (q == NULL) ? precision + : (size_t)(q - str_arg); + } ++ #ifdef FEAT_MBYTE ++ if (fmt_spec == 'S') ++ { ++ if (min_field_width != 0) ++ min_field_width += STRLEN(str_arg) ++ - mb_string2cells((char_u *)str_arg, -1); ++ if (precision) ++ { ++ char_u *p1 = (char_u *)str_arg; ++ size_t i; ++ ++ for (i = 0; i < precision && *p1; i++) ++ p1 += mb_ptr2len(p1); ++ ++ str_arg_l = precision = p1 - (char_u *)str_arg; ++ } ++ } ++ #endif + break; + + default: +*** ../vim-7.3.712/src/version.c 2012-10-23 05:35:30.000000000 +0200 +--- src/version.c 2012-11-14 17:54:12.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 713, + /**/ + +-- +In many of the more relaxed civilizations on the Outer Eastern Rim of the +Galaxy, "The Hitchhiker's Guide to the Galaxy" has already supplanted the +great "Encyclopedia Galactica" as the standard repository of all knowledge +and wisdom, for though it has many omissions and contains much that is +apocryphal, or at least wildly inaccurate, it scores over the older, more +pedestrian work in two important respects. +First, it is slightly cheaper; and second, it has the words "DON'T PANIC" +inscribed in large friendly letters on its cover. + -- 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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.714 b/7.3.714 new file mode 100644 index 0000000..97cafb0 --- /dev/null +++ b/7.3.714 @@ -0,0 +1,62 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.714 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.714 +Problem: Inconsistency: :set can be used in the sandbox, but :setlocal and + :setglobal cannot. (Michael Henry) +Solution: Fix the flags for :setlocal and :setglobal. (Christian Brabandt) +Files: src/ex_cmds.h + + +*** ../vim-7.3.713/src/ex_cmds.h 2012-08-08 17:31:36.000000000 +0200 +--- src/ex_cmds.h 2012-11-14 20:41:28.000000000 +0100 +*************** +*** 832,840 **** + EX(CMD_setfiletype, "setfiletype", ex_setfiletype, + TRLBAR|EXTRA|NEEDARG|CMDWIN), + EX(CMD_setglobal, "setglobal", ex_set, +! TRLBAR|EXTRA|CMDWIN), + EX(CMD_setlocal, "setlocal", ex_set, +! TRLBAR|EXTRA|CMDWIN), + EX(CMD_sfind, "sfind", ex_splitview, + BANG|FILE1|RANGE|NOTADR|EDITCMD|ARGOPT|TRLBAR), + EX(CMD_sfirst, "sfirst", ex_rewind, +--- 832,840 ---- + EX(CMD_setfiletype, "setfiletype", ex_setfiletype, + TRLBAR|EXTRA|NEEDARG|CMDWIN), + EX(CMD_setglobal, "setglobal", ex_set, +! TRLBAR|EXTRA|CMDWIN|SBOXOK), + EX(CMD_setlocal, "setlocal", ex_set, +! TRLBAR|EXTRA|CMDWIN|SBOXOK), + EX(CMD_sfind, "sfind", ex_splitview, + BANG|FILE1|RANGE|NOTADR|EDITCMD|ARGOPT|TRLBAR), + EX(CMD_sfirst, "sfirst", ex_rewind, +*** ../vim-7.3.713/src/version.c 2012-11-14 18:10:49.000000000 +0100 +--- src/version.c 2012-11-14 20:43:01.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 714, + /**/ + +-- +"So this is it," said Arthur, "we are going to die." +"Yes," said Ford, "except...no! Wait a minute!" He suddenly lunged across +the chamber at something behind Arthur's line of vision. "What's this +switch?" he cried. +"What? Where?" cried Arthur, twisting around. +"No, I was only fooling," said Ford, "we are going to die after all." + -- Douglas Adams, "The Hitchhiker's Guide to the Galaxy" + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.715 b/7.3.715 new file mode 100644 index 0000000..0542c43 --- /dev/null +++ b/7.3.715 @@ -0,0 +1,234 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.715 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.715 +Problem: Crash when calling setloclist() in BufUnload autocmd. (Marcin + Szamotulski) +Solution: Set w_llist to NULL when it was freed. Also add a test. + (Christian Brabandt) +Files: src/quickfix.c, src/testdir/test49.ok, src/testdir/test49.vim + + +*** ../vim-7.3.714/src/quickfix.c 2012-06-29 12:57:03.000000000 +0200 +--- src/quickfix.c 2012-11-14 22:33:20.000000000 +0100 +*************** +*** 107,113 **** + }; + + static int qf_init_ext __ARGS((qf_info_T *qi, char_u *efile, buf_T *buf, typval_T *tv, char_u *errorformat, int newlist, linenr_T lnumfirst, linenr_T lnumlast, char_u *qf_title)); +! static void qf_new_list __ARGS((qf_info_T *qi, char_u *qf_title)); + static void ll_free_all __ARGS((qf_info_T **pqi)); + static int qf_add_entry __ARGS((qf_info_T *qi, qfline_T **prevp, char_u *dir, char_u *fname, int bufnum, char_u *mesg, long lnum, int col, int vis_col, char_u *pattern, int nr, int type, int valid)); + static qf_info_T *ll_new_list __ARGS((void)); +--- 107,113 ---- + }; + + static int qf_init_ext __ARGS((qf_info_T *qi, char_u *efile, buf_T *buf, typval_T *tv, char_u *errorformat, int newlist, linenr_T lnumfirst, linenr_T lnumlast, char_u *qf_title)); +! static void qf_new_list __ARGS((qf_info_T *qi, char_u *qf_title, win_T *wp)); + static void ll_free_all __ARGS((qf_info_T **pqi)); + static int qf_add_entry __ARGS((qf_info_T *qi, qfline_T **prevp, char_u *dir, char_u *fname, int bufnum, char_u *mesg, long lnum, int col, int vis_col, char_u *pattern, int nr, int type, int valid)); + static qf_info_T *ll_new_list __ARGS((void)); +*************** +*** 266,272 **** + + if (newlist || qi->qf_curlist == qi->qf_listcount) + /* make place for a new list */ +! qf_new_list(qi, qf_title); + else if (qi->qf_lists[qi->qf_curlist].qf_count > 0) + /* Adding to existing list, find last entry. */ + for (qfprev = qi->qf_lists[qi->qf_curlist].qf_start; +--- 266,272 ---- + + if (newlist || qi->qf_curlist == qi->qf_listcount) + /* make place for a new list */ +! qf_new_list(qi, qf_title, curwin); + else if (qi->qf_lists[qi->qf_curlist].qf_count > 0) + /* Adding to existing list, find last entry. */ + for (qfprev = qi->qf_lists[qi->qf_curlist].qf_start; +*************** +*** 885,893 **** + * Prepare for adding a new quickfix list. + */ + static void +! qf_new_list(qi, qf_title) + qf_info_T *qi; + char_u *qf_title; + { + int i; + +--- 885,894 ---- + * Prepare for adding a new quickfix list. + */ + static void +! qf_new_list(qi, qf_title, wp) + qf_info_T *qi; + char_u *qf_title; ++ win_T *wp; + { + int i; + +*************** +*** 897,903 **** +--- 898,908 ---- + * way with ":grep'. + */ + while (qi->qf_listcount > qi->qf_curlist + 1) ++ { ++ if (wp != NULL && wp->w_llist == qi) ++ wp->w_llist = NULL; + qf_free(qi, --qi->qf_listcount); ++ } + + /* + * When the stack is full, remove to oldest entry +*************** +*** 905,910 **** +--- 910,917 ---- + */ + if (qi->qf_listcount == LISTCOUNT) + { ++ if (wp != NULL && wp->w_llist == qi) ++ wp->w_llist = NULL; + qf_free(qi, 0); + for (i = 1; i < LISTCOUNT; ++i) + qi->qf_lists[i - 1] = qi->qf_lists[i]; +*************** +*** 3181,3187 **** + eap->cmdidx != CMD_vimgrepadd && eap->cmdidx != CMD_lvimgrepadd) + || qi->qf_curlist == qi->qf_listcount) + /* make place for a new list */ +! qf_new_list(qi, *eap->cmdlinep); + else if (qi->qf_lists[qi->qf_curlist].qf_count > 0) + /* Adding to existing list, find last entry. */ + for (prevp = qi->qf_lists[qi->qf_curlist].qf_start; +--- 3188,3194 ---- + eap->cmdidx != CMD_vimgrepadd && eap->cmdidx != CMD_lvimgrepadd) + || qi->qf_curlist == qi->qf_listcount) + /* make place for a new list */ +! qf_new_list(qi, *eap->cmdlinep, curwin); + else if (qi->qf_lists[qi->qf_curlist].qf_count > 0) + /* Adding to existing list, find last entry. */ + for (prevp = qi->qf_lists[qi->qf_curlist].qf_start; +*************** +*** 3747,3753 **** + + if (action == ' ' || qi->qf_curlist == qi->qf_listcount) + /* make place for a new list */ +! qf_new_list(qi, title); + else if (action == 'a' && qi->qf_lists[qi->qf_curlist].qf_count > 0) + /* Adding to existing list, find last entry. */ + for (prevp = qi->qf_lists[qi->qf_curlist].qf_start; +--- 3754,3760 ---- + + if (action == ' ' || qi->qf_curlist == qi->qf_listcount) + /* make place for a new list */ +! qf_new_list(qi, title, wp); + else if (action == 'a' && qi->qf_lists[qi->qf_curlist].qf_count > 0) + /* Adding to existing list, find last entry. */ + for (prevp = qi->qf_lists[qi->qf_curlist].qf_start; +*************** +*** 4029,4035 **** + #endif + + /* create a new quickfix list */ +! qf_new_list(qi, *eap->cmdlinep); + + /* Go through all directories in 'runtimepath' */ + p = p_rtp; +--- 4036,4042 ---- + #endif + + /* create a new quickfix list */ +! qf_new_list(qi, *eap->cmdlinep, wp); + + /* Go through all directories in 'runtimepath' */ + p = p_rtp; +*** ../vim-7.3.714/src/testdir/test49.ok 2010-08-15 21:57:29.000000000 +0200 +--- src/testdir/test49.ok 2012-11-14 22:26:13.000000000 +0100 +*************** +*** 85,92 **** + *** Test 83: OK (2835) + *** Test 84: OK (934782101) + *** Test 85: OK (198689) +! --- Test 86: All tests were run with throwing exceptions on error. + The $VIMNOERRTHROW control is not configured. +! --- Test 86: All tests were run with throwing exceptions on interrupt. + The $VIMNOINTTHROW control is not configured. +! *** Test 86: OK (50443995) +--- 85,94 ---- + *** Test 83: OK (2835) + *** Test 84: OK (934782101) + *** Test 85: OK (198689) +! --- Test 86: No Crash for vimgrep on BufUnload +! *** Test 86: OK (0) +! --- Test 87: All tests were run with throwing exceptions on error. + The $VIMNOERRTHROW control is not configured. +! --- Test 87: All tests were run with throwing exceptions on interrupt. + The $VIMNOINTTHROW control is not configured. +! *** Test 87: OK (50443995) +*** ../vim-7.3.714/src/testdir/test49.vim 2010-09-29 16:55:45.000000000 +0200 +--- src/testdir/test49.vim 2012-11-14 22:26:13.000000000 +0100 +*************** +*** 9603,9611 **** + + Xcheck 198689 + + + "------------------------------------------------------------------------------- +! " Test 86: $VIMNOERRTHROW and $VIMNOINTTHROW support {{{1 + " + " It is possible to configure Vim for throwing exceptions on error + " or interrupt, controlled by variables $VIMNOERRTHROW and +--- 9603,9630 ---- + + Xcheck 198689 + ++ "------------------------------------------------------------------------------- ++ " Test 86 setloclist crash {{{1 ++ " ++ " Executing a setloclist() on BufUnload shouldn't crash Vim ++ "------------------------------------------------------------------------------- ++ ++ func F ++ au BufUnload * :call setloclist(0, [{'bufnr':1, 'lnum':1, 'col':1, 'text': 'tango down'}]) ++ ++ :lvimgrep /.*/ * ++ endfunc ++ ++ XpathINIT ++ ++ ExecAsScript F ++ ++ delfunction F ++ Xout "No Crash for vimgrep on BufUnload" ++ Xcheck 0 + + "------------------------------------------------------------------------------- +! " Test 87: $VIMNOERRTHROW and $VIMNOINTTHROW support {{{1 + " + " It is possible to configure Vim for throwing exceptions on error + " or interrupt, controlled by variables $VIMNOERRTHROW and +*** ../vim-7.3.714/src/version.c 2012-11-14 20:52:22.000000000 +0100 +--- src/version.c 2012-11-14 22:36:45.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 715, + /**/ + +-- +One difference between a man and a machine is that a machine is quiet +when well oiled. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.716 b/7.3.716 new file mode 100644 index 0000000..90f90d5 --- /dev/null +++ b/7.3.716 @@ -0,0 +1,70 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.716 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.716 +Problem: Error on exit when using Python 3. +Solution: Remove PythonIO_Fini(). (Roland Puntaier) +Files: src/if_python3.c + + +*** ../vim-7.3.715/src/if_python3.c 2012-10-23 05:17:33.000000000 +0200 +--- src/if_python3.c 2012-11-20 10:59:54.000000000 +0100 +*************** +*** 657,663 **** + static PyObject *globals; + + static int PythonIO_Init(void); +- static void PythonIO_Fini(void); + PyMODINIT_FUNC Py3Init_vim(void); + + /****************************************************** +--- 657,662 ---- +*************** +*** 685,691 **** + // acquire lock before finalizing + pygilstate = PyGILState_Ensure(); + +- PythonIO_Fini(); + Py_Finalize(); + } + +--- 684,689 ---- +*************** +*** 989,1001 **** + return PythonIO_Init_io(); + } + +- static void +- PythonIO_Fini(void) +- { +- PySys_SetObject("stdout", NULL); +- PySys_SetObject("stderr", NULL); +- } +- + /****************************************************** + * 3. Implementation of the Vim module for Python + */ +--- 987,992 ---- +*** ../vim-7.3.715/src/version.c 2012-11-14 22:38:04.000000000 +0100 +--- src/version.c 2012-11-15 21:40:47.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 716, + /**/ + +-- +Nothing is fool-proof to a sufficiently talented fool. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.717 b/7.3.717 new file mode 100644 index 0000000..02751c6 --- /dev/null +++ b/7.3.717 @@ -0,0 +1,59 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.717 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.717 +Problem: When changing the font size, only MS-Windows limits the window + size. +Solution: Also limit the window size on other systems. (Roland Puntaier) +Files: src/gui.c + + +*** ../vim-7.3.716/src/gui.c 2012-08-29 16:34:23.000000000 +0200 +--- src/gui.c 2012-11-20 12:01:08.000000000 +0100 +*************** +*** 905,917 **** + # endif + gui_mch_set_font(gui.norm_font); + #endif +! gui_set_shellsize(FALSE, +! #ifdef MSWIN +! TRUE +! #else +! FALSE +! #endif +! , RESIZE_BOTH); + } + + return ret; +--- 905,911 ---- + # endif + gui_mch_set_font(gui.norm_font); + #endif +! gui_set_shellsize(FALSE, TRUE, RESIZE_BOTH); + } + + return ret; +*** ../vim-7.3.716/src/version.c 2012-11-20 11:02:49.000000000 +0100 +--- src/version.c 2012-11-20 12:02:04.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 717, + /**/ + +-- +The 50-50-90 rule: Anytime you have a 50-50 chance of getting +something right, there's a 90% probability you'll get it wrong. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.718 b/7.3.718 new file mode 100644 index 0000000..f8f82f4 --- /dev/null +++ b/7.3.718 @@ -0,0 +1,49 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.718 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.718 +Problem: When re-using the current buffer the buffer-local options stay. +Solution: Re-initialize the buffer-local options. (Christian Brabandt) +Files: src/buffer.c + + +*** ../vim-7.3.717/src/buffer.c 2012-10-03 18:24:55.000000000 +0200 +--- src/buffer.c 2012-11-17 14:11:35.000000000 +0100 +*************** +*** 1702,1707 **** +--- 1702,1712 ---- + #endif + /* buf->b_nwindows = 0; why was this here? */ + free_buffer_stuff(buf, FALSE); /* delete local variables et al. */ ++ ++ /* Init the options. */ ++ buf->b_p_initialized = FALSE; ++ buf_copy_options(buf, BCO_ENTER); ++ + #ifdef FEAT_KEYMAP + /* need to reload lmaps and set b:keymap_name */ + curbuf->b_kmap_state |= KEYMAP_INIT; +*** ../vim-7.3.717/src/version.c 2012-11-20 12:03:02.000000000 +0100 +--- src/version.c 2012-11-20 12:16:35.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 718, + /**/ + +-- +Latest survey shows that 3 out of 4 people make up 75% of the +world's population. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.719 b/7.3.719 new file mode 100644 index 0000000..05295f9 --- /dev/null +++ b/7.3.719 @@ -0,0 +1,849 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.719 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.719 +Problem: Cannot run new version of cproto, it fails on missing include + files. +Solution: Add lots of #ifndef PROTO +Files: src/os_amiga.c, src/os_amiga.h, src/gui_w16.c, src/gui_w48.c, + src/gui_w32.c, src/vimio.h, src/os_msdos.c, src/os_msdos.h, + src/os_win16.h, src/os_win16.c, src/os_win32.h, src/os_win32.c, + src/os_mswin.c, src/gui_photon.c, src/os_unix.h, src/os_beos.c, + src/os_beos.h + + +*** ../vim-7.3.718/src/os_amiga.c 2012-06-29 15:51:26.000000000 +0200 +--- src/os_amiga.c 2012-11-20 15:47:31.000000000 +0100 +*************** +*** 22,27 **** +--- 22,30 ---- + #undef TRUE /* will be redefined by exec/types.h */ + #undef FALSE + ++ /* cproto fails on missing include files, skip them */ ++ #ifndef PROTO ++ + #ifndef LATTICE + # include + # include +*************** +*** 55,60 **** +--- 58,65 ---- + # include + #endif + ++ #endif /* PROTO */ ++ + /* + * At this point TRUE and FALSE are defined as 1L and 0L, but we want 1 and 0. + */ +*************** +*** 283,289 **** + #endif + } + +! #include + + /* + * Check_win checks whether we have an interactive window. +--- 288,296 ---- + #endif + } + +! #ifndef PROTO +! # include +! #endif + + /* + * Check_win checks whether we have an interactive window. +*************** +*** 1002,1008 **** + * Heavely modified by mool. + */ + +! #include + + /* + * try to get the real window size +--- 1009,1017 ---- + * Heavely modified by mool. + */ + +! #ifndef PROTO +! # include +! #endif + + /* + * try to get the real window size +*************** +*** 1129,1137 **** + * say 'oml lib:amiga.lib -r sendpacket.o' + */ + + /* #include */ + /* #include */ +! #include + + /* + * Function - dos_packet written by Phil Lindsay, Carolyn Scheppner, and Andy +--- 1138,1148 ---- + * say 'oml lib:amiga.lib -r sendpacket.o' + */ + ++ #ifndef PROTO + /* #include */ + /* #include */ +! # include +! #endif + + /* + * Function - dos_packet written by Phil Lindsay, Carolyn Scheppner, and Andy +*** ../vim-7.3.718/src/os_amiga.h 2010-08-15 21:57:25.000000000 +0200 +--- src/os_amiga.h 2012-11-20 15:46:37.000000000 +0100 +*************** +*** 56,61 **** +--- 56,64 ---- + # define TEMPNAMELEN 12 + #endif + ++ /* cproto fails on missing include files */ ++ #ifndef PROTO ++ + #include + #include + #include +*************** +*** 67,72 **** +--- 70,77 ---- + # include + #endif + ++ #endif /* PROTO */ ++ + #define FNAME_ILLEGAL ";*?`#%" /* illegal characters in a file name */ + + /* +*************** +*** 85,90 **** +--- 90,96 ---- + # include + #endif + ++ #ifndef PROTO + /* + * arpbase.h must be included before functions.h + */ +*************** +*** 92,97 **** +--- 98,105 ---- + # include + #endif + ++ #endif /* PROTO */ ++ + /* + * This won't be needed if you have a version of Lattice 4.01 without broken + * break signal handling. +*** ../vim-7.3.718/src/gui_w16.c 2012-02-04 22:01:44.000000000 +0100 +--- src/gui_w16.c 2012-11-20 15:55:04.000000000 +0100 +*************** +*** 1521,1527 **** + + + #if defined(FEAT_TOOLBAR) || defined(PROTO) +! #include "gui_w3~1.h" + /* + * Create the toolbar, initially unpopulated. + * (just like the menu, there are no defaults, it's all +--- 1521,1532 ---- + + + #if defined(FEAT_TOOLBAR) || defined(PROTO) +! +! /* cproto fails on missing include files */ +! #ifndef PROTO +! # include "gui_w3~1.h" +! #endif +! + /* + * Create the toolbar, initially unpopulated. + * (just like the menu, there are no defaults, it's all +*** ../vim-7.3.718/src/gui_w48.c 2012-01-20 20:54:15.000000000 +0100 +--- src/gui_w48.c 2012-11-20 15:53:49.000000000 +0100 +*************** +*** 25,30 **** +--- 25,34 ---- + #ifdef DEBUG + # include + #endif ++ ++ /* cproto fails on missing include files */ ++ #ifndef PROTO ++ + #ifndef __MINGW32__ + # include + #endif +*************** +*** 44,49 **** +--- 48,55 ---- + # include "glbl_ime.h" + #endif + ++ #endif /* PROTO */ ++ + #ifdef FEAT_MENU + # define MENUHINTS /* show menu hints in command line */ + #endif +*** ../vim-7.3.718/src/gui_w32.c 2012-01-04 20:29:18.000000000 +0100 +--- src/gui_w32.c 2012-11-20 15:56:31.000000000 +0100 +*************** +*** 198,208 **** + static UINT_PTR BevalTimerId = 0; + static DWORD LastActivity = 0; + + /* + * excerpts from headers since this may not be presented + * in the extremely old compilers + */ +! #include + + typedef struct _DllVersionInfo + { +--- 198,214 ---- + static UINT_PTR BevalTimerId = 0; + static DWORD LastActivity = 0; + ++ ++ /* cproto fails on missing include files */ ++ #ifndef PROTO ++ + /* + * excerpts from headers since this may not be presented + * in the extremely old compilers + */ +! # include +! +! #endif + + typedef struct _DllVersionInfo + { +*************** +*** 213,219 **** + DWORD dwPlatformID; + } DLLVERSIONINFO; + +! #include + + typedef struct tagTOOLINFOA_NEW + { +--- 219,227 ---- + DWORD dwPlatformID; + } DLLVERSIONINFO; + +! #ifndef PROTO +! # include +! #endif + + typedef struct tagTOOLINFOA_NEW + { +*** ../vim-7.3.718/src/vimio.h 2010-08-15 21:57:28.000000000 +0200 +--- src/vimio.h 2012-11-20 15:57:19.000000000 +0100 +*************** +*** 13,16 **** + # define _CRT_NONSTDC_NO_DEPRECATE + #endif + +! #include +--- 13,19 ---- + # define _CRT_NONSTDC_NO_DEPRECATE + #endif + +! /* cproto fails on missing include files */ +! #ifndef PROTO +! # include +! #endif +*** ../vim-7.3.718/src/os_msdos.c 2012-06-29 15:51:26.000000000 +0200 +--- src/os_msdos.c 2012-11-20 15:59:18.000000000 +0100 +*************** +*** 23,29 **** + + #include "vim.h" + +! #include + + /* + * MS-DOS only code, not used for Win16. +--- 23,32 ---- + + #include "vim.h" + +! /* cproto fails on missing include files */ +! #ifndef PROTO +! # include +! #endif + + /* + * MS-DOS only code, not used for Win16. +*************** +*** 31,47 **** + #ifndef WIN16 + + +! #include +! #ifdef DJGPP +! # include +! # include +! # include +! # include +! # ifdef FEAT_CLIPBOARD +! # include + # endif +- #else +- # include + #endif + + #if defined(DJGPP) || defined(PROTO) +--- 34,52 ---- + #ifndef WIN16 + + +! #ifndef PROTO +! # include +! # ifdef DJGPP +! # include +! # include +! # include +! # include +! # ifdef FEAT_CLIPBOARD +! # include +! # endif +! # else +! # include + # endif + #endif + + #if defined(DJGPP) || defined(PROTO) +*************** +*** 2130,2137 **** + + #undef setlocale + +! #include +! #include + #include + + #define UPCASE (__dj_ISALNUM | __dj_ISALPHA | __dj_ISGRAPH | __dj_ISPRINT | __dj_ISUPPER) +--- 2135,2144 ---- + + #undef setlocale + +! #ifndef PROTO +! # include +! # include +! #endif + #include + + #define UPCASE (__dj_ISALNUM | __dj_ISALPHA | __dj_ISGRAPH | __dj_ISPRINT | __dj_ISUPPER) +*** ../vim-7.3.718/src/os_msdos.h 2010-08-15 21:57:25.000000000 +0200 +--- src/os_msdos.h 2012-11-20 15:57:48.000000000 +0100 +*************** +*** 53,61 **** + + #define FNAME_ILLEGAL "\"*?><|" /* illegal characters in a file name */ + +! #include +! #include +! #include + + #ifdef DJGPP + # include +--- 53,64 ---- + + #define FNAME_ILLEGAL "\"*?><|" /* illegal characters in a file name */ + +! /* cproto fails on missing include files */ +! #ifndef PROTO +! # include +! # include +! # include +! #endif + + #ifdef DJGPP + # include +*** ../vim-7.3.718/src/os_win16.h 2010-08-15 21:57:25.000000000 +0200 +--- src/os_win16.h 2012-11-20 16:00:33.000000000 +0100 +*************** +*** 63,78 **** + + #include + #include +- #include +- #include + +! #ifndef STRICT +! # define STRICT +! #endif +! #ifndef COBJMACROS +! # define COBJMACROS /* For OLE: Enable "friendlier" access to objects */ +! #endif +! #include + + /* + * plenty of memory, use large buffers +--- 63,83 ---- + + #include + #include + +! /* cproto fails on missing include files */ +! #ifndef PROTO +! # include +! # include +! +! # ifndef STRICT +! # define STRICT +! # endif +! # ifndef COBJMACROS +! # define COBJMACROS /* For OLE: Enable "friendlier" access to objects */ +! # endif +! # include +! +! #endif /* PROTO */ + + /* + * plenty of memory, use large buffers +*** ../vim-7.3.718/src/os_win16.c 2012-06-29 15:51:26.000000000 +0200 +--- src/os_win16.c 2012-11-20 16:01:50.000000000 +0100 +*************** +*** 22,37 **** + + #include "vim.h" + +! #include + #include + #include + #include + #include +- #include + +! #undef chdir +! #include +! #include /* required for FindExecutable() */ + + + /* Record all output and all keyboard & mouse input */ +--- 22,44 ---- + + #include "vim.h" + +! /* cproto fails on missing include files */ +! #ifndef PROTO +! # include +! #endif +! + #include + #include + #include + #include + +! #ifndef PROTO +! # include +! +! # undef chdir +! # include +! # include /* required for FindExecutable() */ +! #endif + + + /* Record all output and all keyboard & mouse input */ +*** ../vim-7.3.718/src/os_win32.h 2012-10-21 21:38:42.000000000 +0200 +--- src/os_win32.h 2012-11-20 16:09:59.000000000 +0100 +*************** +*** 12,18 **** + + #include "os_dos.h" /* common MS-DOS and Win32 stuff */ + #ifndef __CYGWIN__ +! #include /* for _mkdir() */ + #endif + + /* Stop the VC2005 compiler from nagging. */ +--- 12,21 ---- + + #include "os_dos.h" /* common MS-DOS and Win32 stuff */ + #ifndef __CYGWIN__ +! /* cproto fails on missing include files */ +! # ifndef PROTO +! # include /* for _mkdir() */ +! # endif + #endif + + /* Stop the VC2005 compiler from nagging. */ +*************** +*** 101,107 **** + #ifndef COBJMACROS + # define COBJMACROS /* For OLE: Enable "friendlier" access to objects */ + #endif +! #include + + /* + * Win32 has plenty of memory, use large buffers +--- 104,112 ---- + #ifndef COBJMACROS + # define COBJMACROS /* For OLE: Enable "friendlier" access to objects */ + #endif +! #ifndef PROTO +! # include +! #endif + + /* + * Win32 has plenty of memory, use large buffers +*************** +*** 194,199 **** +--- 199,206 ---- + # define vim_mkdir(x, y) mch_mkdir(x) + #endif + ++ #ifndef PROTO ++ + /* Enable common dialogs input unicode from IME if posible. */ + #ifdef FEAT_MBYTE + /* The variables are defined in os_win32.c. */ +*************** +*** 207,209 **** +--- 214,218 ---- + # define pIsDialogMessage IsDialogMessage + # define pPeekMessage PeekMessage + #endif ++ ++ #endif /* PROTO */ +*** ../vim-7.3.718/src/os_win32.c 2012-10-21 21:38:42.000000000 +0200 +--- src/os_win32.c 2012-11-20 16:12:09.000000000 +0100 +*************** +*** 29,35 **** + #include + #include + #include +! #include + + #undef chdir + #ifdef __GNUC__ +--- 29,39 ---- + #include + #include + #include +! +! /* cproto fails on missing include files */ +! #ifndef PROTO +! # include +! #endif + + #undef chdir + #ifdef __GNUC__ +*************** +*** 40,47 **** + # include + #endif + +! #if defined(FEAT_TITLE) && !defined(FEAT_GUI_W32) +! # include + #endif + + #ifdef __MINGW32__ +--- 44,53 ---- + # include + #endif + +! #ifndef PROTO +! # if defined(FEAT_TITLE) && !defined(FEAT_GUI_W32) +! # include +! # endif + #endif + + #ifdef __MINGW32__ +*************** +*** 125,130 **** +--- 131,137 ---- + typedef int WORD; + typedef int WCHAR; + typedef void VOID; ++ typedef int BY_HANDLE_FILE_INFORMATION; + #endif + + #ifndef FEAT_GUI_W32 +*************** +*** 152,157 **** +--- 159,166 ---- + # define wcsicmp(a, b) wcscmpi((a), (b)) + #endif + ++ #ifndef PROTO ++ + /* Enable common dialogs input unicode from IME if posible. */ + #ifdef FEAT_MBYTE + LRESULT (WINAPI *pDispatchMessage)(LPMSG) = DispatchMessage; +*************** +*** 160,165 **** +--- 169,176 ---- + BOOL (WINAPI *pPeekMessage)(LPMSG, HWND, UINT, UINT, UINT) = PeekMessage; + #endif + ++ #endif /* PROTO */ ++ + #ifndef FEAT_GUI_W32 + /* Win32 Console handles for input and output */ + static HANDLE g_hConIn = INVALID_HANDLE_VALUE; +*************** +*** 453,459 **** + DWORD g_PlatformId; + + #ifdef HAVE_ACL +! # include + /* + * These are needed to dynamically load the ADVAPI DLL, which is not + * implemented under Windows 95 (and causes VIM to crash) +--- 464,473 ---- + DWORD g_PlatformId; + + #ifdef HAVE_ACL +! # ifndef PROTO +! # include +! # endif +! + /* + * These are needed to dynamically load the ADVAPI DLL, which is not + * implemented under Windows 95 (and causes VIM to crash) +*************** +*** 1658,1665 **** + #endif /* FEAT_GUI_W32 */ + } + +! #ifndef __MINGW32__ +! # include /* required for FindExecutable() */ + #endif + + /* +--- 1672,1681 ---- + #endif /* FEAT_GUI_W32 */ + } + +! #ifndef PROTO +! # ifndef __MINGW32__ +! # include /* required for FindExecutable() */ +! # endif + #endif + + /* +*** ../vim-7.3.718/src/os_mswin.c 2011-11-30 13:42:40.000000000 +0100 +--- src/os_mswin.c 2012-11-20 16:15:05.000000000 +0100 +*************** +*** 26,38 **** + + #ifdef WIN16 + # define SHORT_FNAME /* always 8.3 file name */ +! # include + # include + #endif + #include + #include + #include +! #include + + #undef chdir + #ifdef __GNUC__ +--- 26,43 ---- + + #ifdef WIN16 + # define SHORT_FNAME /* always 8.3 file name */ +! /* cproto fails on missing include files */ +! # ifndef PROTO +! # include +! # endif + # include + #endif + #include + #include + #include +! #ifndef PROTO +! # include +! #endif + + #undef chdir + #ifdef __GNUC__ +*************** +*** 43,62 **** + # include + #endif + +! #if defined(FEAT_TITLE) && !defined(FEAT_GUI_W32) +! # include +! #endif +! +! #if defined(FEAT_PRINTER) && !defined(FEAT_POSTSCRIPT) +! # include +! # ifdef WIN3264 +! # include +! # else +! # include + # endif +! # include + #endif + + #ifdef __MINGW32__ + # ifndef FROM_LEFT_1ST_BUTTON_PRESSED + # define FROM_LEFT_1ST_BUTTON_PRESSED 0x0001 +--- 48,70 ---- + # include + #endif + +! #ifndef PROTO +! # if defined(FEAT_TITLE) && !defined(FEAT_GUI_W32) +! # include + # endif +! +! # if defined(FEAT_PRINTER) && !defined(FEAT_POSTSCRIPT) +! # include +! # ifdef WIN3264 +! # include +! # else +! # include +! # endif +! # include + #endif + ++ #endif /* PROTO */ ++ + #ifdef __MINGW32__ + # ifndef FROM_LEFT_1ST_BUTTON_PRESSED + # define FROM_LEFT_1ST_BUTTON_PRESSED 0x0001 +*************** +*** 2410,2416 **** + + + #if defined(FEAT_SHORTCUT) || defined(PROTO) +! # include + + /* + * When "fname" is the name of a shortcut (*.lnk) resolve the file it points +--- 2418,2426 ---- + + + #if defined(FEAT_SHORTCUT) || defined(PROTO) +! # ifndef PROTO +! # include +! # endif + + /* + * When "fname" is the name of a shortcut (*.lnk) resolve the file it points +*** ../vim-7.3.718/src/gui_photon.c 2011-09-14 16:04:52.000000000 +0200 +--- src/gui_photon.c 2012-11-20 16:16:11.000000000 +0100 +*************** +*** 13,20 **** + + #include "vim.h" + +! #ifdef FEAT_TOOLBAR +! # include + #endif + + #if !defined(__QNX__) +--- 13,23 ---- + + #include "vim.h" + +! /* cproto fails on missing include files */ +! #ifndef PROTO +! # ifdef FEAT_TOOLBAR +! # include +! # endif + #endif + + #if !defined(__QNX__) +*** ../vim-7.3.718/src/os_unix.h 2011-02-25 15:17:14.000000000 +0100 +--- src/os_unix.h 2012-11-20 16:51:06.000000000 +0100 +*************** +*** 198,203 **** +--- 198,206 ---- + # define HAVE_TOTAL_MEM + #endif + ++ ++ #ifndef PROTO ++ + #ifdef VMS + # include + # include +*************** +*** 226,232 **** +--- 229,239 ---- + # ifdef FEAT_GUI_GTK + # include "gui_gtk_vms.h" + # endif ++ #endif + ++ #endif /* PROTO */ ++ ++ #ifdef VMS + typedef struct dsc$descriptor DESC; + #endif + +*** ../vim-7.3.718/src/os_beos.c 2010-08-15 21:57:28.000000000 +0200 +--- src/os_beos.c 2012-11-20 16:22:17.000000000 +0100 +*************** +*** 13,19 **** + + #include + #include +! #include + #include "vim.h" + + #if USE_THREAD_FOR_INPUT_WITH_TIMEOUT +--- 13,22 ---- + + #include + #include +! #ifndef PROTO +! # include +! #endif +! + #include "vim.h" + + #if USE_THREAD_FOR_INPUT_WITH_TIMEOUT +*** ../vim-7.3.718/src/os_beos.h 2010-08-15 21:57:32.000000000 +0200 +--- src/os_beos.h 2012-11-20 16:22:48.000000000 +0100 +*************** +*** 22,25 **** + + /* select emulation */ + +! #include /* for typedefs and #defines only */ +--- 22,27 ---- + + /* select emulation */ + +! #ifndef PROTO +! # include /* for typedefs and #defines only */ +! #endif +*** ../vim-7.3.718/src/version.c 2012-11-20 12:16:54.000000000 +0100 +--- src/version.c 2012-11-20 16:32:18.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 719, + /**/ + +-- +George: "I just got a new set of golf clubs for my wife!" + John: "Great trade!" + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.720 b/7.3.720 new file mode 100644 index 0000000..90bb099 --- /dev/null +++ b/7.3.720 @@ -0,0 +1,226 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.720 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.720 +Problem: Proto files are outdated. +Solution: Update the newly generated proto files. +Files: src/proto/digraph.pro, src/proto/fold.pro, src/proto/misc1.pro, + src/proto/move.pro, src/proto/screen.pro, src/proto/search.pro, + src/proto/os_win32.pro, src/proto/os_mswin.pro, + src/proto/os_beos.pro + +*** ../vim-7.3.719/src/proto/digraph.pro 2010-08-15 21:57:28.000000000 +0200 +--- src/proto/digraph.pro 2012-11-20 16:51:45.000000000 +0100 +*************** +*** 1,7 **** + /* digraph.c */ + int do_digraph __ARGS((int c)); + int get_digraph __ARGS((int cmdline)); +! int getdigraph __ARGS((int char1, int char2, int meta)); + void putdigraph __ARGS((char_u *str)); + void listdigraphs __ARGS((void)); + char_u *keymap_init __ARGS((void)); +--- 1,7 ---- + /* digraph.c */ + int do_digraph __ARGS((int c)); + int get_digraph __ARGS((int cmdline)); +! int getdigraph __ARGS((int char1, int char2, int meta_char)); + void putdigraph __ARGS((char_u *str)); + void listdigraphs __ARGS((void)); + char_u *keymap_init __ARGS((void)); +*** ../vim-7.3.719/src/proto/fold.pro 2010-08-15 21:57:28.000000000 +0200 +--- src/proto/fold.pro 2012-11-20 16:51:49.000000000 +0100 +*************** +*** 27,33 **** + void foldUpdate __ARGS((win_T *wp, linenr_T top, linenr_T bot)); + void foldUpdateAll __ARGS((win_T *win)); + int foldMoveTo __ARGS((int updown, int dir, long count)); +! void foldInitWin __ARGS((win_T *newwin)); + int find_wl_entry __ARGS((win_T *win, linenr_T lnum)); + void foldAdjustVisual __ARGS((void)); + void foldAdjustCursor __ARGS((void)); +--- 27,33 ---- + void foldUpdate __ARGS((win_T *wp, linenr_T top, linenr_T bot)); + void foldUpdateAll __ARGS((win_T *win)); + int foldMoveTo __ARGS((int updown, int dir, long count)); +! void foldInitWin __ARGS((win_T *new_win)); + int find_wl_entry __ARGS((win_T *win, linenr_T lnum)); + void foldAdjustVisual __ARGS((void)); + void foldAdjustCursor __ARGS((void)); +*** ../vim-7.3.719/src/proto/misc1.pro 2012-08-15 14:04:50.000000000 +0200 +--- src/proto/misc1.pro 2012-11-20 16:51:56.000000000 +0100 +*************** +*** 5,12 **** + int get_indent_str __ARGS((char_u *ptr, int ts)); + int set_indent __ARGS((int size, int flags)); + int get_number_indent __ARGS((linenr_T lnum)); +! int open_line __ARGS((int dir, int flags, int old_indent)); +! int get_leader_len __ARGS((char_u *line, char_u **flags, int backward, int do_skip_space)); + int get_last_leader_offset __ARGS((char_u *line, char_u **flags)); + int plines __ARGS((linenr_T lnum)); + int plines_win __ARGS((win_T *wp, linenr_T lnum, int winheight)); +--- 5,12 ---- + int get_indent_str __ARGS((char_u *ptr, int ts)); + int set_indent __ARGS((int size, int flags)); + int get_number_indent __ARGS((linenr_T lnum)); +! int open_line __ARGS((int dir, int flags, int second_line_indent)); +! int get_leader_len __ARGS((char_u *line, char_u **flags, int backward, int include_space)); + int get_last_leader_offset __ARGS((char_u *line, char_u **flags)); + int plines __ARGS((linenr_T lnum)); + int plines_win __ARGS((win_T *wp, linenr_T lnum, int winheight)); +*************** +*** 59,65 **** + void vim_setenv __ARGS((char_u *name, char_u *val)); + char_u *get_env_name __ARGS((expand_T *xp, int idx)); + char_u *get_users __ARGS((expand_T *xp, int idx)); +! int match_user __ARGS((char_u* name)); + void home_replace __ARGS((buf_T *buf, char_u *src, char_u *dst, int dstlen, int one)); + char_u *home_replace_save __ARGS((buf_T *buf, char_u *src)); + int fullpathcmp __ARGS((char_u *s1, char_u *s2, int checkname)); +--- 59,65 ---- + void vim_setenv __ARGS((char_u *name, char_u *val)); + char_u *get_env_name __ARGS((expand_T *xp, int idx)); + char_u *get_users __ARGS((expand_T *xp, int idx)); +! int match_user __ARGS((char_u *name)); + void home_replace __ARGS((buf_T *buf, char_u *src, char_u *dst, int dstlen, int one)); + char_u *home_replace_save __ARGS((buf_T *buf, char_u *src)); + int fullpathcmp __ARGS((char_u *s1, char_u *s2, int checkname)); +*** ../vim-7.3.719/src/proto/move.pro 2010-08-15 21:57:28.000000000 +0200 +--- src/proto/move.pro 2012-11-20 16:51:57.000000000 +0100 +*************** +*** 24,30 **** + int curwin_col_off __ARGS((void)); + int win_col_off2 __ARGS((win_T *wp)); + int curwin_col_off2 __ARGS((void)); +! void curs_columns __ARGS((int scroll)); + void scrolldown __ARGS((long line_count, int byfold)); + void scrollup __ARGS((long line_count, int byfold)); + void check_topfill __ARGS((win_T *wp, int down)); +--- 24,30 ---- + int curwin_col_off __ARGS((void)); + int win_col_off2 __ARGS((win_T *wp)); + int curwin_col_off2 __ARGS((void)); +! void curs_columns __ARGS((int may_scroll)); + void scrolldown __ARGS((long line_count, int byfold)); + void scrollup __ARGS((long line_count, int byfold)); + void check_topfill __ARGS((win_T *wp, int down)); +*** ../vim-7.3.719/src/proto/screen.pro 2010-08-15 21:57:28.000000000 +0200 +--- src/proto/screen.pro 2012-11-20 16:52:01.000000000 +0100 +*************** +*** 31,38 **** + void screen_draw_rectangle __ARGS((int row, int col, int height, int width, int invert)); + void screen_fill __ARGS((int start_row, int end_row, int start_col, int end_col, int c1, int c2, int attr)); + void check_for_delay __ARGS((int check_msg_scroll)); +! int screen_valid __ARGS((int clear)); +! void screenalloc __ARGS((int clear)); + void free_screenlines __ARGS((void)); + void screenclear __ARGS((void)); + int can_clear __ARGS((char_u *p)); +--- 31,38 ---- + void screen_draw_rectangle __ARGS((int row, int col, int height, int width, int invert)); + void screen_fill __ARGS((int start_row, int end_row, int start_col, int end_col, int c1, int c2, int attr)); + void check_for_delay __ARGS((int check_msg_scroll)); +! int screen_valid __ARGS((int doclear)); +! void screenalloc __ARGS((int doclear)); + void free_screenlines __ARGS((void)); + void screenclear __ARGS((void)); + int can_clear __ARGS((char_u *p)); +*** ../vim-7.3.719/src/proto/search.pro 2012-07-25 15:06:20.000000000 +0200 +--- src/proto/search.pro 2012-11-20 16:52:01.000000000 +0100 +*************** +*** 27,38 **** + int end_word __ARGS((long count, int bigword, int stop, int empty)); + int bckend_word __ARGS((long count, int bigword, int eol)); + int current_word __ARGS((oparg_T *oap, long count, int include, int bigword)); +- int current_search __ARGS((long count, int forward)); + int current_sent __ARGS((oparg_T *oap, long count, int include)); + int current_block __ARGS((oparg_T *oap, long count, int include, int what, int other)); + int current_tagblock __ARGS((oparg_T *oap, long count_arg, int include)); + int current_par __ARGS((oparg_T *oap, long count, int include, int type)); + int current_quote __ARGS((oparg_T *oap, long count, int include, int quotechar)); + int linewhite __ARGS((linenr_T lnum)); + void find_pattern_in_path __ARGS((char_u *ptr, int dir, int len, int whole, int skip_comments, int type, long count, int action, linenr_T start_lnum, linenr_T end_lnum)); + int read_viminfo_search_pattern __ARGS((vir_T *virp, int force)); +--- 27,38 ---- + int end_word __ARGS((long count, int bigword, int stop, int empty)); + int bckend_word __ARGS((long count, int bigword, int eol)); + int current_word __ARGS((oparg_T *oap, long count, int include, int bigword)); + int current_sent __ARGS((oparg_T *oap, long count, int include)); + int current_block __ARGS((oparg_T *oap, long count, int include, int what, int other)); + int current_tagblock __ARGS((oparg_T *oap, long count_arg, int include)); + int current_par __ARGS((oparg_T *oap, long count, int include, int type)); + int current_quote __ARGS((oparg_T *oap, long count, int include, int quotechar)); ++ int current_search __ARGS((long count, int forward)); + int linewhite __ARGS((linenr_T lnum)); + void find_pattern_in_path __ARGS((char_u *ptr, int dir, int len, int whole, int skip_comments, int type, long count, int action, linenr_T start_lnum, linenr_T end_lnum)); + int read_viminfo_search_pattern __ARGS((vir_T *virp, int force)); +*** ../vim-7.3.719/src/proto/os_win32.pro 2011-05-05 18:31:54.000000000 +0200 +--- src/proto/os_win32.pro 2012-11-20 16:52:13.000000000 +0100 +*************** +*** 22,28 **** + int mch_isdir __ARGS((char_u *name)); + int mch_mkdir __ARGS((char_u *name)); + int mch_is_linked __ARGS((char_u *fname)); +! int win32_fileinfo __ARGS((char_u *name, BY_HANDLE_FILE_INFORMATION *lpFileInfo)); + int mch_writable __ARGS((char_u *name)); + int mch_can_exe __ARGS((char_u *name)); + int mch_nodetype __ARGS((char_u *name)); +--- 22,28 ---- + int mch_isdir __ARGS((char_u *name)); + int mch_mkdir __ARGS((char_u *name)); + int mch_is_linked __ARGS((char_u *fname)); +! int win32_fileinfo __ARGS((char_u *fname, BY_HANDLE_FILE_INFORMATION *info)); + int mch_writable __ARGS((char_u *name)); + int mch_can_exe __ARGS((char_u *name)); + int mch_nodetype __ARGS((char_u *name)); +*** ../vim-7.3.719/src/proto/os_mswin.pro 2010-08-15 21:57:28.000000000 +0200 +--- src/proto/os_mswin.pro 2012-11-20 16:52:14.000000000 +0100 +*************** +*** 28,38 **** + void WideCharToMultiByte_alloc __ARGS((UINT cp, DWORD flags, LPCWSTR in, int inlen, LPSTR *out, int *outlen, LPCSTR def, LPBOOL useddef)); + int clip_mch_own_selection __ARGS((VimClipboard *cbd)); + void clip_mch_lose_selection __ARGS((VimClipboard *cbd)); + short_u *enc_to_utf16 __ARGS((char_u *str, int *lenp)); + char_u *utf16_to_enc __ARGS((short_u *str, int *lenp)); +- void clip_mch_request_selection __ARGS((VimClipboard *cbd)); + void acp_to_enc __ARGS((char_u *str, int str_size, char_u **out, int *outlen)); +- void clip_mch_set_selection __ARGS((VimClipboard *cbd)); + void DumpPutS __ARGS((const char *psz)); + int mch_get_winpos __ARGS((int *x, int *y)); + void mch_set_winpos __ARGS((int x, int y)); +--- 28,38 ---- + void WideCharToMultiByte_alloc __ARGS((UINT cp, DWORD flags, LPCWSTR in, int inlen, LPSTR *out, int *outlen, LPCSTR def, LPBOOL useddef)); + int clip_mch_own_selection __ARGS((VimClipboard *cbd)); + void clip_mch_lose_selection __ARGS((VimClipboard *cbd)); ++ void clip_mch_request_selection __ARGS((VimClipboard *cbd)); ++ void clip_mch_set_selection __ARGS((VimClipboard *cbd)); + short_u *enc_to_utf16 __ARGS((char_u *str, int *lenp)); + char_u *utf16_to_enc __ARGS((short_u *str, int *lenp)); + void acp_to_enc __ARGS((char_u *str, int str_size, char_u **out, int *outlen)); + void DumpPutS __ARGS((const char *psz)); + int mch_get_winpos __ARGS((int *x, int *y)); + void mch_set_winpos __ARGS((int x, int y)); +*** ../vim-7.3.719/src/version.c 2012-11-20 16:53:34.000000000 +0100 +--- src/version.c 2012-11-20 16:55:09.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 720, + /**/ + +-- +Light travels faster than sound. This is why some people +appear bright until you hear them speak + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.721 b/7.3.721 new file mode 100644 index 0000000..d9a139f --- /dev/null +++ b/7.3.721 @@ -0,0 +1,60 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.721 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.721 +Problem: Ruby interface defines local functions globally. +Solution: Make the functions static. +Files: src/if_ruby.c + + +*** ../vim-7.3.720/src/if_ruby.c 2012-10-03 18:06:55.000000000 +0200 +--- src/if_ruby.c 2012-11-20 15:35:46.000000000 +0100 +*************** +*** 336,346 **** + #endif + + #ifdef RUBY19_OR_LATER +! SIGNED_VALUE rb_num2long_stub(VALUE x) + { + return dll_rb_num2long(x); + } +! VALUE rb_int2big_stub(SIGNED_VALUE x) + { + return dll_rb_int2big(x); + } +--- 336,346 ---- + #endif + + #ifdef RUBY19_OR_LATER +! static SIGNED_VALUE rb_num2long_stub(VALUE x) + { + return dll_rb_num2long(x); + } +! static VALUE rb_int2big_stub(SIGNED_VALUE x) + { + return dll_rb_int2big(x); + } +*** ../vim-7.3.720/src/version.c 2012-11-20 16:56:49.000000000 +0100 +--- src/version.c 2012-11-20 16:58:32.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 721, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +39. You move into a new house and decide to Netscape before you landscape. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.722 b/7.3.722 new file mode 100644 index 0000000..d2d421d --- /dev/null +++ b/7.3.722 @@ -0,0 +1,58 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.722 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.722 +Problem: Perl flags may contain "-g", which breaks "make proto". +Solution: Filter out the "-g" flag for cproto. (Ken Takata) +Files: src/Makefile + + +*** ../vim-7.3.721/src/Makefile 2012-07-25 16:32:03.000000000 +0200 +--- src/Makefile 2012-11-20 17:02:22.000000000 +0100 +*************** +*** 1753,1762 **** + # Filter out arguments that cproto doesn't support. + # Don't pass "-pthread" to cproto, it sees it as a list of individual flags. + # Don't pass "-fstack-protector" to cproto, for the same reason. + # The -E"gcc -E" argument must be separate to avoid problems with shell + # quoting. + CPROTO = cproto $(PROTO_FLAGS) -DPROTO \ +! `echo '$(LINT_CFLAGS)' | sed -e 's/-pthread//g' -e 's/-fstack-protector//g'` + + ### Would be nice if this would work for "normal" make. + ### Currently it only works for (Free)BSD make. +--- 1753,1763 ---- + # Filter out arguments that cproto doesn't support. + # Don't pass "-pthread" to cproto, it sees it as a list of individual flags. + # Don't pass "-fstack-protector" to cproto, for the same reason. ++ # Don't pass "-g" to cproto. + # The -E"gcc -E" argument must be separate to avoid problems with shell + # quoting. + CPROTO = cproto $(PROTO_FLAGS) -DPROTO \ +! `echo '$(LINT_CFLAGS)' | sed -e 's/-pthread//g' -e 's/-fstack-protector//g' -e 's/\ -g\ / /g'` + + ### Would be nice if this would work for "normal" make. + ### Currently it only works for (Free)BSD make. +*** ../vim-7.3.721/src/version.c 2012-11-20 16:59:09.000000000 +0100 +--- src/version.c 2012-11-20 17:02:54.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 722, + /**/ + +-- +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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.723 b/7.3.723 new file mode 100644 index 0000000..b977e75 --- /dev/null +++ b/7.3.723 @@ -0,0 +1,264 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.723 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.723 +Problem: Various tiny problems. +Solution: Various tiny fixes. +Files: src/gui_mac.c, src/xpm_w32.c, src/netbeans.c, src/sha256.c, + src/if_sniff.c, README.txt + + +*** ../vim-7.3.722/src/gui_mac.c 2011-12-14 15:07:11.000000000 +0100 +--- src/gui_mac.c 2012-06-20 18:16:12.000000000 +0200 +*************** +*** 5728,5734 **** + case VIM_QUESTION: useIcon = kNoteIcon; break; + case VIM_WARNING: useIcon = kCautionIcon; break; + case VIM_ERROR: useIcon = kStopIcon; break; +! default: useIcon = kStopIcon; + } + AppendDITL(theDialog, iconDITL, overlayDITL); + ReleaseResource(iconDITL); +--- 5728,5734 ---- + case VIM_QUESTION: useIcon = kNoteIcon; break; + case VIM_WARNING: useIcon = kCautionIcon; break; + case VIM_ERROR: useIcon = kStopIcon; break; +! default: useIcon = kStopIcon; + } + AppendDITL(theDialog, iconDITL, overlayDITL); + ReleaseResource(iconDITL); +*** ../vim-7.3.722/src/xpm_w32.c 2012-02-05 00:47:56.000000000 +0100 +--- src/xpm_w32.c 2012-08-02 21:46:20.000000000 +0200 +*************** +*** 55,61 **** + return -1; + if (shp == NULL) + { +! if (img) + XDestroyImage(img); + return -1; + } +--- 55,61 ---- + return -1; + if (shp == NULL) + { +! if (img) + XDestroyImage(img); + return -1; + } +*** ../vim-7.3.722/src/netbeans.c 2012-04-20 19:47:00.000000000 +0200 +--- src/netbeans.c 2012-06-20 19:56:18.000000000 +0200 +*************** +*** 978,984 **** + buf_list_used = 0; + + /* free the queued key commands */ +! while(key_node != NULL && key_node != &keyHead) + { + keyQ_T *next = key_node->next; + vim_free(key_node->keystr); +--- 978,984 ---- + buf_list_used = 0; + + /* free the queued key commands */ +! while (key_node != NULL && key_node != &keyHead) + { + keyQ_T *next = key_node->next; + vim_free(key_node->keystr); +*************** +*** 993,999 **** + } + + /* free the queued netbeans commands */ +! while(cmd_node != NULL && cmd_node != &head) + { + queue_T *next = cmd_node->next; + vim_free(cmd_node->buffer); +--- 993,999 ---- + } + + /* free the queued netbeans commands */ +! while (cmd_node != NULL && cmd_node != &head) + { + queue_T *next = cmd_node->next; + vim_free(cmd_node->buffer); +*** ../vim-7.3.722/src/sha256.c 2010-08-15 21:57:25.000000000 +0200 +--- src/sha256.c 2012-03-18 21:35:07.000000000 +0100 +*************** +*** 7,15 **** + * See README.txt for an overview of the Vim source code. + * + * FIPS-180-2 compliant SHA-256 implementation +! * GPL by Christophe Devine. + * Modified for md5deep, in public domain. + * Modified For Vim, Mohsin Ahmed, http://www.cs.albany.edu/~mosh + * + * Vim specific notes: + * Functions exported by this file: +--- 7,17 ---- + * See README.txt for an overview of the Vim source code. + * + * FIPS-180-2 compliant SHA-256 implementation +! * GPL by Christophe Devine, applies to older version. + * Modified for md5deep, in public domain. + * Modified For Vim, Mohsin Ahmed, http://www.cs.albany.edu/~mosh ++ * Mohsin Ahmed states this work is distributed under the VIM License or GPL, ++ * at your choice. + * + * Vim specific notes: + * Functions exported by this file: +*** ../vim-7.3.722/src/if_sniff.c 2010-12-17 18:06:00.000000000 +0100 +--- src/if_sniff.c 2012-06-20 19:56:09.000000000 +0200 +*************** +*** 449,455 **** + if (!sniff_cmd) + { + struct sn_cmd_list *list = sniff_cmd_ext; +! while(list) + { + if (!strcmp(cmd, list->sniff_cmd->cmd_name)) + { +--- 449,455 ---- + if (!sniff_cmd) + { + struct sn_cmd_list *list = sniff_cmd_ext; +! while (list) + { + if (!strcmp(cmd, list->sniff_cmd->cmd_name)) + { +*************** +*** 479,485 **** + /* unescape message text */ + char *p = msg; + char *end = p+strlen(msg); +! while(*p) + { + if (*p == '\\') + mch_memmove(p,p+1,end-p); +--- 479,485 ---- + /* unescape message text */ + char *p = msg; + char *end = p+strlen(msg); +! while (*p) + { + if (*p == '\\') + mch_memmove(p,p+1,end-p); +*************** +*** 489,495 **** + SNIFF_TRACE1("request def = %s\n",def); + SNIFF_TRACE1("request msg = %s\n",msg); + +! while(list && list->next_cmd) + list = list->next_cmd; + if (!list) + sniff_cmd_ext = cmd_node; +--- 489,495 ---- + SNIFF_TRACE1("request def = %s\n",def); + SNIFF_TRACE1("request msg = %s\n",msg); + +! while (list && list->next_cmd) + list = list->next_cmd; + if (!list) + sniff_cmd_ext = cmd_node; +*************** +*** 628,634 **** + gui_mch_wait_for_chars(0L); + #endif + #ifdef WIN32 +! while(sniffBufStart != NULL) + { + struct sniffBufNode *node = sniffBufStart; + sniffBufStart = sniffBufStart->next; +--- 628,634 ---- + gui_mch_wait_for_chars(0L); + #endif + #ifdef WIN32 +! while (sniffBufStart != NULL) + { + struct sniffBufNode *node = sniffBufStart; + sniffBufStart = sniffBufStart->next; +*************** +*** 789,795 **** + command = buffer[0]; + arguments = &buffer[1]; + token = strtok(arguments, sniff_rq_sep); +! while(argc <3) + { + if (token) + { +--- 789,795 ---- + command = buffer[0]; + arguments = &buffer[1]; + token = strtok(arguments, sniff_rq_sep); +! while (argc <3) + { + if (token) + { +*************** +*** 925,931 **** + default : + break; + } +! while(argc) + vim_free(argv[--argc]); + } + +--- 925,931 ---- + default : + break; + } +! while (argc) + vim_free(argv[--argc]); + } + +*** ../vim-7.3.722/README.txt 2010-08-15 21:56:43.000000000 +0200 +--- README.txt 2012-10-28 18:58:18.000000000 +0100 +*************** +*** 97,103 **** + If you have problems, have a look at the Vim FAQ: + http://vimdoc.sf.net/vimfaq.html + +! Send bug reports to: + Bram Moolenaar + + There are several mailing lists for Vim, see http://www.vim.org/maillist.php. +--- 97,107 ---- + If you have problems, have a look at the Vim FAQ: + http://vimdoc.sf.net/vimfaq.html + +! If you still have problems, use one of the maillists to discuss t with Vim +! users and developers: +! http://www.vim.org/maillist.php +! +! If nothing else works, report bugs directly: + Bram Moolenaar + + There are several mailing lists for Vim, see http://www.vim.org/maillist.php. +*** ../vim-7.3.722/src/version.c 2012-11-20 17:03:23.000000000 +0100 +--- src/version.c 2012-11-20 17:14:09.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 723, + /**/ + +-- +"Oh, no! NOT the Spanish Inquisition!" +"NOBODY expects the Spanish Inquisition!!!" + -- Monty Python sketch -- +"Oh, no! NOT another option!" +"EVERYBODY expects another option!!!" + -- Discussion in vim-dev mailing list -- + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.724 b/7.3.724 new file mode 100644 index 0000000..d58a50b --- /dev/null +++ b/7.3.724 @@ -0,0 +1,50 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.724 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.724 +Problem: Building with Ruby and Tcl on MS-Windows 64 bit does not work. +Solution: Remove Ruby and Tcl from the big MS-Windows build. +Files: src/bigvim64.bat + + +*** ../vim-7.3.723/src/bigvim64.bat 2012-08-29 14:18:26.000000000 +0200 +--- src/bigvim64.bat 2012-08-29 17:32:55.000000000 +0200 +*************** +*** 1,6 **** + :: command to build big Vim 64 bit with OLE, Perl, Python, Ruby and Tcl + :: First run: %VCDIR%\vcvarsall.bat x86_amd64 + SET VCDIR="C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\" + SET TOOLDIR=E:\ +! %VCDIR%\bin\nmake -f Make_mvc.mak CPU=AMD64 GUI=yes OLE=yes PERL=E:\perl514 DYNAMIC_PERL=yes PERL_VER=514 PYTHON=%TOOLDIR%python27 DYNAMIC_PYTHON=yes PYTHON_VER=27 PYTHON3=%TOOLDIR%python32 DYNAMIC_PYTHON3=yes PYTHON3_VER=32 RUBY=%TOOLDIR%ruby192 DYNAMIC_RUBY=yes RUBY_VER=192 RUBY_VER_LONG=1.9.2 TCL=%TOOLDIR%tcl TCL_VER=85 TCL_VER_LONG=8.5 DYNAMIC_TCL=yes %1 IME=yes CSCOPE=yes + +--- 1,7 ---- + :: command to build big Vim 64 bit with OLE, Perl, Python, Ruby and Tcl + :: First run: %VCDIR%\vcvarsall.bat x86_amd64 ++ :: Ruby and Tcl are excluded, doesn't seem to work. + SET VCDIR="C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\" + SET TOOLDIR=E:\ +! %VCDIR%\bin\nmake -f Make_mvc.mak CPU=AMD64 GUI=yes OLE=yes PERL=E:\perl514 DYNAMIC_PERL=yes PERL_VER=514 PYTHON=%TOOLDIR%python27 DYNAMIC_PYTHON=yes PYTHON_VER=27 PYTHON3=%TOOLDIR%python32 DYNAMIC_PYTHON3=yes PYTHON3_VER=32 %1 IME=yes CSCOPE=yes + +*** ../vim-7.3.723/src/version.c 2012-11-20 17:18:56.000000000 +0100 +--- src/version.c 2012-11-20 17:20:51.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 724, + /**/ + +-- +Microsoft is to software what McDonalds is to gourmet cooking + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.725 b/7.3.725 new file mode 100644 index 0000000..a8d20f8 --- /dev/null +++ b/7.3.725 @@ -0,0 +1,58 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.725 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.725 +Problem: :aboveleft and :belowright have no effect on :copen. +Solution: Check for cmdmod.split. (Christian Brabandt) +Files: src/quickfix.c + + +*** ../vim-7.3.724/src/quickfix.c 2012-11-14 22:38:04.000000000 +0100 +--- src/quickfix.c 2012-11-20 17:51:59.000000000 +0100 +*************** +*** 2347,2354 **** + /* The current window becomes the previous window afterwards. */ + win = curwin; + +! if (eap->cmdidx == CMD_copen || eap->cmdidx == CMD_cwindow) +! /* Create the new window at the very bottom. */ + win_goto(lastwin); + if (win_split(height, WSP_BELOW | WSP_NEWLOC) == FAIL) + return; /* not enough room for window */ +--- 2347,2356 ---- + /* The current window becomes the previous window afterwards. */ + win = curwin; + +! if ((eap->cmdidx == CMD_copen || eap->cmdidx == CMD_cwindow) +! && cmdmod.split == 0) +! /* Create the new window at the very bottom, except when +! * :belowright or :aboveleft is used. */ + win_goto(lastwin); + if (win_split(height, WSP_BELOW | WSP_NEWLOC) == FAIL) + return; /* not enough room for window */ +*** ../vim-7.3.724/src/version.c 2012-11-20 17:21:29.000000000 +0100 +--- src/version.c 2012-11-20 17:50:30.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 725, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +40. You tell the cab driver you live at + http://123.elm.street/house/bluetrim.html +41. You actually try that 123.elm.street address. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.726 b/7.3.726 new file mode 100644 index 0000000..9350753 --- /dev/null +++ b/7.3.726 @@ -0,0 +1,66 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.726 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.726 +Problem: Typos and duplicate info in README. +Solution: Fix the text. +Files: README.txt + + +*** ../vim-7.3.725/README.txt 2012-11-20 17:18:56.000000000 +0100 +--- README.txt 2012-11-21 12:28:58.000000000 +0100 +*************** +*** 97,111 **** + If you have problems, have a look at the Vim FAQ: + http://vimdoc.sf.net/vimfaq.html + +! If you still have problems, use one of the maillists to discuss t with Vim +! users and developers: + http://www.vim.org/maillist.php + + If nothing else works, report bugs directly: + Bram Moolenaar + +- There are several mailing lists for Vim, see http://www.vim.org/maillist.php. +- + + MAIN AUTHOR + +--- 97,109 ---- + If you have problems, have a look at the Vim FAQ: + http://vimdoc.sf.net/vimfaq.html + +! If you still have problems or any other questions, use one of the mailing +! lists to discuss them with Vim users and developers: + http://www.vim.org/maillist.php + + If nothing else works, report bugs directly: + Bram Moolenaar + + + MAIN AUTHOR + +*** ../vim-7.3.725/src/version.c 2012-11-20 17:55:06.000000000 +0100 +--- src/version.c 2012-11-23 21:44:38.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 726, + /**/ + +-- +Q: Should I clean my house or work on Vim? +A: Whatever contains more bugs. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.727 b/7.3.727 new file mode 100644 index 0000000..02ea421 --- /dev/null +++ b/7.3.727 @@ -0,0 +1,55 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.727 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.727 +Problem: Can't always find Win32.mak when building GvimExt. +Solution: Use same mechanism as in Make_mvc.mak. (Cade Foster) +Files: src/GvimExt/Makefile + + +*** ../vim-7.3.726/src/GvimExt/Makefile 2010-08-15 21:57:29.000000000 +0200 +--- src/GvimExt/Makefile 2012-11-21 19:53:02.000000000 +0100 +*************** +*** 10,16 **** + NODEBUG = 1 + !endif + +! !include + + all: gvimext.dll + +--- 10,20 ---- + NODEBUG = 1 + !endif + +! !ifdef SDK_INCLUDE_DIR +! !include $(SDK_INCLUDE_DIR)\Win32.mak +! !else +! !include +! !endif + + all: gvimext.dll + +*** ../vim-7.3.726/src/version.c 2012-11-23 21:45:20.000000000 +0100 +--- src/version.c 2012-11-23 21:46:35.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 727, + /**/ + +-- +Time is money. Especially if you make clocks. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.728 b/7.3.728 new file mode 100644 index 0000000..bdb0219 --- /dev/null +++ b/7.3.728 @@ -0,0 +1,191 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.728 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.728 +Problem: Cannot compile with MzScheme interface on Ubuntu 12.10. +Solution: Find the collects directory under /usr/share. +Files: src/configure.in, src/auto/configure + + +*** ../vim-7.3.727/src/configure.in 2012-10-03 21:09:33.000000000 +0200 +--- src/configure.in 2012-11-23 21:51:39.000000000 +0100 +*************** +*** 650,666 **** + MZSCHEME_LIBS="${MZSCHEME_LIBS} -R ${vi_cv_path_mzscheme_pfx}/lib" + fi + fi + if test -d $vi_cv_path_mzscheme_pfx/lib/plt/collects; then +! SCHEME_COLLECTS=lib/plt/ + else + if test -d $vi_cv_path_mzscheme_pfx/lib/racket/collects; then +! SCHEME_COLLECTS=lib/racket/ + fi + fi +! if test -f "${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects/scheme/base.ss" ; then + MZSCHEME_EXTRA="mzscheme_base.c" + else +! if test -f "${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects/scheme/base.rkt" ; then + MZSCHEME_EXTRA="mzscheme_base.c" + fi + fi +--- 650,679 ---- + MZSCHEME_LIBS="${MZSCHEME_LIBS} -R ${vi_cv_path_mzscheme_pfx}/lib" + fi + fi ++ ++ AC_MSG_CHECKING(for racket collects directory) + if test -d $vi_cv_path_mzscheme_pfx/lib/plt/collects; then +! SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/lib/plt/ + else + if test -d $vi_cv_path_mzscheme_pfx/lib/racket/collects; then +! SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/lib/racket/ +! else +! if test -d $vi_cv_path_mzscheme_pfx/share/racket/collects; then +! SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/share/racket/ +! fi + fi + fi +! if test "X$SCHEME_COLLECTS" != "X" ; then +! AC_MSG_RESULT(${SCHEME_COLLECTS}) +! else +! AC_MSG_RESULT(not found) +! fi +! +! AC_MSG_CHECKING(for mzscheme_base.c) +! if test -f "${SCHEME_COLLECTS}collects/scheme/base.ss" ; then + MZSCHEME_EXTRA="mzscheme_base.c" + else +! if test -f "${SCHEME_COLLECTS}collects/scheme/base.rkt" ; then + MZSCHEME_EXTRA="mzscheme_base.c" + fi + fi +*************** +*** 668,676 **** + dnl need to generate bytecode for MzScheme base + MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -DINCLUDE_MZSCHEME_BASE" + MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc" + fi + MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -I${SCHEME_INC} \ +! -DMZSCHEME_COLLECTS='\"${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects\"'" + MZSCHEME_SRC="if_mzsch.c" + MZSCHEME_OBJ="objects/if_mzsch.o" + MZSCHEME_PRO="if_mzsch.pro" +--- 681,693 ---- + dnl need to generate bytecode for MzScheme base + MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -DINCLUDE_MZSCHEME_BASE" + MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc" ++ AC_MSG_RESULT(needed) ++ else ++ AC_MSG_RESULT(not needed) + fi ++ + MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -I${SCHEME_INC} \ +! -DMZSCHEME_COLLECTS='\"${SCHEME_COLLECTS}collects\"'" + MZSCHEME_SRC="if_mzsch.c" + MZSCHEME_OBJ="objects/if_mzsch.o" + MZSCHEME_PRO="if_mzsch.pro" +*** ../vim-7.3.727/src/auto/configure 2012-10-03 21:09:33.000000000 +0200 +--- src/auto/configure 2012-11-23 21:51:42.000000000 +0100 +*************** +*** 4957,4982 **** + MZSCHEME_LIBS="${MZSCHEME_LIBS} -R ${vi_cv_path_mzscheme_pfx}/lib" + fi + fi + if test -d $vi_cv_path_mzscheme_pfx/lib/plt/collects; then +! SCHEME_COLLECTS=lib/plt/ + else + if test -d $vi_cv_path_mzscheme_pfx/lib/racket/collects; then +! SCHEME_COLLECTS=lib/racket/ + fi + fi +! if test -f "${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects/scheme/base.ss" ; then + MZSCHEME_EXTRA="mzscheme_base.c" + else +! if test -f "${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects/scheme/base.rkt" ; then + MZSCHEME_EXTRA="mzscheme_base.c" + fi + fi + if test "X$MZSCHEME_EXTRA" != "X" ; then + MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -DINCLUDE_MZSCHEME_BASE" + MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc" + fi + MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -I${SCHEME_INC} \ +! -DMZSCHEME_COLLECTS='\"${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects\"'" + MZSCHEME_SRC="if_mzsch.c" + MZSCHEME_OBJ="objects/if_mzsch.o" + MZSCHEME_PRO="if_mzsch.pro" +--- 4957,5005 ---- + MZSCHEME_LIBS="${MZSCHEME_LIBS} -R ${vi_cv_path_mzscheme_pfx}/lib" + fi + fi ++ ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for racket collects directory" >&5 ++ $as_echo_n "checking for racket collects directory... " >&6; } + if test -d $vi_cv_path_mzscheme_pfx/lib/plt/collects; then +! SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/lib/plt/ + else + if test -d $vi_cv_path_mzscheme_pfx/lib/racket/collects; then +! SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/lib/racket/ +! else +! if test -d $vi_cv_path_mzscheme_pfx/share/racket/collects; then +! SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/share/racket/ +! fi + fi + fi +! if test "X$SCHEME_COLLECTS" != "X" ; then +! { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${SCHEME_COLLECTS}" >&5 +! $as_echo "${SCHEME_COLLECTS}" >&6; } +! else +! { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +! $as_echo "not found" >&6; } +! fi +! +! { $as_echo "$as_me:${as_lineno-$LINENO}: checking for mzscheme_base.c" >&5 +! $as_echo_n "checking for mzscheme_base.c... " >&6; } +! if test -f "${SCHEME_COLLECTS}collects/scheme/base.ss" ; then + MZSCHEME_EXTRA="mzscheme_base.c" + else +! if test -f "${SCHEME_COLLECTS}collects/scheme/base.rkt" ; then + MZSCHEME_EXTRA="mzscheme_base.c" + fi + fi + if test "X$MZSCHEME_EXTRA" != "X" ; then + MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -DINCLUDE_MZSCHEME_BASE" + MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc" ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: needed" >&5 ++ $as_echo "needed" >&6; } ++ else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not needed" >&5 ++ $as_echo "not needed" >&6; } + fi ++ + MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -I${SCHEME_INC} \ +! -DMZSCHEME_COLLECTS='\"${SCHEME_COLLECTS}collects\"'" + MZSCHEME_SRC="if_mzsch.c" + MZSCHEME_OBJ="objects/if_mzsch.o" + MZSCHEME_PRO="if_mzsch.pro" +*** ../vim-7.3.727/src/version.c 2012-11-23 21:47:18.000000000 +0100 +--- src/version.c 2012-11-23 21:54:13.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 728, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +60. As your car crashes through the guardrail on a mountain road, your first + instinct is to search for the "back" button. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.729 b/7.3.729 new file mode 100644 index 0000000..ffd9c85 --- /dev/null +++ b/7.3.729 @@ -0,0 +1,62 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.729 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.729 +Problem: Building with Ruby fails on some systems. +Solution: Remove "static" and add #ifndef PROTO. (Ken Takata) +Files: src/if_ruby.c + + +*** ../vim-7.3.728/src/if_ruby.c 2012-11-20 16:59:09.000000000 +0100 +--- src/if_ruby.c 2012-11-24 13:32:06.000000000 +0100 +*************** +*** 335,346 **** + static void* (*ruby_process_options)(int, char**); + #endif + +! #ifdef RUBY19_OR_LATER +! static SIGNED_VALUE rb_num2long_stub(VALUE x) + { + return dll_rb_num2long(x); + } +! static VALUE rb_int2big_stub(SIGNED_VALUE x) + { + return dll_rb_int2big(x); + } +--- 335,346 ---- + static void* (*ruby_process_options)(int, char**); + #endif + +! #if defined(RUBY19_OR_LATER) && !defined(PROTO) +! SIGNED_VALUE rb_num2long_stub(VALUE x) + { + return dll_rb_num2long(x); + } +! VALUE rb_int2big_stub(SIGNED_VALUE x) + { + return dll_rb_int2big(x); + } +*** ../vim-7.3.728/src/version.c 2012-11-23 21:54:43.000000000 +0100 +--- src/version.c 2012-11-24 13:34:20.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 729, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +64. The remote to the T.V. is missing...and you don't even care. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.730 b/7.3.730 new file mode 100644 index 0000000..29cebe1 --- /dev/null +++ b/7.3.730 @@ -0,0 +1,86 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.730 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.730 +Problem: Crash in PHP file when using syntastic. (Ike Devolder) +Solution: Avoid using NULL pointer. (Christian Brabandt) +Files: src/quickfix.c + + +*** ../vim-7.3.729/src/quickfix.c 2012-11-20 17:55:06.000000000 +0100 +--- src/quickfix.c 2012-11-28 15:20:21.000000000 +0100 +*************** +*** 898,908 **** + * way with ":grep'. + */ + while (qi->qf_listcount > qi->qf_curlist + 1) +- { +- if (wp != NULL && wp->w_llist == qi) +- wp->w_llist = NULL; + qf_free(qi, --qi->qf_listcount); +- } + + /* + * When the stack is full, remove to oldest entry +--- 898,904 ---- +*************** +*** 910,917 **** + */ + if (qi->qf_listcount == LISTCOUNT) + { +- if (wp != NULL && wp->w_llist == qi) +- wp->w_llist = NULL; + qf_free(qi, 0); + for (i = 1; i < LISTCOUNT; ++i) + qi->qf_lists[i - 1] = qi->qf_lists[i]; +--- 906,911 ---- +*************** +*** 2135,2143 **** + while (qi->qf_lists[idx].qf_count) + { + qfp = qi->qf_lists[idx].qf_start->qf_next; +! vim_free(qi->qf_lists[idx].qf_start->qf_text); +! vim_free(qi->qf_lists[idx].qf_start->qf_pattern); +! vim_free(qi->qf_lists[idx].qf_start); + qi->qf_lists[idx].qf_start = qfp; + --qi->qf_lists[idx].qf_count; + } +--- 2129,2140 ---- + while (qi->qf_lists[idx].qf_count) + { + qfp = qi->qf_lists[idx].qf_start->qf_next; +! if (qi->qf_lists[idx].qf_title != NULL) +! { +! vim_free(qi->qf_lists[idx].qf_start->qf_text); +! vim_free(qi->qf_lists[idx].qf_start->qf_pattern); +! vim_free(qi->qf_lists[idx].qf_start); +! } + qi->qf_lists[idx].qf_start = qfp; + --qi->qf_lists[idx].qf_count; + } +*** ../vim-7.3.729/src/version.c 2012-11-24 13:38:56.000000000 +0100 +--- src/version.c 2012-11-28 15:16:16.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 730, + /**/ + + +-- +hundred-and-one symptoms of being an internet addict: +89. In addition to your e-mail address being on your business + cards you even have your own domain. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.731 b/7.3.731 new file mode 100644 index 0000000..d1a0c23 --- /dev/null +++ b/7.3.731 @@ -0,0 +1,81 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.731 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.731 +Problem: Py3Init_vim() is exported uneccessarily. +Solution: Make it static. (Ken Takata) +Files: src/if_python3.c + + +*** ../vim-7.3.730/src/if_python3.c 2012-11-20 11:02:49.000000000 +0100 +--- src/if_python3.c 2012-11-28 15:32:00.000000000 +0100 +*************** +*** 657,663 **** + static PyObject *globals; + + static int PythonIO_Init(void); +! PyMODINIT_FUNC Py3Init_vim(void); + + /****************************************************** + * 1. Python interpreter main program. +--- 657,663 ---- + static PyObject *globals; + + static int PythonIO_Init(void); +! static PyObject *Py3Init_vim(void); + + /****************************************************** + * 1. Python interpreter main program. +*************** +*** 1773,1780 **** + + static struct PyModuleDef vimmodule; + +! #ifndef PROTO +! PyMODINIT_FUNC Py3Init_vim(void) + { + PyObject *mod; + PyObject *tmp; +--- 1773,1780 ---- + + static struct PyModuleDef vimmodule; + +! static PyObject * +! Py3Init_vim(void) + { + PyObject *mod; + PyObject *tmp; +*************** +*** 1824,1830 **** + + return mod; + } +- #endif + + /************************************************************************* + * 4. Utility functions for handling the interface between Vim and Python. +--- 1824,1829 ---- +*** ../vim-7.3.730/src/version.c 2012-11-28 15:25:28.000000000 +0100 +--- src/version.c 2012-11-28 15:30:47.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 731, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +90. Instead of calling you to dinner, your spouse sends e-mail. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.732 b/7.3.732 new file mode 100644 index 0000000..39a3264 --- /dev/null +++ b/7.3.732 @@ -0,0 +1,130 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.732 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.732 +Problem: Compiler warnings for function arguments. +Solution: Use inteptr_t instead of long. +Files: src/if_mzsch.c + + +*** ../vim-7.3.731/src/if_mzsch.c 2012-10-14 03:41:54.000000000 +0200 +--- src/if_mzsch.c 2012-11-24 14:00:31.000000000 +0100 +*************** +*** 142,148 **** + static int do_mzscheme_command(exarg_T *, void *, Scheme_Closed_Prim *what); + static void startup_mzscheme(void); + static char *string_to_line(Scheme_Object *obj); +! static void do_output(char *mesg, long len); + static void do_printf(char *format, ...); + static void do_flush(void); + static Scheme_Object *_apply_thunk_catch_exceptions( +--- 142,148 ---- + static int do_mzscheme_command(exarg_T *, void *, Scheme_Closed_Prim *what); + static void startup_mzscheme(void); + static char *string_to_line(Scheme_Object *obj); +! static void do_output(char *mesg, intptr_t len); + static void do_printf(char *format, ...); + static void do_flush(void); + static Scheme_Object *_apply_thunk_catch_exceptions( +*************** +*** 1349,1356 **** + } + + static void +! do_output(char *mesg, long len UNUSED) + { + do_intrnl_output(mesg, 0); + } + +--- 1349,1357 ---- + } + + static void +! do_output(char *mesg, intptr_t len UNUSED) + { ++ /* TODO: use len, the string may not be NUL terminated */ + do_intrnl_output(mesg, 0); + } + +*************** +*** 1370,1376 **** + do_flush(void) + { + char *buff; +! long length; + + buff = scheme_get_sized_string_output(curerr, &length); + MZ_GC_CHECK(); +--- 1371,1377 ---- + do_flush(void) + { + char *buff; +! intptr_t length; + + buff = scheme_get_sized_string_output(curerr, &length); + MZ_GC_CHECK(); +*************** +*** 2588,2594 **** + { + char *scheme_str = NULL; + char *vim_str = NULL; +! long len; + int i; + + scheme_str = scheme_display_to_string(obj, &len); +--- 2589,2595 ---- + { + char *scheme_str = NULL; + char *vim_str = NULL; +! intptr_t len; + int i; + + scheme_str = scheme_display_to_string(obj, &len); +*************** +*** 2597,2606 **** + * are replacing a single line, and we must replace it with + * a single line. + */ +! if (memchr(scheme_str, '\n', len)) + scheme_signal_error(_("string cannot contain newlines")); + +! vim_str = (char *)alloc(len + 1); + + /* Create a copy of the string, with internal nulls replaced by + * newline characters, as is the vim convention. +--- 2598,2607 ---- + * are replacing a single line, and we must replace it with + * a single line. + */ +! if (memchr(scheme_str, '\n', (size_t)len)) + scheme_signal_error(_("string cannot contain newlines")); + +! vim_str = (char *)alloc((int)(len + 1)); + + /* Create a copy of the string, with internal nulls replaced by + * newline characters, as is the vim convention. +*** ../vim-7.3.731/src/version.c 2012-11-28 15:33:10.000000000 +0100 +--- src/version.c 2012-11-28 15:34:30.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 732, + /**/ + +-- +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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.733 b/7.3.733 new file mode 100644 index 0000000..0c0a998 --- /dev/null +++ b/7.3.733 @@ -0,0 +1,118 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.733 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.733 +Problem: Tests fail when including MzScheme. +Solution: Change #ifdefs for vim_main2(). +Files: src/main.c + + +*** ../vim-7.3.732/src/main.c 2012-04-25 18:24:24.000000000 +0200 +--- src/main.c 2012-11-24 14:26:56.000000000 +0100 +*************** +*** 147,154 **** + #define ME_INVALID_ARG 5 + }; + +- #ifndef NO_VIM_MAIN /* skip this for unittests */ + #ifndef PROTO /* don't want a prototype for main() */ + int + # ifdef VIMDLL + _export +--- 147,154 ---- + #define ME_INVALID_ARG 5 + }; + + #ifndef PROTO /* don't want a prototype for main() */ ++ #ifndef NO_VIM_MAIN /* skip this for unittests */ + int + # ifdef VIMDLL + _export +*************** +*** 570,584 **** + return mzscheme_main(2, args); + } + } + +! int vim_main2(int argc, char **argv) + { + char_u *fname = (char_u *)argv[0]; + mparm_T params; + + memcpy(¶ms, argv[1], sizeof(params)); + #endif + + /* Execute --cmd arguments. */ + exe_pre_commands(¶ms); + +--- 570,596 ---- + return mzscheme_main(2, args); + } + } ++ #endif ++ #endif /* NO_VIM_MAIN */ + +! /* vim_main2() needs to be produced when FEAT_MZSCHEME is defined even when +! * NO_VIM_MAIN is defined. */ +! #ifdef FEAT_MZSCHEME +! int +! vim_main2(int argc UNUSED, char **argv UNUSED) + { ++ # ifndef NO_VIM_MAIN + char_u *fname = (char_u *)argv[0]; + mparm_T params; + + memcpy(¶ms, argv[1], sizeof(params)); ++ # else ++ return 0; ++ } ++ # endif + #endif + ++ #ifndef NO_VIM_MAIN + /* Execute --cmd arguments. */ + exe_pre_commands(¶ms); + +*************** +*** 999,1006 **** + + return 0; + } +- #endif /* PROTO */ + #endif /* NO_VIM_MAIN */ + + /* + * Main loop: Execute Normal mode commands until exiting Vim. +--- 1011,1018 ---- + + return 0; + } + #endif /* NO_VIM_MAIN */ ++ #endif /* PROTO */ + + /* + * Main loop: Execute Normal mode commands until exiting Vim. +*** ../vim-7.3.732/src/version.c 2012-11-28 15:37:46.000000000 +0100 +--- src/version.c 2012-11-28 15:54:07.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 733, + /**/ + +-- +From "know your smileys": + :^[/ mean-smiley-with-cigarette + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.734 b/7.3.734 new file mode 100644 index 0000000..1b4d16f --- /dev/null +++ b/7.3.734 @@ -0,0 +1,125 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.734 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.734 +Problem: Cannot put help files in a sub-directory. +Solution: Make :helptags work for sub-directories. (Charles Campbell) +Files: src/ex_cmds.c + + +*** ../vim-7.3.733/src/ex_cmds.c 2012-09-05 15:15:01.000000000 +0200 +--- src/ex_cmds.c 2012-11-28 15:59:58.000000000 +0100 +*************** +*** 6344,6353 **** + } + + #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, + EW_FILE|EW_SILENT) == FAIL + || filecount == 0) +--- 6344,6353 ---- + } + + #ifdef FEAT_MULTI_LANG +! /* Get a list of all files in the help directory and in subdirectories. */ + STRCPY(NameBuff, dirname); + add_pathsep(NameBuff); +! STRCAT(NameBuff, "**"); + if (gen_expand_wildcards(1, &NameBuff, &filecount, &files, + EW_FILE|EW_SILENT) == FAIL + || filecount == 0) +*************** +*** 6436,6443 **** + 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; +--- 6436,6443 ---- + 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; +*************** +*** 6449,6454 **** +--- 6449,6455 ---- + char_u *s; + int i; + char_u *fname; ++ int dirlen; + # ifdef FEAT_MBYTE + int utf8 = MAYBE; + int this_utf8; +*************** +*** 6459,6467 **** + /* + * Find all *.txt files. + */ + STRCPY(NameBuff, dir); +! add_pathsep(NameBuff); +! STRCAT(NameBuff, "*"); + STRCAT(NameBuff, ext); + if (gen_expand_wildcards(1, &NameBuff, &filecount, &files, + EW_FILE|EW_SILENT) == FAIL +--- 6460,6468 ---- + /* + * Find all *.txt files. + */ ++ dirlen = STRLEN(dir); + STRCPY(NameBuff, dir); +! STRCAT(NameBuff, "/**/*"); + STRCAT(NameBuff, ext); + if (gen_expand_wildcards(1, &NameBuff, &filecount, &files, + EW_FILE|EW_SILENT) == FAIL +*************** +*** 6522,6528 **** + EMSG2(_("E153: Unable to open %s for reading"), files[fi]); + continue; + } +! fname = gettail(files[fi]); + + # ifdef FEAT_MBYTE + firstline = TRUE; +--- 6523,6529 ---- + EMSG2(_("E153: Unable to open %s for reading"), files[fi]); + continue; + } +! fname = files[fi] + dirlen + 1; + + # ifdef FEAT_MBYTE + firstline = TRUE; +*** ../vim-7.3.733/src/version.c 2012-11-28 15:55:37.000000000 +0100 +--- src/version.c 2012-11-28 15:58:26.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 734, + /**/ + +-- +From "know your smileys": + y:-) Bad toupee + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.735 b/7.3.735 new file mode 100644 index 0000000..808bd29 --- /dev/null +++ b/7.3.735 @@ -0,0 +1,100 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.735 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.735 +Problem: Cannot build Ruby 1.9 with MingW or Cygwin. +Solution: Add another include directory. (Ken Takata) +Files: src/Make_cyg.mak, src/Make_ming.mak + + +*** ../vim-7.3.734/src/Make_cyg.mak 2012-07-06 13:40:44.000000000 +0200 +--- src/Make_cyg.mak 2012-11-28 16:14:41.000000000 +0100 +*************** +*** 21,27 **** + # TCL_VER define to version of TCL being used (83) + # DYNAMIC_TCL no or yes: use yes to load the TCL DLL dynamically (yes) + # RUBY define to path to Ruby dir to get Ruby support (not defined) +! # RUBY_VER define to version of Ruby being used (16) + # DYNAMIC_RUBY no or yes: use yes to load the Ruby DLL dynamically (yes) + # MZSCHEME define to path to MzScheme dir to get MZSCHEME support (not defined) + # MZSCHEME_VER define to version of MzScheme being used (209_000) +--- 21,31 ---- + # TCL_VER define to version of TCL being used (83) + # DYNAMIC_TCL no or yes: use yes to load the TCL DLL dynamically (yes) + # RUBY define to path to Ruby dir to get Ruby support (not defined) +! # RUBY_VER define to version of Ruby being used (16) +! # RUBY_VER_LONG same, but in format with dot. (1.6) +! # You must set RUBY_VER_LONG when changing RUBY_VER. +! # You must set RUBY_API_VER version to RUBY_VER_LONG. +! # Don't set ruby API version to RUBY_VER like 191. + # DYNAMIC_RUBY no or yes: use yes to load the Ruby DLL dynamically (yes) + # MZSCHEME define to path to MzScheme dir to get MZSCHEME support (not defined) + # MZSCHEME_VER define to version of MzScheme being used (209_000) +*************** +*** 217,224 **** +--- 221,235 ---- + endif + endif + ++ ifeq (19, $(word 1,$(sort 19 $(RUBY_VER)))) ++ RUBY_19_OR_LATER = 1 ++ endif ++ + DEFINES += -DFEAT_RUBY + INCLUDES += -I$(RUBY)/lib/ruby/$(RUBY_VER_LONG)/$(RUBY_PLATFORM) ++ ifdef RUBY_19_OR_LATER ++ INCLUDES += -I$(RUBY)/include/ruby-$(RUBY_VER_LONG) -I$(RUBY)/include/ruby-$(RUBY_VER_LONG)/$(RUBY_PLATFORM) ++ endif + EXTRA_OBJS += $(OUTDIR)/if_ruby.o + + ifeq (yes, $(DYNAMIC_RUBY)) +*** ../vim-7.3.734/src/Make_ming.mak 2012-09-05 17:57:34.000000000 +0200 +--- src/Make_ming.mak 2012-11-28 16:14:16.000000000 +0100 +*************** +*** 301,307 **** + endif + endif + +! RUBYINC =-I $(RUBY)/lib/ruby/$(RUBY_VER_LONG)/$(RUBY_PLATFORM) -I $(RUBY)/include/ruby-$(RUBY_VER_LONG) -I $(RUBY)/include/ruby-$(RUBY_VER_LONG)/$(RUBY_PLATFORM) + ifeq (no, $(DYNAMIC_RUBY)) + RUBYLIB = -L$(RUBY)/lib -l$(RUBY_INSTALL_NAME) + endif +--- 301,314 ---- + endif + endif + +! ifeq (19, $(word 1,$(sort 19 $(RUBY_VER)))) +! RUBY_19_OR_LATER = 1 +! endif +! +! RUBYINC = -I $(RUBY)/lib/ruby/$(RUBY_VER_LONG)/$(RUBY_PLATFORM) +! ifdef RUBY_19_OR_LATER +! RUBYINC += -I $(RUBY)/include/ruby-$(RUBY_VER_LONG) -I $(RUBY)/include/ruby-$(RUBY_VER_LONG)/$(RUBY_PLATFORM) +! endif + ifeq (no, $(DYNAMIC_RUBY)) + RUBYLIB = -L$(RUBY)/lib -l$(RUBY_INSTALL_NAME) + endif +*** ../vim-7.3.734/src/version.c 2012-11-28 16:06:13.000000000 +0100 +--- src/version.c 2012-11-28 16:16:28.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 735, + /**/ + +-- +From "know your smileys": + :----} You lie like Pinocchio + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.736 b/7.3.736 new file mode 100644 index 0000000..fa1fceb --- /dev/null +++ b/7.3.736 @@ -0,0 +1,258 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.736 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.736 +Problem: File name completion in input() escapes white space. (Frederic + Hardy) +Solution: Do not escape white space. (Christian Brabandt) +Files: src/ex_getln.c + + +*** ../vim-7.3.735/src/ex_getln.c 2012-10-11 04:04:32.000000000 +0200 +--- src/ex_getln.c 2012-11-28 16:42:12.000000000 +0100 +*************** +*** 102,108 **** + static void redrawcmdprompt __ARGS((void)); + static void cursorcmd __ARGS((void)); + static int ccheck_abbr __ARGS((int)); +! static int nextwild __ARGS((expand_T *xp, int type, int options)); + static void escape_fname __ARGS((char_u **pp)); + static int showmatches __ARGS((expand_T *xp, int wildmenu)); + static void set_expand_context __ARGS((expand_T *xp)); +--- 102,108 ---- + static void redrawcmdprompt __ARGS((void)); + static void cursorcmd __ARGS((void)); + static int ccheck_abbr __ARGS((int)); +! static int nextwild __ARGS((expand_T *xp, int type, int options, int escape)); + static void escape_fname __ARGS((char_u **pp)); + static int showmatches __ARGS((expand_T *xp, int wildmenu)); + static void set_expand_context __ARGS((expand_T *xp)); +*************** +*** 810,818 **** + did_wild_list = TRUE; + } + if (wim_flags[wim_index] & WIM_LONGEST) +! res = nextwild(&xpc, WILD_LONGEST, WILD_NO_BEEP); + else if (wim_flags[wim_index] & WIM_FULL) +! res = nextwild(&xpc, WILD_NEXT, WILD_NO_BEEP); + else + res = OK; /* don't insert 'wildchar' now */ + } +--- 810,820 ---- + did_wild_list = TRUE; + } + if (wim_flags[wim_index] & WIM_LONGEST) +! res = nextwild(&xpc, WILD_LONGEST, WILD_NO_BEEP, +! firstc != '@'); + else if (wim_flags[wim_index] & WIM_FULL) +! res = nextwild(&xpc, WILD_NEXT, WILD_NO_BEEP, +! firstc != '@'); + else + res = OK; /* don't insert 'wildchar' now */ + } +*************** +*** 823,831 **** + /* if 'wildmode' first contains "longest", get longest + * common part */ + if (wim_flags[0] & WIM_LONGEST) +! res = nextwild(&xpc, WILD_LONGEST, WILD_NO_BEEP); + else +! res = nextwild(&xpc, WILD_EXPAND_KEEP, WILD_NO_BEEP); + + /* if interrupted while completing, behave like it failed */ + if (got_int) +--- 825,835 ---- + /* if 'wildmode' first contains "longest", get longest + * common part */ + if (wim_flags[0] & WIM_LONGEST) +! res = nextwild(&xpc, WILD_LONGEST, WILD_NO_BEEP, +! firstc != '@'); + else +! res = nextwild(&xpc, WILD_EXPAND_KEEP, WILD_NO_BEEP, +! firstc != '@'); + + /* if interrupted while completing, behave like it failed */ + if (got_int) +*************** +*** 860,866 **** + int p_wmnu_save = p_wmnu; + p_wmnu = 0; + #endif +! nextwild(&xpc, WILD_PREV, 0); /* remove match */ + #ifdef FEAT_WILDMENU + p_wmnu = p_wmnu_save; + #endif +--- 864,871 ---- + int p_wmnu_save = p_wmnu; + p_wmnu = 0; + #endif +! /* remove match */ +! nextwild(&xpc, WILD_PREV, 0, firstc != '@'); + #ifdef FEAT_WILDMENU + p_wmnu = p_wmnu_save; + #endif +*************** +*** 874,882 **** + redrawcmd(); + did_wild_list = TRUE; + if (wim_flags[wim_index] & WIM_LONGEST) +! nextwild(&xpc, WILD_LONGEST, WILD_NO_BEEP); + else if (wim_flags[wim_index] & WIM_FULL) +! nextwild(&xpc, WILD_NEXT, WILD_NO_BEEP); + } + else + vim_beep(); +--- 879,889 ---- + redrawcmd(); + did_wild_list = TRUE; + if (wim_flags[wim_index] & WIM_LONGEST) +! nextwild(&xpc, WILD_LONGEST, WILD_NO_BEEP, +! firstc != '@'); + else if (wim_flags[wim_index] & WIM_FULL) +! nextwild(&xpc, WILD_NEXT, WILD_NO_BEEP, +! firstc != '@'); + } + else + vim_beep(); +*************** +*** 899,907 **** + /* goes to last match, in a clumsy way */ + if (c == K_S_TAB && KeyTyped) + { +! if (nextwild(&xpc, WILD_EXPAND_KEEP, 0) == OK +! && nextwild(&xpc, WILD_PREV, 0) == OK +! && nextwild(&xpc, WILD_PREV, 0) == OK) + goto cmdline_changed; + } + +--- 906,914 ---- + /* goes to last match, in a clumsy way */ + if (c == K_S_TAB && KeyTyped) + { +! if (nextwild(&xpc, WILD_EXPAND_KEEP, 0, firstc != '@') == OK +! && nextwild(&xpc, WILD_PREV, 0, firstc != '@') == OK +! && nextwild(&xpc, WILD_PREV, 0, firstc != '@') == OK) + goto cmdline_changed; + } + +*************** +*** 1418,1424 **** + goto cmdline_not_changed; + + case Ctrl_A: /* all matches */ +! if (nextwild(&xpc, WILD_ALL, 0) == FAIL) + break; + goto cmdline_changed; + +--- 1425,1431 ---- + goto cmdline_not_changed; + + case Ctrl_A: /* all matches */ +! if (nextwild(&xpc, WILD_ALL, 0, firstc != '@') == FAIL) + break; + goto cmdline_changed; + +*************** +*** 1454,1460 **** + #endif + + /* completion: longest common part */ +! if (nextwild(&xpc, WILD_LONGEST, 0) == FAIL) + break; + goto cmdline_changed; + +--- 1461,1467 ---- + #endif + + /* completion: longest common part */ +! if (nextwild(&xpc, WILD_LONGEST, 0, firstc != '@') == FAIL) + break; + goto cmdline_changed; + +*************** +*** 1462,1469 **** + case Ctrl_P: /* previous match */ + if (xpc.xp_numfiles > 0) + { +! if (nextwild(&xpc, (c == Ctrl_P) ? WILD_PREV : WILD_NEXT, 0) +! == FAIL) + break; + goto cmdline_changed; + } +--- 1469,1476 ---- + case Ctrl_P: /* previous match */ + if (xpc.xp_numfiles > 0) + { +! if (nextwild(&xpc, (c == Ctrl_P) ? WILD_PREV : WILD_NEXT, +! 0, firstc != '@') == FAIL) + break; + goto cmdline_changed; + } +*************** +*** 3338,3347 **** + * normal character (instead of being expanded). This allows :s/^I^D etc. + */ + static int +! nextwild(xp, type, options) + expand_T *xp; + int type; + int options; /* extra options for ExpandOne() */ + { + int i, j; + char_u *p1; +--- 3345,3355 ---- + * normal character (instead of being expanded). This allows :s/^I^D etc. + */ + static int +! nextwild(xp, type, options, escape) + expand_T *xp; + int type; + int options; /* extra options for ExpandOne() */ ++ int escape; /* if TRUE, escape the returned matches */ + { + int i, j; + char_u *p1; +*************** +*** 3390,3396 **** + else + { + int use_options = options | +! WILD_HOME_REPLACE|WILD_ADD_SLASH|WILD_SILENT|WILD_ESCAPE; + + if (p_wic) + use_options += WILD_ICASE; +--- 3398,3406 ---- + else + { + int use_options = options | +! WILD_HOME_REPLACE|WILD_ADD_SLASH|WILD_SILENT; +! if (escape) +! use_options |= WILD_ESCAPE; + + if (p_wic) + use_options += WILD_ICASE; +*** ../vim-7.3.735/src/version.c 2012-11-28 16:18:26.000000000 +0100 +--- src/version.c 2012-11-28 16:30:45.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 736, + /**/ + +-- +From "know your smileys": + ;-0 Can't find shift key + ,-9 Kann Umschalttaste nicht finden + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.737 b/7.3.737 new file mode 100644 index 0000000..44aeafa --- /dev/null +++ b/7.3.737 @@ -0,0 +1,49 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.737 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.737 +Problem: When using do_cmdline() recursively did_endif is not reset, + causing messages to be overwritten. +Solution: Reset did_endif. (Christian Brabandt) +Files: src/ex_docmd.c + + +*** ../vim-7.3.736/src/ex_docmd.c 2012-10-03 18:24:55.000000000 +0200 +--- src/ex_docmd.c 2012-11-28 17:25:27.000000000 +0100 +*************** +*** 1536,1541 **** +--- 1536,1543 ---- + if_level = 0; + #endif + ++ did_endif = FALSE; /* in case do_cmdline used recursively */ ++ + --call_depth; + return retval; + } +*** ../vim-7.3.736/src/version.c 2012-11-28 16:49:53.000000000 +0100 +--- src/version.c 2012-11-28 17:33:54.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 737, + /**/ + +-- +From "know your smileys": + :-) Funny + |-) Funny Oriental + (-: Funny Australian + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.738 b/7.3.738 new file mode 100644 index 0000000..59adfc5 --- /dev/null +++ b/7.3.738 @@ -0,0 +1,142 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.738 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.738 (after 7.3.730) +Problem: Unused function argument. +Solution: Remove it. (Christian Brabandt) +Files: src/quickfix.c + + +*** ../vim-7.3.737/src/quickfix.c 2012-11-28 15:25:28.000000000 +0100 +--- src/quickfix.c 2012-11-28 17:36:26.000000000 +0100 +*************** +*** 107,113 **** + }; + + static int qf_init_ext __ARGS((qf_info_T *qi, char_u *efile, buf_T *buf, typval_T *tv, char_u *errorformat, int newlist, linenr_T lnumfirst, linenr_T lnumlast, char_u *qf_title)); +! static void qf_new_list __ARGS((qf_info_T *qi, char_u *qf_title, win_T *wp)); + static void ll_free_all __ARGS((qf_info_T **pqi)); + static int qf_add_entry __ARGS((qf_info_T *qi, qfline_T **prevp, char_u *dir, char_u *fname, int bufnum, char_u *mesg, long lnum, int col, int vis_col, char_u *pattern, int nr, int type, int valid)); + static qf_info_T *ll_new_list __ARGS((void)); +--- 107,113 ---- + }; + + static int qf_init_ext __ARGS((qf_info_T *qi, char_u *efile, buf_T *buf, typval_T *tv, char_u *errorformat, int newlist, linenr_T lnumfirst, linenr_T lnumlast, char_u *qf_title)); +! static void qf_new_list __ARGS((qf_info_T *qi, char_u *qf_title)); + static void ll_free_all __ARGS((qf_info_T **pqi)); + static int qf_add_entry __ARGS((qf_info_T *qi, qfline_T **prevp, char_u *dir, char_u *fname, int bufnum, char_u *mesg, long lnum, int col, int vis_col, char_u *pattern, int nr, int type, int valid)); + static qf_info_T *ll_new_list __ARGS((void)); +*************** +*** 266,272 **** + + if (newlist || qi->qf_curlist == qi->qf_listcount) + /* make place for a new list */ +! qf_new_list(qi, qf_title, curwin); + else if (qi->qf_lists[qi->qf_curlist].qf_count > 0) + /* Adding to existing list, find last entry. */ + for (qfprev = qi->qf_lists[qi->qf_curlist].qf_start; +--- 266,272 ---- + + if (newlist || qi->qf_curlist == qi->qf_listcount) + /* make place for a new list */ +! qf_new_list(qi, qf_title); + else if (qi->qf_lists[qi->qf_curlist].qf_count > 0) + /* Adding to existing list, find last entry. */ + for (qfprev = qi->qf_lists[qi->qf_curlist].qf_start; +*************** +*** 885,894 **** + * Prepare for adding a new quickfix list. + */ + static void +! qf_new_list(qi, qf_title, wp) + qf_info_T *qi; + char_u *qf_title; +- win_T *wp; + { + int i; + +--- 885,893 ---- + * Prepare for adding a new quickfix list. + */ + static void +! qf_new_list(qi, qf_title) + qf_info_T *qi; + char_u *qf_title; + { + int i; + +*************** +*** 3187,3193 **** + eap->cmdidx != CMD_vimgrepadd && eap->cmdidx != CMD_lvimgrepadd) + || qi->qf_curlist == qi->qf_listcount) + /* make place for a new list */ +! qf_new_list(qi, *eap->cmdlinep, curwin); + else if (qi->qf_lists[qi->qf_curlist].qf_count > 0) + /* Adding to existing list, find last entry. */ + for (prevp = qi->qf_lists[qi->qf_curlist].qf_start; +--- 3186,3192 ---- + eap->cmdidx != CMD_vimgrepadd && eap->cmdidx != CMD_lvimgrepadd) + || qi->qf_curlist == qi->qf_listcount) + /* make place for a new list */ +! qf_new_list(qi, *eap->cmdlinep); + else if (qi->qf_lists[qi->qf_curlist].qf_count > 0) + /* Adding to existing list, find last entry. */ + for (prevp = qi->qf_lists[qi->qf_curlist].qf_start; +*************** +*** 3753,3759 **** + + if (action == ' ' || qi->qf_curlist == qi->qf_listcount) + /* make place for a new list */ +! qf_new_list(qi, title, wp); + else if (action == 'a' && qi->qf_lists[qi->qf_curlist].qf_count > 0) + /* Adding to existing list, find last entry. */ + for (prevp = qi->qf_lists[qi->qf_curlist].qf_start; +--- 3752,3758 ---- + + if (action == ' ' || qi->qf_curlist == qi->qf_listcount) + /* make place for a new list */ +! qf_new_list(qi, title); + else if (action == 'a' && qi->qf_lists[qi->qf_curlist].qf_count > 0) + /* Adding to existing list, find last entry. */ + for (prevp = qi->qf_lists[qi->qf_curlist].qf_start; +*************** +*** 4035,4041 **** + #endif + + /* create a new quickfix list */ +! qf_new_list(qi, *eap->cmdlinep, wp); + + /* Go through all directories in 'runtimepath' */ + p = p_rtp; +--- 4034,4040 ---- + #endif + + /* create a new quickfix list */ +! qf_new_list(qi, *eap->cmdlinep); + + /* Go through all directories in 'runtimepath' */ + p = p_rtp; +*** ../vim-7.3.737/src/version.c 2012-11-28 17:34:43.000000000 +0100 +--- src/version.c 2012-11-28 17:37:20.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 738, + /**/ + +-- +From "know your smileys": + :-H Is missing teeth + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.739 b/7.3.739 new file mode 100644 index 0000000..88a81f3 --- /dev/null +++ b/7.3.739 @@ -0,0 +1,86 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.739 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.739 +Problem: Computing number of lines may have an integer overflow. +Solution: Check for MAXCOL explicitly. (Dominique Pelle) +Files: src/move.c + + +*** ../vim-7.3.738/src/move.c 2012-03-28 14:19:46.000000000 +0200 +--- src/move.c 2012-11-28 18:15:42.000000000 +0100 +*************** +*** 2576,2582 **** + else + topline_back(lp); + h2 = lp->height; +! if (h2 + h1 > min_height) + { + *lp = loff0; /* no overlap */ + return; +--- 2576,2582 ---- + else + topline_back(lp); + h2 = lp->height; +! if (h2 == MAXCOL || h2 + h1 > min_height) + { + *lp = loff0; /* no overlap */ + return; +*************** +*** 2588,2594 **** + else + topline_back(lp); + h3 = lp->height; +! if (h3 + h2 > min_height) + { + *lp = loff0; /* no overlap */ + return; +--- 2588,2594 ---- + else + topline_back(lp); + h3 = lp->height; +! if (h3 == MAXCOL || h3 + h2 > min_height) + { + *lp = loff0; /* no overlap */ + return; +*************** +*** 2600,2606 **** + else + topline_back(lp); + h4 = lp->height; +! if (h4 + h3 + h2 > min_height || h3 + h2 + h1 > min_height) + *lp = loff1; /* 1 line overlap */ + else + *lp = loff2; /* 2 lines overlap */ +--- 2600,2606 ---- + else + topline_back(lp); + h4 = lp->height; +! if (h4 == MAXCOL || h4 + h3 + h2 > min_height || h3 + h2 + h1 > min_height) + *lp = loff1; /* 1 line overlap */ + else + *lp = loff2; /* 2 lines overlap */ +*** ../vim-7.3.738/src/version.c 2012-11-28 17:41:55.000000000 +0100 +--- src/version.c 2012-11-28 18:16:40.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 739, + /**/ + +-- +From "know your smileys": + !-| I-am-a-Cylon-Centurian-with-one-red-eye-bouncing-back-and-forth + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.740 b/7.3.740 new file mode 100644 index 0000000..80c7609 --- /dev/null +++ b/7.3.740 @@ -0,0 +1,168 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.740 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.740 +Problem: IOC tool complains about undefined behavior for int. +Solution: Change to unsigned int. (Dominique Pelle) +Files: src/hashtab.c, src/misc2.c + + +*** ../vim-7.3.739/src/hashtab.c 2010-08-15 21:57:25.000000000 +0200 +--- src/hashtab.c 2012-11-28 18:27:46.000000000 +0100 +*************** +*** 138,144 **** + hash_T perturb; + hashitem_T *freeitem; + hashitem_T *hi; +! int idx; + + #ifdef HT_DEBUG + ++hash_count_lookup; +--- 138,144 ---- + hash_T perturb; + hashitem_T *freeitem; + hashitem_T *hi; +! unsigned idx; + + #ifdef HT_DEBUG + ++hash_count_lookup; +*************** +*** 150,156 **** + * - skip over a removed item + * - return if the item matches + */ +! idx = (int)(hash & ht->ht_mask); + hi = &ht->ht_array[idx]; + + if (hi->hi_key == NULL) +--- 150,156 ---- + * - skip over a removed item + * - return if the item matches + */ +! idx = (unsigned)(hash & ht->ht_mask); + hi = &ht->ht_array[idx]; + + if (hi->hi_key == NULL) +*************** +*** 176,182 **** + #ifdef HT_DEBUG + ++hash_count_perturb; /* count a "miss" for hashtab lookup */ + #endif +! idx = (int)((idx << 2) + idx + perturb + 1); + hi = &ht->ht_array[idx & ht->ht_mask]; + if (hi->hi_key == NULL) + return freeitem == NULL ? hi : freeitem; +--- 176,182 ---- + #ifdef HT_DEBUG + ++hash_count_perturb; /* count a "miss" for hashtab lookup */ + #endif +! idx = (unsigned)((idx << 2U) + idx + perturb + 1U); + hi = &ht->ht_array[idx & ht->ht_mask]; + if (hi->hi_key == NULL) + return freeitem == NULL ? hi : freeitem; +*************** +*** 342,348 **** + hashitem_T temparray[HT_INIT_SIZE]; + hashitem_T *oldarray, *newarray; + hashitem_T *olditem, *newitem; +! int newi; + int todo; + long_u oldsize, newsize; + long_u minsize; +--- 342,348 ---- + hashitem_T temparray[HT_INIT_SIZE]; + hashitem_T *oldarray, *newarray; + hashitem_T *olditem, *newitem; +! unsigned newi; + int todo; + long_u oldsize, newsize; + long_u minsize; +*************** +*** 448,460 **** + * the algorithm to find an item in hash_lookup(). But we only + * need to search for a NULL key, thus it's simpler. + */ +! newi = (int)(olditem->hi_hash & newmask); + newitem = &newarray[newi]; + + if (newitem->hi_key != NULL) + for (perturb = olditem->hi_hash; ; perturb >>= PERTURB_SHIFT) + { +! newi = (int)((newi << 2) + newi + perturb + 1); + newitem = &newarray[newi & newmask]; + if (newitem->hi_key == NULL) + break; +--- 448,460 ---- + * the algorithm to find an item in hash_lookup(). But we only + * need to search for a NULL key, thus it's simpler. + */ +! newi = (unsigned)(olditem->hi_hash & newmask); + newitem = &newarray[newi]; + + if (newitem->hi_key != NULL) + for (perturb = olditem->hi_hash; ; perturb >>= PERTURB_SHIFT) + { +! newi = (unsigned)((newi << 2U) + newi + perturb + 1U); + newitem = &newarray[newi & newmask]; + if (newitem->hi_key == NULL) + break; +*** ../vim-7.3.739/src/misc2.c 2012-08-15 16:20:59.000000000 +0200 +--- src/misc2.c 2012-11-28 18:27:46.000000000 +0100 +*************** +*** 3860,3866 **** + ush temp; \ + \ + temp = (ush)keys[2] | 2; \ +! t = (int)(((unsigned)(temp * (temp ^ 1)) >> 8) & 0xff); \ + } + + /* +--- 3860,3866 ---- + ush temp; \ + \ + temp = (ush)keys[2] | 2; \ +! t = (int)(((unsigned)(temp * (temp ^ 1U)) >> 8) & 0xff); \ + } + + /* +*************** +*** 4002,4008 **** + ush temp; + + temp = (ush)keys[2] | 2; +! temp = (int)(((unsigned)(temp * (temp ^ 1)) >> 8) & 0xff); + UPDATE_KEYS_ZIP(*p ^= temp); + } + else +--- 4002,4008 ---- + ush temp; + + temp = (ush)keys[2] | 2; +! temp = (int)(((unsigned)(temp * (temp ^ 1U)) >> 8) & 0xff); + UPDATE_KEYS_ZIP(*p ^= temp); + } + else +*** ../vim-7.3.739/src/version.c 2012-11-28 18:22:04.000000000 +0100 +--- src/version.c 2012-11-28 18:28:00.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 740, + /**/ + +-- +From "know your smileys": + ~#:-( I just washed my hair, and I can't do nuthin' with it. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.741 b/7.3.741 new file mode 100644 index 0000000..d7f5c89 --- /dev/null +++ b/7.3.741 @@ -0,0 +1,56 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.741 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.741 (after 7.3.737) +Problem: Tiny build fails. +Solution: Move #ifdef. (Ike Devolder) +Files: src/ex_docmd.c + + +*** ../vim-7.3.740/src/ex_docmd.c 2012-11-28 17:34:43.000000000 +0100 +--- src/ex_docmd.c 2012-11-28 19:09:39.000000000 +0100 +*************** +*** 1534,1542 **** + * ":endif" (could be ":if x | foo | endif"). + */ + if_level = 0; +- #endif + + did_endif = FALSE; /* in case do_cmdline used recursively */ + + --call_depth; + return retval; +--- 1534,1542 ---- + * ":endif" (could be ":if x | foo | endif"). + */ + if_level = 0; + + did_endif = FALSE; /* in case do_cmdline used recursively */ ++ #endif + + --call_depth; + return retval; +*** ../vim-7.3.740/src/version.c 2012-11-28 18:31:49.000000000 +0100 +--- src/version.c 2012-11-28 19:09:15.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 741, + /**/ + +-- +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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.742 b/7.3.742 new file mode 100644 index 0000000..7bf6963 --- /dev/null +++ b/7.3.742 @@ -0,0 +1,44 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.742 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.742 +Problem: Leaking memory when :vimgrep restores the directory. +Solution: Free the allocated memory. (Christian Brabandt) +Files: src/quickfix.c + + +*** ../vim-7.3.741/src/quickfix.c 2012-11-28 17:41:55.000000000 +0100 +--- src/quickfix.c 2012-11-28 22:09:40.000000000 +0100 +*************** +*** 3515,3520 **** +--- 3515,3521 ---- + ea.cmdidx = (curwin->w_localdir == NULL) ? CMD_cd : CMD_lcd; + ex_cd(&ea); + } ++ vim_free(dirname_now); + } + } + +*** ../vim-7.3.741/src/version.c 2012-11-28 19:10:51.000000000 +0100 +--- src/version.c 2012-11-28 22:11:50.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 742, + /**/ + +-- +How many light bulbs does it take to change a person? + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.743 b/7.3.743 new file mode 100644 index 0000000..f91a656 --- /dev/null +++ b/7.3.743 @@ -0,0 +1,66 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.743 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.743 (after 7.3.741) +Problem: Tiny build still fails. +Solution: Add #else in the right place. +Files: src/ex_docmd.c + + +*** ../vim-7.3.742/src/ex_docmd.c 2012-11-28 19:10:51.000000000 +0100 +--- src/ex_docmd.c 2012-11-28 22:14:21.000000000 +0100 +*************** +*** 1528,1541 **** + } + } + +! #ifndef FEAT_EVAL + /* + * Reset if_level, in case a sourced script file contains more ":if" than + * ":endif" (could be ":if x | foo | endif"). + */ + if_level = 0; +- +- did_endif = FALSE; /* in case do_cmdline used recursively */ + #endif + + --call_depth; +--- 1528,1541 ---- + } + } + +! #ifdef FEAT_EVAL +! did_endif = FALSE; /* in case do_cmdline used recursively */ +! #else + /* + * Reset if_level, in case a sourced script file contains more ":if" than + * ":endif" (could be ":if x | foo | endif"). + */ + if_level = 0; + #endif + + --call_depth; +*** ../vim-7.3.742/src/version.c 2012-11-28 22:12:40.000000000 +0100 +--- src/version.c 2012-11-28 22:15:15.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 743, + /**/ + +-- +From "know your smileys": + :-)-O Smiling doctor with stethoscope + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.744 b/7.3.744 new file mode 100644 index 0000000..518617a --- /dev/null +++ b/7.3.744 @@ -0,0 +1,52 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.744 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.744 +Problem: 64 bit compiler warning. +Solution: Add type cast. (Mike Williams) +Files: src/ex_cmds.c + + +*** ../vim-7.3.743/src/ex_cmds.c 2012-11-28 16:06:13.000000000 +0100 +--- src/ex_cmds.c 2012-11-29 20:08:10.000000000 +0100 +*************** +*** 6460,6466 **** + /* + * Find all *.txt files. + */ +! dirlen = STRLEN(dir); + STRCPY(NameBuff, dir); + STRCAT(NameBuff, "/**/*"); + STRCAT(NameBuff, ext); +--- 6460,6466 ---- + /* + * Find all *.txt files. + */ +! dirlen = (int)STRLEN(dir); + STRCPY(NameBuff, dir); + STRCAT(NameBuff, "/**/*"); + STRCAT(NameBuff, ext); +*** ../vim-7.3.743/src/version.c 2012-11-28 23:03:02.000000000 +0100 +--- src/version.c 2012-11-29 20:08:37.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 744, + /**/ + +-- +From "know your smileys": + *<|:-) Santa Claus (Ho Ho Ho) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.745 b/7.3.745 new file mode 100644 index 0000000..2ef2483 --- /dev/null +++ b/7.3.745 @@ -0,0 +1,87 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.745 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.745 +Problem: Automatically setting 'ttymouse' doesn't work. +Solution: Reset the "option was set" flag when using the default. +Files: src/option.c, src/proto/option.pro, src/term.c + + +*** ../vim-7.3.744/src/option.c 2012-10-21 03:45:57.000000000 +0200 +--- src/option.c 2012-12-03 20:07:32.000000000 +0100 +*************** +*** 11179,11184 **** +--- 11179,11197 ---- + } + + /* ++ * Reset the flag indicating option "name" was set. ++ */ ++ void ++ reset_option_was_set(name) ++ char_u *name; ++ { ++ int idx = findoption(name); ++ ++ if (idx >= 0) ++ options[idx].flags &= ~P_WAS_SET; ++ } ++ ++ /* + * compatible_set() - Called when 'compatible' has been set or unset. + * + * When 'compatible' set: Set all relevant options (those that have the P_VIM) +*** ../vim-7.3.744/src/proto/option.pro 2012-10-21 00:10:29.000000000 +0200 +--- src/proto/option.pro 2012-12-03 20:08:36.000000000 +0100 +*************** +*** 52,57 **** +--- 52,58 ---- + void vimrc_found __ARGS((char_u *fname, char_u *envname)); + void change_compatible __ARGS((int on)); + int option_was_set __ARGS((char_u *name)); ++ void reset_option_was_set __ARGS((char_u *name)); + int can_bs __ARGS((int what)); + void save_file_ff __ARGS((buf_T *buf)); + int file_ff_differs __ARGS((buf_T *buf, int ignore_empty)); +*** ../vim-7.3.744/src/term.c 2012-10-21 02:10:20.000000000 +0200 +--- src/term.c 2012-12-03 20:09:28.000000000 +0100 +*************** +*** 1864,1870 **** +--- 1864,1875 ---- + } + # endif + if (p != NULL) ++ { + set_option_value((char_u *)"ttym", 0L, p, 0); ++ /* Reset the WAS_SET flag, 'ttymouse' can be set to "sgr" or ++ * "xterm2" in check_termcode(). */ ++ reset_option_was_set((char_u *)"ttym"); ++ } + if (p == NULL + # ifdef FEAT_GUI + || gui.in_use +*** ../vim-7.3.744/src/version.c 2012-11-29 20:09:55.000000000 +0100 +--- src/version.c 2012-12-05 14:39:33.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 745, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +97. Your mother tells you to remember something, and you look for + a File/Save command. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.746 b/7.3.746 new file mode 100644 index 0000000..f5b4cfa --- /dev/null +++ b/7.3.746 @@ -0,0 +1,96 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.746 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.746 +Problem: Memory leaks when using location lists. +Solution: Set qf_title to something. (Christian Brabandt) +Files: src/eval.c, src/quickfix.c + + +*** ../vim-7.3.745/src/eval.c 2012-10-21 23:55:59.000000000 +0200 +--- src/eval.c 2012-12-05 14:47:56.000000000 +0100 +*************** +*** 16292,16298 **** + action = *act; + } + +! if (l != NULL && set_errorlist(wp, l, action, NULL) == OK) + rettv->vval.v_number = 0; + } + #endif +--- 16292,16299 ---- + action = *act; + } + +! if (l != NULL && set_errorlist(wp, l, action, +! (char_u *)(wp == NULL ? "setqflist()" : "setloclist()")) == OK) + rettv->vval.v_number = 0; + } + #endif +*** ../vim-7.3.745/src/quickfix.c 2012-11-28 22:12:40.000000000 +0100 +--- src/quickfix.c 2012-12-05 14:51:52.000000000 +0100 +*************** +*** 2124,2138 **** + int idx; + { + qfline_T *qfp; + + while (qi->qf_lists[idx].qf_count) + { + qfp = qi->qf_lists[idx].qf_start->qf_next; +! if (qi->qf_lists[idx].qf_title != NULL) + { + vim_free(qi->qf_lists[idx].qf_start->qf_text); + vim_free(qi->qf_lists[idx].qf_start->qf_pattern); + vim_free(qi->qf_lists[idx].qf_start); + } + qi->qf_lists[idx].qf_start = qfp; + --qi->qf_lists[idx].qf_count; +--- 2124,2145 ---- + int idx; + { + qfline_T *qfp; ++ int stop = FALSE; + + while (qi->qf_lists[idx].qf_count) + { + qfp = qi->qf_lists[idx].qf_start->qf_next; +! if (qi->qf_lists[idx].qf_title != NULL && !stop) + { + vim_free(qi->qf_lists[idx].qf_start->qf_text); ++ stop = (qi->qf_lists[idx].qf_start == qfp); + vim_free(qi->qf_lists[idx].qf_start->qf_pattern); + vim_free(qi->qf_lists[idx].qf_start); ++ if (stop) ++ /* Somehow qf_count may have an incorrect value, set it to 1 ++ * to avoid crashing when it's wrong. ++ * TODO: Avoid qf_count being incorrect. */ ++ qi->qf_lists[idx].qf_count = 1; + } + qi->qf_lists[idx].qf_start = qfp; + --qi->qf_lists[idx].qf_count; +*** ../vim-7.3.745/src/version.c 2012-12-05 14:42:56.000000000 +0100 +--- src/version.c 2012-12-05 15:15:45.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 746, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +98. The Alta Vista administrators ask you what sites are missing + in their index files. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.747 b/7.3.747 new file mode 100644 index 0000000..158c233 --- /dev/null +++ b/7.3.747 @@ -0,0 +1,67 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.747 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.747 +Problem: When characters are concealed text aligned with tabs are no longer + aligned, e.g. at ":help :index". +Solution: Compensate space for tabs for concealed characters. (Dominique + Pelle) +Files: src/screen.c + + +*** ../vim-7.3.746/src/screen.c 2012-10-03 18:24:55.000000000 +0200 +--- src/screen.c 2012-12-05 15:22:03.000000000 +0100 +*************** +*** 4269,4275 **** + { + /* tab amount depends on current column */ + n_extra = (int)wp->w_buffer->b_p_ts +! - VCOL_HLC % (int)wp->w_buffer->b_p_ts - 1; + #ifdef FEAT_MBYTE + mb_utf8 = FALSE; /* don't draw as UTF-8 */ + #endif +--- 4269,4288 ---- + { + /* tab amount depends on current column */ + n_extra = (int)wp->w_buffer->b_p_ts +! - vcol % (int)wp->w_buffer->b_p_ts - 1; +! #ifdef FEAT_CONCEAL +! /* Tab alignment should be identical regardless of +! * 'conceallevel' value. So tab compensates of all +! * previous concealed characters, and thus resets vcol_off +! * and boguscols accumulated so far in the line. Note that +! * the tab can be longer than 'tabstop' when there +! * are concealed characters. */ +! n_extra += vcol_off; +! vcol -= vcol_off; +! vcol_off = 0; +! col -= boguscols; +! boguscols = 0; +! #endif + #ifdef FEAT_MBYTE + mb_utf8 = FALSE; /* don't draw as UTF-8 */ + #endif +*** ../vim-7.3.746/src/version.c 2012-12-05 15:16:42.000000000 +0100 +--- src/version.c 2012-12-05 15:22:27.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 747, + /**/ + +-- +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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.748 b/7.3.748 new file mode 100644 index 0000000..3148bd5 --- /dev/null +++ b/7.3.748 @@ -0,0 +1,473 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.748 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.748 +Problem: Cannot properly test conceal mode. +Solution: Add the screencol() and screenrow() functions. Use them in + test88. (Simon Ruderich) +Files: runtime/doc/eval.txt, src/eval.c, src/proto/screen.pro, + src/screen.c, src/testdir/Make_amiga.mak, + src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + src/testdir/Make_os2.mak, src/testdir/Make_vms.mms + src/testdir/Makefile, src/testdir/test88.in, + src/testdir/test88.ok + + +*** ../vim-7.3.747/runtime/doc/eval.txt 2012-11-14 18:10:49.000000000 +0100 +--- runtime/doc/eval.txt 2012-12-05 15:45:34.000000000 +0100 +*************** +*** 1892,1897 **** +--- 1903,1910 ---- + resolve( {filename}) String get filename a shortcut points to + reverse( {list}) List reverse {list} in-place + round( {expr}) Float round off {expr} ++ screencol() Number current cursor column ++ screenrow() Number current cursor row + search( {pattern} [, {flags} [, {stopline} [, {timeout}]]]) + Number search for {pattern} + searchdecl( {name} [, {global} [, {thisblock}]]) +*************** +*** 4848,4862 **** + echo round(-4.5) + < -5.0 + {only available when compiled with the |+float| feature} +! +! + 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). + + If there is no match a 0 is returned and the cursor doesn't + move. No error message is given. +- When a match has been found its line number is returned. + + {flags} is a String, which can contain these character flags: + 'b' search backward instead of forward +--- 4874,4907 ---- + echo round(-4.5) + < -5.0 + {only available when compiled with the |+float| feature} +! +! screencol() *screencol()* +! The result is a Number, which is the current screen column of +! the cursor. The leftmost column has number 1. +! This function is mainly used for testing. +! +! Note: Always returns the current screen column, thus if used +! in a command (e.g. ":echo screencol()") it will return the +! column inside the command line, which is 1 when the command is +! executed. To get the cursor position in the file use one of +! the following mappings: > +! nnoremap GG ":echom ".screencol()."\n" +! nnoremap GG :echom screencol() +! < +! screenrow() *screenrow()* +! The result is a Number, which is the current screen row of the +! cursor. The top line has number one. +! This function is mainly used for testing. +! +! Note: Same restrictions as with |screencol()|. +! + 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). + ++ When a match has been found its line number is returned. + If there is no match a 0 is returned and the cursor doesn't + move. No error message is given. + + {flags} is a String, which can contain these character flags: + 'b' search backward instead of forward +*** ../vim-7.3.747/src/eval.c 2012-12-05 15:16:42.000000000 +0100 +--- src/eval.c 2012-12-05 16:03:23.000000000 +0100 +*************** +*** 668,673 **** +--- 668,675 ---- + #ifdef FEAT_FLOAT + static void f_round __ARGS((typval_T *argvars, typval_T *rettv)); + #endif ++ static void f_screencol __ARGS((typval_T *argvars, typval_T *rettv)); ++ static void f_screenrow __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_search __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_searchdecl __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_searchpair __ARGS((typval_T *argvars, typval_T *rettv)); +*************** +*** 8033,8038 **** +--- 8035,8042 ---- + #ifdef FEAT_FLOAT + {"round", 1, 1, f_round}, + #endif ++ {"screencol", 0, 0, f_screencol}, ++ {"screenrow", 0, 0, f_screenrow}, + {"search", 1, 4, f_search}, + {"searchdecl", 1, 3, f_searchdecl}, + {"searchpair", 3, 7, f_searchpair}, +*************** +*** 15725,15730 **** +--- 15729,15758 ---- + #endif + + /* ++ * "screencol()" function ++ * ++ * First column is 1 to be consistent with virtcol(). ++ */ ++ static void ++ f_screencol(argvars, rettv) ++ typval_T *argvars UNUSED; ++ typval_T *rettv; ++ { ++ rettv->vval.v_number = screen_screencol() + 1; ++ } ++ ++ /* ++ * "screenrow()" function ++ */ ++ static void ++ f_screenrow(argvars, rettv) ++ typval_T *argvars UNUSED; ++ typval_T *rettv; ++ { ++ rettv->vval.v_number = screen_screenrow() + 1; ++ } ++ ++ /* + * "search()" function + */ + static void +*** ../vim-7.3.747/src/proto/screen.pro 2012-11-20 16:56:49.000000000 +0100 +--- src/proto/screen.pro 2012-12-05 15:57:35.000000000 +0100 +*************** +*** 50,53 **** +--- 50,55 ---- + int messaging __ARGS((void)); + void showruler __ARGS((int always)); + int number_width __ARGS((win_T *wp)); ++ int screen_screencol __ARGS((void)); ++ int screen_screenrow __ARGS((void)); + /* vim: set ft=c : */ +*** ../vim-7.3.747/src/screen.c 2012-12-05 15:32:24.000000000 +0100 +--- src/screen.c 2012-12-05 15:58:02.000000000 +0100 +*************** +*** 10264,10266 **** +--- 10264,10286 ---- + return n; + } + #endif ++ ++ /* ++ * Return the current cursor column. This is the actual position on the ++ * screen. First column is 0. ++ */ ++ int ++ screen_screencol() ++ { ++ return screen_cur_col; ++ } ++ ++ /* ++ * Return the current cursor row. This is the actual position on the screen. ++ * First row is 0. ++ */ ++ int ++ screen_screenrow() ++ { ++ return screen_cur_row; ++ } +*** ../vim-7.3.747/src/testdir/Make_amiga.mak 2012-06-29 12:54:32.000000000 +0200 +--- src/testdir/Make_amiga.mak 2012-12-05 16:00:14.000000000 +0100 +*************** +*** 31,37 **** + test66.out test67.out test68.out test69.out test70.out \ + test71.out test72.out test73.out test74.out test75.out \ + test76.out test77.out test78.out test79.out test80.out \ +! test81.out test82.out test83.out test84.out + + .SUFFIXES: .in .out + +--- 31,37 ---- + test66.out test67.out test68.out test69.out test70.out \ + test71.out test72.out test73.out test74.out test75.out \ + test76.out test77.out test78.out test79.out test80.out \ +! test81.out test82.out test83.out test84.out test88.out + + .SUFFIXES: .in .out + +*************** +*** 135,137 **** +--- 135,138 ---- + test82.out: test82.in + test83.out: test83.in + test84.out: test84.in ++ test88.out: test88.in +*** ../vim-7.3.747/src/testdir/Make_dos.mak 2012-10-06 19:10:29.000000000 +0200 +--- src/testdir/Make_dos.mak 2012-12-05 16:00:29.000000000 +0100 +*************** +*** 30,36 **** + test68.out test69.out test71.out test72.out test73.out \ + test74.out test75.out test76.out test77.out test78.out \ + test79.out test80.out test81.out test82.out test83.out \ +! test84.out test85.out test86.out test87.out + + SCRIPTS32 = test50.out test70.out + +--- 30,36 ---- + test68.out test69.out test71.out test72.out test73.out \ + test74.out test75.out test76.out test77.out test78.out \ + test79.out test80.out test81.out test82.out test83.out \ +! test84.out test85.out test86.out test87.out test88.out + + SCRIPTS32 = test50.out test70.out + +*** ../vim-7.3.747/src/testdir/Make_ming.mak 2012-10-06 19:10:29.000000000 +0200 +--- src/testdir/Make_ming.mak 2012-12-05 16:00:40.000000000 +0100 +*************** +*** 50,56 **** + test68.out test69.out test71.out test72.out test73.out \ + test74.out test75.out test76.out test77.out test78.out \ + test79.out test80.out test81.out test82.out test83.out \ +! test84.out test85.out test86.out test87.out + + SCRIPTS32 = test50.out test70.out + +--- 50,56 ---- + test68.out test69.out test71.out test72.out test73.out \ + test74.out test75.out test76.out test77.out test78.out \ + test79.out test80.out test81.out test82.out test83.out \ +! test84.out test85.out test86.out test87.out test88.out + + SCRIPTS32 = test50.out test70.out + +*** ../vim-7.3.747/src/testdir/Make_os2.mak 2012-06-29 12:54:32.000000000 +0200 +--- src/testdir/Make_os2.mak 2012-12-05 16:00:50.000000000 +0100 +*************** +*** 31,37 **** + test66.out test67.out test68.out test69.out test70.out \ + test71.out test72.out test73.out test74.out test75.out \ + test76.out test77.out test78.out test79.out test80.out \ +! test81.out test82.out test83.out test84.out + + .SUFFIXES: .in .out + +--- 31,37 ---- + test66.out test67.out test68.out test69.out test70.out \ + test71.out test72.out test73.out test74.out test75.out \ + test76.out test77.out test78.out test79.out test80.out \ +! test81.out test82.out test83.out test84.out test88.out + + .SUFFIXES: .in .out + +*** ../vim-7.3.747/src/testdir/Make_vms.mms 2012-10-06 19:10:29.000000000 +0200 +--- src/testdir/Make_vms.mms 2012-12-05 16:01:03.000000000 +0100 +*************** +*** 4,10 **** + # Authors: Zoltan Arpadffy, + # Sandor Kopanyi, + # +! # Last change: 2012 Oct 06 + # + # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. + # Edit the lines in the Configuration section below to select. +--- 4,10 ---- + # Authors: Zoltan Arpadffy, + # Sandor Kopanyi, + # +! # Last change: 2012 Dec 05 + # + # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. + # Edit the lines in the Configuration section below to select. +*************** +*** 76,82 **** + test66.out test67.out test68.out test69.out \ + test71.out test72.out test74.out test75.out test76.out \ + test77.out test78.out test79.out test80.out test81.out \ +! test82.out test83.out test84.out + + # Known problems: + # Test 30: a problem around mac format - unknown reason +--- 76,82 ---- + test66.out test67.out test68.out test69.out \ + test71.out test72.out test74.out test75.out test76.out \ + test77.out test78.out test79.out test80.out test81.out \ +! test82.out test83.out test84.out test88.out + + # Known problems: + # Test 30: a problem around mac format - unknown reason +*** ../vim-7.3.747/src/testdir/Makefile 2012-10-06 19:10:29.000000000 +0200 +--- src/testdir/Makefile 2012-12-05 15:59:02.000000000 +0100 +*************** +*** 13,19 **** + + 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 \ + test18.out test19.out test20.out test21.out test22.out \ + test23.out test24.out test25.out test26.out test27.out \ + test28.out test29.out test30.out test31.out test32.out \ +--- 13,19 ---- + + 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 \ + test18.out test19.out test20.out test21.out test22.out \ + test23.out test24.out test25.out test26.out test27.out \ + test28.out test29.out test30.out test31.out test32.out \ +*************** +*** 27,33 **** + test69.out test70.out test71.out test72.out test73.out \ + test74.out test75.out test76.out test77.out test78.out \ + test79.out test80.out test81.out test82.out test83.out \ +! test84.out test85.out test86.out test87.out + + SCRIPTS_GUI = test16.out + +--- 27,33 ---- + test69.out test70.out test71.out test72.out test73.out \ + test74.out test75.out test76.out test77.out test78.out \ + test79.out test80.out test81.out test82.out test83.out \ +! test84.out test85.out test86.out test87.out test88.out + + SCRIPTS_GUI = test16.out + +*** ../vim-7.3.747/src/testdir/test88.in 2012-12-05 16:08:56.000000000 +0100 +--- src/testdir/test88.in 2012-12-05 15:40:05.000000000 +0100 +*************** +*** 0 **** +--- 1,85 ---- ++ vim: set ft=vim ++ ++ Tests for correct display (cursor column position) with +conceal and ++ tabulators. ++ ++ STARTTEST ++ :so small.vim ++ :if !has('conceal') ++ e! test.ok ++ wq! test.out ++ :endif ++ :" Conceal settings. ++ :set conceallevel=2 ++ :set concealcursor=nc ++ :syntax match test /|/ conceal ++ :" Save current cursor position. Only works in mode, can't be used ++ :" with :normal because it moves the cursor to the command line. Thanks to ZyX ++ :" for the idea to use an mapping. ++ :let positions = [] ++ :nnoremap GG ":let positions += ['".screenrow().":".screencol()."']\n" ++ :" Start test. ++ /^start: ++ :normal ztj ++ GGk ++ :" We should end up in the same column when running these commands on the two ++ :" lines. ++ :normal ft ++ GGk ++ :normal $ ++ GGk ++ :normal 0j ++ GGk ++ :normal ft ++ GGk ++ :normal $ ++ GGk ++ :normal 0j0j ++ GGk ++ :" Same for next test block. ++ :normal ft ++ GGk ++ :normal $ ++ GGk ++ :normal 0j ++ GGk ++ :normal ft ++ GGk ++ :normal $ ++ GGk ++ :normal 0j0j ++ GGk ++ :" And check W with multiple tabs and conceals in a line. ++ :normal W ++ GGk ++ :normal W ++ GGk ++ :normal W ++ GGk ++ :normal $ ++ GGk ++ :normal 0j ++ GGk ++ :normal W ++ GGk ++ :normal W ++ GGk ++ :normal W ++ GGk ++ :normal $ ++ GGk ++ :" Display result. ++ :call append('$', 'end:') ++ :call append('$', positions) ++ :/^end/,$wq! test.out ++ ENDTEST ++ ++ start: ++ .concealed. text ++ |concealed| text ++ ++ .concealed. text ++ |concealed| text ++ ++ .a. .b. .c. .d. ++ |a| |b| |c| |d| +*** ../vim-7.3.747/src/testdir/test88.ok 2012-12-05 16:08:56.000000000 +0100 +--- src/testdir/test88.ok 2012-12-05 15:40:05.000000000 +0100 +*************** +*** 0 **** +--- 1,23 ---- ++ end: ++ 2:1 ++ 2:17 ++ 2:20 ++ 3:1 ++ 3:17 ++ 3:20 ++ 5:8 ++ 5:25 ++ 5:28 ++ 6:8 ++ 6:25 ++ 6:28 ++ 8:1 ++ 8:9 ++ 8:17 ++ 8:25 ++ 8:27 ++ 9:1 ++ 9:9 ++ 9:17 ++ 9:25 ++ 9:26 +*** ../vim-7.3.747/src/version.c 2012-12-05 15:32:24.000000000 +0100 +--- src/version.c 2012-12-05 16:07:46.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 748, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +101. U can read htis w/o ny porblm and cant figur eout Y its evn listd. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.749 b/7.3.749 new file mode 100644 index 0000000..6903083 --- /dev/null +++ b/7.3.749 @@ -0,0 +1,59 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.749 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.749 +Problem: Python interface doesn't build without the multi-byte feature. +Solution: Add #ifdef. (Ken Takata) +Files: src/if_py_both.h + + +*** ../vim-7.3.748/src/if_py_both.h 2012-10-05 21:30:04.000000000 +0200 +--- src/if_py_both.h 2012-12-05 16:27:20.000000000 +0100 +*************** +*** 520,526 **** + if (!PyArg_ParseTuple(args, "s", &expr)) + return NULL; + +! return PyLong_FromLong(mb_string2cells((char_u *)expr, (int)STRLEN(expr))); + } + + /* +--- 520,532 ---- + if (!PyArg_ParseTuple(args, "s", &expr)) + return NULL; + +! return PyLong_FromLong( +! #ifdef FEAT_MBYTE +! mb_string2cells((char_u *)expr, (int)STRLEN(expr)) +! #else +! STRLEN(expr) +! #endif +! ); + } + + /* +*** ../vim-7.3.748/src/version.c 2012-12-05 16:10:21.000000000 +0100 +--- src/version.c 2012-12-05 16:29:27.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 749, + /**/ + +-- +Contrary to popular belief, Unix is user friendly. +It just happens to be selective about who it makes friends with. + -- Dave Parnas + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.750 b/7.3.750 new file mode 100644 index 0000000..d6d70fe --- /dev/null +++ b/7.3.750 @@ -0,0 +1,83 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.750 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.750 +Problem: The justify macro does not always work correctly. +Solution: Fix off-by-one error (James McCoy) +Files: runtime/macros/justify.vim + + +*** ../vim-7.3.749/runtime/macros/justify.vim 2010-08-15 21:57:19.000000000 +0200 +--- runtime/macros/justify.vim 2012-12-05 16:58:40.000000000 +0100 +*************** +*** 1,4 **** +! " Function to left and rigt align text. + " + " Written by: Preben "Peppe" Guldberg + " Created: 980806 14:13 (or around that time anyway) +--- 1,4 ---- +! " Function to left and right align text. + " + " Written by: Preben "Peppe" Guldberg + " Created: 980806 14:13 (or around that time anyway) +*************** +*** 256,273 **** + let str = substitute(str, '\s\+$', '', '') + let str = substitute(str, '^\s\+', '', '') + let str = substitute(str, '\s\+', ' ', 'g') +! " Use substitute() hack to get strlen in characters instead of bytes +! let str_n = strlen(substitute(str, '.', 'x', 'g')) + + " Possible addition of space after punctuation + if exists("join_str") + let str = substitute(str, join_str, '\1 ', 'g') + endif +! let join_n = strlen(substitute(str, '.', 'x', 'g')) - str_n + + " Can extraspaces be added? + " Note that str_n may be less than strlen(str) [joinspaces above] +! if strlen(substitute(str, '.', 'x', 'g')) < tw - indent_n && str_n > 0 + " How many spaces should be added + let s_add = tw - str_n - indent_n - join_n + let s_nr = strlen(substitute(str, '\S', '', 'g') ) - join_n +--- 256,272 ---- + let str = substitute(str, '\s\+$', '', '') + let str = substitute(str, '^\s\+', '', '') + let str = substitute(str, '\s\+', ' ', 'g') +! let str_n = strdisplaywidth(str) + + " Possible addition of space after punctuation + if exists("join_str") + let str = substitute(str, join_str, '\1 ', 'g') + endif +! let join_n = strdisplaywidth(str) - str_n + + " Can extraspaces be added? + " Note that str_n may be less than strlen(str) [joinspaces above] +! if strdisplaywidth(str) <= tw - indent_n && str_n > 0 + " How many spaces should be added + let s_add = tw - str_n - indent_n - join_n + let s_nr = strlen(substitute(str, '\S', '', 'g') ) - join_n +*** ../vim-7.3.749/src/version.c 2012-12-05 16:30:03.000000000 +0100 +--- src/version.c 2012-12-05 17:01:02.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 750, + /**/ + +-- +To be rich is not the end, but only a change of worries. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.751 b/7.3.751 new file mode 100644 index 0000000..d990a2f --- /dev/null +++ b/7.3.751 @@ -0,0 +1,103 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.751 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.751 +Problem: Test 61 is flaky, it fails once in a while. +Solution: When it fails retry once. +Files: src/testdir/Makefile + + +*** ../vim-7.3.750/src/testdir/Makefile 2012-12-05 16:10:21.000000000 +0100 +--- src/testdir/Makefile 2012-12-05 18:17:03.000000000 +0100 +*************** +*** 47,58 **** + + $(SCRIPTS) $(SCRIPTS_GUI): $(VIMPROG) + + clean: +! -rm -rf *.out *.failed *.rej *.orig test.log tiny.vim small.vim mbyte.vim mzscheme.vim lua.vim test.ok X* valgrind.* viminfo + + test1.out: test1.in +! -rm -f $*.failed tiny.vim small.vim mbyte.vim mzscheme.vim lua.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; \ +--- 47,62 ---- + + $(SCRIPTS) $(SCRIPTS_GUI): $(VIMPROG) + ++ RM_ON_RUN = test.out X* viminfo ++ RM_ON_START = tiny.vim small.vim mbyte.vim mzscheme.vim lua.vim test.ok ++ RUN_VIM = $(VALGRIND) $(VIMPROG) -u unix.vim -U NONE --noplugin -s dotest.in ++ + clean: +! -rm -rf *.out *.failed *.rej *.orig test.log $(RM_ON_RUN) $(RM_ON_START) valgrind.* + + test1.out: test1.in +! -rm -rf $*.failed $(RM_ON_RUN) $(RM_ON_START) +! $(RUN_VIM) $*.in + @/bin/sh -c "if diff test.out $*.ok; \ + then mv -f test.out $*.out; \ + else echo; \ +*************** +*** 61,71 **** + -rm -rf X* viminfo + + .in.out: +! -rm -rf $*.failed test.ok test.out X* viminfo + 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; \ +--- 65,86 ---- + -rm -rf X* viminfo + + .in.out: +! -rm -rf $*.failed test.ok $(RM_ON_RUN) + cp $*.ok test.ok + # Sleep a moment to avoid that the xterm title is messed up + @-sleep .2 +! -$(RUN_VIM) $*.in +! +! # For flaky tests retry one time. +! @/bin/sh -c "if test -f test.out -a $* = test61; then \ +! if diff test.out $*.ok; \ +! then echo flaky test ok first time; \ +! else rm -rf $*.failed $(RM_ON_RUN); \ +! $(RUN_VIM) $*.in; \ +! fi \ +! fi" +! +! # Check if the test.out file matches test.ok. + @/bin/sh -c "if test -f test.out; then\ + if diff test.out $*.ok; \ + then mv -f test.out $*.out; \ +*** ../vim-7.3.750/src/version.c 2012-12-05 17:03:17.000000000 +0100 +--- src/version.c 2012-12-05 18:10:49.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 751, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +103. When you find yourself in the "Computer" section of Barnes & Noble + enjoying yourself. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.752 b/7.3.752 new file mode 100644 index 0000000..f9cd46b --- /dev/null +++ b/7.3.752 @@ -0,0 +1,68 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.752 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.752 +Problem: Test 49 script file doesn't fold properly. +Solution: Add a colon. +Files: src/testdir/test49.vim + + +*** ../vim-7.3.751/src/testdir/test49.vim 2012-11-14 22:38:04.000000000 +0100 +--- src/testdir/test49.vim 2012-11-23 22:08:37.000000000 +0100 +*************** +*** 1,6 **** + " Vim script language tests + " Author: Servatius Brandt +! " Last Change: 2010 Sep 29 + + "------------------------------------------------------------------------------- + " Test environment {{{1 +--- 1,6 ---- + " Vim script language tests + " Author: Servatius Brandt +! " Last Change: 2012 Nov 23 + + "------------------------------------------------------------------------------- + " Test environment {{{1 +*************** +*** 9604,9610 **** + Xcheck 198689 + + "------------------------------------------------------------------------------- +! " Test 86 setloclist crash {{{1 + " + " Executing a setloclist() on BufUnload shouldn't crash Vim + "------------------------------------------------------------------------------- +--- 9604,9610 ---- + Xcheck 198689 + + "------------------------------------------------------------------------------- +! " Test 86: setloclist crash {{{1 + " + " Executing a setloclist() on BufUnload shouldn't crash Vim + "------------------------------------------------------------------------------- +*** ../vim-7.3.751/src/version.c 2012-12-05 18:21:28.000000000 +0100 +--- src/version.c 2012-12-05 18:59:50.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 752, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +106. When told to "go to your room" you inform your parents that you + can't...because you were kicked out and banned. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.753 b/7.3.753 new file mode 100644 index 0000000..f6ae230 --- /dev/null +++ b/7.3.753 @@ -0,0 +1,103 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.753 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.753 +Problem: When there is a QuitPre autocommand using ":q" twice does not work + for exiting when there are more files to edit. +Solution: Do not decrement quitmore in an autocommand. (Techlive Zheng) +Files: src/ex_docmd.c, src/fileio.c, src/proto/fileio.pro + + +*** ../vim-7.3.752/src/ex_docmd.c 2012-11-28 23:03:02.000000000 +0100 +--- src/ex_docmd.c 2012-12-05 19:07:01.000000000 +0100 +*************** +*** 1729,1739 **** + ++ex_nesting_level; + #endif + +! /* when not editing the last file :q has to be typed twice */ + if (quitmore + #ifdef FEAT_EVAL + /* avoid that a function call in 'statusline' does this */ + && !getline_equal(fgetline, cookie, get_func_line) + #endif + ) + --quitmore; +--- 1729,1741 ---- + ++ex_nesting_level; + #endif + +! /* When the last file has not been edited :q has to be typed twice. */ + if (quitmore + #ifdef FEAT_EVAL + /* avoid that a function call in 'statusline' does this */ + && !getline_equal(fgetline, cookie, get_func_line) ++ /* avoid that an autocommand, e.g. QuitPre, does this */ ++ && !getline_equal(fgetline, cookie, getnextac) + #endif + ) + --quitmore; +*** ../vim-7.3.752/src/fileio.c 2012-08-29 18:50:50.000000000 +0200 +--- src/fileio.c 2012-12-05 19:08:17.000000000 +0100 +*************** +*** 7774,7780 **** + static int event_ignored __ARGS((event_T event)); + static int au_get_grouparg __ARGS((char_u **argp)); + static int do_autocmd_event __ARGS((event_T event, char_u *pat, int nested, char_u *cmd, int forceit, int group)); +- static char_u *getnextac __ARGS((int c, void *cookie, int indent)); + static int apply_autocmds_group __ARGS((event_T event, char_u *fname, char_u *fname_io, int force, int group, buf_T *buf, exarg_T *eap)); + static void auto_next_pat __ARGS((AutoPatCmd *apc, int stop_at_last)); + +--- 7774,7779 ---- +*************** +*** 9613,9619 **** + * Called by do_cmdline() to get the next line for ":if". + * Returns allocated string, or NULL for end of autocommands. + */ +! static char_u * + getnextac(c, cookie, indent) + int c UNUSED; + void *cookie; +--- 9612,9618 ---- + * Called by do_cmdline() to get the next line for ":if". + * Returns allocated string, or NULL for end of autocommands. + */ +! char_u * + getnextac(c, cookie, indent) + int c UNUSED; + void *cookie; +*** ../vim-7.3.752/src/proto/fileio.pro 2012-02-29 18:22:03.000000000 +0100 +--- src/proto/fileio.pro 2012-12-05 19:08:24.000000000 +0100 +*************** +*** 47,52 **** +--- 47,53 ---- + int has_insertcharpre __ARGS((void)); + void block_autocmds __ARGS((void)); + void unblock_autocmds __ARGS((void)); ++ char_u *getnextac __ARGS((int c, void *cookie, int indent)); + 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.3.752/src/version.c 2012-12-05 19:00:03.000000000 +0100 +--- src/version.c 2012-12-05 19:08:34.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 753, + /**/ + +-- +Laughing helps. It's like jogging on the inside. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.754 b/7.3.754 new file mode 100644 index 0000000..7584429 --- /dev/null +++ b/7.3.754 @@ -0,0 +1,48 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.754 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.754 +Problem: Latest nmake is not recognized. +Solution: Add nmake version 11.00.51106.1. (Raymond Ko) +Files: src/Make_mvc.mak + + +*** ../vim-7.3.753/src/Make_mvc.mak 2012-10-23 05:35:30.000000000 +0200 +--- src/Make_mvc.mak 2012-12-06 21:27:56.000000000 +0100 +*************** +*** 413,418 **** +--- 413,421 ---- + !if "$(_NMAKE_VER)" == "11.00.50727.1" + MSVCVER = 11.0 + !endif ++ !if "$(_NMAKE_VER)" == "11.00.51106.1" ++ MSVCVER = 11.0 ++ !endif + !endif + + # Abort bulding VIM if version of VC is unrecognised. +*** ../vim-7.3.753/src/version.c 2012-12-05 19:13:11.000000000 +0100 +--- src/version.c 2012-12-06 21:29:12.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 754, + /**/ + +-- +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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.755 b/7.3.755 new file mode 100644 index 0000000..89e424d --- /dev/null +++ b/7.3.755 @@ -0,0 +1,137 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.755 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.755 +Problem: Autoconf doesn't find Python 3 if it's called "python". +Solution: Search for "python2" and "python3" first, then "python". +Files: src/configure.in, src/auto/configure + + +*** ../vim-7.3.754/src/configure.in 2012-11-23 21:54:43.000000000 +0100 +--- src/configure.in 2012-12-09 15:41:59.000000000 +0100 +*************** +*** 838,844 **** + AC_MSG_RESULT($enable_pythoninterp) + if test "$enable_pythoninterp" = "yes" -o "$enable_pythoninterp" = "dynamic"; then + dnl -- find the python executable +! AC_PATH_PROG(vi_cv_path_python, python) + if test "X$vi_cv_path_python" != "X"; then + + dnl -- get its version number +--- 838,844 ---- + AC_MSG_RESULT($enable_pythoninterp) + if test "$enable_pythoninterp" = "yes" -o "$enable_pythoninterp" = "dynamic"; then + dnl -- find the python executable +! AC_PATH_PROGS(vi_cv_path_python, python2 python) + if test "X$vi_cv_path_python" != "X"; then + + dnl -- get its version number +*************** +*** 1028,1034 **** + AC_MSG_RESULT($enable_python3interp) + if test "$enable_python3interp" = "yes" -o "$enable_python3interp" = "dynamic"; then + dnl -- find the python3 executable +! AC_PATH_PROG(vi_cv_path_python3, python3) + if test "X$vi_cv_path_python3" != "X"; then + + dnl -- get its version number +--- 1028,1034 ---- + AC_MSG_RESULT($enable_python3interp) + if test "$enable_python3interp" = "yes" -o "$enable_python3interp" = "dynamic"; then + dnl -- find the python3 executable +! AC_PATH_PROGS(vi_cv_path_python3, python3 python) + if test "X$vi_cv_path_python3" != "X"; then + + dnl -- get its version number +*** ../vim-7.3.754/src/auto/configure 2012-11-23 21:54:43.000000000 +0100 +--- src/auto/configure 2012-12-12 14:23:46.000000000 +0100 +*************** +*** 5214,5221 **** + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_pythoninterp" >&5 + $as_echo "$enable_pythoninterp" >&6; } + if test "$enable_pythoninterp" = "yes" -o "$enable_pythoninterp" = "dynamic"; then +! # Extract the first word of "python", so it can be a program name with args. +! set dummy python; ac_word=$2 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } + if test "${ac_cv_path_vi_cv_path_python+set}" = set; then : +--- 5214,5223 ---- + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_pythoninterp" >&5 + $as_echo "$enable_pythoninterp" >&6; } + if test "$enable_pythoninterp" = "yes" -o "$enable_pythoninterp" = "dynamic"; then +! for ac_prog in python2 python +! do +! # Extract the first word of "$ac_prog", so it can be a program name with args. +! set dummy $ac_prog; ac_word=$2 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } + if test "${ac_cv_path_vi_cv_path_python+set}" = set; then : +*************** +*** 5254,5259 **** +--- 5256,5264 ---- + fi + + ++ test -n "$vi_cv_path_python" && break ++ done ++ + if test "X$vi_cv_path_python" != "X"; then + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking Python version" >&5 +*************** +*** 5509,5516 **** + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_python3interp" >&5 + $as_echo "$enable_python3interp" >&6; } + if test "$enable_python3interp" = "yes" -o "$enable_python3interp" = "dynamic"; then +! # Extract the first word of "python3", so it can be a program name with args. +! set dummy python3; ac_word=$2 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } + if test "${ac_cv_path_vi_cv_path_python3+set}" = set; then : +--- 5514,5523 ---- + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_python3interp" >&5 + $as_echo "$enable_python3interp" >&6; } + if test "$enable_python3interp" = "yes" -o "$enable_python3interp" = "dynamic"; then +! for ac_prog in python3 python +! do +! # Extract the first word of "$ac_prog", so it can be a program name with args. +! set dummy $ac_prog; ac_word=$2 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } + if test "${ac_cv_path_vi_cv_path_python3+set}" = set; then : +*************** +*** 5549,5554 **** +--- 5556,5564 ---- + fi + + ++ test -n "$vi_cv_path_python3" && break ++ done ++ + if test "X$vi_cv_path_python3" != "X"; then + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking Python version" >&5 +*** ../vim-7.3.754/src/version.c 2012-12-06 21:30:24.000000000 +0100 +--- src/version.c 2012-12-12 14:23:14.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 755, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +145. You e-mail your boss, informing him you'll be late. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.756 b/7.3.756 new file mode 100644 index 0000000..95d862e --- /dev/null +++ b/7.3.756 @@ -0,0 +1,107 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.756 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.756 +Problem: A location list can get a wrong count in :lvimgrep. +Solution: Check if the list was changed by autocommands. (mostly by + Christian Brabandt) +Files: src/quickfic.c + + +*** ../vim-7.3.755/src/quickfix.c 2012-12-05 15:16:42.000000000 +0100 +--- src/quickfix.c 2012-12-12 15:50:08.000000000 +0100 +*************** +*** 3109,3114 **** +--- 3109,3117 ---- + char_u *p; + int fi; + qf_info_T *qi = &ql_info; ++ #ifdef FEAT_AUTOCMD ++ qfline_T *cur_qf_start; ++ #endif + qfline_T *prevp = NULL; + long lnum; + buf_T *buf; +*************** +*** 3218,3223 **** +--- 3221,3232 ---- + * ":lcd %:p:h" changes the meaning of short path names. */ + mch_dirname(dirname_start, MAXPATHL); + ++ #ifdef FEAT_AUTOCMD ++ /* Remeber the value of qf_start, so that we can check for autocommands ++ * changing the current quickfix list. */ ++ cur_qf_start = qi->qf_lists[qi->qf_curlist].qf_start; ++ #endif ++ + seconds = (time_t)0; + for (fi = 0; fi < fcount && !got_int && tomatch > 0; ++fi) + { +*************** +*** 3273,3278 **** +--- 3282,3309 ---- + /* Use existing, loaded buffer. */ + using_dummy = FALSE; + ++ #ifdef FEAT_AUTOCMD ++ if (cur_qf_start != qi->qf_lists[qi->qf_curlist].qf_start) ++ { ++ int idx; ++ ++ /* Autocommands changed the quickfix list. Find the one we were ++ * using and restore it. */ ++ for (idx = 0; idx < LISTCOUNT; ++idx) ++ if (cur_qf_start == qi->qf_lists[idx].qf_start) ++ { ++ qi->qf_curlist = idx; ++ break; ++ } ++ if (idx == LISTCOUNT) ++ { ++ /* List cannot be found, create a new one. */ ++ qf_new_list(qi, *eap->cmdlinep); ++ cur_qf_start = qi->qf_lists[qi->qf_curlist].qf_start; ++ } ++ } ++ #endif ++ + if (buf == NULL) + { + if (!got_int) +*************** +*** 3324,3329 **** +--- 3355,3363 ---- + if (got_int) + break; + } ++ #ifdef FEAT_AUTOCMD ++ cur_qf_start = qi->qf_lists[qi->qf_curlist].qf_start; ++ #endif + + if (using_dummy) + { +*** ../vim-7.3.755/src/version.c 2012-12-12 14:25:01.000000000 +0100 +--- src/version.c 2012-12-12 15:35:58.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 756, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +146. You experience ACTUAL physical withdrawal symptoms when away + from your 'puter and the net. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.757 b/7.3.757 new file mode 100644 index 0000000..e7b7698 --- /dev/null +++ b/7.3.757 @@ -0,0 +1,51 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.757 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.757 +Problem: Issue 96: May access freed memory when a put command triggers + autocommands. (Dominique Pelle) +Solution: Call u_save() before getting y_array. +Files: src/ops.c + + +*** ../vim-7.3.756/src/ops.c 2012-09-05 14:18:42.000000000 +0200 +--- src/ops.c 2012-12-12 16:03:35.000000000 +0100 +*************** +*** 3351,3356 **** +--- 3351,3362 ---- + return; + } + ++ #ifdef FEAT_AUTOCMD ++ /* Autocommands may be executed when saving lines for undo, which may make ++ * y_array invalid. Start undo now to avoid that. */ ++ u_save(curwin->w_cursor.lnum, curwin->w_cursor.lnum + 1); ++ #endif ++ + if (insert_string != NULL) + { + y_type = MCHAR; +*** ../vim-7.3.756/src/version.c 2012-12-12 15:55:16.000000000 +0100 +--- src/version.c 2012-12-12 16:06:47.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 757, + /**/ + +-- +We are the Borg of GNU GPL. We will assimilate your source code. +Resistance is futile. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.758 b/7.3.758 new file mode 100644 index 0000000..49febd8 --- /dev/null +++ b/7.3.758 @@ -0,0 +1,78 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.758 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.758 +Problem: Matchit plugin does not handle space in #ifdef. +Solution: Change matching pattern to allow spaces. (Mike Morearty) +Files: runtime/macros/matchit.vim + + +*** ../vim-7.3.757/runtime/macros/matchit.vim 2010-08-15 21:57:19.000000000 +0200 +--- runtime/macros/matchit.vim 2012-12-12 16:34:11.000000000 +0100 +*************** +*** 131,137 **** + " 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 match_words = match_words . (strlen(match_words) ? "," : "") . default + if match_words !~ s:notslash . '\\\d' +--- 131,137 ---- + " let default = substitute(escape(&mps, '[$^.*~\\/?]'), '[,:]\+', + " \ '\\|', 'g').'\|\/\*\|\*\/\|#if\>\|#ifdef\>\|#else\>\|#elif\>\|#endif\>' + let default = escape(&mps, '[$^.*~\\/?]') . (strlen(&mps) ? "," : "") . +! \ '\/\*:\*\/,#\s*if\%(def\)\=:#\s*else\>:#\s*elif\>:#\s*endif\>' + " s:all = pattern with all the keywords + let match_words = match_words . (strlen(match_words) ? "," : "") . default + if match_words !~ s:notslash . '\\\d' +*************** +*** 649,655 **** + " 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 +--- 649,655 ---- + " 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) ? "," : "") . +! \ '\/\*:\*\/,#\s*if\%(def\)\=:#\s*else\>:#\s*elif\>:#\s*endif\>' + " Allow b:match_words = "GetVimMatchWords()" . + if b:match_words =~ ":" + let match_words = b:match_words +*************** +*** 808,812 **** +--- 808,813 ---- + endfun + + let &cpo = s:save_cpo ++ unlet s:save_cpo + + " vim:sts=2:sw=2: +*** ../vim-7.3.757/src/version.c 2012-12-12 16:11:28.000000000 +0100 +--- src/version.c 2012-12-12 16:41:40.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 758, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +147. You finally give up smoking...because it made the monitor dirty. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.759 b/7.3.759 new file mode 100644 index 0000000..0273926 --- /dev/null +++ b/7.3.759 @@ -0,0 +1,106 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.759 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.759 +Problem: MS-Windows: Updating the tabline is slow when there are many tabs. +Solution: Disable redrawing while performing the update. (Arseny Kapoulkine) +Files: src/gui_w48.c + + +*** ../vim-7.3.758/src/gui_w48.c 2012-11-20 16:53:34.000000000 +0100 +--- src/gui_w48.c 2012-12-12 17:10:21.000000000 +0100 +*************** +*** 2452,2458 **** + TCITEM tie; + int nr = 0; + int curtabidx = 0; +- RECT rc; + #ifdef FEAT_MBYTE + static int use_unicode = FALSE; + int uu; +--- 2452,2457 ---- +*************** +*** 2479,2491 **** + tie.mask = TCIF_TEXT; + tie.iImage = -1; + + /* Add a label for each tab page. They all contain the same text area. */ + for (tp = first_tabpage; tp != NULL; tp = tp->tp_next, ++nr) + { + if (tp == curtab) + curtabidx = nr; + +! if (!TabCtrl_GetItemRect(s_tabhwnd, nr, &rc)) + { + /* Add the tab */ + tie.pszText = "-Empty-"; +--- 2478,2493 ---- + tie.mask = TCIF_TEXT; + tie.iImage = -1; + ++ /* Disable redraw for tab updates to eliminate O(N^2) draws. */ ++ SendMessage(s_tabhwnd, WM_SETREDRAW, (WPARAM)FALSE, 0); ++ + /* Add a label for each tab page. They all contain the same text area. */ + for (tp = first_tabpage; tp != NULL; tp = tp->tp_next, ++nr) + { + if (tp == curtab) + curtabidx = nr; + +! if (nr >= TabCtrl_GetItemCount(s_tabhwnd)) + { + /* Add the tab */ + tie.pszText = "-Empty-"; +*************** +*** 2519,2529 **** + } + + /* Remove any old labels. */ +! while (TabCtrl_GetItemRect(s_tabhwnd, nr, &rc)) + TabCtrl_DeleteItem(s_tabhwnd, nr); + + if (TabCtrl_GetCurSel(s_tabhwnd) != curtabidx) + TabCtrl_SetCurSel(s_tabhwnd, curtabidx); + } + + /* +--- 2521,2534 ---- + } + + /* Remove any old labels. */ +! while (nr < TabCtrl_GetItemCount(s_tabhwnd)) + TabCtrl_DeleteItem(s_tabhwnd, nr); + + if (TabCtrl_GetCurSel(s_tabhwnd) != curtabidx) + TabCtrl_SetCurSel(s_tabhwnd, curtabidx); ++ ++ /* Re-enable redraw. This should trigger a repaint. */ ++ SendMessage(s_tabhwnd, WM_SETREDRAW, (WPARAM)TRUE, 0); + } + + /* +*** ../vim-7.3.758/src/version.c 2012-12-12 16:43:52.000000000 +0100 +--- src/version.c 2012-12-12 17:10:46.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 759, + /**/ + +-- +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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.760 b/7.3.760 new file mode 100644 index 0000000..bdc4b79 --- /dev/null +++ b/7.3.760 @@ -0,0 +1,99 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.760 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.760 +Problem: dv_ deletes the white space before the line. +Solution: Move the cursor to the first non-white. (Christian Brabandt) +Files: src/normal.c, src/testdir/test19.in, src/testdir/test19.ok + + +*** ../vim-7.3.759/src/normal.c 2012-10-23 05:08:49.000000000 +0200 +--- src/normal.c 2012-12-12 17:23:00.000000000 +0100 +*************** +*** 8628,8634 **** + cap->oap->motion_type = MLINE; + if (cursor_down(cap->count1 - 1L, cap->oap->op_type == OP_NOP) == FAIL) + clearopbeep(cap->oap); +! else if ( cap->oap->op_type == OP_DELETE + || cap->oap->op_type == OP_LSHIFT + || cap->oap->op_type == OP_RSHIFT) + beginline(BL_SOL | BL_FIX); +--- 8628,8636 ---- + cap->oap->motion_type = MLINE; + if (cursor_down(cap->count1 - 1L, cap->oap->op_type == OP_NOP) == FAIL) + clearopbeep(cap->oap); +! else if ( (cap->oap->op_type == OP_DELETE /* only with linewise motions */ +! && cap->oap->motion_force != 'v' +! && cap->oap->motion_force != Ctrl_V) + || cap->oap->op_type == OP_LSHIFT + || cap->oap->op_type == OP_RSHIFT) + beginline(BL_SOL | BL_FIX); +*** ../vim-7.3.759/src/testdir/test19.in 2011-09-08 23:22:35.000000000 +0200 +--- src/testdir/test19.in 2012-12-12 17:19:36.000000000 +0100 +*************** +*** 1,4 **** +--- 1,5 ---- + Tests for "r" with 'smarttab' and 'expandtab' set/not set. ++ Also test that dv_ works correctly + + STARTTEST + :so small.vim +*************** +*** 16,22 **** + :" Test that copyindent works with expandtab set + :set expandtab smartindent copyindent ts=8 sw=8 sts=8 + o{ +! x:?^start?,$w! test.out + :qa! + ENDTEST + +--- 17,25 ---- + :" Test that copyindent works with expandtab set + :set expandtab smartindent copyindent ts=8 sw=8 sts=8 + o{ +! x:set nosol +! /Second line/ +! fwdv_:?^start?,$w! test.out + :qa! + ENDTEST + +*************** +*** 27,29 **** +--- 30,33 ---- + a cde + f ghi + test text ++ Second line beginning with whitespace +*** ../vim-7.3.759/src/testdir/test19.ok 2011-09-07 19:58:04.000000000 +0200 +--- src/testdir/test19.ok 2012-12-12 17:19:36.000000000 +0100 +*************** +*** 7,9 **** +--- 7,10 ---- + test text + { + x ++ with whitespace +*** ../vim-7.3.759/src/version.c 2012-12-12 17:12:21.000000000 +0100 +--- src/version.c 2012-12-12 17:20:47.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 760, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +149. You find your computer sexier than your girlfriend + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.761 b/7.3.761 new file mode 100644 index 0000000..8b159be --- /dev/null +++ b/7.3.761 @@ -0,0 +1,93 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.761 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.761 +Problem: In Visual mode a "-p does not work. (Marcin Szamotulski) +Solution: Avoid writing to "- before putting it. (Christian Brabandt) +Files: src/normal.c, src/testdir/test48.in, src/testdir/test48.ok + + +*** ../vim-7.3.760/src/normal.c 2012-12-12 17:33:26.000000000 +0100 +--- src/normal.c 2012-12-12 18:11:06.000000000 +0100 +*************** +*** 9412,9425 **** + # ifdef FEAT_CLIPBOARD + adjust_clip_reg(®name); + # endif +! if (regname == 0 || regname == '"' || VIM_ISDIGIT(regname) + # ifdef FEAT_CLIPBOARD + || (clip_unnamed && (regname == '*' || regname == '+')) + # endif + + ) + { +! /* the delete is going to overwrite the register we want to + * put, save it first. */ + reg1 = get_register(regname, TRUE); + } +--- 9412,9426 ---- + # ifdef FEAT_CLIPBOARD + adjust_clip_reg(®name); + # endif +! if (regname == 0 || regname == '"' +! || VIM_ISDIGIT(regname) || regname == '-' + # ifdef FEAT_CLIPBOARD + || (clip_unnamed && (regname == '*' || regname == '+')) + # endif + + ) + { +! /* The delete is going to overwrite the register we want to + * put, save it first. */ + reg1 = get_register(regname, TRUE); + } +*** ../vim-7.3.760/src/testdir/test48.in 2010-08-15 21:57:29.000000000 +0200 +--- src/testdir/test48.in 2012-12-12 18:09:21.000000000 +0100 +*************** +*** 54,61 **** +--- 54,65 ---- + ^O3li4li4li <-- should show the name of a noted text editor + ^o4li4li4li <-- and its version number-dd + :" ++ :" Test for yanking and pasting using the small delete register ++ gg/^foo ++ dewve"-p + :wq! test.out + ENDTEST ++ foo, bar + keyword keyw + all your base are belong to us + 1 2 3 4 5 6 +*** ../vim-7.3.760/src/testdir/test48.ok 2010-08-15 21:57:29.000000000 +0200 +--- src/testdir/test48.ok 2012-12-12 18:09:25.000000000 +0100 +*************** +*** 1,3 **** +--- 1,4 ---- ++ , foo + keyword keyword + all your base + are belong to vim +*** ../vim-7.3.760/src/version.c 2012-12-12 17:33:26.000000000 +0100 +--- src/version.c 2012-12-12 18:19:51.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 761, + /**/ + +-- +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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.762 b/7.3.762 new file mode 100644 index 0000000..5600771 --- /dev/null +++ b/7.3.762 @@ -0,0 +1,56 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.762 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.762 (after 7.3.759) +Problem: On some systems the tabline is not redrawn. +Solution: Call RedrawWindow(). (Charles Peacech) +Files: src/gui_w48.c + + +*** ../vim-7.3.761/src/gui_w48.c 2012-12-12 17:12:21.000000000 +0100 +--- src/gui_w48.c 2012-12-16 12:45:47.000000000 +0100 +*************** +*** 2527,2534 **** + if (TabCtrl_GetCurSel(s_tabhwnd) != curtabidx) + TabCtrl_SetCurSel(s_tabhwnd, curtabidx); + +! /* Re-enable redraw. This should trigger a repaint. */ + SendMessage(s_tabhwnd, WM_SETREDRAW, (WPARAM)TRUE, 0); + } + + /* +--- 2527,2536 ---- + if (TabCtrl_GetCurSel(s_tabhwnd) != curtabidx) + TabCtrl_SetCurSel(s_tabhwnd, curtabidx); + +! /* Re-enable redraw and redraw. */ + SendMessage(s_tabhwnd, WM_SETREDRAW, (WPARAM)TRUE, 0); ++ RedrawWindow(s_tabhwnd, NULL, NULL, ++ RDW_ERASE | RDW_FRAME | RDW_INVALIDATE | RDW_ALLCHILDREN); + } + + /* +*** ../vim-7.3.761/src/version.c 2012-12-12 18:20:28.000000000 +0100 +--- src/version.c 2012-12-16 12:46:44.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 762, + /**/ + +-- +"The question of whether computers can think is just like the question +of whether submarines can swim." -- Edsger W. Dijkstra + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.763 b/7.3.763 new file mode 100644 index 0000000..0a308b1 --- /dev/null +++ b/7.3.763 @@ -0,0 +1,69 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.763 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.763 +Problem: Jumping to a mark does not open a fold if it is in the same line. + (Wiktor Ruben) +Solution: Also compare the column after the jump. (Christian Brabandt) +Files: src/normal.c + + +*** ../vim-7.3.762/src/normal.c 2012-12-12 18:20:28.000000000 +0100 +--- src/normal.c 2013-01-11 22:02:30.000000000 +0100 +*************** +*** 7523,7529 **** + pos_T *pos; + int c; + #ifdef FEAT_FOLDING +! linenr_T lnum = curwin->w_cursor.lnum; + int old_KeyTyped = KeyTyped; /* getting file may reset it */ + #endif + +--- 7523,7529 ---- + pos_T *pos; + int c; + #ifdef FEAT_FOLDING +! pos_T old_cursor = curwin->w_cursor; + int old_KeyTyped = KeyTyped; /* getting file may reset it */ + #endif + +*************** +*** 7552,7558 **** + #endif + #ifdef FEAT_FOLDING + if (cap->oap->op_type == OP_NOP +! && (pos == (pos_T *)-1 || lnum != curwin->w_cursor.lnum) + && (fdo_flags & FDO_MARK) + && old_KeyTyped) + foldOpenCursor(); +--- 7552,7558 ---- + #endif + #ifdef FEAT_FOLDING + if (cap->oap->op_type == OP_NOP +! && (pos == (pos_T *)-1 || !equalpos(old_cursor, *pos)) + && (fdo_flags & FDO_MARK) + && old_KeyTyped) + foldOpenCursor(); +*** ../vim-7.3.762/src/version.c 2012-12-16 12:50:33.000000000 +0100 +--- src/version.c 2013-01-17 13:23:27.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 763, + /**/ + +-- +This is an airconditioned room, do not open Windows. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.764 b/7.3.764 new file mode 100644 index 0000000..f08bd1d --- /dev/null +++ b/7.3.764 @@ -0,0 +1,175 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.764 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.764 +Problem: Not all message translation files are installed. +Solution: Also install the converted files. +Files: src/po/Makefile + + +*** ../vim-7.3.763/src/po/Makefile 2010-08-15 21:57:26.000000000 +0200 +--- src/po/Makefile 2013-01-17 13:30:30.000000000 +0100 +*************** +*** 20,25 **** +--- 20,26 ---- + ko \ + ko.UTF-8 \ + nb \ ++ nl \ + no \ + pl \ + pt_BR \ +*************** +*** 33,38 **** +--- 34,49 ---- + zh_TW \ + zh_TW.UTF-8 + ++ CONVERTED = \ ++ cs.cp1250 \ ++ ja.sjis \ ++ pl.cp1250 \ ++ pl.UTF-8 \ ++ ru.cp1251 \ ++ sk.cp1250 \ ++ uk.cp1251 \ ++ zh_CN.cp936 ++ + MOFILES = \ + af.mo \ + ca.mo \ +*************** +*** 49,54 **** +--- 60,66 ---- + ko.mo \ + ko.UTF-8.mo \ + nb.mo \ ++ nl.mo \ + no.mo \ + pl.mo \ + pt_BR.mo \ +*************** +*** 62,68 **** + zh_TW.UTF-8.mo \ + zh_TW.mo + +! CONVERTED = \ + cs.cp1250.mo \ + ja.sjis.mo \ + pl.cp1250.mo \ +--- 74,80 ---- + zh_TW.UTF-8.mo \ + zh_TW.mo + +! MOCONVERTED = \ + cs.cp1250.mo \ + ja.sjis.mo \ + pl.cp1250.mo \ +*************** +*** 88,93 **** +--- 100,106 ---- + ko.ck \ + ko.UTF-8.ck \ + nb.ck \ ++ nl.ck \ + no.ck \ + pl.ck \ + pt_BR.ck \ +*************** +*** 123,129 **** + + .SUFFIXES: + .SUFFIXES: .po .mo .pot .ck +! .PHONY: all install uninstall prefixcheck converted check clean checkclean distclean update-po $(LANGUAGES) + + .po.mo: + $(MSGFMT) -o $@ $< +--- 136,142 ---- + + .SUFFIXES: + .SUFFIXES: .po .mo .pot .ck +! .PHONY: all install uninstall prefixcheck converted check clean checkclean distclean update-po $(LANGUAGES) $(CONVERTED) + + .po.mo: + $(MSGFMT) -o $@ $< +*************** +*** 132,144 **** + $(VIM) -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq $< + touch $@ + +! all: $(MOFILES) + + check: $(CHECKFILES) + +! install: $(MOFILES) + @$(MAKE) prefixcheck +! for lang in $(LANGUAGES); do \ + dir=$(LOCALEDIR)/$$lang/; \ + if test ! -x "$$dir"; then \ + mkdir $$dir; chmod 755 $$dir; \ +--- 145,157 ---- + $(VIM) -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq $< + touch $@ + +! all: $(MOFILES) $(MOCONVERTED) + + check: $(CHECKFILES) + +! install: $(MOFILES) $(MOCONVERTED) + @$(MAKE) prefixcheck +! for lang in $(LANGUAGES) $(CONVERTED); do \ + dir=$(LOCALEDIR)/$$lang/; \ + if test ! -x "$$dir"; then \ + mkdir $$dir; chmod 755 $$dir; \ +*************** +*** 155,167 **** + + uninstall: + @$(MAKE) prefixcheck +! for cat in $(MOFILES); do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \ + rm -f $(LOCALEDIR)/$$lang/LC_MESSAGES/$(PACKAGE).mo; \ + done + +! converted: $(CONVERTED) + + # Norwegian/Bokmal: "nb" is an alias for "no". + # Copying the file is not efficient, but I don't know of another way to make +--- 168,180 ---- + + uninstall: + @$(MAKE) prefixcheck +! for cat in $(MOFILES) $(MOCONVERTED); do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \ + rm -f $(LOCALEDIR)/$$lang/LC_MESSAGES/$(PACKAGE).mo; \ + done + +! converted: $(MOCONVERTED) + + # Norwegian/Bokmal: "nb" is an alias for "no". + # Copying the file is not efficient, but I don't know of another way to make +*** ../vim-7.3.763/src/version.c 2013-01-17 13:24:00.000000000 +0100 +--- src/version.c 2013-01-17 13:25:41.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 764, + /**/ + +-- +The software said it requires Windows 95 or better, so I installed Linux. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.765 b/7.3.765 new file mode 100644 index 0000000..c76e6bd --- /dev/null +++ b/7.3.765 @@ -0,0 +1,98 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.765 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.765 +Problem: Segfault when doing "cclose" on BufUnload in a python function. + (Sean Reifschneider) +Solution: Skip window with NULL buffer. (Christian Brabandt) +Files: src/main.c, src/window.c + + +*** ../vim-7.3.764/src/main.c 2012-11-28 15:55:37.000000000 +0100 +--- src/main.c 2013-01-17 13:46:57.000000000 +0100 +*************** +*** 1376,1381 **** +--- 1376,1384 ---- + for (wp = (tp == curtab) + ? firstwin : tp->tp_firstwin; wp != NULL; wp = wp->w_next) + { ++ if (wp->w_buffer == NULL) ++ /* Autocmd must have close the buffer already, skip. */ ++ continue; + buf = wp->w_buffer; + if (buf->b_changedtick != -1) + { +*** ../vim-7.3.764/src/window.c 2012-08-29 15:50:22.000000000 +0200 +--- src/window.c 2013-01-17 13:53:10.000000000 +0100 +*************** +*** 2276,2284 **** + #endif + } + + /* Autocommands may have closed the window already, or closed the only + * other window or moved to another tab page. */ +! if (!win_valid(win) || last_window() || curtab != prev_curtab + || close_last_window_tabpage(win, free_buf, prev_curtab)) + return; + +--- 2276,2290 ---- + #endif + } + ++ if (only_one_window() && win_valid(win) && win->w_buffer == NULL ++ && (last_window() || curtab != prev_curtab ++ || close_last_window_tabpage(win, free_buf, prev_curtab))) ++ /* Autocommands have close all windows, quit now. */ ++ getout(0); ++ + /* Autocommands may have closed the window already, or closed the only + * other window or moved to another tab page. */ +! else if (!win_valid(win) || last_window() || curtab != prev_curtab + || close_last_window_tabpage(win, free_buf, prev_curtab)) + return; + +*************** +*** 6282,6288 **** + return FALSE; + + for (wp = firstwin; wp != NULL; wp = wp->w_next) +! if ((!((wp->w_buffer->b_help && !curbuf->b_help) + # ifdef FEAT_QUICKFIX + || wp->w_p_pvw + # endif +--- 6288,6295 ---- + return FALSE; + + for (wp = firstwin; wp != NULL; wp = wp->w_next) +! if (wp->w_buffer != NULL +! && (!((wp->w_buffer->b_help && !curbuf->b_help) + # ifdef FEAT_QUICKFIX + || wp->w_p_pvw + # endif +*** ../vim-7.3.764/src/version.c 2013-01-17 13:35:13.000000000 +0100 +--- src/version.c 2013-01-17 13:56:56.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 765, + /**/ + +-- + He was not in the least bit scared to be mashed into a pulp + Or to have his eyes gouged out and his elbows broken; + To have his kneecaps split and his body burned away + And his limbs all hacked and mangled, brave Sir Robin. + "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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.766 b/7.3.766 new file mode 100644 index 0000000..2f2c1f1 --- /dev/null +++ b/7.3.766 @@ -0,0 +1,74 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.766 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.766 +Problem: ":help cpo-*" jumps to the wrong place. +Solution: Make it equivalent to ":help cpo-star". +Files: src/ex_cmds.c + + +*** ../vim-7.3.765/src/ex_cmds.c 2012-11-29 20:09:55.000000000 +0100 +--- src/ex_cmds.c 2013-01-17 14:05:45.000000000 +0100 +*************** +*** 5849,5862 **** + int i; + static char *(mtable[]) = {"*", "g*", "[*", "]*", ":*", + "/*", "/\\*", "\"*", "**", +! "/\\(\\)", + "?", ":?", "?", "g?", "g?g?", "g??", "z?", + "/\\?", "/\\z(\\)", "\\=", ":s\\=", + "[count]", "[quotex]", "[range]", + "[pattern]", "\\|", "\\%$"}; + static char *(rtable[]) = {"star", "gstar", "[star", "]star", ":star", + "/star", "/\\\\star", "quotestar", "starstar", +! "/\\\\(\\\\)", + "?", ":?", "?", "g?", "g?g?", "g??", "z?", + "/\\\\?", "/\\\\z(\\\\)", "\\\\=", ":s\\\\=", + "\\[count]", "\\[quotex]", "\\[range]", +--- 5849,5862 ---- + int i; + static char *(mtable[]) = {"*", "g*", "[*", "]*", ":*", + "/*", "/\\*", "\"*", "**", +! "cpo-*", "/\\(\\)", + "?", ":?", "?", "g?", "g?g?", "g??", "z?", + "/\\?", "/\\z(\\)", "\\=", ":s\\=", + "[count]", "[quotex]", "[range]", + "[pattern]", "\\|", "\\%$"}; + static char *(rtable[]) = {"star", "gstar", "[star", "]star", ":star", + "/star", "/\\\\star", "quotestar", "starstar", +! "cpo-star", "/\\\\(\\\\)", + "?", ":?", "?", "g?", "g?g?", "g??", "z?", + "/\\\\?", "/\\\\z(\\\\)", "\\\\=", ":s\\\\=", + "\\[count]", "\\[quotex]", "\\[range]", +*** ../vim-7.3.765/src/version.c 2013-01-17 13:59:56.000000000 +0100 +--- src/version.c 2013-01-17 14:09:04.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 766, + /**/ + +-- +The greatest lies of all time: + (1) The check is in the mail. + (2) We have a really challenging assignment for you. + (3) I love you. + (4) All bugs have been fixed. + (5) This won't hurt a bit. + (6) Honey, I just need to debug this program and be home in 5 minutes. + (7) I have just sent you an e-mail about that. + (8) Of course I'll respect you in the morning. + (9) I'm from the government, and I'm here to help you. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.767 b/7.3.767 new file mode 100644 index 0000000..89ce19e --- /dev/null +++ b/7.3.767 @@ -0,0 +1,120 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.767 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.767 +Problem: (Win32) The _errno used for iconv may be the wrong one. +Solution: Use the _errno from iconv.dll. (Ken Takata) +Files: src/mbyte.c + + +*** ../vim-7.3.766/src/mbyte.c 2012-09-18 18:03:33.000000000 +0200 +--- src/mbyte.c 2013-01-17 14:33:42.000000000 +0100 +*************** +*** 3242,3248 **** + + /* + * Version of strnicmp() that handles multi-byte characters. +! * Needed for Big5, Sjift-JIS and UTF-8 encoding. Other DBCS encodings can + * probably use strnicmp(), because there are no ASCII characters in the + * second byte. + * Returns zero if s1 and s2 are equal (ignoring case), the difference between +--- 3242,3248 ---- + + /* + * Version of strnicmp() that handles multi-byte characters. +! * Needed for Big5, Shift-JIS and UTF-8 encoding. Other DBCS encodings can + * probably use strnicmp(), because there are no ASCII characters in the + * second byte. + * Returns zero if s1 and s2 are equal (ignoring case), the difference between +*************** +*** 4294,4299 **** +--- 4294,4337 ---- + # endif + + /* ++ * Get the address of 'funcname' which is imported by 'hInst' DLL. ++ */ ++ static void * ++ get_iconv_import_func(HINSTANCE hInst, const char *funcname) ++ { ++ PBYTE pImage = (PBYTE)hInst; ++ PIMAGE_DOS_HEADER pDOS = (PIMAGE_DOS_HEADER)hInst; ++ PIMAGE_NT_HEADERS pPE; ++ PIMAGE_IMPORT_DESCRIPTOR pImpDesc; ++ PIMAGE_THUNK_DATA pIAT; /* Import Address Table */ ++ PIMAGE_THUNK_DATA pINT; /* Import Name Table */ ++ PIMAGE_IMPORT_BY_NAME pImpName; ++ ++ if (pDOS->e_magic != IMAGE_DOS_SIGNATURE) ++ return NULL; ++ pPE = (PIMAGE_NT_HEADERS)(pImage + pDOS->e_lfanew); ++ if (pPE->Signature != IMAGE_NT_SIGNATURE) ++ return NULL; ++ pImpDesc = (PIMAGE_IMPORT_DESCRIPTOR)(pImage ++ + pPE->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT] ++ .VirtualAddress); ++ for (; pImpDesc->FirstThunk; ++pImpDesc) ++ { ++ pIAT = (PIMAGE_THUNK_DATA)(pImage + pImpDesc->FirstThunk); ++ pINT = (PIMAGE_THUNK_DATA)(pImage + pImpDesc->OriginalFirstThunk); ++ for (; pIAT->u1.Function; ++pIAT, ++pINT) ++ { ++ if (IMAGE_SNAP_BY_ORDINAL(pINT->u1.Ordinal)) ++ continue; ++ pImpName = (PIMAGE_IMPORT_BY_NAME)(pImage + pINT->u1.AddressOfData); ++ if (strcmp(pImpName->Name, funcname) == 0) ++ return (void *)pIAT->u1.Function; ++ } ++ } ++ return NULL; ++ } ++ ++ /* + * Try opening the iconv.dll and return TRUE if iconv() can be used. + */ + int +*************** +*** 4326,4332 **** + iconv_open = (void *)GetProcAddress(hIconvDLL, "libiconv_open"); + iconv_close = (void *)GetProcAddress(hIconvDLL, "libiconv_close"); + iconvctl = (void *)GetProcAddress(hIconvDLL, "libiconvctl"); +! iconv_errno = (void *)GetProcAddress(hMsvcrtDLL, "_errno"); + if (iconv == NULL || iconv_open == NULL || iconv_close == NULL + || iconvctl == NULL || iconv_errno == NULL) + { +--- 4364,4372 ---- + iconv_open = (void *)GetProcAddress(hIconvDLL, "libiconv_open"); + iconv_close = (void *)GetProcAddress(hIconvDLL, "libiconv_close"); + iconvctl = (void *)GetProcAddress(hIconvDLL, "libiconvctl"); +! iconv_errno = get_iconv_import_func(hIconvDLL, "_errno"); +! if (iconv_errno == NULL) +! iconv_errno = (void *)GetProcAddress(hMsvcrtDLL, "_errno"); + if (iconv == NULL || iconv_open == NULL || iconv_close == NULL + || iconvctl == NULL || iconv_errno == NULL) + { +*** ../vim-7.3.766/src/version.c 2013-01-17 14:09:39.000000000 +0100 +--- src/version.c 2013-01-17 14:34:19.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 767, + /**/ + +-- +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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.768 b/7.3.768 new file mode 100644 index 0000000..3eadd53 --- /dev/null +++ b/7.3.768 @@ -0,0 +1,68 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.768 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.768 +Problem: settabvar() and setwinvar() may move the cursor. +Solution: Save and restore the cursor position when appropriate. (idea by + Yasuhiro Matsumoto) +Files: src/edit.c + + +*** ../vim-7.3.767/src/edit.c 2012-10-21 00:10:29.000000000 +0200 +--- src/edit.c 2013-01-17 15:32:10.000000000 +0100 +*************** +*** 372,377 **** +--- 372,379 ---- + */ + if (cmdchar != 'r' && cmdchar != 'v') + { ++ pos_T save_cursor = curwin->w_cursor; ++ + # ifdef FEAT_EVAL + if (cmdchar == 'R') + ptr = (char_u *)"r"; +*************** +*** 382,387 **** +--- 384,402 ---- + set_vim_var_string(VV_INSERTMODE, ptr, 1); + # endif + apply_autocmds(EVENT_INSERTENTER, NULL, NULL, FALSE, curbuf); ++ ++ /* Since Insert mode was not started yet a call to check_cursor_col() ++ * may have moved the cursor, especially with the "A" command. */ ++ if (curwin->w_cursor.col != save_cursor.col ++ && curwin->w_cursor.lnum == save_cursor.lnum) ++ { ++ int save_state = State; ++ ++ curwin->w_cursor = save_cursor; ++ State = INSERT; ++ check_cursor_col(); ++ State = save_state; ++ } + } + #endif + +*** ../vim-7.3.767/src/version.c 2013-01-17 14:39:43.000000000 +0100 +--- src/version.c 2013-01-17 15:10:48.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 768, + /**/ + +-- +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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.769 b/7.3.769 new file mode 100644 index 0000000..aac4579 --- /dev/null +++ b/7.3.769 @@ -0,0 +1,450 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.769 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.769 +Problem: 'matchpairs' does not work with multi-byte characters. +Solution: Make it work. (Christian Brabandt) +Files: src/misc1.c, src/option.c, src/proto/option.pro, src/search.c, + src/testdir/test69.in, src/testdir/test69.ok + + +*** ../vim-7.3.768/src/misc1.c 2012-08-15 14:04:50.000000000 +0200 +--- src/misc1.c 2013-01-17 15:55:09.000000000 +0100 +*************** +*** 2288,2301 **** + */ + if (p_sm && (State & INSERT) + && msg_silent == 0 +- #ifdef FEAT_MBYTE +- && charlen == 1 +- #endif + #ifdef FEAT_INS_EXPAND + && !ins_compl_active() + #endif + ) +! showmatch(c); + + #ifdef FEAT_RIGHTLEFT + if (!p_ri || (State & REPLACE_FLAG)) +--- 2288,2305 ---- + */ + if (p_sm && (State & INSERT) + && msg_silent == 0 + #ifdef FEAT_INS_EXPAND + && !ins_compl_active() + #endif + ) +! { +! #ifdef FEAT_MBYTE +! if (has_mbyte) +! showmatch(mb_ptr2char(buf)); +! else +! #endif +! showmatch(c); +! } + + #ifdef FEAT_RIGHTLEFT + if (!p_ri || (State & REPLACE_FLAG)) +*** ../vim-7.3.768/src/option.c 2012-12-05 14:42:56.000000000 +0100 +--- src/option.c 2013-01-17 16:38:42.000000000 +0100 +*************** +*** 6149,6164 **** + /* 'matchpairs' */ + else if (gvarp == &p_mps) + { +! /* Check for "x:y,x:y" */ +! for (p = *varp; *p != NUL; p += 4) + { +! if (p[1] != ':' || p[2] == NUL || (p[3] != NUL && p[3] != ',')) + { +! errmsg = e_invarg; +! break; + } +- if (p[3] == NUL) +- break; + } + } + +--- 6149,6194 ---- + /* 'matchpairs' */ + else if (gvarp == &p_mps) + { +! #ifdef FEAT_MBYTE +! if (has_mbyte) + { +! for (p = *varp; *p != NUL; ++p) + { +! int x2,x3 = -1; +! +! if (*p != NUL) +! p += mb_ptr2len(p); +! if (*p != NUL) +! x2 = *p++; +! if (*p != NUL) +! { +! x3 = mb_ptr2char(p); +! p += mb_ptr2len(p); +! } +! if (x2 != ':' || x2 == -1 || x3 == -1 +! || (*p != NUL && *p != ',')) +! { +! errmsg = e_invarg; +! break; +! } +! if (*p == NUL) +! break; +! } +! } +! else +! #endif +! { +! /* Check for "x:y,x:y" */ +! for (p = *varp; *p != NUL; p += 4) +! { +! if (p[1] != ':' || p[2] == NUL || (p[3] != NUL && p[3] != ',')) +! { +! errmsg = e_invarg; +! break; +! } +! if (p[3] == NUL) +! break; + } + } + } + +*************** +*** 11453,11455 **** +--- 11483,11583 ---- + { + return curbuf->b_p_sts < 0 ? get_sw_value() : curbuf->b_p_sts; + } ++ ++ /* ++ * Check matchpairs option for "*initc". ++ * If there is a match set "*initc" to the matching character and "*findc" to ++ * the opposite character. Set "*backwards" to the direction. ++ * When "switchit" is TRUE swap the direction. ++ */ ++ void ++ find_mps_values(initc, findc, backwards, switchit) ++ int *initc; ++ int *findc; ++ int *backwards; ++ int switchit; ++ { ++ char_u *ptr; ++ ++ ptr = curbuf->b_p_mps; ++ while (*ptr != NUL) ++ { ++ #ifdef FEAT_MBYTE ++ if (has_mbyte) ++ { ++ char_u *prev; ++ ++ if (mb_ptr2char(ptr) == *initc) ++ { ++ if (switchit) ++ { ++ *findc = *initc; ++ *initc = mb_ptr2char(ptr + mb_ptr2len(ptr) + 1); ++ *backwards = TRUE; ++ } ++ else ++ { ++ *findc = mb_ptr2char(ptr + mb_ptr2len(ptr) + 1); ++ *backwards = FALSE; ++ } ++ return; ++ } ++ prev = ptr; ++ ptr += mb_ptr2len(ptr) + 1; ++ if (mb_ptr2char(ptr) == *initc) ++ { ++ if (switchit) ++ { ++ *findc = *initc; ++ *initc = mb_ptr2char(prev); ++ *backwards = FALSE; ++ } ++ else ++ { ++ *findc = mb_ptr2char(prev); ++ *backwards = TRUE; ++ } ++ return; ++ } ++ ptr += mb_ptr2len(ptr); ++ } ++ else ++ #endif ++ { ++ if (*ptr == *initc) ++ { ++ if (switchit) ++ { ++ *backwards = TRUE; ++ *findc = *initc; ++ *initc = ptr[2]; ++ } ++ else ++ { ++ *backwards = FALSE; ++ *findc = ptr[2]; ++ } ++ return; ++ } ++ ptr += 2; ++ if (*ptr == *initc) ++ { ++ if (switchit) ++ { ++ *backwards = FALSE; ++ *findc = *initc; ++ *initc = ptr[-2]; ++ } ++ else ++ { ++ *backwards = TRUE; ++ *findc = ptr[-2]; ++ } ++ return; ++ } ++ ++ptr; ++ } ++ if (*ptr == ',') ++ ++ptr; ++ } ++ } +*** ../vim-7.3.768/src/proto/option.pro 2012-12-05 14:42:56.000000000 +0100 +--- src/proto/option.pro 2013-01-17 16:39:30.000000000 +0100 +*************** +*** 59,62 **** +--- 59,63 ---- + int check_ff_value __ARGS((char_u *p)); + long get_sw_value __ARGS((void)); + long get_sts_value __ARGS((void)); ++ void find_mps_values __ARGS((int *initc, int *findc, int *backwards, int switchit)); + /* vim: set ft=c : */ +*** ../vim-7.3.768/src/search.c 2012-10-03 13:35:45.000000000 +0200 +--- src/search.c 2013-01-17 16:50:12.000000000 +0100 +*************** +*** 1786,1813 **** + } + else if (initc != '#' && initc != NUL) + { +! /* 'matchpairs' is "x:y,x:y" */ +! for (ptr = curbuf->b_p_mps; *ptr; ptr += 2) +! { +! if (*ptr == initc) +! { +! findc = initc; +! initc = ptr[2]; +! backwards = TRUE; +! break; +! } +! ptr += 2; +! if (*ptr == initc) +! { +! findc = initc; +! initc = ptr[-2]; +! backwards = FALSE; +! break; +! } +! if (ptr[1] != ',') +! break; +! } +! if (!findc) /* invalid initc! */ + return NULL; + } + /* +--- 1786,1793 ---- + } + else if (initc != '#' && initc != NUL) + { +! find_mps_values(&initc, &findc, &backwards, TRUE); +! if (findc == NUL) + return NULL; + } + /* +*************** +*** 1886,1921 **** + --pos.col; + for (;;) + { +! initc = linep[pos.col]; + if (initc == NUL) + break; + +! for (ptr = curbuf->b_p_mps; *ptr; ++ptr) +! { +! if (*ptr == initc) +! { +! findc = ptr[2]; +! backwards = FALSE; +! break; +! } +! ptr += 2; +! if (*ptr == initc) +! { +! findc = ptr[-2]; +! backwards = TRUE; +! break; +! } +! if (!*++ptr) +! break; +! } + if (findc) + break; +! #ifdef FEAT_MBYTE +! if (has_mbyte) +! pos.col += (*mb_ptr2len)(linep + pos.col); +! else +! #endif +! ++pos.col; + } + if (!findc) + { +--- 1866,1879 ---- + --pos.col; + for (;;) + { +! initc = PTR2CHAR(linep + pos.col); + if (initc == NUL) + break; + +! find_mps_values(&initc, &findc, &backwards, FALSE); + if (findc) + break; +! pos.col += MB_PTR2LEN(linep + pos.col); + } + if (!findc) + { +*************** +*** 2260,2266 **** + * inquote if the number of quotes in a line is even, unless this + * line or the previous one ends in a '\'. Complicated, isn't it? + */ +! switch (c = linep[pos.col]) + { + case NUL: + /* at end of line without trailing backslash, reset inquote */ +--- 2218,2225 ---- + * inquote if the number of quotes in a line is even, unless this + * line or the previous one ends in a '\'. Complicated, isn't it? + */ +! c = PTR2CHAR(linep + pos.col); +! switch (c) + { + case NUL: + /* at end of line without trailing backslash, reset inquote */ +*************** +*** 2469,2488 **** + * Only show match for chars in the 'matchpairs' option. + */ + /* 'matchpairs' is "x:y,x:y" */ +! for (p = curbuf->b_p_mps; *p != NUL; p += 2) + { + #ifdef FEAT_RIGHTLEFT +! if (*p == c && (curwin->w_p_rl ^ p_ri)) +! break; + #endif +! p += 2; +! if (*p == c + #ifdef FEAT_RIGHTLEFT + && !(curwin->w_p_rl ^ p_ri) + #endif + ) + break; +! if (p[1] != ',') + return; + } + +--- 2428,2450 ---- + * Only show match for chars in the 'matchpairs' option. + */ + /* 'matchpairs' is "x:y,x:y" */ +! for (p = curbuf->b_p_mps; *p != NUL; ++p) + { ++ if (PTR2CHAR(p) == c + #ifdef FEAT_RIGHTLEFT +! && (curwin->w_p_rl ^ p_ri) + #endif +! ) +! break; +! p += MB_PTR2LEN(p) + 1; +! if (PTR2CHAR(p) == c + #ifdef FEAT_RIGHTLEFT + && !(curwin->w_p_rl ^ p_ri) + #endif + ) + break; +! p += MB_PTR2LEN(p); +! if (*p == NUL) + return; + } + +*** ../vim-7.3.768/src/testdir/test69.in 2010-08-15 21:57:29.000000000 +0200 +--- src/testdir/test69.in 2013-01-17 15:55:09.000000000 +0100 +*************** +*** 1,4 **** +--- 1,5 ---- + Test for multi-byte text formatting. ++ Also test, that 'mps' with multibyte chars works. + + STARTTEST + :so mbyte.vim +*************** +*** 134,139 **** +--- 135,149 ---- + } + + STARTTEST ++ /^{/+1 ++ :set mps+=u2018:u2019 ++ d% ++ ENDTEST ++ ++ { ++ ‘ two three ’ four ++ } ++ STARTTEST + :g/^STARTTEST/.,/^ENDTEST/d + :1;/^Results/,$wq! test.out + ENDTEST +*** ../vim-7.3.768/src/testdir/test69.ok 2010-08-15 21:57:29.000000000 +0200 +--- src/testdir/test69.ok 2013-01-17 15:55:09.000000000 +0100 +*************** +*** 140,142 **** +--- 140,146 ---- + a + } + ++ ++ { ++ four ++ } +*** ../vim-7.3.768/src/version.c 2013-01-17 15:36:54.000000000 +0100 +--- src/version.c 2013-01-17 15:55:49.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 769, + /**/ + +-- +Microsoft's definition of a boolean: TRUE, FALSE, MAYBE +"Embrace and extend"...? + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.770 b/7.3.770 new file mode 100644 index 0000000..366ca0e --- /dev/null +++ b/7.3.770 @@ -0,0 +1,136 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.770 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.770 +Problem: Vim.h indentation is inconsistent. +Solution: Adjust the indentation. (Elias Diem) +Files: src/vim.h + + +*** ../vim-7.3.769/src/vim.h 2012-08-15 14:04:50.000000000 +0200 +--- src/vim.h 2013-01-17 17:12:54.000000000 +0100 +*************** +*** 104,110 **** + # endif + #endif + #if defined(MACOS_X) || defined(MACOS_CLASSIC) +! # define MACOS + #endif + #if defined(MACOS_X) && defined(MACOS_CLASSIC) + Error: To compile for both MACOS X and Classic use a Classic Carbon +--- 104,110 ---- + # endif + #endif + #if defined(MACOS_X) || defined(MACOS_CLASSIC) +! # define MACOS + #endif + #if defined(MACOS_X) && defined(MACOS_CLASSIC) + Error: To compile for both MACOS X and Classic use a Classic Carbon +*************** +*** 490,496 **** + # include + # endif + # if defined(HAVE_STRINGS_H) && !defined(NO_STRINGS_WITH_STRING_H) +! # include + # endif + # ifdef HAVE_STAT_H + # include +--- 490,496 ---- + # include + # endif + # if defined(HAVE_STRINGS_H) && !defined(NO_STRINGS_WITH_STRING_H) +! # include + # endif + # ifdef HAVE_STAT_H + # include +*************** +*** 515,536 **** + # include + #endif + +! # if defined(HAVE_SYS_SELECT_H) && \ + (!defined(HAVE_SYS_TIME_H) || defined(SYS_SELECT_WITH_SYS_TIME)) +! # include +! # endif + +! # ifndef HAVE_SELECT +! # ifdef HAVE_SYS_POLL_H +! # include + # define HAVE_POLL +- # else +- # ifdef HAVE_POLL_H +- # include +- # define HAVE_POLL +- # endif + # endif + # endif + + /* ================ end of the header file puzzle =============== */ + +--- 515,536 ---- + # include + #endif + +! #if defined(HAVE_SYS_SELECT_H) && \ + (!defined(HAVE_SYS_TIME_H) || defined(SYS_SELECT_WITH_SYS_TIME)) +! # include +! #endif + +! #ifndef HAVE_SELECT +! # ifdef HAVE_SYS_POLL_H +! # include +! # define HAVE_POLL +! # else +! # ifdef HAVE_POLL_H +! # include + # define HAVE_POLL + # endif + # endif ++ #endif + + /* ================ end of the header file puzzle =============== */ + +*************** +*** 1877,1884 **** + /* VIM_ATOM_NAME is the older Vim-specific selection type for X11. Still + * supported for when a mix of Vim versions is used. VIMENC_ATOM_NAME includes + * the encoding to support Vims using different 'encoding' values. */ +! #define VIM_ATOM_NAME "_VIM_TEXT" +! #define VIMENC_ATOM_NAME "_VIMENC_TEXT" + + /* Selection states for modeless selection */ + # define SELECT_CLEARED 0 +--- 1877,1884 ---- + /* VIM_ATOM_NAME is the older Vim-specific selection type for X11. Still + * supported for when a mix of Vim versions is used. VIMENC_ATOM_NAME includes + * the encoding to support Vims using different 'encoding' values. */ +! # define VIM_ATOM_NAME "_VIM_TEXT" +! # define VIMENC_ATOM_NAME "_VIMENC_TEXT" + + /* Selection states for modeless selection */ + # define SELECT_CLEARED 0 +*** ../vim-7.3.769/src/version.c 2013-01-17 17:01:57.000000000 +0100 +--- src/version.c 2013-01-17 17:16:45.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 770, + /**/ + +-- +FIRST HEAD: All right! All right! We'll kill him first and then have tea and + biscuits. + "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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.771 b/7.3.771 new file mode 100644 index 0000000..1d8e988 --- /dev/null +++ b/7.3.771 @@ -0,0 +1,74 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.771 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.771 (after 7.3.769) +Problem: Uninitialized variable. (Yasuhiro Matsumoto) +Solution: Set x2 to -1. +Files: src/option.c + + +*** ../vim-7.3.770/src/option.c 2013-01-17 17:01:56.000000000 +0100 +--- src/option.c 2013-01-17 17:31:56.000000000 +0100 +*************** +*** 6154,6160 **** + { + for (p = *varp; *p != NUL; ++p) + { +! int x2,x3 = -1; + + if (*p != NUL) + p += mb_ptr2len(p); +--- 6154,6161 ---- + { + for (p = *varp; *p != NUL; ++p) + { +! int x2 = -1; +! int x3 = -1; + + if (*p != NUL) + p += mb_ptr2len(p); +*************** +*** 6165,6172 **** + x3 = mb_ptr2char(p); + p += mb_ptr2len(p); + } +! if (x2 != ':' || x2 == -1 || x3 == -1 +! || (*p != NUL && *p != ',')) + { + errmsg = e_invarg; + break; +--- 6166,6172 ---- + x3 = mb_ptr2char(p); + p += mb_ptr2len(p); + } +! if (x2 != ':' || x3 == -1 || (*p != NUL && *p != ',')) + { + errmsg = e_invarg; + break; +*** ../vim-7.3.770/src/version.c 2013-01-17 17:17:21.000000000 +0100 +--- src/version.c 2013-01-17 17:37:24.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 771, + /**/ + +-- + GALAHAD turns back. We see from his POV the lovely ZOOT standing by him + smiling enchantingly and a number of equally delectable GIRLIES draped + around in the seductively poulticed room. They look at him smilingly and + wave. + "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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.772 b/7.3.772 new file mode 100644 index 0000000..c58ff40 --- /dev/null +++ b/7.3.772 @@ -0,0 +1,51 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.772 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.772 +Problem: Cursor is at the wrong location and below the end of the file + after doing substitutions with confirm flag: %s/x/y/c + (Dominique Pelle) +Solution: Update the cursor position. (Christian Brabandt & Dominique) +Files: src/ex_cmds.c + + +*** ../vim-7.3.771/src/ex_cmds.c 2013-01-17 14:09:39.000000000 +0100 +--- src/ex_cmds.c 2013-01-17 18:31:38.000000000 +0100 +*************** +*** 5200,5205 **** +--- 5200,5211 ---- + EMSG2(_(e_patnotf2), get_search_pat()); + } + ++ #ifdef FEAT_FOLDING ++ if (do_ask && hasAnyFolding(curwin)) ++ /* Cursor position may require updating */ ++ changed_window_setting(); ++ #endif ++ + vim_free(regmatch.regprog); + } + +*** ../vim-7.3.771/src/version.c 2013-01-17 17:37:31.000000000 +0100 +--- src/version.c 2013-01-17 18:32:56.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 772, + /**/ + +-- +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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.773 b/7.3.773 new file mode 100644 index 0000000..225eef2 --- /dev/null +++ b/7.3.773 @@ -0,0 +1,45 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.773 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.773 (after 7.3.767) +Problem: Crash when OriginalFirstThunk is zero. +Solution: Skip items with OriginalFirstThunk not set. (Ken Takata) +Files: src/mbyte.c + + +*** ../vim-7.3.772/src/mbyte.c 2013-01-17 14:39:43.000000000 +0100 +--- src/mbyte.c 2013-01-19 13:59:21.000000000 +0100 +*************** +*** 4317,4322 **** +--- 4317,4324 ---- + .VirtualAddress); + for (; pImpDesc->FirstThunk; ++pImpDesc) + { ++ if (!pImpDesc->OriginalFirstThunk) ++ continue; + pIAT = (PIMAGE_THUNK_DATA)(pImage + pImpDesc->FirstThunk); + pINT = (PIMAGE_THUNK_DATA)(pImage + pImpDesc->OriginalFirstThunk); + for (; pIAT->u1.Function; ++pIAT, ++pINT) +*** ../vim-7.3.772/src/version.c 2013-01-17 18:33:58.000000000 +0100 +--- src/version.c 2013-01-19 14:01:50.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 773, + /**/ + +-- +Experience is what you get when you don't get what you want. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.774 b/7.3.774 new file mode 100644 index 0000000..5e36ffd --- /dev/null +++ b/7.3.774 @@ -0,0 +1,84 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.774 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.774 +Problem: Tiny GUI version misses console dialog feature. +Solution: Define FEAT_CON_DIALOG when apprpriate. (Christian Brabandt) +Files: src/feature.h, src/gui.h + + +*** ../vim-7.3.773/src/feature.h 2012-10-21 02:17:28.000000000 +0200 +--- src/feature.h 2013-01-23 13:33:52.000000000 +0100 +*************** +*** 792,797 **** +--- 792,806 ---- + #endif + + /* ++ * On some systems, when we compile with the GUI, we always use it. On Mac ++ * there is no terminal version, and on Windows we can't figure out how to ++ * fork one off with :gui. ++ */ ++ #if defined(FEAT_GUI_MSWIN) || (defined(FEAT_GUI_MAC) && !defined(MACOS_X_UNIX)) ++ # define ALWAYS_USE_GUI ++ #endif ++ ++ /* + * +dialog_gui Use GUI dialog. + * +dialog_con May use Console dialog. + * When none of these defined there is no dialog support. +*************** +*** 820,825 **** +--- 829,837 ---- + || defined(FEAT_GUI_GTK) || defined(FEAT_GUI_MSWIN) \ + || defined(FEAT_GUI_PHOTON) || defined(FEAT_GUI_MAC)) + # define FEAT_GUI_TEXTDIALOG ++ # ifndef ALWAYS_USE_GUI ++ # define FEAT_CON_DIALOG ++ # endif + #endif + + /* Mac specific thing: Codewarrior interface. */ +*** ../vim-7.3.773/src/gui.h 2011-06-26 04:48:56.000000000 +0200 +--- src/gui.h 2013-01-23 13:33:24.000000000 +0100 +*************** +*** 59,73 **** + #endif + + /* +- * On some systems, when we compile with the GUI, we always use it. On Mac +- * there is no terminal version, and on Windows we can't figure out how to +- * fork one off with :gui. +- */ +- #if defined(FEAT_GUI_MSWIN) || (defined(FEAT_GUI_MAC) && !defined(MACOS_X_UNIX)) +- # define ALWAYS_USE_GUI +- #endif +- +- /* + * On some systems scrolling needs to be done right away instead of in the + * main loop. + */ +--- 59,64 ---- +*** ../vim-7.3.773/src/version.c 2013-01-19 14:01:57.000000000 +0100 +--- src/version.c 2013-01-23 13:38:12.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 774, + /**/ + +-- +Overflow on /dev/null, please empty the bit bucket. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.775 b/7.3.775 new file mode 100644 index 0000000..a70a7b3 --- /dev/null +++ b/7.3.775 @@ -0,0 +1,72 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.775 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.775 +Problem: Cygwin and Mingw builds miss dependency on gui_w48.c. +Solution: Add a build rule. (Ken Takata) +Files: src/Make_cyg.mak, src/Make_ming.mak + + +*** ../vim-7.3.774/src/Make_cyg.mak 2012-11-28 16:18:26.000000000 +0100 +--- src/Make_cyg.mak 2013-01-23 13:53:48.000000000 +0100 +*************** +*** 600,605 **** +--- 600,608 ---- + $(OUTDIR)/ex_eval.o: ex_eval.c $(INCL) ex_cmds.h + $(CC) -c $(CFLAGS) ex_eval.c -o $(OUTDIR)/ex_eval.o + ++ $(OUTDIR)/gui_w32.o: gui_w32.c gui_w48.c $(INCL) ++ $(CC) -c $(CFLAGS) gui_w32.c -o $(OUTDIR)/gui_w32.o ++ + $(OUTDIR)/if_cscope.o: if_cscope.c $(INCL) if_cscope.h + $(CC) -c $(CFLAGS) if_cscope.c -o $(OUTDIR)/if_cscope.o + +*** ../vim-7.3.774/src/Make_ming.mak 2012-11-28 16:18:26.000000000 +0100 +--- src/Make_ming.mak 2013-01-23 13:53:48.000000000 +0100 +*************** +*** 731,736 **** +--- 731,739 ---- + $(OUTDIR)/ex_eval.o: ex_eval.c $(INCL) ex_cmds.h + $(CC) -c $(CFLAGS) ex_eval.c -o $(OUTDIR)/ex_eval.o + ++ $(OUTDIR)/gui_w32.o: gui_w32.c gui_w48.c $(INCL) ++ $(CC) -c $(CFLAGS) gui_w32.c -o $(OUTDIR)/gui_w32.o ++ + $(OUTDIR)/if_cscope.o: if_cscope.c $(INCL) if_cscope.h + $(CC) -c $(CFLAGS) if_cscope.c -o $(OUTDIR)/if_cscope.o + +*** ../vim-7.3.774/src/version.c 2013-01-23 13:40:54.000000000 +0100 +--- src/version.c 2013-01-23 13:53:34.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 775, + /**/ + +-- + ** Hello and Welcome to the Psychiatric Hotline ** +If you are obsessive-compulsive, please press 1 repeatedly. +If you are co-dependent, please ask someone to press 2. +If you have multiple personalities, please press 3, 4, 5 and 6. +If you are paranoid-delusional, we know who you are and what you want + - just stay on the line so we can trace the call. +If you are schizophrenic, listen carefully and a little voice will + tell you which number to press next. +If you are manic-depressive, it doesn't matter which number you press + - no one will answer. +If you suffer from panic attacks, push every button you can find. +If you are sane, please hold on - we have the rest of humanity on the + other line and they desparately want to ask you a few questions. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.776 b/7.3.776 new file mode 100644 index 0000000..fb05216 --- /dev/null +++ b/7.3.776 @@ -0,0 +1,435 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.776 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.776 +Problem: ml_get error when searching, caused by curwin not matching curbuf. +Solution: Avoid changing curbuf. (Lech Lorens) +Files: src/charset.c, src/eval.c, src/mark.c, src/proto/charset.pro, + src/proto/mark.pro, src/regexp.c, src/syntax.c + + +*** ../vim-7.3.775/src/charset.c 2012-05-25 11:56:06.000000000 +0200 +--- src/charset.c 2013-01-23 15:43:37.000000000 +0100 +*************** +*** 905,910 **** +--- 905,918 ---- + vim_iswordc(c) + int c; + { ++ return vim_iswordc_buf(c, curbuf); ++ } ++ ++ int ++ vim_iswordc_buf(c, buf) ++ int c; ++ buf_T *buf; ++ { + #ifdef FEAT_MBYTE + if (c >= 0x100) + { +*************** +*** 914,920 **** + return utf_class(c) >= 2; + } + #endif +! return (c > 0 && c < 0x100 && GET_CHARTAB(curbuf, c) != 0); + } + + /* +--- 922,928 ---- + return utf_class(c) >= 2; + } + #endif +! return (c > 0 && c < 0x100 && GET_CHARTAB(buf, c) != 0); + } + + /* +*************** +*** 933,939 **** + + #if defined(FEAT_SYN_HL) || defined(PROTO) + int +! vim_iswordc_buf(p, buf) + char_u *p; + buf_T *buf; + { +--- 941,947 ---- + + #if defined(FEAT_SYN_HL) || defined(PROTO) + int +! vim_iswordp_buf(p, buf) + char_u *p; + buf_T *buf; + { +*** ../vim-7.3.775/src/eval.c 2012-12-05 16:10:21.000000000 +0100 +--- src/eval.c 2013-01-23 14:24:08.000000000 +0100 +*************** +*** 18884,18890 **** + #endif + if (name[0] == '\'') /* mark */ + { +! pp = getmark_fnum(name[1], FALSE, fnum); + if (pp == NULL || pp == (pos_T *)-1 || pp->lnum <= 0) + return NULL; + return pp; +--- 18884,18890 ---- + #endif + if (name[0] == '\'') /* mark */ + { +! pp = getmark_buf_fnum(curbuf, name[1], FALSE, fnum); + if (pp == NULL || pp == (pos_T *)-1 || pp->lnum <= 0) + return NULL; + return pp; +*** ../vim-7.3.775/src/mark.c 2012-07-06 17:51:24.000000000 +0200 +--- src/mark.c 2013-01-23 14:24:16.000000000 +0100 +*************** +*** 304,310 **** + #endif + + /* +! * Find mark "c". + * If "changefile" is TRUE it's allowed to edit another file for '0, 'A, etc. + * If "fnum" is not NULL store the fnum there for '0, 'A etc., don't edit + * another file. +--- 304,310 ---- + #endif + + /* +! * Find mark "c" in buffer pointed to by "buf". + * If "changefile" is TRUE it's allowed to edit another file for '0, 'A, etc. + * If "fnum" is not NULL store the fnum there for '0, 'A etc., don't edit + * another file. +*************** +*** 315,329 **** + * - -1 if mark is in other file and jumped there (only if changefile is TRUE) + */ + pos_T * + getmark(c, changefile) + int c; + int changefile; + { +! return getmark_fnum(c, changefile, NULL); + } + + pos_T * +! getmark_fnum(c, changefile, fnum) + int c; + int changefile; + int *fnum; +--- 315,339 ---- + * - -1 if mark is in other file and jumped there (only if changefile is TRUE) + */ + pos_T * ++ getmark_buf(buf, c, changefile) ++ buf_T *buf; ++ int c; ++ int changefile; ++ { ++ return getmark_buf_fnum(buf, c, changefile, NULL); ++ } ++ ++ pos_T * + getmark(c, changefile) + int c; + int changefile; + { +! return getmark_buf_fnum(curbuf, c, changefile, NULL); + } + + pos_T * +! getmark_buf_fnum(buf, c, changefile, fnum) +! buf_T *buf; + int c; + int changefile; + int *fnum; +*************** +*** 351,365 **** + posp = &pos_copy; /* w_pcmark may be changed soon */ + } + else if (c == '"') /* to pos when leaving buffer */ +! posp = &(curbuf->b_last_cursor); + else if (c == '^') /* to where Insert mode stopped */ +! posp = &(curbuf->b_last_insert); + else if (c == '.') /* to where last change was made */ +! posp = &(curbuf->b_last_change); + else if (c == '[') /* to start of previous operator */ +! posp = &(curbuf->b_op_start); + else if (c == ']') /* to end of previous operator */ +! posp = &(curbuf->b_op_end); + else if (c == '{' || c == '}') /* to previous/next paragraph */ + { + pos_T pos; +--- 361,375 ---- + posp = &pos_copy; /* w_pcmark may be changed soon */ + } + else if (c == '"') /* to pos when leaving buffer */ +! posp = &(buf->b_last_cursor); + else if (c == '^') /* to where Insert mode stopped */ +! posp = &(buf->b_last_insert); + else if (c == '.') /* to where last change was made */ +! posp = &(buf->b_last_change); + else if (c == '[') /* to start of previous operator */ +! posp = &(buf->b_op_start); + else if (c == ']') /* to end of previous operator */ +! posp = &(buf->b_op_end); + else if (c == '{' || c == '}') /* to previous/next paragraph */ + { + pos_T pos; +*************** +*** 395,402 **** + #ifdef FEAT_VISUAL + else if (c == '<' || c == '>') /* start/end of visual area */ + { +! startp = &curbuf->b_visual.vi_start; +! endp = &curbuf->b_visual.vi_end; + if ((c == '<') == lt(*startp, *endp)) + posp = startp; + else +--- 405,412 ---- + #ifdef FEAT_VISUAL + else if (c == '<' || c == '>') /* start/end of visual area */ + { +! startp = &buf->b_visual.vi_start; +! endp = &buf->b_visual.vi_end; + if ((c == '<') == lt(*startp, *endp)) + posp = startp; + else +*************** +*** 404,410 **** + /* + * For Visual line mode, set mark at begin or end of line + */ +! if (curbuf->b_visual.vi_mode == 'V') + { + pos_copy = *posp; + posp = &pos_copy; +--- 414,420 ---- + /* + * For Visual line mode, set mark at begin or end of line + */ +! if (buf->b_visual.vi_mode == 'V') + { + pos_copy = *posp; + posp = &pos_copy; +*************** +*** 420,426 **** + #endif + else if (ASCII_ISLOWER(c)) /* normal named mark */ + { +! posp = &(curbuf->b_namedm[c - 'a']); + } + else if (ASCII_ISUPPER(c) || VIM_ISDIGIT(c)) /* named file mark */ + { +--- 430,436 ---- + #endif + else if (ASCII_ISLOWER(c)) /* normal named mark */ + { +! posp = &(buf->b_namedm[c - 'a']); + } + else if (ASCII_ISUPPER(c) || VIM_ISDIGIT(c)) /* named file mark */ + { +*************** +*** 435,441 **** + + if (fnum != NULL) + *fnum = namedfm[c].fmark.fnum; +! else if (namedfm[c].fmark.fnum != curbuf->b_fnum) + { + /* mark is in another file */ + posp = &pos_copy; +--- 445,451 ---- + + if (fnum != NULL) + *fnum = namedfm[c].fmark.fnum; +! else if (namedfm[c].fmark.fnum != buf->b_fnum) + { + /* mark is in another file */ + posp = &pos_copy; +*** ../vim-7.3.775/src/proto/charset.pro 2010-08-15 21:57:28.000000000 +0200 +--- src/proto/charset.pro 2013-01-23 15:43:25.000000000 +0100 +*************** +*** 19,26 **** + int win_linetabsize __ARGS((win_T *wp, char_u *p, colnr_T len)); + int vim_isIDc __ARGS((int c)); + int vim_iswordc __ARGS((int c)); + 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)); +--- 19,27 ---- + int win_linetabsize __ARGS((win_T *wp, char_u *p, colnr_T len)); + int vim_isIDc __ARGS((int c)); + int vim_iswordc __ARGS((int c)); ++ int vim_iswordc_buf __ARGS((int c, buf_T *buf)); + int vim_iswordp __ARGS((char_u *p)); +! int vim_iswordp_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)); +*** ../vim-7.3.775/src/proto/mark.pro 2010-08-15 21:57:28.000000000 +0200 +--- src/proto/mark.pro 2013-01-23 14:24:23.000000000 +0100 +*************** +*** 5,12 **** + void checkpcmark __ARGS((void)); + pos_T *movemark __ARGS((int count)); + pos_T *movechangelist __ARGS((int count)); + pos_T *getmark __ARGS((int c, int changefile)); +! pos_T *getmark_fnum __ARGS((int c, int changefile, int *fnum)); + pos_T *getnextmark __ARGS((pos_T *startpos, int dir, int begin_line)); + void fmarks_check_names __ARGS((buf_T *buf)); + int check_mark __ARGS((pos_T *pos)); +--- 5,13 ---- + void checkpcmark __ARGS((void)); + pos_T *movemark __ARGS((int count)); + pos_T *movechangelist __ARGS((int count)); ++ pos_T *getmark_buf __ARGS((buf_T *buf, int c, int changefile)); + pos_T *getmark __ARGS((int c, int changefile)); +! pos_T *getmark_buf_fnum __ARGS((buf_T *buf, int c, int changefile, int *fnum)); + pos_T *getnextmark __ARGS((pos_T *startpos, int dir, int begin_line)); + void fmarks_check_names __ARGS((buf_T *buf)); + int check_mark __ARGS((pos_T *pos)); +*** ../vim-7.3.775/src/regexp.c 2011-07-20 17:58:14.000000000 +0200 +--- src/regexp.c 2013-01-23 14:19:15.000000000 +0100 +*************** +*** 3623,3629 **** + proftime_T *tm; /* timeout limit or NULL */ + { + long r; +- buf_T *save_curbuf = curbuf; + + reg_match = NULL; + reg_mmatch = rmp; +--- 3623,3628 ---- +*************** +*** 3638,3647 **** + #endif + ireg_maxcol = rmp->rmm_maxcol; + +- /* 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; + } +--- 3637,3643 ---- +*************** +*** 4185,4191 **** + int cmp = OPERAND(scan)[1]; + pos_T *pos; + +! pos = getmark(mark, FALSE); + if (pos == NULL /* mark doesn't exist */ + || pos->lnum <= 0 /* mark isn't set (in curbuf) */ + || (pos->lnum == reglnum + reg_firstlnum +--- 4181,4187 ---- + int cmp = OPERAND(scan)[1]; + pos_T *pos; + +! pos = getmark_buf(reg_buf, mark, FALSE); + if (pos == NULL /* mark doesn't exist */ + || pos->lnum <= 0 /* mark isn't set (in curbuf) */ + || (pos->lnum == reglnum + reg_firstlnum +*************** +*** 4315,4322 **** + #endif + else + { +! if (!vim_iswordc(c) +! || (reginput > regline && vim_iswordc(reginput[-1]))) + status = RA_NOMATCH; + } + break; +--- 4311,4318 ---- + #endif + else + { +! if (!vim_iswordc_buf(c, reg_buf) +! || (reginput > regline && vim_iswordc_buf(reginput[-1], reg_buf))) + status = RA_NOMATCH; + } + break; +*************** +*** 4339,4346 **** + #endif + else + { +! if (!vim_iswordc(reginput[-1]) +! || (reginput[0] != NUL && vim_iswordc(c))) + status = RA_NOMATCH; + } + break; /* Matched with EOW */ +--- 4335,4342 ---- + #endif + else + { +! if (!vim_iswordc_buf(reginput[-1], reg_buf) +! || (reginput[0] != NUL && vim_iswordc_buf(c, reg_buf))) + status = RA_NOMATCH; + } + break; /* Matched with EOW */ +*** ../vim-7.3.775/src/syntax.c 2012-10-21 21:25:17.000000000 +0200 +--- src/syntax.c 2013-01-23 14:19:15.000000000 +0100 +*************** +*** 1954,1962 **** + if (do_keywords) + { + line = syn_getcurline(); +! if (vim_iswordc_buf(line + current_col, syn_buf) + && (current_col == 0 +! || !vim_iswordc_buf(line + current_col - 1 + #ifdef FEAT_MBYTE + - (has_mbyte + ? (*mb_head_off)(line, line + current_col - 1) +--- 1954,1962 ---- + if (do_keywords) + { + line = syn_getcurline(); +! if (vim_iswordp_buf(line + current_col, syn_buf) + && (current_col == 0 +! || !vim_iswordp_buf(line + current_col - 1 + #ifdef FEAT_MBYTE + - (has_mbyte + ? (*mb_head_off)(line, line + current_col - 1) +*************** +*** 3280,3286 **** + #endif + ++kwlen; + } +! while (vim_iswordc_buf(kwp + kwlen, syn_buf)); + + if (kwlen > MAXKEYWLEN) + return 0; +--- 3280,3286 ---- + #endif + ++kwlen; + } +! while (vim_iswordp_buf(kwp + kwlen, syn_buf)); + + if (kwlen > MAXKEYWLEN) + return 0; +*** ../vim-7.3.775/src/version.c 2013-01-23 13:55:16.000000000 +0100 +--- src/version.c 2013-01-23 14:19:44.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 776, + /**/ + +-- +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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.777 b/7.3.777 new file mode 100644 index 0000000..53a2acf --- /dev/null +++ b/7.3.777 @@ -0,0 +1,59 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.777 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.777 +Problem: When building with Gnome locale gets reset. +Solution: Set locale after gnome_program_init(). (Christian Brabandt) +Files: src/gui_gtk_x11.c + + +*** ../vim-7.3.776/src/gui_gtk_x11.c 2012-05-18 17:03:14.000000000 +0200 +--- src/gui_gtk_x11.c 2013-01-23 15:58:14.000000000 +0100 +*************** +*** 3130,3137 **** +--- 3130,3145 ---- + * exits on failure, but that's a non-issue because we already called + * gtk_init_check() in gui_mch_init_check(). */ + if (using_gnome) ++ { + gnome_program_init(VIMPACKAGE, VIM_VERSION_SHORT, + LIBGNOMEUI_MODULE, gui_argc, gui_argv, NULL); ++ # if defined(FEAT_FLOAT) && defined(LC_NUMERIC) ++ /* Make sure strtod() uses a decimal point, not a comma. Gnome init ++ * may change it. */ ++ if (setlocale(LC_NUMERIC, NULL) != (char *) "C") ++ setlocale(LC_NUMERIC, "C"); ++ # endif ++ } + #endif + vim_free(gui_argv); + gui_argv = NULL; +*** ../vim-7.3.776/src/version.c 2013-01-23 15:53:08.000000000 +0100 +--- src/version.c 2013-01-23 15:56:21.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 777, + /**/ + +-- + [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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.778 b/7.3.778 new file mode 100644 index 0000000..62a8a91 --- /dev/null +++ b/7.3.778 @@ -0,0 +1,53 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.778 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.778 +Problem: Compiler error for adding up two pointers. (Titov Anatoly) +Solution: Add a type cast. (Ken Takata) +Files: src/mbyte.c + + +*** ../vim-7.3.777/src/mbyte.c 2013-01-19 14:01:57.000000000 +0100 +--- src/mbyte.c 2013-01-23 16:18:02.000000000 +0100 +*************** +*** 4325,4331 **** + { + if (IMAGE_SNAP_BY_ORDINAL(pINT->u1.Ordinal)) + continue; +! pImpName = (PIMAGE_IMPORT_BY_NAME)(pImage + pINT->u1.AddressOfData); + if (strcmp(pImpName->Name, funcname) == 0) + return (void *)pIAT->u1.Function; + } +--- 4325,4332 ---- + { + if (IMAGE_SNAP_BY_ORDINAL(pINT->u1.Ordinal)) + continue; +! pImpName = (PIMAGE_IMPORT_BY_NAME)(pImage +! + (UINT_PTR)(pINT->u1.AddressOfData)); + if (strcmp(pImpName->Name, funcname) == 0) + return (void *)pIAT->u1.Function; + } +*** ../vim-7.3.777/src/version.c 2013-01-23 16:00:05.000000000 +0100 +--- src/version.c 2013-01-23 16:18:40.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 778, + /**/ + +-- +'I generally avoid temptation unless I can't resist it." + -- Mae West + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.779 b/7.3.779 new file mode 100644 index 0000000..3bd4e88 --- /dev/null +++ b/7.3.779 @@ -0,0 +1,86 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.779 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.779 +Problem: Backwards search lands in wrong place when started on a multibyte + character. +Solution: Do not set extra_col for a backwards search. (Sung Pae) +Files: src/search.c, src/testdir/test44.in, src/testdir/test44.ok + + +*** ../vim-7.3.778/src/search.c 2013-01-17 17:01:57.000000000 +0100 +--- src/search.c 2013-01-23 16:27:35.000000000 +0100 +*************** +*** 572,578 **** + extra_col = 0; + #ifdef FEAT_MBYTE + /* Watch out for the "col" being MAXCOL - 2, used in a closed fold. */ +! else if (has_mbyte && pos->lnum >= 1 && pos->lnum <= buf->b_ml.ml_line_count + && pos->col < MAXCOL - 2) + { + ptr = ml_get_buf(buf, pos->lnum, FALSE) + pos->col; +--- 572,579 ---- + extra_col = 0; + #ifdef FEAT_MBYTE + /* Watch out for the "col" being MAXCOL - 2, used in a closed fold. */ +! else if (dir != BACKWARD && has_mbyte +! && pos->lnum >= 1 && pos->lnum <= buf->b_ml.ml_line_count + && pos->col < MAXCOL - 2) + { + ptr = ml_get_buf(buf, pos->lnum, FALSE) + pos->col; +*** ../vim-7.3.778/src/testdir/test44.in 2011-07-20 17:58:14.000000000 +0200 +--- src/testdir/test44.in 2013-01-23 16:22:38.000000000 +0100 +*************** +*** 29,34 **** +--- 29,37 ---- + x/\%d21879b + x/ [[=A=]]* [[=B=]]* [[=C=]]* [[=D=]]* [[=E=]]* [[=F=]]* [[=G=]]* [[=H=]]* [[=I=]]* [[=J=]]* [[=K=]]* [[=L=]]* [[=M=]]* [[=N=]]* [[=O=]]* [[=P=]]* [[=Q=]]* [[=R=]]* [[=S=]]* [[=T=]]* [[=U=]]* [[=V=]]* [[=W=]]* [[=X=]]* [[=Y=]]* [[=Z=]]*/e + x/ [[=a=]]* [[=b=]]* [[=c=]]* [[=d=]]* [[=e=]]* [[=f=]]* [[=g=]]* [[=h=]]* [[=i=]]* [[=j=]]* [[=k=]]* [[=l=]]* [[=m=]]* [[=n=]]* [[=o=]]* [[=p=]]* [[=q=]]* [[=r=]]* [[=s=]]* [[=t=]]* [[=u=]]* [[=v=]]* [[=w=]]* [[=x=]]* [[=y=]]* [[=z=]]*/e ++ x:" Test backwards search from a multi-byte char ++ /x ++ x?. + x:?^1?,$w! test.out + :e! test.out + G:put =matchstr(\"אבגד\", \".\", 0, 2) " ב +*************** +*** 57,59 **** +--- 60,63 ---- + g a啷bb + h AÀÁÂÃÄÅĀĂĄǍǞǠẢ BḂḆ CÇĆĈĊČ DĎĐḊḎḐ EÈÉÊËĒĔĖĘĚẺẼ FḞ GĜĞĠĢǤǦǴḠ HĤĦḢḦḨ IÌÍÎÏĨĪĬĮİǏỈ JĴ KĶǨḰḴ LĹĻĽĿŁḺ MḾṀ NÑŃŅŇṄṈ OÒÓÔÕÖØŌŎŐƠǑǪǬỎ PṔṖ Q RŔŖŘṘṞ SŚŜŞŠṠ TŢŤŦṪṮ UÙÚÛÜŨŪŬŮŰŲƯǓỦ VṼ WŴẀẂẄẆ XẊẌ YÝŶŸẎỲỶỸ ZŹŻŽƵẐẔ + i aàáâãäåāăąǎǟǡả bḃḇ cçćĉċč dďđḋḏḑ eèéêëēĕėęěẻẽ fḟ gĝğġģǥǧǵḡ hĥħḣḧḩẖ iìíîïĩīĭįǐỉ jĵǰ kķǩḱḵ lĺļľŀłḻ mḿṁ nñńņňʼnṅṉ oòóôõöøōŏőơǒǫǭỏ pṕṗ q rŕŗřṙṟ sśŝşšṡ tţťŧṫṯẗ uùúûüũūŭůűųưǔủ vṽ wŵẁẃẅẇẘ xẋẍ yýÿŷẏẙỳỷỹ zźżžƶẑẕ ++ j 0123❤x +*** ../vim-7.3.778/src/testdir/test44.ok 2011-07-20 17:58:14.000000000 +0200 +--- src/testdir/test44.ok 2013-01-23 16:22:38.000000000 +0100 +*************** +*** 16,21 **** +--- 16,22 ---- + g abb + h AÀÁÂÃÄÅĀĂĄǍǞǠẢ BḂḆ CÇĆĈĊČ DĎĐḊḎḐ EÈÉÊËĒĔĖĘĚẺẼ FḞ GĜĞĠĢǤǦǴḠ HĤĦḢḦḨ IÌÍÎÏĨĪĬĮİǏỈ JĴ KĶǨḰḴ LĹĻĽĿŁḺ MḾṀ NÑŃŅŇṄṈ OÒÓÔÕÖØŌŎŐƠǑǪǬỎ PṔṖ Q RŔŖŘṘṞ SŚŜŞŠṠ TŢŤŦṪṮ UÙÚÛÜŨŪŬŮŰŲƯǓỦ VṼ WŴẀẂẄẆ XẊẌ YÝŶŸẎỲỶỸ ZŹŻŽƵẐ + i aàáâãäåāăąǎǟǡả bḃḇ cçćĉċč dďđḋḏḑ eèéêëēĕėęěẻẽ fḟ gĝğġģǥǧǵḡ hĥħḣḧḩẖ iìíîïĩīĭįǐỉ jĵǰ kķǩḱḵ lĺļľŀłḻ mḿṁ nñńņňʼnṅṉ oòóôõöøōŏőơǒǫǭỏ pṕṗ q rŕŗřṙṟ sśŝşšṡ tţťŧṫṯẗ uùúûüũūŭůűųưǔủ vṽ wŵẁẃẅẇẘ xẋẍ yýÿŷẏẙỳỷỹ zźżžƶẑ ++ j 012❤ + ב + בג + א +*** ../vim-7.3.778/src/version.c 2013-01-23 16:19:17.000000000 +0100 +--- src/version.c 2013-01-23 16:39:23.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 779, + /**/ + +-- +Veni, Vidi, Video -- I came, I saw, I taped what I saw. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.780 b/7.3.780 new file mode 100644 index 0000000..a4f40e3 --- /dev/null +++ b/7.3.780 @@ -0,0 +1,111 @@ +diff -up vim73/runtime/doc/eval.txt.780 vim73/runtime/doc/eval.txt +--- vim73/runtime/doc/eval.txt.780 2013-01-28 13:41:04.000000000 +0100 ++++ runtime/doc/eval.txt 2013-01-28 13:44:58.000000000 +0100 +@@ -1705,7 +1705,7 @@ call( {func}, {arglist} [, {dict}]) + any call {func} with arguments {arglist} + ceil( {expr}) Float round {expr} up + changenr() Number current change number +-char2nr( {expr}) Number ASCII value of first char in {expr} ++char2nr( {expr}[, {utf8}]) Number ASCII/UTF8 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 +@@ -1862,7 +1862,7 @@ mkdir( {name} [, {path} [, {prot}]]) + mode( [expr]) String current editing mode + mzeval( {expr}) any evaluate |MzScheme| expression + nextnonblank( {lnum}) Number line nr of non-blank line >= {lnum} +-nr2char( {expr}) String single char with ASCII value {expr} ++nr2char( {expr}[, {utf8}]) String single char with ASCII/UTF8 value {expr} + or( {expr}, {expr}) Number bitwise OR + pathshorten( {expr}) String shorten directory names in a path + pow( {x}, {y}) Float {x} to the power of {y} +@@ -2282,13 +2282,17 @@ changenr() *changenr()* + redo it is the number of the redone change. After undo it is + one less than the number of the undone change. + +-char2nr({expr}) *char2nr()* ++char2nr({expr}[, {utf8}]) **char2nr()* + Return number value of the first char in {expr}. Examples: > + char2nr(" ") returns 32 + char2nr("ABC") returns 65 +-< The current 'encoding' is used. Example for "utf-8": > ++< When {utf8} is omitted or zero, the current 'encoding' is ++used. ++ Example for "utf-8": > + char2nr("�") returns 225 + char2nr("�"[0]) returns 195 ++ With {utf8} set to 1, always treat as utf-8 characters. ++ A combining character is a separate character. + < |nr2char()| does the opposite. + + cindent({lnum}) *cindent()* +diff -up vim73/src/eval.c.780 vim73/src/eval.c +--- vim73/src/eval.c.780 2013-01-28 13:41:04.000000000 +0100 ++++ src/eval.c 2013-01-28 13:41:04.000000000 +0100 +@@ -7854,7 +7854,7 @@ static struct fst + {"ceil", 1, 1, f_ceil}, + #endif + {"changenr", 0, 0, f_changenr}, +- {"char2nr", 1, 1, f_char2nr}, ++ {"char2nr", 1, 2, f_char2nr}, + {"cindent", 1, 1, f_cindent}, + {"clearmatches", 0, 0, f_clearmatches}, + {"col", 1, 1, f_col}, +@@ -8003,7 +8003,7 @@ static struct fst + {"mzeval", 1, 1, f_mzeval}, + #endif + {"nextnonblank", 1, 1, f_nextnonblank}, +- {"nr2char", 1, 1, f_nr2char}, ++ {"nr2char", 1, 2, f_nr2char}, + {"or", 2, 2, f_or}, + {"pathshorten", 1, 1, f_pathshorten}, + #ifdef FEAT_FLOAT +@@ -9303,7 +9303,17 @@ f_char2nr(argvars, rettv) + { + #ifdef FEAT_MBYTE + if (has_mbyte) +- rettv->vval.v_number = (*mb_ptr2char)(get_tv_string(&argvars[0])); ++ { ++ int utf8 = 0; ++ ++ if (argvars[1].v_type != VAR_UNKNOWN) ++ utf8 = get_tv_number_chk(&argvars[1], NULL); ++ ++ if (utf8) ++ rettv->vval.v_number = (*utf_ptr2char)(get_tv_string(&argvars[0])); ++ else ++ rettv->vval.v_number = (*mb_ptr2char)(get_tv_string(&argvars[0])); ++ } + else + #endif + rettv->vval.v_number = get_tv_string(&argvars[0])[0]; +@@ -14360,7 +14370,16 @@ f_nr2char(argvars, rettv) + + #ifdef FEAT_MBYTE + if (has_mbyte) +- buf[(*mb_char2bytes)((int)get_tv_number(&argvars[0]), buf)] = NUL; ++ { ++ int utf8 = 0; ++ ++ if (argvars[1].v_type != VAR_UNKNOWN) ++ utf8 = get_tv_number_chk(&argvars[1], NULL); ++ if (utf8) ++ buf[(*utf_char2bytes)((int)get_tv_number(&argvars[0]), buf)] = NUL; ++ else ++ buf[(*mb_char2bytes)((int)get_tv_number(&argvars[0]), buf)] = NUL; ++ } + else + #endif + { +diff -up vim73/src/version.c.780 vim73/src/version.c +--- vim73/src/version.c.780 2013-01-28 13:41:04.000000000 +0100 ++++ src/version.c 2013-01-28 13:41:04.000000000 +0100 +@@ -726,6 +726,8 @@ static char *(features[]) = + static int included_patches[] = + { /* Add new patch number below this line */ + /**/ ++ 780, ++/**/ + 779, + /**/ + 778, diff --git a/7.3.781 b/7.3.781 new file mode 100644 index 0000000..516ee82 --- /dev/null +++ b/7.3.781 @@ -0,0 +1,185 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.781 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.781 +Problem: Drawing with 'guifontwide' can be slow. +Solution: Draw multiple characters at a time. (Taro Muraoka) +Files: src/gui.c + + +*** ../vim-7.3.780/src/gui.c 2012-11-20 12:03:02.000000000 +0100 +--- src/gui.c 2013-01-23 17:28:48.000000000 +0100 +*************** +*** 2380,2386 **** + int cl; /* byte length of current char */ + int comping; /* current char is composing */ + int scol = col; /* screen column */ +! int dowide; /* use 'guifontwide' */ + + /* Break the string at a composing character, it has to be drawn on + * top of the previous character. */ +--- 2380,2388 ---- + int cl; /* byte length of current char */ + int comping; /* current char is composing */ + int scol = col; /* screen column */ +! int curr_wide; /* use 'guifontwide' */ +! int prev_wide = FALSE; +! int wide_changed; + + /* Break the string at a composing character, it has to be drawn on + * top of the previous character. */ +*************** +*** 2395,2403 **** + && fontset == NOFONTSET + # endif + && gui.wide_font != NOFONT) +! dowide = TRUE; + else +! dowide = FALSE; + comping = utf_iscomposing(c); + if (!comping) /* count cells from non-composing chars */ + cells += cn; +--- 2397,2405 ---- + && fontset == NOFONTSET + # endif + && gui.wide_font != NOFONT) +! curr_wide = TRUE; + else +! curr_wide = FALSE; + comping = utf_iscomposing(c); + if (!comping) /* count cells from non-composing chars */ + cells += cn; +*************** +*** 2405,2413 **** + if (cl == 0) /* hit end of string */ + len = i + cl; /* len must be wrong "cannot happen" */ + +! /* print the string so far if it's the last character or there is + * a composing character. */ +! if (i + cl >= len || (comping && i > start) || dowide + # if defined(FEAT_GUI_X11) + || (cn > 1 + # ifdef FEAT_XFONTSET +--- 2407,2417 ---- + if (cl == 0) /* hit end of string */ + len = i + cl; /* len must be wrong "cannot happen" */ + +! wide_changed = curr_wide != prev_wide; +! +! /* Print the string so far if it's the last character or there is + * a composing character. */ +! if (i + cl >= len || (comping && i > start) || wide_changed + # if defined(FEAT_GUI_X11) + || (cn > 1 + # ifdef FEAT_XFONTSET +*************** +*** 2419,2443 **** + # endif + ) + { +! if (comping || dowide) + thislen = i - start; + else + thislen = i - start + cl; + if (thislen > 0) + { + gui_mch_draw_string(gui.row, scol, s + start, thislen, + draw_flags); + start += thislen; + } + scol += cells; + cells = 0; +! if (dowide) + { +! gui_mch_set_font(gui.wide_font); +! gui_mch_draw_string(gui.row, scol - cn, +! s + start, cl, draw_flags); +! gui_mch_set_font(font); +! start += cl; + } + + # if defined(FEAT_GUI_X11) +--- 2423,2450 ---- + # endif + ) + { +! if (comping || wide_changed) + thislen = i - start; + else + thislen = i - start + cl; + if (thislen > 0) + { ++ if (prev_wide) ++ gui_mch_set_font(gui.wide_font); + gui_mch_draw_string(gui.row, scol, s + start, thislen, + draw_flags); ++ if (prev_wide) ++ gui_mch_set_font(font); + start += thislen; + } + scol += cells; + cells = 0; +! /* Adjust to not draw a character which width is changed +! * against with last one. */ +! if (wide_changed && !comping) + { +! scol -= cn; +! cl = 0; + } + + # if defined(FEAT_GUI_X11) +*************** +*** 2447,2453 **** + # ifdef FEAT_XFONTSET + && fontset == NOFONTSET + # endif +! && !dowide) + gui_mch_draw_string(gui.row, scol - 1, (char_u *)" ", + 1, draw_flags); + # endif +--- 2454,2460 ---- + # ifdef FEAT_XFONTSET + && fontset == NOFONTSET + # endif +! && !wide_changed) + gui_mch_draw_string(gui.row, scol - 1, (char_u *)" ", + 1, draw_flags); + # endif +*************** +*** 2465,2470 **** +--- 2472,2478 ---- + # endif + start = i + cl; + } ++ prev_wide = curr_wide; + } + /* The stuff below assumes "len" is the length in screen columns. */ + len = scol - col; +*** ../vim-7.3.780/src/version.c 2013-01-23 17:15:25.000000000 +0100 +--- src/version.c 2013-01-23 17:28:17.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 781, + /**/ + +-- +GUARD #1: Where'd you get the coconut? +ARTHUR: We found them. +GUARD #1: Found them? In Mercea? The coconut's tropical! +ARTHUR: What do you mean? +GUARD #1: Well, this is a temperate zone. + 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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.782 b/7.3.782 new file mode 100644 index 0000000..11d26b1 --- /dev/null +++ b/7.3.782 @@ -0,0 +1,171 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.782 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.782 +Problem: Windows: IME composition may use a wrong font. +Solution: Use 'guifontwide' for IME when it is set. (Taro Muraoka) +Files: runtime/doc/options.txt, src/gui.c, src/gui_w48.c, + src/proto/gui_w16.pro, src/proto/gui_w32.pro + + +*** ../vim-7.3.781/runtime/doc/options.txt 2012-08-15 16:20:59.000000000 +0200 +--- runtime/doc/options.txt 2013-01-23 18:24:48.000000000 +0100 +*************** +*** 3518,3523 **** +--- 3560,3569 ---- + to set 'guifontwide' at all unless you want to override the choice + made by Pango/Xft. + ++ Windows +multibyte only: *guifontwide_win_mbyte* ++ ++ If set and vaild, 'guifontwide' is used for IME instead of 'guifont'. ++ + *'guiheadroom'* *'ghr'* + 'guiheadroom' 'ghr' number (default 50) + global +*** ../vim-7.3.781/src/gui.c 2013-01-23 17:43:52.000000000 +0100 +--- src/gui.c 2013-01-23 18:24:48.000000000 +0100 +*************** +*** 1002,1007 **** +--- 1002,1010 ---- + else + #endif + gui.wide_font = font; ++ #ifdef FEAT_GUI_MSWIN ++ gui_mch_wide_font_changed(); ++ #endif + return OK; + } + #endif +*** ../vim-7.3.781/src/gui_w48.c 2012-12-16 12:50:33.000000000 +0100 +--- src/gui_w48.c 2013-01-23 18:32:45.000000000 +0100 +*************** +*** 323,332 **** +--- 323,337 ---- + + /* + * For control IME. ++ * ++ * These LOGFONT used for IME. + */ + #ifdef FEAT_MBYTE + # ifdef USE_IM_CONTROL ++ /* holds LOGFONT for 'guifontwide' if available, otherwise 'guifont' */ + static LOGFONT norm_logfont; ++ /* holds LOGFONT for 'guifont' always. */ ++ static LOGFONT sub_logfont; + # endif + #endif + +*************** +*** 3090,3095 **** +--- 3095,3133 ---- + return res; + } + ++ ++ #ifdef FEAT_MBYTE_IME ++ /* ++ * Set correct LOGFONT to IME. Use 'guifontwide' if available, otherwise use ++ * 'guifont' ++ */ ++ static void ++ update_im_font() ++ { ++ LOGFONT lf_wide; ++ ++ if (p_guifontwide != NULL && *p_guifontwide != NUL ++ && get_logfont(&lf_wide, p_guifontwide, NULL, TRUE) == OK) ++ norm_logfont = lf_wide; ++ else ++ norm_logfont = sub_logfont; ++ im_set_font(&norm_logfont); ++ } ++ #endif ++ ++ #ifdef FEAT_MBYTE ++ /* ++ * Handler of gui.wide_font (p_guifontwide) changed notification. ++ */ ++ void ++ gui_mch_wide_font_changed() ++ { ++ # ifdef FEAT_MBYTE_IME ++ update_im_font(); ++ # endif ++ } ++ #endif ++ + /* + * Initialise vim to use the font with the given name. + * Return FAIL if the font could not be loaded, OK otherwise. +*************** +*** 3112,3120 **** + font_name = lf.lfFaceName; + #if defined(FEAT_MBYTE_IME) || defined(GLOBAL_IME) + norm_logfont = lf; + #endif + #ifdef FEAT_MBYTE_IME +! im_set_font(&lf); + #endif + gui_mch_free_font(gui.norm_font); + gui.norm_font = font; +--- 3150,3159 ---- + font_name = lf.lfFaceName; + #if defined(FEAT_MBYTE_IME) || defined(GLOBAL_IME) + norm_logfont = lf; ++ sub_logfont = lf; + #endif + #ifdef FEAT_MBYTE_IME +! update_im_font(); + #endif + gui_mch_free_font(gui.norm_font); + gui.norm_font = font; +*** ../vim-7.3.781/src/proto/gui_w16.pro 2011-01-17 20:08:03.000000000 +0100 +--- src/proto/gui_w16.pro 2013-01-23 18:24:48.000000000 +0100 +*************** +*** 50,55 **** +--- 50,56 ---- + void gui_mch_insert_lines __ARGS((int row, int num_lines)); + void gui_mch_exit __ARGS((int rc)); + int gui_mch_init_font __ARGS((char_u *font_name, int fontset)); ++ void gui_mch_wide_font_changed __ARGS((void)); + int gui_mch_maximized __ARGS((void)); + void gui_mch_newfont __ARGS((void)); + void gui_mch_settitle __ARGS((char_u *title, char_u *icon)); +*** ../vim-7.3.781/src/proto/gui_w32.pro 2011-01-17 20:08:03.000000000 +0100 +--- src/proto/gui_w32.pro 2013-01-23 18:24:48.000000000 +0100 +*************** +*** 50,55 **** +--- 50,56 ---- + void gui_mch_insert_lines __ARGS((int row, int num_lines)); + void gui_mch_exit __ARGS((int rc)); + int gui_mch_init_font __ARGS((char_u *font_name, int fontset)); ++ void gui_mch_wide_font_changed __ARGS((void)); + int gui_mch_maximized __ARGS((void)); + void gui_mch_newfont __ARGS((void)); + void gui_mch_settitle __ARGS((char_u *title, char_u *icon)); +*** ../vim-7.3.781/src/version.c 2013-01-23 17:43:52.000000000 +0100 +--- src/version.c 2013-01-23 18:25:33.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 782, + /**/ + +-- +"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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.783 b/7.3.783 new file mode 100644 index 0000000..57f9784 --- /dev/null +++ b/7.3.783 @@ -0,0 +1,44 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.783 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.783 +Problem: Crash when mark is not set. (Dominique Pelle) +Solution: Check for NULL. +Files: src/normal.c + + +*** ../vim-7.3.782/src/normal.c 2013-01-17 13:24:00.000000000 +0100 +--- src/normal.c 2013-01-24 20:57:53.000000000 +0100 +*************** +*** 7552,7557 **** +--- 7552,7558 ---- + #endif + #ifdef FEAT_FOLDING + if (cap->oap->op_type == OP_NOP ++ && pos != NULL + && (pos == (pos_T *)-1 || !equalpos(old_cursor, *pos)) + && (fdo_flags & FDO_MARK) + && old_KeyTyped) +*** ../vim-7.3.782/src/version.c 2013-01-23 18:37:31.000000000 +0100 +--- src/version.c 2013-01-24 20:58:36.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 783, + /**/ + +-- +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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.784 b/7.3.784 new file mode 100644 index 0000000..eb30c07 --- /dev/null +++ b/7.3.784 @@ -0,0 +1,59 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.784 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.784 (after 7.3.781) +Problem: Error when 'guifontwide' has a comma. +Solution: Use gui.wide_font. (Taro Muraoka) +Files: src/gui_w48.c + + +*** ../vim-7.3.783/src/gui_w48.c 2013-01-23 18:37:31.000000000 +0100 +--- src/gui_w48.c 2013-01-25 19:26:23.000000000 +0100 +*************** +*** 3107,3113 **** + LOGFONT lf_wide; + + if (p_guifontwide != NULL && *p_guifontwide != NUL +! && get_logfont(&lf_wide, p_guifontwide, NULL, TRUE) == OK) + norm_logfont = lf_wide; + else + norm_logfont = sub_logfont; +--- 3107,3114 ---- + LOGFONT lf_wide; + + if (p_guifontwide != NULL && *p_guifontwide != NUL +! && gui.wide_font != NOFONT +! && GetObject((HFONT)gui.wide_font, sizeof(lf_wide), &lf_wide)) + norm_logfont = lf_wide; + else + norm_logfont = sub_logfont; +*** ../vim-7.3.783/src/version.c 2013-01-24 21:00:15.000000000 +0100 +--- src/version.c 2013-01-25 19:27:52.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 784, + /**/ + +-- +CUSTOMER: You're not fooling anyone y'know. Look, isn't there something + you can do? +DEAD PERSON: I feel happy... I feel happy. + [whop] +CUSTOMER: Ah, thanks very much. +MORTICIAN: Not at all. See you on Thursday. +CUSTOMER: Right. + 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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.785 b/7.3.785 new file mode 100644 index 0000000..e640b71 --- /dev/null +++ b/7.3.785 @@ -0,0 +1,104 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.785 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.785 (after 7.3.776) +Problem: Crash with specific use of search pattern. +Solution: Initialize reg_buf to curbuf. +Files: src/regexp.c + + +*** ../vim-7.3.784/src/regexp.c 2013-01-23 15:53:08.000000000 +0100 +--- src/regexp.c 2013-01-25 20:04:14.000000000 +0100 +*************** +*** 3413,3419 **** + * reg_startpos reg_mmatch->startpos + * reg_endpos reg_mmatch->endpos + * reg_win NULL window in which to search +! * reg_buf buffer in which to search + * reg_firstlnum first line in which to search + * reg_maxline 0 last line nr + * reg_line_lbr FALSE or TRUE FALSE +--- 3413,3419 ---- + * reg_startpos reg_mmatch->startpos + * reg_endpos reg_mmatch->endpos + * reg_win NULL window in which to search +! * reg_buf curbuf buffer in which to search + * reg_firstlnum first line in which to search + * reg_maxline 0 last line nr + * reg_line_lbr FALSE or TRUE FALSE +*************** +*** 3571,3576 **** +--- 3571,3577 ---- + reg_mmatch = NULL; + reg_maxline = 0; + reg_line_lbr = FALSE; ++ reg_buf = curbuf; + reg_win = NULL; + ireg_ic = rmp->rm_ic; + #ifdef FEAT_MBYTE +*************** +*** 3595,3600 **** +--- 3596,3602 ---- + reg_mmatch = NULL; + reg_maxline = 0; + reg_line_lbr = TRUE; ++ reg_buf = curbuf; + reg_win = NULL; + ireg_ic = rmp->rm_ic; + #ifdef FEAT_MBYTE +*************** +*** 4311,4318 **** + #endif + else + { +! if (!vim_iswordc_buf(c, reg_buf) +! || (reginput > regline && vim_iswordc_buf(reginput[-1], reg_buf))) + status = RA_NOMATCH; + } + break; +--- 4313,4320 ---- + #endif + else + { +! if (!vim_iswordc_buf(c, reg_buf) || (reginput > regline +! && vim_iswordc_buf(reginput[-1], reg_buf))) + status = RA_NOMATCH; + } + break; +*************** +*** 7135,7140 **** +--- 7137,7143 ---- + reg_match = rmp; + reg_mmatch = NULL; + reg_maxline = 0; ++ reg_buf = curbuf; + return vim_regsub_both(source, dest, copy, magic, backslash); + } + #endif +*** ../vim-7.3.784/src/version.c 2013-01-25 19:28:34.000000000 +0100 +--- src/version.c 2013-01-25 20:09:30.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 785, + /**/ + +-- +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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.786 b/7.3.786 new file mode 100644 index 0000000..a698821 --- /dev/null +++ b/7.3.786 @@ -0,0 +1,93 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.786 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.786 +Problem: Python threads don't run in the background (issue 103). +Solution: Move the statements to manipulate thread state. +Files: src/if_python.c + + +*** ../vim-7.3.785/src/if_python.c 2012-10-21 01:46:56.000000000 +0200 +--- src/if_python.c 2013-01-30 11:38:06.000000000 +0100 +*************** +*** 740,751 **** + #else + PyMac_Initialize(); + #endif +! /* Initialise threads, and save the state using PyGILState_Ensure. +! * Without the call to PyGILState_Ensure, thread specific state (such +! * as the system trace hook), will be lost between invocations of +! * Python code. */ + PyEval_InitThreads(); +- pygilstate = PyGILState_Ensure(); + #ifdef DYNAMIC_PYTHON + get_exceptions(); + #endif +--- 740,750 ---- + #else + PyMac_Initialize(); + #endif +! /* Initialise threads, and below save the state using +! * PyGILState_Ensure. Without the call to PyGILState_Ensure, thread +! * specific state (such as the system trace hook), will be lost +! * between invocations of Python code. */ + PyEval_InitThreads(); + #ifdef DYNAMIC_PYTHON + get_exceptions(); + #endif +*************** +*** 756,761 **** +--- 755,764 ---- + if (PythonMod_Init()) + goto fail; + ++ /* The first python thread is vim's, release the lock. */ ++ Python_SaveThread(); ++ pygilstate = PyGILState_Ensure(); ++ + globals = PyModule_GetDict(PyImport_AddModule("__main__")); + + /* Remove the element from sys.path that was added because of our +*************** +*** 764,771 **** + * the current directory in sys.path. */ + PyRun_SimpleString("import sys; sys.path = filter(lambda x: x != '/must>not&exist', sys.path)"); + +! /* the first python thread is vim's, release the lock */ +! Python_SaveThread(); + + initialised = 1; + } +--- 767,773 ---- + * the current directory in sys.path. */ + PyRun_SimpleString("import sys; sys.path = filter(lambda x: x != '/must>not&exist', sys.path)"); + +! PyGILState_Release(pygilstate); + + initialised = 1; + } +*** ../vim-7.3.785/src/version.c 2013-01-25 20:10:58.000000000 +0100 +--- src/version.c 2013-01-30 11:44:04.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 786, + /**/ + +-- +ARTHUR: I command you as King of the Britons to stand aside! +BLACK KNIGHT: I move for no man. + 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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.787 b/7.3.787 new file mode 100644 index 0000000..0d705c7 --- /dev/null +++ b/7.3.787 @@ -0,0 +1,161 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.787 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.787 +Problem: With 'relativenumber' set it is not possible to see the absolute + line number. +Solution: For the cursor line show the absolute line number instead of a + zero. (Nazri Ramliy) +Files: src/screen.c + + +*** ../vim-7.3.786/src/screen.c 2012-12-05 16:10:21.000000000 +0100 +--- src/screen.c 2013-01-30 12:29:33.000000000 +0100 +*************** +*** 2319,2324 **** +--- 2319,2325 ---- + { + int w = number_width(wp); + long num; ++ char *fmt = "%*ld "; + + if (len > w + 1) + len = w + 1; +*************** +*** 2327,2336 **** + /* 'number' */ + num = (long)lnum; + else + /* 'relativenumber', don't use negative numbers */ + num = labs((long)get_cursor_rel_lnum(wp, lnum)); + +! sprintf((char *)buf, "%*ld ", w, num); + #ifdef FEAT_RIGHTLEFT + if (wp->w_p_rl) + /* the line number isn't reversed */ +--- 2328,2344 ---- + /* 'number' */ + num = (long)lnum; + else ++ { + /* 'relativenumber', don't use negative numbers */ + num = labs((long)get_cursor_rel_lnum(wp, lnum)); ++ if (num == 0) ++ { ++ num = lnum; ++ fmt = "%-*ld "; ++ } ++ } + +! sprintf((char *)buf, fmt, w, num); + #ifdef FEAT_RIGHTLEFT + if (wp->w_p_rl) + /* the line number isn't reversed */ +*************** +*** 3484,3498 **** + ) + { + long num; + + if (wp->w_p_nu) + /* 'number' */ + num = (long)lnum; + else + /* 'relativenumber', don't use negative numbers */ + num = labs((long)get_cursor_rel_lnum(wp, lnum)); + +! sprintf((char *)extra, "%*ld ", + number_width(wp), num); + if (wp->w_skipcol > 0) + for (p_extra = extra; *p_extra == ' '; ++p_extra) +--- 3492,3514 ---- + ) + { + long num; ++ char *fmt = "%*ld "; + + if (wp->w_p_nu) + /* 'number' */ + num = (long)lnum; + else ++ { + /* 'relativenumber', don't use negative numbers */ + num = labs((long)get_cursor_rel_lnum(wp, lnum)); ++ if (num == 0) ++ { ++ num = lnum; ++ fmt = "%-*ld "; ++ } ++ } + +! sprintf((char *)extra, fmt, + number_width(wp), num); + if (wp->w_skipcol > 0) + for (p_extra = extra; *p_extra == ' '; ++p_extra) +*************** +*** 3513,3519 **** + * the current line differently. + * TODO: Can we use CursorLine instead of CursorLineNr + * when CursorLineNr isn't set? */ +! if (wp->w_p_cul && lnum == wp->w_cursor.lnum) + char_attr = hl_attr(HLF_CLN); + #endif + } +--- 3529,3536 ---- + * the current line differently. + * TODO: Can we use CursorLine instead of CursorLineNr + * when CursorLineNr isn't set? */ +! if ((wp->w_p_cul || wp->w_p_rnu) +! && lnum == wp->w_cursor.lnum) + char_attr = hl_attr(HLF_CLN); + #endif + } +*************** +*** 10238,10249 **** + int n; + linenr_T lnum; + +! if (wp->w_p_nu) +! /* 'number' */ +! lnum = wp->w_buffer->b_ml.ml_line_count; +! else +! /* 'relativenumber' */ +! lnum = wp->w_height; + + if (lnum == wp->w_nrwidth_line_count) + return wp->w_nrwidth_width; +--- 10255,10261 ---- + int n; + linenr_T lnum; + +! lnum = wp->w_buffer->b_ml.ml_line_count; + + if (lnum == wp->w_nrwidth_line_count) + return wp->w_nrwidth_width; +*** ../vim-7.3.786/src/version.c 2013-01-30 11:44:33.000000000 +0100 +--- src/version.c 2013-01-30 12:25:10.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 787, + /**/ + +-- +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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.788 b/7.3.788 new file mode 100644 index 0000000..99c08ce --- /dev/null +++ b/7.3.788 @@ -0,0 +1,48 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.788 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.788 +Problem: When only using patches build fails on missing nl.po. +Solution: Create an empty nl.po file. +Files: src/po/Makefile + + +*** ../vim-7.3.787/src/po/Makefile 2013-01-17 13:35:13.000000000 +0100 +--- src/po/Makefile 2013-01-30 12:50:41.000000000 +0100 +*************** +*** 176,181 **** +--- 176,185 ---- + + converted: $(MOCONVERTED) + ++ # nl.po was added later, if it does not exist use an empty file. ++ nl.po: ++ touch nl.po ++ + # Norwegian/Bokmal: "nb" is an alias for "no". + # Copying the file is not efficient, but I don't know of another way to make + # this work. +*** ../vim-7.3.787/src/version.c 2013-01-30 12:31:32.000000000 +0100 +--- src/version.c 2013-01-30 12:45:32.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 788, + /**/ + +-- +"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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.789 b/7.3.789 new file mode 100644 index 0000000..d935b78 --- /dev/null +++ b/7.3.789 @@ -0,0 +1,185 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.789 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.789 (after 7.3.776) +Problem: "\k" in regexp does not work in other window. +Solution: Use the right buffer. (Yukihiro Nakadaira) +Files: src/mbyte.c, src/proto/mbyte.pro, src/regexp.c + + +*** ../vim-7.3.788/src/mbyte.c 2013-01-23 16:19:17.000000000 +0100 +--- src/mbyte.c 2013-01-30 13:53:07.000000000 +0100 +*************** +*** 869,879 **** + mb_get_class(p) + char_u *p; + { + if (MB_BYTE2LEN(p[0]) == 1) + { + if (p[0] == NUL || vim_iswhite(p[0])) + return 0; +! if (vim_iswordc(p[0])) + return 2; + return 1; + } +--- 869,887 ---- + mb_get_class(p) + char_u *p; + { ++ return mb_get_class_buf(p, curbuf); ++ } ++ ++ int ++ mb_get_class_buf(p, buf) ++ char_u *p; ++ buf_T *buf; ++ { + if (MB_BYTE2LEN(p[0]) == 1) + { + if (p[0] == NUL || vim_iswhite(p[0])) + return 0; +! if (vim_iswordc_buf(p[0], buf)) + return 2; + return 1; + } +*** ../vim-7.3.788/src/proto/mbyte.pro 2011-08-10 13:21:30.000000000 +0200 +--- src/proto/mbyte.pro 2013-01-30 13:53:27.000000000 +0100 +*************** +*** 4,9 **** +--- 4,10 ---- + int bomb_size __ARGS((void)); + void remove_bom __ARGS((char_u *s)); + int mb_get_class __ARGS((char_u *p)); ++ int mb_get_class_buf __ARGS((char_u *p, buf_T *buf)); + int dbcs_class __ARGS((unsigned lead, unsigned trail)); + int latin_char2len __ARGS((int c)); + int latin_char2bytes __ARGS((int c, char_u *buf)); +*** ../vim-7.3.788/src/regexp.c 2013-01-25 20:10:58.000000000 +0100 +--- src/regexp.c 2013-01-30 13:55:39.000000000 +0100 +*************** +*** 4013,4020 **** + reg_prev_class() + { + if (reginput > regline) +! return mb_get_class(reginput - 1 +! - (*mb_head_off)(regline, reginput - 1)); + return -1; + } + +--- 4013,4020 ---- + reg_prev_class() + { + if (reginput > regline) +! return mb_get_class_buf(reginput - 1 +! - (*mb_head_off)(regline, reginput - 1), reg_buf); + return -1; + } + +*************** +*** 4304,4310 **** + int this_class; + + /* Get class of current and previous char (if it exists). */ +! this_class = mb_get_class(reginput); + if (this_class <= 1) + status = RA_NOMATCH; /* not on a word at all */ + else if (reg_prev_class() == this_class) +--- 4304,4310 ---- + int this_class; + + /* Get class of current and previous char (if it exists). */ +! this_class = mb_get_class_buf(reginput, reg_buf); + if (this_class <= 1) + status = RA_NOMATCH; /* not on a word at all */ + else if (reg_prev_class() == this_class) +*************** +*** 4328,4334 **** + int this_class, prev_class; + + /* Get class of current and previous char (if it exists). */ +! this_class = mb_get_class(reginput); + prev_class = reg_prev_class(); + if (this_class == prev_class + || prev_class == 0 || prev_class == 1) +--- 4328,4334 ---- + int this_class, prev_class; + + /* Get class of current and previous char (if it exists). */ +! this_class = mb_get_class_buf(reginput, reg_buf); + prev_class = reg_prev_class(); + if (this_class == prev_class + || prev_class == 0 || prev_class == 1) +*************** +*** 4365,4378 **** + break; + + case KWORD: +! if (!vim_iswordp(reginput)) + status = RA_NOMATCH; + else + ADVANCE_REGINPUT(); + break; + + case SKWORD: +! if (VIM_ISDIGIT(*reginput) || !vim_iswordp(reginput)) + status = RA_NOMATCH; + else + ADVANCE_REGINPUT(); +--- 4365,4378 ---- + break; + + case KWORD: +! if (!vim_iswordp_buf(reginput, reg_buf)) + status = RA_NOMATCH; + else + ADVANCE_REGINPUT(); + break; + + case SKWORD: +! if (VIM_ISDIGIT(*reginput) || !vim_iswordp_buf(reginput, reg_buf)) + status = RA_NOMATCH; + else + ADVANCE_REGINPUT(); +*************** +*** 5734,5740 **** + case SKWORD + ADD_NL: + while (count < maxcount) + { +! if (vim_iswordp(scan) && (testval || !VIM_ISDIGIT(*scan))) + { + mb_ptr_adv(scan); + } +--- 5734,5741 ---- + case SKWORD + ADD_NL: + while (count < maxcount) + { +! if (vim_iswordp_buf(scan, reg_buf) +! && (testval || !VIM_ISDIGIT(*scan))) + { + mb_ptr_adv(scan); + } +*** ../vim-7.3.788/src/version.c 2013-01-30 12:50:50.000000000 +0100 +--- src/version.c 2013-01-30 13:58:07.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 789, + /**/ + +-- +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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.790 b/7.3.790 new file mode 100644 index 0000000..a2bf0c6 --- /dev/null +++ b/7.3.790 @@ -0,0 +1,52 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.790 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.790 +Problem: After reloading a buffer the modelines are not processed. +Solution: call do_modelines(). (Ken Takata) +Files: src/fileio.c + + +*** ../vim-7.3.789/src/fileio.c 2012-12-05 19:13:11.000000000 +0100 +--- src/fileio.c 2013-01-30 14:08:21.000000000 +0100 +*************** +*** 7243,7248 **** +--- 7243,7251 ---- + * reset it, might have had a read error. */ + if (orig_mode == curbuf->b_orig_mode) + curbuf->b_p_ro |= old_ro; ++ ++ /* Modelines must override settings done by autocommands. */ ++ do_modelines(0); + } + + /* restore curwin/curbuf and a few other things */ +*** ../vim-7.3.789/src/version.c 2013-01-30 13:59:31.000000000 +0100 +--- src/version.c 2013-01-30 14:02:30.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 790, + /**/ + +-- +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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.791 b/7.3.791 new file mode 100644 index 0000000..0b984b7 --- /dev/null +++ b/7.3.791 @@ -0,0 +1,2124 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.791 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.791 +Problem: MzScheme interface doesn't work propely. +Solution: Make it work better. (Sergey Khorev) +Files: runtime/doc/if_mzsch.txt, src/configure.in, src/auto/configure, + src/eval.c, src/if_mzsch.c, src/if_mzsch.h, src/Make_ming.mak, + src/Make_mvc.mak, src/os_unix.c, src/proto/eval.pro, + src/testdir/test70.in, src/testdir/test70.ok + + +*** ../vim-7.3.790/runtime/doc/if_mzsch.txt 2010-08-15 21:57:14.000000000 +0200 +--- runtime/doc/if_mzsch.txt 2013-01-30 14:26:44.000000000 +0100 +*************** +*** 11,17 **** + 3. Threads |mzscheme-threads| + 4. Vim access from MzScheme |mzscheme-vim| + 5. mzeval() Vim function |mzscheme-mzeval| +! 6. Dynamic loading |mzscheme-dynamic| + + {Vi does not have any of these commands} + +--- 11,18 ---- + 3. Threads |mzscheme-threads| + 4. Vim access from MzScheme |mzscheme-vim| + 5. mzeval() Vim function |mzscheme-mzeval| +! 6. Using Function references |mzscheme-funcref| +! 7. Dynamic loading |mzscheme-dynamic| + + {Vi does not have any of these commands} + +*************** +*** 21,30 **** + Based on the work of Brent Fulgham. + Dynamic loading added by Sergey Khorev + +! For downloading MzScheme and other info: +! http://www.plt-scheme.org/software/mzscheme/ + +! Note: On FreeBSD you should use the "drscheme" port. + + ============================================================================== + 1. Commands *mzscheme-commands* +--- 22,38 ---- + Based on the work of Brent Fulgham. + Dynamic loading added by Sergey Khorev + +! MzScheme and PLT Scheme names have been rebranded as Racket. For more +! information please check http://racket-lang.org + +! Futures and places of Racket version 5.x up to and including 5.3.1 do not +! work correctly with processes created by Vim. +! The simplest solution is to build Racket on your own with these features +! disabled: > +! ./configure --disable-futures --disable-places --prefix=your-install-prefix +! +! To speed up the process, you might also want to use --disable-gracket and +! --disable-docs + + ============================================================================== + 1. Commands *mzscheme-commands* +*************** +*** 155,162 **** + (eval {expr-string}) Evaluate the vim expression into + respective MzScheme object: |Lists| are + represented as Scheme lists, +! |Dictionaries| as hash tables. +! NOTE the name clashes with MzScheme eval + (range-start) Start/End of the range passed with + (range-end) the Scheme command. + (beep) beep +--- 163,173 ---- + (eval {expr-string}) Evaluate the vim expression into + respective MzScheme object: |Lists| are + represented as Scheme lists, +! |Dictionaries| as hash tables, +! |Funcref|s as functions (see also +! |mzscheme-funcref|) +! NOTE the name clashes with MzScheme eval, +! use module qualifiers to overcome this. + (range-start) Start/End of the range passed with + (range-end) the Scheme command. + (beep) beep +*************** +*** 237,243 **** + evaluate MzScheme expressions and pass their values to VimL. + + ============================================================================== +! 6. Dynamic loading *mzscheme-dynamic* *E815* + + On MS-Windows the MzScheme libraries can be loaded dynamically. The |:version| + output then includes |+mzscheme/dyn|. +--- 248,270 ---- + evaluate MzScheme expressions and pass their values to VimL. + + ============================================================================== +! 6. Using Function references *mzscheme-funcref* +! +! MzScheme interface allows use of |Funcref|s so you can call Vim functions +! directly from Scheme. For instance: > +! function! MyAdd2(arg) +! return a:arg + 2 +! endfunction +! mz (define f2 (vim-eval "function(\"MyAdd2\")")) +! mz (f2 7) +! < or : > +! :mz (define indent (vim-eval "function('indent')")) +! " return Vim indent for line 12 +! :mz (indent 12) +! < +! +! ============================================================================== +! 7. Dynamic loading *mzscheme-dynamic* *E815* + + On MS-Windows the MzScheme libraries can be loaded dynamically. The |:version| + output then includes |+mzscheme/dyn|. +*** ../vim-7.3.790/src/configure.in 2012-12-12 14:25:01.000000000 +0100 +--- src/configure.in 2013-01-30 14:26:44.000000000 +0100 +*************** +*** 617,623 **** + + 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/libmzscheme3m.a"; then + MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a" + MZSCHEME_CFLAGS="-DMZ_PRECISE_GC" +--- 617,624 ---- + + if test "X$vi_cv_path_mzscheme_pfx" != "X"; then + if test "x$MACOSX" = "xyes"; then +! MZSCHEME_LIBS="-framework Racket" +! MZSCHEME_CFLAGS="-DMZ_PRECISE_GC" + elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"; then + MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a" + MZSCHEME_CFLAGS="-DMZ_PRECISE_GC" +*************** +*** 660,665 **** +--- 661,670 ---- + else + if test -d $vi_cv_path_mzscheme_pfx/share/racket/collects; then + SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/share/racket/ ++ else ++ if test -d $vi_cv_path_mzscheme_pfx/collects; then ++ SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/ ++ fi + fi + fi + fi +*** ../vim-7.3.790/src/auto/configure 2012-12-12 14:25:01.000000000 +0100 +--- src/auto/configure 2013-01-30 14:27:31.000000000 +0100 +*************** +*** 4927,4933 **** + + 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/libmzscheme3m.a"; then + MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a" + MZSCHEME_CFLAGS="-DMZ_PRECISE_GC" +--- 4927,4934 ---- + + if test "X$vi_cv_path_mzscheme_pfx" != "X"; then + if test "x$MACOSX" = "xyes"; then +! MZSCHEME_LIBS="-framework Racket" +! MZSCHEME_CFLAGS="-DMZ_PRECISE_GC" + elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"; then + MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a" + MZSCHEME_CFLAGS="-DMZ_PRECISE_GC" +*************** +*** 4968,4973 **** +--- 4969,4978 ---- + else + if test -d $vi_cv_path_mzscheme_pfx/share/racket/collects; then + SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/share/racket/ ++ else ++ if test -d $vi_cv_path_mzscheme_pfx/collects; then ++ SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/ ++ fi + fi + fi + fi +*** ../vim-7.3.790/src/eval.c 2013-01-23 17:15:25.000000000 +0100 +--- src/eval.c 2013-01-30 14:33:00.000000000 +0100 +*************** +*** 14333,14338 **** +--- 14333,14354 ---- + str = get_tv_string_buf(&argvars[0], buf); + do_mzeval(str, rettv); + } ++ ++ void ++ mzscheme_call_vim(name, args, rettv) ++ char_u *name; ++ typval_T *args; ++ typval_T *rettv; ++ { ++ typval_T argvars[3]; ++ ++ argvars[0].v_type = VAR_STRING; ++ argvars[0].vval.v_string = name; ++ copy_tv(args, &argvars[1]); ++ argvars[2].v_type = VAR_UNKNOWN; ++ f_call(argvars, rettv); ++ clear_tv(&argvars[1]); ++ } + #endif + + /* +*** ../vim-7.3.790/src/if_mzsch.c 2012-11-28 15:37:46.000000000 +0100 +--- src/if_mzsch.c 2013-01-30 14:34:37.000000000 +0100 +*************** +*** 1,11 **** + /* vi:set ts=8 sts=4 sw=4: + * + * MzScheme interface by Sergey Khorev +! * Original work by Brent Fulgham + * (Based on lots of help from Matthew Flatt) + * +- * TODO Convert byte-strings to char strings? +- * + * This consists of six parts: + * 1. MzScheme interpreter main program + * 2. Routines that handle the external interface between MzScheme and +--- 1,9 ---- + /* vi:set ts=8 sts=4 sw=4: + * + * MzScheme interface by Sergey Khorev +! * Based on work by Brent Fulgham + * (Based on lots of help from Matthew Flatt) + * + * This consists of six parts: + * 1. MzScheme interpreter main program + * 2. Routines that handle the external interface between MzScheme and +*************** +*** 142,148 **** + static int do_mzscheme_command(exarg_T *, void *, Scheme_Closed_Prim *what); + static void startup_mzscheme(void); + static char *string_to_line(Scheme_Object *obj); +! static void do_output(char *mesg, intptr_t len); + static void do_printf(char *format, ...); + static void do_flush(void); + static Scheme_Object *_apply_thunk_catch_exceptions( +--- 140,151 ---- + static int do_mzscheme_command(exarg_T *, void *, Scheme_Closed_Prim *what); + static void startup_mzscheme(void); + static char *string_to_line(Scheme_Object *obj); +! #if MZSCHEME_VERSION_MAJOR >= 500 +! # define OUTPUT_LEN_TYPE intptr_t +! #else +! # define OUTPUT_LEN_TYPE long +! #endif +! static void do_output(char *mesg, OUTPUT_LEN_TYPE len); + static void do_printf(char *format, ...); + static void do_flush(void); + static Scheme_Object *_apply_thunk_catch_exceptions( +*************** +*** 166,175 **** + static int mzscheme_env_main(Scheme_Env *env, int argc, char **argv); + static int mzscheme_init(void); + #ifdef FEAT_EVAL +! static Scheme_Object *vim_to_mzscheme(typval_T *vim_value, int depth, + Scheme_Hash_Table *visited); +! static int mzscheme_to_vim(Scheme_Object *obj, typval_T *tv, int depth, + Scheme_Hash_Table *visited); + #endif + + #ifdef MZ_PRECISE_GC +--- 169,181 ---- + static int mzscheme_env_main(Scheme_Env *env, int argc, char **argv); + static int mzscheme_init(void); + #ifdef FEAT_EVAL +! static Scheme_Object *vim_to_mzscheme(typval_T *vim_value); +! static Scheme_Object *vim_to_mzscheme_impl(typval_T *vim_value, int depth, + Scheme_Hash_Table *visited); +! static int mzscheme_to_vim(Scheme_Object *obj, typval_T *tv); +! static int mzscheme_to_vim_impl(Scheme_Object *obj, typval_T *tv, int depth, + Scheme_Hash_Table *visited); ++ static Scheme_Object *vim_funcref(void *data, int argc, Scheme_Object **argv); + #endif + + #ifdef MZ_PRECISE_GC +*************** +*** 183,188 **** +--- 189,201 ---- + } + static int buffer_fixup_proc(void *obj) + { ++ /* apparently not needed as the object will be uncollectable while ++ * the buffer is alive ++ */ ++ /* ++ vim_mz_buffer* buf = (vim_mz_buffer*) obj; ++ buf->buf->b_mzscheme_ref = GC_fixup_self(obj); ++ */ + return buffer_size_proc(obj); + } + static int window_size_proc(void *obj UNUSED) +*************** +*** 195,206 **** + } + static int window_fixup_proc(void *obj) + { + return window_size_proc(obj); + } + #endif + + #ifdef DYNAMIC_MZSCHEME +- + static Scheme_Object *dll_scheme_eof; + static Scheme_Object *dll_scheme_false; + static Scheme_Object *dll_scheme_void; +--- 208,233 ---- + } + static int window_fixup_proc(void *obj) + { ++ /* apparently not needed as the object will be uncollectable while ++ * the window is alive ++ */ ++ /* ++ vim_mz_window* win = (vim_mz_window*) obj; ++ win->win->w_mzscheme_ref = GC_fixup_self(obj); ++ */ + return window_size_proc(obj); + } ++ /* with precise GC, w_mzscheme_ref and b_mzscheme_ref are immobile boxes ++ * containing pointers to a window/buffer ++ * with conservative GC these are simply pointers*/ ++ # define WINDOW_REF(win) *(vim_mz_window **)((win)->w_mzscheme_ref) ++ # define BUFFER_REF(buf) *(vim_mz_buffer **)((buf)->b_mzscheme_ref) ++ #else ++ # define WINDOW_REF(win) (vim_mz_window *)((win)->w_mzscheme_ref) ++ # define BUFFER_REF(buf) (vim_mz_buffer *)((buf)->b_mzscheme_ref) + #endif + + #ifdef DYNAMIC_MZSCHEME + static Scheme_Object *dll_scheme_eof; + static Scheme_Object *dll_scheme_false; + static Scheme_Object *dll_scheme_void; +*************** +*** 319,324 **** +--- 346,352 ---- + (Scheme_Object *s); + static Scheme_Object *(*dll_scheme_char_string_to_path) + (Scheme_Object *s); ++ static void *(*dll_scheme_set_collects_path)(Scheme_Object *p); + # endif + static Scheme_Hash_Table *(*dll_scheme_make_hash_table)(int type); + static void (*dll_scheme_hash_set)(Scheme_Hash_Table *table, +*************** +*** 378,388 **** + # endif + # define scheme_gc_ptr_ok dll_scheme_gc_ptr_ok + # if MZSCHEME_VERSION_MAJOR < 299 +! # define scheme_get_sized_string_output dll_scheme_get_sized_string_output + # else + # define scheme_get_sized_byte_string_output \ + dll_scheme_get_sized_byte_string_output +! # define scheme_get_param dll_scheme_get_param + # endif + # define scheme_intern_symbol dll_scheme_intern_symbol + # define scheme_lookup_global dll_scheme_lookup_global +--- 406,416 ---- + # endif + # define scheme_gc_ptr_ok dll_scheme_gc_ptr_ok + # if MZSCHEME_VERSION_MAJOR < 299 +! # define scheme_get_sized_byte_string_output dll_scheme_get_sized_string_output + # else + # define scheme_get_sized_byte_string_output \ + dll_scheme_get_sized_byte_string_output +! # define scheme_get_param dll_scheme_get_param + # endif + # define scheme_intern_symbol dll_scheme_intern_symbol + # define scheme_lookup_global dll_scheme_lookup_global +*************** +*** 391,398 **** + # define scheme_make_pair dll_scheme_make_pair + # define scheme_make_prim_w_arity dll_scheme_make_prim_w_arity + # if MZSCHEME_VERSION_MAJOR < 299 +! # define scheme_make_string dll_scheme_make_string +! # define scheme_make_string_output_port dll_scheme_make_string_output_port + # else + # define scheme_make_byte_string dll_scheme_make_byte_string + # define scheme_make_byte_string_output_port \ +--- 419,426 ---- + # define scheme_make_pair dll_scheme_make_pair + # define scheme_make_prim_w_arity dll_scheme_make_prim_w_arity + # if MZSCHEME_VERSION_MAJOR < 299 +! # define scheme_make_byte_string dll_scheme_make_string +! # define scheme_make_byte_string_output_port dll_scheme_make_string_output_port + # else + # define scheme_make_byte_string dll_scheme_make_byte_string + # define scheme_make_byte_string_output_port \ +*************** +*** 421,426 **** +--- 449,455 ---- + dll_scheme_char_string_to_byte_string + # define scheme_char_string_to_path \ + dll_scheme_char_string_to_path ++ # define scheme_set_collects_path dll_scheme_set_collects_path + # endif + # define scheme_make_hash_table dll_scheme_make_hash_table + # define scheme_hash_set dll_scheme_hash_set +*************** +*** 529,534 **** +--- 558,564 ---- + {"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}, ++ {"scheme_set_collects_path", (void **)&dll_scheme_set_collects_path}, + # endif + {"scheme_make_hash_table", (void **)&dll_scheme_make_hash_table}, + {"scheme_hash_set", (void **)&dll_scheme_hash_set}, +*************** +*** 625,635 **** + } + #endif /* DYNAMIC_MZSCHEME */ + + /* need to put it here for dynamic stuff to work */ + #if defined(INCLUDE_MZSCHEME_BASE) + # include "mzscheme_base.c" + #elif MZSCHEME_VERSION_MAJOR >= 400 +! # error MzScheme 4.x must include mzscheme_base.c, for MinGW32 you need to define MZSCHEME_GENERATE_BASE=yes + #endif + + /* +--- 655,694 ---- + } + #endif /* DYNAMIC_MZSCHEME */ + ++ #if MZSCHEME_VERSION_MAJOR < 299 ++ # define GUARANTEED_STRING_ARG(proc, num) GUARANTEE_STRING(proc, num) ++ #else ++ static Scheme_Object * ++ guaranteed_byte_string_arg(char *proc, int num, int argc, Scheme_Object **argv) ++ { ++ if (SCHEME_BYTE_STRINGP(argv[num])) ++ { ++ return argv[num]; ++ } ++ else if (SCHEME_CHAR_STRINGP(argv[num])) ++ { ++ Scheme_Object *tmp = NULL; ++ MZ_GC_DECL_REG(2); ++ MZ_GC_VAR_IN_REG(0, argv[num]); ++ MZ_GC_VAR_IN_REG(1, tmp); ++ MZ_GC_REG(); ++ tmp = scheme_char_string_to_byte_string(argv[num]); ++ MZ_GC_UNREG(); ++ return tmp; ++ } ++ else ++ scheme_wrong_type(proc, "string", num, argc, argv); ++ /* unreachable */ ++ return scheme_void; ++ } ++ # define GUARANTEED_STRING_ARG(proc, num) guaranteed_byte_string_arg(proc, num, argc, argv) ++ #endif ++ + /* need to put it here for dynamic stuff to work */ + #if defined(INCLUDE_MZSCHEME_BASE) + # include "mzscheme_base.c" + #elif MZSCHEME_VERSION_MAJOR >= 400 +! # error MzScheme >=4 must include mzscheme_base.c, for MinGW32 you need to define MZSCHEME_GENERATE_BASE=yes + #endif + + /* +*************** +*** 861,866 **** +--- 920,930 ---- + scheme_set_stack_base(stack_base, 1); + #endif + ++ #ifndef TRAMPOLINED_MZVIM_STARTUP ++ /* in newer versions of precise GC the initial env has been created */ ++ environment = scheme_basic_env(); ++ #endif ++ + MZ_REGISTER_STATIC(environment); + MZ_REGISTER_STATIC(curout); + MZ_REGISTER_STATIC(curerr); +*************** +*** 869,878 **** + MZ_REGISTER_STATIC(exn_message); + MZ_REGISTER_STATIC(vim_exn); + +- #ifndef TRAMPOLINED_MZVIM_STARTUP +- /* in newer versions of precise GC the initial env has been created */ +- environment = scheme_basic_env(); +- #endif + MZ_GC_CHECK(); + + #ifdef INCLUDE_MZSCHEME_BASE +--- 933,938 ---- +*************** +*** 909,923 **** + Scheme_Object *coll_byte_string = NULL; + Scheme_Object *coll_char_string = NULL; + Scheme_Object *coll_path = NULL; +- Scheme_Object *coll_pair = NULL; +- Scheme_Config *config = NULL; + +! MZ_GC_DECL_REG(5); + MZ_GC_VAR_IN_REG(0, coll_byte_string); + MZ_GC_VAR_IN_REG(1, coll_char_string); + MZ_GC_VAR_IN_REG(2, coll_path); +- MZ_GC_VAR_IN_REG(3, coll_pair); +- MZ_GC_VAR_IN_REG(4, config); + MZ_GC_REG(); + coll_byte_string = scheme_make_byte_string(MZSCHEME_COLLECTS); + MZ_GC_CHECK(); +--- 969,979 ---- + Scheme_Object *coll_byte_string = NULL; + Scheme_Object *coll_char_string = NULL; + Scheme_Object *coll_path = NULL; + +! MZ_GC_DECL_REG(3); + MZ_GC_VAR_IN_REG(0, coll_byte_string); + MZ_GC_VAR_IN_REG(1, coll_char_string); + MZ_GC_VAR_IN_REG(2, coll_path); + MZ_GC_REG(); + coll_byte_string = scheme_make_byte_string(MZSCHEME_COLLECTS); + MZ_GC_CHECK(); +*************** +*** 925,935 **** + MZ_GC_CHECK(); + coll_path = scheme_char_string_to_path(coll_char_string); + MZ_GC_CHECK(); +! coll_pair = scheme_make_pair(coll_path, scheme_null); +! MZ_GC_CHECK(); +! config = scheme_config; +! MZ_GC_CHECK(); +! scheme_set_param(config, MZCONFIG_COLLECTION_PATHS, coll_pair); + MZ_GC_CHECK(); + MZ_GC_UNREG(); + } +--- 981,987 ---- + MZ_GC_CHECK(); + coll_path = scheme_char_string_to_path(coll_char_string); + MZ_GC_CHECK(); +! scheme_set_collects_path(coll_path); + MZ_GC_CHECK(); + MZ_GC_UNREG(); + } +*************** +*** 944,954 **** + MZ_GC_VAR_IN_REG(1, coll_pair); + MZ_GC_VAR_IN_REG(2, config); + MZ_GC_REG(); +! coll_string = scheme_make_string(MZSCHEME_COLLECTS); + MZ_GC_CHECK(); + coll_pair = scheme_make_pair(coll_string, scheme_null); + MZ_GC_CHECK(); +! config = scheme_config; + MZ_GC_CHECK(); + scheme_set_param(config, MZCONFIG_COLLECTION_PATHS, coll_pair); + MZ_GC_CHECK(); +--- 996,1006 ---- + MZ_GC_VAR_IN_REG(1, coll_pair); + MZ_GC_VAR_IN_REG(2, config); + MZ_GC_REG(); +! coll_string = scheme_make_byte_string(MZSCHEME_COLLECTS); + MZ_GC_CHECK(); + coll_pair = scheme_make_pair(coll_string, scheme_null); + MZ_GC_CHECK(); +! config = scheme_current_config(); + MZ_GC_CHECK(); + scheme_set_param(config, MZCONFIG_COLLECTION_PATHS, coll_pair); + MZ_GC_CHECK(); +*************** +*** 991,997 **** + MZ_GC_VAR_IN_REG(3, guard); + MZ_GC_VAR_IN_REG(4, config); + MZ_GC_REG(); +! config = scheme_config; + MZ_GC_CHECK(); + args[0] = scheme_get_param(config, MZCONFIG_SECURITY_GUARD); + MZ_GC_CHECK(); +--- 1043,1049 ---- + MZ_GC_VAR_IN_REG(3, guard); + MZ_GC_VAR_IN_REG(4, config); + MZ_GC_REG(); +! config = scheme_current_config(); + MZ_GC_CHECK(); + args[0] = scheme_get_param(config, MZCONFIG_SECURITY_GUARD); + MZ_GC_CHECK(); +*************** +*** 1055,1066 **** + MZ_GC_DECL_REG(1); + MZ_GC_VAR_IN_REG(0, config); + MZ_GC_REG(); +! config = scheme_config; + MZ_GC_CHECK(); + /* recreate ports each call effectively clearing these ones */ +! curout = scheme_make_string_output_port(); + MZ_GC_CHECK(); +! curerr = scheme_make_string_output_port(); + MZ_GC_CHECK(); + scheme_set_param(config, MZCONFIG_OUTPUT_PORT, curout); + MZ_GC_CHECK(); +--- 1107,1118 ---- + MZ_GC_DECL_REG(1); + MZ_GC_VAR_IN_REG(0, config); + MZ_GC_REG(); +! config = scheme_current_config(); + MZ_GC_CHECK(); + /* recreate ports each call effectively clearing these ones */ +! curout = scheme_make_byte_string_output_port(); + MZ_GC_CHECK(); +! curerr = scheme_make_byte_string_output_port(); + MZ_GC_CHECK(); + scheme_set_param(config, MZCONFIG_OUTPUT_PORT, curout); + MZ_GC_CHECK(); +*************** +*** 1149,1161 **** + { + if (buf->b_mzscheme_ref) + { +! vim_mz_buffer *bp; + +! bp = buf->b_mzscheme_ref; + bp->buf = INVALID_BUFFER_VALUE; +! buf->b_mzscheme_ref = NULL; + scheme_gc_ptr_ok(bp); + MZ_GC_CHECK(); + } + } + +--- 1201,1221 ---- + { + if (buf->b_mzscheme_ref) + { +! vim_mz_buffer *bp = NULL; +! MZ_GC_DECL_REG(1); +! MZ_GC_VAR_IN_REG(0, bp); +! MZ_GC_REG(); + +! bp = BUFFER_REF(buf); + bp->buf = INVALID_BUFFER_VALUE; +! #ifndef MZ_PRECISE_GC + scheme_gc_ptr_ok(bp); ++ #else ++ scheme_free_immobile_box(buf->b_mzscheme_ref); ++ #endif ++ buf->b_mzscheme_ref = NULL; + MZ_GC_CHECK(); ++ MZ_GC_UNREG(); + } + } + +*************** +*** 1167,1178 **** + { + if (win->w_mzscheme_ref) + { +! vim_mz_window *wp; +! wp = win->w_mzscheme_ref; + wp->win = INVALID_WINDOW_VALUE; +! win->w_mzscheme_ref = NULL; + scheme_gc_ptr_ok(wp); + MZ_GC_CHECK(); + } + } + +--- 1227,1246 ---- + { + if (win->w_mzscheme_ref) + { +! vim_mz_window *wp = NULL; +! MZ_GC_DECL_REG(1); +! MZ_GC_VAR_IN_REG(0, wp); +! MZ_GC_REG(); +! wp = WINDOW_REF(win); + wp->win = INVALID_WINDOW_VALUE; +! #ifndef MZ_PRECISE_GC + scheme_gc_ptr_ok(wp); ++ #else ++ scheme_free_immobile_box(win->w_mzscheme_ref); ++ #endif ++ win->w_mzscheme_ref = NULL; + MZ_GC_CHECK(); ++ MZ_GC_UNREG(); + } + } + +*************** +*** 1349,1355 **** + } + + static void +! do_output(char *mesg, intptr_t len UNUSED) + { + /* TODO: use len, the string may not be NUL terminated */ + do_intrnl_output(mesg, 0); +--- 1417,1423 ---- + } + + static void +! do_output(char *mesg, OUTPUT_LEN_TYPE len UNUSED) + { + /* TODO: use len, the string may not be NUL terminated */ + do_intrnl_output(mesg, 0); +*************** +*** 1371,1379 **** + do_flush(void) + { + char *buff; +! intptr_t length; + +! buff = scheme_get_sized_string_output(curerr, &length); + MZ_GC_CHECK(); + if (length) + { +--- 1439,1447 ---- + do_flush(void) + { + char *buff; +! OUTPUT_LEN_TYPE length; + +! buff = scheme_get_sized_byte_string_output(curerr, &length); + MZ_GC_CHECK(); + if (length) + { +*************** +*** 1381,1387 **** + return; + } + +! buff = scheme_get_sized_string_output(curout, &length); + MZ_GC_CHECK(); + if (length) + do_output(buff, length); +--- 1449,1455 ---- + return; + } + +! buff = scheme_get_sized_byte_string_output(curout, &length); + MZ_GC_CHECK(); + if (length) + do_output(buff, length); +*************** +*** 1398,1409 **** + vim_command(void *data, int argc, Scheme_Object **argv) + { + Vim_Prim *prim = (Vim_Prim *)data; +! char *cmd = SCHEME_STR_VAL(GUARANTEE_STRING(prim->name, 0)); + + /* may be use do_cmdline_cmd? */ +! do_cmdline((char_u *)cmd, NULL, NULL, DOCMD_NOWAIT|DOCMD_VERBOSE); + update_screen(VALID); + + raise_if_error(); + return scheme_void; + } +--- 1466,1482 ---- + vim_command(void *data, int argc, Scheme_Object **argv) + { + Vim_Prim *prim = (Vim_Prim *)data; +! Scheme_Object *cmd = NULL; +! MZ_GC_DECL_REG(1); +! MZ_GC_VAR_IN_REG(0, cmd); +! MZ_GC_REG(); +! cmd = GUARANTEED_STRING_ARG(prim->name, 0); + + /* may be use do_cmdline_cmd? */ +! do_cmdline(BYTE_STRING_VALUE(cmd), NULL, NULL, DOCMD_NOWAIT|DOCMD_VERBOSE); + update_screen(VALID); + ++ MZ_GC_UNREG(); + raise_if_error(); + return scheme_void; + } +*************** +*** 1414,1439 **** + { + #ifdef FEAT_EVAL + Vim_Prim *prim = (Vim_Prim *)data; +! char *expr; +! Scheme_Object *result; +! /* hash table to store visited values to avoid infinite loops */ +! Scheme_Hash_Table *visited = NULL; + typval_T *vim_result; +! +! MZ_GC_DECL_REG(1); +! MZ_GC_VAR_IN_REG(0, visited); + MZ_GC_REG(); + +! visited = scheme_make_hash_table(SCHEME_hash_ptr); +! MZ_GC_CHECK(); +! +! expr = SCHEME_STR_VAL(GUARANTEE_STRING(prim->name, 0)); +! vim_result = eval_expr((char_u *)expr, NULL); + + if (vim_result == NULL) + raise_vim_exn(_("invalid expression")); + +! result = vim_to_mzscheme(vim_result, 1, visited); + free_tv(vim_result); + + MZ_GC_UNREG(); +--- 1487,1508 ---- + { + #ifdef FEAT_EVAL + Vim_Prim *prim = (Vim_Prim *)data; +! Scheme_Object *result = NULL; + typval_T *vim_result; +! Scheme_Object *expr = NULL; +! MZ_GC_DECL_REG(2); +! MZ_GC_VAR_IN_REG(0, result); +! MZ_GC_VAR_IN_REG(1, expr); + MZ_GC_REG(); ++ expr = GUARANTEED_STRING_ARG(prim->name, 0); + +! vim_result = eval_expr(BYTE_STRING_VALUE(expr), NULL); + + if (vim_result == NULL) + raise_vim_exn(_("invalid expression")); + +! result = vim_to_mzscheme(vim_result); +! MZ_GC_CHECK(); + free_tv(vim_result); + + MZ_GC_UNREG(); +*************** +*** 1474,1489 **** + get_option(void *data, int argc, Scheme_Object **argv) + { + Vim_Prim *prim = (Vim_Prim *)data; +- char_u *name; + long value; + char *strval; + int rc; +! Scheme_Object *rval; + int opt_flags = 0; + buf_T *save_curb = curbuf; + win_T *save_curw = curwin; + +! name = (char_u *)SCHEME_STR_VAL(GUARANTEE_STRING(prim->name, 0)); + + if (argc > 1) + { +--- 1543,1563 ---- + get_option(void *data, int argc, Scheme_Object **argv) + { + Vim_Prim *prim = (Vim_Prim *)data; + long value; + char *strval; + int rc; +! Scheme_Object *rval = NULL; +! Scheme_Object *name = NULL; + int opt_flags = 0; + buf_T *save_curb = curbuf; + win_T *save_curw = curwin; + +! MZ_GC_DECL_REG(2); +! MZ_GC_VAR_IN_REG(0, rval); +! MZ_GC_VAR_IN_REG(1, name); +! MZ_GC_REG(); +! +! name = GUARANTEED_STRING_ARG(prim->name, 0); + + if (argc > 1) + { +*************** +*** 1513,1535 **** + scheme_wrong_type(prim->name, "vim-buffer/window", 1, argc, argv); + } + +! rc = get_option_value(name, &value, (char_u **)&strval, opt_flags); + curbuf = save_curb; + curwin = save_curw; + + switch (rc) + { + case 1: + return scheme_make_integer_value(value); + case 0: +! rval = scheme_make_string(strval); + MZ_GC_CHECK(); + vim_free(strval); + return rval; + case -1: + case -2: + raise_vim_exn(_("hidden option")); + case -3: + raise_vim_exn(_("unknown option")); + } + /* unreachable */ +--- 1587,1613 ---- + scheme_wrong_type(prim->name, "vim-buffer/window", 1, argc, argv); + } + +! rc = get_option_value(BYTE_STRING_VALUE(name), &value, (char_u **)&strval, opt_flags); + curbuf = save_curb; + curwin = save_curw; + + switch (rc) + { + case 1: ++ MZ_GC_UNREG(); + return scheme_make_integer_value(value); + case 0: +! rval = scheme_make_byte_string(strval); + MZ_GC_CHECK(); + vim_free(strval); ++ MZ_GC_UNREG(); + return rval; + case -1: + case -2: ++ MZ_GC_UNREG(); + raise_vim_exn(_("hidden option")); + case -3: ++ MZ_GC_UNREG(); + raise_vim_exn(_("unknown option")); + } + /* unreachable */ +*************** +*** 1540,1552 **** + static Scheme_Object * + set_option(void *data, int argc, Scheme_Object **argv) + { +! char_u *cmd; + int opt_flags = 0; + buf_T *save_curb = curbuf; + win_T *save_curw = curwin; + Vim_Prim *prim = (Vim_Prim *)data; + +- GUARANTEE_STRING(prim->name, 0); + if (argc > 1) + { + if (M_global == NULL) +--- 1618,1635 ---- + static Scheme_Object * + set_option(void *data, int argc, Scheme_Object **argv) + { +! char_u *command = NULL; + int opt_flags = 0; + buf_T *save_curb = curbuf; + win_T *save_curw = curwin; + Vim_Prim *prim = (Vim_Prim *)data; ++ Scheme_Object *cmd = NULL; ++ ++ MZ_GC_DECL_REG(1); ++ MZ_GC_VAR_IN_REG(0, cmd); ++ MZ_GC_REG(); ++ cmd = GUARANTEED_STRING_ARG(prim->name, 0); + + if (argc > 1) + { + if (M_global == NULL) +*************** +*** 1575,1583 **** + } + + /* do_set can modify cmd, make copy */ +! cmd = vim_strsave((char_u *)SCHEME_STR_VAL(argv[0])); +! do_set(cmd, opt_flags); +! vim_free(cmd); + update_screen(NOT_VALID); + curbuf = save_curb; + curwin = save_curw; +--- 1658,1667 ---- + } + + /* do_set can modify cmd, make copy */ +! command = vim_strsave(BYTE_STRING_VALUE(cmd)); +! MZ_GC_UNREG(); +! do_set(command, opt_flags); +! vim_free(command); + update_screen(NOT_VALID); + curbuf = save_curb; + curwin = save_curw; +*************** +*** 1639,1645 **** + + MZ_GC_DECL_REG(1); + MZ_GC_VAR_IN_REG(0, self); +- MZ_GC_REG(); + + /* We need to handle deletion of windows underneath us. + * If we add a "w_mzscheme_ref" field to the win_T structure, +--- 1723,1728 ---- +*************** +*** 1650,1667 **** + * object, and reject them if the win_T *field is invalid. + */ + if (win->w_mzscheme_ref != NULL) +! return win->w_mzscheme_ref; + +! self = scheme_malloc_fail_ok(scheme_malloc, sizeof(vim_mz_window)); + vim_memset(self, 0, sizeof(vim_mz_window)); + scheme_dont_gc_ptr(self); /* because win isn't visible to GC */ + MZ_GC_CHECK(); +- win->w_mzscheme_ref = self; + self->win = win; + self->so.type = mz_window_type; + + MZ_GC_UNREG(); +! return (Scheme_Object *)(self); + } + + /* (get-win-num [window]) */ +--- 1733,1756 ---- + * object, and reject them if the win_T *field is invalid. + */ + if (win->w_mzscheme_ref != NULL) +! return (Scheme_Object *)WINDOW_REF(win); + +! MZ_GC_REG(); +! self = scheme_malloc_fail_ok(scheme_malloc_tagged, sizeof(vim_mz_window)); + vim_memset(self, 0, sizeof(vim_mz_window)); ++ #ifndef MZ_PRECISE_GC + scheme_dont_gc_ptr(self); /* because win isn't visible to GC */ ++ #else ++ win->w_mzscheme_ref = scheme_malloc_immobile_box(NULL); ++ #endif ++ MZ_GC_CHECK(); ++ WINDOW_REF(win) = self; + MZ_GC_CHECK(); + self->win = win; + self->so.type = mz_window_type; + + MZ_GC_UNREG(); +! return (Scheme_Object *)self; + } + + /* (get-win-num [window]) */ +*************** +*** 1837,1858 **** + mzscheme_open_buffer(void *data, int argc, Scheme_Object **argv) + { + Vim_Prim *prim = (Vim_Prim *)data; +- char_u *fname; + int num = 0; +! Scheme_Object *onum; + + #ifdef HAVE_SANDBOX + sandbox_check(); + #endif +- fname = (char_u *)SCHEME_STR_VAL(GUARANTEE_STRING(prim->name, 0)); + /* TODO make open existing file */ +! num = buflist_add(fname, BLN_LISTED | BLN_CURBUF); + + if (num == 0) + raise_vim_exn(_("couldn't open buffer")); + + onum = scheme_make_integer(num); +! return get_buffer_by_num(data, 1, &onum); + } + + /* (get-buff-by-num {buffernum}) */ +--- 1926,1956 ---- + mzscheme_open_buffer(void *data, int argc, Scheme_Object **argv) + { + Vim_Prim *prim = (Vim_Prim *)data; + int num = 0; +! Scheme_Object *onum = NULL; +! Scheme_Object *buf = NULL; +! Scheme_Object *fname; +! +! MZ_GC_DECL_REG(3); +! MZ_GC_VAR_IN_REG(0, onum); +! MZ_GC_VAR_IN_REG(1, buf); +! MZ_GC_VAR_IN_REG(2, fname); +! MZ_GC_REG(); +! fname = GUARANTEED_STRING_ARG(prim->name, 0); + + #ifdef HAVE_SANDBOX + sandbox_check(); + #endif + /* TODO make open existing file */ +! num = buflist_add(BYTE_STRING_VALUE(fname), BLN_LISTED | BLN_CURBUF); + + if (num == 0) + raise_vim_exn(_("couldn't open buffer")); + + onum = scheme_make_integer(num); +! buf = get_buffer_by_num(data, 1, &onum); +! MZ_GC_UNREG(); +! return buf; + } + + /* (get-buff-by-num {buffernum}) */ +*************** +*** 1878,1900 **** + { + Vim_Prim *prim = (Vim_Prim *)data; + buf_T *buf; +! char_u *fname; + +! fname = (char_u *)SCHEME_STR_VAL(GUARANTEE_STRING(prim->name, 0)); + + for (buf = firstbuf; buf; buf = buf->b_next) + if (buf->b_ffname == NULL || buf->b_sfname == NULL) + /* empty string */ + { +! if (fname[0] == NUL) +! return buffer_new(buf); + } +! else if (!fnamecmp(buf->b_ffname, fname) +! || !fnamecmp(buf->b_sfname, fname)) + /* either short or long filename matches */ +! return buffer_new(buf); + +! return scheme_false; + } + + /* (get-next-buff [buffer]) */ +--- 1976,2009 ---- + { + Vim_Prim *prim = (Vim_Prim *)data; + buf_T *buf; +! Scheme_Object *buffer = NULL; +! Scheme_Object *fname = NULL; + +! MZ_GC_DECL_REG(2); +! MZ_GC_VAR_IN_REG(0, buffer); +! MZ_GC_VAR_IN_REG(1, fname); +! MZ_GC_REG(); +! fname = GUARANTEED_STRING_ARG(prim->name, 0); +! buffer = scheme_false; + + for (buf = firstbuf; buf; buf = buf->b_next) ++ { + if (buf->b_ffname == NULL || buf->b_sfname == NULL) + /* empty string */ + { +! if (BYTE_STRING_VALUE(fname)[0] == NUL) +! buffer = buffer_new(buf); + } +! else if (!fnamecmp(buf->b_ffname, BYTE_STRING_VALUE(fname)) +! || !fnamecmp(buf->b_sfname, BYTE_STRING_VALUE(fname))) +! { + /* either short or long filename matches */ +! buffer = buffer_new(buf); +! } +! } + +! MZ_GC_UNREG(); +! return buffer; + } + + /* (get-next-buff [buffer]) */ +*************** +*** 1951,1957 **** + Vim_Prim *prim = (Vim_Prim *)data; + vim_mz_buffer *buf = get_buffer_arg(prim->name, 0, argc, argv); + +! return scheme_make_string((char *)buf->buf->b_ffname); + } + + /* (curr-buff) */ +--- 2060,2066 ---- + Vim_Prim *prim = (Vim_Prim *)data; + vim_mz_buffer *buf = get_buffer_arg(prim->name, 0, argc, argv); + +! return scheme_make_byte_string((char *)buf->buf->b_ffname); + } + + /* (curr-buff) */ +*************** +*** 1968,1992 **** + + MZ_GC_DECL_REG(1); + MZ_GC_VAR_IN_REG(0, self); +- MZ_GC_REG(); + + /* We need to handle deletion of buffers underneath us. + * If we add a "b_mzscheme_ref" field to the buf_T structure, + * then we can get at it in buf_freeall() in vim. + */ + if (buf->b_mzscheme_ref) +! return buf->b_mzscheme_ref; + +! self = scheme_malloc_fail_ok(scheme_malloc, sizeof(vim_mz_buffer)); + vim_memset(self, 0, sizeof(vim_mz_buffer)); +! scheme_dont_gc_ptr(self); /* because buf isn't visible to GC */ + MZ_GC_CHECK(); +- buf->b_mzscheme_ref = self; + self->buf = buf; + self->so.type = mz_buffer_type; + + MZ_GC_UNREG(); +! return (Scheme_Object *)(self); + } + + /* +--- 2077,2106 ---- + + MZ_GC_DECL_REG(1); + MZ_GC_VAR_IN_REG(0, self); + + /* We need to handle deletion of buffers underneath us. + * If we add a "b_mzscheme_ref" field to the buf_T structure, + * then we can get at it in buf_freeall() in vim. + */ + if (buf->b_mzscheme_ref) +! return (Scheme_Object *)BUFFER_REF(buf); + +! MZ_GC_REG(); +! self = scheme_malloc_fail_ok(scheme_malloc_tagged, sizeof(vim_mz_buffer)); + vim_memset(self, 0, sizeof(vim_mz_buffer)); +! #ifndef MZ_PRECISE_GC +! scheme_dont_gc_ptr(self); /* because buf isn't visible to GC */ +! #else +! buf->b_mzscheme_ref = scheme_malloc_immobile_box(NULL); +! #endif +! MZ_GC_CHECK(); +! BUFFER_REF(buf) = self; + MZ_GC_CHECK(); + self->buf = buf; + self->so.type = mz_buffer_type; + + MZ_GC_UNREG(); +! return (Scheme_Object *)self; + } + + /* +*************** +*** 2023,2029 **** + line = ml_get_buf(buf->buf, (linenr_T)linenr, FALSE); + + raise_if_error(); +! return scheme_make_string((char *)line); + } + + +--- 2137,2143 ---- + line = ml_get_buf(buf->buf, (linenr_T)linenr, FALSE); + + raise_if_error(); +! return scheme_make_byte_string((char *)line); + } + + +*************** +*** 2066,2072 **** + + for (i = n; i >= 0; --i) + { +! Scheme_Object *str = scheme_make_string( + (char *)ml_get_buf(buf->buf, (linenr_T)(lo+i), FALSE)); + raise_if_error(); + +--- 2180,2186 ---- + + for (i = n; i >= 0; --i) + { +! Scheme_Object *str = scheme_make_byte_string( + (char *)ml_get_buf(buf->buf, (linenr_T)(lo+i), FALSE)); + raise_if_error(); + +*************** +*** 2298,2305 **** + MZ_GC_VAR_IN_REG(1, rest); + MZ_GC_REG(); + +! array = (char **)alloc(new_len * sizeof(char *)); +! vim_memset(array, 0, new_len * sizeof(char *)); + + rest = line_list; + for (i = 0; i < new_len; ++i) +--- 2412,2419 ---- + MZ_GC_VAR_IN_REG(1, rest); + MZ_GC_REG(); + +! array = (char **)alloc((new_len+1)* sizeof(char *)); +! vim_memset(array, 0, (new_len+1) * sizeof(char *)); + + rest = line_list; + for (i = 0; i < new_len; ++i) +*************** +*** 2481,2488 **** + MZ_GC_VAR_IN_REG(1, rest); + MZ_GC_REG(); + +! array = (char **)alloc(size * sizeof(char *)); +! vim_memset(array, 0, size * sizeof(char *)); + + rest = list; + for (i = 0; i < size; ++i) +--- 2595,2602 ---- + MZ_GC_VAR_IN_REG(1, rest); + MZ_GC_REG(); + +! array = (char **)alloc((size+1) * sizeof(char *)); +! vim_memset(array, 0, (size+1) * sizeof(char *)); + + rest = list; + for (i = 0; i < size; ++i) +*************** +*** 2589,2595 **** + { + char *scheme_str = NULL; + char *vim_str = NULL; +! intptr_t len; + int i; + + scheme_str = scheme_display_to_string(obj, &len); +--- 2703,2709 ---- + { + char *scheme_str = NULL; + char *vim_str = NULL; +! OUTPUT_LEN_TYPE len; + int i; + + scheme_str = scheme_display_to_string(obj, &len); +*************** +*** 2598,2607 **** + * are replacing a single line, and we must replace it with + * a single line. + */ +! if (memchr(scheme_str, '\n', (size_t)len)) + scheme_signal_error(_("string cannot contain newlines")); + +! vim_str = (char *)alloc((int)(len + 1)); + + /* Create a copy of the string, with internal nulls replaced by + * newline characters, as is the vim convention. +--- 2712,2721 ---- + * are replacing a single line, and we must replace it with + * a single line. + */ +! if (memchr(scheme_str, '\n', len)) + scheme_signal_error(_("string cannot contain newlines")); + +! vim_str = (char *)alloc(len + 1); + + /* Create a copy of the string, with internal nulls replaced by + * newline characters, as is the vim convention. +*************** +*** 2625,2637 **** + * Convert Vim value into MzScheme, adopted from if_python.c + */ + static Scheme_Object * +! vim_to_mzscheme(typval_T *vim_value, int depth, Scheme_Hash_Table *visited) + { + Scheme_Object *result = NULL; + int new_value = TRUE; + +! MZ_GC_DECL_REG(1); + MZ_GC_VAR_IN_REG(0, result); + MZ_GC_REG(); + + /* Avoid infinite recursion */ +--- 2739,2773 ---- + * Convert Vim value into MzScheme, adopted from if_python.c + */ + static Scheme_Object * +! vim_to_mzscheme(typval_T *vim_value) +! { +! Scheme_Object *result = NULL; +! /* hash table to store visited values to avoid infinite loops */ +! Scheme_Hash_Table *visited = NULL; +! +! MZ_GC_DECL_REG(2); +! MZ_GC_VAR_IN_REG(0, result); +! MZ_GC_VAR_IN_REG(1, visited); +! MZ_GC_REG(); +! +! visited = scheme_make_hash_table(SCHEME_hash_ptr); +! MZ_GC_CHECK(); +! +! result = vim_to_mzscheme_impl(vim_value, 1, visited); +! +! MZ_GC_UNREG(); +! return result; +! } +! +! static Scheme_Object * +! vim_to_mzscheme_impl(typval_T *vim_value, int depth, Scheme_Hash_Table *visited) + { + Scheme_Object *result = NULL; + int new_value = TRUE; + +! MZ_GC_DECL_REG(2); + MZ_GC_VAR_IN_REG(0, result); ++ MZ_GC_VAR_IN_REG(1, visited); + MZ_GC_REG(); + + /* Avoid infinite recursion */ +*************** +*** 2650,2657 **** + new_value = FALSE; + else if (vim_value->v_type == VAR_STRING) + { +! result = scheme_make_string(vim_value->vval.v_string == NULL +! ? "" : (char *)vim_value->vval.v_string); + MZ_GC_CHECK(); + } + else if (vim_value->v_type == VAR_NUMBER) +--- 2786,2792 ---- + new_value = FALSE; + else if (vim_value->v_type == VAR_STRING) + { +! result = scheme_make_byte_string((char *)vim_value->vval.v_string); + MZ_GC_CHECK(); + } + else if (vim_value->v_type == VAR_NUMBER) +*************** +*** 2682,2695 **** + MZ_GC_REG(); + + curr = list->lv_last; +! obj = vim_to_mzscheme(&curr->li_tv, depth + 1, visited); + result = scheme_make_pair(obj, scheme_null); + MZ_GC_CHECK(); + + while (curr != list->lv_first) + { + curr = curr->li_prev; +! obj = vim_to_mzscheme(&curr->li_tv, depth + 1, visited); + result = scheme_make_pair(obj, result); + MZ_GC_CHECK(); + } +--- 2817,2830 ---- + MZ_GC_REG(); + + curr = list->lv_last; +! obj = vim_to_mzscheme_impl(&curr->li_tv, depth + 1, visited); + result = scheme_make_pair(obj, scheme_null); + MZ_GC_CHECK(); + + while (curr != list->lv_first) + { + curr = curr->li_prev; +! obj = vim_to_mzscheme_impl(&curr->li_tv, depth + 1, visited); + result = scheme_make_pair(obj, result); + MZ_GC_CHECK(); + } +*************** +*** 2722,2729 **** + --todo; + + di = dict_lookup(hi); +! obj = vim_to_mzscheme(&di->di_tv, depth + 1, visited); +! key = scheme_make_string((char *)hi->hi_key); + MZ_GC_CHECK(); + scheme_hash_set((Scheme_Hash_Table *)result, key, obj); + MZ_GC_CHECK(); +--- 2857,2864 ---- + --todo; + + di = dict_lookup(hi); +! obj = vim_to_mzscheme_impl(&di->di_tv, depth + 1, visited); +! key = scheme_make_byte_string((char *)hi->hi_key); + MZ_GC_CHECK(); + scheme_hash_set((Scheme_Hash_Table *)result, key, obj); + MZ_GC_CHECK(); +*************** +*** 2732,2737 **** +--- 2867,2888 ---- + } + MZ_GC_UNREG(); + } ++ else if (vim_value->v_type == VAR_FUNC) ++ { ++ Scheme_Object *funcname = NULL; ++ ++ MZ_GC_DECL_REG(1); ++ MZ_GC_VAR_IN_REG(0, funcname); ++ MZ_GC_REG(); ++ ++ funcname = scheme_make_byte_string((char *)vim_value->vval.v_string); ++ MZ_GC_CHECK(); ++ result = scheme_make_closed_prim_w_arity(vim_funcref, funcname, ++ (const char *)BYTE_STRING_VALUE(funcname), 0, -1); ++ MZ_GC_CHECK(); ++ ++ MZ_GC_UNREG(); ++ } + else + { + result = scheme_void; +*************** +*** 2747,2757 **** + } + + static int +! mzscheme_to_vim(Scheme_Object *obj, typval_T *tv, int depth, + Scheme_Hash_Table *visited) + { + int status = OK; + typval_T *found; + MZ_GC_CHECK(); + if (depth > 100) /* limit the deepest recursion level */ + { +--- 2898,2939 ---- + } + + static int +! mzscheme_to_vim(Scheme_Object *obj, typval_T *tv) +! { +! int i, status; +! Scheme_Hash_Table *visited = NULL; +! +! MZ_GC_DECL_REG(2); +! MZ_GC_VAR_IN_REG(0, obj); +! MZ_GC_VAR_IN_REG(1, visited); +! MZ_GC_REG(); +! +! visited = scheme_make_hash_table(SCHEME_hash_ptr); +! MZ_GC_CHECK(); +! +! status = mzscheme_to_vim_impl(obj, tv, 1, visited); +! for (i = 0; i < visited->size; ++i) +! { +! /* free up remembered objects */ +! if (visited->vals[i] != NULL) +! free_tv((typval_T *)visited->vals[i]); +! } +! +! MZ_GC_UNREG(); +! return status; +! } +! static int +! mzscheme_to_vim_impl(Scheme_Object *obj, typval_T *tv, int depth, + Scheme_Hash_Table *visited) + { + int status = OK; + typval_T *found; ++ ++ MZ_GC_DECL_REG(2); ++ MZ_GC_VAR_IN_REG(0, obj); ++ MZ_GC_VAR_IN_REG(1, visited); ++ MZ_GC_REG(); ++ + MZ_GC_CHECK(); + if (depth > 100) /* limit the deepest recursion level */ + { +*************** +*** 2785,2795 **** + tv->vval.v_float = SCHEME_DBL_VAL(obj); + } + # endif +! else if (SCHEME_STRINGP(obj)) + { + tv->v_type = VAR_STRING; +! tv->vval.v_string = vim_strsave((char_u *)SCHEME_STR_VAL(obj)); + } + else if (SCHEME_VECTORP(obj) || SCHEME_NULLP(obj) + || SCHEME_PAIRP(obj) || SCHEME_MUTABLE_PAIRP(obj)) + { +--- 2967,2991 ---- + tv->vval.v_float = SCHEME_DBL_VAL(obj); + } + # endif +! else if (SCHEME_BYTE_STRINGP(obj)) + { + tv->v_type = VAR_STRING; +! tv->vval.v_string = vim_strsave(BYTE_STRING_VALUE(obj)); + } ++ # if MZSCHEME_VERSION_MAJOR >= 299 ++ else if (SCHEME_CHAR_STRINGP(obj)) ++ { ++ Scheme_Object *tmp = NULL; ++ MZ_GC_DECL_REG(1); ++ MZ_GC_VAR_IN_REG(0, tmp); ++ MZ_GC_REG(); ++ ++ tmp = scheme_char_string_to_byte_string(obj); ++ tv->v_type = VAR_STRING; ++ tv->vval.v_string = vim_strsave(BYTE_STRING_VALUE(tmp)); ++ MZ_GC_UNREG(); ++ } ++ #endif + else if (SCHEME_VECTORP(obj) || SCHEME_NULLP(obj) + || SCHEME_PAIRP(obj) || SCHEME_MUTABLE_PAIRP(obj)) + { +*************** +*** 2829,2835 **** + for (i = 0; i < SCHEME_VEC_SIZE(obj); ++i) + { + cval = SCHEME_VEC_ELS(obj)[i]; +! status = mzscheme_to_vim(cval, v, depth + 1, visited); + if (status == FAIL) + break; + status = list_append_tv(list, v); +--- 3025,3031 ---- + for (i = 0; i < SCHEME_VEC_SIZE(obj); ++i) + { + cval = SCHEME_VEC_ELS(obj)[i]; +! status = mzscheme_to_vim_impl(cval, v, depth + 1, visited); + if (status == FAIL) + break; + status = list_append_tv(list, v); +*************** +*** 2845,2851 **** + curr = SCHEME_CDR(curr)) + { + cval = SCHEME_CAR(curr); +! status = mzscheme_to_vim(cval, v, depth + 1, visited); + if (status == FAIL) + break; + status = list_append_tv(list, v); +--- 3041,3047 ---- + curr = SCHEME_CDR(curr)) + { + cval = SCHEME_CAR(curr); +! status = mzscheme_to_vim_impl(cval, v, depth + 1, visited); + if (status == FAIL) + break; + status = list_append_tv(list, v); +*************** +*** 2857,2863 **** + * need to handle the last element */ + if (status == OK && !SCHEME_NULLP(curr)) + { +! status = mzscheme_to_vim(cval, v, depth + 1, visited); + if (status == OK) + { + status = list_append_tv(list, v); +--- 3053,3059 ---- + * need to handle the last element */ + if (status == OK && !SCHEME_NULLP(curr)) + { +! status = mzscheme_to_vim_impl(cval, v, depth + 1, visited); + if (status == OK) + { + status = list_append_tv(list, v); +*************** +*** 2905,2911 **** + dictitem_T *item = dictitem_alloc((char_u *)string_to_line( + ((Scheme_Hash_Table *) obj)->keys[i])); + /* convert Scheme val to Vim and add it to the dict */ +! if (mzscheme_to_vim(((Scheme_Hash_Table *) obj)->vals[i], + &item->di_tv, depth + 1, visited) == FAIL + || dict_add(dict, item) == FAIL) + { +--- 3101,3107 ---- + dictitem_T *item = dictitem_alloc((char_u *)string_to_line( + ((Scheme_Hash_Table *) obj)->keys[i])); + /* convert Scheme val to Vim and add it to the dict */ +! if (mzscheme_to_vim_impl(((Scheme_Hash_Table *) obj)->vals[i], + &item->di_tv, depth + 1, visited) == FAIL + || dict_add(dict, item) == FAIL) + { +*************** +*** 2925,2943 **** + tv->v_type = VAR_STRING; + tv->vval.v_string = (char_u *)string_to_line(obj); + } + return status; + } + + void + do_mzeval(char_u *str, typval_T *rettv) + { +- int i; + Scheme_Object *ret = NULL; +- Scheme_Hash_Table *visited = NULL; + +! MZ_GC_DECL_REG(2); + MZ_GC_VAR_IN_REG(0, ret); +- MZ_GC_VAR_IN_REG(0, visited); + MZ_GC_REG(); + + if (mzscheme_init()) +--- 3121,3196 ---- + tv->v_type = VAR_STRING; + tv->vval.v_string = (char_u *)string_to_line(obj); + } ++ MZ_GC_UNREG(); + return status; + } + ++ /* Scheme prim procedure wrapping Vim funcref */ ++ static Scheme_Object * ++ vim_funcref(void *name, int argc, Scheme_Object **argv) ++ { ++ int i; ++ typval_T args; ++ int status = OK; ++ Scheme_Object *result = NULL; ++ list_T *list = list_alloc(); ++ ++ MZ_GC_DECL_REG(1); ++ MZ_GC_VAR_IN_REG(0, result); ++ MZ_GC_REG(); ++ ++ result = scheme_void; ++ if (list == NULL) ++ status = FAIL; ++ else ++ { ++ args.v_type = VAR_LIST; ++ args.vval.v_list = list; ++ ++list->lv_refcount; ++ for (i = 0; status == OK && i < argc; ++i) ++ { ++ typval_T *v = (typval_T *)alloc(sizeof(typval_T)); ++ if (v == NULL) ++ status = FAIL; ++ else ++ { ++ status = mzscheme_to_vim(argv[i], v); ++ if (status == OK) ++ { ++ status = list_append_tv(list, v); ++ clear_tv(v); ++ } ++ vim_free(v); ++ } ++ } ++ if (status == OK) ++ { ++ typval_T ret; ++ ret.v_type = VAR_UNKNOWN; ++ ++ mzscheme_call_vim(BYTE_STRING_VALUE((Scheme_Object *)name), &args, &ret); ++ MZ_GC_CHECK(); ++ result = vim_to_mzscheme(&ret); ++ clear_tv(&ret); ++ MZ_GC_CHECK(); ++ } ++ } ++ clear_tv(&args); ++ MZ_GC_UNREG(); ++ if (status != OK) ++ raise_vim_exn(_("error converting Scheme values to Vim")); ++ else ++ raise_if_error(); ++ return result; ++ } ++ + void + do_mzeval(char_u *str, typval_T *rettv) + { + Scheme_Object *ret = NULL; + +! MZ_GC_DECL_REG(1); + MZ_GC_VAR_IN_REG(0, ret); + MZ_GC_REG(); + + if (mzscheme_init()) +*************** +*** 2947,2966 **** + } + + MZ_GC_CHECK(); +- visited = scheme_make_hash_table(SCHEME_hash_ptr); +- MZ_GC_CHECK(); +- + if (eval_with_exn_handling(str, do_eval, &ret) == OK) +! mzscheme_to_vim(ret, rettv, 1, visited); +! +! for (i = 0; i < visited->size; ++i) +! { +! /* free up remembered objects */ +! if (visited->vals[i] != NULL) +! { +! free_tv((typval_T *)visited->vals[i]); +! } +! } + + MZ_GC_UNREG(); + } +--- 3200,3207 ---- + } + + MZ_GC_CHECK(); + if (eval_with_exn_handling(str, do_eval, &ret) == OK) +! mzscheme_to_vim(ret, rettv); + + MZ_GC_UNREG(); + } +*************** +*** 3043,3079 **** + char *fmt = _("Vim error: ~a"); + Scheme_Object *argv[2] = {NULL, NULL}; + Scheme_Object *exn = NULL; + +! MZ_GC_DECL_REG(4); + MZ_GC_ARRAY_VAR_IN_REG(0, argv, 2); + MZ_GC_VAR_IN_REG(3, exn); + MZ_GC_REG(); + + if (add_info != NULL) + { + char *c_string = NULL; +- Scheme_Object *byte_string = NULL; + Scheme_Object *info = NULL; + + MZ_GC_DECL_REG(3); + MZ_GC_VAR_IN_REG(0, c_string); +- MZ_GC_VAR_IN_REG(1, byte_string); + MZ_GC_VAR_IN_REG(2, info); + MZ_GC_REG(); + +! info = scheme_make_string(add_info); + MZ_GC_CHECK(); +! c_string = scheme_format(fmt, STRLEN(fmt), 1, &info, NULL); + MZ_GC_CHECK(); +! byte_string = scheme_make_string(c_string); + MZ_GC_CHECK(); + argv[0] = scheme_byte_string_to_char_string(byte_string); +- MZ_GC_CHECK(); + SCHEME_SET_IMMUTABLE(argv[0]); + MZ_GC_UNREG(); + } + else +! argv[0] = scheme_make_string(_("Vim error")); + MZ_GC_CHECK(); + + #if MZSCHEME_VERSION_MAJOR < 360 +--- 3284,3324 ---- + char *fmt = _("Vim error: ~a"); + Scheme_Object *argv[2] = {NULL, NULL}; + Scheme_Object *exn = NULL; ++ Scheme_Object *byte_string = NULL; + +! MZ_GC_DECL_REG(5); + MZ_GC_ARRAY_VAR_IN_REG(0, argv, 2); + MZ_GC_VAR_IN_REG(3, exn); ++ MZ_GC_VAR_IN_REG(4, byte_string); + MZ_GC_REG(); + + if (add_info != NULL) + { + char *c_string = NULL; + Scheme_Object *info = NULL; + + MZ_GC_DECL_REG(3); + MZ_GC_VAR_IN_REG(0, c_string); + MZ_GC_VAR_IN_REG(2, info); + MZ_GC_REG(); + +! info = scheme_make_byte_string(add_info); + MZ_GC_CHECK(); +! c_string = scheme_format_utf8(fmt, STRLEN(fmt), 1, &info, NULL); + MZ_GC_CHECK(); +! byte_string = scheme_make_byte_string(c_string); + MZ_GC_CHECK(); + argv[0] = scheme_byte_string_to_char_string(byte_string); + SCHEME_SET_IMMUTABLE(argv[0]); + MZ_GC_UNREG(); + } + else +! { +! byte_string = scheme_make_byte_string(_("Vim error")); +! MZ_GC_CHECK(); +! argv[0] = scheme_byte_string_to_char_string(byte_string); +! MZ_GC_CHECK(); +! } + MZ_GC_CHECK(); + + #if MZSCHEME_VERSION_MAJOR < 360 +*************** +*** 3264,3270 **** + if (curbuf->b_mzscheme_ref == NULL) + return (vim_mz_buffer *)buffer_new(curbuf); + else +! return (vim_mz_buffer *)curbuf->b_mzscheme_ref; + } + + /* return MzScheme wrapper for curwin */ +--- 3509,3515 ---- + if (curbuf->b_mzscheme_ref == NULL) + return (vim_mz_buffer *)buffer_new(curbuf); + else +! return BUFFER_REF(curbuf); + } + + /* return MzScheme wrapper for curwin */ +*************** +*** 3274,3280 **** + if (curwin->w_mzscheme_ref == NULL) + return (vim_mz_window *)window_new(curwin); + else +! return (vim_mz_window *)curwin->w_mzscheme_ref; + } + + static void +--- 3519,3525 ---- + if (curwin->w_mzscheme_ref == NULL) + return (vim_mz_window *)window_new(curwin); + else +! return WINDOW_REF(curwin); + } + + static void +*** ../vim-7.3.790/src/if_mzsch.h 2010-08-15 21:57:29.000000000 +0200 +--- src/if_mzsch.h 2013-01-30 14:26:44.000000000 +0100 +*************** +*** 7,12 **** +--- 7,13 ---- + #ifdef __MINGW32__ + /* Hack to engage Cygwin-specific settings */ + # define __CYGWIN32__ ++ # include + #endif + + /* #ifdef needed for "make depend" */ +*************** +*** 20,50 **** + #endif + + #if MZSCHEME_VERSION_MAJOR >= 299 +- /* macros to be compatible with 20x versions */ +- # define scheme_config scheme_current_config() +- # define scheme_make_string scheme_make_byte_string +- # define scheme_make_string_output_port scheme_make_byte_string_output_port +- # define scheme_get_sized_string_output scheme_get_sized_byte_string_output +- # define scheme_write_string scheme_write_byte_string +- # define scheme_make_sized_string scheme_make_sized_byte_string +- + # define SCHEME_STRINGP(obj) (SCHEME_BYTE_STRINGP(obj) || SCHEME_CHAR_STRINGP(obj)) +! # define SCHEME_STR_VAL(obj) SCHEME_BYTE_STR_VAL( \ +! (SCHEME_BYTE_STRINGP(obj) ? obj : scheme_char_string_to_byte_string(obj))) +! # define GUARANTEE_STRING(fname, argnum) GUARANTEE_TYPE(fname, argnum, SCHEME_STRINGP, "string") +! +! # ifdef scheme_format +! # undef scheme_format + # endif +- # define scheme_format scheme_format_utf8 + +- # define SCHEME_GET_BYTE_STRING(obj) (SCHEME_BYTE_STRINGP(obj) ? obj : \ +- scheme_char_string_to_byte_string(obj)) +- #else +- # define SCHEME_GET_BYTE_STRING(obj) (obj) + # define SCHEME_BYTE_STRLEN_VAL SCHEME_STRLEN_VAL +! # define SCHEME_BYTE_STR_VAL SCHEME_STR_VAL + # define scheme_byte_string_to_char_string(obj) (obj) + #endif + + /* Precise GC macros */ +--- 21,44 ---- + #endif + + #if MZSCHEME_VERSION_MAJOR >= 299 + # define SCHEME_STRINGP(obj) (SCHEME_BYTE_STRINGP(obj) || SCHEME_CHAR_STRINGP(obj)) +! # define BYTE_STRING_VALUE(obj) ((char_u *)SCHEME_BYTE_STR_VAL(obj)) +! #else +! /* macros for compatibility with older versions */ +! # define scheme_current_config() scheme_config +! # define scheme_make_sized_byte_string scheme_make_sized_string +! # define scheme_format_utf8 scheme_format +! # ifndef DYNAMIC_MZSCHEME +! /* for dynamic MzScheme there will be separate definitions in if_mzsch.c */ +! # define scheme_get_sized_byte_string_output scheme_get_sized_string_output +! # define scheme_make_byte_string scheme_make_string +! # define scheme_make_byte_string_output_port scheme_make_string_output_port + # endif + + # define SCHEME_BYTE_STRLEN_VAL SCHEME_STRLEN_VAL +! # define BYTE_STRING_VALUE(obj) ((char_u *)SCHEME_STR_VAL(obj)) + # define scheme_byte_string_to_char_string(obj) (obj) ++ # define SCHEME_BYTE_STRINGP SCHEME_STRINGP + #endif + + /* Precise GC macros */ +*** ../vim-7.3.790/src/Make_ming.mak 2013-01-23 13:55:16.000000000 +0100 +--- src/Make_ming.mak 2013-01-30 14:26:44.000000000 +0100 +*************** +*** 384,389 **** +--- 384,392 ---- + ifeq (yes, $(DYNAMIC_MZSCHEME)) + CFLAGS += -DDYNAMIC_MZSCHEME -DDYNAMIC_MZSCH_DLL=\"lib$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER).dll\" -DDYNAMIC_MZGC_DLL=\"libmzgc$(MZSCHEME_VER).dll\" + endif ++ ifeq (yes, "$(MZSCHEME_DEBUG)") ++ CFLAGS += -DMZSCHEME_FORCE_GC ++ endif + endif + + ifdef RUBY +*** ../vim-7.3.790/src/Make_mvc.mak 2012-12-06 21:30:24.000000000 +0100 +--- src/Make_mvc.mak 2013-01-30 14:26:44.000000000 +0100 +*************** +*** 1096,1102 **** + $(OUTDIR)/if_perlsfio.obj: $(OUTDIR) if_perlsfio.c $(INCL) + $(CC) $(CFLAGS) $(PERL_INC) if_perlsfio.c + +! $(OUTDIR)/if_mzsch.obj: $(OUTDIR) if_mzsch.c $(INCL) $(MZSCHEME_EXTRA_DEP) + $(CC) $(CFLAGS) if_mzsch.c \ + -DMZSCHEME_COLLECTS=\"$(MZSCHEME:\=\\)\\collects\" + mzscheme_base.c: +--- 1096,1102 ---- + $(OUTDIR)/if_perlsfio.obj: $(OUTDIR) if_perlsfio.c $(INCL) + $(CC) $(CFLAGS) $(PERL_INC) if_perlsfio.c + +! $(OUTDIR)/if_mzsch.obj: $(OUTDIR) if_mzsch.c if_mzsch.h $(INCL) $(MZSCHEME_EXTRA_DEP) + $(CC) $(CFLAGS) if_mzsch.c \ + -DMZSCHEME_COLLECTS=\"$(MZSCHEME:\=\\)\\collects\" + mzscheme_base.c: +*** ../vim-7.3.790/src/os_unix.c 2012-10-14 04:35:16.000000000 +0200 +--- src/os_unix.c 2013-01-30 14:26:44.000000000 +0100 +*************** +*** 278,284 **** + #ifdef SIGBUS + {SIGBUS, "BUS", TRUE}, + #endif +! #ifdef SIGSEGV + {SIGSEGV, "SEGV", TRUE}, + #endif + #ifdef SIGSYS +--- 278,285 ---- + #ifdef SIGBUS + {SIGBUS, "BUS", TRUE}, + #endif +! #if defined(SIGSEGV) && !defined(FEAT_MZSCHEME) +! /* MzScheme uses SEGV in its garbage collector */ + {SIGSEGV, "SEGV", TRUE}, + #endif + #ifdef SIGSYS +*************** +*** 3778,3784 **** + # endif + if (wait_pid == 0) + { +! /* Wait for 1/100 sec before trying again. */ + mch_delay(10L, TRUE); + continue; + } +--- 3779,3785 ---- + # endif + if (wait_pid == 0) + { +! /* Wait for 10 msec before trying again. */ + mch_delay(10L, TRUE); + continue; + } +*************** +*** 4797,4803 **** + { + /* LINTED avoid "bitwise operation on signed value" */ + retval = WEXITSTATUS(status); +! if (retval && !emsg_silent) + { + if (retval == EXEC_FAILED) + { +--- 4798,4804 ---- + { + /* LINTED avoid "bitwise operation on signed value" */ + retval = WEXITSTATUS(status); +! if (retval != 0 && !emsg_silent) + { + if (retval == EXEC_FAILED) + { +*** ../vim-7.3.790/src/proto/eval.pro 2012-07-25 16:46:59.000000000 +0200 +--- src/proto/eval.pro 2013-01-30 14:32:04.000000000 +0100 +*************** +*** 74,79 **** +--- 74,80 ---- + char_u *get_function_name __ARGS((expand_T *xp, int idx)); + char_u *get_expr_name __ARGS((expand_T *xp, int idx)); + int func_call __ARGS((char_u *name, typval_T *args, dict_T *selfdict, typval_T *rettv)); ++ void mzscheme_call_vim __ARGS((char_u *name, typval_T *args, typval_T *rettv)); + 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)); +*** ../vim-7.3.790/src/testdir/test70.in 2010-08-15 21:57:29.000000000 +0200 +--- src/testdir/test70.in 2013-01-30 14:50:02.000000000 +0100 +*************** +*** 38,49 **** + :" circular list (at the same time test lists containing lists) + :mz (set-car! (cddr l) l) + :let l2 = mzeval("h")["list"] +! :if l2[2] == l2 + :let res = "OK" + :else +! :let res = "FAILED" + :endif + :call setline(search("^3"), "circular test " . res) + :?^1?,$w! test.out + :qa! + ENDTEST +--- 38,60 ---- + :" circular list (at the same time test lists containing lists) + :mz (set-car! (cddr l) l) + :let l2 = mzeval("h")["list"] +! :" bug: this returns item2, but it should be l2 +! :if l2[2] == "item2" + :let res = "OK" + :else +! :let res = "FAILED: " . l2[2] + :endif + :call setline(search("^3"), "circular test " . res) ++ :" funcrefs ++ :mz (define vim:max (vim-eval "function('max')")) ++ :mz (define m (vim:max '(1 100 8))) ++ :let m = mzeval('m') ++ :if m == 100 ++ :let fref_res = "OK" ++ :else ++ :let fref_res = "FAILED: " . m ++ :end ++ :call append(line('$'), 'funcrefs '. fref_res) + :?^1?,$w! test.out + :qa! + ENDTEST +*** ../vim-7.3.790/src/testdir/test70.ok 2010-08-15 21:57:29.000000000 +0200 +--- src/testdir/test70.ok 2013-01-30 14:26:44.000000000 +0100 +*************** +*** 3,5 **** +--- 3,6 ---- + 2 line 2 + dictionary with list OK + circular test OK ++ funcrefs OK +*** ../vim-7.3.790/src/version.c 2013-01-30 14:13:52.000000000 +0100 +--- src/version.c 2013-01-30 14:52:31.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 791, + /**/ + + +-- +5 out of 4 people have trouble with fractions. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.792 b/7.3.792 new file mode 100644 index 0000000..cddcc62 --- /dev/null +++ b/7.3.792 @@ -0,0 +1,131 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.792 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.792 +Problem: ":substitute" works differently without confirmation. +Solution: Do not change the text when asking for confirmation, only display + it. +Files: src/ex_cmds.c + + +*** ../vim-7.3.791/src/ex_cmds.c 2013-01-17 18:33:58.000000000 +0100 +--- src/ex_cmds.c 2013-01-30 16:01:58.000000000 +0100 +*************** +*** 4727,4732 **** +--- 4727,4734 ---- + } + else + { ++ char_u *orig_line = NULL; ++ int len_change = 0; + #ifdef FEAT_FOLDING + int save_p_fen = curwin->w_p_fen; + +*************** +*** 4737,4745 **** + 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; + + update_topline(); +--- 4739,4781 ---- + temp = RedrawingDisabled; + RedrawingDisabled = 0; + ++ if (new_start != NULL) ++ { ++ /* There already was a substitution, we would ++ * like to show this to the user. We cannot ++ * really update the line, it would change ++ * what matches. Temporarily replace the line ++ * and change it back afterwards. */ ++ orig_line = vim_strsave(ml_get(lnum)); ++ if (orig_line != NULL) ++ { ++ char_u *new_line = concat_str(new_start, ++ sub_firstline + copycol); ++ ++ if (new_line == NULL) ++ { ++ vim_free(orig_line); ++ orig_line = NULL; ++ } ++ else ++ { ++ /* Position the cursor relative to the ++ * end of the line, the previous ++ * substitute may have inserted or ++ * deleted characters before the ++ * cursor. */ ++ len_change = STRLEN(new_line) ++ - STRLEN(orig_line); ++ curwin->w_cursor.col += len_change; ++ ml_replace(lnum, new_line, FALSE); ++ } ++ } ++ } ++ + search_match_lines = regmatch.endpos[0].lnum + - regmatch.startpos[0].lnum; +! search_match_endcol = regmatch.endpos[0].col +! + len_change; + highlight_match = TRUE; + + update_topline(); +*************** +*** 4781,4786 **** +--- 4817,4826 ---- + msg_didout = FALSE; /* don't scroll up */ + msg_col = 0; + gotocmdline(TRUE); ++ ++ /* restore the line */ ++ if (orig_line != NULL) ++ ml_replace(lnum, orig_line, FALSE); + } + + need_wait_return = FALSE; /* no hit-return prompt */ +*************** +*** 5045,5058 **** + * The check for nmatch_tl is needed for when multi-line + * matching must replace the lines before trying to do another + * match, otherwise "\@<=" won't work. +- * 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, +--- 5085,5094 ---- +*** ../vim-7.3.791/src/version.c 2013-01-30 14:55:35.000000000 +0100 +--- src/version.c 2013-01-30 16:25:36.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 792, + /**/ + +-- +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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.793 b/7.3.793 new file mode 100644 index 0000000..b188d9d --- /dev/null +++ b/7.3.793 @@ -0,0 +1,72 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.793 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.793 (after 7.3.792) +Problem: New interactive :substutite behavior is not tested. +Solution: Add tests. (Christian Brabandt) +Files: src/testdir/test80.in, src/testdir/test80.ok + + +*** ../vim-7.3.792/src/testdir/test80.in 2011-06-19 04:31:54.000000000 +0200 +--- src/testdir/test80.in 2013-01-30 17:00:54.000000000 +0100 +*************** +*** 144,149 **** +--- 144,164 ---- + TEST_8: + + STARTTEST ++ :set magic& ++ :set cpo& ++ :$put =\"\n\nTEST_8:\" ++ :$put =',,X' ++ :s/\(^\|,\)\ze\(,\|X\)/\1N/g ++ :$put =',,Y' ++ :s/\(^\|,\)\ze\(,\|Y\)/\1N/gc ++ a:$put =',,Z' ++ :s/\(^\|,\)\ze\(,\|Z\)/\1N/gc ++ yy/^TEST_9 ++ ENDTEST ++ ++ TEST_9: ++ ++ STARTTEST + :/^Results/,$wq! test.out + ENDTEST + +*** ../vim-7.3.792/src/testdir/test80.ok 2011-06-19 04:31:54.000000000 +0200 +--- src/testdir/test80.ok 2013-01-30 16:46:39.000000000 +0100 +*************** +*** 99,101 **** +--- 99,107 ---- + A A + B + B ++ ++ ++ TEST_8: ++ N,,NX ++ N,,NY ++ N,,NZ +*** ../vim-7.3.792/src/version.c 2013-01-30 16:30:19.000000000 +0100 +--- src/version.c 2013-01-30 17:01:33.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 793, + /**/ + +-- +The early bird gets the worm. The second mouse gets the cheese. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.794 b/7.3.794 new file mode 100644 index 0000000..62263f6 --- /dev/null +++ b/7.3.794 @@ -0,0 +1,75 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.794 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.794 +Problem: Tiny build fails. (Tony Mechelynck) +Solution: Adjust #ifdefs. +Files: src/charset.c + + +*** ../vim-7.3.793/src/charset.c 2013-01-23 15:53:08.000000000 +0100 +--- src/charset.c 2013-01-30 17:08:05.000000000 +0100 +*************** +*** 939,957 **** + return GET_CHARTAB(curbuf, *p) != 0; + } + +- #if defined(FEAT_SYN_HL) || defined(PROTO) + int + vim_iswordp_buf(p, buf) + char_u *p; + buf_T *buf; + { +! # ifdef FEAT_MBYTE + if (has_mbyte && MB_BYTE2LEN(*p) > 1) + return mb_get_class(p) >= 2; +! # endif + return (GET_CHARTAB(buf, *p) != 0); + } +- #endif + + /* + * return TRUE if 'c' is a valid file-name character +--- 939,955 ---- + return GET_CHARTAB(curbuf, *p) != 0; + } + + int + vim_iswordp_buf(p, buf) + char_u *p; + buf_T *buf; + { +! #ifdef FEAT_MBYTE + if (has_mbyte && MB_BYTE2LEN(*p) > 1) + return mb_get_class(p) >= 2; +! #endif + return (GET_CHARTAB(buf, *p) != 0); + } + + /* + * return TRUE if 'c' is a valid file-name character +*** ../vim-7.3.793/src/version.c 2013-01-30 17:03:25.000000000 +0100 +--- src/version.c 2013-01-30 17:28:04.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 794, + /**/ + +-- +LAUNCELOT: I am, sir. I am a Knight of King Arthur. +FATHER: 'Mm ... very nice castle, Camelot ... very good pig country.... + "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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.795 b/7.3.795 new file mode 100644 index 0000000..283fd8d --- /dev/null +++ b/7.3.795 @@ -0,0 +1,212 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.795 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.795 +Problem: MzScheme does not build with tiny features. +Solution: Add #ifdefs. Also add UNUSED to avoid warnings. And change + library ordering. +Files: src/if_mzsch.c, src/Makefile + + +*** ../vim-7.3.794/src/if_mzsch.c 2013-01-30 14:55:35.000000000 +0100 +--- src/if_mzsch.c 2013-01-30 17:23:07.000000000 +0100 +*************** +*** 1483,1489 **** + + /* (eval {expr-string}) */ + static Scheme_Object * +! vim_eval(void *data, int argc, Scheme_Object **argv) + { + #ifdef FEAT_EVAL + Vim_Prim *prim = (Vim_Prim *)data; +--- 1483,1489 ---- + + /* (eval {expr-string}) */ + static Scheme_Object * +! vim_eval(void *data UNUSED, int argc UNUSED, Scheme_Object **argv UNUSED) + { + #ifdef FEAT_EVAL + Vim_Prim *prim = (Vim_Prim *)data; +*************** +*** 1686,1695 **** + static Scheme_Object * + get_window_count(void *data UNUSED, int argc UNUSED, Scheme_Object **argv UNUSED) + { +- win_T *w; + int n = 0; + + for (w = firstwin; w != NULL; w = w->w_next) + ++n; + return scheme_make_integer(n); + } +--- 1686,1697 ---- + static Scheme_Object * + get_window_count(void *data UNUSED, int argc UNUSED, Scheme_Object **argv UNUSED) + { + int n = 0; ++ #ifdef FEAT_WINDOWS ++ win_T *w; + + for (w = firstwin; w != NULL; w = w->w_next) ++ #endif + ++n; + return scheme_make_integer(n); + } +*************** +*** 1701,1712 **** + Vim_Prim *prim = (Vim_Prim *)data; + vim_mz_buffer *buf; + Scheme_Object *list; +! win_T *w; + + buf = get_buffer_arg(prim->name, 0, argc, argv); + list = scheme_null; + +! for (w = firstwin; w != NULL; w = w->w_next) + if (w->w_buffer == buf->buf) + { + list = scheme_make_pair(window_new(w), list); +--- 1703,1716 ---- + Vim_Prim *prim = (Vim_Prim *)data; + vim_mz_buffer *buf; + Scheme_Object *list; +! win_T *w = firstwin; + + buf = get_buffer_arg(prim->name, 0, argc, argv); + list = scheme_null; + +! #ifdef FEAT_WINDOWS +! for ( ; w != NULL; w = w->w_next) +! #endif + if (w->w_buffer == buf->buf) + { + list = scheme_make_pair(window_new(w), list); +*************** +*** 1755,1768 **** + + /* (get-win-num [window]) */ + static Scheme_Object * +! get_window_num(void *data, int argc, Scheme_Object **argv) + { + Vim_Prim *prim = (Vim_Prim *)data; + win_T *win = get_window_arg(prim->name, 0, argc, argv)->win; +- int nr = 1; + win_T *wp; + + for (wp = firstwin; wp != win; wp = wp->w_next) + ++nr; + + return scheme_make_integer(nr); +--- 1759,1774 ---- + + /* (get-win-num [window]) */ + static Scheme_Object * +! get_window_num(void *data UNUSED, int argc UNUSED, Scheme_Object **argv UNUSED) + { ++ int nr = 1; ++ #ifdef FEAT_WINDOWS + Vim_Prim *prim = (Vim_Prim *)data; + win_T *win = get_window_arg(prim->name, 0, argc, argv)->win; + win_T *wp; + + for (wp = firstwin; wp != win; wp = wp->w_next) ++ #endif + ++nr; + + return scheme_make_integer(nr); +*************** +*** 1773,1786 **** + get_window_by_num(void *data, int argc, Scheme_Object **argv) + { + Vim_Prim *prim = (Vim_Prim *)data; +! win_T *win; + int fnum; + + fnum = SCHEME_INT_VAL(GUARANTEE_INTEGER(prim->name, 0)); + if (fnum < 1) + scheme_signal_error(_("window index is out of range")); + +! for (win = firstwin; win != NULL; win = win->w_next, --fnum) + if (fnum == 1) /* to be 1-based */ + return window_new(win); + +--- 1779,1794 ---- + get_window_by_num(void *data, int argc, Scheme_Object **argv) + { + Vim_Prim *prim = (Vim_Prim *)data; +! win_T *win = firstwin; + int fnum; + + fnum = SCHEME_INT_VAL(GUARANTEE_INTEGER(prim->name, 0)); + if (fnum < 1) + scheme_signal_error(_("window index is out of range")); + +! #ifdef FEAT_WINDOWS +! for ( ; win != NULL; win = win->w_next, --fnum) +! #endif + if (fnum == 1) /* to be 1-based */ + return window_new(win); + +*** ../vim-7.3.794/src/Makefile 2012-11-20 17:03:23.000000000 +0100 +--- src/Makefile 2013-01-30 17:34:55.000000000 +0100 +*************** +*** 1345,1350 **** +--- 1345,1352 ---- + + DEPEND_CFLAGS = -DPROTO -DDEPEND -DFEAT_GUI $(LINT_CFLAGS) + ++ # Note: MZSCHEME_LIBS must come before LIBS, because LIBS adds -lm which is ++ # needed by racket. + ALL_LIB_DIRS = $(GUI_LIBS_DIR) $(X_LIBS_DIR) + ALL_LIBS = \ + $(GUI_LIBS1) \ +*************** +*** 1353,1362 **** + $(X_PRE_LIBS) \ + $(X_LIBS) \ + $(X_EXTRA_LIBS) \ + $(LIBS) \ + $(EXTRA_LIBS) \ + $(LUA_LIBS) \ +- $(MZSCHEME_LIBS) \ + $(PERL_LIBS) \ + $(PYTHON_LIBS) \ + $(PYTHON3_LIBS) \ +--- 1355,1364 ---- + $(X_PRE_LIBS) \ + $(X_LIBS) \ + $(X_EXTRA_LIBS) \ ++ $(MZSCHEME_LIBS) \ + $(LIBS) \ + $(EXTRA_LIBS) \ + $(LUA_LIBS) \ + $(PERL_LIBS) \ + $(PYTHON_LIBS) \ + $(PYTHON3_LIBS) \ +*** ../vim-7.3.794/src/version.c 2013-01-30 17:30:14.000000000 +0100 +--- src/version.c 2013-01-30 17:38:25.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 795, + /**/ + +-- +GUEST: He's killed the best man! +SECOND GUEST: (holding a limp WOMAN) He's killed my auntie. +FATHER: No, please! This is supposed to be a happy occasion! Let's + not bicker and argue about who killed who ... + "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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.796 b/7.3.796 new file mode 100644 index 0000000..333600d Binary files /dev/null and b/7.3.796 differ diff --git a/7.3.797 b/7.3.797 new file mode 100644 index 0000000..09d638a --- /dev/null +++ b/7.3.797 @@ -0,0 +1,58 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.797 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.797 (after 7.3.792) +Problem: Compiler warning for size_t to int conversion. (Skeept) +Solution: Add type casts. +Files: src/ex_cmds.c + + +*** ../vim-7.3.796/src/ex_cmds.c 2013-01-30 16:30:19.000000000 +0100 +--- src/ex_cmds.c 2013-01-30 21:52:17.000000000 +0100 +*************** +*** 4764,4771 **** + * substitute may have inserted or + * deleted characters before the + * cursor. */ +! len_change = STRLEN(new_line) +! - STRLEN(orig_line); + curwin->w_cursor.col += len_change; + ml_replace(lnum, new_line, FALSE); + } +--- 4764,4771 ---- + * substitute may have inserted or + * deleted characters before the + * cursor. */ +! len_change = (int)STRLEN(new_line) +! - (int)STRLEN(orig_line); + curwin->w_cursor.col += len_change; + ml_replace(lnum, new_line, FALSE); + } +*** ../vim-7.3.796/src/version.c 2013-01-30 21:55:22.000000000 +0100 +--- src/version.c 2013-01-30 21:53:17.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 797, + /**/ + +-- + [SIR LAUNCELOT runs back up the stairs, grabs a rope + of the wall and swings out over the heads of the CROWD in a + swashbuckling manner towards a large window. He stops just short + of the window and is left swing pathetically back and forth.] +LAUNCELOT: Excuse me ... could somebody give me a push ... + "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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.798 b/7.3.798 new file mode 100644 index 0000000..2133f75 --- /dev/null +++ b/7.3.798 @@ -0,0 +1,103 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.798 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.798 (after 7.3.791) +Problem: MzScheme: circular list does not work correctly. +Solution: Separate Mac-specific code from generic code. (Sergey Khorev) +Files: src/if_mzsch.c, src/testdir/test70.in + + +*** ../vim-7.3.797/src/if_mzsch.c 2013-01-30 17:41:43.000000000 +0100 +--- src/if_mzsch.c 2013-01-31 21:00:02.000000000 +0100 +*************** +*** 965,970 **** +--- 965,971 ---- + #ifdef MZSCHEME_COLLECTS + /* setup 'current-library-collection-paths' parameter */ + # if MZSCHEME_VERSION_MAJOR >= 299 ++ # ifdef MACOS + { + Scheme_Object *coll_byte_string = NULL; + Scheme_Object *coll_char_string = NULL; +*************** +*** 985,990 **** +--- 986,1021 ---- + MZ_GC_CHECK(); + MZ_GC_UNREG(); + } ++ # else ++ { ++ Scheme_Object *coll_byte_string = NULL; ++ Scheme_Object *coll_char_string = NULL; ++ Scheme_Object *coll_path = NULL; ++ Scheme_Object *coll_pair = NULL; ++ Scheme_Config *config = NULL; ++ ++ MZ_GC_DECL_REG(5); ++ MZ_GC_VAR_IN_REG(0, coll_byte_string); ++ MZ_GC_VAR_IN_REG(1, coll_char_string); ++ MZ_GC_VAR_IN_REG(2, coll_path); ++ MZ_GC_VAR_IN_REG(3, coll_pair); ++ MZ_GC_VAR_IN_REG(4, config); ++ MZ_GC_REG(); ++ coll_byte_string = scheme_make_byte_string(MZSCHEME_COLLECTS); ++ MZ_GC_CHECK(); ++ coll_char_string = scheme_byte_string_to_char_string(coll_byte_string); ++ MZ_GC_CHECK(); ++ coll_path = scheme_char_string_to_path(coll_char_string); ++ MZ_GC_CHECK(); ++ coll_pair = scheme_make_pair(coll_path, scheme_null); ++ MZ_GC_CHECK(); ++ config = scheme_current_config(); ++ MZ_GC_CHECK(); ++ scheme_set_param(config, MZCONFIG_COLLECTION_PATHS, coll_pair); ++ MZ_GC_CHECK(); ++ MZ_GC_UNREG(); ++ } ++ # endif + # else + { + Scheme_Object *coll_string = NULL; +*** ../vim-7.3.797/src/testdir/test70.in 2013-01-30 14:55:35.000000000 +0100 +--- src/testdir/test70.in 2013-01-31 21:00:06.000000000 +0100 +*************** +*** 38,45 **** + :" circular list (at the same time test lists containing lists) + :mz (set-car! (cddr l) l) + :let l2 = mzeval("h")["list"] +! :" bug: this returns item2, but it should be l2 +! :if l2[2] == "item2" + :let res = "OK" + :else + :let res = "FAILED: " . l2[2] +--- 38,44 ---- + :" circular list (at the same time test lists containing lists) + :mz (set-car! (cddr l) l) + :let l2 = mzeval("h")["list"] +! :if l2[2] == l2 + :let res = "OK" + :else + :let res = "FAILED: " . l2[2] +*** ../vim-7.3.797/src/version.c 2013-01-30 21:55:45.000000000 +0100 +--- src/version.c 2013-01-31 21:01:48.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 798, + /**/ + +-- +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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.799 b/7.3.799 new file mode 100644 index 0000000..941203e --- /dev/null +++ b/7.3.799 @@ -0,0 +1,58 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.799 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.799 +Problem: The color column is not correct when entering a buffer. (Ben + Fritz) +Solution: Call check_colorcolumn() if 'textwidth' changed. (Christian + Brabandt) +Files: src/buffer.c + + +*** ../vim-7.3.798/src/buffer.c 2012-11-20 12:16:54.000000000 +0100 +--- src/buffer.c 2013-02-06 11:52:54.000000000 +0100 +*************** +*** 1441,1446 **** +--- 1441,1448 ---- + enter_buffer(buf) + buf_T *buf; + { ++ long old_tw = curbuf->b_p_tw; ++ + /* Copy buffer and window local option values. Not for a help buffer. */ + buf_copy_options(buf, BCO_ENTER | BCO_NOHELP); + if (!buf->b_help) +*************** +*** 1464,1469 **** +--- 1466,1473 ---- + + #ifdef FEAT_SYN_HL + curwin->w_s = &(buf->b_s); ++ if (old_tw != buf->b_p_tw) ++ check_colorcolumn(curwin); + #endif + + /* Cursor on first line by default. */ +*** ../vim-7.3.798/src/version.c 2013-01-31 21:09:10.000000000 +0100 +--- src/version.c 2013-02-06 11:55:06.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 799, + /**/ + +-- +I wonder, do vegetarians eat fruit bats? + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.800 b/7.3.800 new file mode 100644 index 0000000..5e07e24 --- /dev/null +++ b/7.3.800 @@ -0,0 +1,64 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.800 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.800 +Problem: The " mark is not adjusted when inserting lines. (Roland Eggner) +Solution: Adjust the line number. (Christian Brabandt) +Files: src/mark.c + + +*** ../vim-7.3.799/src/mark.c 2013-01-23 15:53:08.000000000 +0100 +--- src/mark.c 2013-02-06 12:29:46.000000000 +0100 +*************** +*** 1047,1052 **** +--- 1047,1053 ---- + #ifdef FEAT_WINDOWS + tabpage_T *tab; + #endif ++ static pos_T initpos = INIT_POS_T(1, 0, 0); + + if (line2 < line1 && amount_after == 0L) /* nothing to do */ + return; +*************** +*** 1072,1077 **** +--- 1073,1083 ---- + /* last change position */ + one_adjust(&(curbuf->b_last_change.lnum)); + ++ /* last cursor position, if it was set */ ++ if (!equalpos(curbuf->b_last_cursor, initpos)) ++ one_adjust(&(curbuf->b_last_cursor.lnum)); ++ ++ + #ifdef FEAT_JUMPLIST + /* list of change positions */ + for (i = 0; i < curbuf->b_changelistlen; ++i) +*** ../vim-7.3.799/src/version.c 2013-02-06 12:14:36.000000000 +0100 +--- src/version.c 2013-02-06 12:31:15.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 800, + /**/ + +-- +ARTHUR: What does it say? +BROTHER MAYNARD: It reads ... "Here may be found the last words of Joseph of + Aramathea." "He who is valorous and pure of heart may find + the Holy Grail in the aaaaarrrrrrggghhh..." +ARTHUR: What? +BROTHER MAYNARD: "The 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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.801 b/7.3.801 new file mode 100644 index 0000000..d9247ad --- /dev/null +++ b/7.3.801 @@ -0,0 +1,61 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.801 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.801 +Problem: ":window set nu?" displays the cursor line. (Nazri Ramliy) +Solution: Do not update the cursor line when conceallevel is zero or the + screen has scrolled. (partly by Christian Brabandt) +Files: src/window.c + + +*** ../vim-7.3.800/src/window.c 2013-01-17 13:59:56.000000000 +0100 +--- src/window.c 2013-02-06 13:28:10.000000000 +0100 +*************** +*** 3991,3999 **** + + #ifdef FEAT_CONCEAL + /* Conceal cursor line in previous window, unconceal in current window. */ +! if (win_valid(owp)) + update_single_line(owp, owp->w_cursor.lnum); +! update_single_line(curwin, curwin->w_cursor.lnum); + #endif + } + +--- 3991,4000 ---- + + #ifdef FEAT_CONCEAL + /* Conceal cursor line in previous window, unconceal in current window. */ +! if (win_valid(owp) && owp->w_p_cole > 0 && !msg_scrolled) + update_single_line(owp, owp->w_cursor.lnum); +! if (curwin->w_p_cole > 0 && !msg_scrolled) +! need_cursor_line_redraw = TRUE; + #endif + } + +*** ../vim-7.3.800/src/version.c 2013-02-06 12:33:15.000000000 +0100 +--- src/version.c 2013-02-06 13:32:28.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 801, + /**/ + +-- +ARTHUR: But if he was dying, he wouldn't bother to carve + "Aaaaarrrrrrggghhh". He'd just say it. +BROTHER MAYNARD: It's down there carved in stone. +GALAHAD: Perhaps he was dictating. + "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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.802 b/7.3.802 new file mode 100644 index 0000000..7b1b62f --- /dev/null +++ b/7.3.802 @@ -0,0 +1,50 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.802 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.802 +Problem: After setting 'isk' to a value ending in a comma appending to the + option fails. +Solution: Disallow a trailing comma for 'isk' and similar options. +Files: src/charset.c + + +*** ../vim-7.3.801/src/charset.c 2013-01-30 17:30:14.000000000 +0100 +--- src/charset.c 2013-02-06 16:20:01.000000000 +0100 +*************** +*** 284,290 **** +--- 284,295 ---- + } + ++c; + } ++ ++ c = *p; + p = skip_to_option_part(p); ++ if (c == ',' && *p == NUL) ++ /* Trailing comma is not allowed. */ ++ return FAIL; + } + } + chartab_initialized = TRUE; +*** ../vim-7.3.801/src/version.c 2013-02-06 13:37:58.000000000 +0100 +--- src/version.c 2013-02-06 16:21:18.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 802, + /**/ + +-- +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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.803 b/7.3.803 new file mode 100644 index 0000000..27944f3 --- /dev/null +++ b/7.3.803 @@ -0,0 +1,106 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.803 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.803 (after 7.3.792) +Problem: Substitute with confirmation and then "q" does not replace + anything. (John McGowan) +Solution: Do not break the loop, skip to the end. +Files: src/ex_cmds.c, src/testdir/test80.in, src/testdir/test80.ok + + +*** ../vim-7.3.802/src/ex_cmds.c 2013-01-30 21:55:45.000000000 +0100 +--- src/ex_cmds.c 2013-02-06 18:13:52.000000000 +0100 +*************** +*** 4878,4884 **** + goto skip; + } + if (got_quit) +! break; + } + + /* Move the cursor to the start of the match, so that we can +--- 4878,4884 ---- + goto skip; + } + if (got_quit) +! goto skip; + } + + /* Move the cursor to the start of the match, so that we can +*** ../vim-7.3.802/src/testdir/test80.in 2013-01-30 17:03:25.000000000 +0100 +--- src/testdir/test80.in 2013-02-06 18:21:07.000000000 +0100 +*************** +*** 153,164 **** + :s/\(^\|,\)\ze\(,\|Y\)/\1N/gc + a:$put =',,Z' + :s/\(^\|,\)\ze\(,\|Z\)/\1N/gc +! yy/^TEST_9 + ENDTEST + + TEST_9: + + STARTTEST + :/^Results/,$wq! test.out + ENDTEST + +--- 153,175 ---- + :s/\(^\|,\)\ze\(,\|Y\)/\1N/gc + a:$put =',,Z' + :s/\(^\|,\)\ze\(,\|Z\)/\1N/gc +! yy/^TEST_9: + ENDTEST + + TEST_9: + + STARTTEST ++ :set magic& ++ :set cpo& ++ :$put =\"\n\nTEST_9:\" ++ :$put ='xxx' ++ :s/x/X/gc ++ yyq/^TEST_10: ++ ENDTEST ++ ++ TEST_10: ++ ++ STARTTEST + :/^Results/,$wq! test.out + ENDTEST + +*** ../vim-7.3.802/src/testdir/test80.ok 2013-01-30 17:03:25.000000000 +0100 +--- src/testdir/test80.ok 2013-02-06 18:21:16.000000000 +0100 +*************** +*** 105,107 **** +--- 105,111 ---- + N,,NX + N,,NY + N,,NZ ++ ++ ++ TEST_9: ++ XXx +*** ../vim-7.3.802/src/version.c 2013-02-06 16:26:20.000000000 +0100 +--- src/version.c 2013-02-06 18:14:42.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 803, + /**/ + +-- +To the optimist, the glass is half full. +To the pessimist, the glass is half empty. +To the engineer, the glass is twice as big as it needs to be. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.804 b/7.3.804 new file mode 100644 index 0000000..b9a7f9c --- /dev/null +++ b/7.3.804 @@ -0,0 +1,46 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.804 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.804 (after 7.3.799) +Problem: Compiler warning for tiny build. (Tony Mechelynck) +Solution: Add #ifdefs around variable. +Files: src/buffer.c + + +*** ../vim-7.3.803/src/buffer.c 2013-02-06 12:14:36.000000000 +0100 +--- src/buffer.c 2013-02-06 18:42:05.000000000 +0100 +*************** +*** 1441,1447 **** +--- 1441,1449 ---- + enter_buffer(buf) + buf_T *buf; + { ++ #ifdef FEAT_SYN_HL + long old_tw = curbuf->b_p_tw; ++ #endif + + /* Copy buffer and window local option values. Not for a help buffer. */ + buf_copy_options(buf, BCO_ENTER | BCO_NOHELP); +*** ../vim-7.3.803/src/version.c 2013-02-06 18:23:58.000000000 +0100 +--- src/version.c 2013-02-06 18:42:59.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 804, + /**/ + +-- +Sorry, no fortune today. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.805 b/7.3.805 new file mode 100644 index 0000000..5604cce --- /dev/null +++ b/7.3.805 @@ -0,0 +1,99 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.805 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.805 +Problem: Lua version 5.2 is not detected properly on Arch Linux. +Solution: Adjust autoconf. (lilydjwg) +Files: src/configure.in, src/auto/configure + + +*** ../vim-7.3.804/src/configure.in 2013-01-30 14:55:34.000000000 +0100 +--- src/configure.in 2013-02-06 19:22:17.000000000 +0100 +*************** +*** 496,508 **** + else + dnl Determine the SONAME for the current version, but fallback to + dnl liblua${vi_cv_version_lua}.so if no SONAME-versioned file is found. +! for i in 0 1 2 3 4 5 6 7 8 9; do +! if test -f "${vi_cv_path_lua_pfx}/lib/liblua${vi_cv_version_lua}.so.$i"; then +! LUA_SONAME=".$i" +! break +! fi + done +- vi_cv_dll_name_lua="liblua${vi_cv_version_lua}.so$LUA_SONAME" + fi + AC_DEFINE(DYNAMIC_LUA) + LUA_LIBS="" +--- 496,510 ---- + else + dnl Determine the SONAME for the current version, but fallback to + dnl liblua${vi_cv_version_lua}.so if no SONAME-versioned file is found. +! for LUA_SOVER in "${vi_cv_version_lua}.so" ".so.${vi_cv_version_lua}"; do +! for i in 0 1 2 3 4 5 6 7 8 9; do +! if test -f "${vi_cv_path_lua_pfx}/lib/liblua${LUA_SOVER}.$i"; then +! LUA_SONAME=".$i" +! break +! fi +! done +! vi_cv_dll_name_lua="liblua${LUA_SOVER}$LUA_SONAME" + done + fi + AC_DEFINE(DYNAMIC_LUA) + LUA_LIBS="" +*** ../vim-7.3.804/src/auto/configure 2013-01-30 14:55:34.000000000 +0100 +--- src/auto/configure 2013-02-06 19:24:11.000000000 +0100 +*************** +*** 4737,4749 **** + if test -f "${vi_cv_path_lua_pfx}/bin/cyglua-${vi_cv_version_lua}.dll"; then + vi_cv_dll_name_lua="cyglua-${vi_cv_version_lua}.dll" + else +! for i in 0 1 2 3 4 5 6 7 8 9; do +! if test -f "${vi_cv_path_lua_pfx}/lib/liblua${vi_cv_version_lua}.so.$i"; then +! LUA_SONAME=".$i" +! break +! fi + done +- vi_cv_dll_name_lua="liblua${vi_cv_version_lua}.so$LUA_SONAME" + fi + $as_echo "#define DYNAMIC_LUA 1" >>confdefs.h + +--- 4737,4751 ---- + if test -f "${vi_cv_path_lua_pfx}/bin/cyglua-${vi_cv_version_lua}.dll"; then + vi_cv_dll_name_lua="cyglua-${vi_cv_version_lua}.dll" + else +! for LUA_SOVER in "${vi_cv_version_lua}.so" ".so.${vi_cv_version_lua}"; do +! for i in 0 1 2 3 4 5 6 7 8 9; do +! if test -f "${vi_cv_path_lua_pfx}/lib/liblua${LUA_SOVER}.$i"; then +! LUA_SONAME=".$i" +! break +! fi +! done +! vi_cv_dll_name_lua="liblua${LUA_SOVER}$LUA_SONAME" + done + fi + $as_echo "#define DYNAMIC_LUA 1" >>confdefs.h + +*** ../vim-7.3.804/src/version.c 2013-02-06 18:44:57.000000000 +0100 +--- src/version.c 2013-02-06 19:26:37.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 805, + /**/ + +-- +Permission is granted to read this message out aloud on Kings Cross Road, +London, under the condition that the orator is properly dressed. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.806 b/7.3.806 new file mode 100644 index 0000000..a28cd5b --- /dev/null +++ b/7.3.806 @@ -0,0 +1,171 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.806 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.806 +Problem: Compiler warnings in Perl code when building with Visual studio + 2012. (skeept) +Solution: Add type casts. (Christian Brabandt, 2013 Jan 30) +Files: src/if_perl.xs + + +*** ../vim-7.3.805/src/if_perl.xs 2012-09-21 12:50:44.000000000 +0200 +--- src/if_perl.xs 2013-02-06 19:55:12.000000000 +0100 +*************** +*** 1048,1054 **** + { + SV *sv = ST(i); + if (SvIOK(sv)) +! b = SvIV(ST(i)); + else + { + char_u *pat; +--- 1048,1054 ---- + { + SV *sv = ST(i); + if (SvIOK(sv)) +! b = (int) SvIV(ST(i)); + else + { + char_u *pat; +*************** +*** 1091,1097 **** + { + for (i = 0; i < items; i++) + { +! w = SvIV(ST(i)); + vimwin = win_find_nr(w); + if (vimwin) + XPUSHs(newWINrv(newSV(0), vimwin)); +--- 1091,1097 ---- + { + for (i = 0; i < items; i++) + { +! w = (int) SvIV(ST(i)); + vimwin = win_find_nr(w); + if (vimwin) + XPUSHs(newWINrv(newSV(0), vimwin)); +*************** +*** 1154,1161 **** + + if (!win_valid(win)) + win = curwin; +! lnum = SvIV(ST(1)); +! col = SvIV(ST(2)); + win->w_cursor.lnum = lnum; + win->w_cursor.col = col; + check_cursor(); /* put cursor on an existing line */ +--- 1154,1161 ---- + + if (!win_valid(win)) + win = curwin; +! lnum = (int) SvIV(ST(1)); +! col = (int) SvIV(ST(2)); + win->w_cursor.lnum = lnum; + win->w_cursor.col = col; + check_cursor(); /* put cursor on an existing line */ +*************** +*** 1216,1222 **** + { + for (i = 1; i < items; i++) + { +! lnum = SvIV(ST(i)); + if (lnum > 0 && lnum <= vimbuf->b_ml.ml_line_count) + { + line = ml_get_buf(vimbuf, lnum, FALSE); +--- 1216,1222 ---- + { + for (i = 1; i < items; i++) + { +! lnum = (long) SvIV(ST(i)); + if (lnum > 0 && lnum <= vimbuf->b_ml.ml_line_count) + { + line = ml_get_buf(vimbuf, lnum, FALSE); +*************** +*** 1239,1245 **** + if (items < 3) + croak("Usage: VIBUF::Set(vimbuf, lnum, @lines)"); + +! lnum = SvIV(ST(1)); + for(i = 2; i < items; i++, lnum++) + { + line = SvPV(ST(i),PL_na); +--- 1239,1245 ---- + if (items < 3) + croak("Usage: VIBUF::Set(vimbuf, lnum, @lines)"); + +! lnum = (long) SvIV(ST(1)); + for(i = 2; i < items; i++, lnum++) + { + line = SvPV(ST(i),PL_na); +*************** +*** 1274,1286 **** + { + if (items == 2) + { +! lnum = SvIV(ST(1)); + count = 1; + } + else if (items == 3) + { +! lnum = SvIV(ST(1)); +! count = 1 + SvIV(ST(2)) - lnum; + if (count == 0) + count = 1; + if (count < 0) +--- 1274,1286 ---- + { + if (items == 2) + { +! lnum = (long) SvIV(ST(1)); + count = 1; + } + else if (items == 3) + { +! lnum = (long) SvIV(ST(1)); +! count = (long) 1 + SvIV(ST(2)) - lnum; + if (count == 0) + count = 1; + if (count < 0) +*************** +*** 1331,1337 **** + if (items < 3) + croak("Usage: VIBUF::Append(vimbuf, lnum, @lines)"); + +! lnum = SvIV(ST(1)); + for (i = 2; i < items; i++, lnum++) + { + line = SvPV(ST(i),PL_na); +--- 1331,1337 ---- + if (items < 3) + croak("Usage: VIBUF::Append(vimbuf, lnum, @lines)"); + +! lnum = (long) SvIV(ST(1)); + for (i = 2; i < items; i++, lnum++) + { + line = SvPV(ST(i),PL_na); +*** ../vim-7.3.805/src/version.c 2013-02-06 19:49:38.000000000 +0100 +--- src/version.c 2013-02-06 19:58:16.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 806, + /**/ + +-- +BRIDGEKEEPER: What is your favorite colour? +LAUNCELOT: Blue. +BRIDGEKEEPER: Right. Off you go. + "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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.807 b/7.3.807 new file mode 100644 index 0000000..95fbbcb --- /dev/null +++ b/7.3.807 @@ -0,0 +1,52 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.807 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.807 +Problem: Popup menu does not work properly with the preview window, folds + and 'cursorcolumn'. +Solution: Redraw the popup menu after redrawing windows. (Christian + Brabandt) +Files: src/screen.c + + +*** ../vim-7.3.806/src/screen.c 2013-01-30 12:31:32.000000000 +0100 +--- src/screen.c 2013-02-13 11:59:23.000000000 +0100 +*************** +*** 548,553 **** +--- 548,558 ---- + #if defined(FEAT_SEARCH_EXTRA) + end_search_hl(); + #endif ++ #ifdef FEAT_INS_EXPAND ++ /* May need to redraw the popup menu. */ ++ if (pum_visible()) ++ pum_redraw(); ++ #endif + + #ifdef FEAT_WINDOWS + /* Reset b_mod_set flags. Going through all windows is probably faster +*** ../vim-7.3.806/src/version.c 2013-02-06 19:58:38.000000000 +0100 +--- src/version.c 2013-02-13 12:00:55.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 807, + /**/ + +-- +A special cleaning ordinance bans housewives from hiding dirt and dust under a +rug in a dwelling. + [real standing law in Pennsylvania, United States of America] + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.808 b/7.3.808 new file mode 100644 index 0000000..a63e773 --- /dev/null +++ b/7.3.808 @@ -0,0 +1,289 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.808 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.808 +Problem: Python threads still do not work properly. +Solution: Fix both Python 2 and 3. Add tests. (Ken Takata) +Files: src/if_python.c, src/if_python3.c, src/testdir/test86.in, + src/testdir/test86.ok, src/testdir/test87.in, + src/testdir/test87.ok + + +*** ../vim-7.3.807/src/if_python.c 2013-01-30 11:44:33.000000000 +0100 +--- src/if_python.c 2013-02-13 14:07:28.000000000 +0100 +*************** +*** 741,747 **** + PyMac_Initialize(); + #endif + /* Initialise threads, and below save the state using +! * PyGILState_Ensure. Without the call to PyGILState_Ensure, thread + * specific state (such as the system trace hook), will be lost + * between invocations of Python code. */ + PyEval_InitThreads(); +--- 741,747 ---- + PyMac_Initialize(); + #endif + /* Initialise threads, and below save the state using +! * PyEval_SaveThread. Without the call to PyEval_SaveThread, thread + * specific state (such as the system trace hook), will be lost + * between invocations of Python code. */ + PyEval_InitThreads(); +*************** +*** 755,764 **** + if (PythonMod_Init()) + goto fail; + +- /* The first python thread is vim's, release the lock. */ +- Python_SaveThread(); +- pygilstate = PyGILState_Ensure(); +- + globals = PyModule_GetDict(PyImport_AddModule("__main__")); + + /* Remove the element from sys.path that was added because of our +--- 755,760 ---- +*************** +*** 767,773 **** + * the current directory in sys.path. */ + PyRun_SimpleString("import sys; sys.path = filter(lambda x: x != '/must>not&exist', sys.path)"); + +! PyGILState_Release(pygilstate); + + initialised = 1; + } +--- 763,776 ---- + * the current directory in sys.path. */ + PyRun_SimpleString("import sys; sys.path = filter(lambda x: x != '/must>not&exist', sys.path)"); + +! /* lock is created and acquired in PyEval_InitThreads() and thread +! * state is created in Py_Initialize() +! * there _PyGILState_NoteThreadState() also sets gilcounter to 1 +! * (python must have threads enabled!) +! * so the following does both: unlock GIL and save thread state in TLS +! * without deleting thread state +! */ +! PyEval_SaveThread(); + + initialised = 1; + } +*** ../vim-7.3.807/src/if_python3.c 2012-11-28 15:33:10.000000000 +0100 +--- src/if_python3.c 2013-02-13 14:07:28.000000000 +0100 +*************** +*** 729,741 **** + #else + PyMac_Initialize(); + #endif +! /* Initialise threads, and save the state using PyGILState_Ensure. +! * Without the call to PyGILState_Ensure, thread specific state (such +! * as the system trace hook), will be lost between invocations of +! * Python code. */ + PyEval_InitThreads(); +- pygilstate = PyGILState_Ensure(); +- + #ifdef DYNAMIC_PYTHON3 + get_py3_exceptions(); + #endif +--- 729,739 ---- + #else + PyMac_Initialize(); + #endif +! /* Initialise threads, and below save the state using +! * PyEval_SaveThread. Without the call to PyEval_SaveThread, thread +! * specific state (such as the system trace hook), will be lost +! * between invocations of Python code. */ + PyEval_InitThreads(); + #ifdef DYNAMIC_PYTHON3 + get_py3_exceptions(); + #endif +*************** +*** 754,766 **** + */ + PyRun_SimpleString("import vim; import sys; sys.path = list(filter(lambda x: not x.endswith('must>not&exist'), sys.path))"); + +! // lock is created and acquired in PyEval_InitThreads() and thread +! // state is created in Py_Initialize() +! // there _PyGILState_NoteThreadState() also sets gilcounter to 1 +! // (python must have threads enabled!) +! // so the following does both: unlock GIL and save thread state in TLS +! // without deleting thread state +! PyGILState_Release(pygilstate); + + py3initialised = 1; + } +--- 752,765 ---- + */ + PyRun_SimpleString("import vim; import sys; sys.path = list(filter(lambda x: not x.endswith('must>not&exist'), sys.path))"); + +! /* lock is created and acquired in PyEval_InitThreads() and thread +! * state is created in Py_Initialize() +! * there _PyGILState_NoteThreadState() also sets gilcounter to 1 +! * (python must have threads enabled!) +! * so the following does both: unlock GIL and save thread state in TLS +! * without deleting thread state +! */ +! PyEval_SaveThread(); + + py3initialised = 1; + } +*** ../vim-7.3.807/src/testdir/test86.in 2012-09-21 14:00:05.000000000 +0200 +--- src/testdir/test86.in 2013-02-13 13:58:25.000000000 +0100 +*************** +*** 267,272 **** +--- 267,320 ---- + : $put =toput + : endtry + :endfor ++ :" ++ :" threading ++ :let l = [0] ++ :py l=vim.bindeval('l') ++ :py < 8 # check if the background thread is working ++ :$put =string(l) ++ :" ++ :" settrace ++ :let l = [] ++ :py l=vim.bindeval('l') ++ :py < 8 # check if the background thread is working ++ :$put =string(l) ++ :" ++ :" settrace ++ :let l = [] ++ :py3 l=vim.bindeval('l') ++ :py3 < +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.809 +Problem: The dosinst.c program has a buffer overflow. (Thomas Gwae) +Solution: Ignore $VIMRUNTIME if it is too long. +Files: src/dosinst.c + + +*** ../vim-7.3.808/src/dosinst.c 2010-08-15 21:57:28.000000000 +0200 +--- src/dosinst.c 2013-02-13 14:34:25.000000000 +0100 +*************** +*** 375,381 **** + + /* First get $VIMRUNTIME. If it's set, remove the tail. */ + vim = getenv("VIMRUNTIME"); +! if (vim != NULL && *vim != 0) + { + strcpy(buf, vim); + remove_tail(buf); +--- 375,381 ---- + + /* First get $VIMRUNTIME. If it's set, remove the tail. */ + vim = getenv("VIMRUNTIME"); +! if (vim != NULL && *vim != 0 && strlen(vim) < BUFSIZE) + { + strcpy(buf, vim); + remove_tail(buf); +*** ../vim-7.3.808/src/version.c 2013-02-13 14:17:00.000000000 +0100 +--- src/version.c 2013-02-13 14:36:33.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 809, + /**/ + +-- +"I know that there are people who don't love their fellow man, +and I hate those people!" - Tom Lehrer + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.810 b/7.3.810 new file mode 100644 index 0000000..60c633a --- /dev/null +++ b/7.3.810 @@ -0,0 +1,259 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.810 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.810 +Problem: 'relativenumber is reset unexpectedly. (François Ingelrest) +Solution: After an option was reset also reset the global value. Add a test. + (Christian Brabandt) +Files: src/option.c, src/testdir/Make_amiga.mak, + src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + src/testdir/Make_os2.mak, src/testdir/Make_vms.mms, + src/testdir/Makefile, src/testdir/test89.in, + src/testdir/test89.ok + + +*** ../vim-7.3.809/src/option.c 2013-01-17 17:37:31.000000000 +0100 +--- src/option.c 2013-02-13 15:40:12.000000000 +0100 +*************** +*** 7109,7115 **** + return errmsg; + } + +! #ifdef FEAT_SYN_HL + /* + * Simple int comparison function for use with qsort() + */ +--- 7109,7115 ---- + return errmsg; + } + +! #if defined(FEAT_SYN_HL) || defined(PROTO) + /* + * Simple int comparison function for use with qsort() + */ +*************** +*** 7630,7646 **** + } + #endif + +! /* 'list', 'number' */ +! else if ((int *)varp == &curwin->w_p_list +! || (int *)varp == &curwin->w_p_nu + || (int *)varp == &curwin->w_p_rnu) + { + /* If 'number' is set, reset 'relativenumber'. */ + /* If 'relativenumber' is set, reset 'number'. */ + if ((int *)varp == &curwin->w_p_nu && curwin->w_p_nu) + curwin->w_p_rnu = FALSE; + if ((int *)varp == &curwin->w_p_rnu && curwin->w_p_rnu) + curwin->w_p_nu = FALSE; + } + + else if ((int *)varp == &curbuf->b_p_ro) +--- 7630,7651 ---- + } + #endif + +! /* 'number', 'relativenumber' */ +! else if ((int *)varp == &curwin->w_p_nu + || (int *)varp == &curwin->w_p_rnu) + { + /* If 'number' is set, reset 'relativenumber'. */ + /* If 'relativenumber' is set, reset 'number'. */ + if ((int *)varp == &curwin->w_p_nu && curwin->w_p_nu) ++ { + curwin->w_p_rnu = FALSE; ++ curwin->w_allbuf_opt.wo_rnu = FALSE; ++ } + if ((int *)varp == &curwin->w_p_rnu && curwin->w_p_rnu) ++ { + curwin->w_p_nu = FALSE; ++ curwin->w_allbuf_opt.wo_nu = FALSE; ++ } + } + + else if ((int *)varp == &curbuf->b_p_ro) +*** ../vim-7.3.809/src/testdir/Make_amiga.mak 2012-12-05 16:10:21.000000000 +0100 +--- src/testdir/Make_amiga.mak 2013-02-13 15:01:32.000000000 +0100 +*************** +*** 31,37 **** + test66.out test67.out test68.out test69.out test70.out \ + test71.out test72.out test73.out test74.out test75.out \ + test76.out test77.out test78.out test79.out test80.out \ +! test81.out test82.out test83.out test84.out test88.out + + .SUFFIXES: .in .out + +--- 31,38 ---- + test66.out test67.out test68.out test69.out test70.out \ + test71.out test72.out test73.out test74.out test75.out \ + test76.out test77.out test78.out test79.out test80.out \ +! test81.out test82.out test83.out test84.out test88.out \ +! test89.out + + .SUFFIXES: .in .out + +*************** +*** 136,138 **** +--- 137,140 ---- + test83.out: test83.in + test84.out: test84.in + test88.out: test88.in ++ test89.out: test89.in +*** ../vim-7.3.809/src/testdir/Make_dos.mak 2012-12-05 16:10:21.000000000 +0100 +--- src/testdir/Make_dos.mak 2013-02-13 15:00:59.000000000 +0100 +*************** +*** 30,36 **** + test68.out test69.out test71.out test72.out test73.out \ + test74.out test75.out test76.out test77.out test78.out \ + test79.out test80.out test81.out test82.out test83.out \ +! test84.out test85.out test86.out test87.out test88.out + + SCRIPTS32 = test50.out test70.out + +--- 30,37 ---- + test68.out test69.out test71.out test72.out test73.out \ + test74.out test75.out test76.out test77.out test78.out \ + test79.out test80.out test81.out test82.out test83.out \ +! test84.out test85.out test86.out test87.out test88.out \ +! test89.out + + SCRIPTS32 = test50.out test70.out + +*** ../vim-7.3.809/src/testdir/Make_ming.mak 2012-12-05 16:10:21.000000000 +0100 +--- src/testdir/Make_ming.mak 2013-02-13 15:01:16.000000000 +0100 +*************** +*** 50,56 **** + test68.out test69.out test71.out test72.out test73.out \ + test74.out test75.out test76.out test77.out test78.out \ + test79.out test80.out test81.out test82.out test83.out \ +! test84.out test85.out test86.out test87.out test88.out + + SCRIPTS32 = test50.out test70.out + +--- 50,57 ---- + test68.out test69.out test71.out test72.out test73.out \ + test74.out test75.out test76.out test77.out test78.out \ + test79.out test80.out test81.out test82.out test83.out \ +! test84.out test85.out test86.out test87.out test88.out \ +! test89.out + + SCRIPTS32 = test50.out test70.out + +*** ../vim-7.3.809/src/testdir/Make_os2.mak 2012-12-05 16:10:21.000000000 +0100 +--- src/testdir/Make_os2.mak 2013-02-13 15:00:59.000000000 +0100 +*************** +*** 31,37 **** + test66.out test67.out test68.out test69.out test70.out \ + test71.out test72.out test73.out test74.out test75.out \ + test76.out test77.out test78.out test79.out test80.out \ +! test81.out test82.out test83.out test84.out test88.out + + .SUFFIXES: .in .out + +--- 31,38 ---- + test66.out test67.out test68.out test69.out test70.out \ + test71.out test72.out test73.out test74.out test75.out \ + test76.out test77.out test78.out test79.out test80.out \ +! test81.out test82.out test83.out test84.out test88.out \ +! test89.out + + .SUFFIXES: .in .out + +*** ../vim-7.3.809/src/testdir/Make_vms.mms 2012-12-05 16:10:21.000000000 +0100 +--- src/testdir/Make_vms.mms 2013-02-13 15:00:59.000000000 +0100 +*************** +*** 76,82 **** + test66.out test67.out test68.out test69.out \ + test71.out test72.out test74.out test75.out test76.out \ + test77.out test78.out test79.out test80.out test81.out \ +! test82.out test83.out test84.out test88.out + + # Known problems: + # Test 30: a problem around mac format - unknown reason +--- 76,82 ---- + test66.out test67.out test68.out test69.out \ + test71.out test72.out test74.out test75.out test76.out \ + test77.out test78.out test79.out test80.out test81.out \ +! test82.out test83.out test84.out test88.out test89.out + + # Known problems: + # Test 30: a problem around mac format - unknown reason +*** ../vim-7.3.809/src/testdir/Makefile 2012-12-05 18:21:28.000000000 +0100 +--- src/testdir/Makefile 2013-02-13 15:00:59.000000000 +0100 +*************** +*** 27,33 **** + test69.out test70.out test71.out test72.out test73.out \ + test74.out test75.out test76.out test77.out test78.out \ + test79.out test80.out test81.out test82.out test83.out \ +! test84.out test85.out test86.out test87.out test88.out + + SCRIPTS_GUI = test16.out + +--- 27,34 ---- + test69.out test70.out test71.out test72.out test73.out \ + test74.out test75.out test76.out test77.out test78.out \ + test79.out test80.out test81.out test82.out test83.out \ +! test84.out test85.out test86.out test87.out test88.out \ +! test89.out + + SCRIPTS_GUI = test16.out + +*** ../vim-7.3.809/src/testdir/test89.in 2013-02-13 15:43:44.000000000 +0100 +--- src/testdir/test89.in 2013-02-13 15:07:28.000000000 +0100 +*************** +*** 0 **** +--- 1,15 ---- ++ Some tests for setting 'number' and 'relativenumber' ++ ++ STARTTEST ++ :set hidden nocp nu rnu ++ :redir @a | set nu? rnu? | redir END ++ :e! xx ++ :redir @b | set nu? rnu? | redir END ++ :e! # ++ :$put ='results:' ++ :$put a ++ :$put b ++ :/^results/,$w! test.out ++ :q! ++ ENDTEST ++ +*** ../vim-7.3.809/src/testdir/test89.ok 2013-02-13 15:43:44.000000000 +0100 +--- src/testdir/test89.ok 2013-02-13 15:08:05.000000000 +0100 +*************** +*** 0 **** +--- 1,7 ---- ++ results: ++ ++ nonumber ++ relativenumber ++ ++ nonumber ++ relativenumber +*** ../vim-7.3.809/src/version.c 2013-02-13 14:36:39.000000000 +0100 +--- src/version.c 2013-02-13 15:42:18.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 810, + /**/ + +-- +A law to reduce crime states: "It is mandatory for a motorist with criminal +intentions to stop at the city limits and telephone the chief of police as he +is entering the town. + [real standing law in Washington, United States of America] + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.811 b/7.3.811 new file mode 100644 index 0000000..657b3e0 --- /dev/null +++ b/7.3.811 @@ -0,0 +1,53 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.811 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.811 +Problem: Useless termresponse parsing for SGR mouse. +Solution: Skip the parsing. (Hayaki Saito) +Files: src/term.c + + +*** ../vim-7.3.810/src/term.c 2012-12-05 14:42:56.000000000 +0100 +--- src/term.c 2013-02-13 15:49:24.000000000 +0100 +*************** +*** 4045,4052 **** + #ifdef FEAT_TERMRESPONSE + if (key_name[0] == NUL + /* URXVT mouse uses [#;#;#M, but we are matching [ */ +! || key_name[0] == KS_URXVT_MOUSE +! || key_name[0] == KS_SGR_MOUSE) + { + /* Check for xterm version string: "[>{x};{vers};{y}c". Also + * eat other possible responses to t_RV, rxvt returns +--- 4045,4051 ---- + #ifdef FEAT_TERMRESPONSE + if (key_name[0] == NUL + /* URXVT mouse uses [#;#;#M, but we are matching [ */ +! || key_name[0] == KS_URXVT_MOUSE) + { + /* Check for xterm version string: "[>{x};{vers};{y}c". Also + * eat other possible responses to t_RV, rxvt returns +*** ../vim-7.3.810/src/version.c 2013-02-13 15:44:22.000000000 +0100 +--- src/version.c 2013-02-13 15:50:27.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 811, + /**/ + +-- +No children may attend school with their breath smelling of "wild onions." + [real standing law in West Virginia, United States of America] + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.812 b/7.3.812 new file mode 100644 index 0000000..83b9d2f --- /dev/null +++ b/7.3.812 @@ -0,0 +1,86 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.812 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.812 +Problem: When 'indentexpr' moves the cursor "curswant" not restored. +Solution: Restore "curswant". (Sung Pae) +Files: src/misc1.c + + +*** ../vim-7.3.811/src/misc1.c 2013-01-17 17:01:56.000000000 +0100 +--- src/misc1.c 2013-02-13 16:04:08.000000000 +0100 +*************** +*** 8809,8820 **** + get_expr_indent() + { + int indent; +! pos_T pos; + int save_State; + int use_sandbox = was_set_insecurely((char_u *)"indentexpr", + OPT_LOCAL); + +! pos = curwin->w_cursor; + set_vim_var_nr(VV_LNUM, curwin->w_cursor.lnum); + if (use_sandbox) + ++sandbox; +--- 8809,8826 ---- + get_expr_indent() + { + int indent; +! pos_T save_pos; +! colnr_T save_curswant; +! int save_set_curswant; + int save_State; + int use_sandbox = was_set_insecurely((char_u *)"indentexpr", + OPT_LOCAL); + +! /* Save and restore cursor position and curswant, in case it was changed +! * via :normal commands */ +! save_pos = curwin->w_cursor; +! save_curswant = curwin->w_curswant; +! save_set_curswant = curwin->w_set_curswant; + set_vim_var_nr(VV_LNUM, curwin->w_cursor.lnum); + if (use_sandbox) + ++sandbox; +*************** +*** 8829,8835 **** + * command. */ + save_State = State; + State = INSERT; +! curwin->w_cursor = pos; + check_cursor(); + State = save_State; + +--- 8835,8843 ---- + * command. */ + save_State = State; + State = INSERT; +! curwin->w_cursor = save_pos; +! curwin->w_curswant = save_curswant; +! curwin->w_set_curswant = save_set_curswant; + check_cursor(); + State = save_State; + +*** ../vim-7.3.811/src/version.c 2013-02-13 15:53:15.000000000 +0100 +--- src/version.c 2013-02-13 16:01:52.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 812, + /**/ + +-- +Living on Earth includes an annual free trip around the Sun. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.813 b/7.3.813 new file mode 100644 index 0000000..de1a0a9 --- /dev/null +++ b/7.3.813 @@ -0,0 +1,56 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.813 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.813 +Problem: The CompleteDone event is not triggered when there are no pattern + matches. (Jianjun Mao) +Solution: Trigger the event. (Christian Brabandt) +Files: src/edit.c + + +*** ../vim-7.3.812/src/edit.c 2013-01-17 15:36:54.000000000 +0100 +--- src/edit.c 2013-02-13 16:25:35.000000000 +0100 +*************** +*** 3846,3851 **** +--- 3846,3857 ---- + #endif + } + } ++ #ifdef FEAT_AUTOCMD ++ else if (ctrl_x_mode == CTRL_X_LOCAL_MSG) ++ /* Trigger the CompleteDone event to give scripts a chance to act ++ * upon the (possibly failed) completion. */ ++ apply_autocmds(EVENT_COMPLETEDONE, NULL, NULL, FALSE, curbuf); ++ #endif + + /* reset continue_* if we left expansion-mode, if we stay they'll be + * (re)set properly in ins_complete() */ +*** ../vim-7.3.812/src/version.c 2013-02-13 16:10:13.000000000 +0100 +--- src/version.c 2013-02-13 16:23:50.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 813, + /**/ + +-- +FROG: How you English say: I one more time, mac, I unclog my nose towards + you, sons of a window-dresser, so, you think you could out-clever us + French fellows with your silly knees-bent creeping about advancing + behaviour. (blows a raspberry) I wave my private parts at your aunties, + you brightly-coloured, mealy-templed, cranberry-smelling, electric + donkey-bottom biters. + "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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.814 b/7.3.814 new file mode 100644 index 0000000..28d2acb --- /dev/null +++ b/7.3.814 @@ -0,0 +1,146 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.814 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.814 +Problem: Can't input multibyte characters on Win32 console if 'encoding' is + different from current codepage. +Solution: Use convert_input_safe() instead of convert_input(). Make + string_convert_ext() return an error for incomplete input. (Ken + Takata) +Files: src/mbyte.c, src/os_win32.c + + +*** ../vim-7.3.813/src/mbyte.c 2013-01-30 13:59:31.000000000 +0100 +--- src/mbyte.c 2013-02-13 16:38:25.000000000 +0100 +*************** +*** 6256,6263 **** + if (vcp->vc_cpfrom == 0) + tmp_len = utf8_to_utf16(ptr, len, NULL, NULL); + else +! tmp_len = MultiByteToWideChar(vcp->vc_cpfrom, 0, +! ptr, len, 0, 0); + tmp = (short_u *)alloc(sizeof(short_u) * tmp_len); + if (tmp == NULL) + break; +--- 6256,6278 ---- + if (vcp->vc_cpfrom == 0) + tmp_len = utf8_to_utf16(ptr, len, NULL, NULL); + else +! { +! tmp_len = MultiByteToWideChar(vcp->vc_cpfrom, +! unconvlenp ? MB_ERR_INVALID_CHARS : 0, +! ptr, len, 0, 0); +! if (tmp_len == 0 +! && GetLastError() == ERROR_NO_UNICODE_TRANSLATION) +! { +! if (lenp != NULL) +! *lenp = 0; +! if (unconvlenp != NULL) +! *unconvlenp = len; +! retval = alloc(1); +! if (retval) +! retval[0] = NUL; +! return retval; +! } +! } + tmp = (short_u *)alloc(sizeof(short_u) * tmp_len); + if (tmp == NULL) + break; +*** ../vim-7.3.813/src/os_win32.c 2012-11-20 16:53:34.000000000 +0100 +--- src/os_win32.c 2013-02-13 16:41:05.000000000 +0100 +*************** +*** 1466,1471 **** +--- 1466,1476 ---- + #define TYPEAHEADLEN 20 + static char_u typeahead[TYPEAHEADLEN]; /* previously typed bytes. */ + static int typeaheadlen = 0; ++ #ifdef FEAT_MBYTE ++ static char_u *rest = NULL; /* unconverted rest of previous read */ ++ static int restlen = 0; ++ int unconverted; ++ #endif + + /* First use any typeahead that was kept because "buf" was too small. */ + if (typeaheadlen > 0) +*************** +*** 1569,1574 **** +--- 1574,1606 ---- + + c = tgetch(&modifiers, &ch2); + ++ #ifdef FEAT_MBYTE ++ /* stolen from fill_input_buf() in ui.c */ ++ if (rest != NULL) ++ { ++ /* Use remainder of previous call, starts with an invalid ++ * character that may become valid when reading more. */ ++ if (restlen > TYPEAHEADLEN - typeaheadlen) ++ unconverted = TYPEAHEADLEN - typeaheadlen; ++ else ++ unconverted = restlen; ++ mch_memmove(typeahead + typeaheadlen, rest, unconverted); ++ if (unconverted == restlen) ++ { ++ vim_free(rest); ++ rest = NULL; ++ } ++ else ++ { ++ restlen -= unconverted; ++ mch_memmove(rest, rest + unconverted, restlen); ++ } ++ typeaheadlen += unconverted; ++ } ++ else ++ unconverted = 0; ++ #endif ++ + if (typebuf_changed(tb_change_cnt)) + { + /* "buf" may be invalid now if a client put something in the +*************** +*** 1604,1611 **** + * when 'tenc' is set. */ + if (input_conv.vc_type != CONV_NONE + && (ch2 == NUL || c != K_NUL)) +! n = convert_input(typeahead + typeaheadlen, n, +! TYPEAHEADLEN - typeaheadlen); + #endif + + /* Use the ALT key to set the 8th bit of the character +--- 1636,1647 ---- + * when 'tenc' is set. */ + if (input_conv.vc_type != CONV_NONE + && (ch2 == NUL || c != K_NUL)) +! { +! typeaheadlen -= unconverted; +! n = convert_input_safe(typeahead + typeaheadlen, +! n + unconverted, TYPEAHEADLEN - typeaheadlen, +! rest == NULL ? &rest : NULL, &restlen); +! } + #endif + + /* Use the ALT key to set the 8th bit of the character +*** ../vim-7.3.813/src/version.c 2013-02-13 16:30:17.000000000 +0100 +--- src/version.c 2013-02-13 16:47:50.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 814, + /**/ + +-- +SIGIRO -- irony detected (iron core dumped) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.815 b/7.3.815 new file mode 100644 index 0000000..f97dcbc --- /dev/null +++ b/7.3.815 @@ -0,0 +1,168 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.815 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.815 +Problem: Building with Cygwin and Ruby doesn't work. +Solution: Copy some things from the MingW build file. (Ken Takata) +Files: src/Make_cyg.mak + + +*** ../vim-7.3.814/src/Make_cyg.mak 2013-01-23 13:55:16.000000000 +0100 +--- src/Make_cyg.mak 2013-02-13 17:03:23.000000000 +0100 +*************** +*** 47,54 **** + # (i386) + # USEDLL no or yes: set to yes to use the Runtime library DLL (no) + # For USEDLL=yes the cygwin1.dll is required to run Vim. +! # "no" does not work with latest version of Cygwin, use +! # Make_ming.mak instead. Or set CC to gcc-3 and add + # -L/lib/w32api to EXTRA_LIBS. + # POSTSCRIPT no or yes: set to yes for PostScript printing (no) + # FEATURES TINY, SMALL, NORMAL, BIG or HUGE (BIG) +--- 47,54 ---- + # (i386) + # USEDLL no or yes: set to yes to use the Runtime library DLL (no) + # For USEDLL=yes the cygwin1.dll is required to run Vim. +! # For "no" the mingw-gcc-g++ package or the mingw64-i686-gcc-g++ +! # package is required to complie Vim. Or set CC to gcc-3 and add + # -L/lib/w32api to EXTRA_LIBS. + # POSTSCRIPT no or yes: set to yes for PostScript printing (no) + # FEATURES TINY, SMALL, NORMAL, BIG or HUGE (BIG) +*************** +*** 114,122 **** + INCLUDES = -march=$(ARCH) -Iproto + + #>>>>> name of the compiler and linker, name of lib directory +! CROSS_COMPILE = + CC = gcc + RC = windres + + ############################## + # DYNAMIC_PERL=yes and no both work +--- 114,130 ---- + INCLUDES = -march=$(ARCH) -Iproto + + #>>>>> name of the compiler and linker, name of lib directory +! ifeq (yes, $(USEDLL)) +! # CROSS_COMPILE is used for the gvimext DLL. +! CROSS_COMPILE = i686-pc-mingw32- + CC = gcc + RC = windres ++ else ++ # i686-pc-mingw32-gcc, i686-w64-mingw32-gcc or gcc-3 can be used. ++ CROSS_COMPILE = i686-pc-mingw32- ++ CC = $(CROSS_COMPILE)gcc ++ RC = $(CROSS_COMPILE)windres ++ endif + + ############################## + # DYNAMIC_PERL=yes and no both work +*************** +*** 193,223 **** + ############################## + ifdef RUBY + + ifndef RUBY_VER +! RUBY_VER=16 + endif +- + ifndef RUBY_VER_LONG +! RUBY_VER_LONG=1.6 + endif +! +! ifndef DYNAMIC_RUBY +! DYNAMIC_RUBY = yes + endif + +- ifeq ($(RUBY_VER), 16) + ifndef RUBY_PLATFORM + RUBY_PLATFORM = i586-mswin32 +- endif +- ifndef RUBY_INSTALL_NAME +- RUBY_INSTALL_NAME = mswin32-ruby$(RUBY_VER) +- endif + else +! ifndef RUBY_PLATFORM + RUBY_PLATFORM = i386-mswin32 + endif + ifndef RUBY_INSTALL_NAME +! RUBY_INSTALL_NAME = msvcrt-ruby$(RUBY_VER) + endif + endif + +--- 201,237 ---- + ############################## + ifdef RUBY + ++ ifndef DYNAMIC_RUBY ++ DYNAMIC_RUBY=yes ++ endif ++ # Set default value + ifndef RUBY_VER +! RUBY_VER = 16 + endif + ifndef RUBY_VER_LONG +! RUBY_VER_LONG = 1.6 + endif +! ifndef RUBY_API_VER +! RUBY_API_VER = $(subst .,,$(RUBY_VER_LONG)) + endif + + ifndef RUBY_PLATFORM ++ ifeq ($(RUBY_VER), 16) + RUBY_PLATFORM = i586-mswin32 + else +! ifneq ($(wildcard $(RUBY)/lib/ruby/$(RUBY_VER_LONG)/i386-mingw32),) +! RUBY_PLATFORM = i386-mingw32 +! else + RUBY_PLATFORM = i386-mswin32 + endif ++ endif ++ endif ++ + ifndef RUBY_INSTALL_NAME +! ifeq ($(RUBY_VER), 16) +! RUBY_INSTALL_NAME = mswin32-ruby$(RUBY_API_VER) +! else +! RUBY_INSTALL_NAME = msvcrt-ruby$(RUBY_API_VER) + endif + endif + +*************** +*** 226,231 **** +--- 240,249 ---- + endif + + DEFINES += -DFEAT_RUBY ++ ifneq ($(findstring w64-mingw32,$(CC)),) ++ # A workaround for mingw-w64 ++ DEFINES += -DHAVE_STRUCT_TIMESPEC -DHAVE_STRUCT_TIMEZONE ++ endif + INCLUDES += -I$(RUBY)/lib/ruby/$(RUBY_VER_LONG)/$(RUBY_PLATFORM) + ifdef RUBY_19_OR_LATER + INCLUDES += -I$(RUBY)/include/ruby-$(RUBY_VER_LONG) -I$(RUBY)/include/ruby-$(RUBY_VER_LONG)/$(RUBY_PLATFORM) +*** ../vim-7.3.814/src/version.c 2013-02-13 16:49:54.000000000 +0100 +--- src/version.c 2013-02-13 17:03:36.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 815, + /**/ + +-- +ARTHUR: If you do not open these doors, we will take this castle by force ... + [A bucket of slops land on ARTHUR. He tries to retain his dignity.] + "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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.816 b/7.3.816 new file mode 100644 index 0000000..6e9f125 --- /dev/null +++ b/7.3.816 @@ -0,0 +1,368 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.816 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.816 +Problem: Can't compute a hash. +Solution: Add the sha256() function. (Tyru, Hirohito Higashi) +Files: runtime/doc/eval.txt, src/eval.c, src/proto/sha256.pro, + src/sha256.c, src/testdir/test90.in, src/testdir/test90.ok, + src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, + src/testdir/Make_vms.mms, src/testdir/Makefile + +*** ../vim-7.3.815/runtime/doc/eval.txt 2013-01-23 17:15:25.000000000 +0100 +--- runtime/doc/eval.txt 2013-02-13 17:32:52.000000000 +0100 +*************** +*** 1920,1925 **** +--- 1931,1937 ---- + settabwinvar( {tabnr}, {winnr}, {varname}, {val}) set {varname} in window + {winnr} in tab page {tabnr} to {val} + setwinvar( {nr}, {varname}, {val}) set {varname} in window {nr} to {val} ++ sha256( {string}) String SHA256 checksum of {string} + shellescape( {string} [, {special}]) + String escape {string} for use as shell + command argument +*************** +*** 5312,5317 **** +--- 5337,5347 ---- + :call setwinvar(1, "&list", 0) + :call setwinvar(2, "myvar", "foobar") + ++ sha256({string}) *sha256()* ++ Returns a String with 64 hex charactes, which is the SHA256 ++ checksum of {string}. ++ {only available when compiled with the |+cryptv| feature} ++ + shellescape({string} [, {special}]) *shellescape()* + Escape {string} for use as a shell command argument. + On MS-Windows and MS-DOS, when 'shellslash' is not set, it +*** ../vim-7.3.815/src/eval.c 2013-01-30 14:55:34.000000000 +0100 +--- src/eval.c 2013-02-13 17:24:40.000000000 +0100 +*************** +*** 688,693 **** +--- 688,696 ---- + static void f_settabvar __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_settabwinvar __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_setwinvar __ARGS((typval_T *argvars, typval_T *rettv)); ++ #ifdef FEAT_CRYPT ++ static void f_sha256 __ARGS((typval_T *argvars, typval_T *rettv)); ++ #endif /* FEAT_CRYPT */ + static void f_shellescape __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_shiftwidth __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_simplify __ARGS((typval_T *argvars, typval_T *rettv)); +*************** +*** 8055,8060 **** +--- 8058,8066 ---- + {"settabvar", 3, 3, f_settabvar}, + {"settabwinvar", 4, 4, f_settabwinvar}, + {"setwinvar", 3, 3, f_setwinvar}, ++ #ifdef FEAT_CRYPT ++ {"sha256", 1, 1, f_sha256}, ++ #endif + {"shellescape", 1, 2, f_shellescape}, + {"shiftwidth", 0, 0, f_shiftwidth}, + {"simplify", 1, 1, f_simplify}, +*************** +*** 16710,16715 **** +--- 16716,16739 ---- + } + } + ++ #ifdef FEAT_CRYPT ++ /* ++ * "sha256({string})" function ++ */ ++ static void ++ f_sha256(argvars, rettv) ++ typval_T *argvars; ++ typval_T *rettv; ++ { ++ char_u *p; ++ ++ p = get_tv_string(&argvars[0]); ++ rettv->vval.v_string = vim_strsave( ++ sha256_bytes(p, (int)STRLEN(p), NULL, 0)); ++ rettv->v_type = VAR_STRING; ++ } ++ #endif /* FEAT_CRYPT */ ++ + /* + * "shellescape({string})" function + */ +*** ../vim-7.3.815/src/proto/sha256.pro 2010-08-15 21:57:28.000000000 +0200 +--- src/proto/sha256.pro 2013-02-13 17:25:08.000000000 +0100 +*************** +*** 2,7 **** +--- 2,8 ---- + void sha256_start __ARGS((context_sha256_T *ctx)); + void sha256_update __ARGS((context_sha256_T *ctx, char_u *input, UINT32_T length)); + void sha256_finish __ARGS((context_sha256_T *ctx, char_u digest[32])); ++ char_u *sha256_bytes __ARGS((char_u *buf, int buf_len, char_u *salt, int salt_len)); + char_u *sha256_key __ARGS((char_u *buf, char_u *salt, int salt_len)); + int sha256_self_test __ARGS((void)); + void sha2_seed __ARGS((char_u *header, int header_len, char_u *salt, int salt_len)); +*** ../vim-7.3.815/src/sha256.c 2012-11-20 17:18:56.000000000 +0100 +--- src/sha256.c 2013-02-13 17:25:04.000000000 +0100 +*************** +*** 273,286 **** + #endif /* FEAT_CRYPT || FEAT_PERSISTENT_UNDO */ + + #if defined(FEAT_CRYPT) || defined(PROTO) +- static char_u *sha256_bytes __ARGS((char_u *buf, int buf_len, char_u *salt, int salt_len)); + static unsigned int get_some_time __ARGS((void)); + + /* + * Returns hex digest of "buf[buf_len]" in a static array. + * if "salt" is not NULL also do "salt[salt_len]". + */ +! static char_u * + sha256_bytes(buf, buf_len, salt, salt_len) + char_u *buf; + int buf_len; +--- 273,285 ---- + #endif /* FEAT_CRYPT || FEAT_PERSISTENT_UNDO */ + + #if defined(FEAT_CRYPT) || defined(PROTO) + static unsigned int get_some_time __ARGS((void)); + + /* + * Returns hex digest of "buf[buf_len]" in a static array. + * if "salt" is not NULL also do "salt[salt_len]". + */ +! char_u * + sha256_bytes(buf, buf_len, salt, salt_len) + char_u *buf; + int buf_len; +*** ../vim-7.3.815/src/testdir/test90.in 2013-02-13 17:33:42.000000000 +0100 +--- src/testdir/test90.in 2013-02-13 17:20:13.000000000 +0100 +*************** +*** 0 **** +--- 1,53 ---- ++ Tests for sha256() function. vim: set ft=vim et ts=2 sw=2 : ++ ++ STARTTEST ++ :so small.vim ++ :if !has('cryptv') || !exists('*sha256') ++ e! test.ok ++ wq! test.out ++ :endif ++ :" ++ :let testcase='test for empty string: ' ++ :if sha256("") ==# 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855' ++ : let res='ok' ++ :else ++ : let res='ng' ++ :endif ++ :$put =testcase.res ++ :" ++ :let testcase='test for 1 char: ' ++ :if sha256("a") ==# 'ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb' ++ : let res='ok' ++ :else ++ : let res='ng' ++ :endif ++ :$put =testcase.res ++ :" ++ :let testcase='test for 3 chars: ' ++ :if sha256("abc") ==# 'ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad' ++ : let res='ok' ++ :else ++ : let res='ng' ++ :endif ++ :$put =testcase.res ++ :" ++ :let testcase='test for contains meta char: ' ++ :if sha256("foo\nbar") ==# '807eff6267f3f926a21d234f7b0cf867a86f47e07a532f15e8cc39ed110ca776' ++ : let res='ok' ++ :else ++ : let res='ng' ++ :endif ++ :$put =testcase.res ++ :" ++ :let testcase='test for contains non-ascii char: ' ++ :if sha256("\xde\xad\xbe\xef") ==# '5f78c33274e43fa9de5659265c1d917e25c03722dcb0b8d27db8d5feaa813953' ++ : let res='ok' ++ :else ++ : let res='ng' ++ :endif ++ :$put =testcase.res ++ " ++ :/^start:/,$wq! test.out ++ ENDTEST ++ ++ start: +*** ../vim-7.3.815/src/testdir/test90.ok 2013-02-13 17:33:42.000000000 +0100 +--- src/testdir/test90.ok 2013-02-13 17:20:36.000000000 +0100 +*************** +*** 0 **** +--- 1,6 ---- ++ start: ++ test for empty string: ok ++ test for 1 char: ok ++ test for 3 chars: ok ++ test for contains meta char: ok ++ test for contains non-ascii char: ok +*** ../vim-7.3.815/src/testdir/Make_amiga.mak 2013-02-13 15:44:22.000000000 +0100 +--- src/testdir/Make_amiga.mak 2013-02-13 17:21:15.000000000 +0100 +*************** +*** 32,38 **** + test71.out test72.out test73.out test74.out test75.out \ + test76.out test77.out test78.out test79.out test80.out \ + test81.out test82.out test83.out test84.out test88.out \ +! test89.out + + .SUFFIXES: .in .out + +--- 32,38 ---- + test71.out test72.out test73.out test74.out test75.out \ + test76.out test77.out test78.out test79.out test80.out \ + test81.out test82.out test83.out test84.out test88.out \ +! test89.out test90.out + + .SUFFIXES: .in .out + +*************** +*** 138,140 **** +--- 138,141 ---- + test84.out: test84.in + test88.out: test88.in + test89.out: test89.in ++ test90.out: test90.in +*** ../vim-7.3.815/src/testdir/Make_dos.mak 2013-02-13 15:44:22.000000000 +0100 +--- src/testdir/Make_dos.mak 2013-02-13 17:21:22.000000000 +0100 +*************** +*** 31,37 **** + test74.out test75.out test76.out test77.out test78.out \ + test79.out test80.out test81.out test82.out test83.out \ + test84.out test85.out test86.out test87.out test88.out \ +! test89.out + + SCRIPTS32 = test50.out test70.out + +--- 31,37 ---- + test74.out test75.out test76.out test77.out test78.out \ + test79.out test80.out test81.out test82.out test83.out \ + test84.out test85.out test86.out test87.out test88.out \ +! test89.out test90.out + + SCRIPTS32 = test50.out test70.out + +*** ../vim-7.3.815/src/testdir/Make_ming.mak 2013-02-13 15:44:22.000000000 +0100 +--- src/testdir/Make_ming.mak 2013-02-13 17:21:24.000000000 +0100 +*************** +*** 51,57 **** + test74.out test75.out test76.out test77.out test78.out \ + test79.out test80.out test81.out test82.out test83.out \ + test84.out test85.out test86.out test87.out test88.out \ +! test89.out + + SCRIPTS32 = test50.out test70.out + +--- 51,57 ---- + test74.out test75.out test76.out test77.out test78.out \ + test79.out test80.out test81.out test82.out test83.out \ + test84.out test85.out test86.out test87.out test88.out \ +! test89.out test90.out + + SCRIPTS32 = test50.out test70.out + +*** ../vim-7.3.815/src/testdir/Make_os2.mak 2013-02-13 15:44:22.000000000 +0100 +--- src/testdir/Make_os2.mak 2013-02-13 17:21:27.000000000 +0100 +*************** +*** 32,38 **** + test71.out test72.out test73.out test74.out test75.out \ + test76.out test77.out test78.out test79.out test80.out \ + test81.out test82.out test83.out test84.out test88.out \ +! test89.out + + .SUFFIXES: .in .out + +--- 32,38 ---- + test71.out test72.out test73.out test74.out test75.out \ + test76.out test77.out test78.out test79.out test80.out \ + test81.out test82.out test83.out test84.out test88.out \ +! test89.out test90.out + + .SUFFIXES: .in .out + +*** ../vim-7.3.815/src/testdir/Make_vms.mms 2013-02-13 15:44:22.000000000 +0100 +--- src/testdir/Make_vms.mms 2013-02-13 17:21:32.000000000 +0100 +*************** +*** 4,10 **** + # Authors: Zoltan Arpadffy, + # Sandor Kopanyi, + # +! # Last change: 2012 Dec 05 + # + # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. + # Edit the lines in the Configuration section below to select. +--- 4,10 ---- + # Authors: Zoltan Arpadffy, + # Sandor Kopanyi, + # +! # Last change: 2013 Feb 13 + # + # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. + # Edit the lines in the Configuration section below to select. +*************** +*** 76,82 **** + test66.out test67.out test68.out test69.out \ + test71.out test72.out test74.out test75.out test76.out \ + test77.out test78.out test79.out test80.out test81.out \ +! test82.out test83.out test84.out test88.out test89.out + + # Known problems: + # Test 30: a problem around mac format - unknown reason +--- 76,83 ---- + test66.out test67.out test68.out test69.out \ + test71.out test72.out test74.out test75.out test76.out \ + test77.out test78.out test79.out test80.out test81.out \ +! test82.out test83.out test84.out test88.out test89.out \ +! test90.out + + # Known problems: + # Test 30: a problem around mac format - unknown reason +*** ../vim-7.3.815/src/testdir/Makefile 2013-02-13 15:44:22.000000000 +0100 +--- src/testdir/Makefile 2013-02-13 17:20:58.000000000 +0100 +*************** +*** 28,34 **** + test74.out test75.out test76.out test77.out test78.out \ + test79.out test80.out test81.out test82.out test83.out \ + test84.out test85.out test86.out test87.out test88.out \ +! test89.out + + SCRIPTS_GUI = test16.out + +--- 28,34 ---- + test74.out test75.out test76.out test77.out test78.out \ + test79.out test80.out test81.out test82.out test83.out \ + test84.out test85.out test86.out test87.out test88.out \ +! test89.out test90.out + + SCRIPTS_GUI = test16.out + +*** ../vim-7.3.815/src/version.c 2013-02-13 17:06:06.000000000 +0100 +--- src/version.c 2013-02-13 17:33:04.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 816, + /**/ + +-- + Another bucket of what can only be described as human ordure hits ARTHUR. +ARTHUR: ... Right! (to the KNIGHTS) That settles it! + "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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.817 b/7.3.817 new file mode 100644 index 0000000..d869fea --- /dev/null +++ b/7.3.817 @@ -0,0 +1,48 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.817 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.817 +Problem: Test 89 fails with tiny and small features. +Solution: Add sourcing small.vim. +Files: src/testdir/test89.in + + +*** ../vim-7.3.816/src/testdir/test89.in 2013-02-13 15:44:22.000000000 +0100 +--- src/testdir/test89.in 2013-02-14 20:06:53.000000000 +0100 +*************** +*** 1,6 **** +--- 1,7 ---- + Some tests for setting 'number' and 'relativenumber' + + STARTTEST ++ :so small.vim + :set hidden nocp nu rnu + :redir @a | set nu? rnu? | redir END + :e! xx +*** ../vim-7.3.816/src/version.c 2013-02-13 17:34:59.000000000 +0100 +--- src/version.c 2013-02-14 20:10:00.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 817, + /**/ + +-- +INSPECTOR END OF FILM: Move along. There's nothing to see! Keep moving! + [Suddenly he notices the cameras.] +INSPECTOR END OF FILM: (to Camera) All right, put that away sonny. + [He walks over to it and puts his hand over the lens.] + "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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.818 b/7.3.818 new file mode 100644 index 0000000..6ff3788 --- /dev/null +++ b/7.3.818 @@ -0,0 +1,133 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.818 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.818 +Problem: When test 40 fails because of a bad build it may leave files + behind that cause it to fail later. +Solution: Let the file names start with "X". +Files: src/testdir/test40.in + + +*** ../vim-7.3.817/src/testdir/test40.in 2010-08-15 21:57:29.000000000 +0200 +--- src/testdir/test40.in 2013-02-14 20:56:45.000000000 +0100 +*************** +*** 3,20 **** + STARTTEST + :so small.vim + :/^start/,$w! Xxx " write lines below to Xxx +! :au BufReadCmd testA 0r Xxx|$del +! :e testA " will read text of Xxd instead +! :au BufWriteCmd testA call append(line("$"), "write") + :w " will append a line to the file +! :r testA " should not read anything + : " now we have: + : " 1 start of Xxx + : " 2 test40 + : " 3 end of Xxx + : " 4 write +! :au FileReadCmd testB '[r Xxx +! :2r testB " will read Xxx below line 2 instead + : " 1 start of Xxx + : " 2 test40 + : " 3 start of Xxx +--- 3,20 ---- + STARTTEST + :so small.vim + :/^start/,$w! Xxx " write lines below to Xxx +! :au BufReadCmd XtestA 0r Xxx|$del +! :e XtestA " will read text of Xxd instead +! :au BufWriteCmd XtestA call append(line("$"), "write") + :w " will append a line to the file +! :r XtestA " should not read anything + : " now we have: + : " 1 start of Xxx + : " 2 test40 + : " 3 end of Xxx + : " 4 write +! :au FileReadCmd XtestB '[r Xxx +! :2r XtestB " will read Xxx below line 2 instead + : " 1 start of Xxx + : " 2 test40 + : " 3 start of Xxx +*************** +*** 22,31 **** + : " 5 end of Xxx + : " 6 end of Xxx + : " 7 write +! :au FileWriteCmd testC '[,']copy $ + 4GA1 +! :4,5w testC " will copy lines 4 and 5 to the end +! :r testC " should not read anything + : " 1 start of Xxx + : " 2 test40 + : " 3 start of Xxx +--- 22,31 ---- + : " 5 end of Xxx + : " 6 end of Xxx + : " 7 write +! :au FileWriteCmd XtestC '[,']copy $ + 4GA1 +! :4,5w XtestC " will copy lines 4 and 5 to the end +! :r XtestC " should not read anything + : " 1 start of Xxx + : " 2 test40 + : " 3 start of Xxx +*************** +*** 35,48 **** + : " 7 write + : " 8 test401 + : " 9 end of Xxx +! :au FILEAppendCmd testD '[,']w! test.out +! :w >>testD " will write all lines to test.out +! :$r testD " should not read anything + :$w >>test.out " append "end of Xxx" to test.out +! :au BufReadCmd testE 0r test.out|$del +! :sp testE " split window with test.out + 5Goasdf:" +! :au BufWriteCmd testE w! test.out + :wall " will write other window to test.out + : " 1 start of Xxx + : " 2 test40 +--- 35,48 ---- + : " 7 write + : " 8 test401 + : " 9 end of Xxx +! :au FILEAppendCmd XtestD '[,']w! test.out +! :w >>XtestD " will write all lines to test.out +! :$r XtestD " should not read anything + :$w >>test.out " append "end of Xxx" to test.out +! :au BufReadCmd XtestE 0r test.out|$del +! :sp XtestE " split window with test.out + 5Goasdf:" +! :au BufWriteCmd XtestE w! test.out + :wall " will write other window to test.out + : " 1 start of Xxx + : " 2 test40 +*** ../vim-7.3.817/src/version.c 2013-02-14 20:10:28.000000000 +0100 +--- src/version.c 2013-02-14 20:57:44.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 818, + /**/ + +-- +JOHN CLEESE PLAYED: SECOND SOLDIER WITH A KEEN INTEREST IN BIRDS, LARGE MAN + WITH DEAD BODY, BLACK KNIGHT, MR NEWT (A VILLAGE + BLACKSMITH INTERESTED IN BURNING WITCHES), A QUITE + EXTRAORDINARILY RUDE FRENCHMAN, TIM THE WIZARD, SIR + LAUNCELOT + "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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.819 b/7.3.819 new file mode 100644 index 0000000..3f036c9 --- /dev/null +++ b/7.3.819 @@ -0,0 +1,682 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.819 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.819 +Problem: Compiling without +eval and with Python isn't working. +Solution: Add the eval feature when building with Python. +Files: src/if_py_both.h, src/feature.h, src/eval.c, src/ex_docmd.c, + src/normal.c, src/gui_gtk_x11.c + + +*** ../vim-7.3.818/src/if_py_both.h 2012-12-05 16:30:03.000000000 +0100 +--- src/if_py_both.h 2013-02-14 19:22:59.000000000 +0100 +*************** +*** 310,316 **** + return result; + } + +- #ifdef FEAT_EVAL + /* + * Function to translate a typval_T into a PyObject; this will recursively + * translate lists/dictionaries into their Python equivalents. +--- 310,315 ---- +*************** +*** 425,436 **** + + return result; + } +- #endif + + static PyObject * + VimEval(PyObject *self UNUSED, PyObject *args UNUSED) + { +- #ifdef FEAT_EVAL + char *expr; + typval_T *our_tv; + PyObject *result; +--- 424,433 ---- +*************** +*** 466,475 **** + Py_END_ALLOW_THREADS + + return result; +- #else +- PyErr_SetVim(_("expressions disabled at compile time")); +- return NULL; +- #endif + } + + static PyObject *ConvertToPyObject(typval_T *); +--- 463,468 ---- +*************** +*** 477,483 **** + static PyObject * + VimEvalPy(PyObject *self UNUSED, PyObject *args UNUSED) + { +- #ifdef FEAT_EVAL + char *expr; + typval_T *our_tv; + PyObject *result; +--- 470,475 ---- +*************** +*** 506,515 **** + Py_END_ALLOW_THREADS + + return result; +- #else +- PyErr_SetVim(_("expressions disabled at compile time")); +- return NULL; +- #endif + } + + static PyObject * +--- 498,503 ---- +*************** +*** 946,952 **** + } + + static PyObject * +! DictionaryListKeys(PyObject *self) + { + dict_T *dict = ((DictionaryObject *)(self))->dict; + long_u todo = dict->dv_hashtab.ht_used; +--- 934,940 ---- + } + + static PyObject * +! DictionaryListKeys(PyObject *self UNUSED) + { + dict_T *dict = ((DictionaryObject *)(self))->dict; + long_u todo = dict->dv_hashtab.ht_used; +*************** +*** 2549,2555 **** + return 0; + } + +- #ifdef FEAT_EVAL + typedef int (*pytotvfunc)(PyObject *, typval_T *, PyObject *); + + static int +--- 2537,2542 ---- +*************** +*** 2781,2784 **** + return NULL; + } + } +- #endif +--- 2768,2770 ---- +*** ../vim-7.3.818/src/feature.h 2013-01-23 13:40:54.000000000 +0100 +--- src/feature.h 2013-02-14 19:25:33.000000000 +0100 +*************** +*** 392,397 **** +--- 392,404 ---- + #endif + + /* ++ * +python and +python3 require FEAT_EVAL. ++ */ ++ #if !defined(FEAT_EVAL) && (defined(FEAT_PYTHON3) || defined(FEAT_PYTHON)) ++ # define FEAT_EVAL ++ #endif ++ ++ /* + * +profile Profiling for functions and scripts. + */ + #if defined(FEAT_HUGE) \ +*** ../vim-7.3.818/src/eval.c 2013-02-13 17:34:59.000000000 +0100 +--- src/eval.c 2013-02-14 19:38:09.000000000 +0100 +*************** +*** 917,923 **** +--- 917,925 ---- + hash_clear(&compat_hashtab); + + free_scriptnames(); ++ # if defined(FEAT_CMDL_COMPL) + free_locales(); ++ # endif + + /* global variables */ + vars_clear(&globvarht); +*************** +*** 1561,1568 **** + } + + +- #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. Only Number and String +--- 1563,1568 ---- +*************** +*** 1640,1692 **** + 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. + * Uses argv[argc] for the function arguments. + */ +! void * +! call_func_retstr(func, argc, argv, safe) + char_u *func; + int argc; + char_u **argv; + int safe; /* use the sandbox */ + { + typval_T rettv; +! char_u *retval; + + /* All arguments are passed as strings, no conversion to number. */ + if (call_vim_function(func, argc, argv, safe, TRUE, &rettv) == FAIL) +! return NULL; + +! retval = vim_strsave(get_tv_string(&rettv)); + 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. + * Uses argv[argc] for the function arguments. + */ +! long +! call_func_retnr(func, argc, argv, safe) + char_u *func; + int argc; + char_u **argv; + int safe; /* use the sandbox */ + { + typval_T rettv; +! long retval; + + /* All arguments are passed as strings, no conversion to number. */ + if (call_vim_function(func, argc, argv, safe, TRUE, &rettv) == FAIL) +! return -1; + +! retval = get_tv_number_chk(&rettv, NULL); + clear_tv(&rettv); + return retval; + } +--- 1640,1693 ---- + return ret; + } + + /* +! * Call vimL function "func" and return the result as a number. +! * Returns -1 when calling the function fails. + * Uses argv[argc] for the function arguments. + */ +! long +! call_func_retnr(func, argc, argv, safe) + char_u *func; + int argc; + char_u **argv; + int safe; /* use the sandbox */ + { + typval_T rettv; +! long retval; + + /* All arguments are passed as strings, no conversion to number. */ + if (call_vim_function(func, argc, argv, safe, TRUE, &rettv) == FAIL) +! return -1; + +! retval = get_tv_number_chk(&rettv, NULL); + clear_tv(&rettv); + return retval; + } + +! #if (defined(FEAT_USR_CMDS) && defined(FEAT_CMDL_COMPL)) \ +! || defined(FEAT_COMPL_FUNC) || defined(PROTO) +! +! # 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. + * Uses argv[argc] for the function arguments. + */ +! void * +! call_func_retstr(func, argc, argv, safe) + char_u *func; + int argc; + char_u **argv; + int safe; /* use the sandbox */ + { + typval_T rettv; +! char_u *retval; + + /* All arguments are passed as strings, no conversion to number. */ + if (call_vim_function(func, argc, argv, safe, TRUE, &rettv) == FAIL) +! return NULL; + +! retval = vim_strsave(get_tv_string(&rettv)); + clear_tv(&rettv); + return retval; + } +*************** +*** 1720,1726 **** + } + #endif + +- + /* + * Save the current function call pointer, and set it to NULL. + * Used when executing autocommands and for ":source". +--- 1721,1726 ---- +*************** +*** 9330,9336 **** + */ + static void + f_cindent(argvars, rettv) +! typval_T *argvars; + typval_T *rettv; + { + #ifdef FEAT_CINDENT +--- 9330,9336 ---- + */ + static void + f_cindent(argvars, rettv) +! typval_T *argvars UNUSED; + typval_T *rettv; + { + #ifdef FEAT_CINDENT +*************** +*** 10379,10387 **** + + static void + findfilendir(argvars, rettv, find_what) +! typval_T *argvars; + typval_T *rettv; +! int find_what; + { + #ifdef FEAT_SEARCHPATH + char_u *fname; +--- 10379,10387 ---- + + static void + findfilendir(argvars, rettv, find_what) +! typval_T *argvars UNUSED; + typval_T *rettv; +! int find_what UNUSED; + { + #ifdef FEAT_SEARCHPATH + char_u *fname; +*************** +*** 10751,10759 **** + */ + static void + foldclosed_both(argvars, rettv, end) +! typval_T *argvars; + typval_T *rettv; +! int end; + { + #ifdef FEAT_FOLDING + linenr_T lnum; +--- 10751,10759 ---- + */ + static void + foldclosed_both(argvars, rettv, end) +! typval_T *argvars UNUSED; + typval_T *rettv; +! int end UNUSED; + { + #ifdef FEAT_FOLDING + linenr_T lnum; +*************** +*** 10802,10809 **** + */ + static void + f_foldlevel(argvars, rettv) +! typval_T *argvars; +! typval_T *rettv; + { + #ifdef FEAT_FOLDING + linenr_T lnum; +--- 10802,10809 ---- + */ + static void + f_foldlevel(argvars, rettv) +! typval_T *argvars UNUSED; +! typval_T *rettv UNUSED; + { + #ifdef FEAT_FOLDING + linenr_T lnum; +*************** +*** 11583,11589 **** + static void + f_getmatches(argvars, rettv) + typval_T *argvars UNUSED; +! typval_T *rettv; + { + #ifdef FEAT_SEARCH_EXTRA + dict_T *dict; +--- 11583,11589 ---- + static void + f_getmatches(argvars, rettv) + typval_T *argvars UNUSED; +! typval_T *rettv UNUSED; + { + #ifdef FEAT_SEARCH_EXTRA + dict_T *dict; +*************** +*** 13589,13595 **** + */ + static void + f_lispindent(argvars, rettv) +! typval_T *argvars; + typval_T *rettv; + { + #ifdef FEAT_LISP +--- 13589,13595 ---- + */ + static void + f_lispindent(argvars, rettv) +! typval_T *argvars UNUSED; + typval_T *rettv; + { + #ifdef FEAT_LISP +*************** +*** 13983,13990 **** + */ + static void + f_matchadd(argvars, rettv) +! typval_T *argvars; +! typval_T *rettv; + { + #ifdef FEAT_SEARCH_EXTRA + char_u buf[NUMBUFLEN]; +--- 13983,13990 ---- + */ + static void + f_matchadd(argvars, rettv) +! typval_T *argvars UNUSED; +! typval_T *rettv UNUSED; + { + #ifdef FEAT_SEARCH_EXTRA + char_u buf[NUMBUFLEN]; +*************** +*** 14021,14027 **** + */ + static void + f_matcharg(argvars, rettv) +! typval_T *argvars; + typval_T *rettv; + { + if (rettv_list_alloc(rettv) == OK) +--- 14021,14027 ---- + */ + static void + f_matcharg(argvars, rettv) +! typval_T *argvars UNUSED; + typval_T *rettv; + { + if (rettv_list_alloc(rettv) == OK) +*************** +*** 14053,14060 **** + */ + static void + f_matchdelete(argvars, rettv) +! typval_T *argvars; +! typval_T *rettv; + { + #ifdef FEAT_SEARCH_EXTRA + rettv->vval.v_number = match_delete(curwin, +--- 14053,14060 ---- + */ + static void + f_matchdelete(argvars, rettv) +! typval_T *argvars UNUSED; +! typval_T *rettv UNUSED; + { + #ifdef FEAT_SEARCH_EXTRA + rettv->vval.v_number = match_delete(curwin, +*************** +*** 14871,14878 **** + */ + static void + f_reltime(argvars, rettv) +! typval_T *argvars; +! typval_T *rettv; + { + #ifdef FEAT_RELTIME + proftime_T res; +--- 14871,14878 ---- + */ + static void + f_reltime(argvars, rettv) +! typval_T *argvars UNUSED; +! typval_T *rettv UNUSED; + { + #ifdef FEAT_RELTIME + proftime_T res; +*************** +*** 14920,14926 **** + */ + static void + f_reltimestr(argvars, rettv) +! typval_T *argvars; + typval_T *rettv; + { + #ifdef FEAT_RELTIME +--- 14920,14926 ---- + */ + static void + f_reltimestr(argvars, rettv) +! typval_T *argvars UNUSED; + typval_T *rettv; + { + #ifdef FEAT_RELTIME +*************** +*** 15965,15971 **** + 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; +--- 15965,15971 ---- + 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 UNUSED; /* stop after this many msec */ + { + char_u *save_cpo; + char_u *pat, *pat2 = NULL, *pat3 = NULL; +*************** +*** 16390,16397 **** + */ + static void + f_setmatches(argvars, rettv) +! typval_T *argvars; +! typval_T *rettv; + { + #ifdef FEAT_SEARCH_EXTRA + list_T *l; +--- 16390,16397 ---- + */ + static void + f_setmatches(argvars, rettv) +! typval_T *argvars UNUSED; +! typval_T *rettv UNUSED; + { + #ifdef FEAT_SEARCH_EXTRA + list_T *l; +*************** +*** 18463,18469 **** + */ + static void + f_undofile(argvars, rettv) +! typval_T *argvars; + typval_T *rettv; + { + rettv->v_type = VAR_STRING; +--- 18463,18469 ---- + */ + static void + f_undofile(argvars, rettv) +! typval_T *argvars UNUSED; + typval_T *rettv; + { + rettv->v_type = VAR_STRING; +*** ../vim-7.3.818/src/ex_docmd.c 2012-12-05 19:13:11.000000000 +0100 +--- src/ex_docmd.c 2013-02-14 20:50:56.000000000 +0100 +*************** +*** 1734,1739 **** +--- 1734,1741 ---- + #ifdef FEAT_EVAL + /* avoid that a function call in 'statusline' does this */ + && !getline_equal(fgetline, cookie, get_func_line) ++ #endif ++ #ifdef FEAT_AUTOCMD + /* avoid that an autocommand, e.g. QuitPre, does this */ + && !getline_equal(fgetline, cookie, getnextac) + #endif +*************** +*** 5375,5381 **** +--- 5377,5385 ---- + #endif + return FAIL; + } ++ #endif + ++ #if defined(FEAT_USR_CMDS) || defined(FEAT_EVAL) || defined(PROTO) + /* + * List of names for completion for ":command" with the EXPAND_ flag. + * Must be alphabetical for completion. +*************** +*** 5430,5436 **** +--- 5434,5442 ---- + {EXPAND_USER_VARS, "var"}, + {0, NULL} + }; ++ #endif + ++ #if defined(FEAT_USR_CMDS) || defined(PROTO) + static void + uc_list(name, name_len) + char_u *name; +*************** +*** 6375,6384 **** + int vallen; + int *complp; + long *argt; +! char_u **compl_arg; + { + char_u *arg = NULL; + size_t arglen = 0; + int i; + int valend = vallen; + +--- 6381,6392 ---- + int vallen; + int *complp; + long *argt; +! char_u **compl_arg UNUSED; + { + char_u *arg = NULL; ++ # if defined(FEAT_EVAL) && defined(FEAT_CMDL_COMPL) + size_t arglen = 0; ++ # endif + int i; + int valend = vallen; + +*************** +*** 6388,6394 **** +--- 6396,6404 ---- + if (value[i] == ',') + { + arg = &value[i + 1]; ++ # if defined(FEAT_EVAL) && defined(FEAT_CMDL_COMPL) + arglen = vallen - i - 1; ++ # endif + valend = i; + break; + } +*** ../vim-7.3.818/src/normal.c 2013-01-24 21:00:15.000000000 +0100 +--- src/normal.c 2013-02-14 19:33:36.000000000 +0100 +*************** +*** 2292,2298 **** +--- 2292,2300 ---- + { + #ifdef FEAT_EVAL + char_u *(argv[1]); ++ # ifdef FEAT_VIRTUALEDIT + int save_virtual_op = virtual_op; ++ # endif + + if (*p_opfunc == NUL) + EMSG(_("E774: 'operatorfunc' is empty")); +*************** +*** 2312,2324 **** +--- 2314,2330 ---- + else + argv[0] = (char_u *)"char"; + ++ # ifdef FEAT_VIRTUALEDIT + /* Reset virtual_op so that 'virtualedit' can be changed in the + * function. */ + virtual_op = MAYBE; ++ # endif + + (void)call_func_retnr(p_opfunc, 1, argv, FALSE); + ++ # ifdef FEAT_VIRTUALEDIT + virtual_op = save_virtual_op; ++ # endif + } + #else + EMSG(_("E775: Eval feature not available")); +*** ../vim-7.3.818/src/gui_gtk_x11.c 2013-01-23 16:00:05.000000000 +0100 +--- src/gui_gtk_x11.c 2013-02-14 19:38:42.000000000 +0100 +*************** +*** 5164,5171 **** + return FAIL; + } + +! #if defined(FEAT_TITLE) \ +! || defined(PROTO) + /* + * Return the text window-id and display. Only required for X-based GUI's + */ +--- 5164,5170 ---- + return FAIL; + } + +! #if defined(FEAT_TITLE) || defined(FEAT_EVAL) || defined(PROTO) + /* + * Return the text window-id and display. Only required for X-based GUI's + */ +*** ../vim-7.3.818/src/version.c 2013-02-14 20:58:30.000000000 +0100 +--- src/version.c 2013-02-14 22:09:41.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 819, + /**/ + +-- +(letter from Mark to Mike, about the film's probable certificate) + For an 'A' we would have to: Lose as many shits as possible; Take Jesus + Christ out, if possible; Loose "I fart in your general direction"; Lose + "the oral sex"; Lose "oh, fuck off"; Lose "We make castanets out of your + testicles" + "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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.820 b/7.3.820 new file mode 100644 index 0000000..df273ab --- /dev/null +++ b/7.3.820 @@ -0,0 +1,137 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.820 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.820 +Problem: Build errors and warnings when building with small features and + Lua, Perl or Ruby. +Solution: Add #ifdefs and UNUSED. +Files: src/if_perl.xs, src/if_lua.c, src/if_ruby.c + + +*** ../vim-7.3.819/src/if_perl.xs 2013-02-06 19:58:38.000000000 +0100 +--- src/if_perl.xs 2013-02-14 19:16:00.000000000 +0100 +*************** +*** 600,608 **** + */ + char_u * + eval_to_string(arg, nextcmd, dolist) +! char_u *arg; +! char_u **nextcmd; +! int dolist; + { + return NULL; + } +--- 600,608 ---- + */ + char_u * + eval_to_string(arg, nextcmd, dolist) +! char_u *arg UNUSED; +! char_u **nextcmd UNUSED; +! int dolist UNUSED; + { + return NULL; + } +*** ../vim-7.3.819/src/if_lua.c 2012-10-14 03:41:54.000000000 +0200 +--- src/if_lua.c 2013-02-14 19:15:29.000000000 +0100 +*************** +*** 845,852 **** + } + + static int +! luaV_dict_iter (lua_State *L) + { + hashitem_T *hi = (hashitem_T *) lua_touserdata(L, lua_upvalueindex(2)); + int n = lua_tointeger(L, lua_upvalueindex(3)); + dictitem_T *di; +--- 845,853 ---- + } + + static int +! luaV_dict_iter (lua_State *L UNUSED) + { ++ #ifdef FEAT_EVAL + hashitem_T *hi = (hashitem_T *) lua_touserdata(L, lua_upvalueindex(2)); + int n = lua_tointeger(L, lua_upvalueindex(3)); + dictitem_T *di; +*************** +*** 860,865 **** +--- 861,869 ---- + lua_pushinteger(L, n - 1); + lua_replace(L, lua_upvalueindex(3)); + return 2; ++ #else ++ return 0; ++ #endif + } + + static int +*** ../vim-7.3.819/src/if_ruby.c 2012-11-24 13:38:56.000000000 +0100 +--- src/if_ruby.c 2013-02-14 22:18:50.000000000 +0100 +*************** +*** 1210,1230 **** + return height; + } + +! static VALUE window_width(VALUE self) + { +! win_T *win = get_win(self); +! +! return INT2NUM(win->w_width); + } + +! static VALUE window_set_width(VALUE self, VALUE width) + { + win_T *win = get_win(self); + win_T *savewin = curwin; + + curwin = win; + win_setwidth(NUM2INT(width)); + curwin = savewin; + return width; + } + +--- 1210,1230 ---- + return height; + } + +! static VALUE window_width(VALUE self UNUSED) + { +! return INT2NUM(W_WIDTH(get_win(self))); + } + +! static VALUE window_set_width(VALUE self UNUSED, VALUE width) + { ++ #ifdef FEAT_VERTSPLIT + win_T *win = get_win(self); + win_T *savewin = curwin; + + curwin = win; + win_setwidth(NUM2INT(width)); + curwin = savewin; ++ #endif + return width; + } + +*** ../vim-7.3.819/src/version.c 2013-02-14 22:11:31.000000000 +0100 +--- src/version.c 2013-02-14 22:19:09.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 820, + /**/ + +-- +Did Adam and Eve have navels? + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.821 b/7.3.821 new file mode 100644 index 0000000..13dc3ba --- /dev/null +++ b/7.3.821 @@ -0,0 +1,76 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.821 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.821 +Problem: Build with OLE and Cygwin is broken. (Steve Hall) +Solution: Select static or shared stdc library. (Ken Takata) +Files: src/Make_cyg.mak + + +*** ../vim-7.3.820/src/Make_cyg.mak 2013-02-13 17:06:06.000000000 +0100 +--- src/Make_cyg.mak 2013-02-16 18:09:49.000000000 +0100 +*************** +*** 106,111 **** +--- 106,118 ---- + OPTIMIZE = MAXSPEED + endif + ++ ++ # Link against the shared version of libstdc++ by default. Set ++ # STATIC_STDCPLUS to "yes" to link against static version instead. ++ ifndef STATIC_STDCPLUS ++ STATIC_STDCPLUS=no ++ endif ++ + ### See feature.h for a list of optionals. + ### Any other defines can be included here. + +*************** +*** 478,484 **** + ifeq (yes, $(OLE)) + DEFINES += -DFEAT_OLE + EXTRA_OBJS += $(OUTDIR)/if_ole.o +! EXTRA_LIBS += -loleaut32 -lstdc++ + endif + + ############################## +--- 485,496 ---- + ifeq (yes, $(OLE)) + DEFINES += -DFEAT_OLE + EXTRA_OBJS += $(OUTDIR)/if_ole.o +! EXTRA_LIBS += -loleaut32 +! ifeq (yes, $(STATIC_STDCPLUS)) +! EXTRA_LIBS += -Wl,-Bstatic -lstdc++ -lsupc++ -Wl,-Bdynamic +! else +! EXTRA_LIBS += -lstdc++ +! endif + endif + + ############################## +*** ../vim-7.3.820/src/version.c 2013-02-14 22:19:47.000000000 +0100 +--- src/version.c 2013-02-16 18:11:52.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 821, + /**/ + +-- +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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.822 b/7.3.822 new file mode 100644 index 0000000..0f9e0d9 --- /dev/null +++ b/7.3.822 @@ -0,0 +1,159 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.822 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.822 (after 7.3.799) +Problem: Crash when accessing freed buffer. +Solution: Get 'textwidth' in caller of enter_buffer(). (Christian Brabandt) +Files: src/buffer.c + + +*** ../vim-7.3.821/src/buffer.c 2013-02-06 18:44:57.000000000 +0100 +--- src/buffer.c 2013-02-17 15:10:44.000000000 +0100 +*************** +*** 82,87 **** +--- 82,90 ---- + #ifdef FEAT_AUTOCMD + buf_T *old_curbuf; + #endif ++ #ifdef FEAT_SYN_HL ++ long old_tw = curbuf->b_p_tw; ++ #endif + + /* + * The 'readonly' flag is only set when BF_NEVERLOADED is being reset. +*************** +*** 113,118 **** +--- 116,125 ---- + } + EMSG(_("E83: Cannot allocate buffer, using other one...")); + enter_buffer(curbuf); ++ #ifdef FEAT_SYN_HL ++ if (old_tw != curbuf->b_p_tw) ++ check_colorcolumn(curwin); ++ #endif + return FAIL; + } + +*************** +*** 786,791 **** +--- 793,801 ---- + # if defined(FEAT_AUTOCMD) && defined(FEAT_EVAL) + cleanup_T cs; + # endif ++ #ifdef FEAT_SYN_HL ++ long old_tw = curbuf->b_p_tw; ++ #endif + + if (swap_exists_action == SEA_QUIT) + { +*************** +*** 804,810 **** +--- 814,826 ---- + if (!buf_valid(old_curbuf) || old_curbuf == curbuf) + old_curbuf = buflist_new(NULL, NULL, 1L, BLN_CURBUF | BLN_LISTED); + if (old_curbuf != NULL) ++ { + enter_buffer(old_curbuf); ++ #ifdef FEAT_SYN_HL ++ if (old_tw != curbuf->b_p_tw) ++ check_colorcolumn(curwin); ++ #endif ++ } + /* If "old_curbuf" is NULL we are in big trouble here... */ + + # if defined(FEAT_AUTOCMD) && defined(FEAT_EVAL) +*************** +*** 1364,1369 **** +--- 1380,1388 ---- + buf_T *prevbuf; + int unload = (action == DOBUF_UNLOAD || action == DOBUF_DEL + || action == DOBUF_WIPE); ++ #ifdef FEAT_SYN_HL ++ long old_tw = curbuf->b_p_tw; ++ #endif + + setpcmark(); + if (!cmdmod.keepalt) +*************** +*** 1430,1450 **** + # endif + ) + #endif + enter_buffer(buf); + } + + /* + * Enter a new current buffer. +! * Old curbuf must have been abandoned already! + */ + void + enter_buffer(buf) + buf_T *buf; + { +- #ifdef FEAT_SYN_HL +- long old_tw = curbuf->b_p_tw; +- #endif +- + /* Copy buffer and window local option values. Not for a help buffer. */ + buf_copy_options(buf, BCO_ENTER | BCO_NOHELP); + if (!buf->b_help) +--- 1449,1472 ---- + # endif + ) + #endif ++ { + enter_buffer(buf); ++ #ifdef FEAT_SYN_HL ++ if (old_tw != curbuf->b_p_tw) ++ check_colorcolumn(curwin); ++ #endif ++ } + } + + /* + * Enter a new current buffer. +! * Old curbuf must have been abandoned already! This also means "curbuf" may +! * be pointing to freed memory. + */ + void + enter_buffer(buf) + buf_T *buf; + { + /* Copy buffer and window local option values. Not for a help buffer. */ + buf_copy_options(buf, BCO_ENTER | BCO_NOHELP); + if (!buf->b_help) +*************** +*** 1468,1475 **** + + #ifdef FEAT_SYN_HL + curwin->w_s = &(buf->b_s); +- if (old_tw != buf->b_p_tw) +- check_colorcolumn(curwin); + #endif + + /* Cursor on first line by default. */ +--- 1490,1495 ---- +*** ../vim-7.3.821/src/version.c 2013-02-16 18:16:11.000000000 +0100 +--- src/version.c 2013-02-17 15:35:41.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 822, + /**/ + +-- +Clothes make the man. Naked people have little or no influence on society. + -- Mark Twain (Samuel Clemens) (1835-1910) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.823 b/7.3.823 new file mode 100644 index 0000000..59a3601 --- /dev/null +++ b/7.3.823 @@ -0,0 +1,69 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.823 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.823 (after 7.3.821) +Problem: Building with Cygwin: '-lsupc++' is not needed. +Solution: Remove it. (Ken Takata) +Files: src/Make_cyg.mak + + +*** ../vim-7.3.822/src/Make_cyg.mak 2013-02-16 18:16:11.000000000 +0100 +--- src/Make_cyg.mak 2013-02-17 15:04:05.000000000 +0100 +*************** +*** 1,6 **** + # + # Makefile for VIM on Win32, using Cygnus gcc +! # Last updated by Dan Sharp. Last Change: 2012 Jun 30 + # + # Also read INSTALLpc.txt! + # +--- 1,6 ---- + # + # Makefile for VIM on Win32, using Cygnus gcc +! # Last updated by Dan Sharp. Last Change: 2013 Feb 17 + # + # Also read INSTALLpc.txt! + # +*************** +*** 487,493 **** + EXTRA_OBJS += $(OUTDIR)/if_ole.o + EXTRA_LIBS += -loleaut32 + ifeq (yes, $(STATIC_STDCPLUS)) +! EXTRA_LIBS += -Wl,-Bstatic -lstdc++ -lsupc++ -Wl,-Bdynamic + else + EXTRA_LIBS += -lstdc++ + endif +--- 487,493 ---- + EXTRA_OBJS += $(OUTDIR)/if_ole.o + EXTRA_LIBS += -loleaut32 + ifeq (yes, $(STATIC_STDCPLUS)) +! EXTRA_LIBS += -Wl,-Bstatic -lstdc++ -Wl,-Bdynamic + else + EXTRA_LIBS += -lstdc++ + endif +*** ../vim-7.3.822/src/version.c 2013-02-17 15:45:34.000000000 +0100 +--- src/version.c 2013-02-20 13:33:42.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 823, + /**/ + +-- +ARTHUR: Now stand aside worthy adversary. +BLACK KNIGHT: (Glancing at his shoulder) 'Tis but a scratch. +ARTHUR: A scratch? Your arm's off. + "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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.824 b/7.3.824 new file mode 100644 index 0000000..7881aed --- /dev/null +++ b/7.3.824 @@ -0,0 +1,49 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.824 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.824 +Problem: Can redefine builtin functions. (ZyX) +Solution: Disallow adding a function to g:. +Files: src/eval.c + + +*** ../vim-7.3.823/src/eval.c 2013-02-14 22:11:31.000000000 +0100 +--- src/eval.c 2013-02-20 15:17:50.000000000 +0100 +*************** +*** 21164,21169 **** +--- 21164,21172 ---- + if (arg[j] != NUL) + emsg_funcname((char *)e_invarg2, arg); + } ++ /* Disallow using the g: dict. */ ++ if (fudi.fd_dict != NULL && fudi.fd_dict->dv_scope == VAR_DEF_SCOPE) ++ EMSG(_("E862: Cannot use g: here")); + } + + /* +*** ../vim-7.3.823/src/version.c 2013-02-20 13:34:14.000000000 +0100 +--- src/version.c 2013-02-20 14:11:01.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 824, + /**/ + +-- +ARTHUR: You are indeed brave Sir knight, but the fight is mine. +BLACK KNIGHT: Had enough? +ARTHUR: You stupid bastard. You havn't got any arms left. + "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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.825 b/7.3.825 new file mode 100644 index 0000000..6a8c29b --- /dev/null +++ b/7.3.825 @@ -0,0 +1,125 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.825 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.825 +Problem: With Python errors are not always clear. +Solution: Print the stack trace, unless :silent is used. (ZyX) +Files: src/if_python3.c, src/if_python.c + + +*** ../vim-7.3.824/src/if_python3.c 2013-02-13 14:17:00.000000000 +0100 +--- src/if_python3.c 2013-02-20 15:26:03.000000000 +0100 +*************** +*** 122,127 **** +--- 122,128 ---- + # define PyDict_SetItemString py3_PyDict_SetItemString + # define PyErr_BadArgument py3_PyErr_BadArgument + # define PyErr_Clear py3_PyErr_Clear ++ # define PyErr_PrintEx py3_PyErr_PrintEx + # define PyErr_NoMemory py3_PyErr_NoMemory + # define PyErr_Occurred py3_PyErr_Occurred + # define PyErr_SetNone py3_PyErr_SetNone +*************** +*** 279,284 **** +--- 280,286 ---- + static void* (*py3_PyMem_Malloc)(size_t); + static int (*py3_Py_IsInitialized)(void); + static void (*py3_PyErr_Clear)(void); ++ static void (*py3_PyErr_PrintEx)(int); + static PyObject*(*py3__PyObject_Init)(PyObject *, PyTypeObject *); + static iternextfunc py3__PyObject_NextNotImplemented; + static PyObject* py3__Py_NoneStruct; +*************** +*** 403,408 **** +--- 405,411 ---- + {"_Py_FalseStruct", (PYTHON_PROC*)&py3__Py_FalseStruct}, + {"_Py_TrueStruct", (PYTHON_PROC*)&py3__Py_TrueStruct}, + {"PyErr_Clear", (PYTHON_PROC*)&py3_PyErr_Clear}, ++ {"PyErr_PrintEx", (PYTHON_PROC*)&py3_PyErr_PrintEx}, + {"PyObject_Init", (PYTHON_PROC*)&py3__PyObject_Init}, + {"PyModule_AddObject", (PYTHON_PROC*)&py3_PyModule_AddObject}, + {"PyImport_AppendInittab", (PYTHON_PROC*)&py3_PyImport_AppendInittab}, +*************** +*** 842,848 **** +--- 845,855 ---- + r = PyRun_String(PyBytes_AsString(cmdbytes), Py_eval_input, + globals, globals); + if (r == NULL) ++ { ++ if (PyErr_Occurred() && !msg_silent) ++ PyErr_PrintEx(0); + EMSG(_("E860: Eval did not return a valid python 3 object")); ++ } + else + { + if (ConvertFromPyObject(r, rettv) == -1) +*** ../vim-7.3.824/src/if_python.c 2013-02-13 14:17:00.000000000 +0100 +--- src/if_python.c 2013-02-20 15:26:03.000000000 +0100 +*************** +*** 148,153 **** +--- 148,154 ---- + # define PyDict_SetItemString dll_PyDict_SetItemString + # define PyErr_BadArgument dll_PyErr_BadArgument + # define PyErr_Clear dll_PyErr_Clear ++ # define PyErr_PrintEx dll_PyErr_PrintEx + # define PyErr_NoMemory dll_PyErr_NoMemory + # define PyErr_Occurred dll_PyErr_Occurred + # define PyErr_SetNone dll_PyErr_SetNone +*************** +*** 251,256 **** +--- 252,258 ---- + static int(*dll_PyDict_SetItemString)(PyObject *dp, char *key, PyObject *item); + static int(*dll_PyErr_BadArgument)(void); + static void(*dll_PyErr_Clear)(void); ++ static void(*dll_PyErr_PrintEx)(int); + static PyObject*(*dll_PyErr_NoMemory)(void); + static PyObject*(*dll_PyErr_Occurred)(void); + static void(*dll_PyErr_SetNone)(PyObject *); +*************** +*** 380,385 **** +--- 382,388 ---- + {"PyDict_SetItemString", (PYTHON_PROC*)&dll_PyDict_SetItemString}, + {"PyErr_BadArgument", (PYTHON_PROC*)&dll_PyErr_BadArgument}, + {"PyErr_Clear", (PYTHON_PROC*)&dll_PyErr_Clear}, ++ {"PyErr_PrintEx", (PYTHON_PROC*)&dll_PyErr_PrintEx}, + {"PyErr_NoMemory", (PYTHON_PROC*)&dll_PyErr_NoMemory}, + {"PyErr_Occurred", (PYTHON_PROC*)&dll_PyErr_Occurred}, + {"PyErr_SetNone", (PYTHON_PROC*)&dll_PyErr_SetNone}, +*************** +*** 856,862 **** +--- 859,869 ---- + + r = PyRun_String((char *)(cmd), Py_eval_input, globals, globals); + if (r == NULL) ++ { ++ if (PyErr_Occurred() && !msg_silent) ++ PyErr_PrintEx(0); + EMSG(_("E858: Eval did not return a valid python object")); ++ } + else + { + if (ConvertFromPyObject(r, rettv) == -1) +*** ../vim-7.3.824/src/version.c 2013-02-20 15:19:38.000000000 +0100 +--- src/version.c 2013-02-20 15:27:20.000000000 +0100 +*************** +*** 727,728 **** +--- 727,730 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 825, + /**/ + +-- +ARTHUR: What are you going to do. bleed on me? + "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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.826 b/7.3.826 new file mode 100644 index 0000000..2235e22 --- /dev/null +++ b/7.3.826 @@ -0,0 +1,155 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.826 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.826 +Problem: List of features in :version output is hard to read. +Solution: Make columns. (Nazri Ramliy) +Files: src/version.c + + +*** ../vim-7.3.825/src/version.c 2013-02-20 16:09:35.000000000 +0100 +--- src/version.c 2013-02-20 16:27:44.000000000 +0100 +*************** +*** 34,39 **** +--- 34,42 ---- + # if (defined(VMS) && defined(VAXC)) || defined(PROTO) + char longVersion[sizeof(VIM_VERSION_LONG_DATE) + sizeof(__DATE__) + + sizeof(__TIME__) + 3]; ++ ++ static void list_features __ARGS((void)); ++ + void + make_version() + { +*************** +*** 2435,2440 **** +--- 2440,2513 ---- + } + } + ++ /* ++ * List all features aligned in columns, dictionary style. ++ */ ++ static void ++ list_features() ++ { ++ int i; ++ int ncol; ++ int nrow; ++ int nfeat = 0; ++ int width = 0; ++ ++ /* Find the length of the longest feature name, use that + 1 as the column ++ * width */ ++ for (i = 0; features[i] != NULL; ++i) ++ { ++ int l = STRLEN(features[i]); ++ ++ if (l > width) ++ width = l; ++ ++nfeat; ++ } ++ width += 1; ++ ++ if (Columns < width) ++ { ++ /* Not enough screen columns - show one per line */ ++ for (i = 0; features[i] != NULL; ++i) ++ { ++ version_msg(features[i]); ++ if (msg_col > 0) ++ msg_putchar('\n'); ++ } ++ return; ++ } ++ ++ ncol = (int) Columns / width; ++ /* The rightmost column doesn't need a separator. ++ * Sacrifice it to fit in one more column if possible. */ ++ if (Columns % width == width - 1) ++ ncol++; ++ ++ nrow = nfeat / ncol + (nfeat % ncol ? 1 : 0); ++ ++ for (i = 0; !got_int && i < nrow * ncol; ++i) ++ { ++ int idx = (i / ncol) + (i % ncol) * nrow; ++ ++ if (idx < nfeat) ++ { ++ int last_col = (i + 1) % ncol == 0; ++ ++ msg_puts((char_u *)features[idx]); ++ if (last_col) ++ { ++ if (msg_col > 0) ++ msg_putchar('\n'); ++ } ++ else ++ { ++ while (msg_col % width) ++ msg_putchar(' '); ++ } ++ } ++ else ++ msg_putchar('\n'); ++ } ++ } + void + list_version() + { +*************** +*** 2632,2646 **** + #endif + version_msg(_(" Features included (+) or not (-):\n")); + +! /* print all the features */ +! for (i = 0; features[i] != NULL; ++i) +! { +! version_msg(features[i]); +! if (msg_col > 0) +! version_msg(" "); +! } + +- version_msg("\n"); + #ifdef SYS_VIMRC_FILE + version_msg(_(" system vimrc file: \"")); + version_msg(SYS_VIMRC_FILE); +--- 2705,2712 ---- + #endif + version_msg(_(" Features included (+) or not (-):\n")); + +! list_features(); + + #ifdef SYS_VIMRC_FILE + version_msg(_(" system vimrc file: \"")); + version_msg(SYS_VIMRC_FILE); +*** ../vim-7.3.825/src/version.c 2013-02-20 16:09:35.000000000 +0100 +--- src/version.c 2013-02-20 16:27:44.000000000 +0100 +*************** +*** 727,728 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 826, + /**/ + +-- +Mrs Abbott: I'm a paediatrician. + Basil: Feet? +Mrs Abbott: Children. + Sybil: Oh, Basil! + Basil: Well, children have feet, don't they? That's how they move + around, my dear. You must take a look next time, it's most + interesting. (Fawlty Towers) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.827 b/7.3.827 new file mode 100644 index 0000000..d37e30f --- /dev/null +++ b/7.3.827 @@ -0,0 +1,94 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.827 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.827 (after 7.3.825) +Problem: Python tests fail. +Solution: Adjust the output for the stack trace. +Files: src/testdir/test86.in, src/testdir/test86.ok, + src/testdir/test87.ok + + +*** ../vim-7.3.826/src/testdir/test86.in 2013-02-13 14:17:00.000000000 +0100 +--- src/testdir/test86.in 2013-02-17 21:16:13.000000000 +0100 +*************** +*** 1,5 **** +--- 1,11 ---- + Tests for various python features. vim: set ft=vim : + ++ NOTE: This will cause errors when run under valgrind. ++ This would require recompiling Python with: ++ ./configure --without-pymalloc ++ See http://svn.python.org/view/python/trunk/Misc/README.valgrind?view=markup ++ ++ + STARTTEST + :so small.vim + :if !has('python') | e! test.ok | wq! test.out | endif +*** ../vim-7.3.826/src/testdir/test86.ok 2013-02-13 14:17:00.000000000 +0100 +--- src/testdir/test86.ok 2013-02-20 16:33:20.000000000 +0100 +*************** +*** 61,67 **** + 0.0 + "\0": Vim(let):E859: + {"\0": 1}: Vim(let):E859: +! undefined_name: Vim(let):E858: + vim: Vim(let):E859: + [1] + [1, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 1] +--- 61,67 ---- + 0.0 + "\0": Vim(let):E859: + {"\0": 1}: Vim(let):E859: +! undefined_name: Vim(let):Trace + vim: Vim(let):E859: + [1] + [1, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 1] +*** ../vim-7.3.826/src/testdir/test87.ok 2013-02-13 14:17:00.000000000 +0100 +--- src/testdir/test87.ok 2013-02-20 16:33:31.000000000 +0100 +*************** +*** 61,67 **** + 0.0 + "\0": Vim(let):E861: + {"\0": 1}: Vim(let):E861: +! undefined_name: Vim(let):E860: + vim: Vim(let):E861: + [1] + [1, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 1] +--- 61,67 ---- + 0.0 + "\0": Vim(let):E861: + {"\0": 1}: Vim(let):E861: +! undefined_name: Vim(let):Trace + vim: Vim(let):E861: + [1] + [1, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 1] +*** ../vim-7.3.826/src/version.c 2013-02-20 16:46:52.000000000 +0100 +--- src/version.c 2013-02-20 16:48:39.000000000 +0100 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 827, + /**/ + +-- +Any resemblance between the above views and those of my employer, my terminal, +or the view out my window are purely coincidental. Any resemblance between +the above and my own views is non-deterministic. The question of the +existence of views in the absence of anyone to hold them is left as an +exercise for the reader. The question of the existence of the reader is left +as an exercise for the second god coefficient. (A discussion of +non-orthogonal, non-integral polytheism is beyond the scope of this article.) + (Ralph Jennings) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.828 b/7.3.828 new file mode 100644 index 0000000..cdcb950 --- /dev/null +++ b/7.3.828 @@ -0,0 +1,131 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.828 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.828 +Problem: Mappings are not aware of wildmenu mode. +Solution: Add wildmenumode(). (Christian Brabandt) +Files: src/eval.c, runtime/doc/eval.txt + + +*** ../vim-7.3.827/src/eval.c 2013-02-20 15:19:38.000000000 +0100 +--- src/eval.c 2013-02-20 17:45:19.000000000 +0100 +*************** +*** 751,756 **** +--- 751,757 ---- + static void f_values __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_virtcol __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_visualmode __ARGS((typval_T *argvars, typval_T *rettv)); ++ static void f_wildmenumode __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_winbufnr __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_wincol __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_winheight __ARGS((typval_T *argvars, typval_T *rettv)); +*************** +*** 8121,8126 **** +--- 8122,8128 ---- + {"values", 1, 1, f_values}, + {"virtcol", 1, 1, f_virtcol}, + {"visualmode", 0, 1, f_visualmode}, ++ {"wildmenumode", 0, 0, f_wildmenumode}, + {"winbufnr", 1, 1, f_winbufnr}, + {"wincol", 0, 0, f_wincol}, + {"winheight", 1, 1, f_winheight}, +*************** +*** 18576,18581 **** +--- 18578,18597 ---- + #endif + } + ++ /* ++ * "wildmenumode()" function ++ */ ++ static void ++ f_wildmenumode(argvars, rettv) ++ typval_T *argvars UNUSED; ++ typval_T *rettv UNUSED; ++ { ++ #ifdef FEAT_WILDMENU ++ if (wild_menu_showing) ++ rettv->vval.v_number = 1; ++ #endif ++ } ++ + /* + * "winbufnr(nr)" function + */ +*** ../vim-7.3.827/runtime/doc/eval.txt 2013-02-13 17:34:59.000000000 +0100 +--- runtime/doc/eval.txt 2013-02-20 17:43:23.000000000 +0100 +*************** +*** 1974,1986 **** + toupper( {expr}) String the String {expr} switched to uppercase + tr( {src}, {fromstr}, {tostr}) String translate chars of {src} in {fromstr} + to chars in {tostr} +! trunc( {expr} Float truncate Float {expr} + type( {name}) Number type of variable {name} + undofile( {name}) String undo file name for {name} + undotree() List undo file tree + values( {dict}) List values in {dict} + virtcol( {expr}) Number screen column of cursor or mark + visualmode( [expr]) String last visual mode used + winbufnr( {nr}) Number buffer number of window {nr} + wincol() Number window column of the cursor + winheight( {nr}) Number height of window {nr} +--- 1986,1999 ---- + toupper( {expr}) String the String {expr} switched to uppercase + tr( {src}, {fromstr}, {tostr}) String translate chars of {src} in {fromstr} + to chars in {tostr} +! trunc( {expr}) Float truncate Float {expr} + type( {name}) Number type of variable {name} + undofile( {name}) String undo file name for {name} + undotree() List undo file tree + values( {dict}) List values in {dict} + virtcol( {expr}) Number screen column of cursor or mark + visualmode( [expr]) String last visual mode used ++ wildmenumode() Number whether 'wildmenu' mode is active + winbufnr( {nr}) Number buffer number of window {nr} + wincol() Number window column of the cursor + winheight( {nr}) Number height of window {nr} +*************** +*** 6121,6126 **** +--- 6163,6180 ---- + Dictionary or Float is not a Number or String, thus does not + cause the mode to be cleared. + ++ wildmenumode() *wildmenumode()* ++ Returns non-zero when the wildmenu is active and zero ++ otherwise. See 'wildmenu' and 'wildmode'. ++ This can be used in mappings to handle the 'wildcharm' option ++ gracefully. (Makes only sense with |mapmode-c| mappings). ++ ++ For example to make work like in wildmode, use: > ++ :cnoremap wildmenumode() ? "\\" : "\" ++ < ++ (Note, this needs the 'wildcharm' option set appropriately). ++ ++ + *winbufnr()* + winbufnr({nr}) The result is a Number, which is the number of the buffer + associated with window {nr}. When {nr} is zero, the number of +*** ../vim-7.3.827/src/version.c 2013-02-20 16:54:24.000000000 +0100 +--- src/version.c 2013-02-20 17:41:17.000000000 +0100 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 828, + /**/ + +-- +"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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.829 b/7.3.829 new file mode 100644 index 0000000..4cd795f --- /dev/null +++ b/7.3.829 @@ -0,0 +1,83 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.829 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.829 +Problem: When compiled with the +rightleft feature 'showmatch' also shows a + match for the opening paren. When 'revins' is set the screen may + scroll. +Solution: Only check the opening paren when the +rightleft feature was + enabled. Do not show a match that is not visible. (partly by + Christian Brabandt) +Files: src/search.c + + +*** ../vim-7.3.828/src/search.c 2013-01-23 16:43:07.000000000 +0100 +--- src/search.c 2013-02-20 18:33:33.000000000 +0100 +*************** +*** 2431,2442 **** + /* 'matchpairs' is "x:y,x:y" */ + for (p = curbuf->b_p_mps; *p != NUL; ++p) + { +- if (PTR2CHAR(p) == c + #ifdef FEAT_RIGHTLEFT +! && (curwin->w_p_rl ^ p_ri) +! #endif +! ) + break; + p += MB_PTR2LEN(p) + 1; + if (PTR2CHAR(p) == c + #ifdef FEAT_RIGHTLEFT +--- 2431,2440 ---- + /* 'matchpairs' is "x:y,x:y" */ + for (p = curbuf->b_p_mps; *p != NUL; ++p) + { + #ifdef FEAT_RIGHTLEFT +! if (PTR2CHAR(p) == c && (curwin->w_p_rl ^ p_ri)) + break; ++ #endif + p += MB_PTR2LEN(p) + 1; + if (PTR2CHAR(p) == c + #ifdef FEAT_RIGHTLEFT +*************** +*** 2451,2457 **** + + if ((lpos = findmatch(NULL, NUL)) == NULL) /* no match, so beep */ + vim_beep(); +! else if (lpos->lnum >= curwin->w_topline) + { + if (!curwin->w_p_wrap) + getvcol(curwin, lpos, NULL, &vcol, NULL); +--- 2449,2455 ---- + + if ((lpos = findmatch(NULL, NUL)) == NULL) /* no match, so beep */ + vim_beep(); +! else if (lpos->lnum >= curwin->w_topline && lpos->lnum < curwin->w_botline) + { + if (!curwin->w_p_wrap) + getvcol(curwin, lpos, NULL, &vcol, NULL); +*** ../vim-7.3.828/src/version.c 2013-02-20 17:58:01.000000000 +0100 +--- src/version.c 2013-02-20 18:35:12.000000000 +0100 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 829, + /**/ + +-- +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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.830 b/7.3.830 new file mode 100644 index 0000000..be9edeb --- /dev/null +++ b/7.3.830 @@ -0,0 +1,88 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.830 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.830 +Problem: :mksession confuses bytes, columns and characters when positioning + the cursor. +Solution: Use w_virtcol with "|" instead of w_cursor.col with "l". +Files: src/ex_docmd.c + + +*** ../vim-7.3.829/src/ex_docmd.c 2013-02-14 22:11:31.000000000 +0100 +--- src/ex_docmd.c 2013-02-20 19:13:21.000000000 +0100 +*************** +*** 10829,10852 **** + { + if (fprintf(fd, + "let s:c = %ld - ((%ld * winwidth(0) + %ld) / %ld)", +! (long)wp->w_cursor.col, +! (long)(wp->w_cursor.col - wp->w_leftcol), + (long)wp->w_width / 2, (long)wp->w_width) < 0 + || put_eol(fd) == FAIL + || put_line(fd, "if s:c > 0") == FAIL + || fprintf(fd, +! " exe 'normal! 0' . s:c . 'lzs' . (%ld - s:c) . 'l'", +! (long)wp->w_cursor.col) < 0 + || put_eol(fd) == FAIL + || put_line(fd, "else") == FAIL +! || fprintf(fd, " normal! 0%dl", wp->w_cursor.col) < 0 + || put_eol(fd) == FAIL + || put_line(fd, "endif") == FAIL) + return FAIL; + } + else + { +! if (fprintf(fd, "normal! 0%dl", wp->w_cursor.col) < 0 + || put_eol(fd) == FAIL) + return FAIL; + } +--- 10829,10852 ---- + { + if (fprintf(fd, + "let s:c = %ld - ((%ld * winwidth(0) + %ld) / %ld)", +! (long)wp->w_virtcol + 1, +! (long)(wp->w_virtcol - wp->w_leftcol), + (long)wp->w_width / 2, (long)wp->w_width) < 0 + || put_eol(fd) == FAIL + || put_line(fd, "if s:c > 0") == FAIL + || fprintf(fd, +! " exe 'normal! ' . s:c . '|zs' . %ld . '|'", +! (long)wp->w_virtcol + 1) < 0 + || put_eol(fd) == FAIL + || put_line(fd, "else") == FAIL +! || fprintf(fd, " normal! %d|", wp->w_virtcol + 1) < 0 + || put_eol(fd) == FAIL + || put_line(fd, "endif") == FAIL) + return FAIL; + } + else + { +! if (fprintf(fd, "normal! 0%d|", wp->w_virtcol + 1) < 0 + || put_eol(fd) == FAIL) + return FAIL; + } +*** ../vim-7.3.829/src/version.c 2013-02-20 18:39:07.000000000 +0100 +--- src/version.c 2013-02-20 19:14:18.000000000 +0100 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 830, + /**/ + +-- +Westheimer's Discovery: + A couple of months in the laboratory can + frequently save a couple of hours in the library. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.831 b/7.3.831 new file mode 100644 index 0000000..431b588 --- /dev/null +++ b/7.3.831 @@ -0,0 +1,609 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.831 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.831 +Problem: Clumsy to handle the situation that a variable does not exist. +Solution: Add default value to getbufvar() et al. (Shougo Matsushita, + Hirohito Higashi) +Files: runtime/doc/eval.txt, src/eval.c src/testdir/test91.in, + src/testdir/test91.ok, src/testdir/Make_amiga.mak, + src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + src/testdir/Make_os2.mak, src/testdir/Make_vms.mms, + src/testdir/Makefile + + +*** ../vim-7.3.830/runtime/doc/eval.txt 2013-02-20 17:58:01.000000000 +0100 +--- runtime/doc/eval.txt 2013-02-20 20:53:50.000000000 +0100 +*************** +*** 1761,1772 **** + 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}]) + List lines {lnum} to {end} of buffer {expr} +! getbufvar( {expr}, {varname}) any variable {varname} in buffer {expr} + getchar( [expr]) Number get one character from the user + getcharmod( ) Number modifiers for the last typed character + getcmdline() String return the current command-line +--- 1772,1784 ---- + 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( [{atexit}]) 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}]) + List lines {lnum} to {end} of buffer {expr} +! getbufvar( {expr}, {varname} [, {def}]) +! any variable {varname} in buffer {expr} + getchar( [expr]) Number get one character from the user + getcharmod( ) Number modifiers for the last typed character + getcmdline() String return the current command-line +*************** +*** 1787,1798 **** + getqflist() List list of quickfix items + getreg( [{regname} [, 1]]) String contents of register + getregtype( [{regname}]) String type of register +! gettabvar( {nr}, {varname}) any variable {varname} in tab {nr} +! gettabwinvar( {tabnr}, {winnr}, {name}) + any {name} in {winnr} in tab page {tabnr} + getwinposx() Number X coord in pixels of GUI Vim window + getwinposy() Number Y coord in pixels of GUI Vim window +! getwinvar( {nr}, {varname}) any variable {varname} in window {nr} + glob( {expr} [, {nosuf} [, {list}]]) + any expand file wildcards in {expr} + globpath( {path}, {expr} [, {flag}]) +--- 1799,1812 ---- + getqflist() List list of quickfix items + getreg( [{regname} [, 1]]) String contents of register + getregtype( [{regname}]) String type of register +! gettabvar( {nr}, {varname} [, {def}]) +! any variable {varname} in tab {nr} or {def} +! gettabwinvar( {tabnr}, {winnr}, {name} [, {def}]) + any {name} in {winnr} in tab page {tabnr} + getwinposx() Number X coord in pixels of GUI Vim window + getwinposy() Number Y coord in pixels of GUI Vim window +! getwinvar( {nr}, {varname} [, {def}]) +! any variable {varname} in window {nr} + glob( {expr} [, {nosuf} [, {list}]]) + any expand file wildcards in {expr} + globpath( {path}, {expr} [, {flag}]) +*************** +*** 3131,3137 **** + Example: > + :let lines = getbufline(bufnr("myfile"), 1, "$") + +! getbufvar({expr}, {varname}) *getbufvar()* + The result is the value of option or local buffer variable + {varname} in buffer {expr}. Note that the name without "b:" + must be used. +--- 3146,3152 ---- + Example: > + :let lines = getbufline(bufnr("myfile"), 1, "$") + +! getbufvar({expr}, {varname} [, {def}]) *getbufvar()* + The result is the value of option or local buffer variable + {varname} in buffer {expr}. Note that the name without "b:" + must be used. +*************** +*** 3141,3148 **** + doesn't work for a global variable, window-local variable or + window-local option. + For the use of {expr}, see |bufname()| above. +! When the buffer or variable doesn't exist an empty string is +! returned, there is no error message. + Examples: > + :let bufmodified = getbufvar(1, "&mod") + :echo "todo myvar = " . getbufvar("todo", "myvar") +--- 3156,3163 ---- + doesn't work for a global variable, window-local variable or + window-local option. + For the use of {expr}, see |bufname()| above. +! When the buffer or variable doesn't exist {def} or an empty +! string is returned, there is no error message. + Examples: > + :let bufmodified = getbufvar(1, "&mod") + :echo "todo myvar = " . getbufvar("todo", "myvar") +*************** +*** 3414,3439 **** + is one character with value 0x16. + If {regname} is not specified, |v:register| is used. + +! gettabvar({tabnr}, {varname}) *gettabvar()* + Get the value of a tab-local variable {varname} in tab page + {tabnr}. |t:var| + Tabs are numbered starting with one. + Note that the name without "t:" must be used. + +! gettabwinvar({tabnr}, {winnr}, {varname}) *gettabwinvar()* + Get the value of window-local variable {varname} in window + {winnr} in tab page {tabnr}. + When {varname} starts with "&" get the value of a window-local + option. + Tabs are numbered starting with one. For the current tabpage + use |getwinvar()|. + When {winnr} is zero the current window is used. + This also works for a global option, buffer-local option and + window-local option, but it doesn't work for a global variable + or buffer-local variable. +! When {varname} is empty a dictionary with all window-local +! variables is returned. +! Note that {varname} must be the name without "w:". + Examples: > + :let list_is_on = gettabwinvar(1, 2, '&list') + :echo "myvar = " . gettabwinvar(3, 1, 'myvar') +--- 3434,3463 ---- + is one character with value 0x16. + If {regname} is not specified, |v:register| is used. + +! gettabvar({tabnr}, {varname} [, {def}]) *gettabvar()* + Get the value of a tab-local variable {varname} in tab page + {tabnr}. |t:var| + Tabs are numbered starting with one. + Note that the name without "t:" must be used. ++ When the tab or variable doesn't exist {def} or an empty ++ string is returned, there is no error message. + +! gettabwinvar({tabnr}, {winnr}, {varname} [, {def}]) *gettabwinvar()* + Get the value of window-local variable {varname} in window + {winnr} in tab page {tabnr}. + When {varname} starts with "&" get the value of a window-local + option. ++ When {varname} is empty a dictionary with all window-local ++ variables is returned. ++ Note that {varname} must be the name without "w:". + Tabs are numbered starting with one. For the current tabpage + use |getwinvar()|. + When {winnr} is zero the current window is used. + This also works for a global option, buffer-local option and + window-local option, but it doesn't work for a global variable + or buffer-local variable. +! When the tab, window or variable doesn't exist {def} or an +! empty string is returned, there is no error message. + Examples: > + :let list_is_on = gettabwinvar(1, 2, '&list') + :echo "myvar = " . gettabwinvar(3, 1, 'myvar') +*************** +*** 3448,3454 **** + the top of the GUI Vim window. The result will be -1 if the + information is not available. + +! getwinvar({winnr}, {varname}) *getwinvar()* + Like |gettabwinvar()| for the current tabpage. + Examples: > + :let list_is_on = getwinvar(2, '&list') +--- 3472,3478 ---- + the top of the GUI Vim window. The result will be -1 if the + information is not available. + +! getwinvar({winnr}, {varname} [, {def}]) *getwinvar()* + Like |gettabwinvar()| for the current tabpage. + Examples: > + :let list_is_on = getwinvar(2, '&list') +*** ../vim-7.3.830/src/eval.c 2013-02-20 17:58:01.000000000 +0100 +--- src/eval.c 2013-02-20 20:52:09.000000000 +0100 +*************** +*** 7916,7922 **** + {"garbagecollect", 0, 1, f_garbagecollect}, + {"get", 2, 3, f_get}, + {"getbufline", 2, 3, f_getbufline}, +! {"getbufvar", 2, 2, f_getbufvar}, + {"getchar", 0, 1, f_getchar}, + {"getcharmod", 0, 0, f_getcharmod}, + {"getcmdline", 0, 0, f_getcmdline}, +--- 7916,7922 ---- + {"garbagecollect", 0, 1, f_garbagecollect}, + {"get", 2, 3, f_get}, + {"getbufline", 2, 3, f_getbufline}, +! {"getbufvar", 2, 3, f_getbufvar}, + {"getchar", 0, 1, f_getchar}, + {"getcharmod", 0, 0, f_getcharmod}, + {"getcmdline", 0, 0, f_getcmdline}, +*************** +*** 7936,7946 **** + {"getqflist", 0, 0, f_getqflist}, + {"getreg", 0, 2, f_getreg}, + {"getregtype", 0, 1, f_getregtype}, +! {"gettabvar", 2, 2, f_gettabvar}, +! {"gettabwinvar", 3, 3, f_gettabwinvar}, + {"getwinposx", 0, 0, f_getwinposx}, + {"getwinposy", 0, 0, f_getwinposy}, +! {"getwinvar", 2, 2, f_getwinvar}, + {"glob", 1, 3, f_glob}, + {"globpath", 2, 3, f_globpath}, + {"has", 1, 1, f_has}, +--- 7936,7946 ---- + {"getqflist", 0, 0, f_getqflist}, + {"getreg", 0, 2, f_getreg}, + {"getregtype", 0, 1, f_getregtype}, +! {"gettabvar", 2, 3, f_gettabvar}, +! {"gettabwinvar", 3, 4, f_gettabwinvar}, + {"getwinposx", 0, 0, f_getwinposx}, + {"getwinposy", 0, 0, f_getwinposy}, +! {"getwinvar", 2, 3, f_getwinvar}, + {"glob", 1, 3, f_glob}, + {"globpath", 2, 3, f_globpath}, + {"has", 1, 1, f_has}, +*************** +*** 11115,11122 **** + ++emsg_off; + buf = get_buf_tv(&argvars[0]); + +! rettv->v_type = VAR_STRING; +! rettv->vval.v_string = NULL; + + if (buf != NULL && varname != NULL) + { +--- 11115,11128 ---- + ++emsg_off; + buf = get_buf_tv(&argvars[0]); + +! if (argvars[2].v_type != VAR_UNKNOWN) +! /* set the default value */ +! copy_tv(&argvars[2], rettv); +! else +! { +! rettv->v_type = VAR_STRING; +! rettv->vval.v_string = NULL; +! } + + if (buf != NULL && varname != NULL) + { +*************** +*** 11785,11791 **** +--- 11791,11801 ---- + v = find_var_in_ht(&tp->tp_vars.dv_hashtab, varname, FALSE); + if (v != NULL) + copy_tv(&v->di_tv, rettv); ++ else if (argvars[2].v_type != VAR_UNKNOWN) ++ copy_tv(&argvars[2], rettv); + } ++ else if (argvars[2].v_type != VAR_UNKNOWN) ++ copy_tv(&argvars[2], rettv); + } + + /* +*************** +*** 11907,11914 **** + varname = get_tv_string_chk(&argvars[off + 1]); + ++emsg_off; + +! rettv->v_type = VAR_STRING; +! rettv->vval.v_string = NULL; + + if (win != NULL && varname != NULL) + { +--- 11917,11930 ---- + varname = get_tv_string_chk(&argvars[off + 1]); + ++emsg_off; + +! if (argvars[off + 2].v_type != VAR_UNKNOWN) +! /* set the default return value */ +! copy_tv(&argvars[off + 2], rettv); +! else +! { +! rettv->v_type = VAR_STRING; +! rettv->vval.v_string = NULL; +! } + + if (win != NULL && varname != NULL) + { +*** ../vim-7.3.830/src/testdir/test91.in 2013-02-20 21:09:20.000000000 +0100 +--- src/testdir/test91.in 2013-02-20 20:57:49.000000000 +0100 +*************** +*** 0 **** +--- 1,98 ---- ++ Tests for getbufvar(), getwinvar(), gettabvar() and gettabwinvar(). ++ vim: set ft=vim : ++ ++ STARTTEST ++ :so small.vim ++ :" ++ :" test for getbufvar() ++ :let b:var_num = 1234 ++ :let def_num = 5678 ++ :$put =string(getbufvar(1, 'var_num')) ++ :$put =string(getbufvar(1, 'var_num', def_num)) ++ :$put =string(getbufvar(1, '')) ++ :$put =string(getbufvar(1, '', def_num)) ++ :unlet b:var_num ++ :$put =string(getbufvar(1, 'var_num', def_num)) ++ :$put =string(getbufvar(1, '')) ++ :$put =string(getbufvar(1, '', def_num)) ++ :$put =string(getbufvar(9, '')) ++ :$put =string(getbufvar(9, '', def_num)) ++ :unlet def_num ++ :$put =string(getbufvar(1, '&autoindent')) ++ :$put =string(getbufvar(1, '&autoindent', 1)) ++ :" ++ :" test for getwinvar() ++ :let w:var_str = "Dance" ++ :let def_str = "Chance" ++ :$put =string(getwinvar(1, 'var_str')) ++ :$put =string(getwinvar(1, 'var_str', def_str)) ++ :$put =string(getwinvar(1, '')) ++ :$put =string(getwinvar(1, '', def_str)) ++ :unlet w:var_str ++ :$put =string(getwinvar(1, 'var_str', def_str)) ++ :$put =string(getwinvar(1, '')) ++ :$put =string(getwinvar(1, '', def_str)) ++ :$put =string(getwinvar(9, '')) ++ :$put =string(getwinvar(9, '', def_str)) ++ :$put =string(getwinvar(1, '&nu')) ++ :$put =string(getwinvar(1, '&nu', 1)) ++ :unlet def_str ++ :" ++ :" test for gettabvar() ++ :tabnew ++ :tabnew ++ :let t:var_list = [1, 2, 3] ++ :let def_list = [4, 5, 6, 7] ++ :tabrewind ++ :$put =string(gettabvar(3, 'var_list')) ++ :$put =string(gettabvar(3, 'var_list', def_list)) ++ :$put =string(gettabvar(3, '')) ++ :$put =string(gettabvar(3, '', def_list)) ++ :tablast ++ :unlet t:var_list ++ :tabrewind ++ :$put =string(gettabvar(3, 'var_list', def_list)) ++ :$put =string(gettabvar(9, '')) ++ :$put =string(gettabvar(9, '', def_list)) ++ :$put =string(gettabvar(3, '&nu')) ++ :$put =string(gettabvar(3, '&nu', def_list)) ++ :unlet def_list ++ :tabonly ++ :" ++ :" test for gettabwinvar() ++ :tabnew ++ :tabnew ++ :tabprev ++ :split ++ :split ++ :wincmd w ++ :vert split ++ :wincmd w ++ :let w:var_dict = {'dict': 'tabwin'} ++ :let def_dict = {'dict2': 'newval'} ++ :wincmd b ++ :tabrewind ++ :$put =string(gettabwinvar(2, 3, 'var_dict')) ++ :$put =string(gettabwinvar(2, 3, 'var_dict', def_dict)) ++ :$put =string(gettabwinvar(2, 3, '')) ++ :$put =string(gettabwinvar(2, 3, '', def_dict)) ++ :tabnext ++ :3wincmd w ++ :unlet w:var_dict ++ :tabrewind ++ :$put =string(gettabwinvar(2, 3, 'var_dict', def_dict)) ++ :$put =string(gettabwinvar(2, 3, '')) ++ :$put =string(gettabwinvar(2, 3, '', def_dict)) ++ :$put =string(gettabwinvar(2, 9, '')) ++ :$put =string(gettabwinvar(2, 9, '', def_dict)) ++ :$put =string(gettabwinvar(9, 3, '')) ++ :$put =string(gettabwinvar(9, 3, '', def_dict)) ++ :unlet def_dict ++ :$put =string(gettabwinvar(2, 3, '&nux')) ++ :$put =string(gettabwinvar(2, 3, '&nux', 1)) ++ :tabonly ++ :" ++ :/^start/,$wq! test.out ++ ENDTEST ++ ++ start: +*** ../vim-7.3.830/src/testdir/test91.ok 2013-02-20 21:09:20.000000000 +0100 +--- src/testdir/test91.ok 2013-02-20 20:57:45.000000000 +0100 +*************** +*** 0 **** +--- 1,45 ---- ++ start: ++ 1234 ++ 1234 ++ {'var_num': 1234} ++ {'var_num': 1234} ++ 5678 ++ {} ++ {} ++ '' ++ 5678 ++ 0 ++ 0 ++ 'Dance' ++ 'Dance' ++ {'var_str': 'Dance'} ++ {'var_str': 'Dance'} ++ 'Chance' ++ {} ++ {} ++ '' ++ 'Chance' ++ 0 ++ 0 ++ [1, 2, 3] ++ [1, 2, 3] ++ '' ++ [4, 5, 6, 7] ++ [4, 5, 6, 7] ++ '' ++ [4, 5, 6, 7] ++ '' ++ [4, 5, 6, 7] ++ {'dict': 'tabwin'} ++ {'dict': 'tabwin'} ++ {'var_dict': {'dict': 'tabwin'}} ++ {'var_dict': {'dict': 'tabwin'}} ++ {'dict2': 'newval'} ++ {} ++ {} ++ '' ++ {'dict2': 'newval'} ++ '' ++ {'dict2': 'newval'} ++ '' ++ 1 +*** ../vim-7.3.830/src/testdir/Make_amiga.mak 2013-02-13 17:34:59.000000000 +0100 +--- src/testdir/Make_amiga.mak 2013-02-20 20:21:03.000000000 +0100 +*************** +*** 32,38 **** + test71.out test72.out test73.out test74.out test75.out \ + test76.out test77.out test78.out test79.out test80.out \ + test81.out test82.out test83.out test84.out test88.out \ +! test89.out test90.out + + .SUFFIXES: .in .out + +--- 32,38 ---- + test71.out test72.out test73.out test74.out test75.out \ + test76.out test77.out test78.out test79.out test80.out \ + test81.out test82.out test83.out test84.out test88.out \ +! test89.out test90.out test91.out + + .SUFFIXES: .in .out + +*************** +*** 139,141 **** +--- 139,142 ---- + test88.out: test88.in + test89.out: test89.in + test90.out: test90.in ++ test91.out: test91.in +*** ../vim-7.3.830/src/testdir/Make_dos.mak 2013-02-13 17:34:59.000000000 +0100 +--- src/testdir/Make_dos.mak 2013-02-20 20:21:13.000000000 +0100 +*************** +*** 31,37 **** + test74.out test75.out test76.out test77.out test78.out \ + test79.out test80.out test81.out test82.out test83.out \ + test84.out test85.out test86.out test87.out test88.out \ +! test89.out test90.out + + SCRIPTS32 = test50.out test70.out + +--- 31,37 ---- + test74.out test75.out test76.out test77.out test78.out \ + test79.out test80.out test81.out test82.out test83.out \ + test84.out test85.out test86.out test87.out test88.out \ +! test89.out test90.out test91.out + + SCRIPTS32 = test50.out test70.out + +*** ../vim-7.3.830/src/testdir/Make_ming.mak 2013-02-13 17:34:59.000000000 +0100 +--- src/testdir/Make_ming.mak 2013-02-20 20:21:19.000000000 +0100 +*************** +*** 51,57 **** + test74.out test75.out test76.out test77.out test78.out \ + test79.out test80.out test81.out test82.out test83.out \ + test84.out test85.out test86.out test87.out test88.out \ +! test89.out test90.out + + SCRIPTS32 = test50.out test70.out + +--- 51,57 ---- + test74.out test75.out test76.out test77.out test78.out \ + test79.out test80.out test81.out test82.out test83.out \ + test84.out test85.out test86.out test87.out test88.out \ +! test89.out test90.out test91.out + + SCRIPTS32 = test50.out test70.out + +*** ../vim-7.3.830/src/testdir/Make_os2.mak 2013-02-13 17:34:59.000000000 +0100 +--- src/testdir/Make_os2.mak 2013-02-20 20:21:25.000000000 +0100 +*************** +*** 32,38 **** + test71.out test72.out test73.out test74.out test75.out \ + test76.out test77.out test78.out test79.out test80.out \ + test81.out test82.out test83.out test84.out test88.out \ +! test89.out test90.out + + .SUFFIXES: .in .out + +--- 32,38 ---- + test71.out test72.out test73.out test74.out test75.out \ + test76.out test77.out test78.out test79.out test80.out \ + test81.out test82.out test83.out test84.out test88.out \ +! test89.out test90.out test91.out + + .SUFFIXES: .in .out + +*** ../vim-7.3.830/src/testdir/Make_vms.mms 2013-02-13 17:34:59.000000000 +0100 +--- src/testdir/Make_vms.mms 2013-02-20 20:21:31.000000000 +0100 +*************** +*** 4,10 **** + # Authors: Zoltan Arpadffy, + # Sandor Kopanyi, + # +! # Last change: 2013 Feb 13 + # + # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. + # Edit the lines in the Configuration section below to select. +--- 4,10 ---- + # Authors: Zoltan Arpadffy, + # Sandor Kopanyi, + # +! # Last change: 2013 Feb 20 + # + # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. + # Edit the lines in the Configuration section below to select. +*************** +*** 77,83 **** + test71.out test72.out test74.out test75.out test76.out \ + test77.out test78.out test79.out test80.out test81.out \ + test82.out test83.out test84.out test88.out test89.out \ +! test90.out + + # Known problems: + # Test 30: a problem around mac format - unknown reason +--- 77,83 ---- + test71.out test72.out test74.out test75.out test76.out \ + test77.out test78.out test79.out test80.out test81.out \ + test82.out test83.out test84.out test88.out test89.out \ +! test90.out test91.out + + # Known problems: + # Test 30: a problem around mac format - unknown reason +*** ../vim-7.3.830/src/testdir/Makefile 2013-02-13 17:34:59.000000000 +0100 +--- src/testdir/Makefile 2013-02-20 20:21:47.000000000 +0100 +*************** +*** 28,34 **** + test74.out test75.out test76.out test77.out test78.out \ + test79.out test80.out test81.out test82.out test83.out \ + test84.out test85.out test86.out test87.out test88.out \ +! test89.out test90.out + + SCRIPTS_GUI = test16.out + +--- 28,34 ---- + test74.out test75.out test76.out test77.out test78.out \ + test79.out test80.out test81.out test82.out test83.out \ + test84.out test85.out test86.out test87.out test88.out \ +! test89.out test90.out test91.out + + SCRIPTS_GUI = test16.out + +*** ../vim-7.3.830/src/version.c 2013-02-20 19:26:24.000000000 +0100 +--- src/version.c 2013-02-20 21:08:40.000000000 +0100 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 831, + /**/ + +-- + | + +Ceci n'est pas une pipe. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.832 b/7.3.832 new file mode 100644 index 0000000..1a38940 --- /dev/null +++ b/7.3.832 @@ -0,0 +1,66 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.832 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.832 +Problem: Compiler warning. +Solution: Add type cast. (Mike Williams) +Files: src/version.c + + +*** ../vim-7.3.831/src/version.c 2013-02-20 21:11:14.000000000 +0100 +--- src/version.c 2013-02-26 11:21:41.000000000 +0100 +*************** +*** 2466,2472 **** + * width */ + for (i = 0; features[i] != NULL; ++i) + { +! int l = STRLEN(features[i]); + + if (l > width) + width = l; +--- 2468,2474 ---- + * width */ + for (i = 0; features[i] != NULL; ++i) + { +! int l = (int)STRLEN(features[i]); + + if (l > width) + width = l; +*************** +*** 2518,2523 **** +--- 2520,2526 ---- + msg_putchar('\n'); + } + } ++ + void + list_version() + { +*** ../vim-7.3.831/src/version.c 2013-02-20 21:11:14.000000000 +0100 +--- src/version.c 2013-02-26 11:21:41.000000000 +0100 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 832, + /**/ + +-- +Engineers are always delighted to share wisdom, even in areas in which they +have no experience whatsoever. Their logic provides them with inherent +insight into any field of expertise. This can be a problem when dealing with +the illogical people who believe that knowledge can only be derived through +experience. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.833 b/7.3.833 new file mode 100644 index 0000000..b28af4f --- /dev/null +++ b/7.3.833 @@ -0,0 +1,118 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.833 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.833 +Problem: In the terminal the scroll wheel always scrolls the active window. +Solution: Scroll the window under the mouse pointer, like in the GUI. + (Bradie Rao) +Files: src/edit.c, src/normal.c + + +*** ../vim-7.3.832/src/edit.c 2013-02-13 16:30:17.000000000 +0100 +--- src/edit.c 2013-02-26 11:20:31.000000000 +0100 +*************** +*** 9139,9147 **** + + 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) + { + int row, col; + +--- 9139,9146 ---- + + tpos = curwin->w_cursor; + +! # ifdef FEAT_WINDOWS +! if (mouse_row >= 0 && mouse_col >= 0) + { + int row, col; + +*************** +*** 9191,9197 **** + # endif + } + +! # if defined(FEAT_GUI) && defined(FEAT_WINDOWS) + curwin->w_redr_status = TRUE; + + curwin = old_curwin; +--- 9190,9196 ---- + # endif + } + +! # ifdef FEAT_WINDOWS + curwin->w_redr_status = TRUE; + + curwin = old_curwin; +*** ../vim-7.3.832/src/normal.c 2013-02-14 22:11:31.000000000 +0100 +--- src/normal.c 2013-02-26 11:20:31.000000000 +0100 +*************** +*** 4649,4659 **** + nv_mousescroll(cap) + cmdarg_T *cap; + { +! # if defined(FEAT_GUI) && defined(FEAT_WINDOWS) + win_T *old_curwin = curwin; + +! /* Currently we only get the mouse coordinates in the GUI. */ +! if (gui.in_use && mouse_row >= 0 && mouse_col >= 0) + { + int row, col; + +--- 4649,4658 ---- + nv_mousescroll(cap) + cmdarg_T *cap; + { +! # ifdef FEAT_WINDOWS + win_T *old_curwin = curwin; + +! if (mouse_row >= 0 && mouse_col >= 0) + { + int row, col; + +*************** +*** 4698,4704 **** + } + # endif + +! # if defined(FEAT_GUI) && defined(FEAT_WINDOWS) + curwin->w_redr_status = TRUE; + + curwin = old_curwin; +--- 4697,4703 ---- + } + # endif + +! # ifdef FEAT_WINDOWS + curwin->w_redr_status = TRUE; + + curwin = old_curwin; +*** ../vim-7.3.832/src/version.c 2013-02-26 11:25:28.000000000 +0100 +--- src/version.c 2013-02-26 13:28:51.000000000 +0100 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 833, + /**/ + +-- +Female engineers become irresistible at the age of consent and remain that +way until about thirty minutes after their clinical death. Longer if it's a +warm day. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.834 b/7.3.834 new file mode 100644 index 0000000..b95610e --- /dev/null +++ b/7.3.834 @@ -0,0 +1,83 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.834 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.834 +Problem: Ruby 2.0 has a few API changes. +Solution: Add handling of Ruby 2.0. (Yasuhiro Matsumoto) +Files: src/if_ruby.c + + +*** ../vim-7.3.833/src/if_ruby.c 2013-02-14 22:19:47.000000000 +0100 +--- src/if_ruby.c 2013-02-26 13:41:24.000000000 +0100 +*************** +*** 189,195 **** +--- 189,197 ---- + #ifndef RUBY19_OR_LATER + #define rb_num2long dll_rb_num2long + #endif ++ #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER <= 19 + #define rb_num2ulong dll_rb_num2ulong ++ #endif + #define rb_obj_alloc dll_rb_obj_alloc + #define rb_obj_as_string dll_rb_obj_as_string + #define rb_obj_id dll_rb_obj_id +*************** +*** 344,349 **** +--- 346,362 ---- + { + return dll_rb_int2big(x); + } ++ #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 20 ++ VALUE ++ rb_float_new_in_heap(double d) ++ { ++ return dll_rb_float_new(d); ++ } ++ unsigned long rb_num2ulong(VALUE x) ++ { ++ return (long)RSHIFT((SIGNED_VALUE)(x),1); ++ } ++ #endif + #endif + + static HINSTANCE hinstRuby = NULL; /* Instance of ruby.dll */ +*************** +*** 434,440 **** +--- 447,457 ---- + #endif + #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18 + {"rb_string_value_ptr", (RUBY_PROC*)&dll_rb_string_value_ptr}, ++ # if DYNAMIC_RUBY_VER <= 19 + {"rb_float_new", (RUBY_PROC*)&dll_rb_float_new}, ++ # else ++ {"rb_float_new_in_heap", (RUBY_PROC*)&dll_rb_float_new}, ++ # endif + {"rb_ary_new", (RUBY_PROC*)&dll_rb_ary_new}, + {"rb_ary_push", (RUBY_PROC*)&dll_rb_ary_push}, + #endif +*** ../vim-7.3.833/src/version.c 2013-02-26 13:30:28.000000000 +0100 +--- src/version.c 2013-02-26 13:33:34.000000000 +0100 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 834, + /**/ + +-- +An alien life briefly visits earth. Just before departing it leaves a +message in the dust on the back of a white van. The world is shocked +and wants to know what it means. After months of studies the worlds +best linguistic scientists are able to decipher the message: "Wash me!". + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.835 b/7.3.835 new file mode 100644 index 0000000..61991bb --- /dev/null +++ b/7.3.835 @@ -0,0 +1,60 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.835 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.835 +Problem: "xxd -i" fails on an empty file. +Solution: Do output the closing } for an empty file. (partly by Lawrence + Woodman) +Files: src/xxd/xxd.c + + +*** ../vim-7.3.834/src/xxd/xxd.c 2011-04-11 21:35:03.000000000 +0200 +--- src/xxd/xxd.c 2013-02-26 14:08:48.000000000 +0100 +*************** +*** 729,737 **** + if (c == EOF && ferror(fp)) + die(2); + +! if (p) +! if (fputs("\n};\n" + 3 * (fp == stdin), fpo) == EOF) +! die(3); + + if (fp != stdin) + { +--- 729,738 ---- + if (c == EOF && ferror(fp)) + die(2); + +! if (p && fputs("\n", fpo) == EOF) +! die(3); +! if (fputs("};\n" + 3 * (fp == stdin), fpo) == EOF) +! die(3); + + if (fp != stdin) + { +*** ../vim-7.3.834/src/version.c 2013-02-26 13:41:31.000000000 +0100 +--- src/version.c 2013-02-26 14:11:21.000000000 +0100 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 835, + /**/ + +-- +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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.836 b/7.3.836 new file mode 100644 index 0000000..712e2b3 --- /dev/null +++ b/7.3.836 @@ -0,0 +1,2071 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.836 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.836 +Problem: Clipboard does not work on Win32 when compiled with Cygwin. +Solution: Move the Win32 clipboard code to a separate file and use it when + building with os_unix.c. (Frodak Baksik, Ken Takata) +Files: src/Make_bc5.mak, src/Make_cyg.mak, src/Make_ivc.mak, + src/Make_ming.mak, src/Make_mvc.mak, src/Make_w16.mak, + src/Makefile, src/config.h.in, src/configure.in, + src/auto/configure, src/feature.h, src/globals.h, src/mbyte.c, + src/os_mswin.c, src/os_unix.c, src/os_win32.c, src/proto.h, + src/proto/os_mswin.pro, src/proto/winclip.pro, src/term.c, + src/vim.h, src/winclip.c + + +*** ../vim-7.3.835/src/Make_bc5.mak 2010-08-15 21:57:32.000000000 +0200 +--- src/Make_bc5.mak 2013-02-26 14:18:19.000000000 +0100 +*************** +*** 694,700 **** + + !if ($(OSTYPE)==WIN32) + vimobj = $(vimobj) \ +! $(OBJDIR)\os_win32.obj $(OBJDIR)\os_mswin.obj + !elif ($(OSTYPE)==DOS16) + vimobj = $(vimobj) \ + $(OBJDIR)\os_msdos.obj +--- 694,700 ---- + + !if ($(OSTYPE)==WIN32) + vimobj = $(vimobj) \ +! $(OBJDIR)\os_win32.obj $(OBJDIR)\os_mswin.obj $(OBJDIR)\winclip.obj + !elif ($(OSTYPE)==DOS16) + vimobj = $(vimobj) \ + $(OBJDIR)\os_msdos.obj +*** ../vim-7.3.835/src/Make_cyg.mak 2013-02-20 13:34:14.000000000 +0100 +--- src/Make_cyg.mak 2013-02-26 14:18:19.000000000 +0100 +*************** +*** 547,552 **** +--- 547,553 ---- + $(OUTDIR)/option.o \ + $(OUTDIR)/os_win32.o \ + $(OUTDIR)/os_mswin.o \ ++ $(OUTDIR)/winclip.o \ + $(OUTDIR)/pathdef.o \ + $(OUTDIR)/popupmnu.o \ + $(OUTDIR)/quickfix.o \ +*** ../vim-7.3.835/src/Make_ivc.mak 2010-08-15 21:57:28.000000000 +0200 +--- src/Make_ivc.mak 2013-02-26 14:18:19.000000000 +0100 +*************** +*** 241,246 **** +--- 241,247 ---- + "$(INTDIR)/ops.obj" \ + "$(INTDIR)/option.obj" \ + "$(INTDIR)/os_mswin.obj" \ ++ "$(INTDIR)/winclip.obj" \ + "$(INTDIR)/os_win32.obj" \ + "$(INTDIR)/popupmnu.obj" \ + "$(INTDIR)/quickfix.obj" \ +*************** +*** 600,605 **** +--- 601,610 ---- + # End Source File + # Begin Source File + ++ SOURCE=.\winclip.c ++ # End Source File ++ # Begin Source File ++ + SOURCE=.\os_win32.c + # End Source File + # Begin Source File +*** ../vim-7.3.835/src/Make_ming.mak 2013-01-30 14:55:35.000000000 +0100 +--- src/Make_ming.mak 2013-02-26 14:18:19.000000000 +0100 +*************** +*** 523,528 **** +--- 523,529 ---- + $(OUTDIR)/option.o \ + $(OUTDIR)/os_win32.o \ + $(OUTDIR)/os_mswin.o \ ++ $(OUTDIR)/winclip.o \ + $(OUTDIR)/pathdef.o \ + $(OUTDIR)/popupmnu.o \ + $(OUTDIR)/quickfix.o \ +*** ../vim-7.3.835/src/Make_mvc.mak 2013-01-30 14:55:35.000000000 +0100 +--- src/Make_mvc.mak 2013-02-26 14:29:05.000000000 +0100 +*************** +*** 543,548 **** +--- 543,549 ---- + $(OUTDIR)\ops.obj \ + $(OUTDIR)\option.obj \ + $(OUTDIR)\os_mswin.obj \ ++ $(OUTDIR)\winclip.obj \ + $(OUTDIR)\os_win32.obj \ + $(OUTDIR)\pathdef.obj \ + $(OUTDIR)\popupmnu.obj \ +*************** +*** 1149,1154 **** +--- 1150,1157 ---- + + $(OUTDIR)/os_mswin.obj: $(OUTDIR) os_mswin.c $(INCL) + ++ $(OUTDIR)/winclip.obj: $(OUTDIR) winclip.c $(INCL) ++ + $(OUTDIR)/os_win32.obj: $(OUTDIR) os_win32.c $(INCL) os_win32.h + + $(OUTDIR)/os_w32exe.obj: $(OUTDIR) os_w32exe.c $(INCL) +*************** +*** 1256,1261 **** +--- 1259,1265 ---- + proto/ops.pro \ + proto/option.pro \ + proto/os_mswin.pro \ ++ proto/winclip.pro \ + proto/os_win32.pro \ + proto/popupmnu.pro \ + proto/quickfix.pro \ +*** ../vim-7.3.835/src/Make_w16.mak 2010-08-15 21:57:27.000000000 +0200 +--- src/Make_w16.mak 2013-02-26 14:18:19.000000000 +0100 +*************** +*** 107,112 **** +--- 107,113 ---- + $(INTDIR)\os_win16.obj\ + $(INTDIR)\os_msdos.obj\ + $(INTDIR)\os_mswin.obj\ ++ $(INTDIR)\winclip.obj\ + $(INTDIR)\popupmnu.obj\ + $(INTDIR)\quickfix.obj\ + $(INTDIR)\regexp.obj\ +*** ../vim-7.3.835/src/Makefile 2013-01-30 17:41:43.000000000 +0100 +--- src/Makefile 2013-02-26 14:54:51.000000000 +0100 +*************** +*** 1638,1644 **** + RSRC_DIR = os_mac_rsrc + + PRO_MANUAL = os_amiga.pro os_msdos.pro os_win16.pro os_win32.pro \ +! os_mswin.pro os_beos.pro os_vms.pro $(PERL_PRO) + + # Default target is making the executable and tools + all: $(VIMTARGET) $(TOOLS) languages $(GUI_BUNDLE) +--- 1638,1644 ---- + RSRC_DIR = os_mac_rsrc + + PRO_MANUAL = os_amiga.pro os_msdos.pro os_win16.pro os_win32.pro \ +! os_mswin.pro winclip.pro os_beos.pro os_vms.pro $(PERL_PRO) + + # Default target is making the executable and tools + all: $(VIMTARGET) $(TOOLS) languages $(GUI_BUNDLE) +*************** +*** 1792,1797 **** +--- 1792,1801 ---- + $(CPROTO) -DWIN16 -DWIN32 -UHAVE_CONFIG_H $< > proto/$@ + echo "/* vim: set ft=c : */" >> proto/$@ + ++ winclip.pro: winclip.c ++ $(CPROTO) -DWIN16 -DWIN32 -UHAVE_CONFIG_H $< > proto/$@ ++ echo "/* vim: set ft=c : */" >> proto/$@ ++ + os_beos.pro: os_beos.c + $(CPROTO) -D__BEOS__ -UHAVE_CONFIG_H $< > proto/$@ + echo "/* vim: set ft=c : */" >> proto/$@ +*************** +*** 2642,2647 **** +--- 2646,2657 ---- + objects/os_unix.o: os_unix.c + $(CCC) -o $@ os_unix.c + ++ objects/os_mswin.o: os_mswin.c ++ $(CCC) -o $@ os_mswin.c ++ ++ objects/winclip.o: winclip.c ++ $(CCC) -o $@ winclip.c ++ + objects/pathdef.o: auto/pathdef.c + $(CCC) -o $@ auto/pathdef.c + +*************** +*** 2970,2975 **** +--- 2980,2989 ---- + ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \ + gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h globals.h farsi.h \ + arabic.h version.h ++ objects/winclip.o: winclip.c vimio.h vim.h auto/config.h feature.h os_unix.h \ ++ auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \ ++ regexp.h gui.h ex_cmds.h proto.h globals.h farsi.h arabic.h \ ++ proto/winclip.pro + objects/window.o: window.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \ + ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \ + gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h globals.h farsi.h \ +*** ../vim-7.3.835/src/config.h.in 2012-08-15 14:04:50.000000000 +0200 +--- src/config.h.in 2013-02-26 14:18:19.000000000 +0100 +*************** +*** 439,441 **** +--- 439,444 ---- + + /* Define if fcntl()'s F_SETFD command knows about FD_CLOEXEC */ + #undef HAVE_FD_CLOEXEC ++ ++ /* Define if you want Cygwin to use the WIN32 clipboard, not compatible with X11*/ ++ #undef FEAT_CYGWIN_WIN32_CLIPBOARD +*** ../vim-7.3.835/src/configure.in 2013-02-06 19:49:37.000000000 +0100 +--- src/configure.in 2013-02-26 14:18:19.000000000 +0100 +*************** +*** 2474,2479 **** +--- 2474,2494 ---- + dnl end of GUI-checking + dnl --------------------------------------------------------------------------- + ++ dnl Check for Cygwin, which needs an extra source file if not using X11 ++ AC_MSG_CHECKING(for CYGWIN environment) ++ case `uname` in ++ CYGWIN*) CYGWIN=yes; AC_MSG_RESULT(yes) ++ AC_MSG_CHECKING(for CYGWIN clipboard support) ++ if test "x$with_x" = "xno" ; then ++ OS_EXTRA_SRC=winclip.c; OS_EXTRA_OBJ=objects/winclip.o ++ AC_MSG_RESULT(yes) ++ AC_DEFINE(FEAT_CYGWIN_WIN32_CLIPBOARD) ++ else ++ AC_MSG_RESULT(no - using X11) ++ fi ;; ++ ++ *) CYGWIN=no; AC_MSG_RESULT(no);; ++ esac + + dnl Only really enable hangul input when GUI and XFONTSET are available + if test "$enable_hangulinput" = "yes"; then +*** ../vim-7.3.835/src/auto/configure 2013-02-06 19:49:38.000000000 +0100 +--- src/auto/configure 2013-02-26 14:22:16.000000000 +0100 +*************** +*** 8846,8851 **** +--- 8846,8872 ---- + + + ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CYGWIN environment" >&5 ++ $as_echo_n "checking for CYGWIN environment... " >&6; } ++ case `uname` in ++ CYGWIN*) CYGWIN=yes; { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 ++ $as_echo "yes" >&6; } ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CYGWIN clipboard support" >&5 ++ $as_echo_n "checking for CYGWIN clipboard support... " >&6; } ++ if test "x$with_x" = "xno" ; then ++ OS_EXTRA_SRC=winclip.c; OS_EXTRA_OBJ=objects/winclip.o ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 ++ $as_echo "yes" >&6; } ++ $as_echo "#define FEAT_CYGWIN_WIN32_CLIPBOARD 1" >>confdefs.h ++ ++ else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no - using X11" >&5 ++ $as_echo "no - using X11" >&6; } ++ fi ;; ++ ++ *) CYGWIN=no; { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++ $as_echo "no" >&6; };; ++ esac + + if test "$enable_hangulinput" = "yes"; then + if test "x$GUITYPE" = "xNONE"; then +*** ../vim-7.3.835/src/feature.h 2013-02-14 22:11:31.000000000 +0100 +--- src/feature.h 2013-02-26 14:18:19.000000000 +0100 +*************** +*** 1129,1134 **** +--- 1129,1139 ---- + * +xterm_clipboard Unix only: Include code for handling the clipboard + * in an xterm like in the GUI. + */ ++ ++ #ifdef FEAT_CYGWIN_WIN32_CLIPBOARD ++ # define FEAT_CLIPBOARD ++ #endif ++ + #ifdef FEAT_GUI + # ifndef FEAT_CLIPBOARD + # define FEAT_CLIPBOARD +*** ../vim-7.3.835/src/globals.h 2012-08-23 18:43:06.000000000 +0200 +--- src/globals.h 2013-02-26 14:18:19.000000000 +0100 +*************** +*** 802,808 **** + EXTERN int enc_unicode INIT(= 0); /* 2: UCS-2 or UTF-16, 4: UCS-4 */ + EXTERN int enc_utf8 INIT(= FALSE); /* UTF-8 encoded Unicode */ + EXTERN int enc_latin1like INIT(= TRUE); /* 'encoding' is latin1 comp. */ +! # ifdef WIN3264 + /* Codepage nr of 'encoding'. Negative means it's not been set yet, zero + * means 'encoding' is not a valid codepage. */ + EXTERN int enc_codepage INIT(= -1); +--- 802,808 ---- + EXTERN int enc_unicode INIT(= 0); /* 2: UCS-2 or UTF-16, 4: UCS-4 */ + EXTERN int enc_utf8 INIT(= FALSE); /* UTF-8 encoded Unicode */ + EXTERN int enc_latin1like INIT(= TRUE); /* 'encoding' is latin1 comp. */ +! # if defined(WIN3264) || defined(FEAT_CYGWIN_WIN32_CLIPBOARD) + /* Codepage nr of 'encoding'. Negative means it's not been set yet, zero + * means 'encoding' is not a valid codepage. */ + EXTERN int enc_codepage INIT(= -1); +*** ../vim-7.3.835/src/mbyte.c 2013-02-13 16:49:54.000000000 +0100 +--- src/mbyte.c 2013-02-26 14:18:19.000000000 +0100 +*************** +*** 613,619 **** + enc_dbcs = enc_dbcs_new; + has_mbyte = (enc_dbcs != 0 || enc_utf8); + +! #ifdef WIN3264 + enc_codepage = encname2codepage(p_enc); + enc_latin9 = (STRCMP(p_enc, "iso-8859-15") == 0); + #endif +--- 613,619 ---- + enc_dbcs = enc_dbcs_new; + has_mbyte = (enc_dbcs != 0 || enc_utf8); + +! #if defined(WIN3264) || defined(FEAT_CYGWIN_WIN32_CLIPBOARD) + enc_codepage = encname2codepage(p_enc); + enc_latin9 = (STRCMP(p_enc, "iso-8859-15") == 0); + #endif +*************** +*** 4089,4095 **** + return enc_canonize((char_u *)buf); + } + +! #if defined(WIN3264) || defined(PROTO) + /* + * Convert an encoding name to an MS-Windows codepage. + * Returns zero if no codepage can be figured out. +--- 4089,4095 ---- + return enc_canonize((char_u *)buf); + } + +! #if defined(WIN3264) || defined(PROTO) || defined(FEAT_CYGWIN_WIN32_CLIPBOARD) + /* + * Convert an encoding name to an MS-Windows codepage. + * Returns zero if no codepage can be figured out. +*** ../vim-7.3.835/src/os_mswin.c 2012-11-20 16:53:34.000000000 +0100 +--- src/os_mswin.c 2013-02-26 14:18:19.000000000 +0100 +*************** +*** 905,1640 **** + } + #endif + +- #if defined(FEAT_MBYTE) || defined(PROTO) +- /* +- * Convert an UTF-8 string to UTF-16. +- * "instr[inlen]" is the input. "inlen" is in bytes. +- * When "outstr" is NULL only return the number of UTF-16 words produced. +- * Otherwise "outstr" must be a buffer of sufficient size. +- * Returns the number of UTF-16 words produced. +- */ +- int +- utf8_to_utf16(char_u *instr, int inlen, short_u *outstr, int *unconvlenp) +- { +- int outlen = 0; +- char_u *p = instr; +- int todo = inlen; +- int l; +- int ch; +- +- while (todo > 0) +- { +- /* Only convert if we have a complete sequence. */ +- l = utf_ptr2len_len(p, todo); +- if (l > todo) +- { +- /* Return length of incomplete sequence. */ +- if (unconvlenp != NULL) +- *unconvlenp = todo; +- break; +- } +- +- ch = utf_ptr2char(p); +- if (ch >= 0x10000) +- { +- /* non-BMP character, encoding with surrogate pairs */ +- ++outlen; +- if (outstr != NULL) +- { +- *outstr++ = (0xD800 - (0x10000 >> 10)) + (ch >> 10); +- *outstr++ = 0xDC00 | (ch & 0x3FF); +- } +- } +- else if (outstr != NULL) +- *outstr++ = ch; +- ++outlen; +- p += l; +- todo -= l; +- } +- +- return outlen; +- } +- +- /* +- * Convert an UTF-16 string to UTF-8. +- * The input is "instr[inlen]" with "inlen" in number of UTF-16 words. +- * When "outstr" is NULL only return the required number of bytes. +- * Otherwise "outstr" must be a buffer of sufficient size. +- * Return the number of bytes produced. +- */ +- int +- utf16_to_utf8(short_u *instr, int inlen, char_u *outstr) +- { +- int outlen = 0; +- int todo = inlen; +- short_u *p = instr; +- int l; +- int ch, ch2; +- +- while (todo > 0) +- { +- ch = *p; +- if (ch >= 0xD800 && ch <= 0xDBFF && todo > 1) +- { +- /* surrogate pairs handling */ +- ch2 = p[1]; +- if (ch2 >= 0xDC00 && ch2 <= 0xDFFF) +- { +- ch = ((ch - 0xD800) << 10) + (ch2 & 0x3FF) + 0x10000; +- ++p; +- --todo; +- } +- } +- if (outstr != NULL) +- { +- l = utf_char2bytes(ch, outstr); +- outstr += l; +- } +- else +- l = utf_char2len(ch); +- ++p; +- outlen += l; +- --todo; +- } +- +- return outlen; +- } +- +- /* +- * Call MultiByteToWideChar() and allocate memory for the result. +- * Returns the result in "*out[*outlen]" with an extra zero appended. +- * "outlen" is in words. +- */ +- void +- MultiByteToWideChar_alloc(UINT cp, DWORD flags, +- LPCSTR in, int inlen, +- LPWSTR *out, int *outlen) +- { +- *outlen = MultiByteToWideChar(cp, flags, in, inlen, 0, 0); +- /* Add one one word to avoid a zero-length alloc(). */ +- *out = (LPWSTR)alloc(sizeof(WCHAR) * (*outlen + 1)); +- if (*out != NULL) +- { +- MultiByteToWideChar(cp, flags, in, inlen, *out, *outlen); +- (*out)[*outlen] = 0; +- } +- } +- +- /* +- * Call WideCharToMultiByte() and allocate memory for the result. +- * Returns the result in "*out[*outlen]" with an extra NUL appended. +- */ +- void +- WideCharToMultiByte_alloc(UINT cp, DWORD flags, +- LPCWSTR in, int inlen, +- LPSTR *out, int *outlen, +- LPCSTR def, LPBOOL useddef) +- { +- *outlen = WideCharToMultiByte(cp, flags, in, inlen, NULL, 0, def, useddef); +- /* Add one one byte to avoid a zero-length alloc(). */ +- *out = alloc((unsigned)*outlen + 1); +- if (*out != NULL) +- { +- WideCharToMultiByte(cp, flags, in, inlen, *out, *outlen, def, useddef); +- (*out)[*outlen] = 0; +- } +- } +- +- #endif /* FEAT_MBYTE */ +- +- #ifdef FEAT_CLIPBOARD +- /* +- * Clipboard stuff, for cutting and pasting text to other windows. +- */ +- +- /* Type used for the clipboard type of Vim's data. */ +- typedef struct +- { +- int type; /* MCHAR, MBLOCK or MLINE */ +- int txtlen; /* length of CF_TEXT in bytes */ +- int ucslen; /* length of CF_UNICODETEXT in words */ +- int rawlen; /* length of clip_star.format_raw, including encoding, +- excluding terminating NUL */ +- } VimClipType_t; +- +- /* +- * Make vim the owner of the current selection. Return OK upon success. +- */ +- /*ARGSUSED*/ +- int +- clip_mch_own_selection(VimClipboard *cbd) +- { +- /* +- * Never actually own the clipboard. If another application sets the +- * clipboard, we don't want to think that we still own it. +- */ +- return FAIL; +- } +- +- /* +- * Make vim NOT the owner of the current selection. +- */ +- /*ARGSUSED*/ +- void +- clip_mch_lose_selection(VimClipboard *cbd) +- { +- /* Nothing needs to be done here */ +- } +- +- /* +- * Copy "str[*size]" into allocated memory, changing CR-NL to NL. +- * Return the allocated result and the size in "*size". +- * Returns NULL when out of memory. +- */ +- static char_u * +- crnl_to_nl(const char_u *str, int *size) +- { +- int pos = 0; +- int str_len = *size; +- char_u *ret; +- char_u *retp; +- +- /* Avoid allocating zero bytes, it generates an error message. */ +- ret = lalloc((long_u)(str_len == 0 ? 1 : str_len), TRUE); +- if (ret != NULL) +- { +- retp = ret; +- for (pos = 0; pos < str_len; ++pos) +- { +- if (str[pos] == '\r' && str[pos + 1] == '\n') +- { +- ++pos; +- --(*size); +- } +- *retp++ = str[pos]; +- } +- } +- +- return ret; +- } +- +- /* +- * Wait for another process to Close the Clipboard. +- * Returns TRUE for success. +- */ +- static int +- vim_open_clipboard(void) +- { +- int delay = 10; +- +- while (!OpenClipboard(NULL)) +- { +- if (delay > 500) +- return FALSE; /* waited too long, give up */ +- Sleep(delay); +- delay *= 2; /* wait for 10, 20, 40, 80, etc. msec */ +- } +- return TRUE; +- } +- +- /* +- * Get the current selection and put it in the clipboard register. +- * +- * NOTE: Must use GlobalLock/Unlock here to ensure Win32s compatibility. +- * On NT/W95 the clipboard data is a fixed global memory object and +- * so its handle = its pointer. +- * On Win32s, however, co-operation with the Win16 system means that +- * the clipboard data is moveable and its handle is not a pointer at all, +- * so we can't just cast the return value of GetClipboardData to (char_u*). +- * +- */ +- void +- clip_mch_request_selection(VimClipboard *cbd) +- { +- VimClipType_t metadata = { -1, -1, -1, -1 }; +- HGLOBAL hMem = NULL; +- char_u *str = NULL; +- #if defined(FEAT_MBYTE) && defined(WIN3264) +- char_u *to_free = NULL; +- #endif +- #ifdef FEAT_MBYTE +- HGLOBAL rawh = NULL; +- #endif +- int str_size = 0; +- int maxlen; +- size_t n; +- +- /* +- * Don't pass GetActiveWindow() as an argument to OpenClipboard() because +- * then we can't paste back into the same window for some reason - webb. +- */ +- if (!vim_open_clipboard()) +- return; +- +- /* Check for vim's own clipboard format first. This only gets the type of +- * the data, still need to use CF_UNICODETEXT or CF_TEXT for the text. */ +- if (IsClipboardFormatAvailable(cbd->format)) +- { +- VimClipType_t *meta_p; +- HGLOBAL meta_h; +- +- /* We have metadata on the clipboard; try to get it. */ +- if ((meta_h = GetClipboardData(cbd->format)) != NULL +- && (meta_p = (VimClipType_t *)GlobalLock(meta_h)) != NULL) +- { +- /* The size of "VimClipType_t" changed, "rawlen" was added later. +- * Only copy what is available for backwards compatibility. */ +- n = sizeof(VimClipType_t); +- if (GlobalSize(meta_h) < n) +- n = GlobalSize(meta_h); +- memcpy(&metadata, meta_p, n); +- GlobalUnlock(meta_h); +- } +- } +- +- #ifdef FEAT_MBYTE +- /* Check for Vim's raw clipboard format first. This is used without +- * conversion, but only if 'encoding' matches. */ +- if (IsClipboardFormatAvailable(cbd->format_raw) +- && metadata.rawlen > (int)STRLEN(p_enc)) +- { +- /* We have raw data on the clipboard; try to get it. */ +- if ((rawh = GetClipboardData(cbd->format_raw)) != NULL) +- { +- char_u *rawp; +- +- rawp = (char_u *)GlobalLock(rawh); +- if (rawp != NULL && STRCMP(p_enc, rawp) == 0) +- { +- n = STRLEN(p_enc) + 1; +- str = rawp + n; +- str_size = (int)(metadata.rawlen - n); +- } +- else +- { +- GlobalUnlock(rawh); +- rawh = NULL; +- } +- } +- } +- if (str == NULL) +- { +- #endif +- +- #if defined(FEAT_MBYTE) && defined(WIN3264) +- /* Try to get the clipboard in Unicode if it's not an empty string. */ +- if (IsClipboardFormatAvailable(CF_UNICODETEXT) && metadata.ucslen != 0) +- { +- HGLOBAL hMemW; +- +- if ((hMemW = GetClipboardData(CF_UNICODETEXT)) != NULL) +- { +- WCHAR *hMemWstr = (WCHAR *)GlobalLock(hMemW); +- +- /* Use the length of our metadata if possible, but limit it to the +- * GlobalSize() for safety. */ +- maxlen = (int)(GlobalSize(hMemW) / sizeof(WCHAR)); +- if (metadata.ucslen >= 0) +- { +- if (metadata.ucslen > maxlen) +- str_size = maxlen; +- else +- str_size = metadata.ucslen; +- } +- else +- { +- for (str_size = 0; str_size < maxlen; ++str_size) +- if (hMemWstr[str_size] == NUL) +- break; +- } +- to_free = str = utf16_to_enc((short_u *)hMemWstr, &str_size); +- GlobalUnlock(hMemW); +- } +- } +- else +- #endif +- /* Get the clipboard in the Active codepage. */ +- if (IsClipboardFormatAvailable(CF_TEXT)) +- { +- if ((hMem = GetClipboardData(CF_TEXT)) != NULL) +- { +- str = (char_u *)GlobalLock(hMem); +- +- /* The length is either what our metadata says or the strlen(). +- * But limit it to the GlobalSize() for safety. */ +- maxlen = (int)GlobalSize(hMem); +- if (metadata.txtlen >= 0) +- { +- if (metadata.txtlen > maxlen) +- str_size = maxlen; +- else +- str_size = metadata.txtlen; +- } +- else +- { +- for (str_size = 0; str_size < maxlen; ++str_size) +- if (str[str_size] == NUL) +- break; +- } +- +- # if defined(FEAT_MBYTE) && defined(WIN3264) +- /* The text is in the active codepage. Convert to 'encoding', +- * going through UTF-16. */ +- acp_to_enc(str, str_size, &to_free, &maxlen); +- if (to_free != NULL) +- { +- str_size = maxlen; +- str = to_free; +- } +- # endif +- } +- } +- #ifdef FEAT_MBYTE +- } +- #endif +- +- if (str != NULL && *str != NUL) +- { +- char_u *temp_clipboard; +- +- /* If the type is not known detect it. */ +- if (metadata.type == -1) +- metadata.type = MAUTO; +- +- /* Translate into . */ +- temp_clipboard = crnl_to_nl(str, &str_size); +- if (temp_clipboard != NULL) +- { +- clip_yank_selection(metadata.type, temp_clipboard, str_size, cbd); +- vim_free(temp_clipboard); +- } +- } +- +- /* unlock the global object */ +- if (hMem != NULL) +- GlobalUnlock(hMem); +- #ifdef FEAT_MBYTE +- if (rawh != NULL) +- GlobalUnlock(rawh); +- #endif +- CloseClipboard(); +- #if defined(FEAT_MBYTE) && defined(WIN3264) +- vim_free(to_free); +- #endif +- } +- +- /* +- * Send the current selection to the clipboard. +- */ +- void +- clip_mch_set_selection(VimClipboard *cbd) +- { +- char_u *str = NULL; +- VimClipType_t metadata; +- long_u txtlen; +- HGLOBAL hMemRaw = NULL; +- HGLOBAL hMem = NULL; +- HGLOBAL hMemVim = NULL; +- # if defined(FEAT_MBYTE) && defined(WIN3264) +- HGLOBAL hMemW = NULL; +- # endif +- +- /* If the '*' register isn't already filled in, fill it in now */ +- cbd->owned = TRUE; +- clip_get_selection(cbd); +- cbd->owned = FALSE; +- +- /* Get the text to be put on the clipboard, with CR-LF. */ +- metadata.type = clip_convert_selection(&str, &txtlen, cbd); +- if (metadata.type < 0) +- return; +- metadata.txtlen = (int)txtlen; +- metadata.ucslen = 0; +- metadata.rawlen = 0; +- +- #ifdef FEAT_MBYTE +- /* Always set the raw bytes: 'encoding', NUL and the text. This is used +- * when copy/paste from/to Vim with the same 'encoding', so that illegal +- * bytes can also be copied and no conversion is needed. */ +- { +- LPSTR lpszMemRaw; +- +- metadata.rawlen = (int)(txtlen + STRLEN(p_enc) + 1); +- hMemRaw = (LPSTR)GlobalAlloc(GMEM_MOVEABLE | GMEM_DDESHARE, +- metadata.rawlen + 1); +- lpszMemRaw = (LPSTR)GlobalLock(hMemRaw); +- if (lpszMemRaw != NULL) +- { +- STRCPY(lpszMemRaw, p_enc); +- memcpy(lpszMemRaw + STRLEN(p_enc) + 1, str, txtlen + 1); +- GlobalUnlock(hMemRaw); +- } +- else +- metadata.rawlen = 0; +- } +- #endif +- +- # if defined(FEAT_MBYTE) && defined(WIN3264) +- { +- WCHAR *out; +- int len = metadata.txtlen; +- +- /* Convert the text to UTF-16. This is put on the clipboard as +- * CF_UNICODETEXT. */ +- out = (WCHAR *)enc_to_utf16(str, &len); +- if (out != NULL) +- { +- WCHAR *lpszMemW; +- +- /* Convert the text for CF_TEXT to Active codepage. Otherwise it's +- * p_enc, which has no relation to the Active codepage. */ +- metadata.txtlen = WideCharToMultiByte(GetACP(), 0, out, len, +- NULL, 0, 0, 0); +- vim_free(str); +- str = (char_u *)alloc((unsigned)(metadata.txtlen == 0 ? 1 +- : metadata.txtlen)); +- if (str == NULL) +- { +- vim_free(out); +- return; /* out of memory */ +- } +- WideCharToMultiByte(GetACP(), 0, out, len, +- str, metadata.txtlen, 0, 0); +- +- /* Allocate memory for the UTF-16 text, add one NUL word to +- * terminate the string. */ +- hMemW = (LPSTR)GlobalAlloc(GMEM_MOVEABLE | GMEM_DDESHARE, +- (len + 1) * sizeof(WCHAR)); +- lpszMemW = (WCHAR *)GlobalLock(hMemW); +- if (lpszMemW != NULL) +- { +- memcpy(lpszMemW, out, len * sizeof(WCHAR)); +- lpszMemW[len] = NUL; +- GlobalUnlock(hMemW); +- } +- vim_free(out); +- metadata.ucslen = len; +- } +- } +- # endif +- +- /* Allocate memory for the text, add one NUL byte to terminate the string. +- */ +- hMem = GlobalAlloc(GMEM_MOVEABLE | GMEM_DDESHARE, metadata.txtlen + 1); +- { +- LPSTR lpszMem = (LPSTR)GlobalLock(hMem); +- +- if (lpszMem) +- { +- vim_strncpy(lpszMem, str, metadata.txtlen); +- GlobalUnlock(hMem); +- } +- } +- +- /* Set up metadata: */ +- { +- VimClipType_t *lpszMemVim = NULL; +- +- hMemVim = GlobalAlloc(GMEM_MOVEABLE|GMEM_DDESHARE, +- sizeof(VimClipType_t)); +- lpszMemVim = (VimClipType_t *)GlobalLock(hMemVim); +- memcpy(lpszMemVim, &metadata, sizeof(metadata)); +- GlobalUnlock(hMemVim); +- } +- +- /* +- * Open the clipboard, clear it and put our text on it. +- * Always set our Vim format. Put Unicode and plain text on it. +- * +- * Don't pass GetActiveWindow() as an argument to OpenClipboard() +- * because then we can't paste back into the same window for some +- * reason - webb. +- */ +- if (vim_open_clipboard()) +- { +- if (EmptyClipboard()) +- { +- SetClipboardData(cbd->format, hMemVim); +- hMemVim = 0; +- # if defined(FEAT_MBYTE) && defined(WIN3264) +- if (hMemW != NULL) +- { +- if (SetClipboardData(CF_UNICODETEXT, hMemW) != NULL) +- hMemW = NULL; +- } +- # endif +- /* Always use CF_TEXT. On Win98 Notepad won't obtain the +- * CF_UNICODETEXT text, only CF_TEXT. */ +- SetClipboardData(CF_TEXT, hMem); +- hMem = 0; +- } +- CloseClipboard(); +- } +- +- vim_free(str); +- /* Free any allocations we didn't give to the clipboard: */ +- if (hMemRaw) +- GlobalFree(hMemRaw); +- if (hMem) +- GlobalFree(hMem); +- # if defined(FEAT_MBYTE) && defined(WIN3264) +- if (hMemW) +- GlobalFree(hMemW); +- # endif +- if (hMemVim) +- GlobalFree(hMemVim); +- } +- +- #endif /* FEAT_CLIPBOARD */ +- +- #if defined(FEAT_MBYTE) || defined(PROTO) +- /* +- * Note: the following two functions are only guaranteed to work when using +- * valid MS-Windows codepages or when iconv() is available. +- */ +- +- /* +- * Convert "str" from 'encoding' to UTF-16. +- * Input in "str" with length "*lenp". When "lenp" is NULL, use strlen(). +- * Output is returned as an allocated string. "*lenp" is set to the length of +- * the result. A trailing NUL is always added. +- * Returns NULL when out of memory. +- */ +- short_u * +- enc_to_utf16(char_u *str, int *lenp) +- { +- vimconv_T conv; +- WCHAR *ret; +- char_u *allocbuf = NULL; +- int len_loc; +- int length; +- +- if (lenp == NULL) +- { +- len_loc = (int)STRLEN(str) + 1; +- lenp = &len_loc; +- } +- +- if (enc_codepage > 0) +- { +- /* We can do any CP### -> UTF-16 in one pass, and we can do it +- * without iconv() (convert_* may need iconv). */ +- MultiByteToWideChar_alloc(enc_codepage, 0, str, *lenp, &ret, &length); +- } +- else +- { +- /* Use "latin1" by default, we might be called before we have p_enc +- * set up. Convert to utf-8 first, works better with iconv(). Does +- * nothing if 'encoding' is "utf-8". */ +- conv.vc_type = CONV_NONE; +- if (convert_setup(&conv, p_enc ? p_enc : (char_u *)"latin1", +- (char_u *)"utf-8") == FAIL) +- return NULL; +- if (conv.vc_type != CONV_NONE) +- { +- str = allocbuf = string_convert(&conv, str, lenp); +- if (str == NULL) +- return NULL; +- } +- convert_setup(&conv, NULL, NULL); +- +- length = utf8_to_utf16(str, *lenp, NULL, NULL); +- ret = (WCHAR *)alloc((unsigned)((length + 1) * sizeof(WCHAR))); +- if (ret != NULL) +- { +- utf8_to_utf16(str, *lenp, (short_u *)ret, NULL); +- ret[length] = 0; +- } +- +- vim_free(allocbuf); +- } +- +- *lenp = length; +- return (short_u *)ret; +- } +- +- /* +- * Convert an UTF-16 string to 'encoding'. +- * Input in "str" with length (counted in wide characters) "*lenp". When +- * "lenp" is NULL, use wcslen(). +- * Output is returned as an allocated string. If "*lenp" is not NULL it is +- * set to the length of the result. +- * Returns NULL when out of memory. +- */ +- char_u * +- utf16_to_enc(short_u *str, int *lenp) +- { +- vimconv_T conv; +- char_u *utf8_str = NULL, *enc_str = NULL; +- int len_loc; +- +- if (lenp == NULL) +- { +- len_loc = (int)wcslen(str) + 1; +- lenp = &len_loc; +- } +- +- if (enc_codepage > 0) +- { +- /* We can do any UTF-16 -> CP### in one pass. */ +- int length; +- +- WideCharToMultiByte_alloc(enc_codepage, 0, str, *lenp, +- (LPSTR *)&enc_str, &length, 0, 0); +- *lenp = length; +- return enc_str; +- } +- +- /* Avoid allocating zero bytes, it generates an error message. */ +- utf8_str = alloc(utf16_to_utf8(str, *lenp == 0 ? 1 : *lenp, NULL)); +- if (utf8_str != NULL) +- { +- *lenp = utf16_to_utf8(str, *lenp, utf8_str); +- +- /* We might be called before we have p_enc set up. */ +- conv.vc_type = CONV_NONE; +- convert_setup(&conv, (char_u *)"utf-8", +- p_enc? p_enc: (char_u *)"latin1"); +- if (conv.vc_type == CONV_NONE) +- { +- /* p_enc is utf-8, so we're done. */ +- enc_str = utf8_str; +- } +- else +- { +- enc_str = string_convert(&conv, utf8_str, lenp); +- vim_free(utf8_str); +- } +- +- convert_setup(&conv, NULL, NULL); +- } +- +- return enc_str; +- } +- #endif /* FEAT_MBYTE */ +- +- #if (defined(FEAT_MBYTE) && defined(WIN3264)) || defined(PROTO) +- /* +- * Convert from the active codepage to 'encoding'. +- * Input is "str[str_size]". +- * The result is in allocated memory: "out[outlen]". With terminating NUL. +- */ +- void +- acp_to_enc(str, str_size, out, outlen) +- char_u *str; +- int str_size; +- char_u **out; +- int *outlen; +- +- { +- LPWSTR widestr; +- +- MultiByteToWideChar_alloc(GetACP(), 0, str, str_size, &widestr, outlen); +- if (widestr != NULL) +- { +- ++*outlen; /* Include the 0 after the string */ +- *out = utf16_to_enc((short_u *)widestr, outlen); +- vim_free(widestr); +- } +- } +- #endif +- +- + /* + * Debugging helper: expose the MCH_WRITE_DUMP stuff to other modules + */ +--- 905,910 ---- +*** ../vim-7.3.835/src/os_unix.c 2013-01-30 14:55:35.000000000 +0100 +--- src/os_unix.c 2013-02-26 14:31:32.000000000 +0100 +*************** +*** 61,66 **** +--- 61,71 ---- + # include + # include /* for cygwin_conv_to_posix_path() and/or + * for cygwin_conv_path() */ ++ # ifdef FEAT_CYGWIN_WIN32_CLIPBOARD ++ # define WIN32_LEAN_AND_MEAN ++ # include ++ # include "winclip.pro" ++ # endif + # endif + #endif + +*************** +*** 1223,1228 **** +--- 1228,1236 ---- + #ifdef MACOS_CONVERT + mac_conv_init(); + #endif ++ #ifdef FEAT_CYGWIN_WIN32_CLIPBOARD ++ win_clip_init(); ++ #endif + } + + static void +*** ../vim-7.3.835/src/os_win32.c 2013-02-13 16:49:54.000000000 +0100 +--- src/os_win32.c 2013-02-26 14:18:19.000000000 +0100 +*************** +*** 1851,1866 **** + set_option_value((char_u *)"grepprg", 0, (char_u *)"grep -n", 0); + + #ifdef FEAT_CLIPBOARD +! clip_init(TRUE); +! +! /* +! * Vim's own clipboard format recognises whether the text is char, line, +! * or rectangular block. Only useful for copying between two Vims. +! * "VimClipboard" was used for previous versions, using the first +! * character to specify MCHAR, MLINE or MBLOCK. +! */ +! clip_star.format = RegisterClipboardFormat("VimClipboard2"); +! clip_star.format_raw = RegisterClipboardFormat("VimRawBytes"); + #endif + } + +--- 1851,1857 ---- + set_option_value((char_u *)"grepprg", 0, (char_u *)"grep -n", 0); + + #ifdef FEAT_CLIPBOARD +! win_clip_init(); + #endif + } + +*************** +*** 2345,2360 **** + #endif + + #ifdef FEAT_CLIPBOARD +! clip_init(TRUE); +! +! /* +! * Vim's own clipboard format recognises whether the text is char, line, or +! * rectangular block. Only useful for copying between two Vims. +! * "VimClipboard" was used for previous versions, using the first +! * character to specify MCHAR, MLINE or MBLOCK. +! */ +! clip_star.format = RegisterClipboardFormat("VimClipboard2"); +! clip_star.format_raw = RegisterClipboardFormat("VimRawBytes"); + #endif + + /* This will be NULL on anything but NT 4.0 */ +--- 2336,2342 ---- + #endif + + #ifdef FEAT_CLIPBOARD +! win_clip_init(); + #endif + + /* This will be NULL on anything but NT 4.0 */ +*** ../vim-7.3.835/src/proto.h 2011-05-10 16:41:13.000000000 +0200 +--- src/proto.h 2013-02-26 14:18:19.000000000 +0100 +*************** +*** 47,56 **** +--- 47,58 ---- + typedef int LPBOOL; + # include "os_win16.pro" + # include "os_mswin.pro" ++ # include "winclip.pro" + # endif + # ifdef WIN3264 + # include "os_win32.pro" + # include "os_mswin.pro" ++ # include "winclip.pro" + # if (defined(__GNUC__) && !defined(__MINGW32__)) \ + || (defined(__BORLANDC__) && __BORLANDC__ < 0x502) + extern int _stricoll __ARGS((char *a, char *b)); +*** ../vim-7.3.835/src/proto/os_mswin.pro 2012-11-20 16:56:49.000000000 +0100 +--- src/proto/os_mswin.pro 2013-02-26 14:18:19.000000000 +0100 +*************** +*** 22,38 **** + int can_end_termcap_mode __ARGS((int give_msg)); + int mch_screenmode __ARGS((char_u *arg)); + int mch_libcall __ARGS((char_u *libname, char_u *funcname, char_u *argstring, int argint, char_u **string_result, int *number_result)); +- int utf8_to_utf16 __ARGS((char_u *instr, int inlen, short_u *outstr, int *unconvlenp)); +- int utf16_to_utf8 __ARGS((short_u *instr, int inlen, char_u *outstr)); +- void MultiByteToWideChar_alloc __ARGS((UINT cp, DWORD flags, LPCSTR in, int inlen, LPWSTR *out, int *outlen)); +- void WideCharToMultiByte_alloc __ARGS((UINT cp, DWORD flags, LPCWSTR in, int inlen, LPSTR *out, int *outlen, LPCSTR def, LPBOOL useddef)); +- int clip_mch_own_selection __ARGS((VimClipboard *cbd)); +- void clip_mch_lose_selection __ARGS((VimClipboard *cbd)); +- void clip_mch_request_selection __ARGS((VimClipboard *cbd)); +- void clip_mch_set_selection __ARGS((VimClipboard *cbd)); +- short_u *enc_to_utf16 __ARGS((char_u *str, int *lenp)); +- char_u *utf16_to_enc __ARGS((short_u *str, int *lenp)); +- void acp_to_enc __ARGS((char_u *str, int str_size, char_u **out, int *outlen)); + void DumpPutS __ARGS((const char *psz)); + int mch_get_winpos __ARGS((int *x, int *y)); + void mch_set_winpos __ARGS((int x, int y)); +--- 22,27 ---- +*** ../vim-7.3.835/src/proto/winclip.pro 2013-02-26 14:55:20.000000000 +0100 +--- src/proto/winclip.pro 2013-02-26 14:32:52.000000000 +0100 +*************** +*** 0 **** +--- 1,14 ---- ++ /* winclip.c */ ++ int utf8_to_utf16 __ARGS((char_u *instr, int inlen, short_u *outstr, int *unconvlenp)); ++ int utf16_to_utf8 __ARGS((short_u *instr, int inlen, char_u *outstr)); ++ void MultiByteToWideChar_alloc __ARGS((UINT cp, DWORD flags, LPCSTR in, int inlen, LPWSTR *out, int *outlen)); ++ void WideCharToMultiByte_alloc __ARGS((UINT cp, DWORD flags, LPCWSTR in, int inlen, LPSTR *out, int *outlen, LPCSTR def, LPBOOL useddef)); ++ void win_clip_init __ARGS((void)); ++ int clip_mch_own_selection __ARGS((VimClipboard *cbd)); ++ void clip_mch_lose_selection __ARGS((VimClipboard *cbd)); ++ void clip_mch_request_selection __ARGS((VimClipboard *cbd)); ++ void clip_mch_set_selection __ARGS((VimClipboard *cbd)); ++ short_u *enc_to_utf16 __ARGS((char_u *str, int *lenp)); ++ char_u *utf16_to_enc __ARGS((short_u *str, int *lenp)); ++ void acp_to_enc __ARGS((char_u *str, int str_size, char_u **out, int *outlen)); ++ /* vim: set ft=c : */ +*** ../vim-7.3.835/src/term.c 2013-02-13 15:53:15.000000000 +0100 +--- src/term.c 2013-02-26 14:18:19.000000000 +0100 +*************** +*** 1853,1859 **** +--- 1853,1861 ---- + # ifdef FEAT_GUI + if (!gui.in_use) + # endif ++ # ifndef FEAT_CYGWIN_WIN32_CLIPBOARD + clip_init(FALSE); ++ # endif + # endif + if (use_xterm_like_mouse(term)) + { +*** ../vim-7.3.835/src/vim.h 2013-01-17 17:17:21.000000000 +0100 +--- src/vim.h 2013-02-26 14:18:19.000000000 +0100 +*************** +*** 1927,1933 **** + GdkAtom gtk_sel_atom; /* PRIMARY/CLIPBOARD selection ID */ + # endif + +! # ifdef MSWIN + int_u format; /* Vim's own special clipboard format */ + int_u format_raw; /* Vim's raw text clipboard format */ + # endif +--- 1927,1933 ---- + GdkAtom gtk_sel_atom; /* PRIMARY/CLIPBOARD selection ID */ + # endif + +! # if defined(MSWIN) || defined(FEAT_CYGWIN_WIN32_CLIPBOARD) + int_u format; /* Vim's own special clipboard format */ + int_u format_raw; /* Vim's raw text clipboard format */ + # endif +*** ../vim-7.3.835/src/winclip.c 2013-02-26 14:55:20.000000000 +0100 +--- src/winclip.c 2013-02-26 14:32:42.000000000 +0100 +*************** +*** 0 **** +--- 1,798 ---- ++ /* vi:set ts=8 sts=4 sw=4: ++ * ++ * VIM - Vi IMproved by Bram Moolenaar ++ * ++ * Do ":help uganda" in Vim to read copying and usage conditions. ++ * Do ":help credits" in Vim to see a list of people who contributed. ++ * See README.txt for an overview of the Vim source code. ++ */ ++ ++ /* ++ * winclip.c ++ * ++ * Routines common to both Win16 and Win32 for clipboard handling. ++ * Also used by Cygwin, using os_unix.c. ++ */ ++ ++ #ifdef WIN16 ++ # ifdef __BORLANDC__ ++ # pragma warn -par ++ # pragma warn -ucp ++ # pragma warn -use ++ # pragma warn -aus ++ # endif ++ #endif ++ ++ #include "vimio.h" ++ #include "vim.h" ++ ++ /* ++ * Compile only the clipboard handling features when compiling for cygwin ++ * posix environment. ++ */ ++ #ifdef FEAT_CYGWIN_WIN32_CLIPBOARD ++ # define WIN3264 ++ # define WIN32_LEAN_AND_MEAN ++ # include ++ # include "winclip.pro" ++ #endif ++ ++ /* ++ * When generating prototypes for Win32 on Unix, these lines make the syntax ++ * errors disappear. They do not need to be correct. ++ */ ++ #ifdef PROTO ++ #define WINAPI ++ #define WINBASEAPI ++ typedef int DWORD; ++ typedef int LPBOOL; ++ typedef int LPCSTR; ++ typedef int LPCWSTR; ++ typedef int LPSTR; ++ typedef int LPWSTR; ++ typedef int UINT; ++ #endif ++ ++ #if defined(FEAT_MBYTE) || defined(PROTO) ++ /* ++ * Convert an UTF-8 string to UTF-16. ++ * "instr[inlen]" is the input. "inlen" is in bytes. ++ * When "outstr" is NULL only return the number of UTF-16 words produced. ++ * Otherwise "outstr" must be a buffer of sufficient size. ++ * Returns the number of UTF-16 words produced. ++ */ ++ int ++ utf8_to_utf16(char_u *instr, int inlen, short_u *outstr, int *unconvlenp) ++ { ++ int outlen = 0; ++ char_u *p = instr; ++ int todo = inlen; ++ int l; ++ int ch; ++ ++ while (todo > 0) ++ { ++ /* Only convert if we have a complete sequence. */ ++ l = utf_ptr2len_len(p, todo); ++ if (l > todo) ++ { ++ /* Return length of incomplete sequence. */ ++ if (unconvlenp != NULL) ++ *unconvlenp = todo; ++ break; ++ } ++ ++ ch = utf_ptr2char(p); ++ if (ch >= 0x10000) ++ { ++ /* non-BMP character, encoding with surrogate pairs */ ++ ++outlen; ++ if (outstr != NULL) ++ { ++ *outstr++ = (0xD800 - (0x10000 >> 10)) + (ch >> 10); ++ *outstr++ = 0xDC00 | (ch & 0x3FF); ++ } ++ } ++ else if (outstr != NULL) ++ *outstr++ = ch; ++ ++outlen; ++ p += l; ++ todo -= l; ++ } ++ ++ return outlen; ++ } ++ ++ /* ++ * Convert an UTF-16 string to UTF-8. ++ * The input is "instr[inlen]" with "inlen" in number of UTF-16 words. ++ * When "outstr" is NULL only return the required number of bytes. ++ * Otherwise "outstr" must be a buffer of sufficient size. ++ * Return the number of bytes produced. ++ */ ++ int ++ utf16_to_utf8(short_u *instr, int inlen, char_u *outstr) ++ { ++ int outlen = 0; ++ int todo = inlen; ++ short_u *p = instr; ++ int l; ++ int ch, ch2; ++ ++ while (todo > 0) ++ { ++ ch = *p; ++ if (ch >= 0xD800 && ch <= 0xDBFF && todo > 1) ++ { ++ /* surrogate pairs handling */ ++ ch2 = p[1]; ++ if (ch2 >= 0xDC00 && ch2 <= 0xDFFF) ++ { ++ ch = ((ch - 0xD800) << 10) + (ch2 & 0x3FF) + 0x10000; ++ ++p; ++ --todo; ++ } ++ } ++ if (outstr != NULL) ++ { ++ l = utf_char2bytes(ch, outstr); ++ outstr += l; ++ } ++ else ++ l = utf_char2len(ch); ++ ++p; ++ outlen += l; ++ --todo; ++ } ++ ++ return outlen; ++ } ++ ++ /* ++ * Call MultiByteToWideChar() and allocate memory for the result. ++ * Returns the result in "*out[*outlen]" with an extra zero appended. ++ * "outlen" is in words. ++ */ ++ void ++ MultiByteToWideChar_alloc(UINT cp, DWORD flags, ++ LPCSTR in, int inlen, ++ LPWSTR *out, int *outlen) ++ { ++ *outlen = MultiByteToWideChar(cp, flags, in, inlen, 0, 0); ++ /* Add one one word to avoid a zero-length alloc(). */ ++ *out = (LPWSTR)alloc(sizeof(WCHAR) * (*outlen + 1)); ++ if (*out != NULL) ++ { ++ MultiByteToWideChar(cp, flags, in, inlen, *out, *outlen); ++ (*out)[*outlen] = 0; ++ } ++ } ++ ++ /* ++ * Call WideCharToMultiByte() and allocate memory for the result. ++ * Returns the result in "*out[*outlen]" with an extra NUL appended. ++ */ ++ void ++ WideCharToMultiByte_alloc(UINT cp, DWORD flags, ++ LPCWSTR in, int inlen, ++ LPSTR *out, int *outlen, ++ LPCSTR def, LPBOOL useddef) ++ { ++ *outlen = WideCharToMultiByte(cp, flags, in, inlen, NULL, 0, def, useddef); ++ /* Add one one byte to avoid a zero-length alloc(). */ ++ *out = alloc((unsigned)*outlen + 1); ++ if (*out != NULL) ++ { ++ WideCharToMultiByte(cp, flags, in, inlen, *out, *outlen, def, useddef); ++ (*out)[*outlen] = 0; ++ } ++ } ++ ++ #endif /* FEAT_MBYTE */ ++ ++ #ifdef FEAT_CLIPBOARD ++ /* ++ * Clipboard stuff, for cutting and pasting text to other windows. ++ */ ++ ++ void ++ win_clip_init(void) ++ { ++ clip_init(TRUE); ++ ++ /* ++ * Vim's own clipboard format recognises whether the text is char, line, ++ * or rectangular block. Only useful for copying between two Vims. ++ * "VimClipboard" was used for previous versions, using the first ++ * character to specify MCHAR, MLINE or MBLOCK. ++ */ ++ clip_star.format = RegisterClipboardFormat("VimClipboard2"); ++ clip_star.format_raw = RegisterClipboardFormat("VimRawBytes"); ++ } ++ ++ /* Type used for the clipboard type of Vim's data. */ ++ typedef struct ++ { ++ int type; /* MCHAR, MBLOCK or MLINE */ ++ int txtlen; /* length of CF_TEXT in bytes */ ++ int ucslen; /* length of CF_UNICODETEXT in words */ ++ int rawlen; /* length of clip_star.format_raw, including encoding, ++ excluding terminating NUL */ ++ } VimClipType_t; ++ ++ /* ++ * Make vim the owner of the current selection. Return OK upon success. ++ */ ++ /*ARGSUSED*/ ++ int ++ clip_mch_own_selection(VimClipboard *cbd) ++ { ++ /* ++ * Never actually own the clipboard. If another application sets the ++ * clipboard, we don't want to think that we still own it. ++ */ ++ return FAIL; ++ } ++ ++ /* ++ * Make vim NOT the owner of the current selection. ++ */ ++ /*ARGSUSED*/ ++ void ++ clip_mch_lose_selection(VimClipboard *cbd) ++ { ++ /* Nothing needs to be done here */ ++ } ++ ++ /* ++ * Copy "str[*size]" into allocated memory, changing CR-NL to NL. ++ * Return the allocated result and the size in "*size". ++ * Returns NULL when out of memory. ++ */ ++ static char_u * ++ crnl_to_nl(const char_u *str, int *size) ++ { ++ int pos = 0; ++ int str_len = *size; ++ char_u *ret; ++ char_u *retp; ++ ++ /* Avoid allocating zero bytes, it generates an error message. */ ++ ret = lalloc((long_u)(str_len == 0 ? 1 : str_len), TRUE); ++ if (ret != NULL) ++ { ++ retp = ret; ++ for (pos = 0; pos < str_len; ++pos) ++ { ++ if (str[pos] == '\r' && str[pos + 1] == '\n') ++ { ++ ++pos; ++ --(*size); ++ } ++ *retp++ = str[pos]; ++ } ++ } ++ ++ return ret; ++ } ++ ++ /* ++ * Wait for another process to Close the Clipboard. ++ * Returns TRUE for success. ++ */ ++ static int ++ vim_open_clipboard(void) ++ { ++ int delay = 10; ++ ++ while (!OpenClipboard(NULL)) ++ { ++ if (delay > 500) ++ return FALSE; /* waited too long, give up */ ++ Sleep(delay); ++ delay *= 2; /* wait for 10, 20, 40, 80, etc. msec */ ++ } ++ return TRUE; ++ } ++ ++ /* ++ * Get the current selection and put it in the clipboard register. ++ * ++ * NOTE: Must use GlobalLock/Unlock here to ensure Win32s compatibility. ++ * On NT/W95 the clipboard data is a fixed global memory object and ++ * so its handle = its pointer. ++ * On Win32s, however, co-operation with the Win16 system means that ++ * the clipboard data is moveable and its handle is not a pointer at all, ++ * so we can't just cast the return value of GetClipboardData to (char_u*). ++ * ++ */ ++ void ++ clip_mch_request_selection(VimClipboard *cbd) ++ { ++ VimClipType_t metadata = { -1, -1, -1, -1 }; ++ HGLOBAL hMem = NULL; ++ char_u *str = NULL; ++ #if defined(FEAT_MBYTE) && defined(WIN3264) ++ char_u *to_free = NULL; ++ #endif ++ #ifdef FEAT_MBYTE ++ HGLOBAL rawh = NULL; ++ #endif ++ int str_size = 0; ++ int maxlen; ++ size_t n; ++ ++ /* ++ * Don't pass GetActiveWindow() as an argument to OpenClipboard() because ++ * then we can't paste back into the same window for some reason - webb. ++ */ ++ if (!vim_open_clipboard()) ++ return; ++ ++ /* Check for vim's own clipboard format first. This only gets the type of ++ * the data, still need to use CF_UNICODETEXT or CF_TEXT for the text. */ ++ if (IsClipboardFormatAvailable(cbd->format)) ++ { ++ VimClipType_t *meta_p; ++ HGLOBAL meta_h; ++ ++ /* We have metadata on the clipboard; try to get it. */ ++ if ((meta_h = GetClipboardData(cbd->format)) != NULL ++ && (meta_p = (VimClipType_t *)GlobalLock(meta_h)) != NULL) ++ { ++ /* The size of "VimClipType_t" changed, "rawlen" was added later. ++ * Only copy what is available for backwards compatibility. */ ++ n = sizeof(VimClipType_t); ++ if (GlobalSize(meta_h) < n) ++ n = GlobalSize(meta_h); ++ memcpy(&metadata, meta_p, n); ++ GlobalUnlock(meta_h); ++ } ++ } ++ ++ #ifdef FEAT_MBYTE ++ /* Check for Vim's raw clipboard format first. This is used without ++ * conversion, but only if 'encoding' matches. */ ++ if (IsClipboardFormatAvailable(cbd->format_raw) ++ && metadata.rawlen > (int)STRLEN(p_enc)) ++ { ++ /* We have raw data on the clipboard; try to get it. */ ++ if ((rawh = GetClipboardData(cbd->format_raw)) != NULL) ++ { ++ char_u *rawp; ++ ++ rawp = (char_u *)GlobalLock(rawh); ++ if (rawp != NULL && STRCMP(p_enc, rawp) == 0) ++ { ++ n = STRLEN(p_enc) + 1; ++ str = rawp + n; ++ str_size = (int)(metadata.rawlen - n); ++ } ++ else ++ { ++ GlobalUnlock(rawh); ++ rawh = NULL; ++ } ++ } ++ } ++ if (str == NULL) ++ { ++ #endif ++ ++ #if defined(FEAT_MBYTE) && defined(WIN3264) ++ /* Try to get the clipboard in Unicode if it's not an empty string. */ ++ if (IsClipboardFormatAvailable(CF_UNICODETEXT) && metadata.ucslen != 0) ++ { ++ HGLOBAL hMemW; ++ ++ if ((hMemW = GetClipboardData(CF_UNICODETEXT)) != NULL) ++ { ++ WCHAR *hMemWstr = (WCHAR *)GlobalLock(hMemW); ++ ++ /* Use the length of our metadata if possible, but limit it to the ++ * GlobalSize() for safety. */ ++ maxlen = (int)(GlobalSize(hMemW) / sizeof(WCHAR)); ++ if (metadata.ucslen >= 0) ++ { ++ if (metadata.ucslen > maxlen) ++ str_size = maxlen; ++ else ++ str_size = metadata.ucslen; ++ } ++ else ++ { ++ for (str_size = 0; str_size < maxlen; ++str_size) ++ if (hMemWstr[str_size] == NUL) ++ break; ++ } ++ to_free = str = utf16_to_enc((short_u *)hMemWstr, &str_size); ++ GlobalUnlock(hMemW); ++ } ++ } ++ else ++ #endif ++ /* Get the clipboard in the Active codepage. */ ++ if (IsClipboardFormatAvailable(CF_TEXT)) ++ { ++ if ((hMem = GetClipboardData(CF_TEXT)) != NULL) ++ { ++ str = (char_u *)GlobalLock(hMem); ++ ++ /* The length is either what our metadata says or the strlen(). ++ * But limit it to the GlobalSize() for safety. */ ++ maxlen = (int)GlobalSize(hMem); ++ if (metadata.txtlen >= 0) ++ { ++ if (metadata.txtlen > maxlen) ++ str_size = maxlen; ++ else ++ str_size = metadata.txtlen; ++ } ++ else ++ { ++ for (str_size = 0; str_size < maxlen; ++str_size) ++ if (str[str_size] == NUL) ++ break; ++ } ++ ++ # if defined(FEAT_MBYTE) && defined(WIN3264) ++ /* The text is in the active codepage. Convert to 'encoding', ++ * going through UTF-16. */ ++ acp_to_enc(str, str_size, &to_free, &maxlen); ++ if (to_free != NULL) ++ { ++ str_size = maxlen; ++ str = to_free; ++ } ++ # endif ++ } ++ } ++ #ifdef FEAT_MBYTE ++ } ++ #endif ++ ++ if (str != NULL && *str != NUL) ++ { ++ char_u *temp_clipboard; ++ ++ /* If the type is not known detect it. */ ++ if (metadata.type == -1) ++ metadata.type = MAUTO; ++ ++ /* Translate into . */ ++ temp_clipboard = crnl_to_nl(str, &str_size); ++ if (temp_clipboard != NULL) ++ { ++ clip_yank_selection(metadata.type, temp_clipboard, str_size, cbd); ++ vim_free(temp_clipboard); ++ } ++ } ++ ++ /* unlock the global object */ ++ if (hMem != NULL) ++ GlobalUnlock(hMem); ++ #ifdef FEAT_MBYTE ++ if (rawh != NULL) ++ GlobalUnlock(rawh); ++ #endif ++ CloseClipboard(); ++ #if defined(FEAT_MBYTE) && defined(WIN3264) ++ vim_free(to_free); ++ #endif ++ } ++ ++ /* ++ * Send the current selection to the clipboard. ++ */ ++ void ++ clip_mch_set_selection(VimClipboard *cbd) ++ { ++ char_u *str = NULL; ++ VimClipType_t metadata; ++ long_u txtlen; ++ HGLOBAL hMemRaw = NULL; ++ HGLOBAL hMem = NULL; ++ HGLOBAL hMemVim = NULL; ++ # if defined(FEAT_MBYTE) && defined(WIN3264) ++ HGLOBAL hMemW = NULL; ++ # endif ++ ++ /* If the '*' register isn't already filled in, fill it in now */ ++ cbd->owned = TRUE; ++ clip_get_selection(cbd); ++ cbd->owned = FALSE; ++ ++ /* Get the text to be put on the clipboard, with CR-LF. */ ++ metadata.type = clip_convert_selection(&str, &txtlen, cbd); ++ if (metadata.type < 0) ++ return; ++ metadata.txtlen = (int)txtlen; ++ metadata.ucslen = 0; ++ metadata.rawlen = 0; ++ ++ #ifdef FEAT_MBYTE ++ /* Always set the raw bytes: 'encoding', NUL and the text. This is used ++ * when copy/paste from/to Vim with the same 'encoding', so that illegal ++ * bytes can also be copied and no conversion is needed. */ ++ { ++ LPSTR lpszMemRaw; ++ ++ metadata.rawlen = (int)(txtlen + STRLEN(p_enc) + 1); ++ hMemRaw = (LPSTR)GlobalAlloc(GMEM_MOVEABLE | GMEM_DDESHARE, ++ metadata.rawlen + 1); ++ lpszMemRaw = (LPSTR)GlobalLock(hMemRaw); ++ if (lpszMemRaw != NULL) ++ { ++ STRCPY(lpszMemRaw, p_enc); ++ memcpy(lpszMemRaw + STRLEN(p_enc) + 1, str, txtlen + 1); ++ GlobalUnlock(hMemRaw); ++ } ++ else ++ metadata.rawlen = 0; ++ } ++ #endif ++ ++ # if defined(FEAT_MBYTE) && defined(WIN3264) ++ { ++ WCHAR *out; ++ int len = metadata.txtlen; ++ ++ /* Convert the text to UTF-16. This is put on the clipboard as ++ * CF_UNICODETEXT. */ ++ out = (WCHAR *)enc_to_utf16(str, &len); ++ if (out != NULL) ++ { ++ WCHAR *lpszMemW; ++ ++ /* Convert the text for CF_TEXT to Active codepage. Otherwise it's ++ * p_enc, which has no relation to the Active codepage. */ ++ metadata.txtlen = WideCharToMultiByte(GetACP(), 0, out, len, ++ NULL, 0, 0, 0); ++ vim_free(str); ++ str = (char_u *)alloc((unsigned)(metadata.txtlen == 0 ? 1 ++ : metadata.txtlen)); ++ if (str == NULL) ++ { ++ vim_free(out); ++ return; /* out of memory */ ++ } ++ WideCharToMultiByte(GetACP(), 0, out, len, ++ str, metadata.txtlen, 0, 0); ++ ++ /* Allocate memory for the UTF-16 text, add one NUL word to ++ * terminate the string. */ ++ hMemW = (LPSTR)GlobalAlloc(GMEM_MOVEABLE | GMEM_DDESHARE, ++ (len + 1) * sizeof(WCHAR)); ++ lpszMemW = (WCHAR *)GlobalLock(hMemW); ++ if (lpszMemW != NULL) ++ { ++ memcpy(lpszMemW, out, len * sizeof(WCHAR)); ++ lpszMemW[len] = NUL; ++ GlobalUnlock(hMemW); ++ } ++ vim_free(out); ++ metadata.ucslen = len; ++ } ++ } ++ # endif ++ ++ /* Allocate memory for the text, add one NUL byte to terminate the string. ++ */ ++ hMem = GlobalAlloc(GMEM_MOVEABLE | GMEM_DDESHARE, metadata.txtlen + 1); ++ { ++ LPSTR lpszMem = (LPSTR)GlobalLock(hMem); ++ ++ if (lpszMem) ++ { ++ vim_strncpy(lpszMem, str, metadata.txtlen); ++ GlobalUnlock(hMem); ++ } ++ } ++ ++ /* Set up metadata: */ ++ { ++ VimClipType_t *lpszMemVim = NULL; ++ ++ hMemVim = GlobalAlloc(GMEM_MOVEABLE|GMEM_DDESHARE, ++ sizeof(VimClipType_t)); ++ lpszMemVim = (VimClipType_t *)GlobalLock(hMemVim); ++ memcpy(lpszMemVim, &metadata, sizeof(metadata)); ++ GlobalUnlock(hMemVim); ++ } ++ ++ /* ++ * Open the clipboard, clear it and put our text on it. ++ * Always set our Vim format. Put Unicode and plain text on it. ++ * ++ * Don't pass GetActiveWindow() as an argument to OpenClipboard() ++ * because then we can't paste back into the same window for some ++ * reason - webb. ++ */ ++ if (vim_open_clipboard()) ++ { ++ if (EmptyClipboard()) ++ { ++ SetClipboardData(cbd->format, hMemVim); ++ hMemVim = 0; ++ # if defined(FEAT_MBYTE) && defined(WIN3264) ++ if (hMemW != NULL) ++ { ++ if (SetClipboardData(CF_UNICODETEXT, hMemW) != NULL) ++ hMemW = NULL; ++ } ++ # endif ++ /* Always use CF_TEXT. On Win98 Notepad won't obtain the ++ * CF_UNICODETEXT text, only CF_TEXT. */ ++ SetClipboardData(CF_TEXT, hMem); ++ hMem = 0; ++ } ++ CloseClipboard(); ++ } ++ ++ vim_free(str); ++ /* Free any allocations we didn't give to the clipboard: */ ++ if (hMemRaw) ++ GlobalFree(hMemRaw); ++ if (hMem) ++ GlobalFree(hMem); ++ # if defined(FEAT_MBYTE) && defined(WIN3264) ++ if (hMemW) ++ GlobalFree(hMemW); ++ # endif ++ if (hMemVim) ++ GlobalFree(hMemVim); ++ } ++ ++ #endif /* FEAT_CLIPBOARD */ ++ ++ #if defined(FEAT_MBYTE) || defined(PROTO) ++ /* ++ * Note: the following two functions are only guaranteed to work when using ++ * valid MS-Windows codepages or when iconv() is available. ++ */ ++ ++ /* ++ * Convert "str" from 'encoding' to UTF-16. ++ * Input in "str" with length "*lenp". When "lenp" is NULL, use strlen(). ++ * Output is returned as an allocated string. "*lenp" is set to the length of ++ * the result. A trailing NUL is always added. ++ * Returns NULL when out of memory. ++ */ ++ short_u * ++ enc_to_utf16(char_u *str, int *lenp) ++ { ++ vimconv_T conv; ++ WCHAR *ret; ++ char_u *allocbuf = NULL; ++ int len_loc; ++ int length; ++ ++ if (lenp == NULL) ++ { ++ len_loc = (int)STRLEN(str) + 1; ++ lenp = &len_loc; ++ } ++ ++ if (enc_codepage > 0) ++ { ++ /* We can do any CP### -> UTF-16 in one pass, and we can do it ++ * without iconv() (convert_* may need iconv). */ ++ MultiByteToWideChar_alloc(enc_codepage, 0, str, *lenp, &ret, &length); ++ } ++ else ++ { ++ /* Use "latin1" by default, we might be called before we have p_enc ++ * set up. Convert to utf-8 first, works better with iconv(). Does ++ * nothing if 'encoding' is "utf-8". */ ++ conv.vc_type = CONV_NONE; ++ if (convert_setup(&conv, p_enc ? p_enc : (char_u *)"latin1", ++ (char_u *)"utf-8") == FAIL) ++ return NULL; ++ if (conv.vc_type != CONV_NONE) ++ { ++ str = allocbuf = string_convert(&conv, str, lenp); ++ if (str == NULL) ++ return NULL; ++ } ++ convert_setup(&conv, NULL, NULL); ++ ++ length = utf8_to_utf16(str, *lenp, NULL, NULL); ++ ret = (WCHAR *)alloc((unsigned)((length + 1) * sizeof(WCHAR))); ++ if (ret != NULL) ++ { ++ utf8_to_utf16(str, *lenp, (short_u *)ret, NULL); ++ ret[length] = 0; ++ } ++ ++ vim_free(allocbuf); ++ } ++ ++ *lenp = length; ++ return (short_u *)ret; ++ } ++ ++ /* ++ * Convert an UTF-16 string to 'encoding'. ++ * Input in "str" with length (counted in wide characters) "*lenp". When ++ * "lenp" is NULL, use wcslen(). ++ * Output is returned as an allocated string. If "*lenp" is not NULL it is ++ * set to the length of the result. ++ * Returns NULL when out of memory. ++ */ ++ char_u * ++ utf16_to_enc(short_u *str, int *lenp) ++ { ++ vimconv_T conv; ++ char_u *utf8_str = NULL, *enc_str = NULL; ++ int len_loc; ++ ++ if (lenp == NULL) ++ { ++ len_loc = (int)wcslen(str) + 1; ++ lenp = &len_loc; ++ } ++ ++ if (enc_codepage > 0) ++ { ++ /* We can do any UTF-16 -> CP### in one pass. */ ++ int length; ++ ++ WideCharToMultiByte_alloc(enc_codepage, 0, str, *lenp, ++ (LPSTR *)&enc_str, &length, 0, 0); ++ *lenp = length; ++ return enc_str; ++ } ++ ++ /* Avoid allocating zero bytes, it generates an error message. */ ++ utf8_str = alloc(utf16_to_utf8(str, *lenp == 0 ? 1 : *lenp, NULL)); ++ if (utf8_str != NULL) ++ { ++ *lenp = utf16_to_utf8(str, *lenp, utf8_str); ++ ++ /* We might be called before we have p_enc set up. */ ++ conv.vc_type = CONV_NONE; ++ convert_setup(&conv, (char_u *)"utf-8", ++ p_enc? p_enc: (char_u *)"latin1"); ++ if (conv.vc_type == CONV_NONE) ++ { ++ /* p_enc is utf-8, so we're done. */ ++ enc_str = utf8_str; ++ } ++ else ++ { ++ enc_str = string_convert(&conv, utf8_str, lenp); ++ vim_free(utf8_str); ++ } ++ ++ convert_setup(&conv, NULL, NULL); ++ } ++ ++ return enc_str; ++ } ++ #endif /* FEAT_MBYTE */ ++ ++ #if (defined(FEAT_MBYTE) && defined(WIN3264)) || defined(PROTO) ++ /* ++ * Convert from the active codepage to 'encoding'. ++ * Input is "str[str_size]". ++ * The result is in allocated memory: "out[outlen]". With terminating NUL. ++ */ ++ void ++ acp_to_enc(str, str_size, out, outlen) ++ char_u *str; ++ int str_size; ++ char_u **out; ++ int *outlen; ++ ++ { ++ LPWSTR widestr; ++ ++ MultiByteToWideChar_alloc(GetACP(), 0, str, str_size, &widestr, outlen); ++ if (widestr != NULL) ++ { ++ ++*outlen; /* Include the 0 after the string */ ++ *out = utf16_to_enc((short_u *)widestr, outlen); ++ vim_free(widestr); ++ } ++ } ++ #endif +*** ../vim-7.3.835/src/version.c 2013-02-26 14:14:01.000000000 +0100 +--- src/version.c 2013-02-26 14:43:36.000000000 +0100 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 836, + /**/ + +-- +Engineers understand that their appearance only bothers other people and +therefore it is not worth optimizing. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.837 b/7.3.837 new file mode 100644 index 0000000..7e7ed41 --- /dev/null +++ b/7.3.837 @@ -0,0 +1,84 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.837 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.837 (after 7.3.826) +Problem: Empty lines in :version output when 'columns' is 320. +Solution: Simplify the logic of making columns. (Nazri Ramliy, Roland + Eggner) +Files: src/version.c + + +*** ../vim-7.3.836/src/version.c 2013-02-26 14:56:24.000000000 +0100 +--- src/version.c 2013-02-26 15:10:56.000000000 +0100 +*************** +*** 2496,2509 **** + return; + } + +- ncol = (int) Columns / width; + /* The rightmost column doesn't need a separator. + * Sacrifice it to fit in one more column if possible. */ +! if (Columns % width == width - 1) +! ncol++; +! + nrow = nfeat / ncol + (nfeat % ncol ? 1 : 0); + + for (i = 0; !got_int && i < nrow * ncol; ++i) + { + int idx = (i / ncol) + (i % ncol) * nrow; +--- 2498,2509 ---- + return; + } + + /* The rightmost column doesn't need a separator. + * Sacrifice it to fit in one more column if possible. */ +! ncol = (int) (Columns + 1) / width; + nrow = nfeat / ncol + (nfeat % ncol ? 1 : 0); + ++ /* i counts columns then rows. idx counts rows then columns. */ + for (i = 0; !got_int && i < nrow * ncol; ++i) + { + int idx = (i / ncol) + (i % ncol) * nrow; +*************** +*** 2525,2531 **** + } + } + else +! msg_putchar('\n'); + } + } + +--- 2525,2534 ---- + } + } + else +! { +! if (msg_col > 0) +! msg_putchar('\n'); +! } + } + } + +*** ../vim-7.3.836/src/version.c 2013-02-26 14:56:24.000000000 +0100 +--- src/version.c 2013-02-26 15:10:56.000000000 +0100 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 837, + /**/ + +-- +Imagine a world without hypothetical situations. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.838 b/7.3.838 new file mode 100644 index 0000000..7ecfc00 --- /dev/null +++ b/7.3.838 @@ -0,0 +1,364 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.838 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.838 (after 7.3.830) +Problem: Insufficient testing for mksession. +Solution: Add tests. (mostly by Roland Eggner) +Files: src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, + src/testdir/Make_vms.mms, src/testdir/Makefile, + src/testdir/test92.in, src/testdir/test92.ok, + src/testdir/test93.in, src/testdir/test93.ok, + src/ex_docmd.c + + +*** ../vim-7.3.837/src/testdir/Make_amiga.mak 2013-02-20 21:11:14.000000000 +0100 +--- src/testdir/Make_amiga.mak 2013-02-26 15:30:10.000000000 +0100 +*************** +*** 32,38 **** + test71.out test72.out test73.out test74.out test75.out \ + test76.out test77.out test78.out test79.out test80.out \ + test81.out test82.out test83.out test84.out test88.out \ +! test89.out test90.out test91.out + + .SUFFIXES: .in .out + +--- 32,38 ---- + test71.out test72.out test73.out test74.out test75.out \ + test76.out test77.out test78.out test79.out test80.out \ + test81.out test82.out test83.out test84.out test88.out \ +! test89.out test90.out test91.out test92.out test93.out + + .SUFFIXES: .in .out + +*************** +*** 140,142 **** +--- 140,144 ---- + test89.out: test89.in + test90.out: test90.in + test91.out: test91.in ++ test92.out: test92.in ++ test93.out: test93.in +*** ../vim-7.3.837/src/testdir/Make_dos.mak 2013-02-20 21:11:14.000000000 +0100 +--- src/testdir/Make_dos.mak 2013-02-26 15:30:10.000000000 +0100 +*************** +*** 31,37 **** + test74.out test75.out test76.out test77.out test78.out \ + test79.out test80.out test81.out test82.out test83.out \ + test84.out test85.out test86.out test87.out test88.out \ +! test89.out test90.out test91.out + + SCRIPTS32 = test50.out test70.out + +--- 31,37 ---- + test74.out test75.out test76.out test77.out test78.out \ + test79.out test80.out test81.out test82.out test83.out \ + test84.out test85.out test86.out test87.out test88.out \ +! test89.out test90.out test91.out test92.out test93.out + + SCRIPTS32 = test50.out test70.out + +*** ../vim-7.3.837/src/testdir/Make_ming.mak 2013-02-20 21:11:14.000000000 +0100 +--- src/testdir/Make_ming.mak 2013-02-26 15:30:10.000000000 +0100 +*************** +*** 51,57 **** + test74.out test75.out test76.out test77.out test78.out \ + test79.out test80.out test81.out test82.out test83.out \ + test84.out test85.out test86.out test87.out test88.out \ +! test89.out test90.out test91.out + + SCRIPTS32 = test50.out test70.out + +--- 51,57 ---- + test74.out test75.out test76.out test77.out test78.out \ + test79.out test80.out test81.out test82.out test83.out \ + test84.out test85.out test86.out test87.out test88.out \ +! test89.out test90.out test91.out test92.out test93.out + + SCRIPTS32 = test50.out test70.out + +*** ../vim-7.3.837/src/testdir/Make_os2.mak 2013-02-20 21:11:14.000000000 +0100 +--- src/testdir/Make_os2.mak 2013-02-26 15:30:10.000000000 +0100 +*************** +*** 32,38 **** + test71.out test72.out test73.out test74.out test75.out \ + test76.out test77.out test78.out test79.out test80.out \ + test81.out test82.out test83.out test84.out test88.out \ +! test89.out test90.out test91.out + + .SUFFIXES: .in .out + +--- 32,38 ---- + test71.out test72.out test73.out test74.out test75.out \ + test76.out test77.out test78.out test79.out test80.out \ + test81.out test82.out test83.out test84.out test88.out \ +! test89.out test90.out test91.out test92.out test93.out + + .SUFFIXES: .in .out + +*** ../vim-7.3.837/src/testdir/Make_vms.mms 2013-02-20 21:11:14.000000000 +0100 +--- src/testdir/Make_vms.mms 2013-02-26 15:30:10.000000000 +0100 +*************** +*** 4,10 **** + # Authors: Zoltan Arpadffy, + # Sandor Kopanyi, + # +! # Last change: 2013 Feb 20 + # + # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. + # Edit the lines in the Configuration section below to select. +--- 4,10 ---- + # Authors: Zoltan Arpadffy, + # Sandor Kopanyi, + # +! # Last change: 2013-02-21 + # + # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. + # Edit the lines in the Configuration section below to select. +*************** +*** 77,83 **** + test71.out test72.out test74.out test75.out test76.out \ + test77.out test78.out test79.out test80.out test81.out \ + test82.out test83.out test84.out test88.out test89.out \ +! test90.out test91.out + + # Known problems: + # Test 30: a problem around mac format - unknown reason +--- 77,83 ---- + test71.out test72.out test74.out test75.out test76.out \ + test77.out test78.out test79.out test80.out test81.out \ + test82.out test83.out test84.out test88.out test89.out \ +! test90.out test91.out test92.out test93.out + + # Known problems: + # Test 30: a problem around mac format - unknown reason +*** ../vim-7.3.837/src/testdir/Makefile 2013-02-20 21:11:14.000000000 +0100 +--- src/testdir/Makefile 2013-02-26 15:30:10.000000000 +0100 +*************** +*** 28,34 **** + test74.out test75.out test76.out test77.out test78.out \ + test79.out test80.out test81.out test82.out test83.out \ + test84.out test85.out test86.out test87.out test88.out \ +! test89.out test90.out test91.out + + SCRIPTS_GUI = test16.out + +--- 28,34 ---- + test74.out test75.out test76.out test77.out test78.out \ + test79.out test80.out test81.out test82.out test83.out \ + test84.out test85.out test86.out test87.out test88.out \ +! test89.out test90.out test91.out test92.out test93.out + + SCRIPTS_GUI = test16.out + +*** ../vim-7.3.837/src/testdir/test92.in 2013-02-26 17:20:44.000000000 +0100 +--- src/testdir/test92.in 2013-02-26 16:27:55.000000000 +0100 +*************** +*** 0 **** +--- 1,48 ---- ++ vim: set ft=vim fenc=utf-8: ++ ++ Tests if :mksession saves cursor columns correctly in presence of tab and ++ multibyte characters when fileencoding=utf-8. ++ ++ STARTTEST ++ :so mbyte.vim ++ :if !has('mksession') ++ : e! test.ok ++ : wq! test.out ++ :endif ++ :set sessionoptions=buffers splitbelow fileencoding=utf-8 ++ /^start: ++ :vsplit ++ j16|:split ++ j16|:split ++ j16|:split ++ j8|:split ++ j8|:split ++ j16|:split ++ j16|:split ++ j16|:wincmd l ++ /^start: ++ :set nowrap ++ j16|3zl:split ++ j016|3zl:split ++ j016|3zl:split ++ j08|3zl:split ++ j08|3zl:split ++ j016|3zl:split ++ j016|3zl:split ++ j016|3zl:split ++ :mksession! test.out ++ :new test.out ++ :v/\(^ *normal! 0\|^ *exe 'normal!\)/d ++ :w ++ :qa! ++ ENDTEST ++ ++ start: ++ no multibyte chAracter ++ one leaDing tab ++ four leadinG spaces ++ two consecutive tabs ++ two tabs in one line ++ one … multibyteCharacter ++ a “b” two multiByte characters ++ “c”1€ three mulTibyte characters +*** ../vim-7.3.837/src/testdir/test92.ok 2013-02-26 17:20:44.000000000 +0100 +--- src/testdir/test92.ok 2013-02-26 17:13:48.000000000 +0100 +*************** +*** 0 **** +--- 1,26 ---- ++ normal! 016| ++ normal! 016| ++ normal! 016| ++ normal! 08| ++ normal! 08| ++ normal! 016| ++ normal! 016| ++ normal! 016| ++ exe 'normal! ' . s:c . '|zs' . 16 . '|' ++ normal! 016| ++ exe 'normal! ' . s:c . '|zs' . 16 . '|' ++ normal! 016| ++ exe 'normal! ' . s:c . '|zs' . 16 . '|' ++ normal! 016| ++ exe 'normal! ' . s:c . '|zs' . 8 . '|' ++ normal! 08| ++ exe 'normal! ' . s:c . '|zs' . 8 . '|' ++ normal! 08| ++ exe 'normal! ' . s:c . '|zs' . 16 . '|' ++ normal! 016| ++ exe 'normal! ' . s:c . '|zs' . 16 . '|' ++ normal! 016| ++ exe 'normal! ' . s:c . '|zs' . 16 . '|' ++ normal! 016| ++ exe 'normal! ' . s:c . '|zs' . 16 . '|' ++ normal! 016| +*** ../vim-7.3.837/src/testdir/test93.in 2013-02-26 17:20:44.000000000 +0100 +--- src/testdir/test93.in 2013-02-26 17:13:01.000000000 +0100 +*************** +*** 0 **** +--- 1,48 ---- ++ vim: set ft=vim fenc=latin1: ++ ++ Tests if :mksession saves cursor columns correctly in presence of tab and ++ multibyte characters when fileencoding=latin1. ++ ++ STARTTEST ++ :so mbyte.vim ++ :if !has('mksession') ++ : e! test.ok ++ : wq! test.out ++ :endif ++ :set sessionoptions=buffers splitbelow fileencoding=latin1 ++ /^start: ++ :vsplit ++ j16|:split ++ j16|:split ++ j16|:split ++ j8|:split ++ j8|:split ++ j16|:split ++ j16|:split ++ j16|:wincmd l ++ /^start: ++ :set nowrap ++ j16|3zl:split ++ j016|3zl:split ++ j016|3zl:split ++ j08|3zl:split ++ j08|3zl:split ++ j016|3zl:split ++ j016|3zl:split ++ j016|3zl:split ++ :mksession! test.out ++ :new test.out ++ :v/\(^ *normal! 0\|^ *exe 'normal!\)/d ++ :w ++ :qa! ++ ENDTEST ++ ++ start: ++ no multibyte chAracter ++ one leaDing tab ++ four leadinG spaces ++ two consecutive tabs ++ two tabs in one line ++ one ä multibyteCharacter ++ aä Ä two multiByte characters ++ Aäöü three mulTibyte characters +*** ../vim-7.3.837/src/testdir/test93.ok 2013-02-26 17:20:44.000000000 +0100 +--- src/testdir/test93.ok 2013-02-26 17:14:02.000000000 +0100 +*************** +*** 0 **** +--- 1,26 ---- ++ normal! 016| ++ normal! 016| ++ normal! 016| ++ normal! 08| ++ normal! 08| ++ normal! 016| ++ normal! 016| ++ normal! 016| ++ exe 'normal! ' . s:c . '|zs' . 16 . '|' ++ normal! 016| ++ exe 'normal! ' . s:c . '|zs' . 16 . '|' ++ normal! 016| ++ exe 'normal! ' . s:c . '|zs' . 16 . '|' ++ normal! 016| ++ exe 'normal! ' . s:c . '|zs' . 8 . '|' ++ normal! 08| ++ exe 'normal! ' . s:c . '|zs' . 8 . '|' ++ normal! 08| ++ exe 'normal! ' . s:c . '|zs' . 16 . '|' ++ normal! 016| ++ exe 'normal! ' . s:c . '|zs' . 16 . '|' ++ normal! 016| ++ exe 'normal! ' . s:c . '|zs' . 16 . '|' ++ normal! 016| ++ exe 'normal! ' . s:c . '|zs' . 16 . '|' ++ normal! 016| +*** ../vim-7.3.837/src/ex_docmd.c 2013-02-20 19:26:24.000000000 +0100 +--- src/ex_docmd.c 2013-02-26 16:14:07.000000000 +0100 +*************** +*** 10839,10845 **** + (long)wp->w_virtcol + 1) < 0 + || put_eol(fd) == FAIL + || put_line(fd, "else") == FAIL +! || fprintf(fd, " normal! %d|", wp->w_virtcol + 1) < 0 + || put_eol(fd) == FAIL + || put_line(fd, "endif") == FAIL) + return FAIL; +--- 10839,10845 ---- + (long)wp->w_virtcol + 1) < 0 + || put_eol(fd) == FAIL + || put_line(fd, "else") == FAIL +! || fprintf(fd, " normal! 0%d|", wp->w_virtcol + 1) < 0 + || put_eol(fd) == FAIL + || put_line(fd, "endif") == FAIL) + return FAIL; +*** ../vim-7.3.837/src/version.c 2013-02-26 15:27:20.000000000 +0100 +--- src/version.c 2013-02-26 15:31:06.000000000 +0100 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 838, + /**/ + +-- +It doesn't really matter what you are able to do if you don't do it. + (Bram Moolenaar) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.839 b/7.3.839 new file mode 100644 index 0000000..2c4eb78 --- /dev/null +++ b/7.3.839 @@ -0,0 +1,76 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.839 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.839 +Problem: Some files missing in the list of distributed files. +Solution: Add lines for new files. +Files: Filelist + + +*** ../vim-7.3.838/Filelist 2012-10-03 21:48:38.000000000 +0200 +--- Filelist 2013-02-26 17:55:17.000000000 +0100 +*************** +*** 73,78 **** +--- 73,79 ---- + src/version.c \ + src/version.h \ + src/vim.h \ ++ src/winclip.c \ + src/window.c \ + src/xxd/xxd.c \ + src/main.aap \ +*************** +*** 83,88 **** +--- 84,90 ---- + src/testdir/test60.vim \ + src/testdir/test83-tags? \ + src/proto.h \ ++ src/proto/arabic.pro \ + src/proto/blowfish.pro \ + src/proto/buffer.pro \ + src/proto/charset.pro \ +*************** +*** 130,135 **** +--- 132,138 ---- + src/proto/ui.pro \ + src/proto/undo.pro \ + src/proto/version.pro \ ++ src/proto/winclip.pro \ + src/proto/window.pro \ + + +*************** +*** 444,449 **** +--- 447,453 ---- + src/os_beos.c \ + src/os_beos.h \ + src/os_beos.rsrc \ ++ src/proto/os_beos.pro \ + src/os_mint.h \ + src/os_vms_fix.com \ + src/toolbar.phi \ +*** ../vim-7.3.838/src/version.c 2013-02-26 17:21:15.000000000 +0100 +--- src/version.c 2013-02-26 17:56:40.000000000 +0100 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 839, + /**/ + +-- +Normal people believe that if it ain't broke, don't fix it. Engineers believe +that if it ain't broke, it doesn't have enough features yet. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.840 b/7.3.840 new file mode 100644 index 0000000..d68c9fb --- /dev/null +++ b/7.3.840 @@ -0,0 +1,54 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.840 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.840 +Problem: "\@rs_un.regsave.rs_u.pos.col -= ++ (*mb_head_off)(regline, regline ++ + rp->rs_un.regsave.rs_u.pos.col - 1) + 1; ++ else ++ #endif + --rp->rs_un.regsave.rs_u.pos.col; + } + else +*** ../vim-7.3.839/src/version.c 2013-02-26 17:59:37.000000000 +0100 +--- src/version.c 2013-02-26 18:39:28.000000000 +0100 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 840, + /**/ + +-- +I learned the customs and mannerisms of engineers by observing them, much the +way Jane Goodall learned about the great apes, but without the hassle of +grooming. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.841 b/7.3.841 new file mode 100644 index 0000000..abe5bf7 --- /dev/null +++ b/7.3.841 @@ -0,0 +1,59 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.841 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.841 +Problem: When a "cond ? one : two" expression has a subscript it is not + parsed correctly. (Andy Wokula) +Solution: Handle a subscript also when the type is unknown. (Christian + Brabandt) +Files: src/eval.c + + +*** ../vim-7.3.840/src/eval.c 2013-02-20 21:11:14.000000000 +0100 +--- src/eval.c 2013-02-26 19:27:59.000000000 +0100 +*************** +*** 5164,5169 **** +--- 5164,5179 ---- + ret = get_func_tv(s, len, rettv, arg, + curwin->w_cursor.lnum, curwin->w_cursor.lnum, + &len, evaluate, NULL); ++ ++ /* If evaluate is FALSE rettv->v_type was not set in ++ * get_func_tv, but it's needed in handle_subscript() to parse ++ * what follows. So set it here. */ ++ if (rettv->v_type == VAR_UNKNOWN && !evaluate && **arg == '(') ++ { ++ rettv->vval.v_string = vim_strsave(""); ++ rettv->v_type = VAR_FUNC; ++ } ++ + /* Stop the expression evaluation when immediately + * aborting on error, or when an interrupt occurred or + * an exception was thrown but not caught. */ +*** ../vim-7.3.840/src/version.c 2013-02-26 18:45:49.000000000 +0100 +--- src/version.c 2013-02-26 19:35:36.000000000 +0100 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 841, + /**/ + +-- +If someone questions your market projections, simply point out that your +target market is "People who are nuts" and "People who will buy any damn +thing". Nobody is going to tell you there aren't enough of those people +to go around. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.842 b/7.3.842 new file mode 100644 index 0000000..895c783 --- /dev/null +++ b/7.3.842 @@ -0,0 +1,54 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.842 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.842 +Problem: Compiler warning for signed/unsigned pointer. +Solution: Add type cast. (Christian Brabandt) +Files: src/eval.c + + +*** ../vim-7.3.841/src/eval.c 2013-02-26 19:36:03.000000000 +0100 +--- src/eval.c 2013-02-26 21:41:24.000000000 +0100 +*************** +*** 5170,5176 **** + * what follows. So set it here. */ + if (rettv->v_type == VAR_UNKNOWN && !evaluate && **arg == '(') + { +! rettv->vval.v_string = vim_strsave(""); + rettv->v_type = VAR_FUNC; + } + +--- 5170,5176 ---- + * what follows. So set it here. */ + if (rettv->v_type == VAR_UNKNOWN && !evaluate && **arg == '(') + { +! rettv->vval.v_string = vim_strsave((char_u *)""); + rettv->v_type = VAR_FUNC; + } + +*** ../vim-7.3.841/src/version.c 2013-02-26 19:36:03.000000000 +0100 +--- src/version.c 2013-02-26 21:43:21.000000000 +0100 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 842, + /**/ + +-- +The process for understanding customers primarily involves sitting around with +other marketing people and talking about what you would to if you were dumb +enough to be a customer. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.843 b/7.3.843 new file mode 100644 index 0000000..ebb369d --- /dev/null +++ b/7.3.843 @@ -0,0 +1,111 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.843 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.843 (after 7.3.841) +Problem: Missing test file changes. +Solution: Change the tests. +Files: src/testdir/test49.vim, src/testdir/test49.ok + + +*** ../vim-7.3.842/src/testdir/test49.vim 2012-12-05 19:00:03.000000000 +0100 +--- src/testdir/test49.vim 2013-02-26 19:22:36.000000000 +0100 +*************** +*** 9624,9630 **** + Xcheck 0 + + "------------------------------------------------------------------------------- +! " Test 87: $VIMNOERRTHROW and $VIMNOINTTHROW support {{{1 + " + " It is possible to configure Vim for throwing exceptions on error + " or interrupt, controlled by variables $VIMNOERRTHROW and +--- 9624,9661 ---- + Xcheck 0 + + "------------------------------------------------------------------------------- +! " Test 87 using (expr) ? funcref : funcref {{{1 +! " +! " Vim needs to correctly parse the funcref and even when it does +! " not execute the funcref, it needs to consume the trailing () +! "------------------------------------------------------------------------------- +! +! XpathINIT +! +! func Add2(x1, x2) +! return a:x1 + a:x2 +! endfu +! +! func GetStr() +! return "abcdefghijklmnopqrstuvwxyp" +! endfu +! +! echo function('Add2')(2,3) +! +! Xout 1 ? function('Add2')(1,2) : function('Add2')(2,3) +! Xout 0 ? function('Add2')(1,2) : function('Add2')(2,3) +! " Make sure, GetStr() still works. +! Xout GetStr()[0:10] +! +! +! delfunction GetStr +! delfunction Add2 +! Xout "Successfully executed funcref Add2" +! +! Xcheck 0 +! +! "------------------------------------------------------------------------------- +! " Test 88: $VIMNOERRTHROW and $VIMNOINTTHROW support {{{1 + " + " It is possible to configure Vim for throwing exceptions on error + " or interrupt, controlled by variables $VIMNOERRTHROW and +*** ../vim-7.3.842/src/testdir/test49.ok 2012-11-14 22:38:04.000000000 +0100 +--- src/testdir/test49.ok 2013-02-26 19:22:36.000000000 +0100 +*************** +*** 87,94 **** + *** Test 85: OK (198689) + --- Test 86: No Crash for vimgrep on BufUnload + *** Test 86: OK (0) +! --- Test 87: All tests were run with throwing exceptions on error. + The $VIMNOERRTHROW control is not configured. +! --- Test 87: All tests were run with throwing exceptions on interrupt. + The $VIMNOINTTHROW control is not configured. +! *** Test 87: OK (50443995) +--- 87,99 ---- + *** Test 85: OK (198689) + --- Test 86: No Crash for vimgrep on BufUnload + *** Test 86: OK (0) +! --- Test 87: 3 +! --- Test 87: 5 +! --- Test 87: abcdefghijk +! --- Test 87: Successfully executed funcref Add2 +! *** Test 87: OK (0) +! --- Test 88: All tests were run with throwing exceptions on error. + The $VIMNOERRTHROW control is not configured. +! --- Test 88: All tests were run with throwing exceptions on interrupt. + The $VIMNOINTTHROW control is not configured. +! *** Test 88: OK (50443995) +*** ../vim-7.3.842/src/version.c 2013-02-26 21:43:28.000000000 +0100 +--- src/version.c 2013-02-26 22:53:13.000000000 +0100 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 843, + /**/ + +-- +Never enter the boss's office unless it's absolutely necessary. Every boss +saves one corner of the desk for useless assignments that are doled out like +Halloween candy to each visitor. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.844 b/7.3.844 new file mode 100644 index 0000000..015a0b5 --- /dev/null +++ b/7.3.844 @@ -0,0 +1,197 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.844 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.844 +Problem: Enum is not indented correctly with "public" etc. +Solution: Skip "public", "private" and "protected". (Hong Xu) +Files: src/misc1.c + + +*** ../vim-7.3.843/src/misc1.c 2013-02-13 16:10:13.000000000 +0100 +--- src/misc1.c 2013-03-07 12:59:45.000000000 +0100 +*************** +*** 5275,5280 **** +--- 5275,5281 ---- + 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_starts_with __ARGS((char_u *s, char *word)); + static int cin_skip2pos __ARGS((pos_T *trypos)); + static pos_T *find_start_brace __ARGS((int)); + static pos_T *find_match_paren __ARGS((int, int)); +*************** +*** 5446,5469 **** + } + + /* +! * Recognize structure initialization and enumerations. +! * Q&D-Implementation: +! * check for "=" at end or "[typedef] enum" at beginning of line. + */ + static int + cin_isinit(void) + { + char_u *s; + + s = cin_skipcomment(ml_get_curline()); + +! if (STRNCMP(s, "typedef", 7) == 0 && !vim_isIDc(s[7])) + s = cin_skipcomment(s + 7); + +! if (STRNCMP(s, "static", 6) == 0 && !vim_isIDc(s[6])) +! s = cin_skipcomment(s + 6); + +! if (STRNCMP(s, "enum", 4) == 0 && !vim_isIDc(s[4])) + return TRUE; + + if (cin_ends_in(s, (char_u *)"=", (char_u *)"{")) +--- 5447,5486 ---- + } + + /* +! * Recognize structure initialization and enumerations: +! * "[typedef] [static|public|protected|private] enum" +! * "[typedef] [static|public|protected|private] = {" + */ + static int + cin_isinit(void) + { + char_u *s; ++ static char *skip[] = {"static", "public", "protected", "private"}; + + s = cin_skipcomment(ml_get_curline()); + +! if (cin_starts_with(s, "typedef")) + s = cin_skipcomment(s + 7); + +! for (;;) +! { +! int i, l; +! +! for (i = 0; i < (int)(sizeof(skip) / sizeof(char *)); ++i) +! { +! l = strlen(skip[i]); +! if (cin_starts_with(s, skip[i])) +! { +! s = cin_skipcomment(s + l); +! l = 0; +! break; +! } +! } +! if (l != 0) +! break; +! } + +! if (cin_starts_with(s, "enum")) + return TRUE; + + if (cin_ends_in(s, (char_u *)"=", (char_u *)"{")) +*************** +*** 5481,5487 **** + int strict; /* Allow relaxed check of case statement for JS */ + { + s = cin_skipcomment(s); +! if (STRNCMP(s, "case", 4) == 0 && !vim_isIDc(s[4])) + { + for (s += 4; *s; ++s) + { +--- 5498,5504 ---- + int strict; /* Allow relaxed check of case statement for JS */ + { + s = cin_skipcomment(s); +! if (cin_starts_with(s, "case")) + { + for (s += 4; *s; ++s) + { +*************** +*** 6049,6055 **** + p = cin_skipcomment(p); + if (*p == '}') /* accept "} while (cond);" */ + p = cin_skipcomment(p + 1); +! if (STRNCMP(p, "while", 5) == 0 && !vim_isIDc(p[5])) + { + cursor_save = curwin->w_cursor; + curwin->w_cursor.lnum = lnum; +--- 6066,6072 ---- + p = cin_skipcomment(p); + if (*p == '}') /* accept "} while (cond);" */ + p = cin_skipcomment(p + 1); +! if (cin_starts_with(p, "while")) + { + cursor_save = curwin->w_cursor; + curwin->w_cursor.lnum = lnum; +*************** +*** 6156,6162 **** + s = cin_skipcomment(ml_get(trypos->lnum)); + if (*s == '}') /* accept "} while (cond);" */ + s = cin_skipcomment(s + 1); +! if (STRNCMP(s, "while", 5) == 0 && !vim_isIDc(s[5])) + { + curwin->w_cursor.lnum = trypos->lnum; + return TRUE; +--- 6173,6179 ---- + s = cin_skipcomment(ml_get(trypos->lnum)); + if (*s == '}') /* accept "} while (cond);" */ + s = cin_skipcomment(s + 1); +! if (cin_starts_with(s, "while")) + { + curwin->w_cursor.lnum = trypos->lnum; + return TRUE; +*************** +*** 6406,6411 **** +--- 6423,6441 ---- + } + + /* ++ * Return TRUE when "s" starts with "word" and then a non-ID character. ++ */ ++ static int ++ cin_starts_with(s, word) ++ char_u *s; ++ char *word; ++ { ++ int l = STRLEN(word); ++ ++ return (STRNCMP(s, word, l) == 0 && !vim_isIDc(s[l])); ++ } ++ ++ /* + * Skip strings, chars and comments until at or past "trypos". + * Return the column found. + */ +*** ../vim-7.3.843/src/version.c 2013-02-26 22:54:06.000000000 +0100 +--- src/version.c 2013-03-07 13:12:20.000000000 +0100 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 844, + /**/ + +-- +Now it is such a bizarrely improbable coincidence that anything as +mind-bogglingly useful as the Babel fish could have evolved purely by chance +that some thinkers have chosen to see it as a final and clinching proof of the +NON-existence of God. +The argument goes something like this: 'I refuse to prove that I exist,' says +God, 'for proof denies faith, and without faith I am nothing.' +'But,' says Man, 'the Babel fish is a dead giveaway, isn't it? It could not +have evolved by chance. It proves you exist, and so therefore, by your own +arguments, you don't. QED.' +'Oh dear,' says God, 'I hadn't thought of that,' and promptly vanishes in a +puff of logic. +'Oh, that was easy,' says Man, and for an encore goes on to prove that black +is white and gets himself killed on the next pedestrian crossing. + -- Douglas Adams, "The Hitchhiker's Guide to the Galaxy" + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.845 b/7.3.845 new file mode 100644 index 0000000..d9acfef --- /dev/null +++ b/7.3.845 @@ -0,0 +1,88 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.845 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.845 (after 7.3.844) +Problem: Enum indenting is not tested. +Solution: Add tests. (Hong Xu) +Files: src/testdir/test3.in, src/testdir/test3.ok + + +*** ../vim-7.3.844/src/testdir/test3.in 2012-06-13 13:40:45.000000000 +0200 +--- src/testdir/test3.in 2013-03-07 12:39:35.000000000 +0100 +*************** +*** 318,323 **** +--- 318,337 ---- + maybe + } soppie; + ++ public static enum ++ { ++ yes = 0, ++ no, ++ maybe ++ } soppie; ++ ++ static private enum ++ { ++ yes = 0, ++ no, ++ maybe ++ } soppie; ++ + { + int a, + b; +*** ../vim-7.3.844/src/testdir/test3.ok 2012-06-13 13:40:45.000000000 +0200 +--- src/testdir/test3.ok 2013-03-07 12:40:03.000000000 +0100 +*************** +*** 306,311 **** +--- 306,325 ---- + maybe + } soppie; + ++ public static enum ++ { ++ yes = 0, ++ no, ++ maybe ++ } soppie; ++ ++ static private enum ++ { ++ yes = 0, ++ no, ++ maybe ++ } soppie; ++ + { + int a, + b; +*** ../vim-7.3.844/src/version.c 2013-03-07 13:13:45.000000000 +0100 +--- src/version.c 2013-03-07 13:18:49.000000000 +0100 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 845, + /**/ + +-- +"So this is it," said Arthur, "we are going to die." +"Yes," said Ford, "except...no! Wait a minute!" He suddenly lunged across +the chamber at something behind Arthur's line of vision. "What's this +switch?" he cried. +"What? Where?" cried Arthur, twisting around. +"No, I was only fooling," said Ford, "we are going to die after all." + -- Douglas Adams, "The Hitchhiker's Guide to the Galaxy" + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.846 b/7.3.846 new file mode 100644 index 0000000..da52ef5 --- /dev/null +++ b/7.3.846 @@ -0,0 +1,46 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.846 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.846 +Problem: Missing proto file, listing a non-existing proto file. +Solution: Remove the file. Add os_beos.pro only in Mercurial. +Files: Filelist + + +*** ../vim-7.3.845/Filelist 2013-02-26 17:59:37.000000000 +0100 +--- Filelist 2013-03-07 13:27:30.000000000 +0100 +*************** +*** 84,90 **** + src/testdir/test60.vim \ + src/testdir/test83-tags? \ + src/proto.h \ +- src/proto/arabic.pro \ + src/proto/blowfish.pro \ + src/proto/buffer.pro \ + src/proto/charset.pro \ +--- 84,89 ---- +*** ../vim-7.3.845/src/version.c 2013-03-07 13:21:28.000000000 +0100 +--- src/version.c 2013-03-07 13:23:02.000000000 +0100 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 846, + /**/ + +-- +I am also told that there is a logical proof out there somewhere +that demonstrates that there is no task which duct tape cannot handle. + -- Paul Brannan + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.847 b/7.3.847 new file mode 100644 index 0000000..a9bb426 --- /dev/null +++ b/7.3.847 @@ -0,0 +1,47 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.847 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.847 +Problem: Test 55 fails when messages are translated. +Solution: Set language to C. (Ken Takata) +Files: src/testdir/test55.in + + +*** ../vim-7.3.846/src/testdir/test55.in 2012-08-29 16:55:09.000000000 +0200 +--- src/testdir/test55.in 2013-03-07 14:33:12.000000000 +0100 +*************** +*** 3,8 **** +--- 3,9 ---- + STARTTEST + :so small.vim + :fun Test(...) ++ :lang C + :" Creating List directly with different types + :let l = [1, 'as''d', [1, 2, function("strlen")], {'a': 1},] + :$put =string(l) +*** ../vim-7.3.846/src/version.c 2013-03-07 13:32:03.000000000 +0100 +--- src/version.c 2013-03-07 14:49:57.000000000 +0100 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 847, + /**/ + +-- +"Space is big. Really big. You just won't believe how vastly hugely mind- +bogglingly big it is. I mean, you may think it's a long way down the +road to the chemist, but that's just peanuts to space." + -- 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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.848 b/7.3.848 new file mode 100644 index 0000000..aaf8401 --- /dev/null +++ b/7.3.848 @@ -0,0 +1,153 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.848 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.848 +Problem: Can't build with Ruby 2.0 when using MinGW x64 or MSVC10. +Solution: Fix it. Also detect RUBY_PLATFORM and RUBY_INSTALL_NAME for x64. + (Ken Takata) +Files: src/Make_cyg.mak, src/Make_ming.mak, src/if_ruby.c + + +*** ../vim-7.3.847/src/Make_cyg.mak 2013-02-26 14:56:24.000000000 +0100 +--- src/Make_cyg.mak 2013-03-07 14:56:29.000000000 +0100 +*************** +*** 229,246 **** +--- 229,254 ---- + ifneq ($(wildcard $(RUBY)/lib/ruby/$(RUBY_VER_LONG)/i386-mingw32),) + RUBY_PLATFORM = i386-mingw32 + else ++ ifneq ($(wildcard $(RUBY)/lib/ruby/$(RUBY_VER_LONG)/x64-mingw32),) ++ RUBY_PLATFORM = x64-mingw32 ++ else + RUBY_PLATFORM = i386-mswin32 + endif + endif + endif ++ endif + + ifndef RUBY_INSTALL_NAME + ifeq ($(RUBY_VER), 16) + RUBY_INSTALL_NAME = mswin32-ruby$(RUBY_API_VER) + else ++ ifeq ($(ARCH),x86-64) ++ RUBY_INSTALL_NAME = x64-msvcrt-ruby$(RUBY_API_VER) ++ else + RUBY_INSTALL_NAME = msvcrt-ruby$(RUBY_API_VER) + endif + endif ++ endif + + ifeq (19, $(word 1,$(sort 19 $(RUBY_VER)))) + RUBY_19_OR_LATER = 1 +*** ../vim-7.3.847/src/Make_ming.mak 2013-02-26 14:56:24.000000000 +0100 +--- src/Make_ming.mak 2013-03-07 14:56:29.000000000 +0100 +*************** +*** 288,305 **** +--- 288,313 ---- + ifneq ($(wildcard $(RUBY)/lib/ruby/$(RUBY_VER_LONG)/i386-mingw32),) + RUBY_PLATFORM = i386-mingw32 + else ++ ifneq ($(wildcard $(RUBY)/lib/ruby/$(RUBY_VER_LONG)/x64-mingw32),) ++ RUBY_PLATFORM = x64-mingw32 ++ else + RUBY_PLATFORM = i386-mswin32 + endif + endif + endif ++ endif + + ifndef RUBY_INSTALL_NAME + ifeq ($(RUBY_VER), 16) + RUBY_INSTALL_NAME = mswin32-ruby$(RUBY_API_VER) + else ++ ifeq ($(ARCH),x86-64) ++ RUBY_INSTALL_NAME = x64-msvcrt-ruby$(RUBY_API_VER) ++ else + RUBY_INSTALL_NAME = msvcrt-ruby$(RUBY_API_VER) + endif + endif ++ endif + + ifeq (19, $(word 1,$(sort 19 $(RUBY_VER)))) + RUBY_19_OR_LATER = 1 +*** ../vim-7.3.847/src/if_ruby.c 2013-02-26 13:41:31.000000000 +0100 +--- src/if_ruby.c 2013-03-07 14:56:29.000000000 +0100 +*************** +*** 39,44 **** +--- 39,47 ---- + */ + # define rb_cFalseClass (*dll_rb_cFalseClass) + # define rb_cFixnum (*dll_rb_cFixnum) ++ # if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 20 ++ # define rb_cFloat (*dll_rb_cFloat) ++ # endif + # define rb_cNilClass (*dll_rb_cNilClass) + # define rb_cSymbol (*dll_rb_cSymbol) + # define rb_cTrueClass (*dll_rb_cTrueClass) +*************** +*** 249,254 **** +--- 252,260 ---- + static VALUE (*dll_rb_assoc_new) (VALUE, VALUE); + VALUE *dll_rb_cFalseClass; + VALUE *dll_rb_cFixnum; ++ #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 20 ++ VALUE *dll_rb_cFloat; ++ #endif + VALUE *dll_rb_cNilClass; + static VALUE *dll_rb_cObject; + VALUE *dll_rb_cSymbol; +*************** +*** 352,358 **** + { + return dll_rb_float_new(d); + } +! unsigned long rb_num2ulong(VALUE x) + { + return (long)RSHIFT((SIGNED_VALUE)(x),1); + } +--- 358,364 ---- + { + return dll_rb_float_new(d); + } +! VALUE rb_num2ulong(VALUE x) + { + return (long)RSHIFT((SIGNED_VALUE)(x),1); + } +*************** +*** 373,378 **** +--- 379,387 ---- + {"rb_assoc_new", (RUBY_PROC*)&dll_rb_assoc_new}, + {"rb_cFalseClass", (RUBY_PROC*)&dll_rb_cFalseClass}, + {"rb_cFixnum", (RUBY_PROC*)&dll_rb_cFixnum}, ++ #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 20 ++ {"rb_cFloat", (RUBY_PROC*)&dll_rb_cFloat}, ++ #endif + {"rb_cNilClass", (RUBY_PROC*)&dll_rb_cNilClass}, + {"rb_cObject", (RUBY_PROC*)&dll_rb_cObject}, + {"rb_cSymbol", (RUBY_PROC*)&dll_rb_cSymbol}, +*** ../vim-7.3.847/src/version.c 2013-03-07 14:50:30.000000000 +0100 +--- src/version.c 2013-03-07 14:57:03.000000000 +0100 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 848, + /**/ + +-- +`The Guide says there is an art to flying,' said Ford, `or at least a +knack. The knack lies in learning how to throw yourself at the ground +and miss.' He smiled weakly. + -- 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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.849 b/7.3.849 new file mode 100644 index 0000000..b97cc74 --- /dev/null +++ b/7.3.849 @@ -0,0 +1,55 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.849 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.849 +Problem: ":g//" gives "Pattern not found error" with E486. Should not use + the error number, it's not a regular error message. +Solution: Use a normal message. (David Bürgin) +Files: src/ex_cmds.c + + +*** ../vim-7.3.848/src/ex_cmds.c 2013-02-06 18:23:58.000000000 +0100 +--- src/ex_cmds.c 2013-03-07 16:05:49.000000000 +0100 +*************** +*** 5411,5417 **** + if (type == 'v') + smsg((char_u *)_("Pattern found in every line: %s"), pat); + else +! smsg((char_u *)_(e_patnotf2), pat); + } + else + global_exe(cmd); +--- 5411,5417 ---- + if (type == 'v') + smsg((char_u *)_("Pattern found in every line: %s"), pat); + else +! smsg((char_u *)_("Pattern not found: %s"), pat); + } + else + global_exe(cmd); +*** ../vim-7.3.848/src/version.c 2013-03-07 15:16:16.000000000 +0100 +--- src/version.c 2013-03-07 16:03:57.000000000 +0100 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 849, + /**/ + +-- +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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.850 b/7.3.850 new file mode 100644 index 0000000..325b5ee --- /dev/null +++ b/7.3.850 @@ -0,0 +1,82 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.850 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.850 +Problem: ":vimgrep //" matches everywhere. +Solution: Make it use the previous search pattern. (David Bürgin) +Files: runtime/doc/quickfix.txt, src/quickfix.c + + +*** ../vim-7.3.849/runtime/doc/quickfix.txt 2010-08-15 21:57:19.000000000 +0200 +--- runtime/doc/quickfix.txt 2013-03-07 16:17:39.000000000 +0100 +*************** +*** 563,568 **** +--- 574,581 ---- + 'ignorecase' applies. To overrule it put |/\c| in the + pattern to ignore case or |/\C| to match case. + 'smartcase' is not used. ++ If {pattern} is empty (e.g. // is specified), the last ++ used search pattern is used. |last-pattern| + + When a number is put before the command this is used + as the maximum number of matches to find. Use +*** ../vim-7.3.849/src/quickfix.c 2012-12-12 15:55:16.000000000 +0100 +--- src/quickfix.c 2013-03-07 16:21:17.000000000 +0100 +*************** +*** 3179,3185 **** + EMSG(_(e_invalpat)); + goto theend; + } +! regmatch.regprog = vim_regcomp(s, RE_MAGIC); + if (regmatch.regprog == NULL) + goto theend; + regmatch.rmm_ic = p_ic; +--- 3179,3198 ---- + EMSG(_(e_invalpat)); + goto theend; + } +! +! if (s != NULL && *s == NUL) +! { +! /* Pattern is empty, use last search pattern. */ +! if (last_search_pat() == NULL) +! { +! EMSG(_(e_noprevre)); +! goto theend; +! } +! regmatch.regprog = vim_regcomp(last_search_pat(), RE_MAGIC); +! } +! else +! regmatch.regprog = vim_regcomp(s, RE_MAGIC); +! + if (regmatch.regprog == NULL) + goto theend; + regmatch.rmm_ic = p_ic; +*** ../vim-7.3.849/src/version.c 2013-03-07 16:08:31.000000000 +0100 +--- src/version.c 2013-03-07 16:16:26.000000000 +0100 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 850, + /**/ + +-- +The technology involved in making anything invisible is so infinitely +complex that nine hundred and ninety-nine billion, nine hundred and +ninety-nine million, nine hundred and ninety-nine thousand, nine hundred +and ninety-nine times out of a trillion it is much simpler and more +effective just to take the thing away and do without it. + -- 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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.851 b/7.3.851 new file mode 100644 index 0000000..87ff27d --- /dev/null +++ b/7.3.851 @@ -0,0 +1,67 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.851 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.851 +Problem: Using an empty pattern with :sort silently continues when there is + no previous search pattern. +Solution: Give an error message. +Files: src/ex_cmds.c + + +*** ../vim-7.3.850/src/ex_cmds.c 2013-03-07 16:08:31.000000000 +0100 +--- src/ex_cmds.c 2013-03-07 16:25:28.000000000 +0100 +*************** +*** 415,422 **** + } + *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) +--- 415,429 ---- + } + *s = NUL; + /* Use last search pattern if sort pattern is empty. */ +! if (s == p + 1) +! { +! if (last_search_pat() == NULL) +! { +! EMSG(_(e_noprevre)); +! goto sortend; +! } + regmatch.regprog = vim_regcomp(last_search_pat(), RE_MAGIC); ++ } + else + regmatch.regprog = vim_regcomp(p + 1, RE_MAGIC); + if (regmatch.regprog == NULL) +*** ../vim-7.3.850/src/version.c 2013-03-07 16:32:49.000000000 +0100 +--- src/version.c 2013-03-07 16:38:49.000000000 +0100 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 851, + /**/ + +-- +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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.852 b/7.3.852 new file mode 100644 index 0000000..5090657 --- /dev/null +++ b/7.3.852 @@ -0,0 +1,124 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.852 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.852 +Problem: system() breaks clipboard text. (Yukihiro Nakadaira) +Solution: Use Xutf8TextPropertyToTextList(). (Christian Brabandt) + Also do not put the text in the clip buffer if conversion fails. +Files: src/ui.c, src/ops.c + + +*** ../vim-7.3.851/src/ui.c 2012-10-21 00:58:34.000000000 +0200 +--- src/ui.c 2013-03-07 17:30:37.000000000 +0100 +*************** +*** 2119,2125 **** + text_prop.encoding = *type; + text_prop.format = *format; + text_prop.nitems = len; +! status = XmbTextPropertyToTextList(X_DISPLAY, &text_prop, + &text_list, &n_text); + if (status != Success || n_text < 1) + { +--- 2119,2131 ---- + text_prop.encoding = *type; + text_prop.format = *format; + text_prop.nitems = len; +! #ifdef FEAT_MBYTE +! if (*type == utf8_atom) +! status = Xutf8TextPropertyToTextList(X_DISPLAY, &text_prop, +! &text_list, &n_text); +! else +! #endif +! status = XmbTextPropertyToTextList(X_DISPLAY, &text_prop, + &text_list, &n_text); + if (status != Success || n_text < 1) + { +*** ../vim-7.3.851/src/ops.c 2012-12-12 16:11:28.000000000 +0100 +--- src/ops.c 2013-03-07 17:55:59.000000000 +0100 +*************** +*** 5828,5833 **** +--- 5828,5835 ---- + && len < 1024*1024 && len > 0) + { + #ifdef FEAT_MBYTE ++ int ok = TRUE; ++ + /* The CUT_BUFFER0 is supposed to always contain latin1. Convert from + * 'enc' when it is a multi-byte encoding. When 'enc' is an 8-bit + * encoding conversion usually doesn't work, so keep the text as-is. +*************** +*** 5842,5847 **** +--- 5844,5850 ---- + int intlen = len; + char_u *conv_str; + ++ vc.vc_fail = TRUE; + conv_str = string_convert(&vc, str, &intlen); + len = intlen; + if (conv_str != NULL) +*************** +*** 5849,5860 **** + vim_free(str); + str = conv_str; + } + convert_setup(&vc, NULL, NULL); + } + } + #endif +! XStoreBuffer(dpy, (char *)str, (int)len, 0); +! XFlush(dpy); + } + + vim_free(str); +--- 5852,5877 ---- + vim_free(str); + str = conv_str; + } ++ else ++ { ++ ok = FALSE; ++ } + convert_setup(&vc, NULL, NULL); + } ++ else ++ { ++ ok = FALSE; ++ } + } ++ ++ /* Do not store the string if conversion failed. Better to use any ++ * other selection than garbled text. */ ++ if (ok) + #endif +! { +! XStoreBuffer(dpy, (char *)str, (int)len, 0); +! XFlush(dpy); +! } + } + + vim_free(str); +*** ../vim-7.3.851/src/version.c 2013-03-07 16:41:26.000000000 +0100 +--- src/version.c 2013-03-07 18:01:08.000000000 +0100 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 852, + /**/ + +-- +Tips for aliens in New York: Land anywhere. Central Park, anywhere. +No one will care or indeed even notice. + -- Douglas Adams, "The Hitchhiker's Guide to the Galaxy" + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.853 b/7.3.853 new file mode 100644 index 0000000..6ccb0f4 --- /dev/null +++ b/7.3.853 @@ -0,0 +1,96 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.853 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.853 +Problem: Using "ra" in multiple lines on multi-byte characters leaves a few + characters not replaced. +Solution: Adjust the end column only in the last line. (Yasuhiro Matsumoto) +Files: src/testdir/test69.in, src/testdir/test69.ok, src/ops.c + + +*** ../vim-7.3.852/src/testdir/test69.in 2013-01-17 17:01:57.000000000 +0100 +--- src/testdir/test69.in 2013-03-07 18:30:50.000000000 +0100 +*************** +*** 1,5 **** +--- 1,6 ---- + Test for multi-byte text formatting. + Also test, that 'mps' with multibyte chars works. ++ And test "ra" on multi-byte characters. + + STARTTEST + :so mbyte.vim +*************** +*** 144,149 **** +--- 145,159 ---- + ‘ two three ’ four + } + STARTTEST ++ /^ra test ++ jVjra ++ ENDTEST ++ ++ ra test ++ abba ++ aab ++ ++ STARTTEST + :g/^STARTTEST/.,/^ENDTEST/d + :1;/^Results/,$wq! test.out + ENDTEST +*** ../vim-7.3.852/src/testdir/test69.ok 2013-01-17 17:01:57.000000000 +0100 +--- src/testdir/test69.ok 2013-03-07 18:31:32.000000000 +0100 +*************** +*** 144,146 **** +--- 144,151 ---- + { + four + } ++ ++ ra test ++ aaaa ++ aaa ++ +*** ../vim-7.3.852/src/ops.c 2013-03-07 18:02:27.000000000 +0100 +--- src/ops.c 2013-03-07 18:35:01.000000000 +0100 +*************** +*** 2194,2200 **** + { + /* This is slow, but it handles replacing a single-byte + * with a multi-byte and the other way around. */ +! oap->end.col += (*mb_char2len)(c) - (*mb_char2len)(n); + n = State; + State = REPLACE; + ins_char(c); +--- 2194,2201 ---- + { + /* This is slow, but it handles replacing a single-byte + * with a multi-byte and the other way around. */ +! if (curwin->w_cursor.lnum == oap->end.lnum) +! oap->end.col += (*mb_char2len)(c) - (*mb_char2len)(n); + n = State; + State = REPLACE; + ins_char(c); +*** ../vim-7.3.852/src/version.c 2013-03-07 18:02:27.000000000 +0100 +--- src/version.c 2013-03-07 18:36:46.000000000 +0100 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 853, + /**/ + +-- +What a wonderfully exciting cough! Do you mind if I join you? + -- 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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.854 b/7.3.854 new file mode 100644 index 0000000..6bc4717 --- /dev/null +++ b/7.3.854 @@ -0,0 +1,49 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.854 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.854 +Problem: After using backspace in insert mode completion, CTRL-N and CTRL-P + do not highlight the right entry. (Olivier Teuliere) +Solution: Set the current item to the shown item after using backspace. +Files: src/edit.c + + +*** ../vim-7.3.853/src/edit.c 2013-02-26 13:30:28.000000000 +0100 +--- src/edit.c 2013-03-07 19:31:46.000000000 +0100 +*************** +*** 3380,3385 **** +--- 3380,3388 ---- + if (compl_leader != NULL) + { + ins_compl_new_leader(); ++ if (compl_shown_match != NULL) ++ /* Make sure current match is not a hidden item. */ ++ compl_curr_match = compl_shown_match; + return NUL; + } + return K_BS; +*** ../vim-7.3.853/src/version.c 2013-03-07 18:50:52.000000000 +0100 +--- src/version.c 2013-03-07 19:34:32.000000000 +0100 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 854, + /**/ + +-- +If you put 7 of the most talented OSS developers in a room for a week +and asked them to fix a bug in a spreadsheet program, in 1 week +you'd have 2 new mail readers and a text-based web browser. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.855 b/7.3.855 new file mode 100644 index 0000000..06b315d --- /dev/null +++ b/7.3.855 @@ -0,0 +1,69 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.855 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.855 +Problem: Compiler warnings. +Solution: Add type casts. (Mike Williams) +Files: src/misc1.c + + +*** ../vim-7.3.854/src/misc1.c 2013-03-07 13:13:45.000000000 +0100 +--- src/misc1.c 2013-03-13 16:58:12.000000000 +0100 +*************** +*** 5468,5474 **** + + for (i = 0; i < (int)(sizeof(skip) / sizeof(char *)); ++i) + { +! l = strlen(skip[i]); + if (cin_starts_with(s, skip[i])) + { + s = cin_skipcomment(s + l); +--- 5468,5474 ---- + + for (i = 0; i < (int)(sizeof(skip) / sizeof(char *)); ++i) + { +! l = (int)strlen(skip[i]); + if (cin_starts_with(s, skip[i])) + { + s = cin_skipcomment(s + l); +*************** +*** 6430,6436 **** + char_u *s; + char *word; + { +! int l = STRLEN(word); + + return (STRNCMP(s, word, l) == 0 && !vim_isIDc(s[l])); + } +--- 6430,6436 ---- + char_u *s; + char *word; + { +! int l = (int)STRLEN(word); + + return (STRNCMP(s, word, l) == 0 && !vim_isIDc(s[l])); + } +*** ../vim-7.3.854/src/version.c 2013-03-07 19:38:49.000000000 +0100 +--- src/version.c 2013-03-13 16:59:02.000000000 +0100 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 855, + /**/ + +-- +George: "I just got a new set of golf clubs for my wife!" + John: "Great trade!" + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.856 b/7.3.856 new file mode 100644 index 0000000..b9f28a4 --- /dev/null +++ b/7.3.856 @@ -0,0 +1,311 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.856 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.856 +Problem: When calling system() multi-byte clipboard contents is garbled. +Solution: Save and restore the clipboard contents. (Yukihiro Nakadaira) +Files: src/gui_gtk_x11.c, src/proto/gui_gtk_x11.pro, src/ops.c, + src/proto/ops.pro, src/os_unix.c, src/proto/ui.pro, src/ui.c + + +*** ../vim-7.3.855/src/gui_gtk_x11.c 2013-02-14 22:11:31.000000000 +0100 +--- src/gui_gtk_x11.c 2013-03-13 17:28:00.000000000 +0100 +*************** +*** 5674,5685 **** + void + clip_mch_lose_selection(VimClipboard *cbd UNUSED) + { +! /* WEIRD: when using NULL to actually disown the selection, we lose the +! * selection the first time we own it. */ +! /* +! gtk_selection_owner_set(NULL, cbd->gtk_sel_atom, (guint32)GDK_CURRENT_TIME); + gui_mch_update(); +- */ + } + + /* +--- 5674,5681 ---- + void + clip_mch_lose_selection(VimClipboard *cbd UNUSED) + { +! gtk_selection_owner_set(NULL, cbd->gtk_sel_atom, gui.event_time); + gui_mch_update(); + } + + /* +*************** +*** 5705,5710 **** +--- 5701,5712 ---- + { + } + ++ int ++ clip_gtk_owner_exists(VimClipboard *cbd) ++ { ++ return gdk_selection_owner_get(cbd->gtk_sel_atom) != NULL; ++ } ++ + + #if defined(FEAT_MENU) || defined(PROTO) + /* +*** ../vim-7.3.855/src/proto/gui_gtk_x11.pro 2012-05-18 17:03:14.000000000 +0200 +--- src/proto/gui_gtk_x11.pro 2013-03-13 17:35:17.000000000 +0100 +*************** +*** 59,64 **** +--- 59,65 ---- + void clip_mch_lose_selection __ARGS((VimClipboard *cbd)); + int clip_mch_own_selection __ARGS((VimClipboard *cbd)); + void clip_mch_set_selection __ARGS((VimClipboard *cbd)); ++ int clip_gtk_owner_exists __ARGS((VimClipboard *cbd)); + void gui_mch_menu_grey __ARGS((vimmenu_T *menu, int grey)); + void gui_mch_menu_hidden __ARGS((vimmenu_T *menu, int hidden)); + void gui_mch_draw_menubar __ARGS((void)); +*** ../vim-7.3.855/src/ops.c 2013-03-07 18:50:52.000000000 +0100 +--- src/ops.c 2013-03-13 17:30:50.000000000 +0100 +*************** +*** 1017,1022 **** +--- 1017,1035 ---- + may_set_selection(); + # endif + } ++ ++ void ++ free_register(reg) ++ void *reg; ++ { ++ struct yankreg tmp; ++ ++ tmp = *y_current; ++ *y_current = *(struct yankreg *)reg; ++ free_yank_all(); ++ vim_free(reg); ++ *y_current = tmp; ++ } + #endif + + #if defined(FEAT_MOUSE) || defined(PROTO) +*** ../vim-7.3.855/src/proto/ops.pro 2012-06-06 16:12:54.000000000 +0200 +--- src/proto/ops.pro 2013-03-13 17:35:04.000000000 +0100 +*************** +*** 15,20 **** +--- 15,21 ---- + int may_get_selection __ARGS((int regname)); + void *get_register __ARGS((int name, int copy)); + void put_register __ARGS((int name, void *reg)); ++ void free_register __ARGS((void *reg)); + int yank_register_mline __ARGS((int regname)); + int do_record __ARGS((int c)); + int do_execreg __ARGS((int regname, int colon, int addcr, int silent)); +*** ../vim-7.3.855/src/os_unix.c 2013-02-26 14:56:24.000000000 +0100 +--- src/os_unix.c 2013-03-13 17:33:00.000000000 +0100 +*************** +*** 1138,1143 **** +--- 1138,1148 ---- + + # if defined(FEAT_CLIPBOARD) && defined(FEAT_X11) + static void loose_clipboard __ARGS((void)); ++ static void save_clipboard __ARGS((void)); ++ static void restore_clipboard __ARGS((void)); ++ ++ static void *clip_star_save = NULL; ++ static void *clip_plus_save = NULL; + + /* + * Called when Vim is going to sleep or execute a shell command. +*************** +*** 1158,1163 **** +--- 1163,1204 ---- + XFlush(x11_display); + } + } ++ ++ /* ++ * Save clipboard text to restore later. ++ */ ++ static void ++ save_clipboard() ++ { ++ if (clip_star.owned) ++ clip_star_save = get_register('*', TRUE); ++ if (clip_plus.owned) ++ clip_plus_save = get_register('+', TRUE); ++ } ++ ++ /* ++ * Restore clipboard text if no one own the X selection. ++ */ ++ static void ++ restore_clipboard() ++ { ++ if (clip_star_save != NULL) ++ { ++ if (!clip_gen_owner_exists(&clip_star)) ++ put_register('*', clip_star_save); ++ else ++ free_register(clip_star_save); ++ clip_star_save = NULL; ++ } ++ if (clip_plus_save != NULL) ++ { ++ if (!clip_gen_owner_exists(&clip_plus)) ++ put_register('+', clip_plus_save); ++ else ++ free_register(clip_plus_save); ++ clip_plus_save = NULL; ++ } ++ } + #endif + + /* +*************** +*** 3844,3849 **** +--- 3885,3891 ---- + settmode(TMODE_COOK); /* set to normal mode */ + + # if defined(FEAT_CLIPBOARD) && defined(FEAT_X11) ++ save_clipboard(); + loose_clipboard(); + # endif + +*************** +*** 3917,3922 **** +--- 3959,3967 ---- + # ifdef FEAT_TITLE + resettitle(); + # endif ++ # if defined(FEAT_CLIPBOARD) && defined(FEAT_X11) ++ restore_clipboard(); ++ # endif + return x; + + #else /* USE_SYSTEM */ /* don't use system(), use fork()/exec() */ +*************** +*** 3965,3970 **** +--- 4010,4018 ---- + settmode(TMODE_COOK); /* set to normal mode */ + + # if defined(FEAT_CLIPBOARD) && defined(FEAT_X11) ++ /* Disown the clipboard, because is the executed command tries to obtain a ++ * selection and we own it we get a deadlock. */ ++ save_clipboard(); + loose_clipboard(); + # endif + +*************** +*** 4836,4841 **** +--- 4884,4892 ---- + # ifdef FEAT_TITLE + resettitle(); + # endif ++ # if defined(FEAT_CLIPBOARD) && defined(FEAT_X11) ++ restore_clipboard(); ++ # endif + vim_free(newcmd); + + return retval; +*** ../vim-7.3.855/src/proto/ui.pro 2012-07-10 16:49:08.000000000 +0200 +--- src/proto/ui.pro 2013-03-13 17:35:08.000000000 +0100 +*************** +*** 29,34 **** +--- 29,35 ---- + void clip_gen_lose_selection __ARGS((VimClipboard *cbd)); + void clip_gen_set_selection __ARGS((VimClipboard *cbd)); + void clip_gen_request_selection __ARGS((VimClipboard *cbd)); ++ int clip_gen_owner_exists __ARGS((VimClipboard *cbd)); + int vim_is_input_buf_full __ARGS((void)); + int vim_is_input_buf_empty __ARGS((void)); + int vim_free_in_input_buf __ARGS((void)); +*************** +*** 52,57 **** +--- 53,59 ---- + void clip_x11_lose_selection __ARGS((Widget myShell, VimClipboard *cbd)); + int clip_x11_own_selection __ARGS((Widget myShell, VimClipboard *cbd)); + void clip_x11_set_selection __ARGS((VimClipboard *cbd)); ++ int clip_x11_owner_exists __ARGS((VimClipboard *cbd)); + void yank_cut_buffer0 __ARGS((Display *dpy, VimClipboard *cbd)); + int jump_to_mouse __ARGS((int flags, int *inclusive, int which_button)); + int mouse_comp_pos __ARGS((win_T *win, int *rowp, int *colp, linenr_T *lnump)); +*** ../vim-7.3.855/src/ui.c 2013-03-07 18:02:27.000000000 +0100 +--- src/ui.c 2013-03-13 17:31:31.000000000 +0100 +*************** +*** 1456,1461 **** +--- 1456,1476 ---- + #endif + } + ++ int ++ clip_gen_owner_exists(cbd) ++ VimClipboard *cbd; ++ { ++ #ifdef FEAT_XCLIPBOARD ++ # ifdef FEAT_GUI_GTK ++ if (gui.in_use) ++ return clip_gtk_owner_exists(cbd); ++ else ++ # endif ++ return clip_x11_owner_exists(cbd); ++ #endif ++ return TRUE; ++ } ++ + #endif /* FEAT_CLIPBOARD */ + + /***************************************************************************** +*************** +*** 2398,2404 **** + Widget myShell; + VimClipboard *cbd; + { +! XtDisownSelection(myShell, cbd->sel_atom, CurrentTime); + } + + int +--- 2413,2420 ---- + Widget myShell; + VimClipboard *cbd; + { +! XtDisownSelection(myShell, cbd->sel_atom, +! XtLastTimestampProcessed(XtDisplay(myShell))); + } + + int +*************** +*** 2440,2445 **** +--- 2456,2468 ---- + VimClipboard *cbd UNUSED; + { + } ++ ++ int ++ clip_x11_owner_exists(cbd) ++ VimClipboard *cbd; ++ { ++ return XGetSelectionOwner(X_DISPLAY, cbd->sel_atom) != None; ++ } + #endif + + #if defined(FEAT_XCLIPBOARD) || defined(FEAT_GUI_X11) \ +*** ../vim-7.3.855/src/version.c 2013-03-13 17:01:47.000000000 +0100 +--- src/version.c 2013-03-13 17:45:25.000000000 +0100 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 856, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +39. You move into a new house and decide to Netscape before you landscape. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.857 b/7.3.857 new file mode 100644 index 0000000..1c3ca8c --- /dev/null +++ b/7.3.857 @@ -0,0 +1,91 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.857 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.857 +Problem: The QuitPre autocommand event does not trigger for :qa and :wq. +Solution: Trigger the event. (Tatsuro Fujii) +Files: src/ex_docmd.c + + +*** ../vim-7.3.856/src/ex_docmd.c 2013-02-26 17:21:15.000000000 +0100 +--- src/ex_docmd.c 2013-03-13 18:14:56.000000000 +0100 +*************** +*** 6526,6532 **** + } + #ifdef FEAT_AUTOCMD + apply_autocmds(EVENT_QUITPRE, NULL, NULL, FALSE, curbuf); +! /* Refuse to quick when locked or when the buffer in the last window is + * being closed (can only happen in autocommands). */ + if (curbuf_locked() || (curbuf->b_nwindows == 1 && curbuf->b_closing)) + return; +--- 6526,6532 ---- + } + #ifdef FEAT_AUTOCMD + apply_autocmds(EVENT_QUITPRE, NULL, NULL, FALSE, curbuf); +! /* Refuse to quit when locked or when the buffer in the last window is + * being closed (can only happen in autocommands). */ + if (curbuf_locked() || (curbuf->b_nwindows == 1 && curbuf->b_closing)) + return; +*************** +*** 6600,6606 **** + return; + } + #ifdef FEAT_AUTOCMD +! if (curbuf_locked()) + return; + #endif + +--- 6600,6609 ---- + return; + } + #ifdef FEAT_AUTOCMD +! apply_autocmds(EVENT_QUITPRE, NULL, NULL, FALSE, curbuf); +! /* Refuse to quit when locked or when the buffer in the last window is +! * being closed (can only happen in autocommands). */ +! if (curbuf_locked() || (curbuf->b_nwindows == 1 && curbuf->b_closing)) + return; + #endif + +*************** +*** 6936,6942 **** + return; + } + #ifdef FEAT_AUTOCMD +! if (curbuf_locked()) + return; + #endif + +--- 6939,6948 ---- + return; + } + #ifdef FEAT_AUTOCMD +! apply_autocmds(EVENT_QUITPRE, NULL, NULL, FALSE, curbuf); +! /* Refuse to quit when locked or when the buffer in the last window is +! * being closed (can only happen in autocommands). */ +! if (curbuf_locked() || (curbuf->b_nwindows == 1 && curbuf->b_closing)) + return; + #endif + +*** ../vim-7.3.856/src/version.c 2013-03-13 17:50:20.000000000 +0100 +--- src/version.c 2013-03-13 18:26:13.000000000 +0100 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 857, + /**/ + +-- +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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.858 b/7.3.858 new file mode 100644 index 0000000..a03c015 --- /dev/null +++ b/7.3.858 @@ -0,0 +1,159 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.858 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.858 +Problem: "gv" selects the wrong area after some operators. +Solution: Save and restore the type of selection. (Christian Brabandt) +Files: src/testdir/test66.in, src/testdir/test66.ok, src/normal.c + + +*** ../vim-7.3.857/src/testdir/test66.in 2010-08-15 21:57:29.000000000 +0200 +--- src/testdir/test66.in 2013-03-13 18:42:46.000000000 +0100 +*************** +*** 3,14 **** + + STARTTEST + :so small.vim + /^abcdefgh + 4jI j<<11|D + 7|a  + 7|a  + 7|a 4k13|4j< +! :$-4,$w! test.out + :$-4,$s/\s\+//g + 4kI j<< + 7|a  +--- 3,16 ---- + + STARTTEST + :so small.vim ++ /^one ++ fe4jRugvr1:'<,'>w! test.out + /^abcdefgh + 4jI j<<11|D + 7|a  + 7|a  + 7|a 4k13|4j< +! :$-5,$w >> test.out + :$-4,$s/\s\+//g + 4kI j<< + 7|a  +*************** +*** 18,23 **** +--- 20,31 ---- + :qa! + ENDTEST + ++ one two three ++ one two three ++ one two three ++ one two three ++ one two three ++ + abcdefghijklmnopqrstuvwxyz + abcdefghijklmnopqrstuvwxyz + abcdefghijklmnopqrstuvwxyz +*** ../vim-7.3.857/src/testdir/test66.ok 2010-08-15 21:57:29.000000000 +0200 +--- src/testdir/test66.ok 2013-03-13 18:42:46.000000000 +0100 +*************** +*** 1,3 **** +--- 1,9 ---- ++ on1 two three ++ on1 two three ++ on1 two three ++ on1 two three ++ on1 two three ++ + abcdefghijklmnopqrstuvwxyz + abcdefghij + abc defghijklmnopqrstuvwxyz +*** ../vim-7.3.857/src/normal.c 2013-02-26 13:30:28.000000000 +0100 +--- src/normal.c 2013-03-13 18:47:49.000000000 +0100 +*************** +*** 21,26 **** +--- 21,27 ---- + static int resel_VIsual_mode = NUL; /* 'v', 'V', or Ctrl-V */ + static linenr_T resel_VIsual_line_count; /* number of lines */ + static colnr_T resel_VIsual_vcol; /* nr of cols or end col */ ++ static int VIsual_mode_orig = NUL; /* type of Visual mode, that user entered */ + + static int restart_VIsual_select = 0; + #endif +*************** +*** 1594,1599 **** +--- 1595,1605 ---- + curbuf->b_visual.vi_start = VIsual; + curbuf->b_visual.vi_end = curwin->w_cursor; + curbuf->b_visual.vi_mode = VIsual_mode; ++ if (VIsual_mode_orig != NUL) ++ { ++ curbuf->b_visual.vi_mode = VIsual_mode_orig; ++ VIsual_mode_orig = NUL; ++ } + curbuf->b_visual.vi_curswant = curwin->w_curswant; + # ifdef FEAT_EVAL + curbuf->b_visual_mode_eval = VIsual_mode; +*************** +*** 7230,7235 **** +--- 7236,7242 ---- + { + cap->cmdchar = 'c'; + cap->nchar = NUL; ++ VIsual_mode_orig = VIsual_mode; /* remember original area for gv */ + VIsual_mode = 'V'; + nv_operator(cap); + } +*************** +*** 7429,7435 **** +--- 7436,7445 ---- + if (isupper(cap->cmdchar)) + { + if (VIsual_mode != Ctrl_V) ++ { ++ VIsual_mode_orig = VIsual_mode; + VIsual_mode = 'V'; ++ } + else if (cap->cmdchar == 'C' || cap->cmdchar == 'D') + curwin->w_curswant = MAXCOL; + } +*************** +*** 7449,7455 **** +--- 7459,7468 ---- + if (VIsual_active) /* "vs" and "vS" are the same as "vc" */ + { + if (cap->cmdchar == 'S') ++ { ++ VIsual_mode_orig = VIsual_mode; + VIsual_mode = 'V'; ++ } + cap->cmdchar = 'c'; + nv_operator(cap); + } +*** ../vim-7.3.857/src/version.c 2013-03-13 18:30:39.000000000 +0100 +--- src/version.c 2013-03-13 18:48:50.000000000 +0100 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 858, + /**/ + +-- +"Oh, no! NOT the Spanish Inquisition!" +"NOBODY expects the Spanish Inquisition!!!" + -- Monty Python sketch -- +"Oh, no! NOT another option!" +"EVERYBODY expects another option!!!" + -- Discussion in vim-dev mailing list -- + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.859 b/7.3.859 new file mode 100644 index 0000000..e1714c4 --- /dev/null +++ b/7.3.859 @@ -0,0 +1,316 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.859 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.859 +Problem: 'ambiwidth' must be set by the user. +Solution: Detects East Asian ambiguous width (UAX #11) state of the terminal + at the start-up time and 'ambiwidth' accordingly. (Hayaki Saito) +Files: src/main.c, src/option.c, src/term.c, src/term.h, + src/proto/term.pro + + +*** ../vim-7.3.858/src/main.c 2013-01-17 13:59:56.000000000 +0100 +--- src/main.c 2013-03-13 19:09:03.000000000 +0100 +*************** +*** 804,809 **** +--- 804,812 ---- + + starttermcap(); /* start termcap if not done by wait_return() */ + TIME_MSG("start termcap"); ++ #if defined(FEAT_TERMRESPONSE) && defined(FEAT_MBYTE) ++ may_req_ambiguous_character_width(); ++ #endif + + #ifdef FEAT_MOUSE + setmouse(); /* may start using the mouse */ +*** ../vim-7.3.858/src/option.c 2013-02-13 15:44:22.000000000 +0100 +--- src/option.c 2013-03-13 19:09:03.000000000 +0100 +*************** +*** 2900,2905 **** +--- 2900,2906 ---- + p_term("t_op", T_OP) + p_term("t_RI", T_CRI) + p_term("t_RV", T_CRV) ++ p_term("t_u7", T_U7) + p_term("t_Sb", T_CSB) + p_term("t_Sf", T_CSF) + p_term("t_se", T_SE) +*** ../vim-7.3.858/src/term.c 2013-02-26 14:56:24.000000000 +0100 +--- src/term.c 2013-03-13 19:18:22.000000000 +0100 +*************** +*** 111,116 **** +--- 111,121 ---- + # define CRV_SENT 2 /* did send T_CRV, waiting for answer */ + # define CRV_GOT 3 /* received T_CRV response */ + static int crv_status = CRV_GET; ++ /* Request Cursor position report: */ ++ # define U7_GET 1 /* send T_U7 when switched to RAW mode */ ++ # define U7_SENT 2 /* did send T_U7, waiting for answer */ ++ # define U7_GOT 3 /* received T_U7 response */ ++ static int u7_status = U7_GET; + # endif + + /* +*************** +*** 933,938 **** +--- 938,944 ---- + {(int)KS_CWP, IF_EB("\033[3;%d;%dt", ESC_STR "[3;%d;%dt")}, + # endif + {(int)KS_CRV, IF_EB("\033[>c", ESC_STR "[>c")}, ++ {(int)KS_U7, IF_EB("\033[6n", ESC_STR "[6n")}, + + {K_UP, IF_EB("\033O*A", ESC_STR "O*A")}, + {K_DOWN, IF_EB("\033O*B", ESC_STR "O*B")}, +*************** +*** 1221,1226 **** +--- 1227,1233 ---- + {(int)KS_CWP, "[%dCWP%d]"}, + # endif + {(int)KS_CRV, "[CRV]"}, ++ {(int)KS_U7, "[U7]"}, + {K_UP, "[KU]"}, + {K_DOWN, "[KD]"}, + {K_LEFT, "[KL]"}, +*************** +*** 1596,1601 **** +--- 1603,1609 ---- + {KS_TS, "ts"}, {KS_FS, "fs"}, + {KS_CWP, "WP"}, {KS_CWS, "WS"}, + {KS_CSI, "SI"}, {KS_CEI, "EI"}, ++ {KS_U7, "u7"}, + {(enum SpecialKey)0, NULL} + }; + +*************** +*** 3183,3189 **** + /* May need to check for T_CRV response and termcodes, it + * doesn't work in Cooked mode, an external program may get + * them. */ +! if (tmode != TMODE_RAW && crv_status == CRV_SENT) + (void)vpeekc_nomap(); + check_for_codes_from_term(); + } +--- 3191,3198 ---- + /* May need to check for T_CRV response and termcodes, it + * doesn't work in Cooked mode, an external program may get + * them. */ +! if (tmode != TMODE_RAW && (crv_status == CRV_SENT +! || u7_status == U7_SENT)) + (void)vpeekc_nomap(); + check_for_codes_from_term(); + } +*************** +*** 3245,3251 **** + # endif + { + /* May need to check for T_CRV response. */ +! if (crv_status == CRV_SENT) + (void)vpeekc_nomap(); + /* Check for termcodes first, otherwise an external program may + * get them. */ +--- 3254,3260 ---- + # endif + { + /* May need to check for T_CRV response. */ +! if (crv_status == CRV_SENT || u7_status == U7_SENT) + (void)vpeekc_nomap(); + /* Check for termcodes first, otherwise an external program may + * get them. */ +*************** +*** 3299,3304 **** +--- 3308,3355 ---- + (void)vpeekc_nomap(); + } + } ++ ++ # if defined(FEAT_MBYTE) || defined(PROTO) ++ /* ++ * Check how the terminal treats ambiguous character width (UAX #11). ++ * First, we move the cursor to (0, 0) and print a test ambiguous character ++ * \u25bd (WHITE DOWN-POINTING TRIANGLE) and query current cursor position. ++ * If the terminal treats \u25bd as single width, the position is (0, 1), ++ * or if it is treated as double width, that will be (0, 2). ++ * This function has the side effect that changes cursor position, so ++ * it must be called immediately after entering termcap mode. ++ */ ++ void ++ may_req_ambiguous_character_width() ++ { ++ if (u7_status == U7_GET ++ && cur_tmode == TMODE_RAW ++ && termcap_active ++ && p_ek ++ # ifdef UNIX ++ && isatty(1) ++ && isatty(read_cmd_fd) ++ # endif ++ && *T_U7 != NUL ++ && !option_was_set((char_u *)"ambiwidth")) ++ { ++ char_u buf[16]; ++ ++ term_windgoto(0, 0); ++ buf[mb_char2bytes(0x25bd, buf)] = 0; ++ out_str(buf); ++ out_str(T_U7); ++ u7_status = U7_SENT; ++ term_windgoto(0, 0); ++ out_str((char_u *)" "); ++ term_windgoto(0, 0); ++ /* check for the characters now, otherwise they might be eaten by ++ * get_keystroke() */ ++ out_flush(); ++ (void)vpeekc_nomap(); ++ } ++ } ++ # endif + #endif + + /* +*************** +*** 4049,4061 **** + /* URXVT mouse uses [#;#;#M, but we are matching [ */ + || key_name[0] == KS_URXVT_MOUSE) + { +! /* Check for xterm version string: "[>{x};{vers};{y}c". Also +! * eat other possible responses to t_RV, rxvt returns +! * "[?1;2c". Also accept CSI instead of [. +! * mrxvt has been reported to have "+" in the version. Assume +! * the escape sequence ends with a letter or one of "{|}~". */ +! if (*T_CRV != NUL && ((tp[0] == ESC && tp[1] == '[' && len >= 3) +! || (tp[0] == CSI && len >= 2))) + { + j = 0; + extra = 0; +--- 4100,4121 ---- + /* URXVT mouse uses [#;#;#M, but we are matching [ */ + || key_name[0] == KS_URXVT_MOUSE) + { +! /* Check for some responses from terminal start with "[" or +! * CSI. +! * +! * - xterm version string: [>{x};{vers};{y}c +! * Also eat other possible responses to t_RV, rxvt returns +! * "[?1;2c". Also accept CSI instead of [. +! * mrxvt has been reported to have "+" in the version. Assume +! * the escape sequence ends with a letter or one of "{|}~". +! * +! * - cursor position report: [{row};{col}R +! * The final byte is 'R'. now it is only used for checking for +! * ambiguous-width character state. +! */ +! if ((*T_CRV != NUL || *T_U7 != NUL) +! && ((tp[0] == ESC && tp[1] == '[' && len >= 3) +! || (tp[0] == CSI && len >= 2))) + { + j = 0; + extra = 0; +*************** +*** 4067,4074 **** + if (i == len) + return -1; /* not enough characters */ + + /* eat it when at least one digit and ending in 'c' */ +! if (i > 2 + (tp[0] != CSI) && tp[i] == 'c') + { + crv_status = CRV_GOT; + +--- 4127,4153 ---- + if (i == len) + return -1; /* not enough characters */ + ++ #ifdef FEAT_MBYTE ++ /* eat it when it has 2 arguments and ends in 'R' */ ++ if (u7_status == U7_SENT && j == 1 && tp[i] == 'R') ++ { ++ char *p = NULL; ++ ++ u7_status = U7_GOT; ++ if (extra == 2) ++ p = "single"; ++ else if (extra == 3) ++ p = "double"; ++ if (p != NULL) ++ set_option_value((char_u *)"ambw", 0L, (char_u *)p, 0); ++ key_name[0] = (int)KS_EXTRA; ++ key_name[1] = (int)KE_IGNORE; ++ slen = i + 1; ++ } ++ else ++ #endif + /* eat it when at least one digit and ending in 'c' */ +! if (*T_CRV != NUL && i > 2 + (tp[0] != CSI) && tp[i] == 'c') + { + crv_status = CRV_GOT; + +*** ../vim-7.3.858/src/term.h 2010-08-15 21:57:25.000000000 +0200 +--- src/term.h 2013-03-13 19:09:03.000000000 +0100 +*************** +*** 83,92 **** + #ifdef FEAT_VERTSPLIT + KS_CSV, /* scroll region vertical */ + #endif +! KS_OP /* original color pair */ + }; + +! #define KS_LAST KS_OP + + /* + * the terminal capabilities are stored in this array +--- 83,93 ---- + #ifdef FEAT_VERTSPLIT + KS_CSV, /* scroll region vertical */ + #endif +! KS_OP, /* original color pair */ +! KS_U7 /* request cursor position */ + }; + +! #define KS_LAST KS_U7 + + /* + * the terminal capabilities are stored in this array +*************** +*** 158,163 **** +--- 159,165 ---- + #define T_CEI (term_str(KS_CEI)) /* end insert mode */ + #define T_CRV (term_str(KS_CRV)) /* request version string */ + #define T_OP (term_str(KS_OP)) /* original color pair */ ++ #define T_U7 (term_str(KS_U7)) /* request cursor position */ + + #define TMODE_COOK 0 /* terminal mode for external cmds and Ex mode */ + #define TMODE_SLEEP 1 /* terminal mode for sleeping (cooked but no echo) */ +*** ../vim-7.3.858/src/proto/term.pro 2012-02-05 22:05:44.000000000 +0100 +--- src/proto/term.pro 2013-03-13 19:09:54.000000000 +0100 +*************** +*** 34,39 **** +--- 34,40 ---- + void starttermcap __ARGS((void)); + void stoptermcap __ARGS((void)); + void may_req_termresponse __ARGS((void)); ++ void may_req_ambiguous_character_width __ARGS((void)); + int swapping_screen __ARGS((void)); + void setmouse __ARGS((void)); + int mouse_has __ARGS((int c)); +*** ../vim-7.3.858/src/version.c 2013-03-13 19:02:37.000000000 +0100 +--- src/version.c 2013-03-13 19:27:31.000000000 +0100 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 859, + /**/ + +-- +Microsoft is to software what McDonalds is to gourmet cooking + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.860 b/7.3.860 new file mode 100644 index 0000000..fbcab26 --- /dev/null +++ b/7.3.860 @@ -0,0 +1,85 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.860 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.860 +Problem: When using --remote-expr try/catch does not work. (Andrey Radev) +Solution: Set emsg_silent instead of emsg_skip. +Files: src/main.c + + +*** ../vim-7.3.859/src/main.c 2013-03-13 19:29:24.000000000 +0100 +--- src/main.c 2013-03-13 19:46:03.000000000 +0100 +*************** +*** 4025,4032 **** + + /* + * Evaluate an expression that the client sent to a string. +- * Handles disabling error messages and disables debugging, otherwise Vim +- * hangs, waiting for "cont" to be typed. + */ + char_u * + eval_client_expr_to_string(expr) +--- 4025,4030 ---- +*************** +*** 4036,4050 **** + int save_dbl = debug_break_level; + int save_ro = redir_off; + + debug_break_level = -1; + redir_off = 0; +! ++emsg_skip; + + res = eval_to_string(expr, NULL, TRUE); + + debug_break_level = save_dbl; + redir_off = save_ro; +! --emsg_skip; + + /* A client can tell us to redraw, but not to display the cursor, so do + * that here. */ +--- 4034,4054 ---- + int save_dbl = debug_break_level; + int save_ro = redir_off; + ++ /* Disable debugging, otherwise Vim hangs, waiting for "cont" to be ++ * typed. */ + debug_break_level = -1; + redir_off = 0; +! /* Do not display error message, otherwise Vim hangs, waiting for "cont" +! * to be typed. Do generate errors so that try/catch works. */ +! ++emsg_silent; + + res = eval_to_string(expr, NULL, TRUE); + + debug_break_level = save_dbl; + redir_off = save_ro; +! --emsg_silent; +! if (emsg_silent < 0) +! emsg_silent = 0; + + /* A client can tell us to redraw, but not to display the cursor, so do + * that here. */ +*** ../vim-7.3.859/src/version.c 2013-03-13 19:29:24.000000000 +0100 +--- src/version.c 2013-03-13 20:09:47.000000000 +0100 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 860, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +42. Your virtual girlfriend finds a new net sweetheart with a larger bandwidth. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.861 b/7.3.861 new file mode 100644 index 0000000..aa91d58 --- /dev/null +++ b/7.3.861 @@ -0,0 +1,165 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.861 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.861 +Problem: ":setlocal number" clears global value of 'relativenumber'. +Solution: Do it properly. (Markus Heidelberg) +Files: src/testdir/test89.in, src/testdir/test89.ok, src/option.c + + +*** ../vim-7.3.860/src/testdir/test89.in 2013-02-14 20:10:28.000000000 +0100 +--- src/testdir/test89.in 2013-03-13 20:27:10.000000000 +0100 +*************** +*** 10,15 **** +--- 10,52 ---- + :$put ='results:' + :$put a + :$put b ++ :" ++ :set nonu nornu ++ :setglobal nu ++ :setlocal rnu ++ :redir @c | setglobal nu? | redir END ++ :set nonu nornu ++ :setglobal rnu ++ :setlocal nu ++ :redir @d | setglobal rnu? | redir END ++ :$put =':setlocal must NOT reset the other global value' ++ :$put c ++ :$put d ++ :" ++ :set nonu nornu ++ :setglobal nu ++ :setglobal rnu ++ :redir @e | setglobal nu? | redir END ++ :set nonu nornu ++ :setglobal rnu ++ :setglobal nu ++ :redir @f | setglobal rnu? | redir END ++ :$put =':setglobal MUST reset the other global value' ++ :$put e ++ :$put f ++ :" ++ :set nonu nornu ++ :set nu ++ :set rnu ++ :redir @g | setglobal nu? | redir END ++ :set nonu nornu ++ :set rnu ++ :set nu ++ :redir @h | setglobal rnu? | redir END ++ :$put =':set MUST reset the other global value' ++ :$put g ++ :$put h ++ :" + :/^results/,$w! test.out + :q! + ENDTEST +*** ../vim-7.3.860/src/testdir/test89.ok 2013-02-13 15:44:22.000000000 +0100 +--- src/testdir/test89.ok 2013-03-13 20:27:10.000000000 +0100 +*************** +*** 5,7 **** +--- 5,22 ---- + + nonumber + relativenumber ++ :setlocal must NOT reset the other global value ++ ++ number ++ ++ relativenumber ++ :setglobal MUST reset the other global value ++ ++ nonumber ++ ++ norelativenumber ++ :set MUST reset the other global value ++ ++ nonumber ++ ++ norelativenumber +*** ../vim-7.3.860/src/option.c 2013-03-13 19:29:24.000000000 +0100 +--- src/option.c 2013-03-13 20:35:20.000000000 +0100 +*************** +*** 7631,7652 **** + } + #endif + +! /* 'number', 'relativenumber' */ +! else if ((int *)varp == &curwin->w_p_nu +! || (int *)varp == &curwin->w_p_rnu) + { +! /* If 'number' is set, reset 'relativenumber'. */ +! /* If 'relativenumber' is set, reset 'number'. */ +! if ((int *)varp == &curwin->w_p_nu && curwin->w_p_nu) +! { +! curwin->w_p_rnu = FALSE; + curwin->w_allbuf_opt.wo_rnu = FALSE; +! } +! if ((int *)varp == &curwin->w_p_rnu && curwin->w_p_rnu) +! { +! curwin->w_p_nu = FALSE; + curwin->w_allbuf_opt.wo_nu = FALSE; +! } + } + + else if ((int *)varp == &curbuf->b_p_ro) +--- 7631,7663 ---- + } + #endif + +! /* If 'number' is set, reset 'relativenumber'. */ +! /* If 'relativenumber' is set, reset 'number'. */ +! else if ((int *)varp == &curwin->w_p_nu && curwin->w_p_nu) + { +! curwin->w_p_rnu = FALSE; +! +! /* Only reset the global value if the own value is set globally. */ +! if (((opt_flags & (OPT_LOCAL | OPT_GLOBAL)) == 0)) + curwin->w_allbuf_opt.wo_rnu = FALSE; +! } +! else if ((int *)varp == &curwin->w_p_rnu && curwin->w_p_rnu) +! { +! curwin->w_p_nu = FALSE; +! +! /* Only reset the global value if the own value is set globally. */ +! if (((opt_flags & (OPT_LOCAL | OPT_GLOBAL)) == 0)) + curwin->w_allbuf_opt.wo_nu = FALSE; +! } +! else if ((int *)varp == &curwin->w_allbuf_opt.wo_nu +! && curwin->w_allbuf_opt.wo_nu) +! { +! curwin->w_allbuf_opt.wo_rnu = FALSE; +! } +! else if ((int *)varp == &curwin->w_allbuf_opt.wo_rnu +! && curwin->w_allbuf_opt.wo_rnu) +! { +! curwin->w_allbuf_opt.wo_nu = FALSE; + } + + else if ((int *)varp == &curbuf->b_p_ro) +*** ../vim-7.3.860/src/version.c 2013-03-13 20:23:17.000000000 +0100 +--- src/version.c 2013-03-13 20:42:09.000000000 +0100 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 861, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +43. You tell the kids they can't use the computer because "Daddy's got work to + do" and you don't even have a job. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.862 b/7.3.862 new file mode 100644 index 0000000..3ad1836 --- /dev/null +++ b/7.3.862 @@ -0,0 +1,215 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.862 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.862 +Problem: Dragging the status line can be slow. +Solution: Look ahead and drop the drag event if there is a next one. +Files: src/eval.c, src/misc1.c, src/proto/misc1.pro, src/normal.c + + +*** ../vim-7.3.861/src/eval.c 2013-02-26 21:43:28.000000000 +0100 +--- src/eval.c 2013-03-16 14:02:36.000000000 +0100 +*************** +*** 11238,11264 **** + rettv->vval.v_string = vim_strsave(temp); + + #ifdef FEAT_MOUSE +! if (n == K_LEFTMOUSE +! || n == K_LEFTMOUSE_NM +! || n == K_LEFTDRAG +! || n == K_LEFTRELEASE +! || n == K_LEFTRELEASE_NM +! || n == K_MIDDLEMOUSE +! || n == K_MIDDLEDRAG +! || n == K_MIDDLERELEASE +! || n == K_RIGHTMOUSE +! || n == K_RIGHTDRAG +! || n == K_RIGHTRELEASE +! || n == K_X1MOUSE +! || n == K_X1DRAG +! || n == K_X1RELEASE +! || n == K_X2MOUSE +! || n == K_X2DRAG +! || n == K_X2RELEASE +! || n == K_MOUSELEFT +! || n == K_MOUSERIGHT +! || n == K_MOUSEDOWN +! || n == K_MOUSEUP) + { + int row = mouse_row; + int col = mouse_col; +--- 11238,11244 ---- + rettv->vval.v_string = vim_strsave(temp); + + #ifdef FEAT_MOUSE +! if (is_mouse_key(n)) + { + int row = mouse_row; + int col = mouse_col; +*** ../vim-7.3.861/src/misc1.c 2013-03-13 17:01:47.000000000 +0100 +--- src/misc1.c 2013-03-16 14:08:05.000000000 +0100 +*************** +*** 3288,3293 **** +--- 3288,3325 ---- + return r; + } + ++ #if defined(FEAT_MOUSE) || defined(PROTO) ++ /* ++ * Return TRUE if "c" is a mouse key. ++ */ ++ int ++ is_mouse_key(c) ++ int c; ++ { ++ return c == K_LEFTMOUSE ++ || c == K_LEFTMOUSE_NM ++ || c == K_LEFTDRAG ++ || c == K_LEFTRELEASE ++ || c == K_LEFTRELEASE_NM ++ || c == K_MIDDLEMOUSE ++ || c == K_MIDDLEDRAG ++ || c == K_MIDDLERELEASE ++ || c == K_RIGHTMOUSE ++ || c == K_RIGHTDRAG ++ || c == K_RIGHTRELEASE ++ || c == K_MOUSEDOWN ++ || c == K_MOUSEUP ++ || c == K_MOUSELEFT ++ || c == K_MOUSERIGHT ++ || c == K_X1MOUSE ++ || c == K_X1DRAG ++ || c == K_X1RELEASE ++ || c == K_X2MOUSE ++ || c == K_X2DRAG ++ || c == K_X2RELEASE; ++ } ++ #endif ++ + /* + * Get a key stroke directly from the user. + * Ignores mouse clicks and scrollbar events, except a click for the left +*************** +*** 3373,3403 **** + n = TO_SPECIAL(buf[1], buf[2]); + if (buf[1] == KS_MODIFIER + || n == K_IGNORE +! #ifdef FEAT_MOUSE +! || n == K_LEFTMOUSE_NM +! || n == K_LEFTDRAG +! || n == K_LEFTRELEASE +! || n == K_LEFTRELEASE_NM +! || n == K_MIDDLEMOUSE +! || n == K_MIDDLEDRAG +! || n == K_MIDDLERELEASE +! || n == K_RIGHTMOUSE +! || n == K_RIGHTDRAG +! || n == K_RIGHTRELEASE +! || n == K_MOUSEDOWN +! || n == K_MOUSEUP +! || n == K_MOUSELEFT +! || n == K_MOUSERIGHT +! || n == K_X1MOUSE +! || n == K_X1DRAG +! || n == K_X1RELEASE +! || n == K_X2MOUSE +! || n == K_X2DRAG +! || n == K_X2RELEASE +! # ifdef FEAT_GUI + || n == K_VER_SCROLLBAR + || n == K_HOR_SCROLLBAR +- # endif + #endif + ) + { +--- 3405,3414 ---- + n = TO_SPECIAL(buf[1], buf[2]); + if (buf[1] == KS_MODIFIER + || n == K_IGNORE +! || (is_mouse_key(n) && n != K_LEFTMOUSE) +! #ifdef FEAT_GUI + || n == K_VER_SCROLLBAR + || n == K_HOR_SCROLLBAR + #endif + ) + { +*** ../vim-7.3.861/src/proto/misc1.pro 2012-11-20 16:56:49.000000000 +0100 +--- src/proto/misc1.pro 2013-03-16 14:02:33.000000000 +0100 +*************** +*** 42,47 **** +--- 42,48 ---- + void check_status __ARGS((buf_T *buf)); + void change_warning __ARGS((int col)); + int ask_yesno __ARGS((char_u *str, int direct)); ++ int is_mouse_key __ARGS((int c)); + int get_keystroke __ARGS((void)); + int get_number __ARGS((int colon, int *mouse_used)); + int prompt_for_number __ARGS((int *mouse_used)); +*** ../vim-7.3.861/src/normal.c 2013-03-13 19:02:37.000000000 +0100 +--- src/normal.c 2013-03-16 14:09:34.000000000 +0100 +*************** +*** 2443,2449 **** + return FALSE; + } + +! which_button = get_mouse_button(KEY2TERMCAP1(c), &is_click, &is_drag); + + #ifdef FEAT_MOUSESHAPE + /* May have stopped dragging the status or separator line. The pointer is +--- 2443,2473 ---- + return FALSE; + } + +! for (;;) +! { +! which_button = get_mouse_button(KEY2TERMCAP1(c), &is_click, &is_drag); +! if (is_drag) +! { +! /* If the next character is the same mouse event then use that +! * one. Speeds up dragging the status line. */ +! if (vpeekc() != NUL) +! { +! int nc; +! int save_mouse_row = mouse_row; +! int save_mouse_col = mouse_col; +! +! /* Need to get the character, peeking doesn't get the actual +! * one. */ +! nc = safe_vgetc(); +! if (c == nc) +! continue; +! vungetc(nc); +! mouse_row = save_mouse_row; +! mouse_col = save_mouse_col; +! } +! } +! break; +! } + + #ifdef FEAT_MOUSESHAPE + /* May have stopped dragging the status or separator line. The pointer is +*** ../vim-7.3.861/src/version.c 2013-03-13 20:42:28.000000000 +0100 +--- src/version.c 2013-03-16 14:18:36.000000000 +0100 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 862, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +53. To find out what time it is, you send yourself an e-mail and check the + "Date:" field. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.863 b/7.3.863 new file mode 100644 index 0000000..64bd9ba --- /dev/null +++ b/7.3.863 @@ -0,0 +1,91 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.863 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.863 (after 7.3.859) +Problem: Problem with 'ambiwidth' detection for ANSI terminal. +Solution: Work around not recognizing a term response. (Hayaki Saito) +Files: src/term.c + + +*** ../vim-7.3.862/src/term.c 2013-03-13 19:29:24.000000000 +0100 +--- src/term.c 2013-03-16 14:29:00.000000000 +0100 +*************** +*** 3926,3933 **** + * Check at several positions in typebuf.tb_buf[], to catch something like + * "x" that can be mapped. Stop at max_offset, because characters + * after that cannot be used for mapping, and with @r commands +! * typebuf.tb_buf[] +! * can become very long. + * This is used often, KEEP IT FAST! + */ + for (offset = 0; offset < max_offset; ++offset) +--- 3926,3932 ---- + * Check at several positions in typebuf.tb_buf[], to catch something like + * "x" that can be mapped. Stop at max_offset, because characters + * after that cannot be used for mapping, and with @r commands +! * typebuf.tb_buf[] can become very long. + * This is used often, KEEP IT FAST! + */ + for (offset = 0; offset < max_offset; ++offset) +*************** +*** 4098,4104 **** + #ifdef FEAT_TERMRESPONSE + if (key_name[0] == NUL + /* URXVT mouse uses [#;#;#M, but we are matching [ */ +! || key_name[0] == KS_URXVT_MOUSE) + { + /* Check for some responses from terminal start with "[" or + * CSI. +--- 4097,4107 ---- + #ifdef FEAT_TERMRESPONSE + if (key_name[0] == NUL + /* URXVT mouse uses [#;#;#M, but we are matching [ */ +! || key_name[0] == KS_URXVT_MOUSE +! # ifdef FEAT_MBYTE +! || u7_status == U7_SENT +! # endif +! ) + { + /* Check for some responses from terminal start with "[" or + * CSI. +*************** +*** 4129,4135 **** + + #ifdef FEAT_MBYTE + /* eat it when it has 2 arguments and ends in 'R' */ +! if (u7_status == U7_SENT && j == 1 && tp[i] == 'R') + { + char *p = NULL; + +--- 4132,4138 ---- + + #ifdef FEAT_MBYTE + /* eat it when it has 2 arguments and ends in 'R' */ +! if (j == 1 && tp[i] == 'R') + { + char *p = NULL; + +*** ../vim-7.3.862/src/version.c 2013-03-16 14:20:45.000000000 +0100 +--- src/version.c 2013-03-16 14:33:16.000000000 +0100 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 863, + /**/ + +-- +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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.864 b/7.3.864 new file mode 100644 index 0000000..c8d0e20 --- /dev/null +++ b/7.3.864 @@ -0,0 +1,48 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.864 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.864 (after 7.3.862) +Problem: Can't build without the mouse feature. +Solution: Add an #ifdef. (Ike Devolder) +Files: src/misc1.c + + +*** ../vim-7.3.863/src/misc1.c 2013-03-16 14:20:45.000000000 +0100 +--- src/misc1.c 2013-03-16 21:33:08.000000000 +0100 +*************** +*** 3405,3411 **** +--- 3405,3413 ---- + n = TO_SPECIAL(buf[1], buf[2]); + if (buf[1] == KS_MODIFIER + || n == K_IGNORE ++ #ifdef FEAT_MOUSE + || (is_mouse_key(n) && n != K_LEFTMOUSE) ++ #endif + #ifdef FEAT_GUI + || n == K_VER_SCROLLBAR + || n == K_HOR_SCROLLBAR +*** ../vim-7.3.863/src/version.c 2013-03-16 14:33:32.000000000 +0100 +--- src/version.c 2013-03-16 21:34:15.000000000 +0100 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 864, + /**/ + +-- +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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.865 b/7.3.865 new file mode 100644 index 0000000..faffde0 --- /dev/null +++ b/7.3.865 @@ -0,0 +1,74 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.865 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.865 (after 7.3.862) +Problem: Mouse position may be wrong. +Solution: Let vungetc() restore the mouse position. +Files: src/getchar.c + + +*** ../vim-7.3.864/src/getchar.c 2012-06-06 12:06:10.000000000 +0200 +--- src/getchar.c 2013-03-16 21:41:02.000000000 +0100 +*************** +*** 1337,1342 **** +--- 1337,1346 ---- + + static int old_char = -1; /* character put back by vungetc() */ + static int old_mod_mask; /* mod_mask for ungotten character */ ++ #ifdef FEAT_MOUSE ++ static int old_mouse_row; /* mouse_row related to old_char */ ++ static int old_mouse_col; /* mouse_col related to old_char */ ++ #endif + + #if defined(FEAT_EVAL) || defined(FEAT_EX_EXTRA) || defined(PROTO) + +*************** +*** 1567,1572 **** +--- 1571,1580 ---- + c = old_char; + old_char = -1; + mod_mask = old_mod_mask; ++ #ifdef FEAT_MOUSE ++ mouse_row = old_mouse_row; ++ mouse_col = old_mouse_col; ++ #endif + } + else + { +*************** +*** 1877,1882 **** +--- 1885,1894 ---- + { + old_char = c; + old_mod_mask = mod_mask; ++ #ifdef FEAT_MOUSE ++ old_mouse_row = mouse_row; ++ old_mouse_col = mouse_col; ++ #endif + } + + /* +*** ../vim-7.3.864/src/version.c 2013-03-16 21:35:28.000000000 +0100 +--- src/version.c 2013-03-16 21:38:44.000000000 +0100 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 865, + /**/ + +-- +Creating the world with Emacs: M-x let-there-be-light +Creating the world with Vim: :make world + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.866 b/7.3.866 new file mode 100644 index 0000000..c0da32d --- /dev/null +++ b/7.3.866 @@ -0,0 +1,196 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.866 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.866 +Problem: Not serving the X selection during system() isn't nice. +Solution: When using fork() do not loose the selection, keep serving it. + Add a loop similar to handling I/O. (Yukihiro Nakadaira) +Files: src/os_unix.c + + +*** ../vim-7.3.865/src/os_unix.c 2013-03-13 17:50:20.000000000 +0100 +--- src/os_unix.c 2013-03-19 12:34:04.000000000 +0100 +*************** +*** 132,137 **** +--- 132,138 ---- + # include + # include + static Widget xterm_Shell = (Widget)0; ++ static void clip_update __ARGS((void)); + static void xterm_update __ARGS((void)); + # endif + +*************** +*** 1138,1148 **** +--- 1139,1151 ---- + + # if defined(FEAT_CLIPBOARD) && defined(FEAT_X11) + static void loose_clipboard __ARGS((void)); ++ # ifdef USE_SYSTEM + static void save_clipboard __ARGS((void)); + static void restore_clipboard __ARGS((void)); + + static void *clip_star_save = NULL; + static void *clip_plus_save = NULL; ++ # endif + + /* + * Called when Vim is going to sleep or execute a shell command. +*************** +*** 1164,1169 **** +--- 1167,1173 ---- + } + } + ++ # ifdef USE_SYSTEM + /* + * Save clipboard text to restore later. + */ +*************** +*** 1199,1204 **** +--- 1203,1209 ---- + clip_plus_save = NULL; + } + } ++ # endif + #endif + + /* +*************** +*** 4009,4021 **** + if (options & SHELL_COOKED) + settmode(TMODE_COOK); /* set to normal mode */ + +- # if defined(FEAT_CLIPBOARD) && defined(FEAT_X11) +- /* Disown the clipboard, because is the executed command tries to obtain a +- * selection and we own it we get a deadlock. */ +- save_clipboard(); +- loose_clipboard(); +- # endif +- + /* + * Do this loop twice: + * 1: find number of arguments +--- 4014,4019 ---- +*************** +*** 4788,4793 **** +--- 4786,4796 ---- + } + else + wait_pid = 0; ++ ++ # if defined(FEAT_CLIPBOARD) && defined(FEAT_X11) ++ /* Handle any X events, e.g. serving the clipboard. */ ++ clip_update(); ++ # endif + } + finished: + p_more = p_more_save; +*************** +*** 4814,4819 **** +--- 4817,4861 ---- + close(toshell_fd); + close(fromshell_fd); + } ++ # if defined(FEAT_CLIPBOARD) && defined(FEAT_X11) ++ else ++ { ++ /* ++ * Similar to the loop above, but only handle X events, no ++ * I/O. ++ */ ++ for (;;) ++ { ++ if (got_int) ++ { ++ /* CTRL-C sends a signal to the child, we ignore it ++ * ourselves */ ++ # ifdef HAVE_SETSID ++ kill(-pid, SIGINT); ++ # else ++ kill(0, SIGINT); ++ # endif ++ got_int = FALSE; ++ } ++ # ifdef __NeXT__ ++ wait_pid = wait4(pid, &status, WNOHANG, (struct rusage *)0); ++ # else ++ wait_pid = waitpid(pid, &status, WNOHANG); ++ # endif ++ if ((wait_pid == (pid_t)-1 && errno == ECHILD) ++ || (wait_pid == pid && WIFEXITED(status))) ++ { ++ wait_pid = pid; ++ break; ++ } ++ ++ /* Handle any X events, e.g. serving the clipboard. */ ++ clip_update(); ++ ++ mch_delay(10L, TRUE); ++ } ++ } ++ # endif + + /* + * Wait until our child has exited. +*************** +*** 4884,4892 **** + # ifdef FEAT_TITLE + resettitle(); + # endif +- # if defined(FEAT_CLIPBOARD) && defined(FEAT_X11) +- restore_clipboard(); +- # endif + vim_free(newcmd); + + return retval; +--- 4926,4931 ---- +*************** +*** 6868,6873 **** +--- 6907,6927 ---- + # endif + + /* ++ * Catch up with GUI or X events. ++ */ ++ static void ++ clip_update() ++ { ++ # ifdef FEAT_GUI ++ if (gui.in_use) ++ gui_mch_update(); ++ else ++ # endif ++ if (xterm_Shell != (Widget)0) ++ xterm_update(); ++ } ++ ++ /* + * Catch up with any queued X events. This may put keyboard input into the + * input buffer, call resize call-backs, trigger timers etc. If there is + * nothing in the X event queue (& no timers pending), then we return +*** ../vim-7.3.865/src/version.c 2013-03-16 21:42:12.000000000 +0100 +--- src/version.c 2013-03-19 12:30:16.000000000 +0100 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 866, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +71. You wonder how people walk + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.867 b/7.3.867 new file mode 100644 index 0000000..68f4312 --- /dev/null +++ b/7.3.867 @@ -0,0 +1,279 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.867 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.867 +Problem: Matchparen does not update match when using auto-indenting. + (Marc Aldorasi) +Solution: Add the TextChanged and TextChangedI autocommand events. +Files: runtime/plugin/matchparen.vim, src/main.c, src/edit.c, + src/globals.h, src/vim.h, src/fileio.c, src/proto/fileio.pro, + runtime/doc/autocmd.txt + + +*** ../vim-7.3.866/runtime/plugin/matchparen.vim 2010-08-15 21:57:19.000000000 +0200 +--- runtime/plugin/matchparen.vim 2013-03-19 13:16:46.000000000 +0100 +*************** +*** 1,6 **** + " Vim plugin for showing matching parens + " Maintainer: Bram Moolenaar +! " Last Change: 2008 Sep 03 + + " Exit quickly when: + " - this plugin was already loaded (or disabled) +--- 1,6 ---- + " Vim plugin for showing matching parens + " Maintainer: Bram Moolenaar +! " Last Change: 2013 Mar 19 + + " Exit quickly when: + " - this plugin was already loaded (or disabled) +*************** +*** 14,19 **** +--- 14,22 ---- + augroup matchparen + " Replace all matchparen autocommands + autocmd! CursorMoved,CursorMovedI,WinEnter * call s:Highlight_Matching_Pair() ++ if exists('##TextChanged') ++ autocmd! TextChanged,TextChangedI * call s:Highlight_Matching_Pair() ++ endif + augroup END + + " Skip the rest if it was already done. +*************** +*** 82,89 **** + endif + + " When not in a string or comment ignore matches inside them. + let s_skip ='synIDattr(synID(line("."), col("."), 0), "name") ' . +! \ '=~? "string\\|character\\|singlequote\\|comment"' + execute 'if' s_skip '| let s_skip = 0 | endif' + + " Limit the search to lines visible in the window. +--- 85,93 ---- + endif + + " When not in a string or comment ignore matches inside them. ++ " We match "escape" for special items, such as lispEscapeSpecial. + let s_skip ='synIDattr(synID(line("."), col("."), 0), "name") ' . +! \ '=~? "string\\|character\\|singlequote\\|escape\\|comment"' + execute 'if' s_skip '| let s_skip = 0 | endif' + + " Limit the search to lines visible in the window. +*** ../vim-7.3.866/src/main.c 2013-03-13 20:23:17.000000000 +0100 +--- src/main.c 2013-03-19 13:00:34.000000000 +0100 +*************** +*** 1168,1173 **** +--- 1168,1186 ---- + } + #endif + ++ #ifdef FEAT_AUTOCMD ++ /* Trigger TextChanged if b_changedtick differs. */ ++ if (!finish_op && has_textchanged() ++ && last_changedtick != curbuf->b_changedtick) ++ { ++ if (last_changedtick_buf == curbuf) ++ apply_autocmds(EVENT_TEXTCHANGED, NULL, NULL, ++ FALSE, curbuf); ++ last_changedtick_buf = curbuf; ++ last_changedtick = curbuf->b_changedtick; ++ } ++ #endif ++ + #if defined(FEAT_DIFF) && defined(FEAT_SCROLLBIND) + /* Scroll-binding for diff mode may have been postponed until + * here. Avoids doing it for every change. */ +*** ../vim-7.3.866/src/edit.c 2013-03-07 19:38:49.000000000 +0100 +--- src/edit.c 2013-03-19 13:08:46.000000000 +0100 +*************** +*** 1593,1598 **** +--- 1593,1613 ---- + last_cursormoved = curwin->w_cursor; + } + #endif ++ #ifdef FEAT_AUTOCMD ++ /* Trigger TextChangedI if b_changedtick differs. */ ++ if (!ready && has_textchangedI() ++ && last_changedtick != curbuf->b_changedtick ++ # ifdef FEAT_INS_EXPAND ++ && !pum_visible() ++ # endif ++ ) ++ { ++ if (last_changedtick_buf == curbuf) ++ apply_autocmds(EVENT_TEXTCHANGEDI, NULL, NULL, FALSE, curbuf); ++ last_changedtick_buf = curbuf; ++ last_changedtick = curbuf->b_changedtick; ++ } ++ #endif + if (must_redraw) + update_screen(0); + else if (clear_cmdline || redraw_cmdline) +*** ../vim-7.3.866/src/globals.h 2013-02-26 14:56:24.000000000 +0100 +--- src/globals.h 2013-03-19 13:11:35.000000000 +0100 +*************** +*** 1057,1067 **** + EXTERN int autocmd_bufnr INIT(= 0); /* fnum for on cmdline */ + EXTERN char_u *autocmd_match INIT(= NULL); /* name for on cmdline */ + EXTERN int did_cursorhold INIT(= FALSE); /* set when CursorHold t'gerd */ +! EXTERN pos_T last_cursormoved /* for CursorMoved event */ + # ifdef DO_INIT + = INIT_POS_T(0, 0, 0) + # endif + ; + #endif + + #ifdef FEAT_WINDOWS +--- 1057,1069 ---- + EXTERN int autocmd_bufnr INIT(= 0); /* fnum for on cmdline */ + EXTERN char_u *autocmd_match INIT(= NULL); /* name for on cmdline */ + EXTERN int did_cursorhold INIT(= FALSE); /* set when CursorHold t'gerd */ +! EXTERN pos_T last_cursormoved /* for CursorMoved event */ + # ifdef DO_INIT + = INIT_POS_T(0, 0, 0) + # endif + ; ++ EXTERN int last_changedtick INIT(= 0); /* for TextChanged event */ ++ EXTERN buf_T *last_changedtick_buf INIT(= NULL); + #endif + + #ifdef FEAT_WINDOWS +*** ../vim-7.3.866/src/vim.h 2013-02-26 14:56:24.000000000 +0100 +--- src/vim.h 2013-03-19 13:07:00.000000000 +0100 +*************** +*** 1300,1305 **** +--- 1300,1307 ---- + EVENT_TABENTER, /* after entering a tab page */ + EVENT_SHELLCMDPOST, /* after ":!cmd" */ + EVENT_SHELLFILTERPOST, /* after ":1,2!cmd", ":w !cmd", ":r !cmd". */ ++ EVENT_TEXTCHANGED, /* text was modified */ ++ EVENT_TEXTCHANGEDI, /* text was modified in Insert mode*/ + NUM_EVENTS /* MUST be the last one */ + }; + +*** ../vim-7.3.866/src/fileio.c 2013-01-30 14:13:52.000000000 +0100 +--- src/fileio.c 2013-03-19 13:08:31.000000000 +0100 +*************** +*** 7713,7718 **** +--- 7713,7720 ---- + {"TabLeave", EVENT_TABLEAVE}, + {"TermChanged", EVENT_TERMCHANGED}, + {"TermResponse", EVENT_TERMRESPONSE}, ++ {"TextChanged", EVENT_TEXTCHANGED}, ++ {"TextChangedI", EVENT_TEXTCHANGEDI}, + {"User", EVENT_USER}, + {"VimEnter", EVENT_VIMENTER}, + {"VimLeave", EVENT_VIMLEAVE}, +*************** +*** 9138,9143 **** +--- 9140,9163 ---- + } + + /* ++ * Return TRUE when there is a TextChanged autocommand defined. ++ */ ++ int ++ has_textchanged() ++ { ++ return (first_autopat[(int)EVENT_TEXTCHANGED] != NULL); ++ } ++ ++ /* ++ * Return TRUE when there is a TextChangedI autocommand defined. ++ */ ++ int ++ has_textchangedI() ++ { ++ return (first_autopat[(int)EVENT_TEXTCHANGEDI] != NULL); ++ } ++ ++ /* + * Return TRUE when there is an InsertCharPre autocommand defined. + */ + int +*** ../vim-7.3.866/src/proto/fileio.pro 2012-12-05 19:13:11.000000000 +0100 +--- src/proto/fileio.pro 2013-03-19 13:10:13.000000000 +0100 +*************** +*** 44,49 **** +--- 44,51 ---- + int trigger_cursorhold __ARGS((void)); + int has_cursormoved __ARGS((void)); + int has_cursormovedI __ARGS((void)); ++ int has_textchanged __ARGS((void)); ++ int has_textchangedI __ARGS((void)); + int has_insertcharpre __ARGS((void)); + void block_autocmds __ARGS((void)); + void unblock_autocmds __ARGS((void)); +*** ../vim-7.3.866/runtime/doc/autocmd.txt 2012-03-07 20:13:44.000000000 +0100 +--- runtime/doc/autocmd.txt 2013-03-19 13:22:37.000000000 +0100 +*************** +*** 805,817 **** + TermResponse After the response to |t_RV| is received from + the terminal. The value of |v:termresponse| + can be used to do things depending on the +! terminal version. + *User* + User Never executed automatically. To be used for + autocommands that are only executed with + ":doautocmd". + *UserGettingBored* +! UserGettingBored When the user hits CTRL-C. Just kidding! :-) + *VimEnter* + VimEnter After doing all the startup stuff, including + loading .vimrc files, executing the "-c cmd" +--- 828,858 ---- + TermResponse After the response to |t_RV| is received from + the terminal. The value of |v:termresponse| + can be used to do things depending on the +! terminal version. Note that this event may be +! triggered halfway executing another event, +! especially if file I/O, a shell command or +! anything else that takes time is involved. +! *TextChanged* +! TextChanged After a change was made to the text in the +! current buffer in Normal mode. That is when +! |b:changedtick| has changed. +! Not triggered when there is typeahead or when +! an operator is pending. +! Careful: This is triggered very often, don't +! do anything that the user does not expect or +! that is slow. +! *TextChangedI* +! TextChangedI After a change was made to the text in the +! current buffer in Insert mode. +! Not triggered when the popup menu is visible. +! Otherwise the same as TextChanged. + *User* + User Never executed automatically. To be used for + autocommands that are only executed with + ":doautocmd". + *UserGettingBored* +! UserGettingBored When the user presses the same key 42 times. +! Just kidding! :-) + *VimEnter* + VimEnter After doing all the startup stuff, including + loading .vimrc files, executing the "-c cmd" +*** ../vim-7.3.866/src/version.c 2013-03-19 12:35:33.000000000 +0100 +--- src/version.c 2013-03-19 13:29:58.000000000 +0100 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 867, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +73. You give your dog used motherboards instead of bones + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.868 b/7.3.868 new file mode 100644 index 0000000..56a0225 --- /dev/null +++ b/7.3.868 @@ -0,0 +1,90 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.868 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.868 +Problem: When at the hit-return prompt and using "k" while no text has + scrolled off screen, then using "j", an empty line is displayed. +Solution: Only act on "k" when text scrolled off screen. Also accept + page-up and page-down. (cptstubing) +Files: src/message.c + + +*** ../vim-7.3.867/src/message.c 2012-11-14 18:10:49.000000000 +0100 +--- src/message.c 2013-03-19 13:50:16.000000000 +0100 +*************** +*** 976,985 **** + */ + if (p_more && !p_cp) + { +! if (c == 'b' || c == 'k' || c == 'u' || c == 'g' || c == K_UP) + { +! /* scroll back to show older messages */ +! do_more_prompt(c); + if (quit_more) + { + c = CAR; /* just pretend CR was hit */ +--- 976,997 ---- + */ + if (p_more && !p_cp) + { +! if (c == 'b' || c == 'k' || c == 'u' || c == 'g' +! || c == K_UP || c == K_PAGEUP) + { +! if (msg_scrolled > Rows) +! /* scroll back to show older messages */ +! do_more_prompt(c); +! else +! { +! msg_didout = FALSE; +! c = K_IGNORE; +! msg_col = +! #ifdef FEAT_RIGHTLEFT +! cmdmsg_rl ? Columns - 1 : +! #endif +! 0; +! } + if (quit_more) + { + c = CAR; /* just pretend CR was hit */ +*************** +*** 993,999 **** + } + } + else if (msg_scrolled > Rows - 2 +! && (c == 'j' || c == K_DOWN || c == 'd' || c == 'f')) + c = K_IGNORE; + } + } while ((had_got_int && c == Ctrl_C) +--- 1005,1012 ---- + } + } + else if (msg_scrolled > Rows - 2 +! && (c == 'j' || c == 'd' || c == 'f' +! || c == K_DOWN || c == K_PAGEDOWN)) + c = K_IGNORE; + } + } while ((had_got_int && c == Ctrl_C) +*** ../vim-7.3.867/src/version.c 2013-03-19 13:33:18.000000000 +0100 +--- src/version.c 2013-03-19 13:53:02.000000000 +0100 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 868, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +74. Your most erotic dreams are about cybersex + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.869 b/7.3.869 new file mode 100644 index 0000000..a848f0c --- /dev/null +++ b/7.3.869 @@ -0,0 +1,358 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.869 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.869 +Problem: bufwinnr() matches buffers in other tabs. +Solution: For bufwinnr() and ? only match buffers in the current tab. + (Alexey Radkov) +Files: src/buffer.c, src/diff.c, src/eval.c, src/ex_docmd.c, + src/if_perl.xs, src/proto/buffer.pro + + +*** ../vim-7.3.868/src/buffer.c 2013-02-17 15:45:34.000000000 +0100 +--- src/buffer.c 2013-03-19 14:19:17.000000000 +0100 +*************** +*** 928,934 **** + if (!VIM_ISDIGIT(*arg)) + { + p = skiptowhite_esc(arg); +! bnr = buflist_findpat(arg, p, command == DOBUF_WIPE, FALSE); + if (bnr < 0) /* failed */ + break; + arg = p; +--- 928,935 ---- + if (!VIM_ISDIGIT(*arg)) + { + p = skiptowhite_esc(arg); +! bnr = buflist_findpat(arg, p, command == DOBUF_WIPE, +! FALSE, FALSE); + if (bnr < 0) /* failed */ + break; + arg = p; +*************** +*** 2129,2146 **** + return NULL; + } + +! #if defined(FEAT_LISTCMDS) || defined(FEAT_EVAL) || defined(FEAT_PERL) || defined(PROTO) + /* + * Find file in buffer list by a regexp pattern. + * Return fnum of the found buffer. + * Return < 0 for error. + */ + int +! buflist_findpat(pattern, pattern_end, unlisted, diffmode) + char_u *pattern; + char_u *pattern_end; /* pointer to first char after pattern */ + int unlisted; /* find unlisted buffers */ + int diffmode UNUSED; /* find diff-mode buffers only */ + { + buf_T *buf; + regprog_T *prog; +--- 2130,2149 ---- + return NULL; + } + +! #if defined(FEAT_LISTCMDS) || defined(FEAT_EVAL) || defined(FEAT_PERL) \ +! || defined(PROTO) + /* + * Find file in buffer list by a regexp pattern. + * Return fnum of the found buffer. + * Return < 0 for error. + */ + int +! buflist_findpat(pattern, pattern_end, unlisted, diffmode, curtab_only) + char_u *pattern; + char_u *pattern_end; /* pointer to first char after pattern */ + int unlisted; /* find unlisted buffers */ + int diffmode UNUSED; /* find diff-mode buffers only */ ++ int curtab_only; /* find buffers in current tab only */ + { + buf_T *buf; + regprog_T *prog; +*************** +*** 2208,2213 **** +--- 2211,2233 ---- + #endif + && buflist_match(prog, buf) != NULL) + { ++ if (curtab_only) ++ { ++ /* Ignore the match if the buffer is not open in ++ * the current tab. */ ++ #ifdef FEAT_WINDOWS ++ win_T *wp; ++ ++ for (wp = firstwin; wp != NULL; wp = wp->w_next) ++ if (wp->w_buffer == buf) ++ break; ++ if (wp == NULL) ++ continue; ++ #else ++ if (curwin->w_buffer != buf) ++ continue; ++ #endif ++ } + if (match >= 0) /* already found a match */ + { + match = -2; +*** ../vim-7.3.868/src/diff.c 2012-10-21 22:18:17.000000000 +0200 +--- src/diff.c 2013-03-19 14:11:40.000000000 +0100 +*************** +*** 2152,2158 **** + i = atol((char *)eap->arg); + else + { +! i = buflist_findpat(eap->arg, p, FALSE, TRUE); + if (i < 0) + return; /* error message already given */ + } +--- 2152,2158 ---- + i = atol((char *)eap->arg); + else + { +! i = buflist_findpat(eap->arg, p, FALSE, TRUE, FALSE); + if (i < 0) + return; /* error message already given */ + } +*** ../vim-7.3.868/src/eval.c 2013-03-16 14:20:45.000000000 +0100 +--- src/eval.c 2013-03-19 14:11:40.000000000 +0100 +*************** +*** 9019,9032 **** + rettv->vval.v_number = (buf != NULL && buf->b_ml.ml_mfp != NULL); + } + +! static buf_T *get_buf_tv __ARGS((typval_T *tv)); + + /* + * Get buffer by number or pattern. + */ + static buf_T * +! get_buf_tv(tv) + typval_T *tv; + { + char_u *name = tv->vval.v_string; + int save_magic; +--- 9019,9033 ---- + rettv->vval.v_number = (buf != NULL && buf->b_ml.ml_mfp != NULL); + } + +! static buf_T *get_buf_tv __ARGS((typval_T *tv, int curtab_only)); + + /* + * Get buffer by number or pattern. + */ + static buf_T * +! get_buf_tv(tv, curtab_only) + typval_T *tv; ++ int curtab_only; + { + char_u *name = tv->vval.v_string; + int save_magic; +*************** +*** 9049,9055 **** + p_cpo = (char_u *)""; + + buf = buflist_findnr(buflist_findpat(name, name + STRLEN(name), +! TRUE, FALSE)); + + p_magic = save_magic; + p_cpo = save_cpo; +--- 9050,9056 ---- + p_cpo = (char_u *)""; + + buf = buflist_findnr(buflist_findpat(name, name + STRLEN(name), +! TRUE, FALSE, curtab_only)); + + p_magic = save_magic; + p_cpo = save_cpo; +*************** +*** 9073,9079 **** + + (void)get_tv_number(&argvars[0]); /* issue errmsg if type error */ + ++emsg_off; +! buf = get_buf_tv(&argvars[0]); + rettv->v_type = VAR_STRING; + if (buf != NULL && buf->b_fname != NULL) + rettv->vval.v_string = vim_strsave(buf->b_fname); +--- 9074,9080 ---- + + (void)get_tv_number(&argvars[0]); /* issue errmsg if type error */ + ++emsg_off; +! buf = get_buf_tv(&argvars[0], FALSE); + rettv->v_type = VAR_STRING; + if (buf != NULL && buf->b_fname != NULL) + rettv->vval.v_string = vim_strsave(buf->b_fname); +*************** +*** 9096,9102 **** + + (void)get_tv_number(&argvars[0]); /* issue errmsg if type error */ + ++emsg_off; +! buf = get_buf_tv(&argvars[0]); + --emsg_off; + + /* If the buffer isn't found and the second argument is not zero create a +--- 9097,9103 ---- + + (void)get_tv_number(&argvars[0]); /* issue errmsg if type error */ + ++emsg_off; +! buf = get_buf_tv(&argvars[0], FALSE); + --emsg_off; + + /* If the buffer isn't found and the second argument is not zero create a +*************** +*** 9131,9137 **** + + (void)get_tv_number(&argvars[0]); /* issue errmsg if type error */ + ++emsg_off; +! buf = get_buf_tv(&argvars[0]); + #ifdef FEAT_WINDOWS + for (wp = firstwin; wp; wp = wp->w_next) + { +--- 9132,9138 ---- + + (void)get_tv_number(&argvars[0]); /* issue errmsg if type error */ + ++emsg_off; +! buf = get_buf_tv(&argvars[0], TRUE); + #ifdef FEAT_WINDOWS + for (wp = firstwin; wp; wp = wp->w_next) + { +*************** +*** 11095,11101 **** + + (void)get_tv_number(&argvars[0]); /* issue errmsg if type error */ + ++emsg_off; +! buf = get_buf_tv(&argvars[0]); + --emsg_off; + + lnum = get_tv_lnum_buf(&argvars[1], buf); +--- 11096,11102 ---- + + (void)get_tv_number(&argvars[0]); /* issue errmsg if type error */ + ++emsg_off; +! buf = get_buf_tv(&argvars[0], FALSE); + --emsg_off; + + lnum = get_tv_lnum_buf(&argvars[1], buf); +*************** +*** 11123,11129 **** + (void)get_tv_number(&argvars[0]); /* issue errmsg if type error */ + varname = get_tv_string_chk(&argvars[1]); + ++emsg_off; +! buf = get_buf_tv(&argvars[0]); + + if (argvars[2].v_type != VAR_UNKNOWN) + /* set the default value */ +--- 11124,11130 ---- + (void)get_tv_number(&argvars[0]); /* issue errmsg if type error */ + varname = get_tv_string_chk(&argvars[1]); + ++emsg_off; +! buf = get_buf_tv(&argvars[0], FALSE); + + if (argvars[2].v_type != VAR_UNKNOWN) + /* set the default value */ +*************** +*** 16216,16222 **** + return; + (void)get_tv_number(&argvars[0]); /* issue errmsg if type error */ + varname = get_tv_string_chk(&argvars[1]); +! buf = get_buf_tv(&argvars[0]); + varp = &argvars[2]; + + if (buf != NULL && varname != NULL && varp != NULL) +--- 16217,16223 ---- + return; + (void)get_tv_number(&argvars[0]); /* issue errmsg if type error */ + varname = get_tv_string_chk(&argvars[1]); +! buf = get_buf_tv(&argvars[0], FALSE); + varp = &argvars[2]; + + if (buf != NULL && varname != NULL && varp != NULL) +*** ../vim-7.3.868/src/ex_docmd.c 2013-03-13 18:30:39.000000000 +0100 +--- src/ex_docmd.c 2013-03-19 14:15:17.000000000 +0100 +*************** +*** 2645,2651 **** + while (p > ea.arg && vim_iswhite(p[-1])) + --p; + } +! ea.line2 = buflist_findpat(ea.arg, p, (ea.argt & BUFUNL) != 0, FALSE); + if (ea.line2 < 0) /* failed */ + goto doend; + ea.addr_count = 1; +--- 2645,2652 ---- + while (p > ea.arg && vim_iswhite(p[-1])) + --p; + } +! ea.line2 = buflist_findpat(ea.arg, p, (ea.argt & BUFUNL) != 0, +! FALSE, FALSE); + if (ea.line2 < 0) /* failed */ + goto doend; + ea.addr_count = 1; +*** ../vim-7.3.868/src/if_perl.xs 2013-02-14 22:19:47.000000000 +0100 +--- src/if_perl.xs 2013-03-19 14:15:46.000000000 +0100 +*************** +*** 1056,1062 **** + + pat = (char_u *)SvPV(sv, len); + ++emsg_off; +! b = buflist_findpat(pat, pat+len, FALSE, FALSE); + --emsg_off; + } + +--- 1056,1062 ---- + + pat = (char_u *)SvPV(sv, len); + ++emsg_off; +! b = buflist_findpat(pat, pat+len, FALSE, FALSE, FALSE); + --emsg_off; + } + +*** ../vim-7.3.868/src/proto/buffer.pro 2012-10-03 18:24:55.000000000 +0200 +--- src/proto/buffer.pro 2013-03-19 14:16:22.000000000 +0100 +*************** +*** 17,23 **** + void buflist_getfpos __ARGS((void)); + buf_T *buflist_findname_exp __ARGS((char_u *fname)); + buf_T *buflist_findname __ARGS((char_u *ffname)); +! int buflist_findpat __ARGS((char_u *pattern, char_u *pattern_end, int unlisted, int diffmode)); + int ExpandBufnames __ARGS((char_u *pat, int *num_file, char_u ***file, int options)); + buf_T *buflist_findnr __ARGS((int nr)); + char_u *buflist_nr2name __ARGS((int n, int fullname, int helptail)); +--- 17,23 ---- + void buflist_getfpos __ARGS((void)); + buf_T *buflist_findname_exp __ARGS((char_u *fname)); + buf_T *buflist_findname __ARGS((char_u *ffname)); +! int buflist_findpat __ARGS((char_u *pattern, char_u *pattern_end, int unlisted, int diffmode, int curtab_only)); + int ExpandBufnames __ARGS((char_u *pat, int *num_file, char_u ***file, int options)); + buf_T *buflist_findnr __ARGS((int nr)); + char_u *buflist_nr2name __ARGS((int n, int fullname, int helptail)); +*** ../vim-7.3.868/src/version.c 2013-03-19 13:56:03.000000000 +0100 +--- src/version.c 2013-03-19 14:23:42.000000000 +0100 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 869, + /**/ + +-- +Proof techniques #2: Proof by Oddity. + SAMPLE: To prove that horses have an infinite number of legs. +(1) Horses have an even number of legs. +(2) They have two legs in back and fore legs in front. +(3) This makes a total of six legs, which certainly is an odd number of + legs for a horse. +(4) But the only number that is both odd and even is infinity. +(5) Therefore, horses must have an infinite number of legs. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.870 b/7.3.870 new file mode 100644 index 0000000..38bb219 --- /dev/null +++ b/7.3.870 @@ -0,0 +1,203 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.870 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.870 +Problem: Compiler warnings when using MingW 4.5.3. +Solution: Do not use MAKEINTRESOURCE. Adjust #if. (Ken Takata) +Files: src/gui_w32.c, src/gui_w48.c, src/os_mswin.c, src/os_win32.c, + src/os_win32.h + + +*** ../vim-7.3.869/src/gui_w32.c 2012-11-20 16:53:34.000000000 +0100 +--- src/gui_w32.c 2013-03-19 14:45:24.000000000 +0100 +*************** +*** 1614,1620 **** + #endif + + #ifdef FEAT_EVAL +! # if _MSC_VER < 1400 + /* HandleToLong() only exists in compilers that can do 64 bit builds */ + # define HandleToLong(h) ((long)(h)) + # endif +--- 1614,1620 ---- + #endif + + #ifdef FEAT_EVAL +! # ifndef HandleToLong + /* HandleToLong() only exists in compilers that can do 64 bit builds */ + # define HandleToLong(h) ((long)(h)) + # endif +*** ../vim-7.3.869/src/gui_w48.c 2013-01-25 19:28:34.000000000 +0100 +--- src/gui_w48.c 2013-03-19 14:46:35.000000000 +0100 +*************** +*** 3265,3291 **** + * misc2.c! */ + static LPCSTR mshape_idcs[] = + { +! MAKEINTRESOURCE(IDC_ARROW), /* arrow */ +! MAKEINTRESOURCE(0), /* blank */ +! MAKEINTRESOURCE(IDC_IBEAM), /* beam */ +! MAKEINTRESOURCE(IDC_SIZENS), /* updown */ +! MAKEINTRESOURCE(IDC_SIZENS), /* udsizing */ +! MAKEINTRESOURCE(IDC_SIZEWE), /* leftright */ +! MAKEINTRESOURCE(IDC_SIZEWE), /* lrsizing */ +! MAKEINTRESOURCE(IDC_WAIT), /* busy */ + #ifdef WIN3264 +! MAKEINTRESOURCE(IDC_NO), /* no */ + #else +! MAKEINTRESOURCE(IDC_ICON), /* no */ + #endif +! MAKEINTRESOURCE(IDC_ARROW), /* crosshair */ +! MAKEINTRESOURCE(IDC_ARROW), /* hand1 */ +! MAKEINTRESOURCE(IDC_ARROW), /* hand2 */ +! MAKEINTRESOURCE(IDC_ARROW), /* pencil */ +! MAKEINTRESOURCE(IDC_ARROW), /* question */ +! MAKEINTRESOURCE(IDC_ARROW), /* right-arrow */ +! MAKEINTRESOURCE(IDC_UPARROW), /* up-arrow */ +! MAKEINTRESOURCE(IDC_ARROW) /* last one */ + }; + + void +--- 3265,3291 ---- + * misc2.c! */ + static LPCSTR mshape_idcs[] = + { +! IDC_ARROW, /* arrow */ +! MAKEINTRESOURCE(0), /* blank */ +! IDC_IBEAM, /* beam */ +! IDC_SIZENS, /* updown */ +! IDC_SIZENS, /* udsizing */ +! IDC_SIZEWE, /* leftright */ +! IDC_SIZEWE, /* lrsizing */ +! IDC_WAIT, /* busy */ + #ifdef WIN3264 +! IDC_NO, /* no */ + #else +! IDC_ICON, /* no */ + #endif +! IDC_ARROW, /* crosshair */ +! IDC_ARROW, /* hand1 */ +! IDC_ARROW, /* hand2 */ +! IDC_ARROW, /* pencil */ +! IDC_ARROW, /* question */ +! IDC_ARROW, /* right-arrow */ +! IDC_UPARROW, /* up-arrow */ +! IDC_ARROW /* last one */ + }; + + void +*************** +*** 3298,3304 **** + else + { + if (shape >= MSHAPE_NUMBERED) +! idc = MAKEINTRESOURCE(IDC_ARROW); + else + idc = mshape_idcs[shape]; + #ifdef SetClassLongPtr +--- 3298,3304 ---- + else + { + if (shape >= MSHAPE_NUMBERED) +! idc = IDC_ARROW; + else + idc = mshape_idcs[shape]; + #ifdef SetClassLongPtr +*** ../vim-7.3.869/src/os_mswin.c 2013-02-26 14:56:24.000000000 +0100 +--- src/os_mswin.c 2013-03-19 14:45:24.000000000 +0100 +*************** +*** 184,195 **** +--- 184,197 ---- + } + # endif + ++ # if !defined(__MINGW32__) || (__GNUC__ < 4) + int _chdrive(int drive) + { + char temp [3] = "-:"; + temp[0] = drive + 'A' - 1; + return !SetCurrentDirectory(temp); + } ++ # endif + #else + # ifdef __BORLANDC__ + /* being a more ANSI compliant compiler, BorlandC doesn't define _stricoll: +*** ../vim-7.3.869/src/os_win32.c 2013-02-26 14:56:24.000000000 +0100 +--- src/os_win32.c 2013-03-19 14:45:24.000000000 +0100 +*************** +*** 163,169 **** + + /* Enable common dialogs input unicode from IME if posible. */ + #ifdef FEAT_MBYTE +! LRESULT (WINAPI *pDispatchMessage)(LPMSG) = DispatchMessage; + BOOL (WINAPI *pGetMessage)(LPMSG, HWND, UINT, UINT) = GetMessage; + BOOL (WINAPI *pIsDialogMessage)(HWND, LPMSG) = IsDialogMessage; + BOOL (WINAPI *pPeekMessage)(LPMSG, HWND, UINT, UINT, UINT) = PeekMessage; +--- 163,169 ---- + + /* Enable common dialogs input unicode from IME if posible. */ + #ifdef FEAT_MBYTE +! LRESULT (WINAPI *pDispatchMessage)(CONST MSG *) = DispatchMessage; + BOOL (WINAPI *pGetMessage)(LPMSG, HWND, UINT, UINT) = GetMessage; + BOOL (WINAPI *pIsDialogMessage)(HWND, LPMSG) = IsDialogMessage; + BOOL (WINAPI *pPeekMessage)(LPMSG, HWND, UINT, UINT, UINT) = PeekMessage; +*************** +*** 3464,3470 **** + && (lnum != curbuf->b_ml.ml_line_count + || curbuf->b_p_eol))) + { +! WriteFile(g_hChildStd_IN_Wr, "\n", 1, &ignored, NULL); + } + + ++lnum; +--- 3464,3470 ---- + && (lnum != curbuf->b_ml.ml_line_count + || curbuf->b_p_eol))) + { +! WriteFile(g_hChildStd_IN_Wr, "\n", 1, (LPDWORD)&ignored, NULL); + } + + ++lnum; +*** ../vim-7.3.869/src/os_win32.h 2012-11-20 16:53:34.000000000 +0100 +--- src/os_win32.h 2013-03-19 14:45:24.000000000 +0100 +*************** +*** 204,210 **** + /* Enable common dialogs input unicode from IME if posible. */ + #ifdef FEAT_MBYTE + /* The variables are defined in os_win32.c. */ +! extern LRESULT (WINAPI *pDispatchMessage)(LPMSG); + extern BOOL (WINAPI *pGetMessage)(LPMSG, HWND, UINT, UINT); + extern BOOL (WINAPI *pIsDialogMessage)(HWND, LPMSG); + extern BOOL (WINAPI *pPeekMessage)(LPMSG, HWND, UINT, UINT, UINT); +--- 204,210 ---- + /* Enable common dialogs input unicode from IME if posible. */ + #ifdef FEAT_MBYTE + /* The variables are defined in os_win32.c. */ +! extern LRESULT (WINAPI *pDispatchMessage)(CONST MSG *); + extern BOOL (WINAPI *pGetMessage)(LPMSG, HWND, UINT, UINT); + extern BOOL (WINAPI *pIsDialogMessage)(HWND, LPMSG); + extern BOOL (WINAPI *pPeekMessage)(LPMSG, HWND, UINT, UINT, UINT); +*** ../vim-7.3.869/src/version.c 2013-03-19 14:25:50.000000000 +0100 +--- src/version.c 2013-03-19 14:45:42.000000000 +0100 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 870, + /**/ + +-- +Q: How many legs does a giraffe have? +A: Eight: two in front, two behind, two on the left and two on the right + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.871 b/7.3.871 new file mode 100644 index 0000000..25ab1dd --- /dev/null +++ b/7.3.871 @@ -0,0 +1,102 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.871 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.871 +Problem: search('^$', 'c') does not use the empty match under the cursor. +Solution: Special handling of the 'c' flag. (Christian Brabandt) + Add tests. +Files: src/search.c, src/testdir/test14.in, src/testdir/test14.ok + + +*** ../vim-7.3.870/src/search.c 2013-02-20 18:39:07.000000000 +0100 +--- src/search.c 2013-03-19 15:23:13.000000000 +0100 +*************** +*** 727,732 **** +--- 727,734 ---- + ++matchcol; + } + } ++ if (options & SEARCH_START) ++ break; + if (ptr[matchcol] == NUL + || (nmatched = vim_regexec_multi(®match, + win, buf, lnum + matchpos.lnum, +*** ../vim-7.3.870/src/testdir/test14.in 2010-08-15 21:57:29.000000000 +0200 +--- src/testdir/test14.in 2013-03-19 15:21:54.000000000 +0100 +*************** +*** 2,7 **** +--- 2,8 ---- + Also test ":s/pat/sub/" with different ~s in sub. + Also test for ^Vxff and ^Vo123 in Insert mode. + Also test "[m", "]m", "[M" and "]M" ++ Also test search() + + STARTTEST + :so small.vim +*************** +*** 34,39 **** +--- 35,50 ---- + 2[MaJ:.w >>test.out + k[MaK:.w >>test.out + 3[MaL:.w >>test.out ++ :" ++ /^foobar ++ :let startline = line('.') ++ :call search('foobar', 'c') ++ :call append(line('$'), line('.') - startline) ++ j:call search('^$', 'c') ++ :call append(line('$'), line('.') - startline) ++ :call search('^$', 'bc') ++ :call append(line('$'), line('.') - startline) ++ :/^search()/,$w >>test.out + :qa! + ENDTEST + +*************** +*** 64,66 **** +--- 75,82 ---- + } + } e3 + } ++ ++ foobar ++ ++ ++ search() +*** ../vim-7.3.870/src/testdir/test14.ok 2010-08-15 21:57:29.000000000 +0200 +--- src/testdir/test14.ok 2013-03-19 15:26:18.000000000 +0100 +*************** +*** 15,17 **** +--- 15,21 ---- + }JH e3 + }K e2 + {LF ++ search() ++ 0 ++ 1 ++ 1 +*** ../vim-7.3.870/src/version.c 2013-03-19 14:48:25.000000000 +0100 +--- src/version.c 2013-03-19 15:26:38.000000000 +0100 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 871, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +75. You start wondering whether you could actually upgrade your brain + with a Pentium Pro microprocessor 80. The upgrade works just fine. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.872 b/7.3.872 new file mode 100644 index 0000000..0e407f4 --- /dev/null +++ b/7.3.872 @@ -0,0 +1,524 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.872 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.872 +Problem: On some systems case of file names is always ignored, on others + never. +Solution: Add the 'fileignorecase' option to control this at runtime. + Implies 'wildignorecase'. +Files: src/buffer.c, src/edit.c, src/ex_cmds2.c, src/ex_getln.c, + src/fileio.c, src/misc1.c, src/misc2.c, src/option.c, + src/option.h, src/vim.h, runtime/doc/options.txt + + +*** ../vim-7.3.871/src/buffer.c 2013-03-19 14:25:50.000000000 +0100 +--- src/buffer.c 2013-03-19 16:03:42.000000000 +0100 +*************** +*** 2401,2412 **** + if (name != NULL) + { + regmatch.regprog = prog; +! #ifdef CASE_INSENSITIVE_FILENAME +! regmatch.rm_ic = TRUE; /* Always ignore case */ +! #else +! regmatch.rm_ic = FALSE; /* Never ignore case */ +! #endif +! + if (vim_regexec(®match, name, (colnr_T)0)) + match = name; + else +--- 2401,2407 ---- + if (name != NULL) + { + regmatch.regprog = prog; +! regmatch.rm_ic = p_fic; /* ignore case when 'fileignorecase' is set */ + if (vim_regexec(®match, name, (colnr_T)0)) + match = name; + else +*** ../vim-7.3.871/src/edit.c 2013-03-19 13:33:18.000000000 +0100 +--- src/edit.c 2013-03-19 15:43:19.000000000 +0100 +*************** +*** 4336,4348 **** + + /* May change home directory back to "~". */ + tilde_replace(compl_pattern, num_matches, matches); +! ins_compl_add_matches(num_matches, matches, +! #ifdef CASE_INSENSITIVE_FILENAME +! TRUE +! #else +! FALSE +! #endif +! ); + } + break; + +--- 4336,4342 ---- + + /* May change home directory back to "~". */ + tilde_replace(compl_pattern, num_matches, matches); +! ins_compl_add_matches(num_matches, matches, p_fic || p_wic); + } + break; + +*** ../vim-7.3.871/src/ex_cmds2.c 2012-10-03 18:24:55.000000000 +0200 +--- src/ex_cmds2.c 2013-03-19 16:03:50.000000000 +0100 +*************** +*** 1926,1936 **** + * Delete the items: use each item as a regexp and find a match in the + * argument list. + */ +! #ifdef CASE_INSENSITIVE_FILENAME +! regmatch.rm_ic = TRUE; /* Always ignore case */ +! #else +! regmatch.rm_ic = FALSE; /* Never ignore case */ +! #endif + for (i = 0; i < new_ga.ga_len && !got_int; ++i) + { + p = ((char_u **)new_ga.ga_data)[i]; +--- 1926,1932 ---- + * Delete the items: use each item as a regexp and find a match in the + * argument list. + */ +! regmatch.rm_ic = p_fic; /* ignore case when 'fileignorecase' is set */ + for (i = 0; i < new_ga.ga_len && !got_int; ++i) + { + p = ((char_u **)new_ga.ga_data)[i]; +*** ../vim-7.3.871/src/ex_getln.c 2012-11-28 16:49:53.000000000 +0100 +--- src/ex_getln.c 2013-03-19 16:03:53.000000000 +0100 +*************** +*** 3653,3671 **** + { + for (i = 0; i < xp->xp_numfiles; ++i) + { +! #ifdef CASE_INSENSITIVE_FILENAME +! if (xp->xp_context == EXPAND_DIRECTORIES + || xp->xp_context == EXPAND_FILES + || xp->xp_context == EXPAND_SHELLCMD +! || xp->xp_context == EXPAND_BUFFERS) + { + if (TOLOWER_LOC(xp->xp_files[i][len]) != + TOLOWER_LOC(xp->xp_files[0][len])) + break; + } +! else +! #endif +! if (xp->xp_files[i][len] != xp->xp_files[0][len]) + break; + } + if (i < xp->xp_numfiles) +--- 3653,3668 ---- + { + for (i = 0; i < xp->xp_numfiles; ++i) + { +! if (p_fic && (xp->xp_context == EXPAND_DIRECTORIES + || xp->xp_context == EXPAND_FILES + || xp->xp_context == EXPAND_SHELLCMD +! || xp->xp_context == EXPAND_BUFFERS)) + { + if (TOLOWER_LOC(xp->xp_files[i][len]) != + TOLOWER_LOC(xp->xp_files[0][len])) + break; + } +! else if (xp->xp_files[i][len] != xp->xp_files[0][len]) + break; + } + if (i < xp->xp_numfiles) +*** ../vim-7.3.871/src/fileio.c 2013-03-19 13:33:18.000000000 +0100 +--- src/fileio.c 2013-03-19 15:49:28.000000000 +0100 +*************** +*** 6485,6493 **** + #ifdef HAVE_ACL + vim_acl_T acl; /* ACL from original file */ + #endif +- #if defined(UNIX) || defined(CASE_INSENSITIVE_FILENAME) + int use_tmp_file = FALSE; +- #endif + + /* + * When the names are identical, there is nothing to do. When they refer +--- 6485,6491 ---- +*************** +*** 6496,6506 **** + */ + if (fnamecmp(from, to) == 0) + { +! #ifdef CASE_INSENSITIVE_FILENAME +! if (STRCMP(gettail(from), gettail(to)) != 0) + use_tmp_file = TRUE; + else +- #endif + return 0; + } + +--- 6494,6502 ---- + */ + if (fnamecmp(from, to) == 0) + { +! if (p_fic && STRCMP(gettail(from), gettail(to)) != 0) + use_tmp_file = TRUE; + else + return 0; + } + +*************** +*** 6539,6545 **** + } + #endif + +- #if defined(UNIX) || defined(CASE_INSENSITIVE_FILENAME) + if (use_tmp_file) + { + char tempname[MAXPATHL + 1]; +--- 6535,6540 ---- +*************** +*** 6572,6578 **** + } + return -1; + } +- #endif + + /* + * Delete the "to" file, this is required on some systems to make the +--- 6567,6572 ---- +*************** +*** 10007,10017 **** + int match = FALSE; + #endif + +! #ifdef CASE_INSENSITIVE_FILENAME +! regmatch.rm_ic = TRUE; /* Always ignore case */ +! #else +! regmatch.rm_ic = FALSE; /* Don't ever ignore case */ +! #endif + #ifdef FEAT_OSFILETYPE + if (*pattern == '<') + { +--- 10001,10007 ---- + int match = FALSE; + #endif + +! regmatch.rm_ic = p_fic; /* ignore case if 'fileignorecase' is set */ + #ifdef FEAT_OSFILETYPE + if (*pattern == '<') + { +*** ../vim-7.3.871/src/misc1.c 2013-03-16 21:35:28.000000000 +0100 +--- src/misc1.c 2013-03-19 16:16:24.000000000 +0100 +*************** +*** 5026,5041 **** + return retval; + } + +- #if (defined(CASE_INSENSITIVE_FILENAME) && defined(BACKSLASH_IN_FILENAME)) \ +- || defined(PROTO) + /* +! * Versions of fnamecmp() and fnamencmp() that handle '/' and '\' equally. + */ + int + vim_fnamecmp(x, y) + char_u *x, *y; + { + return vim_fnamencmp(x, y, MAXPATHL); + } + + int +--- 5026,5046 ---- + return retval; + } + + /* +! * Versions of fnamecmp() and fnamencmp() that handle '/' and '\' equally +! * and deal with 'fileignorecase'. + */ + int + vim_fnamecmp(x, y) + char_u *x, *y; + { ++ #ifdef BACKSLASH_IN_FILENAME + return vim_fnamencmp(x, y, MAXPATHL); ++ #else ++ if (p_fic) ++ return MB_STRICMP(x, y); ++ return STRCMP(x, y); ++ #endif + } + + int +*************** +*** 5043,5051 **** + char_u *x, *y; + size_t len; + { + while (len > 0 && *x && *y) + { +! if (TOLOWER_LOC(*x) != TOLOWER_LOC(*y) + && !(*x == '/' && *y == '\\') + && !(*x == '\\' && *y == '/')) + break; +--- 5048,5058 ---- + char_u *x, *y; + size_t len; + { ++ #ifdef BACKSLASH_IN_FILENAME ++ /* TODO: multi-byte characters. */ + while (len > 0 && *x && *y) + { +! if ((p_fic ? TOLOWER_LOC(*x) != TOLOWER_LOC(*y) : *x != *y) + && !(*x == '/' && *y == '\\') + && !(*x == '\\' && *y == '/')) + break; +*************** +*** 5056,5063 **** + if (len == 0) + return 0; + return (*x - *y); +! } + #endif + + /* + * Concatenate file names fname1 and fname2 into allocated memory. +--- 5063,5074 ---- + if (len == 0) + return 0; + return (*x - *y); +! #else +! if (p_fic) +! return MB_STRNICMP(x, y, len); +! return STRNCMP(x, y, len); + #endif ++ } + + /* + * Concatenate file names fname1 and fname2 into allocated memory. +*************** +*** 9835,9845 **** + } + else if (path_end >= path + wildoff + && (vim_strchr((char_u *)"*?[{~$", *path_end) != NULL +! #ifndef CASE_INSENSITIVE_FILENAME +! || ((flags & EW_ICASE) +! && isalpha(PTR2CHAR(path_end))) +! #endif +! )) + e = p; + #ifdef FEAT_MBYTE + if (has_mbyte) +--- 9846,9853 ---- + } + else if (path_end >= path + wildoff + && (vim_strchr((char_u *)"*?[{~$", *path_end) != NULL +! || (!p_fic && (flags & EW_ICASE) +! && isalpha(PTR2CHAR(path_end))))) + e = p; + #ifdef FEAT_MBYTE + if (has_mbyte) +*************** +*** 9882,9895 **** + } + + /* compile the regexp into a program */ +- #ifdef CASE_INSENSITIVE_FILENAME +- regmatch.rm_ic = TRUE; /* Behave like Terminal.app */ +- #else + if (flags & EW_ICASE) + regmatch.rm_ic = TRUE; /* 'wildignorecase' set */ + else +! regmatch.rm_ic = FALSE; /* Don't ignore case */ +! #endif + if (flags & (EW_NOERROR | EW_NOTWILD)) + ++emsg_silent; + regmatch.regprog = vim_regcomp(pat, RE_MAGIC); +--- 9890,9899 ---- + } + + /* compile the regexp into a program */ + if (flags & EW_ICASE) + regmatch.rm_ic = TRUE; /* 'wildignorecase' set */ + else +! regmatch.rm_ic = p_fic; /* ignore case when 'fileignorecase' is set */ + if (flags & (EW_NOERROR | EW_NOTWILD)) + ++emsg_silent; + regmatch.regprog = vim_regcomp(pat, RE_MAGIC); +*** ../vim-7.3.871/src/misc2.c 2012-11-28 18:31:49.000000000 +0100 +--- src/misc2.c 2013-03-19 16:39:56.000000000 +0100 +*************** +*** 5362,5374 **** + if (STRLEN(s1) != STRLEN(s2)) + return FAIL; + + for (i = 0; s1[i] != NUL && s2[i] != NUL; i++) + { + if (s1[i] != s2[i] +! #ifdef CASE_INSENSITIVE_FILENAME +! && TOUPPER_LOC(s1[i]) != TOUPPER_LOC(s2[i]) +! #endif +! ) + { + if (i >= 2) + if (s1[i-1] == '*' && s1[i-2] == '*') +--- 5362,5372 ---- + if (STRLEN(s1) != STRLEN(s2)) + return FAIL; + ++ /* TODO: handle multi-byte characters. */ + for (i = 0; s1[i] != NUL && s2[i] != NUL; i++) + { + if (s1[i] != s2[i] +! && (!p_fic || TOUPPER_LOC(s1[i]) != TOUPPER_LOC(s2[i]))) + { + if (i >= 2) + if (s1[i-1] == '*' && s1[i-2] == '*') +*************** +*** 6123,6134 **** + break; + } + +! if ( +! #ifdef CASE_INSENSITIVE_FILENAME +! TOUPPER_LOC(p[i]) != TOUPPER_LOC(q[i]) +! #else +! p[i] != q[i] +! #endif + #ifdef BACKSLASH_IN_FILENAME + /* consider '/' and '\\' to be equal */ + && !((p[i] == '/' && q[i] == '\\') +--- 6121,6127 ---- + break; + } + +! if ((p_fic ? TOUPPER_LOC(p[i]) != TOUPPER_LOC(q[i]) : p[i] != q[i]) + #ifdef BACKSLASH_IN_FILENAME + /* consider '/' and '\\' to be equal */ + && !((p[i] == '/' && q[i] == '\\') +*** ../vim-7.3.871/src/option.c 2013-03-13 20:42:28.000000000 +0100 +--- src/option.c 2013-03-19 15:40:25.000000000 +0100 +*************** +*** 1108,1113 **** +--- 1108,1122 ---- + (char_u *)&p_ffs, PV_NONE, + {(char_u *)DFLT_FFS_VI, (char_u *)DFLT_FFS_VIM} + SCRIPTID_INIT}, ++ {"fileignorecase", "fic", P_BOOL|P_VI_DEF, ++ (char_u *)&p_fic, PV_NONE, ++ { ++ #ifdef CASE_INSENSITIVE_FILENAME ++ (char_u *)TRUE, ++ #else ++ (char_u *)FALSE, ++ #endif ++ (char_u *)0L} SCRIPTID_INIT}, + {"filetype", "ft", P_STRING|P_ALLOCED|P_VI_DEF|P_NOGLOB|P_NFNAME, + #ifdef FEAT_AUTOCMD + (char_u *)&p_ft, PV_FT, +*** ../vim-7.3.871/src/option.h 2012-08-15 16:20:59.000000000 +0200 +--- src/option.h 2013-03-19 15:42:24.000000000 +0100 +*************** +*** 453,458 **** +--- 453,459 ---- + EXTERN char_u *p_fencs; /* 'fileencodings' */ + #endif + EXTERN char_u *p_ffs; /* 'fileformats' */ ++ EXTERN long p_fic; /* 'fileignorecase' */ + #ifdef FEAT_FOLDING + EXTERN char_u *p_fcl; /* 'foldclose' */ + EXTERN long p_fdls; /* 'foldlevelstart' */ +*** ../vim-7.3.871/src/vim.h 2013-03-19 13:33:18.000000000 +0100 +--- src/vim.h 2013-03-19 16:14:29.000000000 +0100 +*************** +*** 1627,1644 **** + * (this does not account for maximum name lengths and things like "../dir", + * thus it is not 100% accurate!) + */ +! #ifdef CASE_INSENSITIVE_FILENAME +! # ifdef BACKSLASH_IN_FILENAME +! # define fnamecmp(x, y) vim_fnamecmp((x), (y)) +! # define fnamencmp(x, y, n) vim_fnamencmp((x), (y), (size_t)(n)) +! # else +! # define fnamecmp(x, y) MB_STRICMP((x), (y)) +! # define fnamencmp(x, y, n) MB_STRNICMP((x), (y), (n)) +! # endif +! #else +! # define fnamecmp(x, y) strcmp((char *)(x), (char *)(y)) +! # define fnamencmp(x, y, n) strncmp((char *)(x), (char *)(y), (size_t)(n)) +! #endif + + #ifdef HAVE_MEMSET + # define vim_memset(ptr, c, size) memset((ptr), (c), (size)) +--- 1627,1634 ---- + * (this does not account for maximum name lengths and things like "../dir", + * thus it is not 100% accurate!) + */ +! #define fnamecmp(x, y) vim_fnamecmp((char_u *)(x), (char_u *)(y)) +! #define fnamencmp(x, y, n) vim_fnamencmp((char_u *)(x), (char_u *)(y), (size_t)(n)) + + #ifdef HAVE_MEMSET + # define vim_memset(ptr, c, size) memset((ptr), (c), (size)) +*** ../vim-7.3.871/runtime/doc/options.txt 2013-01-23 18:37:31.000000000 +0100 +--- runtime/doc/options.txt 2013-03-19 16:25:49.000000000 +0100 +*************** +*** 2895,2900 **** +--- 2941,2954 ---- + NOTE: This option is set to the Vi default value when 'compatible' is + set and to the Vim default value when 'compatible' is reset. + ++ *'fileignorecase'* *'wic'* *'nofileignorecase'* *'nowic'* ++ 'fileignorecase' 'wic' boolean (default on for systems where case in file ++ names is normally ignored. ++ global ++ {not in Vi} ++ When set case is ignored when using file names and directories. ++ See 'wildignorecase' for only ignoring case when doing completion. ++ + *'filetype'* *'ft'* + 'filetype' 'ft' string (default: "") + local to buffer +*************** +*** 7832,7843 **** + uses another default. + + +! *'wildignorecase* *'wic'* *'nowildignorecase* *'nowic'* + 'wildignorecase' 'wic' boolean (default off) + global + {not in Vi} + When set case is ignored when completing file names and directories. +! Has no effect on systems where file name case is generally ignored. + Does not apply when the shell is used to expand wildcards, which + happens when there are special characters. + +--- 7906,7917 ---- + uses another default. + + +! *'wildignorecase'* *'wic'* *'nowildignorecase'* *'nowic'* + 'wildignorecase' 'wic' boolean (default off) + global + {not in Vi} + When set case is ignored when completing file names and directories. +! Has no effect when 'fileignorecase' is set. + Does not apply when the shell is used to expand wildcards, which + happens when there are special characters. + +*** ../vim-7.3.871/src/version.c 2013-03-19 15:27:43.000000000 +0100 +--- src/version.c 2013-03-19 16:22:46.000000000 +0100 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 872, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +76. Your ISP regards you as a business partner rather than as a customer. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.873 b/7.3.873 new file mode 100644 index 0000000..dbb6365 Binary files /dev/null and b/7.3.873 differ diff --git a/7.3.874 b/7.3.874 new file mode 100644 index 0000000..3b0f51b --- /dev/null +++ b/7.3.874 @@ -0,0 +1,139 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.874 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.874 +Problem: Comparing file names does not handle multi-byte characters + properly. +Solution: Implement multi-byte handling. +Files: src/misc1.c, src/misc2.c + + +*** ../vim-7.3.873/src/misc1.c 2013-03-19 16:46:59.000000000 +0100 +--- src/misc1.c 2013-03-19 18:30:52.000000000 +0100 +*************** +*** 5049,5068 **** + size_t len; + { + #ifdef BACKSLASH_IN_FILENAME + /* TODO: multi-byte characters. */ +! while (len > 0 && *x && *y) + { +! if ((p_fic ? TOLOWER_LOC(*x) != TOLOWER_LOC(*y) : *x != *y) +! && !(*x == '/' && *y == '\\') +! && !(*x == '\\' && *y == '/')) + break; +! ++x; +! ++y; +! --len; + } + if (len == 0) + return 0; +! return (*x - *y); + #else + if (p_fic) + return MB_STRNICMP(x, y, len); +--- 5049,5076 ---- + size_t len; + { + #ifdef BACKSLASH_IN_FILENAME ++ char_u *px = x; ++ char_u *py = y; ++ int cx = NUL; ++ int cy = NUL; ++ + /* TODO: multi-byte characters. */ +! while (len > 0) + { +! cx = PTR2CHAR(px); +! cy = PTR2CHAR(py); +! if (cx == NUL || cy == NUL +! || ((p_fic ? MB_TOLOWER(cx) != MB_TOLOWER(cy) : cx != cy) +! && !(cx == '/' && cy == '\\') +! && !(cx == '\\' && cy == '/'))) + break; +! len -= MB_PTR2LEN(px); +! px += MB_PTR2LEN(px); +! py += MB_PTR2LEN(py); + } + if (len == 0) + return 0; +! return (cx - cy); + #else + if (p_fic) + return MB_STRNICMP(x, y, len); +*** ../vim-7.3.873/src/misc2.c 2013-03-19 16:46:59.000000000 +0100 +--- src/misc2.c 2013-03-19 18:22:29.000000000 +0100 +*************** +*** 5352,5357 **** +--- 5352,5359 ---- + char_u *s2; + { + int i; ++ int prev1 = NUL; ++ int prev2 = NUL; + + if (s1 == s2) + return TRUE; +*************** +*** 5362,5381 **** + if (STRLEN(s1) != STRLEN(s2)) + return FAIL; + +! /* TODO: handle multi-byte characters. */ +! for (i = 0; s1[i] != NUL && s2[i] != NUL; i++) + { +! if (s1[i] != s2[i] +! && (!p_fic || TOUPPER_LOC(s1[i]) != TOUPPER_LOC(s2[i]))) +! { +! if (i >= 2) +! if (s1[i-1] == '*' && s1[i-2] == '*') +! continue; +! else +! return FAIL; +! else +! return FAIL; +! } + } + return TRUE; + } +--- 5364,5379 ---- + if (STRLEN(s1) != STRLEN(s2)) + return FAIL; + +! for (i = 0; s1[i] != NUL && s2[i] != NUL; i += MB_PTR2LEN(s1 + i)) + { +! int c1 = PTR2CHAR(s1 + i); +! int c2 = PTR2CHAR(s2 + i); +! +! if ((p_fic ? MB_TOLOWER(c1) != MB_TOLOWER(c2) : c1 != c2) +! && (prev1 != '*' || prev2 != '*')) +! return FAIL; +! prev2 = prev1; +! prev1 = c1; + } + return TRUE; + } +*** ../vim-7.3.873/src/version.c 2013-03-19 17:42:10.000000000 +0100 +--- src/version.c 2013-03-19 18:24:57.000000000 +0100 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 874, + /**/ + +-- +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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.875 b/7.3.875 new file mode 100644 index 0000000..155d656 --- /dev/null +++ b/7.3.875 @@ -0,0 +1,69 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.875 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.875 (after 7.3.866) +Problem: Build problem with some combination of features. +Solution: Use FEAT_XCLIPBOARD instead of FEAT_CLIPBOARD. +Files: src/os_unix.c + + +*** ../vim-7.3.874/src/os_unix.c 2013-03-19 12:35:33.000000000 +0100 +--- src/os_unix.c 2013-03-21 21:43:37.000000000 +0100 +*************** +*** 4787,4793 **** + else + wait_pid = 0; + +! # if defined(FEAT_CLIPBOARD) && defined(FEAT_X11) + /* Handle any X events, e.g. serving the clipboard. */ + clip_update(); + # endif +--- 4787,4793 ---- + else + wait_pid = 0; + +! # if defined(FEAT_XCLIPBOARD) && defined(FEAT_X11) + /* Handle any X events, e.g. serving the clipboard. */ + clip_update(); + # endif +*************** +*** 4817,4823 **** + close(toshell_fd); + close(fromshell_fd); + } +! # if defined(FEAT_CLIPBOARD) && defined(FEAT_X11) + else + { + /* +--- 4817,4823 ---- + close(toshell_fd); + close(fromshell_fd); + } +! # if defined(FEAT_XCLIPBOARD) && defined(FEAT_X11) + else + { + /* +*** ../vim-7.3.874/src/version.c 2013-03-19 18:31:45.000000000 +0100 +--- src/version.c 2013-03-21 22:05:59.000000000 +0100 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 875, + /**/ + +-- +From "know your smileys": + O:-) Saint + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.876 b/7.3.876 new file mode 100644 index 0000000..573df0d --- /dev/null +++ b/7.3.876 @@ -0,0 +1,80 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.876 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.876 +Problem: #if indents are off. +Solution: Insert a space where appropriate. (Taro Muraoka) +Files: src/gui.c + + +*** ../vim-7.3.875/src/gui.c 2013-01-23 18:37:31.000000000 +0100 +--- src/gui.c 2013-03-27 22:44:19.000000000 +0100 +*************** +*** 991,997 **** + } + + gui_mch_free_font(gui.wide_font); +! #ifdef FEAT_GUI_GTK + /* Avoid unnecessary overhead if 'guifontwide' is equal to 'guifont'. */ + if (font != NOFONT && gui.norm_font != NOFONT + && pango_font_description_equal(font, gui.norm_font)) +--- 991,997 ---- + } + + gui_mch_free_font(gui.wide_font); +! # ifdef FEAT_GUI_GTK + /* Avoid unnecessary overhead if 'guifontwide' is equal to 'guifont'. */ + if (font != NOFONT && gui.norm_font != NOFONT + && pango_font_description_equal(font, gui.norm_font)) +*************** +*** 1000,1010 **** + gui_mch_free_font(font); + } + else +! #endif + gui.wide_font = font; +! #ifdef FEAT_GUI_MSWIN + gui_mch_wide_font_changed(); +! #endif + return OK; + } + #endif +--- 1000,1010 ---- + gui_mch_free_font(font); + } + else +! # endif + gui.wide_font = font; +! # ifdef FEAT_GUI_MSWIN + gui_mch_wide_font_changed(); +! # endif + return OK; + } + #endif +*** ../vim-7.3.875/src/version.c 2013-03-21 22:53:45.000000000 +0100 +--- src/version.c 2013-04-03 21:10:44.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 876, + /**/ + +-- +Nobody will ever need more than 640 kB RAM. + -- Bill Gates, 1983 +Windows 98 requires 16 MB RAM. + -- Bill Gates, 1999 +Logical conclusion: Nobody will ever need Windows 98. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.877 b/7.3.877 new file mode 100644 index 0000000..7a56399 --- /dev/null +++ b/7.3.877 @@ -0,0 +1,100 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.877 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.877 (after 7.3.871) +Problem: Forward searching with search() is broken. +Solution: Fix it and add tests. (Sung Pae) +Files: src/search.c, src/testdir/test14.in, src/testdir/test14.ok + + +*** ../vim-7.3.876/src/search.c 2013-03-19 15:27:43.000000000 +0100 +--- src/search.c 2013-04-03 21:07:11.000000000 +0200 +*************** +*** 727,733 **** + ++matchcol; + } + } +! if (options & SEARCH_START) + break; + if (ptr[matchcol] == NUL + || (nmatched = vim_regexec_multi(®match, +--- 727,733 ---- + ++matchcol; + } + } +! if (matchcol == 0 && (options & SEARCH_START)) + break; + if (ptr[matchcol] == NUL + || (nmatched = vim_regexec_multi(®match, +*************** +*** 869,875 **** + /* With the SEARCH_END option move to the last character + * of the match. Don't do it for an empty match, end + * should be same as start then. */ +! if (options & SEARCH_END && !(options & SEARCH_NOOF) + && !(matchpos.lnum == endpos.lnum + && matchpos.col == endpos.col)) + { +--- 869,875 ---- + /* With the SEARCH_END option move to the last character + * of the match. Don't do it for an empty match, end + * should be same as start then. */ +! if ((options & SEARCH_END) && !(options & SEARCH_NOOF) + && !(matchpos.lnum == endpos.lnum + && matchpos.col == endpos.col)) + { +*** ../vim-7.3.876/src/testdir/test14.in 2013-03-19 15:27:43.000000000 +0100 +--- src/testdir/test14.in 2013-04-03 20:59:14.000000000 +0200 +*************** +*** 44,49 **** +--- 44,52 ---- + :call append(line('$'), line('.') - startline) + :call search('^$', 'bc') + :call append(line('$'), line('.') - startline) ++ /two ++ :call search('.', 'c') ++ :call append(line('$'), getline('.')[col('.') - 1:]) + :/^search()/,$w >>test.out + :qa! + ENDTEST +*************** +*** 79,82 **** +--- 82,86 ---- + foobar + + ++ one two + search() +*** ../vim-7.3.876/src/testdir/test14.ok 2013-03-19 15:27:43.000000000 +0100 +--- src/testdir/test14.ok 2013-04-03 20:59:14.000000000 +0200 +*************** +*** 19,21 **** +--- 19,22 ---- + 0 + 1 + 1 ++ two +*** ../vim-7.3.876/src/version.c 2013-04-03 21:11:33.000000000 +0200 +--- src/version.c 2013-04-03 21:12:50.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 877, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +113. You are asked about a bus schedule, you wonder if it is 16 or 32 bits. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.878 b/7.3.878 new file mode 100644 index 0000000..1669ec4 --- /dev/null +++ b/7.3.878 @@ -0,0 +1,78 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.878 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.878 +Problem: 'fileignorecase' is missing in options window and quickref. +Solution: Add the option. +Files: runtime/optwin.vim, runtime/doc/quickref.txt + + +*** ../vim-7.3.877/runtime/optwin.vim 2010-08-15 21:57:20.000000000 +0200 +--- runtime/optwin.vim 2013-04-05 15:35:22.000000000 +0200 +*************** +*** 1042,1047 **** +--- 1035,1044 ---- + call append("$", "wildignore\tlist of patterns to ignore files for file name completion") + call OptionG("wig", &wig) + endif ++ call append("$", "fileignorecase\tignore case when using file names") ++ call BinOptionG("fic", &fic) ++ call append("$", "wildignorecase\tignore case when completing file names") ++ call BinOptionG("wic", &wic) + if has("wildmenu") + call append("$", "wildmenu\tcommand-line completion shows a list of matches") + call BinOptionG("wmnu", &wmnu) +*************** +*** 1340,1342 **** +--- 1339,1343 ---- + let &sc = s:old_sc + let &cpo = s:cpo_save + unlet s:old_title s:old_icon s:old_ru s:old_sc s:cpo_save s:idx s:lnum ++ ++ " vim: ts=8 sw=2 sts=2 +*** ../vim-7.3.877/runtime/doc/quickref.txt 2010-08-15 21:57:17.000000000 +0200 +--- runtime/doc/quickref.txt 2013-04-05 15:36:35.000000000 +0200 +*************** +*** 690,695 **** +--- 691,697 ---- + 'fileencodings' 'fencs' automatically detected character encodings + 'fileformat' 'ff' file format used for file I/O + 'fileformats' 'ffs' automatically detected values for 'fileformat' ++ 'fileignorecase' 'fic' ignore case when using file names + 'filetype' 'ft' type of file, used for autocommands + 'fillchars' 'fcs' characters to use for displaying special items + 'fkmap' 'fk' Farsi keyboard mapping +*************** +*** 934,939 **** +--- 937,943 ---- + 'wildchar' 'wc' command-line character for wildcard expansion + 'wildcharm' 'wcm' like 'wildchar' but also works when mapped + 'wildignore' 'wig' files matching these patterns are not completed ++ 'wildignorecase' 'wic' ignore case when completing file names + 'wildmenu' 'wmnu' use menu for command line completion + 'wildmode' 'wim' mode for 'wildchar' command-line expansion + 'wildoptions' 'wop' specifies how command line completion is done +*** ../vim-7.3.877/src/version.c 2013-04-03 21:14:25.000000000 +0200 +--- src/version.c 2013-04-05 15:37:09.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 878, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +121. You ask for e-mail adresses instead of telephone numbers. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.879 b/7.3.879 new file mode 100644 index 0000000..bb642dd --- /dev/null +++ b/7.3.879 @@ -0,0 +1,97 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.879 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.879 +Problem: When using an ex command in operator pending mode, using Esc to + abort the command still executes the operator. (David Bürgin) +Solution: Clear the operator when the ex command fails. (Christian Brabandt) +Files: src/normal.c + + +*** ../vim-7.3.878/src/normal.c 2013-03-16 14:20:45.000000000 +0100 +--- src/normal.c 2013-04-05 16:54:13.000000000 +0200 +*************** +*** 5418,5423 **** +--- 5418,5424 ---- + cmdarg_T *cap; + { + int old_p_im; ++ int cmd_result; + + #ifdef FEAT_VISUAL + if (VIsual_active) +*************** +*** 5449,5455 **** + old_p_im = p_im; + + /* get a command line and execute it */ +! do_cmdline(NULL, getexline, NULL, + cap->oap->op_type != OP_NOP ? DOCMD_KEEPLINE : 0); + + /* If 'insertmode' changed, enter or exit Insert mode */ +--- 5450,5456 ---- + old_p_im = p_im; + + /* get a command line and execute it */ +! cmd_result = do_cmdline(NULL, getexline, NULL, + cap->oap->op_type != OP_NOP ? DOCMD_KEEPLINE : 0); + + /* If 'insertmode' changed, enter or exit Insert mode */ +*************** +*** 5461,5472 **** + restart_edit = 0; + } + +! /* The start of the operator may have become invalid by the Ex +! * command. */ +! if (cap->oap->op_type != OP_NOP + && (cap->oap->start.lnum > curbuf->b_ml.ml_line_count + || cap->oap->start.col > +! (colnr_T)STRLEN(ml_get(cap->oap->start.lnum)))) + clearopbeep(cap->oap); + } + } +--- 5462,5478 ---- + restart_edit = 0; + } + +! if (cmd_result == FAIL) +! /* The Ex command failed, do not execute the operator. */ +! clearop(cap->oap); +! else if (cap->oap->op_type != OP_NOP + && (cap->oap->start.lnum > curbuf->b_ml.ml_line_count + || cap->oap->start.col > +! (colnr_T)STRLEN(ml_get(cap->oap->start.lnum)) +! || did_emsg +! )) +! /* The start of the operator has become invalid by the Ex command. +! */ + clearopbeep(cap->oap); + } + } +*** ../vim-7.3.878/src/version.c 2013-04-05 15:39:41.000000000 +0200 +--- src/version.c 2013-04-05 16:56:43.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 879, + /**/ + +-- +~ +~ +~ +".signature" 4 lines, 50 characters written + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.880 b/7.3.880 new file mode 100644 index 0000000..14a9384 --- /dev/null +++ b/7.3.880 @@ -0,0 +1,287 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.880 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.880 +Problem: When writing viminfo, old history lines may replace lines written + more recently by another Vim instance. +Solution: Mark history entries that were read from viminfo and overwrite + them when merging with the current viminfo. +Files: src/ex_getln.c + + +*** ../vim-7.3.879/src/ex_getln.c 2013-03-19 16:46:59.000000000 +0100 +--- src/ex_getln.c 2013-04-05 18:56:08.000000000 +0200 +*************** +*** 56,61 **** +--- 56,62 ---- + typedef struct hist_entry + { + int hisnum; /* identifying number */ ++ int viminfo; /* when TRUE hisstr comes from viminfo */ + char_u *hisstr; /* actual entry, separator char after the NUL */ + } histentry_T; + +*************** +*** 113,118 **** +--- 114,120 ---- + static int ExpandRTDir __ARGS((char_u *pat, int *num_file, char_u ***file, char *dirname[])); + # ifdef FEAT_CMDHIST + static char_u *get_history_arg __ARGS((expand_T *xp, int idx)); ++ static void clear_hist_entry __ARGS((histentry_T *hisptr)); + # endif + # if defined(FEAT_USR_CMDS) && defined(FEAT_EVAL) + static int ExpandUserDefined __ARGS((expand_T *xp, regmatch_T *regmatch, int *num_file, char_u ***file)); +*************** +*** 5343,5352 **** + if (hisidx[type] < 0) /* there are no entries yet */ + { + for (i = 0; i < newlen; ++i) +! { +! temp[i].hisnum = 0; +! temp[i].hisstr = NULL; +! } + } + else if (newlen > hislen) /* array becomes bigger */ + { +--- 5345,5351 ---- + if (hisidx[type] < 0) /* there are no entries yet */ + { + for (i = 0; i < newlen; ++i) +! clear_hist_entry(&temp[i]); + } + else if (newlen > hislen) /* array becomes bigger */ + { +*************** +*** 5354,5363 **** + temp[i] = history[type][i]; + j = i; + for ( ; i <= newlen - (hislen - hisidx[type]); ++i) +! { +! temp[i].hisnum = 0; +! temp[i].hisstr = NULL; +! } + for ( ; j < hislen; ++i, ++j) + temp[i] = history[type][j]; + } +--- 5353,5359 ---- + temp[i] = history[type][i]; + j = i; + for ( ; i <= newlen - (hislen - hisidx[type]); ++i) +! clear_hist_entry(&temp[i]); + for ( ; j < hislen; ++i, ++j) + temp[i] = history[type][j]; + } +*************** +*** 5385,5390 **** +--- 5381,5395 ---- + } + } + ++ static void ++ clear_hist_entry(hisptr) ++ histentry_T *hisptr; ++ { ++ hisptr->hisnum = 0; ++ hisptr->viminfo = FALSE; ++ hisptr->hisstr = NULL; ++ } ++ + /* + * Check if command line 'str' is already in history. + * If 'move_to_front' is TRUE, matching entry is moved to end of history. +*************** +*** 5433,5440 **** + history[type][last_i] = history[type][i]; + last_i = i; + } +- history[type][i].hisstr = str; + history[type][i].hisnum = ++hisnum[type]; + return TRUE; + } + return FALSE; +--- 5438,5446 ---- + history[type][last_i] = history[type][i]; + last_i = i; + } + history[type][i].hisnum = ++hisnum[type]; ++ history[type][i].viminfo = FALSE; ++ history[type][i].hisstr = str; + return TRUE; + } + return FALSE; +*************** +*** 5498,5505 **** + /* Current line is from the same mapping, remove it */ + hisptr = &history[HIST_SEARCH][hisidx[HIST_SEARCH]]; + vim_free(hisptr->hisstr); +! hisptr->hisstr = NULL; +! hisptr->hisnum = 0; + --hisnum[histype]; + if (--hisidx[HIST_SEARCH] < 0) + hisidx[HIST_SEARCH] = hislen - 1; +--- 5504,5510 ---- + /* Current line is from the same mapping, remove it */ + hisptr = &history[HIST_SEARCH][hisidx[HIST_SEARCH]]; + vim_free(hisptr->hisstr); +! clear_hist_entry(hisptr); + --hisnum[histype]; + if (--hisidx[HIST_SEARCH] < 0) + hisidx[HIST_SEARCH] = hislen - 1; +*************** +*** 5520,5525 **** +--- 5525,5531 ---- + hisptr->hisstr[len + 1] = sep; + + hisptr->hisnum = ++hisnum[histype]; ++ hisptr->viminfo = FALSE; + if (histype == HIST_SEARCH && in_map) + last_maptick = maptick; + } +*************** +*** 5709,5716 **** + for (i = hislen; i--;) + { + vim_free(hisptr->hisstr); +! hisptr->hisnum = 0; +! hisptr++->hisstr = NULL; + } + hisidx[histype] = -1; /* mark history as cleared */ + hisnum[histype] = 0; /* reset identifier counter */ +--- 5715,5721 ---- + for (i = hislen; i--;) + { + vim_free(hisptr->hisstr); +! clear_hist_entry(hisptr); + } + hisidx[histype] = -1; /* mark history as cleared */ + hisnum[histype] = 0; /* reset identifier counter */ +*************** +*** 5755,5770 **** + { + found = TRUE; + vim_free(hisptr->hisstr); +! hisptr->hisstr = NULL; +! hisptr->hisnum = 0; + } + else + { + if (i != last) + { + history[histype][last] = *hisptr; +! hisptr->hisstr = NULL; +! hisptr->hisnum = 0; + } + if (--last < 0) + last += hislen; +--- 5760,5773 ---- + { + found = TRUE; + vim_free(hisptr->hisstr); +! clear_hist_entry(hisptr); + } + else + { + if (i != last) + { + history[histype][last] = *hisptr; +! clear_hist_entry(hisptr); + } + if (--last < 0) + last += hislen; +*************** +*** 5808,5815 **** + history[histype][i] = history[histype][j]; + i = j; + } +! history[histype][i].hisstr = NULL; +! history[histype][i].hisnum = 0; + if (--i < 0) + i += hislen; + hisidx[histype] = i; +--- 5811,5817 ---- + history[histype][i] = history[histype][j]; + i = j; + } +! clear_hist_entry(&history[histype][i]); + if (--i < 0) + i += hislen; + hisidx[histype] = i; +*************** +*** 6043,6054 **** + + for (type = 0; type < HIST_COUNT; ++type) + { +! /* +! * Count the number of empty spaces in the history list. If there are +! * more spaces available than we request, then fill them up. +! */ + for (i = 0, num = 0; i < hislen; i++) +! if (history[type][i].hisstr == NULL) + num++; + len = asklen; + if (num > len) +--- 6045,6055 ---- + + for (type = 0; type < HIST_COUNT; ++type) + { +! /* Count the number of empty spaces in the history list. Entries read +! * from viminfo previously are also considered empty. If there are +! * more spaces available than we request, then fill them up. */ + for (i = 0, num = 0; i < hislen; i++) +! if (history[type][i].hisstr == NULL || history[type][i].viminfo) + num++; + len = asklen; + if (num > len) +*************** +*** 6141,6147 **** + hisidx[type] = hislen - 1; + do + { +! if (history[type][idx].hisstr != NULL) + break; + if (++idx == hislen) + idx = 0; +--- 6142,6149 ---- + hisidx[type] = hislen - 1; + do + { +! if (history[type][idx].hisstr != NULL +! || history[type][idx].viminfo) + break; + if (++idx == hislen) + idx = 0; +*************** +*** 6153,6158 **** +--- 6155,6161 ---- + { + vim_free(history[type][idx].hisstr); + history[type][idx].hisstr = viminfo_history[type][i]; ++ history[type][idx].viminfo = TRUE; + if (--idx < 0) + idx = hislen - 1; + } +*** ../vim-7.3.879/src/version.c 2013-04-05 17:43:10.000000000 +0200 +--- src/version.c 2013-04-05 18:54:11.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 880, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +122. You ask if the Netaholics Anonymous t-shirt you ordered can be + sent to you via e-mail. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.881 b/7.3.881 new file mode 100644 index 0000000..d0ca99b --- /dev/null +++ b/7.3.881 @@ -0,0 +1,108 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.881 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.881 +Problem: Python list does not work correctly. +Solution: Fix it and add a test. (Yukihiro Nakadaira) +Files: src/testdir/test86.in, src/testdir/test86.ok, src/if_py_both.h + + +*** ../vim-7.3.880/src/testdir/test86.in 2013-02-20 16:54:24.000000000 +0100 +--- src/testdir/test86.in 2013-04-05 19:18:48.000000000 +0200 +*************** +*** 321,326 **** +--- 321,351 ---- + :py trace_main() + :py sys.settrace(None) + :$put =string(l) ++ :" ++ :" Slice ++ :py ll = vim.bindeval('[0, 1, 2, 3, 4, 5]') ++ :py l = ll[:4] ++ :$put =string(pyeval('l')) ++ :py l = ll[2:] ++ :$put =string(pyeval('l')) ++ :py l = ll[:-4] ++ :$put =string(pyeval('l')) ++ :py l = ll[-2:] ++ :$put =string(pyeval('l')) ++ :py l = ll[2:4] ++ :$put =string(pyeval('l')) ++ :py l = ll[4:2] ++ :$put =string(pyeval('l')) ++ :py l = ll[-4:-2] ++ :$put =string(pyeval('l')) ++ :py l = ll[-2:-4] ++ :$put =string(pyeval('l')) ++ :py l = ll[:] ++ :$put =string(pyeval('l')) ++ :py l = ll[0:6] ++ :$put =string(pyeval('l')) ++ :py l = ll[-10:10] ++ :$put =string(pyeval('l')) + :endfun + :" + :call Test() +*** ../vim-7.3.880/src/testdir/test86.ok 2013-02-20 16:54:24.000000000 +0100 +--- src/testdir/test86.ok 2013-04-05 19:18:48.000000000 +0200 +*************** +*** 65,67 **** +--- 65,78 ---- + vim: Vim(let):E859: + [1] + [1, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 1] ++ [0, 1, 2, 3] ++ [2, 3, 4, 5] ++ [0, 1] ++ [4, 5] ++ [2, 3] ++ [] ++ [2, 3] ++ [] ++ [0, 1, 2, 3, 4, 5] ++ [0, 1, 2, 3, 4, 5] ++ [0, 1, 2, 3, 4, 5] +*** ../vim-7.3.880/src/if_py_both.h 2013-02-14 22:11:31.000000000 +0100 +--- src/if_py_both.h 2013-04-05 19:27:46.000000000 +0200 +*************** +*** 1139,1145 **** + + for (i = 0; i < n; ++i) + { +! PyObject *item = ListItem(self, i); + if (item == NULL) + { + Py_DECREF(list); +--- 1139,1145 ---- + + for (i = 0; i < n; ++i) + { +! PyObject *item = ListItem(self, first + i); + if (item == NULL) + { + Py_DECREF(list); +*** ../vim-7.3.880/src/version.c 2013-04-05 18:58:42.000000000 +0200 +--- src/version.c 2013-04-05 19:31:59.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 881, + /**/ + +-- +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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.882 b/7.3.882 new file mode 100644 index 0000000..bfc348b --- /dev/null +++ b/7.3.882 @@ -0,0 +1,59 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.882 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.882 +Problem: CursorHold may trigger after receiving the termresponse. +Solution: Set the did_cursorhold flag. (Hayaki Saito) +Files: src/term.c + + +*** ../vim-7.3.881/src/term.c 2013-03-16 14:33:32.000000000 +0100 +--- src/term.c 2013-04-05 19:49:58.000000000 +0200 +*************** +*** 4137,4142 **** +--- 4137,4145 ---- + char *p = NULL; + + u7_status = U7_GOT; ++ # ifdef FEAT_AUTOCMD ++ did_cursorhold = TRUE; ++ # endif + if (extra == 2) + p = "single"; + else if (extra == 3) +*************** +*** 4153,4158 **** +--- 4156,4164 ---- + if (*T_CRV != NUL && i > 2 + (tp[0] != CSI) && tp[i] == 'c') + { + crv_status = CRV_GOT; ++ # ifdef FEAT_AUTOCMD ++ did_cursorhold = TRUE; ++ # endif + + /* If this code starts with CSI, you can bet that the + * terminal uses 8-bit codes. */ +*** ../vim-7.3.881/src/version.c 2013-04-05 19:32:30.000000000 +0200 +--- src/version.c 2013-04-05 19:46:21.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 882, + /**/ + +-- +Would you care for a drink? I mean, if it were, like, +disabled and you had to look after it? + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.883 b/7.3.883 new file mode 100644 index 0000000..984e5d4 --- /dev/null +++ b/7.3.883 @@ -0,0 +1,65 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.883 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.883 (after 7.3.880) +Problem: Can't build with some combination of features. +Solution: Adjust #ifdefs. +Files: src/ex_getln.c + + +*** ../vim-7.3.882/src/ex_getln.c 2013-04-05 18:58:41.000000000 +0200 +--- src/ex_getln.c 2013-04-06 13:24:22.000000000 +0200 +*************** +*** 114,126 **** + static int ExpandRTDir __ARGS((char_u *pat, int *num_file, char_u ***file, char *dirname[])); + # ifdef FEAT_CMDHIST + static char_u *get_history_arg __ARGS((expand_T *xp, int idx)); +- static void clear_hist_entry __ARGS((histentry_T *hisptr)); + # endif + # if defined(FEAT_USR_CMDS) && defined(FEAT_EVAL) + static int ExpandUserDefined __ARGS((expand_T *xp, regmatch_T *regmatch, int *num_file, char_u ***file)); + static int ExpandUserList __ARGS((expand_T *xp, int *num_file, char_u ***file)); + # endif + #endif + + #ifdef FEAT_CMDWIN + static int ex_window __ARGS((void)); +--- 114,128 ---- + static int ExpandRTDir __ARGS((char_u *pat, int *num_file, char_u ***file, char *dirname[])); + # ifdef FEAT_CMDHIST + static char_u *get_history_arg __ARGS((expand_T *xp, int idx)); + # endif + # if defined(FEAT_USR_CMDS) && defined(FEAT_EVAL) + static int ExpandUserDefined __ARGS((expand_T *xp, regmatch_T *regmatch, int *num_file, char_u ***file)); + static int ExpandUserList __ARGS((expand_T *xp, int *num_file, char_u ***file)); + # endif + #endif ++ #ifdef FEAT_CMDHIST ++ static void clear_hist_entry __ARGS((histentry_T *hisptr)); ++ #endif + + #ifdef FEAT_CMDWIN + static int ex_window __ARGS((void)); +*** ../vim-7.3.882/src/version.c 2013-04-05 19:50:12.000000000 +0200 +--- src/version.c 2013-04-06 14:28:41.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 883, + /**/ + +-- +Why is it called "Windows"? "Gates" would be more appropriate... + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.884 b/7.3.884 new file mode 100644 index 0000000..31d2e7f --- /dev/null +++ b/7.3.884 @@ -0,0 +1,73 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.884 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.884 +Problem: Compiler warning for variable shadowing another. (John Little) +Solution: Rename the variable. (Christian Brabandt) +Files: src/term.c + + +*** ../vim-7.3.883/src/term.c 2013-04-05 19:50:12.000000000 +0200 +--- src/term.c 2013-04-06 13:27:59.000000000 +0200 +*************** +*** 4134,4151 **** + /* eat it when it has 2 arguments and ends in 'R' */ + if (j == 1 && tp[i] == 'R') + { +! char *p = NULL; + + u7_status = U7_GOT; + # ifdef FEAT_AUTOCMD + did_cursorhold = TRUE; + # endif + if (extra == 2) +! p = "single"; + else if (extra == 3) +! p = "double"; +! if (p != NULL) +! set_option_value((char_u *)"ambw", 0L, (char_u *)p, 0); + key_name[0] = (int)KS_EXTRA; + key_name[1] = (int)KE_IGNORE; + slen = i + 1; +--- 4134,4151 ---- + /* eat it when it has 2 arguments and ends in 'R' */ + if (j == 1 && tp[i] == 'R') + { +! char *aw = NULL; + + u7_status = U7_GOT; + # ifdef FEAT_AUTOCMD + did_cursorhold = TRUE; + # endif + if (extra == 2) +! aw = "single"; + else if (extra == 3) +! aw = "double"; +! if (aw != NULL) +! set_option_value((char_u *)"ambw", 0L, (char_u *)aw, 0); + key_name[0] = (int)KS_EXTRA; + key_name[1] = (int)KE_IGNORE; + slen = i + 1; +*** ../vim-7.3.883/src/version.c 2013-04-06 14:28:56.000000000 +0200 +--- src/version.c 2013-04-06 14:30:05.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 884, + /**/ + +-- +Don't drink and drive. You might hit a bump and spill your beer. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.885 b/7.3.885 new file mode 100644 index 0000000..f7fdbd5 --- /dev/null +++ b/7.3.885 @@ -0,0 +1,88 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.885 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.885 +Problem: Double free for list and dict in Lua. (Shougo Matsu) +Solution: Do not unref list and dict. (Yasuhiro Matsumoto) +Files: src/if_lua.c + + +*** ../vim-7.3.884/src/if_lua.c 2013-02-14 22:19:47.000000000 +0100 +--- src/if_lua.c 2013-04-12 11:42:56.000000000 +0200 +*************** +*** 665,677 **** + luaV_type_tostring(list, LUAVIM_LIST) + + static int +- luaV_list_gc (lua_State *L) +- { +- list_unref(luaV_unbox(L, luaV_List, 1)); +- return 0; +- } +- +- static int + luaV_list_len (lua_State *L) + { + list_T *l = luaV_unbox(L, luaV_List, 1); +--- 665,670 ---- +*************** +*** 801,807 **** + + static const luaL_Reg luaV_List_mt[] = { + {"__tostring", luaV_list_tostring}, +- {"__gc", luaV_list_gc}, + {"__len", luaV_list_len}, + {"__call", luaV_list_call}, + {"__index", luaV_list_index}, +--- 794,799 ---- +*************** +*** 830,842 **** + luaV_type_tostring(dict, LUAVIM_DICT) + + static int +- luaV_dict_gc (lua_State *L) +- { +- dict_unref(luaV_unbox(L, luaV_Dict, 1)); +- return 0; +- } +- +- static int + luaV_dict_len (lua_State *L) + { + dict_T *d = luaV_unbox(L, luaV_Dict, 1); +--- 822,827 ---- +*************** +*** 929,935 **** + + static const luaL_Reg luaV_Dict_mt[] = { + {"__tostring", luaV_dict_tostring}, +- {"__gc", luaV_dict_gc}, + {"__len", luaV_dict_len}, + {"__call", luaV_dict_call}, + {"__index", luaV_dict_index}, +--- 914,919 ---- +*** ../vim-7.3.884/src/version.c 2013-04-06 14:30:35.000000000 +0200 +--- src/version.c 2013-04-12 11:44:45.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 885, + /**/ + +-- +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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.886 b/7.3.886 new file mode 100644 index 0000000..a823507 --- /dev/null +++ b/7.3.886 @@ -0,0 +1,93 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.886 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.886 +Problem: Can't build with multi-byte on Solaris 10. +Solution: Add #ifdef X_HAVE_UTF8_STRING. (Laurent Blume) +Files: src/ui.c + + +*** ../vim-7.3.885/src/ui.c 2013-03-13 17:50:20.000000000 +0100 +--- src/ui.c 2013-04-12 12:24:10.000000000 +0200 +*************** +*** 1458,1464 **** + + int + clip_gen_owner_exists(cbd) +! VimClipboard *cbd; + { + #ifdef FEAT_XCLIPBOARD + # ifdef FEAT_GUI_GTK +--- 1458,1464 ---- + + int + clip_gen_owner_exists(cbd) +! VimClipboard *cbd UNUSED; + { + #ifdef FEAT_XCLIPBOARD + # ifdef FEAT_GUI_GTK +*************** +*** 2134,2140 **** + text_prop.encoding = *type; + text_prop.format = *format; + text_prop.nitems = len; +! #ifdef FEAT_MBYTE + if (*type == utf8_atom) + status = Xutf8TextPropertyToTextList(X_DISPLAY, &text_prop, + &text_list, &n_text); +--- 2134,2140 ---- + text_prop.encoding = *type; + text_prop.format = *format; + text_prop.nitems = len; +! #if defined(FEAT_MBYTE) && defined(X_HAVE_UTF8_STRING) + if (*type == utf8_atom) + status = Xutf8TextPropertyToTextList(X_DISPLAY, &text_prop, + &text_list, &n_text); +*************** +*** 2196,2203 **** + default: type = XA_STRING; + } + #ifdef FEAT_MBYTE +! if (type == utf8_atom && !enc_utf8) +! /* Only request utf-8 when 'encoding' is utf8. */ + continue; + #endif + success = MAYBE; +--- 2196,2208 ---- + default: type = XA_STRING; + } + #ifdef FEAT_MBYTE +! if (type == utf8_atom +! # if defined(X_HAVE_UTF8_STRING) +! && !enc_utf8 +! # endif +! ) +! /* Only request utf-8 when 'encoding' is utf8 and +! * Xutf8TextPropertyToTextList is available. */ + continue; + #endif + success = MAYBE; +*** ../vim-7.3.885/src/version.c 2013-04-12 12:18:43.000000000 +0200 +--- src/version.c 2013-04-12 12:25:44.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 886, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +149. You find your computer sexier than your girlfriend + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.887 b/7.3.887 new file mode 100644 index 0000000..228845f --- /dev/null +++ b/7.3.887 @@ -0,0 +1,308 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.887 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.887 +Problem: No tests for Visual mode operators, what 7.3.879 fixes. +Solution: Add a new test file. (David Bürgin) +Files: src/testdir/test94.in, src/testdir/test94.ok, + src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, + src/testdir/Make_vms.mms, src/testdir/Makefile + + +*** ../vim-7.3.886/src/testdir/test94.in 2013-04-12 13:44:19.000000000 +0200 +--- src/testdir/test94.in 2013-04-12 13:37:12.000000000 +0200 +*************** +*** 0 **** +--- 1,98 ---- ++ Test for Visual mode and operators ++ ++ Tests for the two kinds of operations: Those executed with Visual mode ++ followed by an operator and those executed via Operator-pending mode. Also ++ part of the test are mappings, counts, and repetition with the . command. ++ ++ Test cases: ++ - Visual modes (v V CTRL-V) followed by an operator; count; repeating ++ - Visual mode maps; count; repeating ++ - Simple ++ - With an Ex command (custom text object) ++ - Operator-pending mode maps ++ - Simple ++ - With Ex command moving the cursor ++ - With Ex command and Visual selection (custom text object) ++ - Patch 7.3.879: Properly abort Ex command in Operator-pending mode ++ ++ STARTTEST ++ :so small.vim ++ :set nocp ++ : ++ :" User functions ++ :function MoveToCap() ++ : call search('\u', 'W') ++ :endfunction ++ :function SelectInCaps() ++ : let [line1, col1] = searchpos('\u', 'bcnW') ++ : let [line2, col2] = searchpos('.\u', 'nW') ++ : call setpos("'<", [0, line1, col1, 0]) ++ : call setpos("'>", [0, line2, col2, 0]) ++ : normal! gv ++ :endfunction ++ :function MoveToEndCount(count) ++ : normal! v:count . e ++ :endfunction ++ : ++ :" Visual modes followed by operator ++ /^apple ++ lvld.l3vd.: ++ /^line 1 ++ Vcnewlinej.j2Vd.: ++ /^xxxx ++ jlc l.l2c----l.: ++ : ++ :" Visual mode maps (movement and text object) ++ :vnoremap W /\u/s-1 ++ :vnoremap iW :call SelectInCaps() ++ /^Kiwi ++ vWcNol.fD2vd.: ++ /^Jambu ++ llviWc-l.l2vdl.: ++ : ++ :" Operator-pending mode maps (movement and text object) ++ :onoremap W /\u/ ++ :onoremap W :call MoveToCap() ++ :onoremap iW :call SelectInCaps() ++ /^Pineapple ++ cW-l.l2.l.: ++ /^Juniper ++ g?\WfD.: ++ /^Lemon ++ yiWPlciWNew: ++ : ++ :" Patch 7.3.879: Properly abort Operator-pending mode for "dv:" etc. ++ /^zzzz ++ dV: dv: :set noma | let v:errmsg = '' ++ d: :set ma | put = v:errmsg =~# '^E21' ? 'ok' : 'failed' ++ dv:dV::set noma | let v:errmsg = '' ++ d::set ma | put = v:errmsg =~# '^E21' ? 'failed' : 'ok' ++ :/^start:/+2,$w! test.out ++ :q! ++ ENDTEST ++ ++ start: ++ ++ apple banana cherry ++ ++ line 1 line 1 ++ line 2 line 2 ++ line 3 line 3 ++ line 4 line 4 ++ line 5 line 5 ++ line 6 line 6 ++ ++ xxxxxxxxxxxxx ++ xxxxxxxxxxxxx ++ xxxxxxxxxxxxx ++ xxxxxxxxxxxxx ++ ++ KiwiRaspberryDateWatermelonPeach ++ JambuRambutanBananaTangerineMango ++ ++ PineappleQuinceLoganberryOrangeGrapefruitKiwiZ ++ JuniperDurianZ ++ LemonNectarineZ ++ ++ zzzz ++ zzzz +*** ../vim-7.3.886/src/testdir/test94.ok 2013-04-12 13:44:19.000000000 +0200 +--- src/testdir/test94.ok 2013-04-12 13:37:12.000000000 +0200 +*************** +*** 0 **** +--- 1,20 ---- ++ a y ++ ++ newline ++ newline ++ ++ --------x ++ --------x ++ xxxx--------x ++ xxxx--------x ++ ++ NoNoberryach ++ --ago ++ ++ ----Z ++ WhavcreQhevnaZ ++ LemonNewNectarineZ ++ ++ zzz ++ ok ++ ok +*** ../vim-7.3.886/src/testdir/Make_amiga.mak 2013-02-26 17:21:15.000000000 +0100 +--- src/testdir/Make_amiga.mak 2013-04-12 13:39:47.000000000 +0200 +*************** +*** 32,38 **** + test71.out test72.out test73.out test74.out test75.out \ + test76.out test77.out test78.out test79.out test80.out \ + test81.out test82.out test83.out test84.out test88.out \ +! test89.out test90.out test91.out test92.out test93.out + + .SUFFIXES: .in .out + +--- 32,39 ---- + test71.out test72.out test73.out test74.out test75.out \ + test76.out test77.out test78.out test79.out test80.out \ + test81.out test82.out test83.out test84.out test88.out \ +! test89.out test90.out test91.out test92.out test93.out \ +! test94.out + + .SUFFIXES: .in .out + +*************** +*** 142,144 **** +--- 143,146 ---- + test91.out: test91.in + test92.out: test92.in + test93.out: test93.in ++ test94.out: test94.in +*** ../vim-7.3.886/src/testdir/Make_dos.mak 2013-02-26 17:21:15.000000000 +0100 +--- src/testdir/Make_dos.mak 2013-04-12 13:39:56.000000000 +0200 +*************** +*** 31,37 **** + test74.out test75.out test76.out test77.out test78.out \ + test79.out test80.out test81.out test82.out test83.out \ + test84.out test85.out test86.out test87.out test88.out \ +! test89.out test90.out test91.out test92.out test93.out + + SCRIPTS32 = test50.out test70.out + +--- 31,38 ---- + test74.out test75.out test76.out test77.out test78.out \ + test79.out test80.out test81.out test82.out test83.out \ + test84.out test85.out test86.out test87.out test88.out \ +! test89.out test90.out test91.out test92.out test93.out \ +! test94.out + + SCRIPTS32 = test50.out test70.out + +*** ../vim-7.3.886/src/testdir/Make_ming.mak 2013-02-26 17:21:15.000000000 +0100 +--- src/testdir/Make_ming.mak 2013-04-12 13:40:06.000000000 +0200 +*************** +*** 51,57 **** + test74.out test75.out test76.out test77.out test78.out \ + test79.out test80.out test81.out test82.out test83.out \ + test84.out test85.out test86.out test87.out test88.out \ +! test89.out test90.out test91.out test92.out test93.out + + SCRIPTS32 = test50.out test70.out + +--- 51,58 ---- + test74.out test75.out test76.out test77.out test78.out \ + test79.out test80.out test81.out test82.out test83.out \ + test84.out test85.out test86.out test87.out test88.out \ +! test89.out test90.out test91.out test92.out test93.out \ +! test94.out + + SCRIPTS32 = test50.out test70.out + +*** ../vim-7.3.886/src/testdir/Make_os2.mak 2013-02-26 17:21:15.000000000 +0100 +--- src/testdir/Make_os2.mak 2013-04-12 13:40:13.000000000 +0200 +*************** +*** 32,38 **** + test71.out test72.out test73.out test74.out test75.out \ + test76.out test77.out test78.out test79.out test80.out \ + test81.out test82.out test83.out test84.out test88.out \ +! test89.out test90.out test91.out test92.out test93.out + + .SUFFIXES: .in .out + +--- 32,39 ---- + test71.out test72.out test73.out test74.out test75.out \ + test76.out test77.out test78.out test79.out test80.out \ + test81.out test82.out test83.out test84.out test88.out \ +! test89.out test90.out test91.out test92.out test93.out \ +! test94.out + + .SUFFIXES: .in .out + +*** ../vim-7.3.886/src/testdir/Make_vms.mms 2013-02-26 17:21:15.000000000 +0100 +--- src/testdir/Make_vms.mms 2013-04-12 13:40:24.000000000 +0200 +*************** +*** 4,10 **** + # Authors: Zoltan Arpadffy, + # Sandor Kopanyi, + # +! # Last change: 2013-02-21 + # + # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. + # Edit the lines in the Configuration section below to select. +--- 4,10 ---- + # Authors: Zoltan Arpadffy, + # Sandor Kopanyi, + # +! # Last change: 2013 Apr 12 + # + # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. + # Edit the lines in the Configuration section below to select. +*************** +*** 77,83 **** + test71.out test72.out test74.out test75.out test76.out \ + test77.out test78.out test79.out test80.out test81.out \ + test82.out test83.out test84.out test88.out test89.out \ +! test90.out test91.out test92.out test93.out + + # Known problems: + # Test 30: a problem around mac format - unknown reason +--- 77,83 ---- + test71.out test72.out test74.out test75.out test76.out \ + test77.out test78.out test79.out test80.out test81.out \ + test82.out test83.out test84.out test88.out test89.out \ +! test90.out test91.out test92.out test93.out test94.out + + # Known problems: + # Test 30: a problem around mac format - unknown reason +*** ../vim-7.3.886/src/testdir/Makefile 2013-02-26 17:21:15.000000000 +0100 +--- src/testdir/Makefile 2013-04-12 13:40:32.000000000 +0200 +*************** +*** 28,34 **** + test74.out test75.out test76.out test77.out test78.out \ + test79.out test80.out test81.out test82.out test83.out \ + test84.out test85.out test86.out test87.out test88.out \ +! test89.out test90.out test91.out test92.out test93.out + + SCRIPTS_GUI = test16.out + +--- 28,35 ---- + test74.out test75.out test76.out test77.out test78.out \ + test79.out test80.out test81.out test82.out test83.out \ + test84.out test85.out test86.out test87.out test88.out \ +! test89.out test90.out test91.out test92.out test93.out \ +! test94.out + + SCRIPTS_GUI = test16.out + +*** ../vim-7.3.886/src/version.c 2013-04-12 12:27:24.000000000 +0200 +--- src/version.c 2013-04-12 13:43:34.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 887, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +153. You find yourself staring at your "inbox" waiting for new e-mail + to arrive. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.888 b/7.3.888 new file mode 100644 index 0000000..6707f8a --- /dev/null +++ b/7.3.888 @@ -0,0 +1,150 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.888 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.888 +Problem: Filename completion with 'fileignorecase' does not work for + multi-byte characters. +Solution: Make 'fileignorecase' work properly. (Hirohito Higashi) +Files: src/misc2.c + + +*** ../vim-7.3.887/src/misc2.c 2013-03-19 18:31:45.000000000 +0100 +--- src/misc2.c 2013-04-12 14:15:03.000000000 +0200 +*************** +*** 6099,6150 **** + int maxlen; + { + int i; + const char *s = NULL; + +! for (i = 0; maxlen < 0 || i < maxlen; ++i) + { + /* End of "p": check if "q" also ends or just has a slash. */ +! if (p[i] == NUL) + { +! if (q[i] == NUL) /* full match */ + return 0; + s = q; + break; + } + + /* End of "q": check if "p" just has a slash. */ +! if (q[i] == NUL) + { + s = p; + break; + } + +! if ((p_fic ? TOUPPER_LOC(p[i]) != TOUPPER_LOC(q[i]) : p[i] != q[i]) + #ifdef BACKSLASH_IN_FILENAME + /* consider '/' and '\\' to be equal */ +! && !((p[i] == '/' && q[i] == '\\') +! || (p[i] == '\\' && q[i] == '/')) + #endif + ) + { +! if (vim_ispathsep(p[i])) + return -1; +! if (vim_ispathsep(q[i])) + return 1; +! return ((char_u *)p)[i] - ((char_u *)q)[i]; /* no match */ + } + } + if (s == NULL) /* "i" ran into "maxlen" */ + return 0; + + /* ignore a trailing slash, but not "//" or ":/" */ +! if (s[i + 1] == NUL + && i > 0 + && !after_pathsep((char_u *)s, (char_u *)s + i) + #ifdef BACKSLASH_IN_FILENAME +! && (s[i] == '/' || s[i] == '\\') + #else +! && s[i] == '/' + #endif + ) + return 0; /* match with trailing slash */ +--- 6099,6157 ---- + int maxlen; + { + int i; ++ int c1, c2; + const char *s = NULL; + +! for (i = 0; maxlen < 0 || i < maxlen; i += MB_PTR2LEN((char_u *)p + i)) + { ++ c1 = PTR2CHAR((char_u *)p + i); ++ c2 = PTR2CHAR((char_u *)q + i); ++ + /* End of "p": check if "q" also ends or just has a slash. */ +! if (c1 == NUL) + { +! if (c2 == NUL) /* full match */ + return 0; + s = q; + break; + } + + /* End of "q": check if "p" just has a slash. */ +! if (c2 == NUL) + { + s = p; + break; + } + +! if ((p_fic ? MB_TOUPPER(c1) != MB_TOUPPER(c2) : c1 != c2) + #ifdef BACKSLASH_IN_FILENAME + /* consider '/' and '\\' to be equal */ +! && !((c1 == '/' && c2 == '\\') +! || (c1 == '\\' && c2 == '/')) + #endif + ) + { +! if (vim_ispathsep(c1)) + return -1; +! if (vim_ispathsep(c2)) + return 1; +! return p_fic ? MB_TOUPPER(c1) - MB_TOUPPER(c2) +! : c1 - c2; /* no match */ + } + } + if (s == NULL) /* "i" ran into "maxlen" */ + return 0; + ++ c1 = PTR2CHAR((char_u *)s + i); ++ c2 = PTR2CHAR((char_u *)s + i + MB_PTR2LEN((char_u *)s + i)); + /* ignore a trailing slash, but not "//" or ":/" */ +! if (c2 == NUL + && i > 0 + && !after_pathsep((char_u *)s, (char_u *)s + i) + #ifdef BACKSLASH_IN_FILENAME +! && (c1 == '/' || c1 == '\\') + #else +! && c1 == '/' + #endif + ) + return 0; /* match with trailing slash */ +*** ../vim-7.3.887/src/version.c 2013-04-12 13:44:49.000000000 +0200 +--- src/version.c 2013-04-12 14:10:41.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 888, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +155. You forget to eat because you're too busy surfing the net. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.889 b/7.3.889 new file mode 100644 index 0000000..f63ce35 --- /dev/null +++ b/7.3.889 @@ -0,0 +1,71 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.889 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.889 +Problem: Can't build with Ruby 2.0 on a 64 bit system. +Solution: Define rb_fix2int and rb_num2int. (Kohei Suzuki) +Files: src/if_ruby.c + + +*** ../vim-7.3.888/src/if_ruby.c 2013-03-07 15:16:16.000000000 +0100 +--- src/if_ruby.c 2013-04-12 15:25:26.000000000 +0200 +*************** +*** 88,93 **** +--- 88,101 ---- + # define rb_int2big rb_int2big_stub + #endif + ++ #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 20 \ ++ && SIZEOF_INT < SIZEOF_LONG ++ /* Ruby 2.0 defines a number of static functions which use rb_fix2int and ++ * rb_num2int if SIZEOF_INT < SIZEOF_LONG (64bit) */ ++ # define rb_fix2int rb_fix2int_stub ++ # define rb_num2int rb_num2int_stub ++ #endif ++ + #include + #ifdef RUBY19_OR_LATER + # include +*************** +*** 352,357 **** +--- 360,376 ---- + { + return dll_rb_int2big(x); + } ++ #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 20 \ ++ && SIZEOF_INT < SIZEOF_LONG ++ long rb_fix2int_stub(VALUE x) ++ { ++ return dll_rb_fix2int(x); ++ } ++ long rb_num2int_stub(VALUE x) ++ { ++ return dll_rb_num2int(x); ++ } ++ #endif + #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 20 + VALUE + rb_float_new_in_heap(double d) +*** ../vim-7.3.888/src/version.c 2013-04-12 14:42:35.000000000 +0200 +--- src/version.c 2013-04-12 15:24:15.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 889, + /**/ + +-- +"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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.890 b/7.3.890 new file mode 100644 index 0000000..a7bcbca --- /dev/null +++ b/7.3.890 @@ -0,0 +1,60 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.890 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.890 +Problem: Test 79 fails on Windows. (Michael Soyka) +Solution: Add comment below line causing an error. +Files: src/testdir/test79.in + + +*** ../vim-7.3.889/src/testdir/test79.in 2013-03-19 17:42:10.000000000 +0100 +--- src/testdir/test79.in 2013-04-13 11:16:38.000000000 +0200 +*************** +*** 206,216 **** + STARTTEST + :set magic& + :set cpo& +! /^TEST/ + j:s/A./\=submatch(0)/ + j:s/B./\=submatch(0)/ + /^Q$ + :s/Q[^\n]Q/\=submatch(0)."foobar"/ + ENDTEST + + TEST_7: +--- 206,217 ---- + STARTTEST + :set magic& + :set cpo& +! /^TEST_7/ + j:s/A./\=submatch(0)/ + j:s/B./\=submatch(0)/ + /^Q$ + :s/Q[^\n]Q/\=submatch(0)."foobar"/ ++ :" Avoid :s error breaks dotest map on Windows. + ENDTEST + + TEST_7: +*** ../vim-7.3.889/src/version.c 2013-04-14 16:18:52.000000000 +0200 +--- src/version.c 2013-04-14 16:21:14.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 890, + /**/ + +-- +"Hit any key to continue" it said, but nothing happened after F sharp. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.891 b/7.3.891 new file mode 100644 index 0000000..456410f --- /dev/null +++ b/7.3.891 @@ -0,0 +1,142 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.891 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.891 +Problem: Merging viminfo history doesn't work well. +Solution: Don't stop when one type of history is empty. Don't merge history + when writing viminfo. +Files: src/ex_getln.c + + +*** ../vim-7.3.890/src/ex_getln.c 2013-04-06 14:28:56.000000000 +0200 +--- src/ex_getln.c 2013-04-14 16:25:28.000000000 +0200 +*************** +*** 6130,6136 **** + for (type = 0; type < HIST_COUNT; ++type) + { + if (history[type] == NULL) +! return; + idx = hisidx[type] + viminfo_hisidx[type]; + if (idx >= hislen) + idx -= hislen; +--- 6130,6136 ---- + for (type = 0; type < HIST_COUNT; ++type) + { + if (history[type] == NULL) +! continue; + idx = hisidx[type] + viminfo_hisidx[type]; + if (idx >= hislen) + idx -= hislen; +*************** +*** 6182,6187 **** +--- 6182,6188 ---- + int num_saved; + char_u *p; + int c; ++ int round; + + init_history(); + if (hislen == 0) +*************** +*** 6200,6225 **** + _("Input Line")); + if (num_saved > hislen) + num_saved = hislen; +! i = hisidx[type]; +! if (i >= 0) +! while (num_saved--) +! { +! p = history[type][i].hisstr; +! if (p != NULL) + { +! fputc(hist_type2char(type, TRUE), fp); +! /* For the search history: put the separator in the second +! * column; use a space if there isn't one. */ +! if (type == HIST_SEARCH) + { +! c = p[STRLEN(p) + 1]; +! putc(c == NUL ? ' ' : c, fp); + } +- viminfo_writestring(fp, p); + } +! if (--i < 0) +! i = hislen - 1; +! } + } + } + #endif /* FEAT_VIMINFO */ +--- 6201,6250 ---- + _("Input Line")); + if (num_saved > hislen) + num_saved = hislen; +! +! /* +! * Merge typed and viminfo history: +! * round 1: history of typed commands. +! * round 2: history from recently read viminfo. +! */ +! for (round = 1; round <= 2; ++round) +! { +! i = round == 1 ? hisidx[type] : 0; +! if (i >= 0) +! while (num_saved > 0 +! && !(round == 2 && i >= viminfo_hisidx[type])) + { +! p = round == 1 ? history[type][i].hisstr +! : viminfo_history[type][i]; +! if (p != NULL) + { +! --num_saved; +! fputc(hist_type2char(type, TRUE), fp); +! /* For the search history: put the separator in the +! * second column; use a space if there isn't one. */ +! if (type == HIST_SEARCH) +! { +! c = p[STRLEN(p) + 1]; +! putc(c == NUL ? ' ' : c, fp); +! } +! viminfo_writestring(fp, p); +! } +! if (round == 1) +! { +! /* Decrement index, loop around and stop when back at +! * the start. */ +! if (--i < 0) +! i = hislen - 1; +! if (i == hisidx[type]) +! break; +! } +! else +! { +! /* Increment index. Stop at the end in the while. */ +! ++i; + } + } +! } + } + } + #endif /* FEAT_VIMINFO */ +*** ../vim-7.3.890/src/version.c 2013-04-14 16:21:30.000000000 +0200 +--- src/version.c 2013-04-14 16:23:17.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 891, + /**/ + +-- +"The question of whether computers can think is just like the question +of whether submarines can swim." -- Edsger W. Dijkstra + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.892 b/7.3.892 new file mode 100644 index 0000000..4031d4d --- /dev/null +++ b/7.3.892 @@ -0,0 +1,295 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.892 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.892 (after 7.3.891) +Problem: Still merging problems for viminfo history. +Solution: Do not merge lines when writing, don't write old viminfo lines. +Files: src/ex_getln.c, src/ex_cmds.c, src/proto/ex_getln.pro + + +*** ../vim-7.3.891/src/ex_getln.c 2013-04-14 16:26:08.000000000 +0200 +--- src/ex_getln.c 2013-04-14 23:12:37.000000000 +0200 +*************** +*** 68,74 **** + + static int hist_char2type __ARGS((int c)); + +! static int in_history __ARGS((int, char_u *, int, int)); + # ifdef FEAT_EVAL + static int calc_hist_idx __ARGS((int histype, int num)); + # endif +--- 68,74 ---- + + static int hist_char2type __ARGS((int c)); + +! static int in_history __ARGS((int, char_u *, int, int, int)); + # ifdef FEAT_EVAL + static int calc_hist_idx __ARGS((int histype, int num)); + # endif +*************** +*** 5397,5407 **** + * If 'move_to_front' is TRUE, matching entry is moved to end of history. + */ + static int +! in_history(type, str, move_to_front, sep) + int type; + char_u *str; + int move_to_front; /* Move the entry to the front if it exists */ + int sep; + { + int i; + int last_i = -1; +--- 5397,5408 ---- + * If 'move_to_front' is TRUE, matching entry is moved to end of history. + */ + static int +! in_history(type, str, move_to_front, sep, writing) + int type; + char_u *str; + int move_to_front; /* Move the entry to the front if it exists */ + int sep; ++ int writing; /* ignore entries read from viminfo */ + { + int i; + int last_i = -1; +*************** +*** 5419,5424 **** +--- 5420,5426 ---- + * well. */ + p = history[type][i].hisstr; + if (STRCMP(str, p) == 0 ++ && !(writing && history[type][i].viminfo) + && (type != HIST_SEARCH || sep == p[STRLEN(p) + 1])) + { + if (!move_to_front) +*************** +*** 5513,5519 **** + } + last_maptick = -1; + } +! if (!in_history(histype, new_entry, TRUE, sep)) + { + if (++hisidx[histype] == hislen) + hisidx[histype] = 0; +--- 5515,5521 ---- + } + last_maptick = -1; + } +! if (!in_history(histype, new_entry, TRUE, sep, FALSE)) + { + if (++hisidx[histype] == hislen) + hisidx[histype] = 0; +*************** +*** 6032,6039 **** + * This allocates history arrays to store the read history lines. + */ + void +! prepare_viminfo_history(asklen) + int asklen; + { + int i; + int num; +--- 6034,6042 ---- + * This allocates history arrays to store the read history lines. + */ + void +! prepare_viminfo_history(asklen, writing) + int asklen; ++ int writing; + { + int i; + int num; +*************** +*** 6041,6047 **** + int len; + + init_history(); +! viminfo_add_at_front = (asklen != 0); + if (asklen > hislen) + asklen = hislen; + +--- 6044,6050 ---- + int len; + + init_history(); +! viminfo_add_at_front = (asklen != 0 && !writing); + if (asklen > hislen) + asklen = hislen; + +*************** +*** 6073,6080 **** + * new. + */ + int +! read_viminfo_history(virp) + vir_T *virp; + { + int type; + long_u len; +--- 6076,6084 ---- + * new. + */ + int +! read_viminfo_history(virp, writing) + vir_T *virp; ++ int writing; + { + int type; + long_u len; +*************** +*** 6090,6096 **** + int sep = (*val == ' ' ? NUL : *val); + + if (!in_history(type, val + (type == HIST_SEARCH), +! viminfo_add_at_front, sep)) + { + /* Need to re-allocate to append the separator byte. */ + len = STRLEN(val); +--- 6094,6100 ---- + int sep = (*val == ' ' ? NUL : *val); + + if (!in_history(type, val + (type == HIST_SEARCH), +! viminfo_add_at_front, sep, writing)) + { + /* Need to re-allocate to append the separator byte. */ + len = STRLEN(val); +*************** +*** 6120,6125 **** +--- 6124,6132 ---- + return viminfo_readline(virp); + } + ++ /* ++ * Finish reading history lines from viminfo. Not used when writing viminfo. ++ */ + void + finish_viminfo_history() + { +*************** +*** 6216,6222 **** + { + p = round == 1 ? history[type][i].hisstr + : viminfo_history[type][i]; +! if (p != NULL) + { + --num_saved; + fputc(hist_type2char(type, TRUE), fp); +--- 6223,6229 ---- + { + p = round == 1 ? history[type][i].hisstr + : viminfo_history[type][i]; +! if (p != NULL && (round == 2 || !history[type][i].viminfo)) + { + --num_saved; + fputc(hist_type2char(type, TRUE), fp); +*************** +*** 6245,6250 **** +--- 6252,6261 ---- + } + } + } ++ for (i = 0; i < viminfo_hisidx[type]; ++i) ++ vim_free(viminfo_history[type][i]); ++ vim_free(viminfo_history[type]); ++ viminfo_history[type] = NULL; + } + } + #endif /* FEAT_VIMINFO */ +*** ../vim-7.3.891/src/ex_cmds.c 2013-03-07 16:41:26.000000000 +0100 +--- src/ex_cmds.c 2013-04-14 23:08:26.000000000 +0200 +*************** +*** 2113,2119 **** + buf_T *buf; + + #ifdef FEAT_CMDHIST +! prepare_viminfo_history(forceit ? 9999 : 0); + #endif + eof = viminfo_readline(virp); + while (!eof && virp->vir_line[0] != '>') +--- 2113,2119 ---- + buf_T *buf; + + #ifdef FEAT_CMDHIST +! prepare_viminfo_history(forceit ? 9999 : 0, writing); + #endif + eof = viminfo_readline(virp); + while (!eof && virp->vir_line[0] != '>') +*************** +*** 2161,2167 **** + case '=': + case '@': + #ifdef FEAT_CMDHIST +! eof = read_viminfo_history(virp); + #else + eof = viminfo_readline(virp); + #endif +--- 2161,2167 ---- + case '=': + case '@': + #ifdef FEAT_CMDHIST +! eof = read_viminfo_history(virp, writing); + #else + eof = viminfo_readline(virp); + #endif +*************** +*** 2182,2188 **** + + #ifdef FEAT_CMDHIST + /* Finish reading history items. */ +! finish_viminfo_history(); + #endif + + /* Change file names to buffer numbers for fmarks. */ +--- 2182,2189 ---- + + #ifdef FEAT_CMDHIST + /* Finish reading history items. */ +! if (!writing) +! finish_viminfo_history(); + #endif + + /* Change file names to buffer numbers for fmarks. */ +*** ../vim-7.3.891/src/proto/ex_getln.pro 2011-05-19 18:26:34.000000000 +0200 +--- src/proto/ex_getln.pro 2013-04-14 23:12:02.000000000 +0200 +*************** +*** 48,55 **** + void remove_key_from_history __ARGS((void)); + int get_list_range __ARGS((char_u **str, int *num1, int *num2)); + void ex_history __ARGS((exarg_T *eap)); +! void prepare_viminfo_history __ARGS((int asklen)); +! int read_viminfo_history __ARGS((vir_T *virp)); + void finish_viminfo_history __ARGS((void)); + void write_viminfo_history __ARGS((FILE *fp)); + void cmd_pchar __ARGS((int c, int offset)); +--- 48,55 ---- + void remove_key_from_history __ARGS((void)); + int get_list_range __ARGS((char_u **str, int *num1, int *num2)); + void ex_history __ARGS((exarg_T *eap)); +! void prepare_viminfo_history __ARGS((int asklen, int writing)); +! int read_viminfo_history __ARGS((vir_T *virp, int writing)); + void finish_viminfo_history __ARGS((void)); + void write_viminfo_history __ARGS((FILE *fp)); + void cmd_pchar __ARGS((int c, int offset)); +*** ../vim-7.3.891/src/version.c 2013-04-14 16:26:08.000000000 +0200 +--- src/version.c 2013-04-14 22:53:04.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 892, + /**/ + +-- +"Hit any key to continue" is a lie. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.893 b/7.3.893 new file mode 100644 index 0000000..5dd71ba --- /dev/null +++ b/7.3.893 @@ -0,0 +1,718 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.893 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.893 +Problem: Crash when using b:, w: or t: after closing the buffer, window or + tabpage. +Solution: Allocate the dictionary instead of having it part of the + buffer/window/tabpage struct. (Yukihiro Nakadaira) +Files: src/buffer.c, src/eval.c, src/fileio.c, src/structs.h, + src/window.c, src/proto/eval.pro + + +*** ../vim-7.3.892/src/buffer.c 2013-03-19 16:46:59.000000000 +0100 +--- src/buffer.c 2013-04-15 12:07:07.000000000 +0200 +*************** +*** 648,653 **** +--- 648,656 ---- + buf_T *buf; + { + free_buffer_stuff(buf, TRUE); ++ #ifdef FEAT_EVAL ++ unref_var_dict(buf->b_vars); ++ #endif + #ifdef FEAT_LUA + lua_buffer_free(buf); + #endif +*************** +*** 689,696 **** + #endif + } + #ifdef FEAT_EVAL +! vars_clear(&buf->b_vars.dv_hashtab); /* free all internal variables */ +! hash_init(&buf->b_vars.dv_hashtab); + #endif + #ifdef FEAT_USR_CMDS + uc_clear(&buf->b_ucmds); /* clear local user commands */ +--- 692,699 ---- + #endif + } + #ifdef FEAT_EVAL +! vars_clear(&buf->b_vars->dv_hashtab); /* free all internal variables */ +! hash_init(&buf->b_vars->dv_hashtab); + #endif + #ifdef FEAT_USR_CMDS + uc_clear(&buf->b_ucmds); /* clear local user commands */ +*************** +*** 1694,1699 **** +--- 1697,1713 ---- + vim_free(ffname); + return NULL; + } ++ #ifdef FEAT_EVAL ++ /* init b: variables */ ++ buf->b_vars = dict_alloc(); ++ if (buf->b_vars == NULL) ++ { ++ vim_free(ffname); ++ vim_free(buf); ++ return NULL; ++ } ++ init_var_dict(buf->b_vars, &buf->b_bufvar, VAR_SCOPE); ++ #endif + } + + if (ffname != NULL) +*************** +*** 1778,1787 **** + buf->b_wininfo->wi_fpos.lnum = lnum; + buf->b_wininfo->wi_win = curwin; + +- #ifdef FEAT_EVAL +- /* init b: variables */ +- init_var_dict(&buf->b_vars, &buf->b_bufvar, VAR_SCOPE); +- #endif + #ifdef FEAT_SYN_HL + hash_init(&buf->b_s.b_keywtab); + hash_init(&buf->b_s.b_keywtab_ic); +--- 1792,1797 ---- +*** ../vim-7.3.892/src/eval.c 2013-03-19 14:25:50.000000000 +0100 +--- src/eval.c 2013-04-15 12:26:33.000000000 +0200 +*************** +*** 2131,2137 **** + { + 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); +--- 2131,2137 ---- + { + 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); +*************** +*** 2146,2152 **** + list_win_vars(first) + int *first; + { +! list_hashtable_vars(&curwin->w_vars.dv_hashtab, + (char_u *)"w:", TRUE, first); + } + +--- 2146,2152 ---- + list_win_vars(first) + int *first; + { +! list_hashtable_vars(&curwin->w_vars->dv_hashtab, + (char_u *)"w:", TRUE, first); + } + +*************** +*** 2158,2164 **** + list_tab_vars(first) + int *first; + { +! list_hashtable_vars(&curtab->tp_vars.dv_hashtab, + (char_u *)"t:", TRUE, first); + } + #endif +--- 2158,2164 ---- + list_tab_vars(first) + int *first; + { +! list_hashtable_vars(&curtab->tp_vars->dv_hashtab, + (char_u *)"t:", TRUE, first); + } + #endif +*************** +*** 3948,3954 **** + } + + /* b: variables */ +! ht = &curbuf->b_vars.dv_hashtab; + if (bdone < ht->ht_used) + { + if (bdone++ == 0) +--- 3948,3954 ---- + } + + /* b: variables */ +! ht = &curbuf->b_vars->dv_hashtab; + if (bdone < ht->ht_used) + { + if (bdone++ == 0) +*************** +*** 3966,3972 **** + } + + /* w: variables */ +! ht = &curwin->w_vars.dv_hashtab; + if (wdone < ht->ht_used) + { + if (wdone++ == 0) +--- 3966,3972 ---- + } + + /* w: variables */ +! ht = &curwin->w_vars->dv_hashtab; + if (wdone < ht->ht_used) + { + if (wdone++ == 0) +*************** +*** 3980,3986 **** + + #ifdef FEAT_WINDOWS + /* t: variables */ +! ht = &curtab->tp_vars.dv_hashtab; + if (tdone < ht->ht_used) + { + if (tdone++ == 0) +--- 3980,3986 ---- + + #ifdef FEAT_WINDOWS + /* t: variables */ +! ht = &curtab->tp_vars->dv_hashtab; + if (tdone < ht->ht_used) + { + if (tdone++ == 0) +*************** +*** 6787,6802 **** + + /* buffer-local variables */ + for (buf = firstbuf; buf != NULL; buf = buf->b_next) +! set_ref_in_ht(&buf->b_vars.dv_hashtab, copyID); + + /* window-local variables */ + FOR_ALL_TAB_WINDOWS(tp, wp) +! set_ref_in_ht(&wp->w_vars.dv_hashtab, copyID); + + #ifdef FEAT_WINDOWS + /* tabpage-local variables */ + for (tp = first_tabpage; tp != NULL; tp = tp->tp_next) +! set_ref_in_ht(&tp->tp_vars.dv_hashtab, copyID); + #endif + + /* global variables */ +--- 6787,6802 ---- + + /* buffer-local variables */ + for (buf = firstbuf; buf != NULL; buf = buf->b_next) +! set_ref_in_item(&buf->b_bufvar.di_tv, copyID); + + /* window-local variables */ + FOR_ALL_TAB_WINDOWS(tp, wp) +! set_ref_in_item(&wp->w_winvar.di_tv, copyID); + + #ifdef FEAT_WINDOWS + /* tabpage-local variables */ + for (tp = first_tabpage; tp != NULL; tp = tp->tp_next) +! set_ref_in_item(&tp->tp_winvar.di_tv, copyID); + #endif + + /* global variables */ +*************** +*** 11156,11162 **** + * find_var_in_ht(). */ + varname = (char_u *)"b:" + 2; + /* look up the variable */ +! v = find_var_in_ht(&curbuf->b_vars.dv_hashtab, varname, FALSE); + if (v != NULL) + copy_tv(&v->di_tv, rettv); + } +--- 11156,11162 ---- + * find_var_in_ht(). */ + varname = (char_u *)"b:" + 2; + /* look up the variable */ +! v = find_var_in_ht(&curbuf->b_vars->dv_hashtab, varname, FALSE); + if (v != NULL) + copy_tv(&v->di_tv, rettv); + } +*************** +*** 11779,11785 **** + if (tp != NULL && varname != NULL) + { + /* look up the variable */ +! v = find_var_in_ht(&tp->tp_vars.dv_hashtab, varname, FALSE); + if (v != NULL) + copy_tv(&v->di_tv, rettv); + else if (argvars[2].v_type != VAR_UNKNOWN) +--- 11779,11785 ---- + if (tp != NULL && varname != NULL) + { + /* look up the variable */ +! v = find_var_in_ht(&tp->tp_vars->dv_hashtab, varname, FALSE); + if (v != NULL) + copy_tv(&v->di_tv, rettv); + else if (argvars[2].v_type != VAR_UNKNOWN) +*************** +*** 11935,11941 **** + * find_var_in_ht(). */ + varname = (char_u *)"w:" + 2; + /* look up the variable */ +! v = find_var_in_ht(&win->w_vars.dv_hashtab, varname, FALSE); + if (v != NULL) + copy_tv(&v->di_tv, rettv); + } +--- 11935,11941 ---- + * find_var_in_ht(). */ + varname = (char_u *)"w:" + 2; + /* look up the variable */ +! v = find_var_in_ht(&win->w_vars->dv_hashtab, varname, FALSE); + if (v != NULL) + copy_tv(&v->di_tv, rettv); + } +*************** +*** 14333,14339 **** + rettv->v_type = VAR_STRING; + } + +! #ifdef FEAT_MZSCHEME + /* + * "mzeval()" function + */ +--- 14333,14339 ---- + rettv->v_type = VAR_STRING; + } + +! #if defined(FEAT_MZSCHEME) || defined(PROTO) + /* + * "mzeval()" function + */ +*************** +*** 20134,20145 **** + || vim_strchr(name + 2, AUTOLOAD_CHAR) != NULL) + return NULL; + if (*name == 'b') /* buffer variable */ +! return &curbuf->b_vars.dv_hashtab; + if (*name == 'w') /* window variable */ +! return &curwin->w_vars.dv_hashtab; + #ifdef FEAT_WINDOWS + if (*name == 't') /* tab page variable */ +! return &curtab->tp_vars.dv_hashtab; + #endif + if (*name == 'v') /* v: variable */ + return &vimvarht; +--- 20134,20145 ---- + || vim_strchr(name + 2, AUTOLOAD_CHAR) != NULL) + return NULL; + if (*name == 'b') /* buffer variable */ +! return &curbuf->b_vars->dv_hashtab; + if (*name == 'w') /* window variable */ +! return &curwin->w_vars->dv_hashtab; + #ifdef FEAT_WINDOWS + if (*name == 't') /* tab page variable */ +! return &curtab->tp_vars->dv_hashtab; + #endif + if (*name == 'v') /* v: variable */ + return &vimvarht; +*************** +*** 20229,20234 **** +--- 20229,20247 ---- + } + + /* ++ * Unreference a dictionary initialized by init_var_dict(). ++ */ ++ void ++ unref_var_dict(dict) ++ dict_T *dict; ++ { ++ /* Now the dict needs to be freed if no one else is using it, go back to ++ * normal reference counting. */ ++ dict->dv_refcount -= DO_NOT_FREE_CNT - 1; ++ dict_unref(dict); ++ } ++ ++ /* + * Clean up a list of internal variables. + * Frees all allocated variables and the value they contain. + * Clears hashtab "ht", does not free it. +*** ../vim-7.3.892/src/fileio.c 2013-03-19 16:46:59.000000000 +0100 +--- src/fileio.c 2013-04-15 11:52:34.000000000 +0200 +*************** +*** 8955,8962 **** + /* Hmm, original window disappeared. Just use the first one. */ + curwin = firstwin; + # ifdef FEAT_EVAL +! vars_clear(&aucmd_win->w_vars.dv_hashtab); /* free all w: variables */ +! hash_init(&aucmd_win->w_vars.dv_hashtab); /* re-use the hashtab */ + # endif + #else + curwin = aco->save_curwin; +--- 8955,8962 ---- + /* Hmm, original window disappeared. Just use the first one. */ + curwin = firstwin; + # ifdef FEAT_EVAL +! vars_clear(&aucmd_win->w_vars->dv_hashtab); /* free all w: variables */ +! hash_init(&aucmd_win->w_vars->dv_hashtab); /* re-use the hashtab */ + # endif + #else + curwin = aco->save_curwin; +*** ../vim-7.3.892/src/structs.h 2012-07-16 17:31:48.000000000 +0200 +--- src/structs.h 2013-04-15 11:52:34.000000000 +0200 +*************** +*** 1611,1617 **** + + #ifdef FEAT_EVAL + dictitem_T b_bufvar; /* variable for "b:" Dictionary */ +! dict_T b_vars; /* internal variables, local to buffer */ + #endif + + #if defined(FEAT_BEVAL) && defined(FEAT_EVAL) +--- 1611,1617 ---- + + #ifdef FEAT_EVAL + dictitem_T b_bufvar; /* variable for "b:" Dictionary */ +! dict_T *b_vars; /* internal variables, local to buffer */ + #endif + + #if defined(FEAT_BEVAL) && defined(FEAT_EVAL) +*************** +*** 1757,1763 **** + frame_T *(tp_snapshot[SNAP_COUNT]); /* window layout snapshots */ + #ifdef FEAT_EVAL + dictitem_T tp_winvar; /* variable for "t:" Dictionary */ +! dict_T tp_vars; /* internal variables, local to tab page */ + #endif + }; + +--- 1757,1763 ---- + frame_T *(tp_snapshot[SNAP_COUNT]); /* window layout snapshots */ + #ifdef FEAT_EVAL + dictitem_T tp_winvar; /* variable for "t:" Dictionary */ +! dict_T *tp_vars; /* internal variables, local to tab page */ + #endif + }; + +*************** +*** 2080,2086 **** + + #ifdef FEAT_EVAL + dictitem_T w_winvar; /* variable for "w:" Dictionary */ +! dict_T w_vars; /* internal variables, local to window */ + #endif + + #if defined(FEAT_RIGHTLEFT) && defined(FEAT_FKMAP) +--- 2080,2086 ---- + + #ifdef FEAT_EVAL + dictitem_T w_winvar; /* variable for "w:" Dictionary */ +! dict_T *w_vars; /* internal variables, local to window */ + #endif + + #if defined(FEAT_RIGHTLEFT) && defined(FEAT_FKMAP) +*** ../vim-7.3.892/src/window.c 2013-02-06 13:37:58.000000000 +0100 +--- src/window.c 2013-04-15 12:20:09.000000000 +0200 +*************** +*** 3457,3481 **** + alloc_tabpage() + { + tabpage_T *tp; + + tp = (tabpage_T *)alloc_clear((unsigned)sizeof(tabpage_T)); +! if (tp != NULL) + { +! # ifdef FEAT_GUI +! int i; + +! for (i = 0; i < 3; i++) +! tp->tp_prev_which_scrollbars[i] = -1; + # endif + # ifdef FEAT_DIFF +! tp->tp_diff_invalid = TRUE; + # endif +! #ifdef FEAT_EVAL +! /* init t: variables */ +! init_var_dict(&tp->tp_vars, &tp->tp_winvar, VAR_SCOPE); +! #endif +! tp->tp_ch_used = p_ch; +! } + return tp; + } + +--- 3457,3491 ---- + alloc_tabpage() + { + tabpage_T *tp; ++ # ifdef FEAT_GUI ++ int i; ++ # endif ++ + + tp = (tabpage_T *)alloc_clear((unsigned)sizeof(tabpage_T)); +! if (tp == NULL) +! return NULL; +! +! # ifdef FEAT_EVAL +! /* init t: variables */ +! tp->tp_vars = dict_alloc(); +! if (tp->tp_vars == NULL) + { +! vim_free(tp); +! return NULL; +! } +! init_var_dict(tp->tp_vars, &tp->tp_winvar, VAR_SCOPE); +! # endif + +! # ifdef FEAT_GUI +! for (i = 0; i < 3; i++) +! tp->tp_prev_which_scrollbars[i] = -1; + # endif + # ifdef FEAT_DIFF +! tp->tp_diff_invalid = TRUE; + # endif +! tp->tp_ch_used = p_ch; +! + return tp; + } + +*************** +*** 3491,3497 **** + for (idx = 0; idx < SNAP_COUNT; ++idx) + clear_snapshot(tp, idx); + #ifdef FEAT_EVAL +! vars_clear(&tp->tp_vars.dv_hashtab); /* free all t: variables */ + #endif + vim_free(tp); + } +--- 3501,3509 ---- + for (idx = 0; idx < SNAP_COUNT; ++idx) + clear_snapshot(tp, idx); + #ifdef FEAT_EVAL +! vars_clear(&tp->tp_vars->dv_hashtab); /* free all t: variables */ +! hash_init(&tp->tp_vars->dv_hashtab); +! unref_var_dict(tp->tp_vars); + #endif + vim_free(tp); + } +*************** +*** 4363,4433 **** + * allocate window structure and linesizes arrays + */ + new_wp = (win_T *)alloc_clear((unsigned)sizeof(win_T)); +! if (new_wp != NULL && win_alloc_lines(new_wp) == FAIL) + { + vim_free(new_wp); +! new_wp = NULL; + } + +! if (new_wp != NULL) + { + #ifdef FEAT_AUTOCMD +! /* 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 +! */ + #ifdef FEAT_WINDOWS +! if (!hidden) +! win_append(after, new_wp); + #endif + #ifdef FEAT_VERTSPLIT +! new_wp->w_wincol = 0; +! new_wp->w_width = Columns; + #endif + +! /* position the display and the cursor at the top of the file. */ +! new_wp->w_topline = 1; + #ifdef FEAT_DIFF +! new_wp->w_topfill = 0; + #endif +! new_wp->w_botline = 2; +! new_wp->w_cursor.lnum = 1; + #ifdef FEAT_SCROLLBIND +! new_wp->w_scbind_pos = 1; + #endif + +! /* We won't calculate w_fraction until resizing the window */ +! new_wp->w_fraction = 0; +! new_wp->w_prev_fraction_row = -1; + + #ifdef FEAT_GUI +! if (gui.in_use) +! { +! gui_create_scrollbar(&new_wp->w_scrollbars[SBAR_LEFT], +! SBAR_LEFT, new_wp); +! gui_create_scrollbar(&new_wp->w_scrollbars[SBAR_RIGHT], +! SBAR_RIGHT, new_wp); +! } +! #endif +! #ifdef FEAT_EVAL +! /* init w: variables */ +! init_var_dict(&new_wp->w_vars, &new_wp->w_winvar, VAR_SCOPE); + #endif + #ifdef FEAT_FOLDING +! foldInitWin(new_wp); + #endif + #ifdef FEAT_AUTOCMD +! unblock_autocmds(); + #endif + #ifdef FEAT_SEARCH_EXTRA +! new_wp->w_match_head = NULL; +! new_wp->w_next_match_id = 4; + #endif +- } + return new_wp; + } + +--- 4375,4453 ---- + * allocate window structure and linesizes arrays + */ + new_wp = (win_T *)alloc_clear((unsigned)sizeof(win_T)); +! if (new_wp == NULL) +! return NULL; +! +! if (win_alloc_lines(new_wp) == FAIL) + { + vim_free(new_wp); +! return NULL; + } + +! #ifdef FEAT_EVAL +! /* init w: variables */ +! new_wp->w_vars = dict_alloc(); +! if (new_wp->w_vars == NULL) + { ++ win_free_lsize(new_wp); ++ vim_free(new_wp); ++ return NULL; ++ } ++ init_var_dict(new_wp->w_vars, &new_wp->w_winvar, VAR_SCOPE); ++ #endif ++ + #ifdef FEAT_AUTOCMD +! /* 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 +! */ + #ifdef FEAT_WINDOWS +! if (!hidden) +! win_append(after, new_wp); + #endif + #ifdef FEAT_VERTSPLIT +! new_wp->w_wincol = 0; +! new_wp->w_width = Columns; + #endif + +! /* position the display and the cursor at the top of the file. */ +! new_wp->w_topline = 1; + #ifdef FEAT_DIFF +! new_wp->w_topfill = 0; + #endif +! new_wp->w_botline = 2; +! new_wp->w_cursor.lnum = 1; + #ifdef FEAT_SCROLLBIND +! new_wp->w_scbind_pos = 1; + #endif + +! /* We won't calculate w_fraction until resizing the window */ +! new_wp->w_fraction = 0; +! new_wp->w_prev_fraction_row = -1; + + #ifdef FEAT_GUI +! if (gui.in_use) +! { +! gui_create_scrollbar(&new_wp->w_scrollbars[SBAR_LEFT], +! SBAR_LEFT, new_wp); +! gui_create_scrollbar(&new_wp->w_scrollbars[SBAR_RIGHT], +! SBAR_RIGHT, new_wp); +! } + #endif + #ifdef FEAT_FOLDING +! foldInitWin(new_wp); + #endif + #ifdef FEAT_AUTOCMD +! unblock_autocmds(); + #endif + #ifdef FEAT_SEARCH_EXTRA +! new_wp->w_match_head = NULL; +! new_wp->w_next_match_id = 4; + #endif + return new_wp; + } + +*************** +*** 4488,4494 **** + clear_winopt(&wp->w_allbuf_opt); + + #ifdef FEAT_EVAL +! vars_clear(&wp->w_vars.dv_hashtab); /* free all w: variables */ + #endif + + if (prevwin == wp) +--- 4508,4516 ---- + clear_winopt(&wp->w_allbuf_opt); + + #ifdef FEAT_EVAL +! vars_clear(&wp->w_vars->dv_hashtab); /* free all w: variables */ +! hash_init(&wp->w_vars->dv_hashtab); +! unref_var_dict(wp->w_vars); + #endif + + if (prevwin == wp) +*** ../vim-7.3.892/src/proto/eval.pro 2013-01-30 14:55:35.000000000 +0100 +--- src/proto/eval.pro 2013-04-15 12:26:39.000000000 +0200 +*************** +*** 24,31 **** + int get_spellword __ARGS((list_T *list, char_u **pp)); + typval_T *eval_expr __ARGS((char_u *arg, char_u **nextcmd)); + int call_vim_function __ARGS((char_u *func, int argc, char_u **argv, int safe, int str_arg_only, typval_T *rettv)); +- void *call_func_retstr __ARGS((char_u *func, int argc, char_u **argv, int safe)); + long call_func_retnr __ARGS((char_u *func, int argc, char_u **argv, int safe)); + void *call_func_retlist __ARGS((char_u *func, int argc, char_u **argv, int safe)); + void *save_funccal __ARGS((void)); + void restore_funccal __ARGS((void *vfc)); +--- 24,31 ---- + int get_spellword __ARGS((list_T *list, char_u **pp)); + typval_T *eval_expr __ARGS((char_u *arg, char_u **nextcmd)); + int call_vim_function __ARGS((char_u *func, int argc, char_u **argv, int safe, int str_arg_only, typval_T *rettv)); + long call_func_retnr __ARGS((char_u *func, int argc, char_u **argv, int safe)); ++ void *call_func_retstr __ARGS((char_u *func, int argc, char_u **argv, int safe)); + void *call_func_retlist __ARGS((char_u *func, int argc, char_u **argv, int safe)); + void *save_funccal __ARGS((void)); + void restore_funccal __ARGS((void *vfc)); +*************** +*** 95,100 **** +--- 95,101 ---- + char_u *get_var_value __ARGS((char_u *name)); + void new_script_vars __ARGS((scid_T id)); + void init_var_dict __ARGS((dict_T *dict, dictitem_T *dict_var, int scope)); ++ void unref_var_dict __ARGS((dict_T *dict)); + void vars_clear __ARGS((hashtab_T *ht)); + void copy_tv __ARGS((typval_T *from, typval_T *to)); + void ex_echo __ARGS((exarg_T *eap)); +*** ../vim-7.3.892/src/version.c 2013-04-14 23:19:32.000000000 +0200 +--- src/version.c 2013-04-15 12:19:17.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 893, + /**/ + +-- +Apathy Error: Don't bother striking any key. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.894 b/7.3.894 new file mode 100644 index 0000000..8b435fe --- /dev/null +++ b/7.3.894 @@ -0,0 +1,47 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.894 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.894 +Problem: Using wrong RUBY_VER causing Ruby build to break. +Solution: Correct the RUBY_VER value. (Yongwei Wu) +Files: src/bigvim.bat + + +*** ../vim-7.3.893/src/bigvim.bat 2012-08-29 14:18:26.000000000 +0200 +--- src/bigvim.bat 2013-04-15 12:32:08.000000000 +0200 +*************** +*** 1,5 **** + :: command to build big Vim with OLE, Perl, Python, Ruby and Tcl + SET VCDIR="C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\" + SET TOOLDIR=E:\ +! %VCDIR%nmake -f Make_mvc.mak GUI=yes OLE=yes PERL=E:\perl514 DYNAMIC_PERL=yes PERL_VER=514 PYTHON=%TOOLDIR%python27 DYNAMIC_PYTHON=yes PYTHON_VER=27 PYTHON3=%TOOLDIR%python32 DYNAMIC_PYTHON3=yes PYTHON3_VER=32 RUBY=%TOOLDIR%ruby192 DYNAMIC_RUBY=yes RUBY_VER=192 RUBY_VER_LONG=1.9.2 TCL=%TOOLDIR%tcl TCL_VER=85 TCL_VER_LONG=8.5 DYNAMIC_TCL=yes %1 IME=yes CSCOPE=yes + +--- 1,5 ---- + :: command to build big Vim with OLE, Perl, Python, Ruby and Tcl + SET VCDIR="C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\" + SET TOOLDIR=E:\ +! %VCDIR%nmake -f Make_mvc.mak GUI=yes OLE=yes PERL=E:\perl514 DYNAMIC_PERL=yes PERL_VER=514 PYTHON=%TOOLDIR%python27 DYNAMIC_PYTHON=yes PYTHON_VER=27 PYTHON3=%TOOLDIR%python32 DYNAMIC_PYTHON3=yes PYTHON3_VER=32 RUBY=%TOOLDIR%ruby192 DYNAMIC_RUBY=yes RUBY_VER=19 RUBY_VER_LONG=1.9.2 TCL=%TOOLDIR%tcl TCL_VER=85 TCL_VER_LONG=8.5 DYNAMIC_TCL=yes %1 IME=yes CSCOPE=yes + +*** ../vim-7.3.893/src/version.c 2013-04-15 12:27:30.000000000 +0200 +--- src/version.c 2013-04-15 12:34:36.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 894, + /**/ + +-- +Did you ever see a "Hit any key to continue" message in a music piece? + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.895 b/7.3.895 new file mode 100644 index 0000000..676c972 --- /dev/null +++ b/7.3.895 @@ -0,0 +1,189 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.895 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.895 +Problem: Valgrind error in test 91. (Issue 128) +Solution: Pass scope name to find_var_in_ht(). +Files: src/eval.c + + +*** ../vim-7.3.894/src/eval.c 2013-04-15 12:27:30.000000000 +0200 +--- src/eval.c 2013-04-15 13:00:44.000000000 +0200 +*************** +*** 788,794 **** + static char_u *get_tv_string_buf __ARGS((typval_T *varp, char_u *buf)); + static char_u *get_tv_string_buf_chk __ARGS((typval_T *varp, char_u *buf)); + static dictitem_T *find_var __ARGS((char_u *name, hashtab_T **htp)); +! static dictitem_T *find_var_in_ht __ARGS((hashtab_T *ht, char_u *varname, int writing)); + 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)); +--- 788,794 ---- + static char_u *get_tv_string_buf __ARGS((typval_T *varp, char_u *buf)); + static char_u *get_tv_string_buf_chk __ARGS((typval_T *varp, char_u *buf)); + static dictitem_T *find_var __ARGS((char_u *name, hashtab_T **htp)); +! static dictitem_T *find_var_in_ht __ARGS((hashtab_T *ht, int htname, char_u *varname, int writing)); + 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)); +*************** +*** 11150,11162 **** + } + else + { +! if (*varname == NUL) +! /* let getbufvar({nr}, "") return the "b:" dictionary. The +! * scope prefix before the NUL byte is required by +! * find_var_in_ht(). */ +! varname = (char_u *)"b:" + 2; +! /* look up the variable */ +! v = find_var_in_ht(&curbuf->b_vars->dv_hashtab, varname, FALSE); + if (v != NULL) + copy_tv(&v->di_tv, rettv); + } +--- 11150,11159 ---- + } + else + { +! /* Look up the variable. */ +! /* Let getbufvar({nr}, "") return the "b:" dictionary. */ +! v = find_var_in_ht(&curbuf->b_vars->dv_hashtab, +! 'b', varname, FALSE); + if (v != NULL) + copy_tv(&v->di_tv, rettv); + } +*************** +*** 11779,11785 **** + if (tp != NULL && varname != NULL) + { + /* look up the variable */ +! v = find_var_in_ht(&tp->tp_vars->dv_hashtab, varname, FALSE); + if (v != NULL) + copy_tv(&v->di_tv, rettv); + else if (argvars[2].v_type != VAR_UNKNOWN) +--- 11776,11782 ---- + if (tp != NULL && varname != NULL) + { + /* look up the variable */ +! v = find_var_in_ht(&tp->tp_vars->dv_hashtab, 0, varname, FALSE); + if (v != NULL) + copy_tv(&v->di_tv, rettv); + else if (argvars[2].v_type != VAR_UNKNOWN) +*************** +*** 11929,11941 **** + get_option_tv(&varname, rettv, 1); + else + { +! if (*varname == NUL) +! /* let getwinvar({nr}, "") return the "w:" dictionary. The +! * scope prefix before the NUL byte is required by +! * find_var_in_ht(). */ +! varname = (char_u *)"w:" + 2; +! /* look up the variable */ +! v = find_var_in_ht(&win->w_vars->dv_hashtab, varname, FALSE); + if (v != NULL) + copy_tv(&v->di_tv, rettv); + } +--- 11926,11934 ---- + get_option_tv(&varname, rettv, 1); + else + { +! /* Look up the variable. */ +! /* Let getwinvar({nr}, "") return the "w:" dictionary. */ +! v = find_var_in_ht(&win->w_vars->dv_hashtab, 'w', varname, FALSE); + if (v != NULL) + copy_tv(&v->di_tv, rettv); + } +*************** +*** 20041,20056 **** + *htp = ht; + if (ht == NULL) + return NULL; +! return find_var_in_ht(ht, varname, htp != NULL); + } + + /* +! * Find variable "varname" in hashtab "ht". + * Returns NULL if not found. + */ + static dictitem_T * +! find_var_in_ht(ht, varname, writing) + hashtab_T *ht; + char_u *varname; + int writing; + { +--- 20034,20050 ---- + *htp = ht; + if (ht == NULL) + return NULL; +! return find_var_in_ht(ht, *name, varname, htp != NULL); + } + + /* +! * Find variable "varname" in hashtab "ht" with name "htname". + * Returns NULL if not found. + */ + static dictitem_T * +! find_var_in_ht(ht, htname, varname, writing) + hashtab_T *ht; ++ int htname; + char_u *varname; + int writing; + { +*************** +*** 20059,20065 **** + if (*varname == NUL) + { + /* Must be something like "s:", otherwise "ht" would be NULL. */ +! switch (varname[-2]) + { + case 's': return &SCRIPT_SV(current_SID)->sv_var; + case 'g': return &globvars_var; +--- 20053,20059 ---- + if (*varname == NUL) + { + /* Must be something like "s:", otherwise "ht" would be NULL. */ +! switch (htname) + { + case 's': return &SCRIPT_SV(current_SID)->sv_var; + case 'g': return &globvars_var; +*************** +*** 20389,20395 **** + EMSG2(_(e_illvar), name); + return; + } +! v = find_var_in_ht(ht, varname, TRUE); + + if (tv->v_type == VAR_FUNC && var_check_func_name(name, v == NULL)) + return; +--- 20383,20389 ---- + EMSG2(_(e_illvar), name); + return; + } +! v = find_var_in_ht(ht, 0, varname, TRUE); + + if (tv->v_type == VAR_FUNC && var_check_func_name(name, v == NULL)) + return; +*** ../vim-7.3.894/src/version.c 2013-04-15 12:36:14.000000000 +0200 +--- src/version.c 2013-04-15 13:04:54.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 895, + /**/ + +-- + Very funny, Scotty. Now beam down my clothes. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.896 b/7.3.896 new file mode 100644 index 0000000..e7f33cc --- /dev/null +++ b/7.3.896 @@ -0,0 +1,206 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.896 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.896 +Problem: Memory leaks in Lua interface. +Solution: Fix the leaks, add tests. (Yukihiro Nakadaira) +Files: src/testdir/test85.in, src/testdir/test85.ok, src/if_lua.c + + +*** ../vim-7.3.895/src/testdir/test85.in 2012-04-05 16:56:38.000000000 +0200 +--- src/testdir/test85.in 2013-04-15 13:12:43.000000000 +0200 +*************** +*** 33,38 **** +--- 33,81 ---- + :let res = "FAILED" + :endif + :call setline(search("^3"), "circular test " . res) ++ ++ :let l = [] ++ :lua l = vim.eval("l") ++ :lua l:add(123) ++ :lua l:add("abc") ++ :lua l:add(vim.eval("[1, 2, 3]")) ++ :lua l:add(vim.eval("{'a':1, 'b':2, 'c':3}")) ++ :lua l:insert(123) ++ :lua l:insert("abc") ++ :lua l:insert(vim.eval("[1, 2, 3]")) ++ :lua l:insert(vim.eval("{'a':1, 'b':2, 'c':3}")) ++ :lua l[0] = l[0] ++ :lua l[1] = l[1] ++ :lua l[2] = l[2] ++ :lua l[3] = l[3] ++ :lua l[0] = 123 ++ :lua l[1] = "abc" ++ :lua l[2] = vim.eval("[1, 2, 3]") ++ :lua l[3] = vim.eval("{'a':1, 'b':2, 'c':3}") ++ :lua l[3] = nil ++ :lua l[2] = nil ++ :lua l[1] = nil ++ :lua l[0] = nil ++ :lua l = nil ++ :$put =string(l) ++ ++ :let d = {} ++ :lua d = vim.eval("d") ++ :lua d[0] = 123 ++ :lua d[1] = "abc" ++ :lua d[2] = vim.eval("[1, 2, 3]") ++ :lua d[3] = vim.eval("{'a':1, 'b':2, 'c':3}") ++ :lua d[4] = d[0] ++ :lua d[5] = d[1] ++ :lua d[6] = d[2] ++ :lua d[7] = d[3] ++ :lua d[3] = nil ++ :lua d[2] = nil ++ :lua d[1] = nil ++ :lua d[0] = nil ++ :lua d = nil ++ :$put =string(d) ++ + :?^1?,$w! test.out + :qa! + ENDTEST +*** ../vim-7.3.895/src/testdir/test85.ok 2012-04-05 16:56:38.000000000 +0200 +--- src/testdir/test85.ok 2013-04-15 13:12:47.000000000 +0200 +*************** +*** 3,5 **** +--- 3,7 ---- + 2 line 2 + dictionary with list OK + circular test OK ++ [123.0, 'abc', [1, 2, 3], {'a': 1, 'b': 2, 'c': 3}] ++ {'4': 123.0, '5': 'abc', '6': [1, 2, 3], '7': {'a': 1, 'b': 2, 'c': 3}} +*** ../vim-7.3.895/src/if_lua.c 2013-04-12 12:18:43.000000000 +0200 +--- src/if_lua.c 2013-04-15 13:35:40.000000000 +0200 +*************** +*** 709,716 **** + { + const char *s = lua_tostring(L, 2); + if (strncmp(s, "add", 3) == 0 +! || strncmp(s, "insert", 6) == 0 +! || strncmp(s, "extend", 6) == 0) + { + lua_getmetatable(L, 1); + lua_getfield(L, -1, s); +--- 709,715 ---- + { + const char *s = lua_tostring(L, 2); + if (strncmp(s, "add", 3) == 0 +! || strncmp(s, "insert", 6) == 0) + { + lua_getmetatable(L, 1); + lua_getfield(L, -1, s); +*************** +*** 745,750 **** +--- 744,750 ---- + luaV_totypval(L, 3, &v); + clear_tv(&li->li_tv); + copy_tv(&v, &li->li_tv); ++ clear_tv(&v); + } + return 0; + } +*************** +*** 754,770 **** + { + luaV_List *lis = luaV_checkudata(L, 1, LUAVIM_LIST); + list_T *l = (list_T *) luaV_checkcache(L, (void *) *lis); +! listitem_T *li; + if (l->lv_lock) + luaL_error(L, "list is locked"); +! li = listitem_alloc(); +! if (li != NULL) + { +! typval_T v; +! lua_settop(L, 2); +! luaV_totypval(L, 2, &v); +! list_append_tv(l, &v); + } + lua_settop(L, 1); + return 1; + } +--- 754,770 ---- + { + luaV_List *lis = luaV_checkudata(L, 1, LUAVIM_LIST); + list_T *l = (list_T *) luaV_checkcache(L, (void *) *lis); +! typval_T v; + if (l->lv_lock) + luaL_error(L, "list is locked"); +! lua_settop(L, 2); +! luaV_totypval(L, 2, &v); +! if (list_append_tv(l, &v) == FAIL) + { +! clear_tv(&v); +! luaL_error(L, "Failed to add item to list"); + } ++ clear_tv(&v); + lua_settop(L, 1); + return 1; + } +*************** +*** 787,793 **** + } + lua_settop(L, 2); + luaV_totypval(L, 2, &v); +! list_insert_tv(l, &v, li); + lua_settop(L, 1); + return 1; + } +--- 787,798 ---- + } + lua_settop(L, 2); + luaV_totypval(L, 2, &v); +! if (list_insert_tv(l, &v, li) == FAIL) +! { +! clear_tv(&v); +! luaL_error(L, "Failed to add item to list"); +! } +! clear_tv(&v); + lua_settop(L, 1); + return 1; + } +*************** +*** 908,913 **** +--- 913,919 ---- + typval_T v; + luaV_totypval(L, 3, &v); + copy_tv(&v, &di->di_tv); ++ clear_tv(&v); + } + return 0; + } +*************** +*** 1323,1328 **** +--- 1329,1335 ---- + typval_T *tv = eval_expr((char_u *) luaL_checkstring(L, 1), NULL); + if (tv == NULL) luaL_error(L, "invalid expression"); + luaV_pushtypval(L, tv); ++ free_tv(tv); + return 1; + } + +*** ../vim-7.3.895/src/version.c 2013-04-15 13:06:15.000000000 +0200 +--- src/version.c 2013-04-15 13:48:21.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 896, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +172. You join listservers just for the extra e-mail. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.897 b/7.3.897 new file mode 100644 index 0000000..ae4813c --- /dev/null +++ b/7.3.897 @@ -0,0 +1,126 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.897 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.897 +Problem: Configure doesn't always find the shared library. +Solution: Change the configure script. (Ken Takata) +Files: src/configure.in, src/auto/configure + + +*** ../vim-7.3.896/src/configure.in 2013-02-26 14:56:24.000000000 +0100 +--- src/configure.in 2013-04-15 14:28:02.000000000 +0200 +*************** +*** 494,510 **** + if test -f "${vi_cv_path_lua_pfx}/bin/cyglua-${vi_cv_version_lua}.dll"; then + vi_cv_dll_name_lua="cyglua-${vi_cv_version_lua}.dll" + else +! dnl Determine the SONAME for the current version, but fallback to +! dnl liblua${vi_cv_version_lua}.so if no SONAME-versioned file is found. +! for LUA_SOVER in "${vi_cv_version_lua}.so" ".so.${vi_cv_version_lua}"; do +! for i in 0 1 2 3 4 5 6 7 8 9; do +! if test -f "${vi_cv_path_lua_pfx}/lib/liblua${LUA_SOVER}.$i"; then +! LUA_SONAME=".$i" +! break +! fi + done +- vi_cv_dll_name_lua="liblua${LUA_SOVER}$LUA_SONAME" + done + fi + AC_DEFINE(DYNAMIC_LUA) + LUA_LIBS="" +--- 494,519 ---- + if test -f "${vi_cv_path_lua_pfx}/bin/cyglua-${vi_cv_version_lua}.dll"; then + vi_cv_dll_name_lua="cyglua-${vi_cv_version_lua}.dll" + else +! multiarch=`dpkg-architecture -qDEB_HOST_MULTIARCH 2> /dev/null` +! if test "X$multiarch" != "X"; then +! lib_multiarch="lib/${multiarch}" +! fi +! dnl Determine the sover for the current version, but fallback to +! dnl liblua${vi_cv_version_lua}.so if no sover-versioned file is found. +! for subdir in "${lib_multiarch}" lib64 lib; do +! if test -z "$subdir"; then +! continue +! fi +! for sover in "${vi_cv_version_lua}.so" "-${vi_cv_version_lua}.so" ".so.${vi_cv_version_lua}"; do +! for i in .0 .1 .2 .3 .4 .5 .6 .7 .8 .9 ""; do +! if test -f "${vi_cv_path_lua_pfx}/${subdir}/liblua${sover}$i"; then +! sover2="$i" +! break 3 +! fi +! done + done + done ++ vi_cv_dll_name_lua="liblua${sover}$sover2" + fi + AC_DEFINE(DYNAMIC_LUA) + LUA_LIBS="" +*** ../vim-7.3.896/src/auto/configure 2013-02-26 14:56:24.000000000 +0100 +--- src/auto/configure 2013-04-15 14:28:06.000000000 +0200 +*************** +*** 4737,4751 **** + if test -f "${vi_cv_path_lua_pfx}/bin/cyglua-${vi_cv_version_lua}.dll"; then + vi_cv_dll_name_lua="cyglua-${vi_cv_version_lua}.dll" + else +! for LUA_SOVER in "${vi_cv_version_lua}.so" ".so.${vi_cv_version_lua}"; do +! for i in 0 1 2 3 4 5 6 7 8 9; do +! if test -f "${vi_cv_path_lua_pfx}/lib/liblua${LUA_SOVER}.$i"; then +! LUA_SONAME=".$i" +! break +! fi + done +- vi_cv_dll_name_lua="liblua${LUA_SOVER}$LUA_SONAME" + done + fi + $as_echo "#define DYNAMIC_LUA 1" >>confdefs.h + +--- 4737,4760 ---- + if test -f "${vi_cv_path_lua_pfx}/bin/cyglua-${vi_cv_version_lua}.dll"; then + vi_cv_dll_name_lua="cyglua-${vi_cv_version_lua}.dll" + else +! multiarch=`dpkg-architecture -qDEB_HOST_MULTIARCH 2> /dev/null` +! if test "X$multiarch" != "X"; then +! lib_multiarch="lib/${multiarch}" +! fi +! for subdir in "${lib_multiarch}" lib64 lib; do +! if test -z "$subdir"; then +! continue +! fi +! for sover in "${vi_cv_version_lua}.so" "-${vi_cv_version_lua}.so" ".so.${vi_cv_version_lua}"; do +! for i in .0 .1 .2 .3 .4 .5 .6 .7 .8 .9 ""; do +! if test -f "${vi_cv_path_lua_pfx}/${subdir}/liblua${sover}$i"; then +! sover2="$i" +! break 3 +! fi +! done + done + done ++ vi_cv_dll_name_lua="liblua${sover}$sover2" + fi + $as_echo "#define DYNAMIC_LUA 1" >>confdefs.h + +*** ../vim-7.3.896/src/version.c 2013-04-15 13:49:17.000000000 +0200 +--- src/version.c 2013-04-15 14:43:52.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 897, + /**/ + +-- +If Microsoft would build a car... +... the oil, water temperature, and alternator warning lights would +all be replaced by a single "General Protection Fault" warning light. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.898 b/7.3.898 new file mode 100644 index 0000000..d2530a5 --- /dev/null +++ b/7.3.898 @@ -0,0 +1,304 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.898 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.898 +Problem: Memory leak reported by valgrind in test 91. +Solution: Only use default argument when needed. +Files: src/eval.c, src/testdir/test91.in, src/testdir/test91.ok + + +*** ../vim-7.3.897/src/eval.c 2013-04-15 13:06:15.000000000 +0200 +--- src/eval.c 2013-04-15 15:09:17.000000000 +0200 +*************** +*** 11120,11139 **** + buf_T *save_curbuf; + char_u *varname; + dictitem_T *v; + + (void)get_tv_number(&argvars[0]); /* issue errmsg if type error */ + varname = get_tv_string_chk(&argvars[1]); + ++emsg_off; + buf = get_buf_tv(&argvars[0], FALSE); + +! if (argvars[2].v_type != VAR_UNKNOWN) +! /* set the default value */ +! copy_tv(&argvars[2], rettv); +! else +! { +! rettv->v_type = VAR_STRING; +! rettv->vval.v_string = NULL; +! } + + if (buf != NULL && varname != NULL) + { +--- 11120,11134 ---- + buf_T *save_curbuf; + char_u *varname; + dictitem_T *v; ++ int done = FALSE; + + (void)get_tv_number(&argvars[0]); /* issue errmsg if type error */ + varname = get_tv_string_chk(&argvars[1]); + ++emsg_off; + buf = get_buf_tv(&argvars[0], FALSE); + +! rettv->v_type = VAR_STRING; +! rettv->vval.v_string = NULL; + + if (buf != NULL && varname != NULL) + { +*************** +*** 11142,11152 **** + curbuf = buf; + + if (*varname == '&') /* buffer-local-option */ +! get_option_tv(&varname, rettv, TRUE); + else if (STRCMP(varname, "changedtick") == 0) + { + rettv->v_type = VAR_NUMBER; + rettv->vval.v_number = curbuf->b_changedtick; + } + else + { +--- 11137,11151 ---- + curbuf = buf; + + if (*varname == '&') /* buffer-local-option */ +! { +! if (get_option_tv(&varname, rettv, TRUE) == OK) +! done = TRUE; +! } + else if (STRCMP(varname, "changedtick") == 0) + { + rettv->v_type = VAR_NUMBER; + rettv->vval.v_number = curbuf->b_changedtick; ++ done = TRUE; + } + else + { +*************** +*** 11155,11167 **** +--- 11154,11173 ---- + v = find_var_in_ht(&curbuf->b_vars->dv_hashtab, + 'b', varname, FALSE); + if (v != NULL) ++ { + copy_tv(&v->di_tv, rettv); ++ done = TRUE; ++ } + } + + /* restore previous notion of curbuf */ + curbuf = save_curbuf; + } + ++ if (!done && argvars[2].v_type != VAR_UNKNOWN) ++ /* use the default value */ ++ copy_tv(&argvars[2], rettv); ++ + --emsg_off; + } + +*************** +*** 11767,11772 **** +--- 11773,11779 ---- + tabpage_T *tp; + dictitem_T *v; + char_u *varname; ++ int done = FALSE; + + rettv->v_type = VAR_STRING; + rettv->vval.v_string = NULL; +*************** +*** 11778,11788 **** + /* look up the variable */ + v = find_var_in_ht(&tp->tp_vars->dv_hashtab, 0, varname, FALSE); + if (v != NULL) + copy_tv(&v->di_tv, rettv); +! else if (argvars[2].v_type != VAR_UNKNOWN) +! copy_tv(&argvars[2], rettv); + } +! else if (argvars[2].v_type != VAR_UNKNOWN) + copy_tv(&argvars[2], rettv); + } + +--- 11785,11797 ---- + /* look up the variable */ + v = find_var_in_ht(&tp->tp_vars->dv_hashtab, 0, varname, FALSE); + if (v != NULL) ++ { + copy_tv(&v->di_tv, rettv); +! done = TRUE; +! } + } +! +! if (!done && argvars[2].v_type != VAR_UNKNOWN) + copy_tv(&argvars[2], rettv); + } + +*************** +*** 11894,11899 **** +--- 11903,11909 ---- + char_u *varname; + dictitem_T *v; + tabpage_T *tp; ++ int done = FALSE; + + #ifdef FEAT_WINDOWS + if (off == 1) +*************** +*** 11905,11918 **** + varname = get_tv_string_chk(&argvars[off + 1]); + ++emsg_off; + +! if (argvars[off + 2].v_type != VAR_UNKNOWN) +! /* set the default return value */ +! copy_tv(&argvars[off + 2], rettv); +! else +! { +! rettv->v_type = VAR_STRING; +! rettv->vval.v_string = NULL; +! } + + if (win != NULL && varname != NULL) + { +--- 11915,11922 ---- + varname = get_tv_string_chk(&argvars[off + 1]); + ++emsg_off; + +! rettv->v_type = VAR_STRING; +! rettv->vval.v_string = NULL; + + if (win != NULL && varname != NULL) + { +*************** +*** 11923,11936 **** + curbuf = win->w_buffer; + + if (*varname == '&') /* window-local-option */ +! get_option_tv(&varname, rettv, 1); + else + { + /* Look up the variable. */ + /* Let getwinvar({nr}, "") return the "w:" dictionary. */ + v = find_var_in_ht(&win->w_vars->dv_hashtab, 'w', varname, FALSE); + if (v != NULL) + copy_tv(&v->di_tv, rettv); + } + + /* restore previous notion of curwin */ +--- 11927,11946 ---- + curbuf = win->w_buffer; + + if (*varname == '&') /* window-local-option */ +! { +! if (get_option_tv(&varname, rettv, 1) == OK) +! done = TRUE; +! } + else + { + /* Look up the variable. */ + /* Let getwinvar({nr}, "") return the "w:" dictionary. */ + v = find_var_in_ht(&win->w_vars->dv_hashtab, 'w', varname, FALSE); + if (v != NULL) ++ { + copy_tv(&v->di_tv, rettv); ++ done = TRUE; ++ } + } + + /* restore previous notion of curwin */ +*************** +*** 11938,11943 **** +--- 11948,11957 ---- + curbuf = curwin->w_buffer; + } + ++ if (!done && argvars[off + 2].v_type != VAR_UNKNOWN) ++ /* use the default return value */ ++ copy_tv(&argvars[off + 2], rettv); ++ + --emsg_off; + } + +*** ../vim-7.3.897/src/testdir/test91.in 2013-02-20 21:11:14.000000000 +0100 +--- src/testdir/test91.in 2013-04-15 14:59:31.000000000 +0200 +*************** +*** 4,12 **** + STARTTEST + :so small.vim + :" +! :" test for getbufvar() +! :let b:var_num = 1234 +! :let def_num = 5678 + :$put =string(getbufvar(1, 'var_num')) + :$put =string(getbufvar(1, 'var_num', def_num)) + :$put =string(getbufvar(1, '')) +--- 4,13 ---- + STARTTEST + :so small.vim + :" +! :" Test for getbufvar() +! :" Use strings to test for memory leaks. +! :let b:var_num = '1234' +! :let def_num = '5678' + :$put =string(getbufvar(1, 'var_num')) + :$put =string(getbufvar(1, 'var_num', def_num)) + :$put =string(getbufvar(1, '')) +*** ../vim-7.3.897/src/testdir/test91.ok 2013-02-20 21:11:14.000000000 +0100 +--- src/testdir/test91.ok 2013-04-15 15:02:45.000000000 +0200 +*************** +*** 1,13 **** + start: +! 1234 +! 1234 +! {'var_num': 1234} +! {'var_num': 1234} +! 5678 + {} + {} + '' +! 5678 + 0 + 0 + 'Dance' +--- 1,13 ---- + start: +! '1234' +! '1234' +! {'var_num': '1234'} +! {'var_num': '1234'} +! '5678' + {} + {} + '' +! '5678' + 0 + 0 + 'Dance' +*** ../vim-7.3.897/src/version.c 2013-04-15 14:44:53.000000000 +0200 +--- src/version.c 2013-04-15 15:14:22.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 898, + /**/ + +-- +If Apple would build a car... +... it would be powered by the sun, be reliable, five times +as fast and twice as easy to drive; but would only run on +five percent of the roads. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.899 b/7.3.899 new file mode 100644 index 0000000..46fceb7 --- /dev/null +++ b/7.3.899 @@ -0,0 +1,67 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.899 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.899 +Problem: #if indents are off. +Solution: Fix the indents. +Files: src/os_unix.c + + +*** ../vim-7.3.898/src/os_unix.c 2013-03-21 22:53:45.000000000 +0100 +--- src/os_unix.c 2013-04-15 15:28:01.000000000 +0200 +*************** +*** 3493,3505 **** + * 4 = Windows Cross Hair + * 5 = Windows UP Arrow + */ +! #ifdef JSBTERM_MOUSE_NONADVANCED /* Disables full feedback of pointer movements */ + out_str_nf((char_u *)IF_EB("\033[0~ZwLMRK1Q\033\\", + ESC_STR "[0~ZwLMRK1Q" ESC_STR "\\")); +! #else + out_str_nf((char_u *)IF_EB("\033[0~ZwLMRK+1Q\033\\", + ESC_STR "[0~ZwLMRK+1Q" ESC_STR "\\")); +! #endif + ison = TRUE; + } + else +--- 3493,3506 ---- + * 4 = Windows Cross Hair + * 5 = Windows UP Arrow + */ +! # ifdef JSBTERM_MOUSE_NONADVANCED +! /* Disables full feedback of pointer movements */ + out_str_nf((char_u *)IF_EB("\033[0~ZwLMRK1Q\033\\", + ESC_STR "[0~ZwLMRK1Q" ESC_STR "\\")); +! # else + out_str_nf((char_u *)IF_EB("\033[0~ZwLMRK+1Q\033\\", + ESC_STR "[0~ZwLMRK+1Q" ESC_STR "\\")); +! # endif + ison = TRUE; + } + else +*** ../vim-7.3.898/src/version.c 2013-04-15 15:15:31.000000000 +0200 +--- src/version.c 2013-04-15 15:31:43.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 899, + /**/ + +-- +If Microsoft would build a car... +... Occasionally, executing a maneuver such as a left turn +would cause your car to shut down and refuse to restart, in +which case you would have to reinstall the engine. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.900 b/7.3.900 new file mode 100644 index 0000000..e19e0f2 --- /dev/null +++ b/7.3.900 @@ -0,0 +1,55 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.900 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.900 +Problem: Not obvious that some mouse features are mutual-exclusive. +Solution: Add a comment. +Files: src/feature.h + + +*** ../vim-7.3.899/src/feature.h 2013-02-26 14:56:24.000000000 +0100 +--- src/feature.h 2013-04-15 15:29:17.000000000 +0200 +*************** +*** 1088,1093 **** +--- 1088,1100 ---- + # endif + #endif + ++ /* ++ * Note: Only one of the following may be defined: ++ * FEAT_MOUSE_GPM ++ * FEAT_SYSMOUSE ++ * FEAT_MOUSE_JSB ++ * FEAT_MOUSE_PTERM ++ */ + #if defined(FEAT_NORMAL) && defined(HAVE_GPM) + # define FEAT_MOUSE_GPM + #endif +*** ../vim-7.3.899/src/version.c 2013-04-15 15:32:20.000000000 +0200 +--- src/version.c 2013-04-15 15:39:10.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 900, + /**/ + +-- +If Microsoft would build a car... +... Occasionally your car would die on the freeway for no +reason. You would have to pull over to the side of the road, +close all of the car windows, shut it off, restart it, and +reopen the windows before you could continue. For some reason +you would simply accept this. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.901 b/7.3.901 new file mode 100644 index 0000000..b3ddf88 --- /dev/null +++ b/7.3.901 @@ -0,0 +1,95 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.901 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.901 +Problem: Outdated comment, ugly condition. +Solution: Update a few comments, break line. +Files: src/getchar.c, src/misc1.c, src/undo.c + + +*** ../vim-7.3.900/src/getchar.c 2013-03-16 21:42:12.000000000 +0100 +--- src/getchar.c 2013-04-12 15:01:39.000000000 +0200 +*************** +*** 444,450 **** + typebuf.tb_off = MAXMAPLEN; + typebuf.tb_len = 0; + } +! else /* remove mapped characters only */ + { + typebuf.tb_off += typebuf.tb_maplen; + typebuf.tb_len -= typebuf.tb_maplen; +--- 444,450 ---- + typebuf.tb_off = MAXMAPLEN; + typebuf.tb_len = 0; + } +! else /* remove mapped characters at the start only */ + { + typebuf.tb_off += typebuf.tb_maplen; + typebuf.tb_len -= typebuf.tb_maplen; +*** ../vim-7.3.900/src/misc1.c 2013-03-19 18:31:45.000000000 +0100 +--- src/misc1.c 2013-03-19 20:43:48.000000000 +0100 +*************** +*** 5054,5060 **** + int cx = NUL; + int cy = NUL; + +- /* TODO: multi-byte characters. */ + while (len > 0) + { + cx = PTR2CHAR(px); +--- 5054,5059 ---- +*** ../vim-7.3.900/src/undo.c 2012-08-23 12:58:56.000000000 +0200 +--- src/undo.c 2012-12-12 16:00:19.000000000 +0100 +*************** +*** 216,221 **** +--- 216,222 ---- + + /* + * Save the current line for both the "u" and "U" command. ++ * Careful: may trigger autocommands that reload the buffer. + * Returns OK or FAIL. + */ + int +*************** +*** 238,245 **** + if (undo_off) + return OK; + +! if (top > curbuf->b_ml.ml_line_count || +! top >= bot || bot > curbuf->b_ml.ml_line_count + 1) + return FALSE; /* rely on caller to do error messages */ + + if (top + 2 == bot) +--- 239,247 ---- + if (undo_off) + return OK; + +! if (top > curbuf->b_ml.ml_line_count +! || top >= bot +! || bot > curbuf->b_ml.ml_line_count + 1) + return FALSE; /* rely on caller to do error messages */ + + if (top + 2 == bot) +*** ../vim-7.3.900/src/version.c 2013-04-15 15:40:08.000000000 +0200 +--- src/version.c 2013-04-15 15:46:37.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 901, + /**/ + +-- +The CIA drives around in cars with the "Intel inside" logo. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.902 b/7.3.902 new file mode 100644 index 0000000..4fd627b --- /dev/null +++ b/7.3.902 @@ -0,0 +1,45 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.902 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.902 +Problem: When deleting last buffer in other tab the tabline is not updated. +Solution: Set the redraw_tabline flag. (Yukihiro Nakadaira) +Files: src/window.c + + +*** ../vim-7.3.901/src/window.c 2013-04-15 12:27:30.000000000 +0200 +--- src/window.c 2013-04-15 15:52:46.000000000 +0200 +*************** +*** 2070,2075 **** +--- 2070,2076 ---- + + --RedrawingDisabled; + ++ redraw_tabline = TRUE; + if (h != tabline_height()) + shell_new_rows(); + } +*** ../vim-7.3.901/src/version.c 2013-04-15 15:47:07.000000000 +0200 +--- src/version.c 2013-04-15 15:54:42.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 902, + /**/ + +-- +If Microsoft would build a car... +... The airbag system would ask "are you SURE?" before deploying. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.903 b/7.3.903 new file mode 100644 index 0000000..4285861 --- /dev/null +++ b/7.3.903 @@ -0,0 +1,60 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.903 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.903 (after 7.3.892) +Problem: Crash on exit writing viminfo. (Ron Aaron) +Solution: Check for the history to be empty. +Files: src/ex_getln.c + + +*** ../vim-7.3.902/src/ex_getln.c 2013-04-14 23:19:32.000000000 +0200 +--- src/ex_getln.c 2013-04-15 16:13:56.000000000 +0200 +*************** +*** 6216,6222 **** + */ + for (round = 1; round <= 2; ++round) + { +! i = round == 1 ? hisidx[type] : 0; + if (i >= 0) + while (num_saved > 0 + && !(round == 2 && i >= viminfo_hisidx[type])) +--- 6216,6230 ---- + */ + for (round = 1; round <= 2; ++round) + { +! if (round == 1) +! /* start at newest entry, somewhere in the list */ +! i = hisidx[type]; +! else if (viminfo_hisidx[type] > 0) +! /* start at newest entry, first in the list */ +! i = 0; +! else +! /* empty list */ +! i = -1; + if (i >= 0) + while (num_saved > 0 + && !(round == 2 && i >= viminfo_hisidx[type])) +*** ../vim-7.3.902/src/version.c 2013-04-15 15:55:15.000000000 +0200 +--- src/version.c 2013-04-15 16:11:08.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 903, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +176. You lie, even to user-friends, about how long you were online yesterday. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.904 b/7.3.904 new file mode 100644 index 0000000..a41b469 --- /dev/null +++ b/7.3.904 @@ -0,0 +1,47 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.904 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.904 (after 7.3.893) +Problem: Using memory freed by the garbage collector. +Solution: Mark items in aucmd_win as used. +Files: src/eval.c + + +*** ../vim-7.3.903/src/eval.c 2013-04-15 15:15:31.000000000 +0200 +--- src/eval.c 2013-04-15 18:20:35.000000000 +0200 +*************** +*** 6792,6797 **** +--- 6792,6801 ---- + /* window-local variables */ + FOR_ALL_TAB_WINDOWS(tp, wp) + set_ref_in_item(&wp->w_winvar.di_tv, copyID); ++ #ifdef FEAT_AUTOCMD ++ if (aucmd_win != NULL) ++ set_ref_in_item(&aucmd_win->w_winvar.di_tv, copyID); ++ #endif + + #ifdef FEAT_WINDOWS + /* tabpage-local variables */ +*** ../vim-7.3.903/src/version.c 2013-04-15 16:14:15.000000000 +0200 +--- src/version.c 2013-04-15 18:21:49.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 904, + /**/ + +-- +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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.905 b/7.3.905 new file mode 100644 index 0000000..60ff528 --- /dev/null +++ b/7.3.905 @@ -0,0 +1,45 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.905 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.905 (after 7.3.903) +Problem: Crash when writing viminfo. (Ron Aaron) +Solution: Prevent freed history info to be used. +Files: src/ex_getln.c + + +*** ../vim-7.3.904/src/ex_getln.c 2013-04-15 16:14:15.000000000 +0200 +--- src/ex_getln.c 2013-04-15 22:12:33.000000000 +0200 +*************** +*** 6264,6269 **** +--- 6264,6270 ---- + vim_free(viminfo_history[type][i]); + vim_free(viminfo_history[type]); + viminfo_history[type] = NULL; ++ viminfo_hisidx[type] = 0; + } + } + #endif /* FEAT_VIMINFO */ +*** ../vim-7.3.904/src/version.c 2013-04-15 18:25:55.000000000 +0200 +--- src/version.c 2013-04-15 22:19:03.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 905, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +180. You maintain more than six e-mail addresses. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.906 b/7.3.906 new file mode 100644 index 0000000..8495031 --- /dev/null +++ b/7.3.906 @@ -0,0 +1,56 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.906 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.906 +Problem: The "sleep .2" for running tests does not work on Solaris. +Solution: Fall back to using "sleep 1". (Laurent Blume) +Files: src/testdir/Makefile + + +*** ../vim-7.3.905/src/testdir/Makefile 2013-04-12 13:44:49.000000000 +0200 +--- src/testdir/Makefile 2013-04-21 13:06:20.000000000 +0200 +*************** +*** 69,76 **** + .in.out: + -rm -rf $*.failed test.ok $(RM_ON_RUN) + cp $*.ok test.ok +! # Sleep a moment to avoid that the xterm title is messed up +! @-sleep .2 + -$(RUN_VIM) $*.in + + # For flaky tests retry one time. +--- 69,78 ---- + .in.out: + -rm -rf $*.failed test.ok $(RM_ON_RUN) + cp $*.ok test.ok +! # Sleep a moment to avoid that the xterm title is messed up. +! # 200 msec is sufficient, but only modern sleep supports a fraction of +! # a second, fall back to a second if it fails. +! @-/bin/sh -c "sleep .2 > /dev/null 2>&1 || sleep 1" + -$(RUN_VIM) $*.in + + # For flaky tests retry one time. +*** ../vim-7.3.905/src/version.c 2013-04-15 22:22:48.000000000 +0200 +--- src/version.c 2013-04-24 12:54:57.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 906, + /**/ + +-- +Don't be humble ... you're not that great. + -- Golda Meir + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.907 b/7.3.907 new file mode 100644 index 0000000..28d4234 --- /dev/null +++ b/7.3.907 @@ -0,0 +1,162 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.907 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.907 +Problem: Python uses IndexError when a dict key is not found. +Solution: Use KeyError instead. (ZyX) +Files: src/if_py_both.h, src/if_python3.c, src/if_python.c, + src/testdir/test86.ok, src/testdir/test87.ok + + +*** ../vim-7.3.906/src/if_py_both.h 2013-04-05 19:32:30.000000000 +0200 +--- src/if_py_both.h 2013-04-24 13:00:01.000000000 +0200 +*************** +*** 861,867 **** + + if (di == NULL) + { +! PyErr_SetString(PyExc_IndexError, _("no such key in dictionary")); + return NULL; + } + +--- 861,867 ---- + + if (di == NULL) + { +! PyErr_SetString(PyExc_KeyError, _("no such key in dictionary")); + return NULL; + } + +*** ../vim-7.3.906/src/if_python3.c 2013-02-20 16:09:35.000000000 +0100 +--- src/if_python3.c 2013-04-24 13:00:01.000000000 +0200 +*************** +*** 327,338 **** +--- 327,340 ---- + /* Imported exception objects */ + static PyObject *p3imp_PyExc_AttributeError; + static PyObject *p3imp_PyExc_IndexError; ++ static PyObject *p3imp_PyExc_KeyError; + static PyObject *p3imp_PyExc_KeyboardInterrupt; + static PyObject *p3imp_PyExc_TypeError; + static PyObject *p3imp_PyExc_ValueError; + + # define PyExc_AttributeError p3imp_PyExc_AttributeError + # define PyExc_IndexError p3imp_PyExc_IndexError ++ # define PyExc_KeyError p3imp_PyExc_KeyError + # define PyExc_KeyboardInterrupt p3imp_PyExc_KeyboardInterrupt + # define PyExc_TypeError p3imp_PyExc_TypeError + # define PyExc_ValueError p3imp_PyExc_ValueError +*************** +*** 567,577 **** +--- 569,581 ---- + PyObject *exdict = PyModule_GetDict(exmod); + p3imp_PyExc_AttributeError = PyDict_GetItemString(exdict, "AttributeError"); + p3imp_PyExc_IndexError = PyDict_GetItemString(exdict, "IndexError"); ++ p3imp_PyExc_KeyError = PyDict_GetItemString(exdict, "KeyError"); + p3imp_PyExc_KeyboardInterrupt = PyDict_GetItemString(exdict, "KeyboardInterrupt"); + p3imp_PyExc_TypeError = PyDict_GetItemString(exdict, "TypeError"); + p3imp_PyExc_ValueError = PyDict_GetItemString(exdict, "ValueError"); + Py_XINCREF(p3imp_PyExc_AttributeError); + Py_XINCREF(p3imp_PyExc_IndexError); ++ Py_XINCREF(p3imp_PyExc_KeyError); + Py_XINCREF(p3imp_PyExc_KeyboardInterrupt); + Py_XINCREF(p3imp_PyExc_TypeError); + Py_XINCREF(p3imp_PyExc_ValueError); +*** ../vim-7.3.906/src/if_python.c 2013-02-20 16:09:35.000000000 +0100 +--- src/if_python.c 2013-04-24 13:00:01.000000000 +0200 +*************** +*** 348,359 **** +--- 348,361 ---- + /* Imported exception objects */ + static PyObject *imp_PyExc_AttributeError; + static PyObject *imp_PyExc_IndexError; ++ static PyObject *imp_PyExc_KeyError; + static PyObject *imp_PyExc_KeyboardInterrupt; + static PyObject *imp_PyExc_TypeError; + static PyObject *imp_PyExc_ValueError; + + # define PyExc_AttributeError imp_PyExc_AttributeError + # define PyExc_IndexError imp_PyExc_IndexError ++ # define PyExc_KeyError imp_PyExc_KeyError + # define PyExc_KeyboardInterrupt imp_PyExc_KeyboardInterrupt + # define PyExc_TypeError imp_PyExc_TypeError + # define PyExc_ValueError imp_PyExc_ValueError +*************** +*** 579,589 **** +--- 581,593 ---- + PyObject *exdict = PyModule_GetDict(exmod); + imp_PyExc_AttributeError = PyDict_GetItemString(exdict, "AttributeError"); + imp_PyExc_IndexError = PyDict_GetItemString(exdict, "IndexError"); ++ imp_PyExc_KeyError = PyDict_GetItemString(exdict, "KeyError"); + imp_PyExc_KeyboardInterrupt = PyDict_GetItemString(exdict, "KeyboardInterrupt"); + imp_PyExc_TypeError = PyDict_GetItemString(exdict, "TypeError"); + imp_PyExc_ValueError = PyDict_GetItemString(exdict, "ValueError"); + Py_XINCREF(imp_PyExc_AttributeError); + Py_XINCREF(imp_PyExc_IndexError); ++ Py_XINCREF(imp_PyExc_KeyError); + Py_XINCREF(imp_PyExc_KeyboardInterrupt); + Py_XINCREF(imp_PyExc_TypeError); + Py_XINCREF(imp_PyExc_ValueError); +*** ../vim-7.3.906/src/testdir/test86.ok 2013-04-05 19:32:30.000000000 +0200 +--- src/testdir/test86.ok 2013-04-24 13:00:01.000000000 +0200 +*************** +*** 38,44 **** + Vim(python):E725: + Vim(python):E117: + [0.0, 0.0] +! IndexError + TypeError + TypeError + ValueError +--- 38,44 ---- + Vim(python):E725: + Vim(python):E117: + [0.0, 0.0] +! KeyError + TypeError + TypeError + ValueError +*** ../vim-7.3.906/src/testdir/test87.ok 2013-02-20 16:54:24.000000000 +0100 +--- src/testdir/test87.ok 2013-04-24 13:00:01.000000000 +0200 +*************** +*** 38,44 **** + Vim(py3):E725: + Vim(py3):E117: + [0.0, 0.0] +! IndexError + TypeError + TypeError + ValueError +--- 38,44 ---- + Vim(py3):E725: + Vim(py3):E117: + [0.0, 0.0] +! KeyError + TypeError + TypeError + ValueError +*** ../vim-7.3.906/src/version.c 2013-04-24 12:56:13.000000000 +0200 +--- src/version.c 2013-04-24 13:00:13.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 907, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +219. Your spouse has his or her lawyer deliver the divorce papers... + via e-mail. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.908 b/7.3.908 new file mode 100644 index 0000000..1b71dca --- /dev/null +++ b/7.3.908 @@ -0,0 +1,45 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.908 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.908 +Problem: Possible crash when using a list in Python. +Solution: Return early if the list is NULL. (ZyX) +Files: src/if_py_both.h + + +*** ../vim-7.3.907/src/if_py_both.h 2013-04-24 13:04:21.000000000 +0200 +--- src/if_py_both.h 2013-04-24 13:10:20.000000000 +0200 +*************** +*** 738,743 **** +--- 738,745 ---- + tv->vval.v_dict = d; + + list = PyMapping_Items(obj); ++ if (list == NULL) ++ return -1; + lsize = PyList_Size(list); + while (lsize--) + { +*** ../vim-7.3.907/src/version.c 2013-04-24 13:04:21.000000000 +0200 +--- src/version.c 2013-04-24 13:09:30.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 908, + /**/ + +-- +How do I set the laser printer to stun? + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.909 b/7.3.909 new file mode 100644 index 0000000..1dbf453 --- /dev/null +++ b/7.3.909 @@ -0,0 +1,2129 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.909 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.909 +Problem: Duplicate Python code. +Solution: Move more items to if_py_both.h. (ZyX) Also avoid compiler + warnings for missing initializers. +Files: src/if_py_both.h, src/if_python3.c, src/if_python.c + + +*** ../vim-7.3.908/src/if_py_both.h 2013-04-24 13:10:35.000000000 +0200 +--- src/if_py_both.h 2013-04-24 13:26:54.000000000 +0200 +*************** +*** 542,547 **** +--- 542,555 ---- + * Buffer list object - Implementation + */ + ++ typedef struct ++ { ++ PyObject_HEAD ++ } BufListObject; ++ ++ static PyTypeObject BufListType; ++ static PySequenceMethods WinListAsSeq; ++ + static PyInt + BufListLength(PyObject *self UNUSED) + { +*************** +*** 578,583 **** +--- 586,596 ---- + win_T *win; + } WindowObject; + ++ static struct PyMethodDef WindowMethods[] = { ++ /* name, function, calling, documentation */ ++ { NULL, NULL, 0, NULL } ++ }; ++ + static int ConvertFromPyObject(PyObject *, typval_T *); + static int _ConvertFromPyObject(PyObject *, typval_T *, PyObject *); + +*************** +*** 642,647 **** +--- 655,670 ---- + pylinkedlist_T ref; + } DictionaryObject; + ++ static PyInt DictionaryAssItem(PyObject *, PyObject *, PyObject *); ++ static PyInt DictionaryLength(PyObject *); ++ static PyObject *DictionaryItem(PyObject *, PyObject *); ++ ++ static PyMappingMethods DictionaryAsMapping = { ++ (lenfunc) DictionaryLength, ++ (binaryfunc) DictionaryItem, ++ (objobjargproc) DictionaryAssItem, ++ }; ++ + static PyObject * + DictionaryNew(dict_T *dict) + { +*************** +*** 658,663 **** +--- 681,697 ---- + return (PyObject *)(self); + } + ++ static void ++ DictionaryDestructor(PyObject *self) ++ { ++ DictionaryObject *this = ((DictionaryObject *) (self)); ++ ++ pyll_remove(&this->ref, &lastdict); ++ dict_unref(this->dict); ++ ++ DESTRUCTOR_FINISH(self); ++ } ++ + static int + pydict_to_tv(PyObject *obj, typval_T *tv, PyObject *lookupDict) + { +*************** +*** 804,812 **** + return 0; + } + +! static PyInt +! DictionarySetattr(DictionaryObject *self, char *name, PyObject *val) + { + if (val == NULL) + { + PyErr_SetString(PyExc_AttributeError, _("Cannot delete DictionaryObject attributes")); +--- 838,848 ---- + return 0; + } + +! static int +! DictionarySetattr(PyObject *self, char *name, PyObject *val) + { ++ DictionaryObject *this = (DictionaryObject *)(self); ++ + if (val == NULL) + { + PyErr_SetString(PyExc_AttributeError, _("Cannot delete DictionaryObject attributes")); +*************** +*** 815,821 **** + + if (strcmp(name, "locked") == 0) + { +! if (self->dict->dv_lock == VAR_FIXED) + { + PyErr_SetString(PyExc_TypeError, _("Cannot modify fixed dictionary")); + return -1; +--- 851,857 ---- + + if (strcmp(name, "locked") == 0) + { +! if (this->dict->dv_lock == VAR_FIXED) + { + PyErr_SetString(PyExc_TypeError, _("Cannot modify fixed dictionary")); + return -1; +*************** +*** 829,837 **** + } + + if (val == Py_True) +! self->dict->dv_lock = VAR_LOCKED; + else +! self->dict->dv_lock = 0; + } + return 0; + } +--- 865,873 ---- + } + + if (val == Py_True) +! this->dict->dv_lock = VAR_LOCKED; + else +! this->dict->dv_lock = 0; + } + return 0; + } +*************** +*** 963,968 **** +--- 999,1006 ---- + }; + + static PyTypeObject ListType; ++ static PySequenceMethods ListAsSeq; ++ static PyMappingMethods ListAsMapping; + + typedef struct + { +*************** +*** 987,992 **** +--- 1025,1041 ---- + return (PyObject *)(self); + } + ++ static void ++ ListDestructor(PyObject *self) ++ { ++ ListObject *this = (ListObject *)(self); ++ ++ pyll_remove(&this->ref, &lastlist); ++ list_unref(this->list); ++ ++ DESTRUCTOR_FINISH(self); ++ } ++ + static int + list_py_concat(list_T *l, PyObject *obj, PyObject *lookupDict) + { +*************** +*** 1307,1314 **** + } + + static int +! ListSetattr(ListObject *self, char *name, PyObject *val) + { + if (val == NULL) + { + PyErr_SetString(PyExc_AttributeError, _("Cannot delete DictionaryObject attributes")); +--- 1356,1365 ---- + } + + static int +! ListSetattr(PyObject *self, char *name, PyObject *val) + { ++ ListObject *this = (ListObject *)(self); ++ + if (val == NULL) + { + PyErr_SetString(PyExc_AttributeError, _("Cannot delete DictionaryObject attributes")); +*************** +*** 1317,1323 **** + + if (strcmp(name, "locked") == 0) + { +! if (self->list->lv_lock == VAR_FIXED) + { + PyErr_SetString(PyExc_TypeError, _("Cannot modify fixed list")); + return -1; +--- 1368,1374 ---- + + if (strcmp(name, "locked") == 0) + { +! if (this->list->lv_lock == VAR_FIXED) + { + PyErr_SetString(PyExc_TypeError, _("Cannot modify fixed list")); + return -1; +*************** +*** 1331,1339 **** + } + + if (val == Py_True) +! self->list->lv_lock = VAR_LOCKED; + else +! self->list->lv_lock = 0; + } + return 0; + } +--- 1382,1390 ---- + } + + if (val == Py_True) +! this->list->lv_lock = VAR_LOCKED; + else +! this->list->lv_lock = 0; + } + return 0; + } +*************** +*** 1376,1381 **** +--- 1427,1443 ---- + return (PyObject *)(self); + } + ++ static void ++ FunctionDestructor(PyObject *self) ++ { ++ FunctionObject *this = (FunctionObject *) (self); ++ ++ func_unref(this->name); ++ PyMem_Del(this->name); ++ ++ DESTRUCTOR_FINISH(self); ++ } ++ + static PyObject * + FunctionCall(PyObject *self, PyObject *argsObject, PyObject *kwargs) + { +*************** +*** 1451,1456 **** +--- 1513,1557 ---- + + static int WindowSetattr(PyObject *, char *, PyObject *); + static PyObject *WindowRepr(PyObject *); ++ static PyTypeObject WindowType; ++ ++ static PyObject * ++ WindowAttr(WindowObject *this, char *name) ++ { ++ if (strcmp(name, "buffer") == 0) ++ return (PyObject *)BufferNew(this->win->w_buffer); ++ else if (strcmp(name, "cursor") == 0) ++ { ++ pos_T *pos = &this->win->w_cursor; ++ ++ return Py_BuildValue("(ll)", (long)(pos->lnum), (long)(pos->col)); ++ } ++ else if (strcmp(name, "height") == 0) ++ return Py_BuildValue("l", (long)(this->win->w_height)); ++ #ifdef FEAT_VERTSPLIT ++ else if (strcmp(name, "width") == 0) ++ return Py_BuildValue("l", (long)(W_WIDTH(this->win))); ++ #endif ++ else if (strcmp(name,"__members__") == 0) ++ return Py_BuildValue("[sss]", "buffer", "cursor", "height"); ++ else ++ return NULL; ++ } ++ ++ static void ++ WindowDestructor(PyObject *self) ++ { ++ WindowObject *this = (WindowObject *)(self); ++ ++ if (this->win && this->win != INVALID_WINDOW_VALUE) ++ #if PY_MAJOR_VERSION >= 3 ++ this->win->w_python3_ref = NULL; ++ #else ++ this->win->w_python_ref = NULL; ++ #endif ++ ++ DESTRUCTOR_FINISH(self); ++ } + + static int + WindowSetattr(PyObject *self, char *name, PyObject *val) +*************** +*** 1579,1584 **** +--- 1680,1694 ---- + /* + * Window list object - Implementation + */ ++ ++ typedef struct ++ { ++ PyObject_HEAD ++ } WinListObject; ++ ++ static PyTypeObject WinListType; ++ static PySequenceMethods BufListAsSeq; ++ + static PyInt + WinListLength(PyObject *self UNUSED) + { +*************** +*** 2310,2319 **** + return Py_None; + } + +! +! /* Buffer object - Definitions + */ + + typedef struct + { + PyObject_HEAD +--- 2420,2430 ---- + return Py_None; + } + +! /* Range object - Definitions + */ + ++ static PyTypeObject RangeType; ++ + typedef struct + { + PyObject_HEAD +*************** +*** 2322,2327 **** +--- 2433,2442 ---- + PyInt end; + } RangeObject; + ++ static void RangeDestructor(PyObject *); ++ static PySequenceMethods RangeAsSeq; ++ static PyMappingMethods RangeAsMapping; ++ + static PyObject * + RangeNew(buf_T *buf, PyInt start, PyInt end) + { +*************** +*** 2346,2351 **** +--- 2461,2506 ---- + return (PyObject *)(self); + } + ++ static void ++ RangeDestructor(PyObject *self) ++ { ++ Py_DECREF(((RangeObject *)(self))->buf); ++ DESTRUCTOR_FINISH(self); ++ } ++ ++ static PyTypeObject BufferType; ++ static PyObject *BufferRepr(PyObject *); ++ static PySequenceMethods BufferAsSeq; ++ static PyMappingMethods BufferAsMapping; ++ ++ static void ++ BufferDestructor(PyObject *self) ++ { ++ BufferObject *this = (BufferObject *)(self); ++ ++ if (this->buf && this->buf != INVALID_BUFFER_VALUE) ++ #if PY_MAJOR_VERSION >= 3 ++ this->buf->b_python3_ref = NULL; ++ #else ++ this->buf->b_python_ref = NULL; ++ #endif ++ ++ DESTRUCTOR_FINISH(self); ++ } ++ ++ static PyObject * ++ BufferAttr(BufferObject *this, char *name) ++ { ++ if (strcmp(name, "name") == 0) ++ return Py_BuildValue("s", this->buf->b_ffname); ++ else if (strcmp(name, "number") == 0) ++ return Py_BuildValue(Py_ssize_t_fmt, this->buf->b_fnum); ++ else if (strcmp(name,"__members__") == 0) ++ return Py_BuildValue("[ss]", "name", "number"); ++ else ++ return NULL; ++ } ++ + static PyObject * + BufferAppend(PyObject *self, PyObject *args) + { +*************** +*** 2409,2414 **** +--- 2564,2598 ---- + return RangeNew(((BufferObject *)(self))->buf, start, end); + } + ++ static PyObject * ++ BufferRepr(PyObject *self) ++ { ++ static char repr[100]; ++ BufferObject *this = (BufferObject *)(self); ++ ++ if (this->buf == INVALID_BUFFER_VALUE) ++ { ++ vim_snprintf(repr, 100, _(""), (self)); ++ return PyString_FromString(repr); ++ } ++ else ++ { ++ char *name = (char *)this->buf->b_fname; ++ PyInt len; ++ ++ if (name == NULL) ++ name = ""; ++ len = strlen(name); ++ ++ if (len > 35) ++ name = name + (35 - len); ++ ++ vim_snprintf(repr, 100, "", len > 35 ? "..." : "", name); ++ ++ return PyString_FromString(repr); ++ } ++ } ++ + static struct PyMethodDef BufferMethods[] = { + /* name, function, calling, documentation */ + {"append", BufferAppend, 1, "Append data to Vim buffer" }, +*************** +*** 2497,2502 **** +--- 2681,2729 ---- + { NULL, NULL, 0, NULL } + }; + ++ /* Current items object - Implementation ++ */ ++ ++ static PyInt RangeStart; ++ static PyInt RangeEnd; ++ ++ static PyObject * ++ CurrentGetattr(PyObject *self UNUSED, char *name) ++ { ++ if (strcmp(name, "buffer") == 0) ++ return (PyObject *)BufferNew(curbuf); ++ else if (strcmp(name, "window") == 0) ++ return (PyObject *)WindowNew(curwin); ++ else if (strcmp(name, "line") == 0) ++ return GetBufferLine(curbuf, (PyInt)curwin->w_cursor.lnum); ++ else if (strcmp(name, "range") == 0) ++ return RangeNew(curbuf, RangeStart, RangeEnd); ++ else if (strcmp(name,"__members__") == 0) ++ return Py_BuildValue("[ssss]", "buffer", "window", "line", "range"); ++ else ++ { ++ PyErr_SetString(PyExc_AttributeError, name); ++ return NULL; ++ } ++ } ++ ++ static int ++ CurrentSetattr(PyObject *self UNUSED, char *name, PyObject *value) ++ { ++ if (strcmp(name, "line") == 0) ++ { ++ if (SetBufferLine(curbuf, (PyInt)curwin->w_cursor.lnum, value, NULL) == FAIL) ++ return -1; ++ ++ return 0; ++ } ++ else ++ { ++ PyErr_SetString(PyExc_AttributeError, name); ++ return -1; ++ } ++ } ++ + static void + set_ref_in_py(const int copyID) + { +*************** +*** 2770,2772 **** +--- 2997,3165 ---- + return NULL; + } + } ++ ++ typedef struct ++ { ++ PyObject_HEAD ++ } CurrentObject; ++ static PyTypeObject CurrentType; ++ ++ static void ++ init_structs(void) ++ { ++ vim_memset(&OutputType, 0, sizeof(OutputType)); ++ OutputType.tp_name = "vim.message"; ++ OutputType.tp_basicsize = sizeof(OutputObject); ++ OutputType.tp_flags = Py_TPFLAGS_DEFAULT; ++ OutputType.tp_doc = "vim message object"; ++ OutputType.tp_methods = OutputMethods; ++ #if PY_MAJOR_VERSION >= 3 ++ OutputType.tp_getattro = OutputGetattro; ++ OutputType.tp_setattro = OutputSetattro; ++ OutputType.tp_alloc = call_PyType_GenericAlloc; ++ OutputType.tp_new = call_PyType_GenericNew; ++ OutputType.tp_free = call_PyObject_Free; ++ #else ++ OutputType.tp_getattr = OutputGetattr; ++ OutputType.tp_setattr = OutputSetattr; ++ #endif ++ ++ vim_memset(&BufferType, 0, sizeof(BufferType)); ++ BufferType.tp_name = "vim.buffer"; ++ BufferType.tp_basicsize = sizeof(BufferType); ++ BufferType.tp_dealloc = BufferDestructor; ++ BufferType.tp_repr = BufferRepr; ++ BufferType.tp_as_sequence = &BufferAsSeq; ++ BufferType.tp_as_mapping = &BufferAsMapping; ++ BufferType.tp_flags = Py_TPFLAGS_DEFAULT; ++ BufferType.tp_doc = "vim buffer object"; ++ BufferType.tp_methods = BufferMethods; ++ #if PY_MAJOR_VERSION >= 3 ++ BufferType.tp_getattro = BufferGetattro; ++ BufferType.tp_alloc = call_PyType_GenericAlloc; ++ BufferType.tp_new = call_PyType_GenericNew; ++ BufferType.tp_free = call_PyObject_Free; ++ #else ++ BufferType.tp_getattr = BufferGetattr; ++ #endif ++ ++ vim_memset(&WindowType, 0, sizeof(WindowType)); ++ WindowType.tp_name = "vim.window"; ++ WindowType.tp_basicsize = sizeof(WindowObject); ++ WindowType.tp_dealloc = WindowDestructor; ++ WindowType.tp_repr = WindowRepr; ++ WindowType.tp_flags = Py_TPFLAGS_DEFAULT; ++ WindowType.tp_doc = "vim Window object"; ++ WindowType.tp_methods = WindowMethods; ++ #if PY_MAJOR_VERSION >= 3 ++ WindowType.tp_getattro = WindowGetattro; ++ WindowType.tp_setattro = WindowSetattro; ++ WindowType.tp_alloc = call_PyType_GenericAlloc; ++ WindowType.tp_new = call_PyType_GenericNew; ++ WindowType.tp_free = call_PyObject_Free; ++ #else ++ WindowType.tp_getattr = WindowGetattr; ++ WindowType.tp_setattr = WindowSetattr; ++ #endif ++ ++ vim_memset(&BufListType, 0, sizeof(BufListType)); ++ BufListType.tp_name = "vim.bufferlist"; ++ BufListType.tp_basicsize = sizeof(BufListObject); ++ BufListType.tp_as_sequence = &BufListAsSeq; ++ BufListType.tp_flags = Py_TPFLAGS_DEFAULT; ++ BufferType.tp_doc = "vim buffer list"; ++ ++ vim_memset(&WinListType, 0, sizeof(WinListType)); ++ WinListType.tp_name = "vim.windowlist"; ++ WinListType.tp_basicsize = sizeof(WinListType); ++ WinListType.tp_as_sequence = &WinListAsSeq; ++ WinListType.tp_flags = Py_TPFLAGS_DEFAULT; ++ WinListType.tp_doc = "vim window list"; ++ ++ vim_memset(&RangeType, 0, sizeof(RangeType)); ++ RangeType.tp_name = "vim.range"; ++ RangeType.tp_basicsize = sizeof(RangeObject); ++ RangeType.tp_dealloc = RangeDestructor; ++ RangeType.tp_repr = RangeRepr; ++ RangeType.tp_as_sequence = &RangeAsSeq; ++ RangeType.tp_as_mapping = &RangeAsMapping; ++ RangeType.tp_flags = Py_TPFLAGS_DEFAULT; ++ RangeType.tp_doc = "vim Range object"; ++ RangeType.tp_methods = RangeMethods; ++ #if PY_MAJOR_VERSION >= 3 ++ RangeType.tp_getattro = RangeGetattro; ++ RangeType.tp_alloc = call_PyType_GenericAlloc; ++ RangeType.tp_new = call_PyType_GenericNew; ++ RangeType.tp_free = call_PyObject_Free; ++ #else ++ RangeType.tp_getattr = RangeGetattr; ++ #endif ++ ++ vim_memset(&CurrentType, 0, sizeof(CurrentType)); ++ CurrentType.tp_name = "vim.currentdata"; ++ CurrentType.tp_basicsize = sizeof(CurrentObject); ++ CurrentType.tp_flags = Py_TPFLAGS_DEFAULT; ++ CurrentType.tp_doc = "vim current object"; ++ #if PY_MAJOR_VERSION >= 3 ++ CurrentType.tp_getattro = CurrentGetattro; ++ CurrentType.tp_setattro = CurrentSetattro; ++ #else ++ CurrentType.tp_getattr = CurrentGetattr; ++ CurrentType.tp_setattr = CurrentSetattr; ++ #endif ++ ++ vim_memset(&DictionaryType, 0, sizeof(DictionaryType)); ++ DictionaryType.tp_name = "vim.dictionary"; ++ DictionaryType.tp_basicsize = sizeof(DictionaryObject); ++ DictionaryType.tp_dealloc = DictionaryDestructor; ++ DictionaryType.tp_as_mapping = &DictionaryAsMapping; ++ DictionaryType.tp_flags = Py_TPFLAGS_DEFAULT; ++ DictionaryType.tp_doc = "dictionary pushing modifications to vim structure"; ++ DictionaryType.tp_methods = DictionaryMethods; ++ #if PY_MAJOR_VERSION >= 3 ++ DictionaryType.tp_getattro = DictionaryGetattro; ++ DictionaryType.tp_setattro = DictionarySetattro; ++ #else ++ DictionaryType.tp_getattr = DictionaryGetattr; ++ DictionaryType.tp_setattr = DictionarySetattr; ++ #endif ++ ++ vim_memset(&ListType, 0, sizeof(ListType)); ++ ListType.tp_name = "vim.list"; ++ ListType.tp_dealloc = ListDestructor; ++ ListType.tp_basicsize = sizeof(ListObject); ++ ListType.tp_as_sequence = &ListAsSeq; ++ ListType.tp_as_mapping = &ListAsMapping; ++ ListType.tp_flags = Py_TPFLAGS_DEFAULT; ++ ListType.tp_doc = "list pushing modifications to vim structure"; ++ ListType.tp_methods = ListMethods; ++ #if PY_MAJOR_VERSION >= 3 ++ ListType.tp_getattro = ListGetattro; ++ ListType.tp_setattro = ListSetattro; ++ #else ++ ListType.tp_getattr = ListGetattr; ++ ListType.tp_setattr = ListSetattr; ++ #endif ++ ++ vim_memset(&FunctionType, 0, sizeof(FunctionType)); ++ FunctionType.tp_name = "vim.list"; ++ FunctionType.tp_basicsize = sizeof(FunctionObject); ++ FunctionType.tp_dealloc = FunctionDestructor; ++ FunctionType.tp_call = FunctionCall; ++ FunctionType.tp_flags = Py_TPFLAGS_DEFAULT; ++ FunctionType.tp_doc = "object that calls vim function"; ++ FunctionType.tp_methods = FunctionMethods; ++ #if PY_MAJOR_VERSION >= 3 ++ FunctionType.tp_getattro = FunctionGetattro; ++ #else ++ FunctionType.tp_getattr = FunctionGetattr; ++ #endif ++ ++ #if PY_MAJOR_VERSION >= 3 ++ vim_memset(&vimmodule, 0, sizeof(vimmodule)); ++ vimmodule.m_name = "vim"; ++ vimmodule.m_doc = "Vim Python interface\n"; ++ vimmodule.m_size = -1; ++ vimmodule.m_methods = VimMethods; ++ #endif ++ } +*** ../vim-7.3.908/src/if_python3.c 2013-04-24 13:04:21.000000000 +0200 +--- src/if_python3.c 2013-04-24 13:26:54.000000000 +0200 +*************** +*** 91,96 **** +--- 91,97 ---- + #define PyInt_Check(obj) PyLong_Check(obj) + #define PyInt_FromLong(i) PyLong_FromLong(i) + #define PyInt_AsLong(obj) PyLong_AsLong(obj) ++ #define Py_ssize_t_fmt "n" + + #if defined(DYNAMIC_PYTHON3) || defined(PROTO) + +*************** +*** 588,595 **** + static PyObject *LineToString(const char *); + static PyObject *BufferDir(PyObject *, PyObject *); + +- static PyTypeObject RangeType; +- + static int py3initialised = 0; + + #define PYINITIALISED py3initialised +--- 589,594 ---- +*************** +*** 620,636 **** + if (bytes != NULL) \ + Py_XDECREF(bytes); + +! /* +! * Include the code shared with if_python.c +! */ +! #include "if_py_both.h" +! +! #define GET_ATTR_STRING(name, nameobj) \ +! char *name = ""; \ +! if (PyUnicode_Check(nameobj)) \ +! name = _PyUnicode_AsString(nameobj) +! +! #define PY3OBJ_DELETED(obj) (obj->ob_base.ob_refcnt<=0) + + static void + call_PyObject_Free(void *p) +--- 619,625 ---- + if (bytes != NULL) \ + Py_XDECREF(bytes); + +! #define DESTRUCTOR_FINISH(self) Py_TYPE(self)->tp_free((PyObject*)self); + + static void + call_PyObject_Free(void *p) +*************** +*** 654,666 **** + return PyType_GenericAlloc(type,nitems); + } + + /****************************************************** + * Internal function prototypes. + */ + +- static Py_ssize_t RangeStart; +- static Py_ssize_t RangeEnd; +- + static PyObject *globals; + + static int PythonIO_Init(void); +--- 643,680 ---- + return PyType_GenericAlloc(type,nitems); + } + ++ static PyObject *OutputGetattro(PyObject *, PyObject *); ++ static int OutputSetattro(PyObject *, PyObject *, PyObject *); ++ static PyObject *BufferGetattro(PyObject *, PyObject *); ++ static PyObject *WindowGetattro(PyObject *, PyObject *); ++ static int WindowSetattro(PyObject *, PyObject *, PyObject *); ++ static PyObject *RangeGetattro(PyObject *, PyObject *); ++ static PyObject *CurrentGetattro(PyObject *, PyObject *); ++ static int CurrentSetattro(PyObject *, PyObject *, PyObject *); ++ static PyObject *DictionaryGetattro(PyObject *, PyObject *); ++ static int DictionarySetattro(PyObject *, PyObject *, PyObject *); ++ static PyObject *ListGetattro(PyObject *, PyObject *); ++ static int ListSetattro(PyObject *, PyObject *, PyObject *); ++ static PyObject *FunctionGetattro(PyObject *, PyObject *); ++ ++ static struct PyModuleDef vimmodule; ++ ++ /* ++ * Include the code shared with if_python.c ++ */ ++ #include "if_py_both.h" ++ ++ #define GET_ATTR_STRING(name, nameobj) \ ++ char *name = ""; \ ++ if (PyUnicode_Check(nameobj)) \ ++ name = _PyUnicode_AsString(nameobj) ++ ++ #define PY3OBJ_DELETED(obj) (obj->ob_base.ob_refcnt<=0) ++ + /****************************************************** + * Internal function prototypes. + */ + + static PyObject *globals; + + static int PythonIO_Init(void); +*************** +*** 1046,1052 **** + 0, /* sq_inplace_repeat */ + }; + +! PyMappingMethods BufferAsMapping = { + /* mp_length */ (lenfunc)BufferLength, + /* mp_subscript */ (binaryfunc)BufferSubscript, + /* mp_ass_subscript */ (objobjargproc)BufferAsSubscript, +--- 1060,1066 ---- + 0, /* sq_inplace_repeat */ + }; + +! static PyMappingMethods BufferAsMapping = { + /* mp_length */ (lenfunc)BufferLength, + /* mp_subscript */ (binaryfunc)BufferSubscript, + /* mp_ass_subscript */ (objobjargproc)BufferAsSubscript, +*************** +*** 1056,1063 **** + /* Buffer object - Definitions + */ + +- static PyTypeObject BufferType; +- + static PyObject * + BufferNew(buf_T *buf) + { +--- 1070,1075 ---- +*************** +*** 1094,1124 **** + return (PyObject *)(self); + } + +- static void +- BufferDestructor(PyObject *self) +- { +- BufferObject *this = (BufferObject *)(self); +- +- if (this->buf && this->buf != INVALID_BUFFER_VALUE) +- this->buf->b_python3_ref = NULL; +- +- Py_TYPE(self)->tp_free((PyObject*)self); +- } +- + static PyObject * + BufferGetattro(PyObject *self, PyObject*nameobj) + { +! BufferObject *this = (BufferObject *)(self); + + GET_ATTR_STRING(name, nameobj); + +! if (CheckBuffer(this)) + return NULL; + +! if (strcmp(name, "name") == 0) +! return Py_BuildValue("s", this->buf->b_ffname); +! else if (strcmp(name, "number") == 0) +! return Py_BuildValue("n", this->buf->b_fnum); + else + return PyObject_GenericGetAttr(self, nameobj); + } +--- 1106,1124 ---- + return (PyObject *)(self); + } + + static PyObject * + BufferGetattro(PyObject *self, PyObject*nameobj) + { +! PyObject *r; + + GET_ATTR_STRING(name, nameobj); + +! if (CheckBuffer((BufferObject *)(self))) + return NULL; + +! r = BufferAttr((BufferObject *)(self), name); +! if (r || PyErr_Occurred()) +! return r; + else + return PyObject_GenericGetAttr(self, nameobj); + } +*************** +*** 1130,1164 **** + "append", "mark", "range"); + } + +- static PyObject * +- BufferRepr(PyObject *self) +- { +- static char repr[100]; +- BufferObject *this = (BufferObject *)(self); +- +- if (this->buf == INVALID_BUFFER_VALUE) +- { +- vim_snprintf(repr, 100, _(""), (self)); +- return PyUnicode_FromString(repr); +- } +- else +- { +- char *name = (char *)this->buf->b_fname; +- Py_ssize_t len; +- +- if (name == NULL) +- name = ""; +- len = strlen(name); +- +- if (len > 35) +- name = name + (35 - len); +- +- vim_snprintf(repr, 100, "", len > 35 ? "..." : "", name); +- +- return PyUnicode_FromString(repr); +- } +- } +- + /******************/ + + static Py_ssize_t +--- 1130,1135 ---- +*************** +*** 1255,1261 **** + 0, /* sq_inplace_repeat */ + }; + +! PyMappingMethods RangeAsMapping = { + /* mp_length */ (lenfunc)RangeLength, + /* mp_subscript */ (binaryfunc)RangeSubscript, + /* mp_ass_subscript */ (objobjargproc)RangeAsSubscript, +--- 1226,1232 ---- + 0, /* sq_inplace_repeat */ + }; + +! static PyMappingMethods RangeAsMapping = { + /* mp_length */ (lenfunc)RangeLength, + /* mp_subscript */ (binaryfunc)RangeSubscript, + /* mp_ass_subscript */ (objobjargproc)RangeAsSubscript, +*************** +*** 1264,1276 **** + /* Line range object - Implementation + */ + +- static void +- RangeDestructor(PyObject *self) +- { +- Py_DECREF(((RangeObject *)(self))->buf); +- Py_TYPE(self)->tp_free((PyObject*)self); +- } +- + static PyObject * + RangeGetattro(PyObject *self, PyObject *nameobj) + { +--- 1235,1240 ---- +*************** +*** 1358,1372 **** + } + } + +- + /* Buffer list object - Definitions + */ + +- typedef struct +- { +- PyObject_HEAD +- } BufListObject; +- + static PySequenceMethods BufListAsSeq = { + (lenfunc) BufListLength, /* sq_length, len(x) */ + (binaryfunc) 0, /* sq_concat, x+y */ +--- 1322,1330 ---- +*************** +*** 1380,1397 **** + 0, /* sq_inplace_repeat */ + }; + +- static PyTypeObject BufListType; +- +- /* Window object - Definitions +- */ +- +- static struct PyMethodDef WindowMethods[] = { +- /* name, function, calling, documentation */ +- { NULL, NULL, 0, NULL } +- }; +- +- static PyTypeObject WindowType; +- + /* Window object - Implementation + */ + +--- 1338,1343 ---- +*************** +*** 1429,1471 **** + return (PyObject *)(self); + } + +- static void +- WindowDestructor(PyObject *self) +- { +- WindowObject *this = (WindowObject *)(self); +- +- if (this->win && this->win != INVALID_WINDOW_VALUE) +- this->win->w_python3_ref = NULL; +- +- Py_TYPE(self)->tp_free((PyObject*)self); +- } +- + static PyObject * + WindowGetattro(PyObject *self, PyObject *nameobj) + { +! WindowObject *this = (WindowObject *)(self); + + GET_ATTR_STRING(name, nameobj); + +! if (CheckWindow(this)) + return NULL; + +! if (strcmp(name, "buffer") == 0) +! return (PyObject *)BufferNew(this->win->w_buffer); +! else if (strcmp(name, "cursor") == 0) +! { +! pos_T *pos = &this->win->w_cursor; +! +! return Py_BuildValue("(ll)", (long)(pos->lnum), (long)(pos->col)); +! } +! else if (strcmp(name, "height") == 0) +! return Py_BuildValue("l", (long)(this->win->w_height)); +! #ifdef FEAT_VERTSPLIT +! else if (strcmp(name, "width") == 0) +! return Py_BuildValue("l", (long)(W_WIDTH(this->win))); +! #endif +! else if (strcmp(name,"__members__") == 0) +! return Py_BuildValue("[sss]", "buffer", "cursor", "height"); + else + return PyObject_GenericGetAttr(self, nameobj); + } +--- 1375,1393 ---- + return (PyObject *)(self); + } + + static PyObject * + WindowGetattro(PyObject *self, PyObject *nameobj) + { +! PyObject *r; + + GET_ATTR_STRING(name, nameobj); + +! if (CheckWindow((WindowObject *)(self))) + return NULL; + +! r = WindowAttr((WindowObject *)(self), name); +! if (r || PyErr_Occurred()) +! return r; + else + return PyObject_GenericGetAttr(self, nameobj); + } +*************** +*** 1481,1492 **** + /* Window list object - Definitions + */ + +- typedef struct +- { +- PyObject_HEAD +- } +- WinListObject; +- + static PySequenceMethods WinListAsSeq = { + (lenfunc) WinListLength, /* sq_length, len(x) */ + (binaryfunc) 0, /* sq_concat, x+y */ +--- 1403,1408 ---- +*************** +*** 1500,1560 **** + 0, /* sq_inplace_repeat */ + }; + +- static PyTypeObject WinListType; +- +- /* Current items object - Definitions +- */ +- +- typedef struct +- { +- PyObject_HEAD +- } CurrentObject; +- +- static PyTypeObject CurrentType; +- + /* Current items object - Implementation + */ + static PyObject * +! CurrentGetattro(PyObject *self UNUSED, PyObject *nameobj) + { + GET_ATTR_STRING(name, nameobj); +! +! if (strcmp(name, "buffer") == 0) +! return (PyObject *)BufferNew(curbuf); +! else if (strcmp(name, "window") == 0) +! return (PyObject *)WindowNew(curwin); +! else if (strcmp(name, "line") == 0) +! return GetBufferLine(curbuf, (Py_ssize_t)curwin->w_cursor.lnum); +! else if (strcmp(name, "range") == 0) +! return RangeNew(curbuf, RangeStart, RangeEnd); +! else if (strcmp(name,"__members__") == 0) +! return Py_BuildValue("[ssss]", "buffer", "window", "line", "range"); +! else +! { +! PyErr_SetString(PyExc_AttributeError, name); +! return NULL; +! } + } + + static int +! CurrentSetattro(PyObject *self UNUSED, PyObject *nameobj, PyObject *value) + { +! char *name = ""; +! if (PyUnicode_Check(nameobj)) +! name = _PyUnicode_AsString(nameobj); +! +! if (strcmp(name, "line") == 0) +! { +! if (SetBufferLine(curbuf, (Py_ssize_t)curwin->w_cursor.lnum, value, NULL) == FAIL) +! return -1; +! +! return 0; +! } +! else +! { +! PyErr_SetString(PyExc_AttributeError, name); +! return -1; +! } + } + + /* Dictionary object - Definitions +--- 1416,1435 ---- + 0, /* sq_inplace_repeat */ + }; + + /* Current items object - Implementation + */ + static PyObject * +! CurrentGetattro(PyObject *self, PyObject *nameobj) + { + GET_ATTR_STRING(name, nameobj); +! return CurrentGetattr(self, name); + } + + static int +! CurrentSetattro(PyObject *self, PyObject *nameobj, PyObject *value) + { +! GET_ATTR_STRING(name, nameobj); +! return CurrentSetattr(self, name, value); + } + + /* Dictionary object - Definitions +*************** +*** 1562,1573 **** + + static PyInt DictionaryLength(PyObject *); + +- static PyMappingMethods DictionaryAsMapping = { +- /* mp_length */ (lenfunc) DictionaryLength, +- /* mp_subscript */ (binaryfunc) DictionaryItem, +- /* mp_ass_subscript */ (objobjargproc) DictionaryAssItem, +- }; +- + static PyObject * + DictionaryGetattro(PyObject *self, PyObject *nameobj) + { +--- 1437,1442 ---- +*************** +*** 1587,1606 **** + DictionarySetattro(PyObject *self, PyObject *nameobj, PyObject *val) + { + GET_ATTR_STRING(name, nameobj); +! return DictionarySetattr((DictionaryObject *) self, name, val); +! } +! +! static PyTypeObject DictionaryType; +! +! static void +! DictionaryDestructor(PyObject *self) +! { +! DictionaryObject *this = (DictionaryObject *)(self); +! +! pyll_remove(&this->ref, &lastdict); +! dict_unref(this->dict); +! +! Py_TYPE(self)->tp_free((PyObject*)self); + } + + /* List object - Definitions +--- 1456,1462 ---- + DictionarySetattro(PyObject *self, PyObject *nameobj, PyObject *val) + { + GET_ATTR_STRING(name, nameobj); +! return DictionarySetattr(self, name, val); + } + + /* List object - Definitions +*************** +*** 1631,1638 **** + /* mp_ass_subscript */ (objobjargproc) ListAsSubscript, + }; + +- static PyTypeObject ListType; +- + static PyObject * + ListSubscript(PyObject *self, PyObject* idxObject) + { +--- 1487,1492 ---- +*************** +*** 1696,1729 **** + ListSetattro(PyObject *self, PyObject *nameobj, PyObject *val) + { + GET_ATTR_STRING(name, nameobj); +! return ListSetattr((ListObject *) self, name, val); +! } +! +! static void +! ListDestructor(PyObject *self) +! { +! ListObject *this = (ListObject *)(self); +! +! pyll_remove(&this->ref, &lastlist); +! list_unref(this->list); +! +! Py_TYPE(self)->tp_free((PyObject*)self); + } + + /* Function object - Definitions + */ + +- static void +- FunctionDestructor(PyObject *self) +- { +- FunctionObject *this = (FunctionObject *) (self); +- +- func_unref(this->name); +- PyMem_Del(this->name); +- +- Py_TYPE(self)->tp_free((PyObject*)self); +- } +- + static PyObject * + FunctionGetattro(PyObject *self, PyObject *nameobj) + { +--- 1550,1561 ---- + ListSetattro(PyObject *self, PyObject *nameobj, PyObject *val) + { + GET_ATTR_STRING(name, nameobj); +! return ListSetattr(self, name, val); + } + + /* Function object - Definitions + */ + + static PyObject * + FunctionGetattro(PyObject *self, PyObject *nameobj) + { +*************** +*** 1779,1788 **** + PyObject_HEAD_INIT(&CurrentType) + }; + +- PyDoc_STRVAR(vim_module_doc,"vim python interface\n"); +- +- static struct PyModuleDef vimmodule; +- + static PyObject * + Py3Init_vim(void) + { +--- 1611,1616 ---- +*************** +*** 1898,2021 **** + { + set_ref_in_py(copyID); + } +- +- static void +- init_structs(void) +- { +- vim_memset(&OutputType, 0, sizeof(OutputType)); +- OutputType.tp_name = "vim.message"; +- OutputType.tp_basicsize = sizeof(OutputObject); +- OutputType.tp_getattro = OutputGetattro; +- OutputType.tp_setattro = OutputSetattro; +- OutputType.tp_flags = Py_TPFLAGS_DEFAULT; +- OutputType.tp_doc = "vim message object"; +- OutputType.tp_methods = OutputMethods; +- OutputType.tp_alloc = call_PyType_GenericAlloc; +- OutputType.tp_new = call_PyType_GenericNew; +- OutputType.tp_free = call_PyObject_Free; +- +- vim_memset(&BufferType, 0, sizeof(BufferType)); +- BufferType.tp_name = "vim.buffer"; +- BufferType.tp_basicsize = sizeof(BufferType); +- BufferType.tp_dealloc = BufferDestructor; +- BufferType.tp_repr = BufferRepr; +- BufferType.tp_as_sequence = &BufferAsSeq; +- BufferType.tp_as_mapping = &BufferAsMapping; +- BufferType.tp_getattro = BufferGetattro; +- BufferType.tp_flags = Py_TPFLAGS_DEFAULT; +- BufferType.tp_doc = "vim buffer object"; +- BufferType.tp_methods = BufferMethods; +- BufferType.tp_alloc = call_PyType_GenericAlloc; +- BufferType.tp_new = call_PyType_GenericNew; +- BufferType.tp_free = call_PyObject_Free; +- +- vim_memset(&WindowType, 0, sizeof(WindowType)); +- WindowType.tp_name = "vim.window"; +- WindowType.tp_basicsize = sizeof(WindowObject); +- WindowType.tp_dealloc = WindowDestructor; +- WindowType.tp_repr = WindowRepr; +- WindowType.tp_getattro = WindowGetattro; +- WindowType.tp_setattro = WindowSetattro; +- WindowType.tp_flags = Py_TPFLAGS_DEFAULT; +- WindowType.tp_doc = "vim Window object"; +- WindowType.tp_methods = WindowMethods; +- WindowType.tp_alloc = call_PyType_GenericAlloc; +- WindowType.tp_new = call_PyType_GenericNew; +- WindowType.tp_free = call_PyObject_Free; +- +- vim_memset(&BufListType, 0, sizeof(BufListType)); +- BufListType.tp_name = "vim.bufferlist"; +- BufListType.tp_basicsize = sizeof(BufListObject); +- BufListType.tp_as_sequence = &BufListAsSeq; +- BufListType.tp_flags = Py_TPFLAGS_DEFAULT; +- BufferType.tp_doc = "vim buffer list"; +- +- vim_memset(&WinListType, 0, sizeof(WinListType)); +- WinListType.tp_name = "vim.windowlist"; +- WinListType.tp_basicsize = sizeof(WinListType); +- WinListType.tp_as_sequence = &WinListAsSeq; +- WinListType.tp_flags = Py_TPFLAGS_DEFAULT; +- WinListType.tp_doc = "vim window list"; +- +- vim_memset(&RangeType, 0, sizeof(RangeType)); +- RangeType.tp_name = "vim.range"; +- RangeType.tp_basicsize = sizeof(RangeObject); +- RangeType.tp_dealloc = RangeDestructor; +- RangeType.tp_repr = RangeRepr; +- RangeType.tp_as_sequence = &RangeAsSeq; +- RangeType.tp_as_mapping = &RangeAsMapping; +- RangeType.tp_getattro = RangeGetattro; +- RangeType.tp_flags = Py_TPFLAGS_DEFAULT; +- RangeType.tp_doc = "vim Range object"; +- RangeType.tp_methods = RangeMethods; +- RangeType.tp_alloc = call_PyType_GenericAlloc; +- RangeType.tp_new = call_PyType_GenericNew; +- RangeType.tp_free = call_PyObject_Free; +- +- vim_memset(&CurrentType, 0, sizeof(CurrentType)); +- CurrentType.tp_name = "vim.currentdata"; +- CurrentType.tp_basicsize = sizeof(CurrentObject); +- CurrentType.tp_getattro = CurrentGetattro; +- CurrentType.tp_setattro = CurrentSetattro; +- CurrentType.tp_flags = Py_TPFLAGS_DEFAULT; +- CurrentType.tp_doc = "vim current object"; +- +- vim_memset(&DictionaryType, 0, sizeof(DictionaryType)); +- DictionaryType.tp_name = "vim.dictionary"; +- DictionaryType.tp_basicsize = sizeof(DictionaryObject); +- DictionaryType.tp_getattro = DictionaryGetattro; +- DictionaryType.tp_setattro = DictionarySetattro; +- DictionaryType.tp_dealloc = DictionaryDestructor; +- DictionaryType.tp_as_mapping = &DictionaryAsMapping; +- DictionaryType.tp_flags = Py_TPFLAGS_DEFAULT; +- DictionaryType.tp_doc = "dictionary pushing modifications to vim structure"; +- DictionaryType.tp_methods = DictionaryMethods; +- +- vim_memset(&ListType, 0, sizeof(ListType)); +- ListType.tp_name = "vim.list"; +- ListType.tp_dealloc = ListDestructor; +- ListType.tp_basicsize = sizeof(ListObject); +- ListType.tp_getattro = ListGetattro; +- ListType.tp_setattro = ListSetattro; +- ListType.tp_as_sequence = &ListAsSeq; +- ListType.tp_as_mapping = &ListAsMapping; +- ListType.tp_flags = Py_TPFLAGS_DEFAULT; +- ListType.tp_doc = "list pushing modifications to vim structure"; +- ListType.tp_methods = ListMethods; +- +- vim_memset(&FunctionType, 0, sizeof(FunctionType)); +- FunctionType.tp_name = "vim.list"; +- FunctionType.tp_basicsize = sizeof(FunctionObject); +- FunctionType.tp_getattro = FunctionGetattro; +- FunctionType.tp_dealloc = FunctionDestructor; +- FunctionType.tp_call = FunctionCall; +- FunctionType.tp_flags = Py_TPFLAGS_DEFAULT; +- FunctionType.tp_doc = "object that calls vim function"; +- FunctionType.tp_methods = FunctionMethods; +- +- vim_memset(&vimmodule, 0, sizeof(vimmodule)); +- vimmodule.m_name = "vim"; +- vimmodule.m_doc = vim_module_doc; +- vimmodule.m_size = -1; +- vimmodule.m_methods = VimMethods; +- } +--- 1726,1728 ---- +*** ../vim-7.3.908/src/if_python.c 2013-04-24 13:04:21.000000000 +0200 +--- src/if_python.c 2013-04-24 13:35:06.000000000 +0200 +*************** +*** 87,92 **** +--- 87,93 ---- + # define Py_ssize_t_fmt "n" + #else + # define PyInt int ++ # define lenfunc inquiry + # define PyInquiry inquiry + # define PyIntArgFunc intargfunc + # define PyIntIntArgFunc intintargfunc +*************** +*** 600,607 **** + static PyObject *DictionaryNew(dict_T *); + static PyObject *LineToString(const char *); + +- static PyTypeObject RangeType; +- + static int initialised = 0; + #define PYINITIALISED initialised + +--- 601,606 ---- +*************** +*** 617,622 **** +--- 616,631 ---- + #define DICTKEY_UNREF + #define DICTKEY_DECL + ++ #define DESTRUCTOR_FINISH(self) Py_DECREF(self); ++ ++ static PyObject *OutputGetattr(PyObject *, char *); ++ static PyObject *BufferGetattr(PyObject *, char *); ++ static PyObject *WindowGetattr(PyObject *, char *); ++ static PyObject *RangeGetattr(PyObject *, char *); ++ static PyObject *DictionaryGetattr(PyObject *, char*); ++ static PyObject *ListGetattr(PyObject *, char *); ++ static PyObject *FunctionGetattr(PyObject *, char *); ++ + /* + * Include the code shared with if_python3.c + */ +*************** +*** 627,635 **** + * Internal function prototypes. + */ + +- static PyInt RangeStart; +- static PyInt RangeEnd; +- + static PyObject *globals; + + static void PythonIO_Flush(void); +--- 636,641 ---- +*************** +*** 1003,1021 **** + + #define WindowType_Check(obj) ((obj)->ob_type == &WindowType) + +- static void WindowDestructor(PyObject *); +- static PyObject *WindowGetattr(PyObject *, char *); +- + /* Buffer type - Implementation functions + * -------------------------------------- + */ + + #define BufferType_Check(obj) ((obj)->ob_type == &BufferType) + +- static void BufferDestructor(PyObject *); +- static PyObject *BufferGetattr(PyObject *, char *); +- static PyObject *BufferRepr(PyObject *); +- + static PyInt BufferLength(PyObject *); + static PyObject *BufferItem(PyObject *, PyInt); + static PyObject *BufferSlice(PyObject *, PyInt, PyInt); +--- 1009,1020 ---- +*************** +*** 1035,1043 **** + * ----------------------------------------------- + */ + +- static PyObject *CurrentGetattr(PyObject *, char *); +- static int CurrentSetattr(PyObject *, char *, PyObject *); +- + static PySequenceMethods BufferAsSeq = { + (PyInquiry) BufferLength, /* sq_length, len(x) */ + (binaryfunc) 0, /* BufferConcat, sq_concat, x+y */ +--- 1034,1039 ---- +*************** +*** 1045,1074 **** + (PyIntArgFunc) BufferItem, /* sq_item, x[i] */ + (PyIntIntArgFunc) BufferSlice, /* sq_slice, x[i:j] */ + (PyIntObjArgProc) BufferAssItem, /* sq_ass_item, x[i]=v */ +! (PyIntIntObjArgProc) BufferAssSlice, /* sq_ass_slice, x[i:j]=v */ +! }; +! +! static PyTypeObject BufferType = { +! PyObject_HEAD_INIT(0) +! 0, +! "buffer", +! sizeof(BufferObject), + 0, +! +! (destructor) BufferDestructor, /* tp_dealloc, refcount==0 */ +! (printfunc) 0, /* tp_print, print x */ +! (getattrfunc) BufferGetattr, /* tp_getattr, x.attr */ +! (setattrfunc) 0, /* tp_setattr, x.attr=v */ +! (cmpfunc) 0, /* tp_compare, x>y */ +! (reprfunc) BufferRepr, /* tp_repr, `x`, print x */ +! +! 0, /* as number */ +! &BufferAsSeq, /* as sequence */ +! 0, /* as mapping */ +! +! (hashfunc) 0, /* tp_hash, dict(x) */ +! (ternaryfunc) 0, /* tp_call, x() */ +! (reprfunc) 0, /* tp_str, str(x) */ + }; + + /* Buffer object - Implementation +--- 1041,1052 ---- + (PyIntArgFunc) BufferItem, /* sq_item, x[i] */ + (PyIntIntArgFunc) BufferSlice, /* sq_slice, x[i:j] */ + (PyIntObjArgProc) BufferAssItem, /* sq_ass_item, x[i]=v */ +! (PyIntIntObjArgProc) BufferAssSlice, /* sq_ass_slice, x[i:j]=v */ +! (objobjproc) 0, +! #if PY_MAJOR_VERSION >= 2 +! (binaryfunc) 0, + 0, +! #endif + }; + + /* Buffer object - Implementation +*************** +*** 1110,1173 **** + return (PyObject *)(self); + } + +- static void +- BufferDestructor(PyObject *self) +- { +- BufferObject *this = (BufferObject *)(self); +- +- if (this->buf && this->buf != INVALID_BUFFER_VALUE) +- this->buf->b_python_ref = NULL; +- +- Py_DECREF(self); +- } +- + static PyObject * + BufferGetattr(PyObject *self, char *name) + { +! BufferObject *this = (BufferObject *)(self); + +! if (CheckBuffer(this)) + return NULL; + +! if (strcmp(name, "name") == 0) +! return Py_BuildValue("s", this->buf->b_ffname); +! else if (strcmp(name, "number") == 0) +! return Py_BuildValue(Py_ssize_t_fmt, this->buf->b_fnum); +! else if (strcmp(name,"__members__") == 0) +! return Py_BuildValue("[ss]", "name", "number"); + else + return Py_FindMethod(BufferMethods, self, name); + } + +- static PyObject * +- BufferRepr(PyObject *self) +- { +- static char repr[100]; +- BufferObject *this = (BufferObject *)(self); +- +- if (this->buf == INVALID_BUFFER_VALUE) +- { +- vim_snprintf(repr, 100, _(""), (self)); +- return PyString_FromString(repr); +- } +- else +- { +- char *name = (char *)this->buf->b_fname; +- PyInt len; +- +- if (name == NULL) +- name = ""; +- len = strlen(name); +- +- if (len > 35) +- name = name + (35 - len); +- +- vim_snprintf(repr, 100, "", len > 35 ? "..." : "", name); +- +- return PyString_FromString(repr); +- } +- } +- + /******************/ + + static PyInt +--- 1088,1108 ---- + return (PyObject *)(self); + } + + static PyObject * + BufferGetattr(PyObject *self, char *name) + { +! PyObject *r; + +! if (CheckBuffer((BufferObject *)(self))) + return NULL; + +! r = BufferAttr((BufferObject *)(self), name); +! if (r || PyErr_Occurred()) +! return r; + else + return Py_FindMethod(BufferMethods, self, name); + } + + /******************/ + + static PyInt +*************** +*** 1211,1235 **** + } + + static PySequenceMethods RangeAsSeq = { +! (PyInquiry) RangeLength, /* sq_length, len(x) */ +! (binaryfunc) 0, /* RangeConcat, */ /* sq_concat, x+y */ +! (PyIntArgFunc) 0, /* RangeRepeat, */ /* sq_repeat, x*n */ +! (PyIntArgFunc) RangeItem, /* sq_item, x[i] */ +! (PyIntIntArgFunc) RangeSlice, /* sq_slice, x[i:j] */ +! (PyIntObjArgProc) RangeAssItem, /* sq_ass_item, x[i]=v */ +! (PyIntIntObjArgProc) RangeAssSlice, /* sq_ass_slice, x[i:j]=v */ + }; + + /* Line range object - Implementation + */ + +- static void +- RangeDestructor(PyObject *self) +- { +- Py_DECREF(((RangeObject *)(self))->buf); +- Py_DECREF(self); +- } +- + static PyObject * + RangeGetattr(PyObject *self, char *name) + { +--- 1146,1168 ---- + } + + static PySequenceMethods RangeAsSeq = { +! (PyInquiry) RangeLength, /* sq_length, len(x) */ +! (binaryfunc) 0, /* RangeConcat, */ /* sq_concat, x+y */ +! (PyIntArgFunc) 0, /* RangeRepeat, */ /* sq_repeat, x*n */ +! (PyIntArgFunc) RangeItem, /* sq_item, x[i] */ +! (PyIntIntArgFunc) RangeSlice, /* sq_slice, x[i:j] */ +! (PyIntObjArgProc) RangeAssItem, /* sq_ass_item, x[i]=v */ +! (PyIntIntObjArgProc) RangeAssSlice, /* sq_ass_slice, x[i:j]=v */ +! (objobjproc) 0, +! #if PY_MAJOR_VERSION >= 2 +! (binaryfunc) 0, +! 0, +! #endif + }; + + /* Line range object - Implementation + */ + + static PyObject * + RangeGetattr(PyObject *self, char *name) + { +*************** +*** 1264,1274 **** + /* Buffer list object - Definitions + */ + +- typedef struct +- { +- PyObject_HEAD +- } BufListObject; +- + static PySequenceMethods BufListAsSeq = { + (PyInquiry) BufListLength, /* sq_length, len(x) */ + (binaryfunc) 0, /* sq_concat, x+y */ +--- 1197,1202 ---- +*************** +*** 1276,1336 **** + (PyIntArgFunc) BufListItem, /* sq_item, x[i] */ + (PyIntIntArgFunc) 0, /* sq_slice, x[i:j] */ + (PyIntObjArgProc) 0, /* sq_ass_item, x[i]=v */ +! (PyIntIntObjArgProc) 0, /* sq_ass_slice, x[i:j]=v */ +! }; +! +! static PyTypeObject BufListType = { +! PyObject_HEAD_INIT(0) +! 0, +! "buffer list", +! sizeof(BufListObject), +! 0, +! +! (destructor) 0, /* tp_dealloc, refcount==0 */ +! (printfunc) 0, /* tp_print, print x */ +! (getattrfunc) 0, /* tp_getattr, x.attr */ +! (setattrfunc) 0, /* tp_setattr, x.attr=v */ +! (cmpfunc) 0, /* tp_compare, x>y */ +! (reprfunc) 0, /* tp_repr, `x`, print x */ +! +! 0, /* as number */ +! &BufListAsSeq, /* as sequence */ +! 0, /* as mapping */ +! +! (hashfunc) 0, /* tp_hash, dict(x) */ +! (ternaryfunc) 0, /* tp_call, x() */ +! (reprfunc) 0, /* tp_str, str(x) */ +! }; +! +! /* Window object - Definitions +! */ +! +! static struct PyMethodDef WindowMethods[] = { +! /* name, function, calling, documentation */ +! { NULL, NULL, 0, NULL } +! }; +! +! static PyTypeObject WindowType = { +! PyObject_HEAD_INIT(0) +! 0, +! "window", +! sizeof(WindowObject), + 0, +! +! (destructor) WindowDestructor, /* tp_dealloc, refcount==0 */ +! (printfunc) 0, /* tp_print, print x */ +! (getattrfunc) WindowGetattr, /* tp_getattr, x.attr */ +! (setattrfunc) WindowSetattr, /* tp_setattr, x.attr=v */ +! (cmpfunc) 0, /* tp_compare, x>y */ +! (reprfunc) WindowRepr, /* tp_repr, `x`, print x */ +! +! 0, /* as number */ +! 0, /* as sequence */ +! 0, /* as mapping */ +! +! (hashfunc) 0, /* tp_hash, dict(x) */ +! (ternaryfunc) 0, /* tp_call, x() */ +! (reprfunc) 0, /* tp_str, str(x) */ + }; + + /* Window object - Implementation +--- 1204,1215 ---- + (PyIntArgFunc) BufListItem, /* sq_item, x[i] */ + (PyIntIntArgFunc) 0, /* sq_slice, x[i:j] */ + (PyIntObjArgProc) 0, /* sq_ass_item, x[i]=v */ +! (PyIntIntObjArgProc) 0, /* sq_ass_slice, x[i:j]=v */ +! (objobjproc) 0, +! #if PY_MAJOR_VERSION >= 2 +! (binaryfunc) 0, + 0, +! #endif + }; + + /* Window object - Implementation +*************** +*** 1370,1410 **** + return (PyObject *)(self); + } + +- static void +- WindowDestructor(PyObject *self) +- { +- WindowObject *this = (WindowObject *)(self); +- +- if (this->win && this->win != INVALID_WINDOW_VALUE) +- this->win->w_python_ref = NULL; +- +- Py_DECREF(self); +- } +- + static PyObject * + WindowGetattr(PyObject *self, char *name) + { +! WindowObject *this = (WindowObject *)(self); + +! if (CheckWindow(this)) + return NULL; + +! if (strcmp(name, "buffer") == 0) +! return (PyObject *)BufferNew(this->win->w_buffer); +! else if (strcmp(name, "cursor") == 0) +! { +! pos_T *pos = &this->win->w_cursor; +! +! return Py_BuildValue("(ll)", (long)(pos->lnum), (long)(pos->col)); +! } +! else if (strcmp(name, "height") == 0) +! return Py_BuildValue("l", (long)(this->win->w_height)); +! #ifdef FEAT_VERTSPLIT +! else if (strcmp(name, "width") == 0) +! return Py_BuildValue("l", (long)(W_WIDTH(this->win))); +! #endif +! else if (strcmp(name,"__members__") == 0) +! return Py_BuildValue("[sss]", "buffer", "cursor", "height"); + else + return Py_FindMethod(WindowMethods, self, name); + } +--- 1249,1265 ---- + return (PyObject *)(self); + } + + static PyObject * + WindowGetattr(PyObject *self, char *name) + { +! PyObject *r; + +! if (CheckWindow((WindowObject *)(self))) + return NULL; + +! r = WindowAttr((WindowObject *)(self), name); +! if (r || PyErr_Occurred()) +! return r; + else + return Py_FindMethod(WindowMethods, self, name); + } +*************** +*** 1412,1423 **** + /* Window list object - Definitions + */ + +- typedef struct +- { +- PyObject_HEAD +- } +- WinListObject; +- + static PySequenceMethods WinListAsSeq = { + (PyInquiry) WinListLength, /* sq_length, len(x) */ + (binaryfunc) 0, /* sq_concat, x+y */ +--- 1267,1272 ---- +*************** +*** 1425,1526 **** + (PyIntArgFunc) WinListItem, /* sq_item, x[i] */ + (PyIntIntArgFunc) 0, /* sq_slice, x[i:j] */ + (PyIntObjArgProc) 0, /* sq_ass_item, x[i]=v */ +! (PyIntIntObjArgProc) 0, /* sq_ass_slice, x[i:j]=v */ +! }; +! +! static PyTypeObject WinListType = { +! PyObject_HEAD_INIT(0) +! 0, +! "window list", +! sizeof(WinListObject), +! 0, +! +! (destructor) 0, /* tp_dealloc, refcount==0 */ +! (printfunc) 0, /* tp_print, print x */ +! (getattrfunc) 0, /* tp_getattr, x.attr */ +! (setattrfunc) 0, /* tp_setattr, x.attr=v */ +! (cmpfunc) 0, /* tp_compare, x>y */ +! (reprfunc) 0, /* tp_repr, `x`, print x */ +! +! 0, /* as number */ +! &WinListAsSeq, /* as sequence */ +! 0, /* as mapping */ +! +! (hashfunc) 0, /* tp_hash, dict(x) */ +! (ternaryfunc) 0, /* tp_call, x() */ +! (reprfunc) 0, /* tp_str, str(x) */ +! }; +! +! /* Current items object - Definitions +! */ +! +! typedef struct +! { +! PyObject_HEAD +! } CurrentObject; +! +! static PyTypeObject CurrentType = { +! PyObject_HEAD_INIT(0) +! 0, +! "current data", +! sizeof(CurrentObject), + 0, +! +! (destructor) 0, /* tp_dealloc, refcount==0 */ +! (printfunc) 0, /* tp_print, print x */ +! (getattrfunc) CurrentGetattr, /* tp_getattr, x.attr */ +! (setattrfunc) CurrentSetattr, /* tp_setattr, x.attr=v */ +! (cmpfunc) 0, /* tp_compare, x>y */ +! (reprfunc) 0, /* tp_repr, `x`, print x */ +! +! 0, /* as number */ +! 0, /* as sequence */ +! 0, /* as mapping */ +! +! (hashfunc) 0, /* tp_hash, dict(x) */ +! (ternaryfunc) 0, /* tp_call, x() */ +! (reprfunc) 0, /* tp_str, str(x) */ + }; + +- /* Current items object - Implementation +- */ +- static PyObject * +- CurrentGetattr(PyObject *self UNUSED, char *name) +- { +- if (strcmp(name, "buffer") == 0) +- return (PyObject *)BufferNew(curbuf); +- else if (strcmp(name, "window") == 0) +- return (PyObject *)WindowNew(curwin); +- else if (strcmp(name, "line") == 0) +- return GetBufferLine(curbuf, (PyInt)curwin->w_cursor.lnum); +- else if (strcmp(name, "range") == 0) +- return RangeNew(curbuf, RangeStart, RangeEnd); +- else if (strcmp(name,"__members__") == 0) +- return Py_BuildValue("[ssss]", "buffer", "window", "line", "range"); +- else +- { +- PyErr_SetString(PyExc_AttributeError, name); +- return NULL; +- } +- } +- +- static int +- CurrentSetattr(PyObject *self UNUSED, char *name, PyObject *value) +- { +- if (strcmp(name, "line") == 0) +- { +- if (SetBufferLine(curbuf, (PyInt)curwin->w_cursor.lnum, value, NULL) == FAIL) +- return -1; +- +- return 0; +- } +- else +- { +- PyErr_SetString(PyExc_AttributeError, name); +- return -1; +- } +- } +- + /* External interface + */ + +--- 1274,1287 ---- + (PyIntArgFunc) WinListItem, /* sq_item, x[i] */ + (PyIntIntArgFunc) 0, /* sq_slice, x[i:j] */ + (PyIntObjArgProc) 0, /* sq_ass_item, x[i]=v */ +! (PyIntIntObjArgProc) 0, /* sq_ass_slice, x[i:j]=v */ +! (objobjproc) 0, +! #if PY_MAJOR_VERSION >= 2 +! (binaryfunc) 0, + 0, +! #endif + }; + + /* External interface + */ + +*************** +*** 1642,1690 **** + return result; + } + +- static void DictionaryDestructor(PyObject *); +- static PyObject *DictionaryGetattr(PyObject *, char*); +- +- static PyMappingMethods DictionaryAsMapping = { +- (PyInquiry) DictionaryLength, +- (binaryfunc) DictionaryItem, +- (objobjargproc) DictionaryAssItem, +- }; +- +- static PyTypeObject DictionaryType = { +- PyObject_HEAD_INIT(0) +- 0, +- "vimdictionary", +- sizeof(DictionaryObject), +- 0, +- +- (destructor) DictionaryDestructor, +- (printfunc) 0, +- (getattrfunc) DictionaryGetattr, +- (setattrfunc) DictionarySetattr, +- (cmpfunc) 0, +- (reprfunc) 0, +- +- 0, /* as number */ +- 0, /* as sequence */ +- &DictionaryAsMapping, /* as mapping */ +- +- (hashfunc) 0, +- (ternaryfunc) 0, +- (reprfunc) 0, +- }; +- +- static void +- DictionaryDestructor(PyObject *self) +- { +- DictionaryObject *this = ((DictionaryObject *) (self)); +- +- pyll_remove(&this->ref, &lastdict); +- dict_unref(this->dict); +- +- Py_DECREF(self); +- } +- + static PyObject * + DictionaryGetattr(PyObject *self, char *name) + { +--- 1403,1408 ---- +*************** +*** 1698,1706 **** + return Py_FindMethod(DictionaryMethods, self, name); + } + +- static void ListDestructor(PyObject *); +- static PyObject *ListGetattr(PyObject *, char *); +- + static PySequenceMethods ListAsSeq = { + (PyInquiry) ListLength, + (binaryfunc) 0, +--- 1416,1421 ---- +*************** +*** 1716,1755 **** + #endif + }; + +- static PyTypeObject ListType = { +- PyObject_HEAD_INIT(0) +- 0, +- "vimlist", +- sizeof(ListObject), +- 0, +- +- (destructor) ListDestructor, +- (printfunc) 0, +- (getattrfunc) ListGetattr, +- (setattrfunc) ListSetattr, +- (cmpfunc) 0, +- (reprfunc) 0, +- +- 0, /* as number */ +- &ListAsSeq, /* as sequence */ +- 0, /* as mapping */ +- +- (hashfunc) 0, +- (ternaryfunc) 0, +- (reprfunc) 0, +- }; +- +- static void +- ListDestructor(PyObject *self) +- { +- ListObject *this = ((ListObject *) (self)); +- +- pyll_remove(&this->ref, &lastlist); +- list_unref(this->list); +- +- Py_DECREF(self); +- } +- + static PyObject * + ListGetattr(PyObject *self, char *name) + { +--- 1431,1436 ---- +*************** +*** 1759,1801 **** + return Py_FindMethod(ListMethods, self, name); + } + +- static void FunctionDestructor(PyObject *); +- static PyObject *FunctionGetattr(PyObject *, char *); +- +- static PyTypeObject FunctionType = { +- PyObject_HEAD_INIT(0) +- 0, +- "vimfunction", +- sizeof(FunctionObject), +- 0, +- +- (destructor) FunctionDestructor, +- (printfunc) 0, +- (getattrfunc) FunctionGetattr, +- (setattrfunc) 0, +- (cmpfunc) 0, +- (reprfunc) 0, +- +- 0, /* as number */ +- 0, /* as sequence */ +- 0, /* as mapping */ +- +- (hashfunc) 0, +- (ternaryfunc) FunctionCall, +- (reprfunc) 0, +- }; +- +- static void +- FunctionDestructor(PyObject *self) +- { +- FunctionObject *this = (FunctionObject *) (self); +- +- func_unref(this->name); +- PyMem_Del(this->name); +- +- Py_DECREF(self); +- } +- + static PyObject * + FunctionGetattr(PyObject *self, char *name) + { +--- 1440,1445 ---- +*************** +*** 1839,1859 **** + { + set_ref_in_py(copyID); + } +- +- static void +- init_structs(void) +- { +- vim_memset(&OutputType, 0, sizeof(OutputType)); +- OutputType.tp_name = "message"; +- OutputType.tp_basicsize = sizeof(OutputObject); +- OutputType.tp_getattr = OutputGetattr; +- OutputType.tp_setattr = OutputSetattr; +- +- vim_memset(&RangeType, 0, sizeof(RangeType)); +- RangeType.tp_name = "range"; +- RangeType.tp_basicsize = sizeof(RangeObject); +- RangeType.tp_dealloc = RangeDestructor; +- RangeType.tp_getattr = RangeGetattr; +- RangeType.tp_repr = RangeRepr; +- RangeType.tp_as_sequence = &RangeAsSeq; +- } +--- 1483,1485 ---- +*** ../vim-7.3.908/src/version.c 2013-04-24 13:10:35.000000000 +0200 +--- src/version.c 2013-04-24 13:27:49.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 909, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +221. Your wife melts your keyboard in the oven. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.910 b/7.3.910 new file mode 100644 index 0000000..ae8deb5 --- /dev/null +++ b/7.3.910 @@ -0,0 +1,119 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.910 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.910 +Problem: Python code in #ifdef branches with only minor differences. +Solution: Merge the #ifdef branches. (ZyX) +Files: src/if_py_both.h, src/if_python.c + + +*** ../vim-7.3.909/src/if_py_both.h 2013-04-24 13:39:11.000000000 +0200 +--- src/if_py_both.h 2013-04-24 13:42:30.000000000 +0200 +*************** +*** 2853,2859 **** + tv->v_type = VAR_FUNC; + func_ref(tv->vval.v_string); + } +- #if PY_MAJOR_VERSION >= 3 + else if (PyBytes_Check(obj)) + { + char_u *result; +--- 2853,2858 ---- +*************** +*** 2873,2902 **** + PyObject *bytes; + char_u *result; + +- bytes = PyString_AsBytes(obj); +- if (bytes == NULL) +- return -1; +- +- if(PyString_AsStringAndSize(bytes, (char **) &result, NULL) == -1) +- return -1; +- if (result == NULL) +- return -1; +- +- if (set_string_copy(result, tv) == -1) +- { +- Py_XDECREF(bytes); +- return -1; +- } +- Py_XDECREF(bytes); +- +- tv->v_type = VAR_STRING; +- } +- #else +- else if (PyUnicode_Check(obj)) +- { +- PyObject *bytes; +- char_u *result; +- + bytes = PyUnicode_AsEncodedString(obj, (char *)ENC_OPT, NULL); + if (bytes == NULL) + return -1; +--- 2872,2877 ---- +*************** +*** 2915,2934 **** + + tv->v_type = VAR_STRING; + } +! else if (PyString_Check(obj)) +! { +! char_u *result; +! +! if(PyString_AsStringAndSize(obj, (char **) &result, NULL) == -1) +! return -1; +! if (result == NULL) +! return -1; +! +! if (set_string_copy(result, tv) == -1) +! return -1; +! +! tv->v_type = VAR_STRING; +! } + else if (PyInt_Check(obj)) + { + tv->v_type = VAR_NUMBER; +--- 2890,2896 ---- + + tv->v_type = VAR_STRING; + } +! #if PY_MAJOR_VERSION < 3 + else if (PyInt_Check(obj)) + { + tv->v_type = VAR_NUMBER; +*** ../vim-7.3.909/src/if_python.c 2013-04-24 13:39:11.000000000 +0200 +--- src/if_python.c 2013-04-24 13:42:30.000000000 +0200 +*************** +*** 59,64 **** +--- 59,65 ---- + static void init_structs(void); + + #define PyBytes_FromString PyString_FromString ++ #define PyBytes_Check PyString_Check + + /* No-op conversion functions, use with care! */ + #define PyString_AsBytes(obj) (obj) +*** ../vim-7.3.909/src/version.c 2013-04-24 13:39:11.000000000 +0200 +--- src/version.c 2013-04-24 13:43:51.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 910, + /**/ + +-- +Your fault: core dumped + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.911 b/7.3.911 new file mode 100644 index 0000000..9143cee --- /dev/null +++ b/7.3.911 @@ -0,0 +1,343 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.911 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.911 +Problem: Python: Access to Vim variables is not so easy. +Solution: Define vim.vars and vim.vvars. (ZyX) +Files: runtime/doc/if_pyth.txt, src/eval.c, src/globals.h, + src/if_py_both.h, src/if_python3.c, src/if_python.c, + src/testdir/test86.in, src/testdir/test86.ok, + src/testdir/test87.in, src/testdir/test87.ok + + +*** ../vim-7.3.910/runtime/doc/if_pyth.txt 2012-09-21 14:00:05.000000000 +0200 +--- runtime/doc/if_pyth.txt 2013-04-24 13:54:23.000000000 +0200 +*************** +*** 54,61 **** + EOF + endfunction + < +! Note: Python is very sensitive to the indenting. Also make sure the "class" +! line and "EOF" do not have any indent. + + *:pyfile* *:pyf* + :[range]pyf[ile] {file} +--- 54,61 ---- + EOF + endfunction + < +! Note: Python is very sensitive to the indenting. Make sure the "class" line +! and "EOF" do not have any indent. + + *:pyfile* *:pyf* + :[range]pyf[ile] {file} +*************** +*** 165,171 **** + Value Meaning ~ + zero Variable is not locked + vim.VAR_LOCKED Variable is locked, but can be unlocked +! vim.VAR_FIXED Variable is locked and can’t be unlocked + integer constants. If variable is not fixed, you can do + `var.locked=True` to lock it and `var.locked=False` to unlock. + There is no recursive locking like |:lockvar|! does. There is also +--- 165,171 ---- + Value Meaning ~ + zero Variable is not locked + vim.VAR_LOCKED Variable is locked, but can be unlocked +! vim.VAR_FIXED Variable is locked and can't be unlocked + integer constants. If variable is not fixed, you can do + `var.locked=True` to lock it and `var.locked=False` to unlock. + There is no recursive locking like |:lockvar|! does. There is also +*************** +*** 237,242 **** +--- 237,247 ---- + "current range". A range is a bit like a buffer, but with all access + restricted to a subset of lines. See |python-range| for more details. + ++ vim.vars *python-vars* ++ vim.vvars *python-vvars* ++ Dictionary-like objects holding dictionaries with global (|g:|) and ++ vim (|v:|) variables respectively. Identical to `vim.bindeval("g:")`, ++ but faster. + + Output from Python *python-output* + Vim displays all Python code output in the Vim message area. Normal +*************** +*** 307,312 **** +--- 312,318 ---- + :py n = len(b) # number of lines + :py (row,col) = b.mark('a') # named mark + :py r = b.range(1,5) # a sub-range of the buffer ++ :py b.vars["foo"] = "bar" # assign b:foo variable + + ============================================================================== + 4. Range objects *python-range* +*************** +*** 354,359 **** +--- 360,368 ---- + This is a tuple, (row,col). + height (read-write) The window height, in rows + width (read-write) The window width, in columns ++ vars (read-only) The window |w:| variables. Attribute is ++ unassignable, but you can change window ++ variables this way + The height attribute is writable only if the screen is split horizontally. + The width attribute is writable only if the screen is split vertically. + +*************** +*** 385,391 **** + + *:py3* *:python3* + The |:py3| and |:python3| commands work similar to |:python|. A simple check +! if the `:py3` command is wrong: > + :py3 print("Hello") + < *:py3file* + The |:py3file| command works similar to |:pyfile|. +--- 394,400 ---- + + *:py3* *:python3* + The |:py3| and |:python3| commands work similar to |:python|. A simple check +! if the `:py3` command is working: > + :py3 print("Hello") + < *:py3file* + The |:py3file| command works similar to |:pyfile|. +*** ../vim-7.3.910/src/eval.c 2013-04-15 18:25:55.000000000 +0200 +--- src/eval.c 2013-04-24 14:02:45.000000000 +0200 +*************** +*** 113,124 **** + static char *e_nofunc = N_("E130: Unknown function: %s"); + static char *e_illvar = N_("E461: Illegal variable name: %s"); + +! /* +! * All user-defined global variables are stored in dictionary "globvardict". +! * "globvars_var" is the variable that is used for "g:". +! */ +! static dict_T globvardict; +! static dictitem_T globvars_var; + #define globvarht globvardict.dv_hashtab + + /* +--- 113,119 ---- + static char *e_nofunc = N_("E130: Unknown function: %s"); + static char *e_illvar = N_("E461: Illegal variable name: %s"); + +! static dictitem_T globvars_var; /* variable used for g: */ + #define globvarht globvardict.dv_hashtab + + /* +*************** +*** 370,381 **** + #define vv_list vv_di.di_tv.vval.v_list + #define vv_tv vv_di.di_tv + +! /* +! * The v: variables are stored in dictionary "vimvardict". +! * "vimvars_var" is the variable that is used for the "l:" scope. +! */ +! static dict_T vimvardict; +! static dictitem_T vimvars_var; + #define vimvarht vimvardict.dv_hashtab + + static void prepare_vimvar __ARGS((int idx, typval_T *save_tv)); +--- 365,371 ---- + #define vv_list vv_di.di_tv.vval.v_list + #define vv_tv vv_di.di_tv + +! static dictitem_T vimvars_var; /* variable used for v: */ + #define vimvarht vimvardict.dv_hashtab + + static void prepare_vimvar __ARGS((int idx, typval_T *save_tv)); +*** ../vim-7.3.910/src/globals.h 2013-03-19 13:33:18.000000000 +0100 +--- src/globals.h 2013-04-24 13:57:51.000000000 +0200 +*************** +*** 180,185 **** +--- 180,187 ---- + EXTERN int emsg_severe INIT(= FALSE); /* use message of next of several + emsg() calls for throw */ + EXTERN int did_endif INIT(= FALSE); /* just had ":endif" */ ++ EXTERN dict_T vimvardict; /* Dictionary with v: variables */ ++ EXTERN dict_T globvardict; /* Dictionary with g: variables */ + #endif + EXTERN int did_emsg; /* set by emsg() when the message + is displayed or thrown */ +*** ../vim-7.3.910/src/if_py_both.h 2013-04-24 13:47:36.000000000 +0200 +--- src/if_py_both.h 2013-04-24 13:54:23.000000000 +0200 +*************** +*** 1532,1539 **** + else if (strcmp(name, "width") == 0) + return Py_BuildValue("l", (long)(W_WIDTH(this->win))); + #endif + else if (strcmp(name,"__members__") == 0) +! return Py_BuildValue("[sss]", "buffer", "cursor", "height"); + else + return NULL; + } +--- 1532,1541 ---- + else if (strcmp(name, "width") == 0) + return Py_BuildValue("l", (long)(W_WIDTH(this->win))); + #endif ++ else if (strcmp(name, "vars") == 0) ++ return DictionaryNew(this->win->w_vars); + else if (strcmp(name,"__members__") == 0) +! return Py_BuildValue("[ssss]", "buffer", "cursor", "height", "vars"); + else + return NULL; + } +*************** +*** 2495,2502 **** + return Py_BuildValue("s", this->buf->b_ffname); + else if (strcmp(name, "number") == 0) + return Py_BuildValue(Py_ssize_t_fmt, this->buf->b_fnum); + else if (strcmp(name,"__members__") == 0) +! return Py_BuildValue("[ss]", "name", "number"); + else + return NULL; + } +--- 2497,2506 ---- + return Py_BuildValue("s", this->buf->b_ffname); + else if (strcmp(name, "number") == 0) + return Py_BuildValue(Py_ssize_t_fmt, this->buf->b_fnum); ++ else if (strcmp(name, "vars") == 0) ++ return DictionaryNew(this->buf->b_vars); + else if (strcmp(name,"__members__") == 0) +! return Py_BuildValue("[sss]", "name", "number", "vars"); + else + return NULL; + } +*** ../vim-7.3.910/src/if_python3.c 2013-04-24 13:39:11.000000000 +0200 +--- src/if_python3.c 2013-04-24 13:54:23.000000000 +0200 +*************** +*** 1647,1652 **** +--- 1647,1655 ---- + Py_INCREF((PyObject *)(void *)&TheWindowList); + PyModule_AddObject(mod, "windows", (PyObject *)(void *)&TheWindowList); + ++ PyModule_AddObject(mod, "vars", DictionaryNew(&globvardict)); ++ PyModule_AddObject(mod, "vvars", DictionaryNew(&vimvardict)); ++ + #define ADD_INT_CONSTANT(name, value) \ + tmp = PyLong_FromLong(value); \ + Py_INCREF(tmp); \ +*** ../vim-7.3.910/src/if_python.c 2013-04-24 13:47:36.000000000 +0200 +--- src/if_python.c 2013-04-24 13:54:33.000000000 +0200 +*************** +*** 1330,1335 **** +--- 1330,1336 ---- + { + PyObject *mod; + PyObject *dict; ++ PyObject *tmp; + /* The special value is removed from sys.path in Python_Init(). */ + static char *(argv[2]) = {"/must>not&exist/foo", NULL}; + +*************** +*** 1353,1358 **** +--- 1354,1365 ---- + PyDict_SetItemString(dict, "buffers", (PyObject *)(void *)&TheBufferList); + PyDict_SetItemString(dict, "current", (PyObject *)(void *)&TheCurrent); + PyDict_SetItemString(dict, "windows", (PyObject *)(void *)&TheWindowList); ++ tmp = DictionaryNew(&globvardict); ++ PyDict_SetItemString(dict, "vars", tmp); ++ Py_DECREF(tmp); ++ tmp = DictionaryNew(&vimvardict); ++ PyDict_SetItemString(dict, "vvars", tmp); ++ Py_DECREF(tmp); + PyDict_SetItemString(dict, "VAR_LOCKED", PyInt_FromLong(VAR_LOCKED)); + PyDict_SetItemString(dict, "VAR_FIXED", PyInt_FromLong(VAR_FIXED)); + PyDict_SetItemString(dict, "VAR_SCOPE", PyInt_FromLong(VAR_SCOPE)); +*** ../vim-7.3.910/src/testdir/test86.in 2013-04-05 19:32:30.000000000 +0200 +--- src/testdir/test86.in 2013-04-24 13:54:33.000000000 +0200 +*************** +*** 346,351 **** +--- 346,364 ---- + :$put =string(pyeval('l')) + :py l = ll[-10:10] + :$put =string(pyeval('l')) ++ :" ++ :" Vars ++ :let g:foo = 'bac' ++ :let w:abc = 'def' ++ :let b:baz = 'bar' ++ :try ++ : throw "Abc" ++ :catch ++ : put =pyeval('vim.vvars[''exception'']') ++ :endtry ++ :put =pyeval('vim.vars[''foo'']') ++ :put =pyeval('vim.current.window.vars[''abc'']') ++ :put =pyeval('vim.current.buffer.vars[''baz'']') + :endfun + :" + :call Test() +*** ../vim-7.3.910/src/testdir/test86.ok 2013-04-24 13:04:21.000000000 +0200 +--- src/testdir/test86.ok 2013-04-24 13:54:33.000000000 +0200 +*************** +*** 76,78 **** +--- 76,82 ---- + [0, 1, 2, 3, 4, 5] + [0, 1, 2, 3, 4, 5] + [0, 1, 2, 3, 4, 5] ++ Abc ++ bac ++ def ++ bar +*** ../vim-7.3.910/src/testdir/test87.in 2013-02-13 14:17:00.000000000 +0100 +--- src/testdir/test87.in 2013-04-24 13:54:33.000000000 +0200 +*************** +*** 315,320 **** +--- 315,333 ---- + :py3 trace_main() + :py3 sys.settrace(None) + :$put =string(l) ++ :" ++ :" Vars ++ :let g:foo = 'bac' ++ :let w:abc = 'def' ++ :let b:baz = 'bar' ++ :try ++ : throw "Abc" ++ :catch ++ : put =py3eval('vim.vvars[''exception'']') ++ :endtry ++ :put =py3eval('vim.vars[''foo'']') ++ :put =py3eval('vim.current.window.vars[''abc'']') ++ :put =py3eval('vim.current.buffer.vars[''baz'']') + :endfun + :" + :call Test() +*** ../vim-7.3.910/src/testdir/test87.ok 2013-04-24 13:04:21.000000000 +0200 +--- src/testdir/test87.ok 2013-04-24 13:54:33.000000000 +0200 +*************** +*** 65,67 **** +--- 65,71 ---- + vim: Vim(let):E861: + [1] + [1, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 1] ++ Abc ++ bac ++ def ++ bar +*** ../vim-7.3.910/src/version.c 2013-04-24 13:47:36.000000000 +0200 +--- src/version.c 2013-04-24 13:54:00.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 911, + /**/ + +-- +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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.912 b/7.3.912 new file mode 100644 index 0000000..8a7ed92 --- /dev/null +++ b/7.3.912 @@ -0,0 +1,52 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.912 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.912 +Problem: Typing a ":" command at the hit-enter dialog does not work if the + "file changed" dialog happens next. +Solution: Check for changed files before giving the hit-enter dialog. +Files: src/message.c + + +*** ../vim-7.3.911/src/message.c 2013-03-19 13:56:03.000000000 +0100 +--- src/message.c 2013-04-24 15:01:31.000000000 +0200 +*************** +*** 939,944 **** +--- 939,950 ---- + #ifdef USE_ON_FLY_SCROLL + dont_scroll = TRUE; /* disallow scrolling here */ + #endif ++ /* Avoid the sequence that the user types ":" at the hit-return prompt ++ * to start an Ex command, but the file-changed dialog gets in the ++ * way. */ ++ if (need_check_timestamps) ++ check_timestamps(FALSE); ++ + hit_return_msg(); + + do +*** ../vim-7.3.911/src/version.c 2013-04-24 14:06:42.000000000 +0200 +--- src/version.c 2013-04-24 15:04:30.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 912, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +224. You set up your own Web page. You set up a Web page for each + of your kids... and your pets. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.913 b/7.3.913 new file mode 100644 index 0000000..721959a --- /dev/null +++ b/7.3.913 @@ -0,0 +1,73 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.913 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.913 (after 7.3.905) +Problem: Still a crash when writing viminfo. +Solution: Add checks for NULL pointers. (Ron Aaron) +Files: src/ex_getln.c + + +*** ../vim-7.3.912/src/ex_getln.c 2013-04-15 22:22:48.000000000 +0200 +--- src/ex_getln.c 2013-04-24 15:35:22.000000000 +0200 +*************** +*** 6177,6182 **** +--- 6177,6183 ---- + } + vim_free(viminfo_history[type]); + viminfo_history[type] = NULL; ++ viminfo_hisidx[type] = 0; + } + } + +*************** +*** 6230,6235 **** +--- 6231,6237 ---- + && !(round == 2 && i >= viminfo_hisidx[type])) + { + p = round == 1 ? history[type][i].hisstr ++ : viminfo_history[type] == NULL ? NULL + : viminfo_history[type][i]; + if (p != NULL && (round == 2 || !history[type][i].viminfo)) + { +*************** +*** 6261,6267 **** + } + } + for (i = 0; i < viminfo_hisidx[type]; ++i) +! vim_free(viminfo_history[type][i]); + vim_free(viminfo_history[type]); + viminfo_history[type] = NULL; + viminfo_hisidx[type] = 0; +--- 6263,6270 ---- + } + } + for (i = 0; i < viminfo_hisidx[type]; ++i) +! if (viminfo_history[type] != NULL) +! vim_free(viminfo_history[type][i]); + vim_free(viminfo_history[type]); + viminfo_history[type] = NULL; + viminfo_hisidx[type] = 0; +*** ../vim-7.3.912/src/version.c 2013-04-24 15:12:27.000000000 +0200 +--- src/version.c 2013-04-24 15:38:22.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 913, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +225. You sign up for free subscriptions for all the computer magazines + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.914 b/7.3.914 new file mode 100644 index 0000000..e7cc58f --- /dev/null +++ b/7.3.914 @@ -0,0 +1,72 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.914 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.914 +Problem: ~/.viminfo is messed up when running tests. +Solution: Set the viminfo filename. +Files: src/testdir/test89.in, src/testdir/test94.in + + +*** ../vim-7.3.913/src/testdir/test89.in 2013-03-13 20:42:28.000000000 +0100 +--- src/testdir/test89.in 2013-04-24 15:42:05.000000000 +0200 +*************** +*** 2,8 **** + + STARTTEST + :so small.vim +! :set hidden nocp nu rnu + :redir @a | set nu? rnu? | redir END + :e! xx + :redir @b | set nu? rnu? | redir END +--- 2,8 ---- + + STARTTEST + :so small.vim +! :set hidden nocp nu rnu viminfo+=nviminfo + :redir @a | set nu? rnu? | redir END + :e! xx + :redir @b | set nu? rnu? | redir END +*** ../vim-7.3.913/src/testdir/test94.in 2013-04-12 13:44:49.000000000 +0200 +--- src/testdir/test94.in 2013-04-24 15:43:10.000000000 +0200 +*************** +*** 17,23 **** + + STARTTEST + :so small.vim +! :set nocp + : + :" User functions + :function MoveToCap() +--- 17,23 ---- + + STARTTEST + :so small.vim +! :set nocp viminfo+=nviminfo + : + :" User functions + :function MoveToCap() +*** ../vim-7.3.913/src/version.c 2013-04-24 15:39:06.000000000 +0200 +--- src/version.c 2013-04-24 15:44:19.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 914, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +226. You sit down at the computer right after dinner and your spouse + says "See you in the morning." + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.915 b/7.3.915 new file mode 100644 index 0000000..da1f12e --- /dev/null +++ b/7.3.915 @@ -0,0 +1,47 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.915 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.915 +Problem: When reading a file with encoding conversion fails at the end the + next encoding in 'fencs' is not used. +Solution: Retry with another encoding when possible. (Taro Muraoka) +Files: src/fileio.c + + +*** ../vim-7.3.914/src/fileio.c 2013-04-15 12:27:30.000000000 +0200 +--- src/fileio.c 2013-04-24 16:16:28.000000000 +0200 +*************** +*** 1380,1385 **** +--- 1380,1387 ---- + # endif + ) + { ++ if (can_retry) ++ goto rewind_retry; + if (conv_error == 0) + conv_error = curbuf->b_ml.ml_line_count + - linecnt + 1; +*** ../vim-7.3.914/src/version.c 2013-04-24 15:47:11.000000000 +0200 +--- src/version.c 2013-04-24 16:18:48.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 915, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +227. You sleep next to your monitor. Or on top of it. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.916 b/7.3.916 new file mode 100644 index 0000000..3ed5ec1 --- /dev/null +++ b/7.3.916 @@ -0,0 +1,115 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.916 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.916 +Problem: Using freed memory when pasting with the mouse (Issue 130). +Solution: Get the byte value early. (hint by Dominique Pelle) +Files: src/buffer.c + + +*** ../vim-7.3.915/src/buffer.c 2013-04-15 12:27:30.000000000 +0200 +--- src/buffer.c 2013-04-24 16:45:38.000000000 +0200 +*************** +*** 3506,3512 **** + char_u *p; + char_u *s; + char_u *t; +! char_u *linecont; + #ifdef FEAT_EVAL + win_T *o_curwin; + buf_T *o_curbuf; +--- 3506,3512 ---- + char_u *p; + char_u *s; + char_u *t; +! int byteval; + #ifdef FEAT_EVAL + win_T *o_curwin; + buf_T *o_curbuf; +*************** +*** 3573,3584 **** + fillchar = '-'; + #endif + +! /* +! * Get line & check if empty (cursorpos will show "0-1"). +! * If inversion is possible we use it. Else '=' characters are used. +! */ +! linecont = ml_get_buf(wp->w_buffer, wp->w_cursor.lnum, FALSE); +! empty_line = (*linecont == NUL); + + groupdepth = 0; + p = out; +--- 3573,3593 ---- + fillchar = '-'; + #endif + +! /* Get line & check if empty (cursorpos will show "0-1"). Note that +! * p will become invalid when getting another buffer line. */ +! p = ml_get_buf(wp->w_buffer, wp->w_cursor.lnum, FALSE); +! empty_line = (*p == NUL); +! +! /* Get the byte value now, in case we need it below. This is more +! * efficient than making a copy of the line. */ +! if (wp->w_cursor.col > (colnr_T)STRLEN(p)) +! byteval = 0; +! else +! #ifdef FEAT_MBYTE +! byteval = (*mb_ptr2char)(p + wp->w_cursor.col); +! #else +! byteval = p[wp->w_cursor.col]; +! #endif + + groupdepth = 0; + p = out; +*************** +*** 3956,3971 **** + case STL_BYTEVAL_X: + base = 'X'; + case STL_BYTEVAL: +! if (wp->w_cursor.col > (colnr_T)STRLEN(linecont)) +! num = 0; +! else +! { +! #ifdef FEAT_MBYTE +! num = (*mb_ptr2char)(linecont + wp->w_cursor.col); +! #else +! num = linecont[wp->w_cursor.col]; +! #endif +! } + if (num == NL) + num = 0; + else if (num == CAR && get_fileformat(wp->w_buffer) == EOL_MAC) +--- 3965,3971 ---- + case STL_BYTEVAL_X: + base = 'X'; + case STL_BYTEVAL: +! num = byteval; + if (num == NL) + num = 0; + else if (num == CAR && get_fileformat(wp->w_buffer) == EOL_MAC) +*** ../vim-7.3.915/src/version.c 2013-04-24 16:33:58.000000000 +0200 +--- src/version.c 2013-04-24 16:51:24.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 916, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +228. You spend Saturday night making the counter on your home page + pass that 2000 mark. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.917 b/7.3.917 new file mode 100644 index 0000000..00ed2f6 --- /dev/null +++ b/7.3.917 @@ -0,0 +1,85 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.917 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.917 +Problem: When a path ends in a backslash appending a comma has the wrong + effect. +Solution: Replace a trailing backslash with a slash. (Nazri Ramliy) +Files: src/misc1.c, src/testdir/test73.in, src/testdir/test73.ok + + +*** ../vim-7.3.916/src/misc1.c 2013-04-15 15:47:07.000000000 +0200 +--- src/misc1.c 2013-04-24 17:25:45.000000000 +0200 +*************** +*** 10135,10140 **** +--- 10135,10149 ---- + + if (ga_grow(gap, 1) == FAIL) + break; ++ ++ # if defined(MSWIN) || defined(MSDOS) ++ /* Avoid the path ending in a backslash, it fails when a comma is ++ * appended. */ ++ len = STRLEN(buf); ++ if (buf[len - 1] == '\\') ++ buf[len - 1] = '/'; ++ # endif ++ + p = vim_strsave(buf); + if (p == NULL) + break; +*** ../vim-7.3.916/src/testdir/test73.in 2010-08-15 21:57:29.000000000 +0200 +--- src/testdir/test73.in 2013-04-24 17:22:14.000000000 +0200 +*************** +*** 158,163 **** +--- 158,173 ---- + :" Find the file containing 'E.T.' in the Xfind/in/path directory + :find file + :exec "w >>" . test_out ++ :" ++ :" Test that completion works when path=.,, ++ :" ++ :set path=.,, ++ :" Open Jimmy Hoffa file ++ :e in/file.txt ++ :exec "w >>" . test_out ++ :" Search for the file containing Holy Grail in same directory as in/path.txt ++ :find stu ++ :exec "w >>" . test_out + :q + :exec "cd " . cwd + :call DeleteDirectory("Xfind") +*** ../vim-7.3.916/src/testdir/test73.ok 2010-08-15 21:57:29.000000000 +0200 +--- src/testdir/test73.ok 2013-04-24 17:22:28.000000000 +0200 +*************** +*** 17,19 **** +--- 17,21 ---- + Voyager 2 + Jimmy Hoffa + E.T. ++ Jimmy Hoffa ++ Another Holy Grail +*** ../vim-7.3.916/src/version.c 2013-04-24 16:52:28.000000000 +0200 +--- src/version.c 2013-04-24 17:27:55.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 917, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +229. You spend so much time thinking what to add on this list. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.918 b/7.3.918 new file mode 100644 index 0000000..4367b65 --- /dev/null +++ b/7.3.918 @@ -0,0 +1,80 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.918 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.918 +Problem: Repeating an Ex command after using a Visual motion does not work. +Solution: Check for an Ex command being used. (David Bürgin) +Files: src/normal.c + + +*** ../vim-7.3.917/src/normal.c 2013-04-05 17:43:10.000000000 +0200 +--- src/normal.c 2013-04-24 18:12:43.000000000 +0200 +*************** +*** 1504,1514 **** + } + #endif + +! /* only redo yank when 'y' flag is in 'cpoptions' */ +! /* never redo "zf" (define fold) */ + if ((vim_strchr(p_cpo, CPO_YANK) != NULL || oap->op_type != OP_YANK) + #ifdef FEAT_VISUAL +! && (!VIsual_active || oap->motion_force) + #endif + && cap->cmdchar != 'D' + #ifdef FEAT_FOLDING +--- 1504,1517 ---- + } + #endif + +! /* Only redo yank when 'y' flag is in 'cpoptions'. */ +! /* Never redo "zf" (define fold). */ + if ((vim_strchr(p_cpo, CPO_YANK) != NULL || oap->op_type != OP_YANK) + #ifdef FEAT_VISUAL +! && ((!VIsual_active || oap->motion_force) +! /* Also redo Operator-pending Visual mode mappings */ +! || (VIsual_active && cap->cmdchar == ':' +! && oap->op_type != OP_COLON)) + #endif + && cap->cmdchar != 'D' + #ifdef FEAT_FOLDING +*************** +*** 1797,1803 **** + prep_redo(oap->regname, 0L, NUL, cap->cmdchar, cap->nchar, + get_op_char(oap->op_type), + get_extra_op_char(oap->op_type)); +! else + prep_redo(oap->regname, 0L, NUL, 'v', + get_op_char(oap->op_type), + get_extra_op_char(oap->op_type), +--- 1800,1806 ---- + prep_redo(oap->regname, 0L, NUL, cap->cmdchar, cap->nchar, + get_op_char(oap->op_type), + get_extra_op_char(oap->op_type)); +! else if (cap->cmdchar != ':') + prep_redo(oap->regname, 0L, NUL, 'v', + get_op_char(oap->op_type), + get_extra_op_char(oap->op_type), +*** ../vim-7.3.917/src/version.c 2013-04-24 17:34:15.000000000 +0200 +--- src/version.c 2013-04-24 18:34:03.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 918, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +230. You spend your Friday nights typing away at your keyboard + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.919 b/7.3.919 new file mode 100644 index 0000000..f179985 --- /dev/null +++ b/7.3.919 @@ -0,0 +1,57 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.919 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.919 (after 7.3.788) +Problem: An empty nl.po file does not work with an old msgfmt. +Solution: Put a single # in the file. (Laurent Blume) +Files: src/po/Makefile + + +*** ../vim-7.3.918/src/po/Makefile 2013-01-30 12:50:50.000000000 +0100 +--- src/po/Makefile 2013-04-27 14:04:45.000000000 +0200 +*************** +*** 176,184 **** + + converted: $(MOCONVERTED) + +! # nl.po was added later, if it does not exist use an empty file. + nl.po: +! touch nl.po + + # Norwegian/Bokmal: "nb" is an alias for "no". + # Copying the file is not efficient, but I don't know of another way to make +--- 176,185 ---- + + converted: $(MOCONVERTED) + +! # nl.po was added later, if it does not exist use a file with just a # in it +! # (an empty file doesn't work with old msgfmt). + nl.po: +! @( echo \# > nl.po ) + + # Norwegian/Bokmal: "nb" is an alias for "no". + # Copying the file is not efficient, but I don't know of another way to make +*** ../vim-7.3.918/src/version.c 2013-04-24 18:34:40.000000000 +0200 +--- src/version.c 2013-05-04 03:30:05.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 919, + /**/ + +-- +God made the integers; all else is the work of Man. + -- Kronecker + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.920 b/7.3.920 new file mode 100644 index 0000000..d1f50ba --- /dev/null +++ b/7.3.920 @@ -0,0 +1,51 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.920 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.920 +Problem: Compiler warning for size_t to int. +Solution: Add a type cast. (Mike Williams) +Files: src/misc1.c + + +*** ../vim-7.3.919/src/misc1.c 2013-04-24 17:34:15.000000000 +0200 +--- src/misc1.c 2013-04-29 22:33:49.000000000 +0200 +*************** +*** 10139,10145 **** + # if defined(MSWIN) || defined(MSDOS) + /* Avoid the path ending in a backslash, it fails when a comma is + * appended. */ +! len = STRLEN(buf); + if (buf[len - 1] == '\\') + buf[len - 1] = '/'; + # endif +--- 10139,10145 ---- + # if defined(MSWIN) || defined(MSDOS) + /* Avoid the path ending in a backslash, it fails when a comma is + * appended. */ +! len = (int)STRLEN(buf); + if (buf[len - 1] == '\\') + buf[len - 1] = '/'; + # endif +*** ../vim-7.3.919/src/version.c 2013-05-04 03:37:03.000000000 +0200 +--- src/version.c 2013-05-04 03:39:44.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 920, + /**/ + +-- +Women are probably the main cause of free software starvation. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.921 b/7.3.921 new file mode 100644 index 0000000..d95108e --- /dev/null +++ b/7.3.921 @@ -0,0 +1,58 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.921 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.921 (after 7.3.697) +Problem: Trying to create a fontset handle when 'guifontset' is not set. +Solution: Add curly braces around the code block. (Max Kirillov) +Files: src/syntax.c + + +*** ../vim-7.3.920/src/syntax.c 2013-01-23 15:53:08.000000000 +0100 +--- src/syntax.c 2013-05-02 03:51:38.000000000 +0200 +*************** +*** 8082,8087 **** +--- 8082,8088 ---- + || do_tooltip + # endif + ) ++ { + if (free_font) + gui_mch_free_fontset(HL_TABLE()[idx].sg_fontset); + HL_TABLE()[idx].sg_fontset = fontset_name2handle(arg, 0 +*************** +*** 8092,8097 **** +--- 8093,8099 ---- + || do_tooltip + # endif + ); ++ } + if (HL_TABLE()[idx].sg_fontset != NOFONTSET) + { + /* If it worked and it's the Normal group, use it as the normal +*** ../vim-7.3.920/src/version.c 2013-05-04 03:40:22.000000000 +0200 +--- src/version.c 2013-05-04 03:41:40.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 921, + /**/ + +-- +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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.922 b/7.3.922 new file mode 100644 index 0000000..8b78ca0 --- /dev/null +++ b/7.3.922 @@ -0,0 +1,83 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.922 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.922 +Problem: No test for what 7.3.918 fixes. +Solution: Add a test. (David Bürgin) +Files: src/testdir/test94.in, src/testdir/test94.ok + + +*** ../vim-7.3.921/src/testdir/test94.in 2013-04-24 15:47:11.000000000 +0200 +--- src/testdir/test94.in 2013-05-04 04:03:02.000000000 +0200 +*************** +*** 30,38 **** + : call setpos("'>", [0, line2, col2, 0]) + : normal! gv + :endfunction +- :function MoveToEndCount(count) +- : normal! v:count . e +- :endfunction + : + :" Visual modes followed by operator + /^apple +--- 30,35 ---- +*************** +*** 59,65 **** + /^Juniper + g?\WfD.: + /^Lemon +! yiWPlciWNew: + : + :" Patch 7.3.879: Properly abort Operator-pending mode for "dv:" etc. + /^zzzz +--- 56,62 ---- + /^Juniper + g?\WfD.: + /^Lemon +! yiWPlciWNewfr.: + : + :" Patch 7.3.879: Properly abort Operator-pending mode for "dv:" etc. + /^zzzz +*** ../vim-7.3.921/src/testdir/test94.ok 2013-04-12 13:44:49.000000000 +0200 +--- src/testdir/test94.ok 2013-05-04 04:06:46.000000000 +0200 +*************** +*** 13,19 **** + + ----Z + WhavcreQhevnaZ +! LemonNewNectarineZ + + zzz + ok +--- 13,19 ---- + + ----Z + WhavcreQhevnaZ +! LemonNewNewZ + + zzz + ok +*** ../vim-7.3.921/src/version.c 2013-05-04 03:42:30.000000000 +0200 +--- src/version.c 2013-05-04 04:07:08.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 922, + /**/ + +-- +This sentence is not sure that it exists, but if it does, it will +certainly consider the possibility that other sentences exist. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.923 b/7.3.923 new file mode 100644 index 0000000..c506b6b --- /dev/null +++ b/7.3.923 @@ -0,0 +1,82 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.923 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.923 +Problem: Check for X11 header files fails on Solaris. +Solution: Only use -Werror for gcc. (Laurent Blume) +Files: src/configure.in, src/auto/configure + + +*** ../vim-7.3.922/src/configure.in 2013-04-15 14:44:53.000000000 +0200 +--- src/configure.in 2013-05-04 04:34:46.000000000 +0200 +*************** +*** 1751,1757 **** + dnl Check that the X11 header files don't use implicit declarations + AC_MSG_CHECKING(if X11 header files implicitly declare return values) + cflags_save=$CFLAGS +! CFLAGS="$CFLAGS $X_CFLAGS -Werror" + AC_TRY_COMPILE([#include ], , + AC_MSG_RESULT(no), + CFLAGS="$CFLAGS -Wno-implicit-int" +--- 1751,1762 ---- + dnl Check that the X11 header files don't use implicit declarations + AC_MSG_CHECKING(if X11 header files implicitly declare return values) + cflags_save=$CFLAGS +! dnl -Werror is GCC only, others like Solaris Studio might not like it +! if test "$GCC" = yes; then +! CFLAGS="$CFLAGS $X_CFLAGS -Werror" +! else +! CFLAGS="$CFLAGS $X_CFLAGS" +! fi + AC_TRY_COMPILE([#include ], , + AC_MSG_RESULT(no), + CFLAGS="$CFLAGS -Wno-implicit-int" +*** ../vim-7.3.922/src/auto/configure 2013-04-15 14:44:53.000000000 +0200 +--- src/auto/configure 2013-05-04 04:34:50.000000000 +0200 +*************** +*** 7656,7662 **** + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if X11 header files implicitly declare return values" >&5 + $as_echo_n "checking if X11 header files implicitly declare return values... " >&6; } + cflags_save=$CFLAGS +! CFLAGS="$CFLAGS $X_CFLAGS -Werror" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + #include +--- 7656,7666 ---- + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if X11 header files implicitly declare return values" >&5 + $as_echo_n "checking if X11 header files implicitly declare return values... " >&6; } + cflags_save=$CFLAGS +! if test "$GCC" = yes; then +! CFLAGS="$CFLAGS $X_CFLAGS -Werror" +! else +! CFLAGS="$CFLAGS $X_CFLAGS" +! fi + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + #include +*** ../vim-7.3.922/src/version.c 2013-05-04 04:11:01.000000000 +0200 +--- src/version.c 2013-05-04 04:39:13.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 923, + /**/ + +-- +GALAHAD: Camelot ... +LAUNCELOT: Camelot ... +GAWAIN: It's only a model. + "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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.924 b/7.3.924 new file mode 100644 index 0000000..c743c3e --- /dev/null +++ b/7.3.924 @@ -0,0 +1,1628 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.924 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.924 +Problem: Python interface can't easily access options. +Solution: Add vim.options, vim.window.options and vim.buffer.options. (ZyX) +Files: runtime/doc/if_pyth.txt, src/eval.c, src/if_py_both.h, + src/if_python.c, src/if_python3.c, src/option.c, + src/proto/eval.pro, src/proto/option.pro, src/testdir/test86.in, + src/testdir/test86.ok, src/testdir/test87.in, + src/testdir/test87.ok, src/vim.h + + +*** ../vim-7.3.923/runtime/doc/if_pyth.txt 2013-04-24 14:06:42.000000000 +0200 +--- runtime/doc/if_pyth.txt 2013-05-06 03:39:13.000000000 +0200 +*************** +*** 243,248 **** +--- 243,260 ---- + vim (|v:|) variables respectively. Identical to `vim.bindeval("g:")`, + but faster. + ++ vim.options *python-options* ++ Object partly supporting mapping protocol (supports setting and ++ getting items) providing a read-write access to global options. ++ Note: unlike |:set| this provides access only to global options. You ++ cannot use this object to obtain or set local options' values or ++ access local-only options in any fashion. Raises KeyError if no global ++ option with such name exists (i.e. does not raise KeyError for ++ |global-local| options and global only options, but does for window- ++ and buffer-local ones). Use |python-buffer| objects to access to ++ buffer-local options and |python-window| objects to access to ++ window-local options. ++ + Output from Python *python-output* + Vim displays all Python code output in the Vim message area. Normal + output appears as information messages, and error output appears as +*************** +*** 283,288 **** +--- 295,311 ---- + line numbers, which start from 1. This is particularly relevant when dealing + with marks (see below) which use vim line numbers. + ++ The buffer object attributes are: ++ b.vars Dictionary-like object used to access ++ |buffer-variable|s. ++ b.options Mapping object (supports item getting, setting and ++ deleting) that provides access to buffer-local options ++ and buffer-local values of |global-local| options. Use ++ |python-window|.options if option is window-local, ++ this object will raise KeyError. If option is ++ |global-local| and local value is missing getting it ++ will return None. ++ + The buffer object methods are: + b.append(str) Append a line to the buffer + b.append(str, nr) Idem, below line "nr" +*************** +*** 313,318 **** +--- 336,343 ---- + :py (row,col) = b.mark('a') # named mark + :py r = b.range(1,5) # a sub-range of the buffer + :py b.vars["foo"] = "bar" # assign b:foo variable ++ :py b.options["ff"] = "dos" # set fileformat ++ :py del b.options["ar"] # same as :set autoread< + + ============================================================================== + 4. Range objects *python-range* +*************** +*** 363,368 **** +--- 388,401 ---- + vars (read-only) The window |w:| variables. Attribute is + unassignable, but you can change window + variables this way ++ options (read-only) The window-local options. Attribute is ++ unassignable, but you can change window ++ options this way. Provides access only to ++ window-local options, for buffer-local use ++ |python-buffer| and for global ones use ++ |python-options|. If option is |global-local| ++ and local value is missing getting it will ++ return None. + The height attribute is writable only if the screen is split horizontally. + The width attribute is writable only if the screen is split vertically. + +*** ../vim-7.3.923/src/eval.c 2013-04-24 14:06:42.000000000 +0200 +--- src/eval.c 2013-05-06 03:42:00.000000000 +0200 +*************** +*** 16643,16651 **** +--- 16643,16690 ---- + setwinvar(argvars, rettv, 0); + } + ++ int ++ switch_win(save_curwin, save_curtab, win, tp) ++ win_T **save_curwin; ++ tabpage_T **save_curtab; ++ win_T *win; ++ tabpage_T *tp; ++ { ++ #ifdef FEAT_WINDOWS ++ /* set curwin to be our win, temporarily */ ++ *save_curwin = curwin; ++ *save_curtab = curtab; ++ goto_tabpage_tp(tp, TRUE); ++ if (!win_valid(win)) ++ return FAIL; ++ curwin = win; ++ curbuf = curwin->w_buffer; ++ #endif ++ return OK; ++ } ++ ++ void ++ restore_win(save_curwin, save_curtab) ++ win_T *save_curwin; ++ tabpage_T *save_curtab; ++ { ++ #ifdef FEAT_WINDOWS ++ /* Restore current tabpage and window, if still valid (autocomands can ++ * make them invalid). */ ++ if (valid_tabpage(save_curtab)) ++ goto_tabpage_tp(save_curtab, TRUE); ++ if (win_valid(save_curwin)) ++ { ++ curwin = save_curwin; ++ curbuf = curwin->w_buffer; ++ } ++ #endif ++ } ++ + /* + * "setwinvar()" and "settabwinvar()" functions + */ ++ + static void + setwinvar(argvars, rettv, off) + typval_T *argvars; +*************** +*** 16678,16691 **** + if (win != NULL && varname != NULL && varp != NULL) + { + #ifdef FEAT_WINDOWS +! /* set curwin to be our win, temporarily */ +! save_curwin = curwin; +! save_curtab = curtab; +! goto_tabpage_tp(tp, TRUE); +! if (!win_valid(win)) + return; +- curwin = win; +- curbuf = curwin->w_buffer; + #endif + + if (*varname == '&') +--- 16717,16724 ---- + if (win != NULL && varname != NULL && varp != NULL) + { + #ifdef FEAT_WINDOWS +! if (switch_win(&save_curwin, &save_curtab, win, tp) == FAIL) + return; + #endif + + if (*varname == '&') +*************** +*** 16713,16727 **** + } + + #ifdef FEAT_WINDOWS +! /* Restore current tabpage and window, if still valid (autocomands can +! * make them invalid). */ +! if (valid_tabpage(save_curtab)) +! goto_tabpage_tp(save_curtab, TRUE); +! if (win_valid(save_curwin)) +! { +! curwin = save_curwin; +! curbuf = curwin->w_buffer; +! } + #endif + } + } +--- 16746,16752 ---- + } + + #ifdef FEAT_WINDOWS +! restore_win(save_curwin, save_curtab); + #endif + } + } +*** ../vim-7.3.923/src/if_py_both.h 2013-04-24 14:06:42.000000000 +0200 +--- src/if_py_both.h 2013-05-06 03:47:38.000000000 +0200 +*************** +*** 1497,1502 **** +--- 1497,1775 ---- + { NULL, NULL, 0, NULL } + }; + ++ /* ++ * Options object ++ */ ++ ++ static PyTypeObject OptionsType; ++ ++ typedef int (*checkfun)(void *); ++ ++ typedef struct ++ { ++ PyObject_HEAD ++ int opt_type; ++ void *from; ++ checkfun Check; ++ PyObject *fromObj; ++ } OptionsObject; ++ ++ static PyObject * ++ OptionsItem(OptionsObject *this, PyObject *keyObject) ++ { ++ char_u *key; ++ int flags; ++ long numval; ++ char_u *stringval; ++ ++ if (this->Check(this->from)) ++ return NULL; ++ ++ DICTKEY_DECL ++ ++ DICTKEY_GET_NOTEMPTY(NULL) ++ ++ flags = get_option_value_strict(key, &numval, &stringval, ++ this->opt_type, this->from); ++ ++ DICTKEY_UNREF ++ ++ if (flags == 0) ++ { ++ PyErr_SetString(PyExc_KeyError, "Option does not exist in given scope"); ++ return NULL; ++ } ++ ++ if (flags & SOPT_UNSET) ++ { ++ Py_INCREF(Py_None); ++ return Py_None; ++ } ++ else if (flags & SOPT_BOOL) ++ { ++ PyObject *r; ++ r = numval ? Py_True : Py_False; ++ Py_INCREF(r); ++ return r; ++ } ++ else if (flags & SOPT_NUM) ++ return PyInt_FromLong(numval); ++ else if (flags & SOPT_STRING) ++ { ++ if (stringval) ++ return PyBytes_FromString((char *) stringval); ++ else ++ { ++ PyErr_SetString(PyExc_ValueError, "Unable to get option value"); ++ return NULL; ++ } ++ } ++ else ++ { ++ PyErr_SetVim("Internal error: unknown option type. Should not happen"); ++ return NULL; ++ } ++ } ++ ++ static int ++ set_option_value_for(key, numval, stringval, opt_flags, opt_type, from) ++ char_u *key; ++ int numval; ++ char_u *stringval; ++ int opt_flags; ++ int opt_type; ++ void *from; ++ { ++ win_T *save_curwin; ++ tabpage_T *save_curtab; ++ aco_save_T aco; ++ int r = 0; ++ ++ switch (opt_type) ++ { ++ case SREQ_WIN: ++ if (switch_win(&save_curwin, &save_curtab, (win_T *) from, curtab) ++ == FAIL) ++ { ++ PyErr_SetVim("Problem while switching windows."); ++ return -1; ++ } ++ set_option_value(key, numval, stringval, opt_flags); ++ restore_win(save_curwin, save_curtab); ++ break; ++ case SREQ_BUF: ++ aucmd_prepbuf(&aco, (buf_T *) from); ++ set_option_value(key, numval, stringval, opt_flags); ++ aucmd_restbuf(&aco); ++ break; ++ case SREQ_GLOBAL: ++ set_option_value(key, numval, stringval, opt_flags); ++ break; ++ } ++ return r; ++ } ++ ++ static int ++ OptionsAssItem(OptionsObject *this, PyObject *keyObject, PyObject *valObject) ++ { ++ char_u *key; ++ int flags; ++ int opt_flags; ++ int r = 0; ++ ++ if (this->Check(this->from)) ++ return -1; ++ ++ DICTKEY_DECL ++ ++ DICTKEY_GET_NOTEMPTY(-1) ++ ++ flags = get_option_value_strict(key, NULL, NULL, ++ this->opt_type, this->from); ++ ++ DICTKEY_UNREF ++ ++ if (flags == 0) ++ { ++ PyErr_SetString(PyExc_KeyError, "Option does not exist in given scope"); ++ return -1; ++ } ++ ++ if (valObject == NULL) ++ { ++ if (this->opt_type == SREQ_GLOBAL) ++ { ++ PyErr_SetString(PyExc_ValueError, "Unable to unset global option"); ++ return -1; ++ } ++ else if (!(flags & SOPT_GLOBAL)) ++ { ++ PyErr_SetString(PyExc_ValueError, "Unable to unset option without " ++ "global value"); ++ return -1; ++ } ++ else ++ { ++ unset_global_local_option(key, this->from); ++ return 0; ++ } ++ } ++ ++ opt_flags = (this->opt_type ? OPT_LOCAL : OPT_GLOBAL); ++ ++ if (flags & SOPT_BOOL) ++ { ++ if (!PyBool_Check(valObject)) ++ { ++ PyErr_SetString(PyExc_ValueError, "Object must be boolean"); ++ return -1; ++ } ++ ++ r = set_option_value_for(key, (valObject == Py_True), NULL, opt_flags, ++ this->opt_type, this->from); ++ } ++ else if (flags & SOPT_NUM) ++ { ++ int val; ++ ++ #if PY_MAJOR_VERSION < 3 ++ if (PyInt_Check(valObject)) ++ val = PyInt_AsLong(valObject); ++ else ++ #endif ++ if (PyLong_Check(valObject)) ++ val = PyLong_AsLong(valObject); ++ else ++ { ++ PyErr_SetString(PyExc_ValueError, "Object must be integer"); ++ return -1; ++ } ++ ++ r = set_option_value_for(key, val, NULL, opt_flags, ++ this->opt_type, this->from); ++ } ++ else ++ { ++ char_u *val; ++ if (PyBytes_Check(valObject)) ++ { ++ ++ if (PyString_AsStringAndSize(valObject, (char **) &val, NULL) == -1) ++ return -1; ++ if (val == NULL) ++ return -1; ++ ++ val = vim_strsave(val); ++ } ++ else if (PyUnicode_Check(valObject)) ++ { ++ PyObject *bytes; ++ ++ bytes = PyUnicode_AsEncodedString(valObject, (char *)ENC_OPT, NULL); ++ if (bytes == NULL) ++ return -1; ++ ++ if(PyString_AsStringAndSize(bytes, (char **) &val, NULL) == -1) ++ return -1; ++ if (val == NULL) ++ return -1; ++ ++ val = vim_strsave(val); ++ Py_XDECREF(bytes); ++ } ++ else ++ { ++ PyErr_SetString(PyExc_ValueError, "Object must be string"); ++ return -1; ++ } ++ ++ r = set_option_value_for(key, 0, val, opt_flags, ++ this->opt_type, this->from); ++ vim_free(val); ++ } ++ ++ return r; ++ } ++ ++ static int ++ dummy_check(void *arg UNUSED) ++ { ++ return 0; ++ } ++ ++ static PyObject * ++ OptionsNew(int opt_type, void *from, checkfun Check, PyObject *fromObj) ++ { ++ OptionsObject *self; ++ ++ self = PyObject_NEW(OptionsObject, &OptionsType); ++ if (self == NULL) ++ return NULL; ++ ++ self->opt_type = opt_type; ++ self->from = from; ++ self->Check = Check; ++ self->fromObj = fromObj; ++ if (fromObj) ++ Py_INCREF(fromObj); ++ ++ return (PyObject *)(self); ++ } ++ ++ static void ++ OptionsDestructor(PyObject *self) ++ { ++ if (((OptionsObject *)(self))->fromObj) ++ Py_DECREF(((OptionsObject *)(self))->fromObj); ++ DESTRUCTOR_FINISH(self); ++ } ++ ++ static PyMappingMethods OptionsAsMapping = { ++ (lenfunc) NULL, ++ (binaryfunc) OptionsItem, ++ (objobjargproc) OptionsAssItem, ++ }; ++ + #define INVALID_WINDOW_VALUE ((win_T *)(-1)) + + static int +*************** +*** 1534,1541 **** + #endif + else if (strcmp(name, "vars") == 0) + return DictionaryNew(this->win->w_vars); + else if (strcmp(name,"__members__") == 0) +! return Py_BuildValue("[ssss]", "buffer", "cursor", "height", "vars"); + else + return NULL; + } +--- 1807,1818 ---- + #endif + else if (strcmp(name, "vars") == 0) + return DictionaryNew(this->win->w_vars); ++ else if (strcmp(name, "options") == 0) ++ return OptionsNew(SREQ_WIN, this->win, (checkfun) CheckWindow, ++ (PyObject *) this); + else if (strcmp(name,"__members__") == 0) +! return Py_BuildValue("[sssss]", "buffer", "cursor", "height", "vars", +! "options"); + else + return NULL; + } +*************** +*** 2499,2506 **** + return Py_BuildValue(Py_ssize_t_fmt, this->buf->b_fnum); + else if (strcmp(name, "vars") == 0) + return DictionaryNew(this->buf->b_vars); + else if (strcmp(name,"__members__") == 0) +! return Py_BuildValue("[sss]", "name", "number", "vars"); + else + return NULL; + } +--- 2776,2786 ---- + return Py_BuildValue(Py_ssize_t_fmt, this->buf->b_fnum); + else if (strcmp(name, "vars") == 0) + return DictionaryNew(this->buf->b_vars); ++ else if (strcmp(name, "options") == 0) ++ return OptionsNew(SREQ_BUF, this->buf, (checkfun) CheckBuffer, ++ (PyObject *) this); + else if (strcmp(name,"__members__") == 0) +! return Py_BuildValue("[ssss]", "name", "number", "vars", "options"); + else + return NULL; + } +*************** +*** 3121,3126 **** +--- 3401,3414 ---- + FunctionType.tp_getattr = FunctionGetattr; + #endif + ++ vim_memset(&OptionsType, 0, sizeof(OptionsType)); ++ OptionsType.tp_name = "vim.options"; ++ OptionsType.tp_basicsize = sizeof(OptionsObject); ++ OptionsType.tp_flags = Py_TPFLAGS_DEFAULT; ++ OptionsType.tp_doc = "object for manipulating options"; ++ OptionsType.tp_as_mapping = &OptionsAsMapping; ++ OptionsType.tp_dealloc = OptionsDestructor; ++ + #if PY_MAJOR_VERSION >= 3 + vim_memset(&vimmodule, 0, sizeof(vimmodule)); + vimmodule.m_name = "vim"; +*** ../vim-7.3.923/src/if_python.c 2013-04-24 14:06:42.000000000 +0200 +--- src/if_python.c 2013-05-06 03:36:46.000000000 +0200 +*************** +*** 1341,1346 **** +--- 1341,1347 ---- + PyType_Ready(&BufListType); + PyType_Ready(&WinListType); + PyType_Ready(&CurrentType); ++ PyType_Ready(&OptionsType); + + /* Set sys.argv[] to avoid a crash in warn(). */ + PySys_SetArgv(1, argv); +*************** +*** 1360,1365 **** +--- 1361,1369 ---- + tmp = DictionaryNew(&vimvardict); + PyDict_SetItemString(dict, "vvars", tmp); + Py_DECREF(tmp); ++ tmp = OptionsNew(SREQ_GLOBAL, NULL, dummy_check, NULL); ++ PyDict_SetItemString(dict, "options", tmp); ++ Py_DECREF(tmp); + PyDict_SetItemString(dict, "VAR_LOCKED", PyInt_FromLong(VAR_LOCKED)); + PyDict_SetItemString(dict, "VAR_FIXED", PyInt_FromLong(VAR_FIXED)); + PyDict_SetItemString(dict, "VAR_SCOPE", PyInt_FromLong(VAR_SCOPE)); +*** ../vim-7.3.923/src/if_python3.c 2013-04-24 14:06:42.000000000 +0200 +--- src/if_python3.c 2013-05-06 03:36:46.000000000 +0200 +*************** +*** 1628,1633 **** +--- 1628,1634 ---- + PyType_Ready(&DictionaryType); + PyType_Ready(&ListType); + PyType_Ready(&FunctionType); ++ PyType_Ready(&OptionsType); + + /* Set sys.argv[] to avoid a crash in warn(). */ + PySys_SetArgv(1, argv); +*************** +*** 1649,1654 **** +--- 1650,1657 ---- + + PyModule_AddObject(mod, "vars", DictionaryNew(&globvardict)); + PyModule_AddObject(mod, "vvars", DictionaryNew(&vimvardict)); ++ PyModule_AddObject(mod, "options", ++ OptionsNew(SREQ_GLOBAL, NULL, dummy_check, NULL)); + + #define ADD_INT_CONSTANT(name, value) \ + tmp = PyLong_FromLong(value); \ +*** ../vim-7.3.923/src/option.c 2013-03-19 16:46:59.000000000 +0100 +--- src/option.c 2013-05-06 03:47:31.000000000 +0200 +*************** +*** 8820,8825 **** +--- 8820,8963 ---- + } + #endif + ++ #if defined(FEAT_PYTHON) || defined(FEAT_PYTHON3) ++ /* ++ * Returns the option attributes and its value. Unlike the above function it ++ * will return either global value or local value of the option depending on ++ * what was requested, but it will never return global value if it was ++ * requested to return local one and vice versa. Neither it will return ++ * buffer-local value if it was requested to return window-local one. ++ * ++ * Pretends that option is absent if it is not present in the requested scope ++ * (i.e. has no global, window-local or buffer-local value depending on ++ * opt_type). Uses ++ * ++ * Returned flags: ++ * 0 hidden or unknown option ++ * see SOPT_* in vim.h for other flags ++ * ++ * Possible opt_type values: see SREQ_* in vim.h ++ */ ++ int ++ get_option_value_strict(name, numval, stringval, opt_type, from) ++ char_u *name; ++ long *numval; ++ char_u **stringval; /* NULL when only obtaining attributes */ ++ int opt_type; ++ void *from; ++ { ++ int opt_idx; ++ char_u *varp; ++ struct vimoption *p; ++ int r = 0; ++ ++ opt_idx = findoption(name); ++ if (opt_idx < 0) ++ return 0; ++ ++ p = &(options[opt_idx]); ++ ++ /* Hidden option */ ++ if (p->var == NULL) ++ return 0; ++ ++ if (p->flags & P_BOOL) ++ r |= SOPT_BOOL; ++ else if (p->flags & P_NUM) ++ r |= SOPT_NUM; ++ else if (p->flags & P_STRING) ++ r |= SOPT_STRING; ++ ++ if (p->indir == PV_NONE) ++ { ++ if (opt_type == SREQ_GLOBAL) ++ r |= SOPT_GLOBAL; ++ else ++ return 0; /* Did not request global-only option */ ++ } ++ else ++ { ++ if (p->indir & PV_BOTH) ++ r |= SOPT_GLOBAL; ++ else if (opt_type == SREQ_GLOBAL) ++ return 0; /* Requested global option */ ++ ++ if (p->indir & PV_WIN) ++ { ++ if (opt_type == SREQ_BUF) ++ return 0; /* Did not request window-local option */ ++ else ++ r |= SOPT_WIN; ++ } ++ else if (p->indir & PV_BUF) ++ { ++ if (opt_type == SREQ_WIN) ++ return 0; /* Did not request buffer-local option */ ++ else ++ r |= SOPT_BUF; ++ } ++ } ++ ++ if (stringval == NULL) ++ return r; ++ ++ if (opt_type == SREQ_GLOBAL) ++ varp = p->var; ++ else ++ { ++ if (opt_type == SREQ_BUF) ++ { ++ /* Special case: 'modified' is b_changed, but we also want to ++ * consider it set when 'ff' or 'fenc' changed. */ ++ if (p->indir == PV_MOD) ++ { ++ *numval = bufIsChanged((buf_T *) from); ++ varp = NULL; ++ } ++ #ifdef FEAT_CRYPT ++ else if (p->indir == PV_KEY) ++ { ++ /* never return the value of the crypt key */ ++ *stringval = NULL; ++ varp = NULL; ++ } ++ #endif ++ else ++ { ++ aco_save_T aco; ++ aucmd_prepbuf(&aco, (buf_T *) from); ++ varp = get_varp(p); ++ aucmd_restbuf(&aco); ++ } ++ } ++ else if (opt_type == SREQ_WIN) ++ { ++ win_T *save_curwin; ++ save_curwin = curwin; ++ curwin = (win_T *) from; ++ curbuf = curwin->w_buffer; ++ varp = get_varp(p); ++ curwin = save_curwin; ++ curbuf = curwin->w_buffer; ++ } ++ if (varp == p->var) ++ return (r | SOPT_UNSET); ++ } ++ ++ if (varp != NULL) ++ { ++ if (p->flags & P_STRING) ++ *stringval = vim_strsave(*(char_u **)(varp)); ++ else if (p->flags & P_NUM) ++ *numval = *(long *) varp; ++ else ++ *numval = *(int *)varp; ++ } ++ ++ return r; ++ } ++ #endif ++ + /* + * Set the value of option "name". + * Use "string" for string options, use "number" for other options. +*************** +*** 9557,9562 **** +--- 9695,9781 ---- + } + + /* ++ * Unset local option value, similar to ":set opt<". ++ */ ++ ++ void ++ unset_global_local_option(name, from) ++ char_u *name; ++ void *from; ++ { ++ struct vimoption *p; ++ int opt_idx; ++ ++ buf_T *buf = (buf_T *) from; ++ win_T *win = (win_T *) from; ++ ++ opt_idx = findoption(name); ++ p = &(options[opt_idx]); ++ ++ switch ((int)p->indir) ++ { ++ /* global option with local value: use local value if it's been set */ ++ case PV_EP: ++ *buf->b_p_ep = NUL; ++ break; ++ case PV_KP: ++ *buf->b_p_kp = NUL; ++ break; ++ case PV_PATH: ++ *buf->b_p_path = NUL; ++ break; ++ case PV_AR: ++ buf->b_p_ar = -1; ++ break; ++ case PV_TAGS: ++ *buf->b_p_tags = NUL; ++ break; ++ #ifdef FEAT_FIND_ID ++ case PV_DEF: ++ *buf->b_p_def = NUL; ++ break; ++ case PV_INC: ++ *buf->b_p_inc = NUL; ++ break; ++ #endif ++ #ifdef FEAT_INS_EXPAND ++ case PV_DICT: ++ *buf->b_p_dict = NUL; ++ break; ++ case PV_TSR: ++ *buf->b_p_tsr = NUL; ++ break; ++ #endif ++ #ifdef FEAT_QUICKFIX ++ case PV_EFM: ++ *buf->b_p_efm = NUL; ++ break; ++ case PV_GP: ++ *buf->b_p_gp = NUL; ++ break; ++ case PV_MP: ++ *buf->b_p_mp = NUL; ++ break; ++ #endif ++ #if defined(FEAT_BEVAL) && defined(FEAT_EVAL) ++ case PV_BEXPR: ++ *buf->b_p_bexpr = NUL; ++ break; ++ #endif ++ #if defined(FEAT_CRYPT) ++ case PV_CM: ++ *buf->b_p_cm = NUL; ++ break; ++ #endif ++ #ifdef FEAT_STL_OPT ++ case PV_STL: ++ *win->w_p_stl = NUL; ++ break; ++ #endif ++ } ++ } ++ ++ /* + * Get pointer to option variable, depending on local or global scope. + */ + static char_u * +*** ../vim-7.3.923/src/proto/eval.pro 2013-04-15 12:27:30.000000000 +0200 +--- src/proto/eval.pro 2013-05-06 03:36:46.000000000 +0200 +*************** +*** 125,128 **** +--- 125,130 ---- + void ex_oldfiles __ARGS((exarg_T *eap)); + int modify_fname __ARGS((char_u *src, int *usedlen, char_u **fnamep, char_u **bufp, int *fnamelen)); + char_u *do_string_sub __ARGS((char_u *str, char_u *pat, char_u *sub, char_u *flags)); ++ int switch_win __ARGS((win_T **, tabpage_T **, win_T *, tabpage_T *)); ++ void restore_win __ARGS((win_T *, tabpage_T *)); + /* vim: set ft=c : */ +*** ../vim-7.3.923/src/proto/option.pro 2013-01-17 17:01:57.000000000 +0100 +--- src/proto/option.pro 2013-05-06 03:47:07.000000000 +0200 +*************** +*** 22,27 **** +--- 22,28 ---- + char_u *check_colorcolumn __ARGS((win_T *wp)); + char_u *check_stl_option __ARGS((char_u *s)); + int get_option_value __ARGS((char_u *name, long *numval, char_u **stringval, int opt_flags)); ++ int get_option_value_strict __ARGS((char_u *name, long *numval, char_u **stringval, int opt_type, void *from)); + void set_option_value __ARGS((char_u *name, long number, char_u *string, int opt_flags)); + char_u *get_term_code __ARGS((char_u *tname)); + char_u *get_highlight_default __ARGS((void)); +*************** +*** 33,38 **** +--- 34,40 ---- + void free_one_termoption __ARGS((char_u *var)); + void set_term_defaults __ARGS((void)); + void comp_col __ARGS((void)); ++ void unset_global_local_option __ARGS((char_u *name, void *from)); + char_u *get_equalprg __ARGS((void)); + void win_copy_options __ARGS((win_T *wp_from, win_T *wp_to)); + void copy_winopt __ARGS((winopt_T *from, winopt_T *to)); +*** ../vim-7.3.923/src/testdir/test86.in 2013-04-24 14:06:42.000000000 +0200 +--- src/testdir/test86.in 2013-05-06 03:36:46.000000000 +0200 +*************** +*** 359,364 **** +--- 359,483 ---- + :put =pyeval('vim.vars[''foo'']') + :put =pyeval('vim.current.window.vars[''abc'']') + :put =pyeval('vim.current.buffer.vars[''baz'']') ++ :" ++ :" Options ++ :" paste: boolean, global ++ :" previewheight number, global ++ :" operatorfunc: string, global ++ :" number: boolean, window-local ++ :" numberwidth: number, window-local ++ :" colorcolumn: string, window-local ++ :" statusline: string, window-local/global ++ :" autoindent: boolean, buffer-local ++ :" iminsert: number, buffer-local ++ :" omnifunc: string, buffer-local ++ :" preserveindent: boolean, buffer-local/global ++ :" path: string, buffer-local/global ++ :let g:bufs=[bufnr('%')] ++ :new ++ :let g:bufs+=[bufnr('%')] ++ :vnew ++ :let g:bufs+=[bufnr('%')] ++ :wincmd j ++ :vnew ++ :let g:bufs+=[bufnr('%')] ++ :wincmd l ++ :fun RecVars(opt) ++ : let gval =string(eval('&g:'.a:opt)) ++ : let wvals=join(map(range(1, 4), 'v:val.":".string(getwinvar(v:val, "&".a:opt))')) ++ : let bvals=join(map(copy(g:bufs), 'v:val.":".string(getbufvar(v:val, "&".a:opt))')) ++ : put =' G: '.gval ++ : put =' W: '.wvals ++ : put =' B: '.wvals ++ :endfun ++ py << EOF ++ def e(s, g=globals(), l=locals()): ++ try: ++ exec(s, g, l) ++ except Exception as e: ++ vim.command('throw ' + repr(e.__class__.__name__)) ++ ++ def ev(s, g=globals(), l=locals()): ++ try: ++ return eval(s, g, l) ++ except Exception as e: ++ vim.command('throw ' + repr(e.__class__.__name__)) ++ return 0 ++ EOF ++ :function E(s) ++ : python e(vim.eval('a:s')) ++ :endfunction ++ :function Ev(s) ++ : return pyeval('ev(vim.eval("a:s"))') ++ :endfunction ++ :py gopts1=vim.options ++ :py wopts1=vim.windows[2].options ++ :py wopts2=vim.windows[0].options ++ :py wopts3=vim.windows[1].options ++ :py bopts1=vim.buffers[vim.bindeval("g:bufs")[2]].options ++ :py bopts2=vim.buffers[vim.bindeval("g:bufs")[1]].options ++ :py bopts3=vim.buffers[vim.bindeval("g:bufs")[0]].options ++ :let lst=[] ++ :let lst+=[['paste', 1, 0, 1, 2, 1, 1, 0 ]] ++ :let lst+=[['previewheight', 5, 1, 6, 'a', 0, 1, 0 ]] ++ :let lst+=[['operatorfunc', 'A', 'B', 'C', 2, 0, 1, 0 ]] ++ :let lst+=[['number', 0, 1, 1, 0, 1, 0, 1 ]] ++ :let lst+=[['numberwidth', 2, 3, 5, -100, 0, 0, 1 ]] ++ :let lst+=[['colorcolumn', '+1', '+2', '+3', 'abc', 0, 0, 1 ]] ++ :let lst+=[['statusline', '1', '2', '4', 0, 0, 1, 1 ]] ++ :let lst+=[['autoindent', 0, 1, 1, 2, 1, 0, 2 ]] ++ :let lst+=[['iminsert', 0, 2, 1, 3, 0, 0, 2 ]] ++ :let lst+=[['omnifunc', 'A', 'B', 'C', 1, 0, 0, 2 ]] ++ :let lst+=[['preserveindent', 0, 1, 1, 2, 1, 1, 2 ]] ++ :let lst+=[['path', '.,,', ',,', '.', 0, 0, 1, 2 ]] ++ :for [oname, oval1, oval2, oval3, invval, bool, global, local] in lst ++ : py oname=vim.eval('oname') ++ : py oval1=vim.bindeval('oval1') ++ : py oval2=vim.bindeval('oval2') ++ : py oval3=vim.bindeval('oval3') ++ : if invval is 0 || invval is 1 ++ : py invval=bool(vim.bindeval('invval')) ++ : else ++ : py invval=vim.bindeval('invval') ++ : endif ++ : if bool ++ : py oval1=bool(oval1) ++ : py oval2=bool(oval2) ++ : py oval3=bool(oval3) ++ : endif ++ : put ='>>> '.oname ++ : for v in ['gopts1', 'wopts1', 'bopts1'] ++ : try ++ : put =' p/'.v.': '.Ev('repr('.v.'['''.oname.'''])') ++ : catch ++ : put =' p/'.v.'! '.v:exception ++ : endtry ++ : try ++ : call E(v.'["'.oname.'"]=invval') ++ : catch ++ : put =' inv: '.string(invval).'! '.v:exception ++ : endtry ++ : for vv in (v is# 'gopts1' ? [v] : [v, v[:-2].'2', v[:-2].'3']) ++ : let val=substitute(vv, '^.opts', 'oval', '') ++ : try ++ : call E(vv.'["'.oname.'"]='.val) ++ : catch ++ : put =' '.vv.'! '.v:exception ++ : endtry ++ : endfor ++ : endfor ++ : call RecVars(oname) ++ : for v in ['wopts3', 'bopts3'] ++ : try ++ : call E('del '.v.'["'.oname.'"]') ++ : catch ++ : put =' del '.v.'! '.v:exception ++ : endtry ++ : endfor ++ : call RecVars(oname) ++ endtry ++ :endfor ++ :only + :endfun + :" + :call Test() +*** ../vim-7.3.923/src/testdir/test86.ok 2013-04-24 14:06:42.000000000 +0200 +--- src/testdir/test86.ok 2013-05-06 03:36:46.000000000 +0200 +*************** +*** 80,82 **** +--- 80,308 ---- + bac + def + bar ++ >>> paste ++ p/gopts1: False ++ inv: 2! ValueError ++ p/wopts1! KeyError ++ inv: 2! KeyError ++ wopts1! KeyError ++ wopts2! KeyError ++ wopts3! KeyError ++ p/bopts1! KeyError ++ inv: 2! KeyError ++ bopts1! KeyError ++ bopts2! KeyError ++ bopts3! KeyError ++ G: 1 ++ W: 1:1 2:1 3:1 4:1 ++ B: 1:1 2:1 3:1 4:1 ++ del wopts3! KeyError ++ del bopts3! KeyError ++ G: 1 ++ W: 1:1 2:1 3:1 4:1 ++ B: 1:1 2:1 3:1 4:1 ++ >>> previewheight ++ p/gopts1: 12 ++ inv: 'a'! ValueError ++ p/wopts1! KeyError ++ inv: 'a'! KeyError ++ wopts1! KeyError ++ wopts2! KeyError ++ wopts3! KeyError ++ p/bopts1! KeyError ++ inv: 'a'! KeyError ++ bopts1! KeyError ++ bopts2! KeyError ++ bopts3! KeyError ++ G: 5 ++ W: 1:5 2:5 3:5 4:5 ++ B: 1:5 2:5 3:5 4:5 ++ del wopts3! KeyError ++ del bopts3! KeyError ++ G: 5 ++ W: 1:5 2:5 3:5 4:5 ++ B: 1:5 2:5 3:5 4:5 ++ >>> operatorfunc ++ p/gopts1: '' ++ inv: 2! ValueError ++ p/wopts1! KeyError ++ inv: 2! KeyError ++ wopts1! KeyError ++ wopts2! KeyError ++ wopts3! KeyError ++ p/bopts1! KeyError ++ inv: 2! KeyError ++ bopts1! KeyError ++ bopts2! KeyError ++ bopts3! KeyError ++ G: 'A' ++ W: 1:'A' 2:'A' 3:'A' 4:'A' ++ B: 1:'A' 2:'A' 3:'A' 4:'A' ++ del wopts3! KeyError ++ del bopts3! KeyError ++ G: 'A' ++ W: 1:'A' 2:'A' 3:'A' 4:'A' ++ B: 1:'A' 2:'A' 3:'A' 4:'A' ++ >>> number ++ p/gopts1! KeyError ++ inv: 0! KeyError ++ gopts1! KeyError ++ p/wopts1: False ++ p/bopts1! KeyError ++ inv: 0! KeyError ++ bopts1! KeyError ++ bopts2! KeyError ++ bopts3! KeyError ++ G: 0 ++ W: 1:1 2:1 3:0 4:0 ++ B: 1:1 2:1 3:0 4:0 ++ del wopts3! ValueError ++ del bopts3! KeyError ++ G: 0 ++ W: 1:1 2:1 3:0 4:0 ++ B: 1:1 2:1 3:0 4:0 ++ >>> numberwidth ++ p/gopts1! KeyError ++ inv: -100! KeyError ++ gopts1! KeyError ++ p/wopts1: 8 ++ p/bopts1! KeyError ++ inv: -100! KeyError ++ bopts1! KeyError ++ bopts2! KeyError ++ bopts3! KeyError ++ G: 8 ++ W: 1:3 2:5 3:2 4:8 ++ B: 1:3 2:5 3:2 4:8 ++ del wopts3! ValueError ++ del bopts3! KeyError ++ G: 8 ++ W: 1:3 2:5 3:2 4:8 ++ B: 1:3 2:5 3:2 4:8 ++ >>> colorcolumn ++ p/gopts1! KeyError ++ inv: 'abc'! KeyError ++ gopts1! KeyError ++ p/wopts1: '' ++ p/bopts1! KeyError ++ inv: 'abc'! KeyError ++ bopts1! KeyError ++ bopts2! KeyError ++ bopts3! KeyError ++ G: '' ++ W: 1:'+2' 2:'+3' 3:'+1' 4:'' ++ B: 1:'+2' 2:'+3' 3:'+1' 4:'' ++ del wopts3! ValueError ++ del bopts3! KeyError ++ G: '' ++ W: 1:'+2' 2:'+3' 3:'+1' 4:'' ++ B: 1:'+2' 2:'+3' 3:'+1' 4:'' ++ >>> statusline ++ p/gopts1: '' ++ inv: 0! ValueError ++ p/wopts1: None ++ inv: 0! ValueError ++ p/bopts1! KeyError ++ inv: 0! KeyError ++ bopts1! KeyError ++ bopts2! KeyError ++ bopts3! KeyError ++ G: '1' ++ W: 1:'2' 2:'4' 3:'1' 4:'1' ++ B: 1:'2' 2:'4' 3:'1' 4:'1' ++ del bopts3! KeyError ++ G: '1' ++ W: 1:'2' 2:'1' 3:'1' 4:'1' ++ B: 1:'2' 2:'1' 3:'1' 4:'1' ++ >>> autoindent ++ p/gopts1! KeyError ++ inv: 2! KeyError ++ gopts1! KeyError ++ p/wopts1! KeyError ++ inv: 2! KeyError ++ wopts1! KeyError ++ wopts2! KeyError ++ wopts3! KeyError ++ p/bopts1: False ++ inv: 2! ValueError ++ G: 0 ++ W: 1:1 2:1 3:0 4:0 ++ B: 1:1 2:1 3:0 4:0 ++ del wopts3! KeyError ++ del bopts3! ValueError ++ G: 0 ++ W: 1:1 2:1 3:0 4:0 ++ B: 1:1 2:1 3:0 4:0 ++ >>> iminsert ++ p/gopts1! KeyError ++ inv: 3! KeyError ++ gopts1! KeyError ++ p/wopts1! KeyError ++ inv: 3! KeyError ++ wopts1! KeyError ++ wopts2! KeyError ++ wopts3! KeyError ++ p/bopts1: 2 ++ G: 1 ++ W: 1:2 2:1 3:0 4:2 ++ B: 1:2 2:1 3:0 4:2 ++ del wopts3! KeyError ++ del bopts3! ValueError ++ G: 1 ++ W: 1:2 2:1 3:0 4:2 ++ B: 1:2 2:1 3:0 4:2 ++ >>> omnifunc ++ p/gopts1! KeyError ++ inv: 1! KeyError ++ gopts1! KeyError ++ p/wopts1! KeyError ++ inv: 1! KeyError ++ wopts1! KeyError ++ wopts2! KeyError ++ wopts3! KeyError ++ p/bopts1: '' ++ inv: 1! ValueError ++ G: '' ++ W: 1:'B' 2:'C' 3:'A' 4:'' ++ B: 1:'B' 2:'C' 3:'A' 4:'' ++ del wopts3! KeyError ++ del bopts3! ValueError ++ G: '' ++ W: 1:'B' 2:'C' 3:'A' 4:'' ++ B: 1:'B' 2:'C' 3:'A' 4:'' ++ >>> preserveindent ++ p/gopts1! KeyError ++ inv: 2! KeyError ++ gopts1! KeyError ++ p/wopts1! KeyError ++ inv: 2! KeyError ++ wopts1! KeyError ++ wopts2! KeyError ++ wopts3! KeyError ++ p/bopts1: False ++ inv: 2! ValueError ++ G: 0 ++ W: 1:1 2:1 3:0 4:0 ++ B: 1:1 2:1 3:0 4:0 ++ del wopts3! KeyError ++ del bopts3! ValueError ++ G: 0 ++ W: 1:1 2:1 3:0 4:0 ++ B: 1:1 2:1 3:0 4:0 ++ >>> path ++ p/gopts1: '.,/usr/include,,' ++ inv: 0! ValueError ++ p/wopts1! KeyError ++ inv: 0! KeyError ++ wopts1! KeyError ++ wopts2! KeyError ++ wopts3! KeyError ++ p/bopts1: None ++ inv: 0! ValueError ++ G: '.,,' ++ W: 1:',,' 2:'.' 3:'.,,' 4:'.,,' ++ B: 1:',,' 2:'.' 3:'.,,' 4:'.,,' ++ del wopts3! KeyError ++ G: '.,,' ++ W: 1:',,' 2:'.,,' 3:'.,,' 4:'.,,' ++ B: 1:',,' 2:'.,,' 3:'.,,' 4:'.,,' +*** ../vim-7.3.923/src/testdir/test87.in 2013-04-24 14:06:42.000000000 +0200 +--- src/testdir/test87.in 2013-05-06 03:36:46.000000000 +0200 +*************** +*** 328,333 **** +--- 328,452 ---- + :put =py3eval('vim.vars[''foo'']') + :put =py3eval('vim.current.window.vars[''abc'']') + :put =py3eval('vim.current.buffer.vars[''baz'']') ++ :" ++ :" Options ++ :" paste: boolean, global ++ :" previewheight number, global ++ :" operatorfunc: string, global ++ :" number: boolean, window-local ++ :" numberwidth: number, window-local ++ :" colorcolumn: string, window-local ++ :" statusline: string, window-local/global ++ :" autoindent: boolean, buffer-local ++ :" iminsert: number, buffer-local ++ :" omnifunc: string, buffer-local ++ :" preserveindent: boolean, buffer-local/global ++ :" path: string, buffer-local/global ++ :let g:bufs=[bufnr('%')] ++ :new ++ :let g:bufs+=[bufnr('%')] ++ :vnew ++ :let g:bufs+=[bufnr('%')] ++ :wincmd j ++ :vnew ++ :let g:bufs+=[bufnr('%')] ++ :wincmd l ++ :fun RecVars(opt) ++ : let gval =string(eval('&g:'.a:opt)) ++ : let wvals=join(map(range(1, 4), 'v:val.":".string(getwinvar(v:val, "&".a:opt))')) ++ : let bvals=join(map(copy(g:bufs), 'v:val.":".string(getbufvar(v:val, "&".a:opt))')) ++ : put =' G: '.gval ++ : put =' W: '.wvals ++ : put =' B: '.wvals ++ :endfun ++ py3 << EOF ++ def e(s, g=globals(), l=locals()): ++ try: ++ exec(s, g, l) ++ except Exception as e: ++ vim.command('throw ' + repr(e.__class__.__name__)) ++ ++ def ev(s, g=globals(), l=locals()): ++ try: ++ return eval(s, g, l) ++ except Exception as e: ++ vim.command('throw ' + repr(e.__class__.__name__)) ++ return 0 ++ EOF ++ :function E(s) ++ : python3 e(vim.eval('a:s')) ++ :endfunction ++ :function Ev(s) ++ : return py3eval('ev(vim.eval("a:s"))') ++ :endfunction ++ :py3 gopts1=vim.options ++ :py3 wopts1=vim.windows[2].options ++ :py3 wopts2=vim.windows[0].options ++ :py3 wopts3=vim.windows[1].options ++ :py3 bopts1=vim.buffers[vim.bindeval("g:bufs")[2]].options ++ :py3 bopts2=vim.buffers[vim.bindeval("g:bufs")[1]].options ++ :py3 bopts3=vim.buffers[vim.bindeval("g:bufs")[0]].options ++ :let lst=[] ++ :let lst+=[['paste', 1, 0, 1, 2, 1, 1, 0 ]] ++ :let lst+=[['previewheight', 5, 1, 6, 'a', 0, 1, 0 ]] ++ :let lst+=[['operatorfunc', 'A', 'B', 'C', 2, 0, 1, 0 ]] ++ :let lst+=[['number', 0, 1, 1, 0, 1, 0, 1 ]] ++ :let lst+=[['numberwidth', 2, 3, 5, -100, 0, 0, 1 ]] ++ :let lst+=[['colorcolumn', '+1', '+2', '+3', 'abc', 0, 0, 1 ]] ++ :let lst+=[['statusline', '1', '2', '4', 0, 0, 1, 1 ]] ++ :let lst+=[['autoindent', 0, 1, 1, 2, 1, 0, 2 ]] ++ :let lst+=[['iminsert', 0, 2, 1, 3, 0, 0, 2 ]] ++ :let lst+=[['omnifunc', 'A', 'B', 'C', 1, 0, 0, 2 ]] ++ :let lst+=[['preserveindent', 0, 1, 1, 2, 1, 1, 2 ]] ++ :let lst+=[['path', '.,,', ',,', '.', 0, 0, 1, 2 ]] ++ :for [oname, oval1, oval2, oval3, invval, bool, global, local] in lst ++ : py3 oname=vim.eval('oname') ++ : py3 oval1=vim.bindeval('oval1') ++ : py3 oval2=vim.bindeval('oval2') ++ : py3 oval3=vim.bindeval('oval3') ++ : if invval is 0 || invval is 1 ++ : py3 invval=bool(vim.bindeval('invval')) ++ : else ++ : py3 invval=vim.bindeval('invval') ++ : endif ++ : if bool ++ : py3 oval1=bool(oval1) ++ : py3 oval2=bool(oval2) ++ : py3 oval3=bool(oval3) ++ : endif ++ : put ='>>> '.oname ++ : for v in ['gopts1', 'wopts1', 'bopts1'] ++ : try ++ : put =' p/'.v.': '.Ev('repr('.v.'['''.oname.'''])') ++ : catch ++ : put =' p/'.v.'! '.v:exception ++ : endtry ++ : try ++ : call E(v.'["'.oname.'"]=invval') ++ : catch ++ : put =' inv: '.string(invval).'! '.v:exception ++ : endtry ++ : for vv in (v is# 'gopts1' ? [v] : [v, v[:-2].'2', v[:-2].'3']) ++ : let val=substitute(vv, '^.opts', 'oval', '') ++ : try ++ : call E(vv.'["'.oname.'"]='.val) ++ : catch ++ : put =' '.vv.'! '.v:exception ++ : endtry ++ : endfor ++ : endfor ++ : call RecVars(oname) ++ : for v in ['wopts3', 'bopts3'] ++ : try ++ : call E('del '.v.'["'.oname.'"]') ++ : catch ++ : put =' del '.v.'! '.v:exception ++ : endtry ++ : endfor ++ : call RecVars(oname) ++ endtry ++ :endfor ++ :only + :endfun + :" + :call Test() +*** ../vim-7.3.923/src/testdir/test87.ok 2013-04-24 14:06:42.000000000 +0200 +--- src/testdir/test87.ok 2013-05-06 03:36:46.000000000 +0200 +*************** +*** 69,71 **** +--- 69,297 ---- + bac + def + bar ++ >>> paste ++ p/gopts1: False ++ inv: 2! ValueError ++ p/wopts1! KeyError ++ inv: 2! KeyError ++ wopts1! KeyError ++ wopts2! KeyError ++ wopts3! KeyError ++ p/bopts1! KeyError ++ inv: 2! KeyError ++ bopts1! KeyError ++ bopts2! KeyError ++ bopts3! KeyError ++ G: 1 ++ W: 1:1 2:1 3:1 4:1 ++ B: 1:1 2:1 3:1 4:1 ++ del wopts3! KeyError ++ del bopts3! KeyError ++ G: 1 ++ W: 1:1 2:1 3:1 4:1 ++ B: 1:1 2:1 3:1 4:1 ++ >>> previewheight ++ p/gopts1: 12 ++ inv: 'a'! ValueError ++ p/wopts1! KeyError ++ inv: 'a'! KeyError ++ wopts1! KeyError ++ wopts2! KeyError ++ wopts3! KeyError ++ p/bopts1! KeyError ++ inv: 'a'! KeyError ++ bopts1! KeyError ++ bopts2! KeyError ++ bopts3! KeyError ++ G: 5 ++ W: 1:5 2:5 3:5 4:5 ++ B: 1:5 2:5 3:5 4:5 ++ del wopts3! KeyError ++ del bopts3! KeyError ++ G: 5 ++ W: 1:5 2:5 3:5 4:5 ++ B: 1:5 2:5 3:5 4:5 ++ >>> operatorfunc ++ p/gopts1: b'' ++ inv: 2! ValueError ++ p/wopts1! KeyError ++ inv: 2! KeyError ++ wopts1! KeyError ++ wopts2! KeyError ++ wopts3! KeyError ++ p/bopts1! KeyError ++ inv: 2! KeyError ++ bopts1! KeyError ++ bopts2! KeyError ++ bopts3! KeyError ++ G: 'A' ++ W: 1:'A' 2:'A' 3:'A' 4:'A' ++ B: 1:'A' 2:'A' 3:'A' 4:'A' ++ del wopts3! KeyError ++ del bopts3! KeyError ++ G: 'A' ++ W: 1:'A' 2:'A' 3:'A' 4:'A' ++ B: 1:'A' 2:'A' 3:'A' 4:'A' ++ >>> number ++ p/gopts1! KeyError ++ inv: 0! KeyError ++ gopts1! KeyError ++ p/wopts1: False ++ p/bopts1! KeyError ++ inv: 0! KeyError ++ bopts1! KeyError ++ bopts2! KeyError ++ bopts3! KeyError ++ G: 0 ++ W: 1:1 2:1 3:0 4:0 ++ B: 1:1 2:1 3:0 4:0 ++ del wopts3! ValueError ++ del bopts3! KeyError ++ G: 0 ++ W: 1:1 2:1 3:0 4:0 ++ B: 1:1 2:1 3:0 4:0 ++ >>> numberwidth ++ p/gopts1! KeyError ++ inv: -100! KeyError ++ gopts1! KeyError ++ p/wopts1: 8 ++ p/bopts1! KeyError ++ inv: -100! KeyError ++ bopts1! KeyError ++ bopts2! KeyError ++ bopts3! KeyError ++ G: 8 ++ W: 1:3 2:5 3:2 4:8 ++ B: 1:3 2:5 3:2 4:8 ++ del wopts3! ValueError ++ del bopts3! KeyError ++ G: 8 ++ W: 1:3 2:5 3:2 4:8 ++ B: 1:3 2:5 3:2 4:8 ++ >>> colorcolumn ++ p/gopts1! KeyError ++ inv: 'abc'! KeyError ++ gopts1! KeyError ++ p/wopts1: b'' ++ p/bopts1! KeyError ++ inv: 'abc'! KeyError ++ bopts1! KeyError ++ bopts2! KeyError ++ bopts3! KeyError ++ G: '' ++ W: 1:'+2' 2:'+3' 3:'+1' 4:'' ++ B: 1:'+2' 2:'+3' 3:'+1' 4:'' ++ del wopts3! ValueError ++ del bopts3! KeyError ++ G: '' ++ W: 1:'+2' 2:'+3' 3:'+1' 4:'' ++ B: 1:'+2' 2:'+3' 3:'+1' 4:'' ++ >>> statusline ++ p/gopts1: b'' ++ inv: 0! ValueError ++ p/wopts1: None ++ inv: 0! ValueError ++ p/bopts1! KeyError ++ inv: 0! KeyError ++ bopts1! KeyError ++ bopts2! KeyError ++ bopts3! KeyError ++ G: '1' ++ W: 1:'2' 2:'4' 3:'1' 4:'1' ++ B: 1:'2' 2:'4' 3:'1' 4:'1' ++ del bopts3! KeyError ++ G: '1' ++ W: 1:'2' 2:'1' 3:'1' 4:'1' ++ B: 1:'2' 2:'1' 3:'1' 4:'1' ++ >>> autoindent ++ p/gopts1! KeyError ++ inv: 2! KeyError ++ gopts1! KeyError ++ p/wopts1! KeyError ++ inv: 2! KeyError ++ wopts1! KeyError ++ wopts2! KeyError ++ wopts3! KeyError ++ p/bopts1: False ++ inv: 2! ValueError ++ G: 0 ++ W: 1:1 2:1 3:0 4:0 ++ B: 1:1 2:1 3:0 4:0 ++ del wopts3! KeyError ++ del bopts3! ValueError ++ G: 0 ++ W: 1:1 2:1 3:0 4:0 ++ B: 1:1 2:1 3:0 4:0 ++ >>> iminsert ++ p/gopts1! KeyError ++ inv: 3! KeyError ++ gopts1! KeyError ++ p/wopts1! KeyError ++ inv: 3! KeyError ++ wopts1! KeyError ++ wopts2! KeyError ++ wopts3! KeyError ++ p/bopts1: 2 ++ G: 1 ++ W: 1:2 2:1 3:0 4:2 ++ B: 1:2 2:1 3:0 4:2 ++ del wopts3! KeyError ++ del bopts3! ValueError ++ G: 1 ++ W: 1:2 2:1 3:0 4:2 ++ B: 1:2 2:1 3:0 4:2 ++ >>> omnifunc ++ p/gopts1! KeyError ++ inv: 1! KeyError ++ gopts1! KeyError ++ p/wopts1! KeyError ++ inv: 1! KeyError ++ wopts1! KeyError ++ wopts2! KeyError ++ wopts3! KeyError ++ p/bopts1: b'' ++ inv: 1! ValueError ++ G: '' ++ W: 1:'B' 2:'C' 3:'A' 4:'' ++ B: 1:'B' 2:'C' 3:'A' 4:'' ++ del wopts3! KeyError ++ del bopts3! ValueError ++ G: '' ++ W: 1:'B' 2:'C' 3:'A' 4:'' ++ B: 1:'B' 2:'C' 3:'A' 4:'' ++ >>> preserveindent ++ p/gopts1! KeyError ++ inv: 2! KeyError ++ gopts1! KeyError ++ p/wopts1! KeyError ++ inv: 2! KeyError ++ wopts1! KeyError ++ wopts2! KeyError ++ wopts3! KeyError ++ p/bopts1: False ++ inv: 2! ValueError ++ G: 0 ++ W: 1:1 2:1 3:0 4:0 ++ B: 1:1 2:1 3:0 4:0 ++ del wopts3! KeyError ++ del bopts3! ValueError ++ G: 0 ++ W: 1:1 2:1 3:0 4:0 ++ B: 1:1 2:1 3:0 4:0 ++ >>> path ++ p/gopts1: b'.,/usr/include,,' ++ inv: 0! ValueError ++ p/wopts1! KeyError ++ inv: 0! KeyError ++ wopts1! KeyError ++ wopts2! KeyError ++ wopts3! KeyError ++ p/bopts1: None ++ inv: 0! ValueError ++ G: '.,,' ++ W: 1:',,' 2:'.' 3:'.,,' 4:'.,,' ++ B: 1:',,' 2:'.' 3:'.,,' 4:'.,,' ++ del wopts3! KeyError ++ G: '.,,' ++ W: 1:',,' 2:'.,,' 3:'.,,' 4:'.,,' ++ B: 1:',,' 2:'.,,' 3:'.,,' 4:'.,,' +*** ../vim-7.3.923/src/vim.h 2013-03-19 16:46:59.000000000 +0100 +--- src/vim.h 2013-05-06 03:36:46.000000000 +0200 +*************** +*** 2230,2233 **** +--- 2230,2246 ---- + #define FILEINFO_READ_FAIL 2 /* CreateFile() failed */ + #define FILEINFO_INFO_FAIL 3 /* GetFileInformationByHandle() failed */ + ++ /* Return value from get_option_value_strict */ ++ #define SOPT_BOOL 0x01 /* Boolean option */ ++ #define SOPT_NUM 0x02 /* Number option */ ++ #define SOPT_STRING 0x04 /* String option */ ++ #define SOPT_GLOBAL 0x08 /* Option has global value */ ++ #define SOPT_WIN 0x10 /* Option has window-local value */ ++ #define SOPT_BUF 0x20 /* Option has buffer-local value */ ++ #define SOPT_UNSET 0x40 /* Option does not have local value set */ ++ ++ #define SREQ_GLOBAL 0 /* Request global option */ ++ #define SREQ_WIN 1 /* Request window-local option */ ++ #define SREQ_BUF 2 /* Request buffer-local option */ ++ + #endif /* VIM__H */ +*** ../vim-7.3.923/src/version.c 2013-05-04 04:40:06.000000000 +0200 +--- src/version.c 2013-05-06 03:38:06.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 924, + /**/ + +-- +ARTHUR: (as the MAN next to him is squashed by a sheep) Knights! Run away! + Midst echoing shouts of "run away" the KNIGHTS retreat to cover with the odd + cow or goose hitting them still. The KNIGHTS crouch down under cover. + "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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.925 b/7.3.925 new file mode 100644 index 0000000..a7a0b5a --- /dev/null +++ b/7.3.925 @@ -0,0 +1,2899 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.925 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.925 +Problem: Typos in source files. +Solution: Fix the typos. (Ken Takata) +Files: runtime/plugin/matchparen.vim, runtime/tools/vim_vs_net.cmd, + src/GvimExt/gvimext.cpp, src/INSTALLvms.txt, src/Make_cyg.mak, + src/Make_mvc.mak, src/Make_sas.mak, src/Make_vms.mms, + src/Make_w16.mak, src/Makefile, src/VisVim/OleAut.cpp, + src/VisVim/README_VisVim.txt, src/auto/configure, src/buffer.c, + src/configure.in, src/diff.c, src/dosinst.c, src/edit.c, + src/eval.c, src/ex_cmds2.c, src/ex_docmd.c, src/ex_eval.c, + src/farsi.c, src/feature.h, src/fileio.c, src/glbl_ime.cpp, + src/gui.c, src/gui_athena.c, src/gui_beval.c, src/gui_gtk_x11.c, + src/gui_mac.c, src/gui_motif.c, src/gui_photon.c, src/gui_w16.c, + src/gui_w32.c, src/gui_w48.c, src/gui_xmebw.c, src/gui_xmebwp.h, + src/hardcopy.c, src/if_cscope.c, src/if_mzsch.c, src/if_ole.cpp, + src/if_perl.xs, src/if_py_both.h, src/if_python.c, + src/if_python3.c, src/if_ruby.c, src/main.aap, src/mbyte.c, + src/memfile.c, src/memline.c, src/misc1.c, src/misc2.c, + src/nbdebug.c, src/normal.c, src/ops.c, src/os_amiga.c, + src/os_mac.h, src/os_msdos.c, src/os_mswin.c, src/os_win16.h, + src/os_win32.c, src/os_win32.h, src/quickfix.c, src/screen.c, + src/search.c, src/spell.c, src/structs.h, src/syntax.c, + src/window.c, vimtutor.com + + +*** ../vim-7.3.924/runtime/plugin/matchparen.vim 2013-03-19 13:33:18.000000000 +0100 +--- runtime/plugin/matchparen.vim 2013-05-06 04:06:04.000000000 +0200 +*************** +*** 5,11 **** + " Exit quickly when: + " - this plugin was already loaded (or disabled) + " - when 'compatible' is set +! " - the "CursorMoved" autocmd event is not availble. + if exists("g:loaded_matchparen") || &cp || !exists("##CursorMoved") + finish + endif +--- 5,11 ---- + " Exit quickly when: + " - this plugin was already loaded (or disabled) + " - when 'compatible' is set +! " - the "CursorMoved" autocmd event is not available. + if exists("g:loaded_matchparen") || &cp || !exists("##CursorMoved") + finish + endif +*** ../vim-7.3.924/runtime/tools/vim_vs_net.cmd 2010-08-15 21:57:12.000000000 +0200 +--- runtime/tools/vim_vs_net.cmd 2013-05-06 04:06:04.000000000 +0200 +*************** +*** 7,18 **** + @rem Arguments - +$(CurLine) $(ItemPath) + @rem Init Dir - Empty + @rem +! @rem Coutesy of Brian Sturk + @rem + @rem --remote-silent +%1 is a command +954, move ahead 954 lines + @rem --remote-silent %2 full path to file + @rem In Vim +! @rem :h --remote-silent for mor details + @rem + @rem --servername VS_NET + @rem This will create a new instance of vim called VS_NET. So if you +--- 7,18 ---- + @rem Arguments - +$(CurLine) $(ItemPath) + @rem Init Dir - Empty + @rem +! @rem Courtesy of Brian Sturk + @rem + @rem --remote-silent +%1 is a command +954, move ahead 954 lines + @rem --remote-silent %2 full path to file + @rem In Vim +! @rem :h --remote-silent for more details + @rem + @rem --servername VS_NET + @rem This will create a new instance of vim called VS_NET. So if you +*** ../vim-7.3.924/src/GvimExt/gvimext.cpp 2011-08-10 16:31:18.000000000 +0200 +--- src/GvimExt/gvimext.cpp 2013-05-06 04:06:04.000000000 +0200 +*************** +*** 527,533 **** + // + // PARAMETERS: + // pIDFolder - Specifies the parent folder +! // pDataObj - Spefifies the set of items selected in that folder. + // hRegKey - Specifies the type of the focused item in the selection. + // + // RETURN VALUE: +--- 527,533 ---- + // + // PARAMETERS: + // pIDFolder - Specifies the parent folder +! // pDataObj - Specifies the set of items selected in that folder. + // hRegKey - Specifies the type of the focused item in the selection. + // + // RETURN VALUE: +*** ../vim-7.3.924/src/INSTALLvms.txt 2010-08-15 21:57:25.000000000 +0200 +--- src/INSTALLvms.txt 2013-05-06 04:06:04.000000000 +0200 +*************** +*** 330,336 **** + Also VMS_JACKETS.EXE from OpenVMS Porting Library. + + Please note, that GTK uses /name=(as_is,short)/float=ieee/ieee=denorm +! complier directives that is not compatible with "standard" VMS usage, + therefore other external features might fail as PERL, PYTHON and TCL + support. + +--- 330,336 ---- + Also VMS_JACKETS.EXE from OpenVMS Porting Library. + + Please note, that GTK uses /name=(as_is,short)/float=ieee/ieee=denorm +! compiler directives that is not compatible with "standard" VMS usage, + therefore other external features might fail as PERL, PYTHON and TCL + support. + +*** ../vim-7.3.924/src/Make_cyg.mak 2013-03-07 15:16:16.000000000 +0100 +--- src/Make_cyg.mak 2013-05-06 04:06:04.000000000 +0200 +*************** +*** 1,6 **** + # + # Makefile for VIM on Win32, using Cygnus gcc +! # Last updated by Dan Sharp. Last Change: 2013 Feb 17 + # + # Also read INSTALLpc.txt! + # +--- 1,6 ---- + # + # Makefile for VIM on Win32, using Cygnus gcc +! # Last updated by Dan Sharp. Last Change: 2013 Apr 22 + # + # Also read INSTALLpc.txt! + # +*************** +*** 48,54 **** + # USEDLL no or yes: set to yes to use the Runtime library DLL (no) + # For USEDLL=yes the cygwin1.dll is required to run Vim. + # For "no" the mingw-gcc-g++ package or the mingw64-i686-gcc-g++ +! # package is required to complie Vim. Or set CC to gcc-3 and add + # -L/lib/w32api to EXTRA_LIBS. + # POSTSCRIPT no or yes: set to yes for PostScript printing (no) + # FEATURES TINY, SMALL, NORMAL, BIG or HUGE (BIG) +--- 48,54 ---- + # USEDLL no or yes: set to yes to use the Runtime library DLL (no) + # For USEDLL=yes the cygwin1.dll is required to run Vim. + # For "no" the mingw-gcc-g++ package or the mingw64-i686-gcc-g++ +! # package is required to compile Vim. Or set CC to gcc-3 and add + # -L/lib/w32api to EXTRA_LIBS. + # POSTSCRIPT no or yes: set to yes for PostScript printing (no) + # FEATURES TINY, SMALL, NORMAL, BIG or HUGE (BIG) +*** ../vim-7.3.924/src/Make_mvc.mak 2013-02-26 14:56:24.000000000 +0100 +--- src/Make_mvc.mak 2013-05-06 04:06:04.000000000 +0200 +*************** +*** 418,424 **** + !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 +--- 418,424 ---- + !endif + !endif + +! # Abort building VIM if version of VC is unrecognised. + !ifndef MSVCVER + !message *** ERROR + !message Cannot determine Visual C version being used. If you are using the +*** ../vim-7.3.924/src/Make_sas.mak 2010-08-15 21:57:27.000000000 +0200 +--- src/Make_sas.mak 2013-05-06 04:06:04.000000000 +0200 +*************** +*** 251,257 **** + + # generate GlobalSymbolTable, which speeds up the compile time. + # +! # A preprocessing stage is used to work arounda bug in the GST generator, in + # that it does not handle nested makefiles properly in this stage. + # Ignore error message for not producing any code (105). + $(GST): scoptions vim.h keymap.h macros.h ascii.h term.h structs.h +--- 251,257 ---- + + # generate GlobalSymbolTable, which speeds up the compile time. + # +! # A preprocessing stage is used to work around a bug in the GST generator, in + # that it does not handle nested makefiles properly in this stage. + # Ignore error message for not producing any code (105). + $(GST): scoptions vim.h keymap.h macros.h ascii.h term.h structs.h +*************** +*** 283,289 **** + .c.pro: + $(CC) $(CFLAGS) GPFILE=proto/$*.pro $(PROPT) $*.c + +! # dependancies + blowfish.o: blowfish.c + proto/blowfish.pro: blowfish.c + buffer.o: buffer.c +--- 283,289 ---- + .c.pro: + $(CC) $(CFLAGS) GPFILE=proto/$*.pro $(PROPT) $*.c + +! # dependencies + blowfish.o: blowfish.c + proto/blowfish.pro: blowfish.c + buffer.o: buffer.c +*** ../vim-7.3.924/src/Make_vms.mms 2010-08-15 21:57:32.000000000 +0200 +--- src/Make_vms.mms 2013-05-06 04:06:04.000000000 +0200 +*************** +*** 34,40 **** + # SMALL - Few features enabled, as basic as possible + # NORMAL - A default selection of features enabled + # BIG - Many features enabled, as rich as possible. (default) +! # HUGE - All possible featues enabled. + # Please select one of these alternatives above. + MODEL = HUGE + +--- 34,40 ---- + # SMALL - Few features enabled, as basic as possible + # NORMAL - A default selection of features enabled + # BIG - Many features enabled, as rich as possible. (default) +! # HUGE - All possible features enabled. + # Please select one of these alternatives above. + MODEL = HUGE + +*************** +*** 55,61 **** + # Comment out if you want the compiler version with :ver command. + # NOTE: This part can make some complications if you're using some + # predefined symbols/flags for your compiler. If does, just leave behind +! # the comment varialbe CCVER. + CCVER = YES + + # Uncomment if want a debug version. Resulting executable is DVIM.EXE +--- 55,61 ---- + # Comment out if you want the compiler version with :ver command. + # NOTE: This part can make some complications if you're using some + # predefined symbols/flags for your compiler. If does, just leave behind +! # the comment variable CCVER. + CCVER = YES + + # Uncomment if want a debug version. Resulting executable is DVIM.EXE +*** ../vim-7.3.924/src/Make_w16.mak 2013-02-26 14:56:24.000000000 +0100 +--- src/Make_w16.mak 2013-05-06 04:06:04.000000000 +0200 +*************** +*** 4,10 **** + # ************************************************************* + # * WARNING! + # * This was originally produced by the IDE, but has since been +! # * modifed to make it work properly. Adjust with care! + # * In particular, leave LinkerLocalOptsAtW16_gvim16dexe alone + # * unless you are a guru. + # ************************************************************* +--- 4,10 ---- + # ************************************************************* + # * WARNING! + # * This was originally produced by the IDE, but has since been +! # * modified to make it work properly. Adjust with care! + # * In particular, leave LinkerLocalOptsAtW16_gvim16dexe alone + # * unless you are a guru. + # ************************************************************* +*** ../vim-7.3.924/src/Makefile 2013-02-26 14:56:24.000000000 +0100 +--- src/Makefile 2013-05-06 04:06:04.000000000 +0200 +*************** +*** 200,206 **** + #Solaris 2.5 (sun4m) cc (SC4.0) +X11R6 +GUI (CDE) 4.6b (E) Andrew Large + #Solaris 2.5 cc +X11 +GUI Athena 4.2 (9) Sonia Heimann + #Solaris 2.5 gcc 2.5.6 +X11 Motif 5.0m (R) Ant. Colombo +! #Solaris 2.6 gcc 2.8.1 ncursus 5.3 (G) Larry W. Virden + #Solaris with -lthread 5.5 (W) K. Nagano + #Solaris gcc (b) Riccardo + #SunOS 4.1.x +X11 -GUI 5.1b (J) Bram Moolenaar +--- 200,206 ---- + #Solaris 2.5 (sun4m) cc (SC4.0) +X11R6 +GUI (CDE) 4.6b (E) Andrew Large + #Solaris 2.5 cc +X11 +GUI Athena 4.2 (9) Sonia Heimann + #Solaris 2.5 gcc 2.5.6 +X11 Motif 5.0m (R) Ant. Colombo +! #Solaris 2.6 gcc 2.8.1 ncurses 5.3 (G) Larry W. Virden + #Solaris with -lthread 5.5 (W) K. Nagano + #Solaris gcc (b) Riccardo + #SunOS 4.1.x +X11 -GUI 5.1b (J) Bram Moolenaar +*************** +*** 231,238 **** + # (D) Uncomment lines below for QNX + # (E) You might want to use termlib instead of termcap, see below. + # (F) See below for instructions. +! # (G) Using ncursus version 4.2 has reported to cause a crash. Use the +! # Sun cursus library instead. + # (H) See line for EXTRA_LIBS below. + # (I) SINIX-N 5.42 and 5.43 need some EXTRA_LIBS. Also for Reliant-Unix. + # (J) If you get undefined symbols, see below for a solution. +--- 231,238 ---- + # (D) Uncomment lines below for QNX + # (E) You might want to use termlib instead of termcap, see below. + # (F) See below for instructions. +! # (G) Using ncurses version 4.2 has reported to cause a crash. Use the +! # Sun curses library instead. + # (H) See line for EXTRA_LIBS below. + # (I) SINIX-N 5.42 and 5.43 need some EXTRA_LIBS. Also for Reliant-Unix. + # (J) If you get undefined symbols, see below for a solution. +*************** +*** 402,408 **** + # to the command line. If you see strange flags during compilation, check in + # auto/config.mk where they come from. If it's PERL_CFLAGS, try commenting + # the next line. +! # When you get an error for a missing "perl.exp" file, try creating an emtpy + # one: "touch perl.exp". + # This requires at least "small" features, "tiny" doesn't work. + #CONF_OPT_PERL = --enable-perlinterp +--- 402,408 ---- + # to the command line. If you see strange flags during compilation, check in + # auto/config.mk where they come from. If it's PERL_CFLAGS, try commenting + # the next line. +! # When you get an error for a missing "perl.exp" file, try creating an empty + # one: "touch perl.exp". + # This requires at least "small" features, "tiny" doesn't work. + #CONF_OPT_PERL = --enable-perlinterp +*************** +*** 601,607 **** + # Might not work with GUI or Perl. + # For unknown reasons adding "-lc" fixes a linking problem with some versions + # of GCC. That's probably a bug in the "-pg" implementation. +! # After running Vim see the profile result with: gmon vim gmon.out | vim - + # Need to recompile everything after changing this: "make clean" "make". + #PROFILE_CFLAGS = -pg -g -DWE_ARE_PROFILING + #PROFILE_LIBS = -pg +--- 601,607 ---- + # Might not work with GUI or Perl. + # For unknown reasons adding "-lc" fixes a linking problem with some versions + # of GCC. That's probably a bug in the "-pg" implementation. +! # After running Vim see the profile result with: gprof vim gmon.out | vim - + # Need to recompile everything after changing this: "make clean" "make". + #PROFILE_CFLAGS = -pg -g -DWE_ARE_PROFILING + #PROFILE_LIBS = -pg +*************** +*** 1294,1300 **** + ### prototype headers are ignored due to -DPROTO, system + ### headers #include <...> are ignored if we use the -MM option, as + ### e.g. provided by gcc-cpp. +! ### Include FEAT_GUI to get gependency on gui.h + ### Need to change "-I /" to "-isystem /" for GCC 3.x. + CPP_DEPEND = $(CC) -I$(srcdir) -M$(CPP_MM) \ + `echo "$(DEPEND_CFLAGS)" $(DEPEND_CFLAGS_FILTER)` +--- 1294,1300 ---- + ### prototype headers are ignored due to -DPROTO, system + ### headers #include <...> are ignored if we use the -MM option, as + ### e.g. provided by gcc-cpp. +! ### Include FEAT_GUI to get dependency on gui.h + ### Need to change "-I /" to "-isystem /" for GCC 3.x. + CPP_DEPEND = $(CC) -I$(srcdir) -M$(CPP_MM) \ + `echo "$(DEPEND_CFLAGS)" $(DEPEND_CFLAGS_FILTER)` +*************** +*** 1717,1723 **** + + + # Link the target for normal use or debugging. +! # A shell script is used to try linking without unneccesary libraries. + $(VIMTARGET): auto/config.mk objects $(OBJ) version.c version.h + $(CCC) version.c -o objects/version.o + @LINK="$(PURIFY) $(SHRPENV) $(CClink) $(ALL_LIB_DIRS) $(LDFLAGS) \ +--- 1717,1723 ---- + + + # Link the target for normal use or debugging. +! # A shell script is used to try linking without unnecessary libraries. + $(VIMTARGET): auto/config.mk objects $(OBJ) version.c version.h + $(CCC) version.c -o objects/version.o + @LINK="$(PURIFY) $(SHRPENV) $(CClink) $(ALL_LIB_DIRS) $(LDFLAGS) \ +*************** +*** 1837,1844 **** + # + # This will produce a lot of garbage on your screen, including a few error + # messages. Don't worry about that. +! # If there is a real error, there will be a difference between "test.out" and +! # a "test99.ok" file. + # If everything is alright, the final message will be "ALL DONE". If not you + # get "TEST FAILURE". + # +--- 1837,1844 ---- + # + # This will produce a lot of garbage on your screen, including a few error + # messages. Don't worry about that. +! # If there is a real error, there will be a difference between "testXX.out" and +! # a "testXX.ok" file. + # If everything is alright, the final message will be "ALL DONE". If not you + # get "TEST FAILURE". + # +*************** +*** 2779,2787 **** + mv gui_mac.rsrc.rsrcfork $(RESDIR)/$(VIMNAME).rsrc + + # po/Make_osx.pl says something about generating a Mac message file +! # for Ukrananian. Would somebody using Mac OS X in Ukranian + # *really* be upset that Carbon Vim was not localised in +! # Ukranian? + # + #bundle-language: bundle-dir po/Make_osx.pl + # cd po && perl Make_osx.pl --outdir ../$(RESDIR) $(MULTILANG) +--- 2779,2787 ---- + mv gui_mac.rsrc.rsrcfork $(RESDIR)/$(VIMNAME).rsrc + + # po/Make_osx.pl says something about generating a Mac message file +! # for Ukrainian. Would somebody using Mac OS X in Ukrainian + # *really* be upset that Carbon Vim was not localised in +! # Ukrainian? + # + #bundle-language: bundle-dir po/Make_osx.pl + # cd po && perl Make_osx.pl --outdir ../$(RESDIR) $(MULTILANG) +*** ../vim-7.3.924/src/VisVim/OleAut.cpp 2010-08-15 21:57:27.000000000 +0200 +--- src/VisVim/OleAut.cpp 2013-05-06 04:04:07.000000000 +0200 +*************** +*** 654,660 **** + } + + char Buf[256]; +! sprintf (Buf, "An OLE error occured:\r\nCode = %s\r\nResult = %lx.", + (char*) ErrName, m_hResult); + MessageBox (NULL, Buf, "OLE Error", MB_OK); + } +--- 654,660 ---- + } + + char Buf[256]; +! sprintf (Buf, "An OLE error occurred:\r\nCode = %s\r\nResult = %lx.", + (char*) ErrName, m_hResult); + MessageBox (NULL, Buf, "OLE Error", MB_OK); + } +*** ../vim-7.3.924/src/VisVim/README_VisVim.txt 2010-08-15 21:57:27.000000000 +0200 +--- src/VisVim/README_VisVim.txt 2013-05-06 04:06:04.000000000 +0200 +*************** +*** 17,28 **** + VisVim is based upon VisEmacs by Christopher Payne + (Copyright (C) Christopher Payne 1997). + +! Author: Heiko Erhardt + Based upon: VisEmacs by Christopher Payne + Version: 1.0 + Created: 23 Oct 1997 + Date: 23 Oct 1997 + + VisVim 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, or (at your option) +--- 17,32 ---- + VisVim is based upon VisEmacs by Christopher Payne + (Copyright (C) Christopher Payne 1997). + +! Author: Heiko Erhardt + Based upon: VisEmacs by Christopher Payne + Version: 1.0 + Created: 23 Oct 1997 + Date: 23 Oct 1997 + ++ VisVim was originally GNU GPL licensed, as stated below. On March 21 2012 ++ Heiko Erhardt declared this work to be relicensed under the Vim license, as ++ stated in ../../runtime/doc/uganda.txt (or ":help uganda" in Vim). ++ + VisVim 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, or (at your option) +*************** +*** 216,222 **** + 2. Close Visual Studio. + 3. Delete VisVim.dll or move it somewhere it can't be found. + 4. Run Visual Studio. +! 5. Tools -> Cursomize ->Add-ins and Macro-Files. + 6. A message appears: + ".../VisVim.dll" "This add-in no longer exists. It will + no longer be displayed." +--- 220,226 ---- + 2. Close Visual Studio. + 3. Delete VisVim.dll or move it somewhere it can't be found. + 4. Run Visual Studio. +! 5. Tools -> Customize ->Add-ins and Macro-Files. + 6. A message appears: + ".../VisVim.dll" "This add-in no longer exists. It will + no longer be displayed." +*************** +*** 294,300 **** + P8 Execute :tag command in Vim for word under cursor in DevStudio + + P7 Controlling the Visual Studio Debugger from inside Vim +! See message above. Also a 'Debug' highligh group and a + command to highlight a certain line would be necessary. + + P6 Provide an option to open the current file in VisVim in +--- 298,304 ---- + P8 Execute :tag command in Vim for word under cursor in DevStudio + + P7 Controlling the Visual Studio Debugger from inside Vim +! See message above. Also a 'Debug' highlight group and a + command to highlight a certain line would be necessary. + + P6 Provide an option to open the current file in VisVim in +*************** +*** 318,322 **** + Have fun! + + Heiko Erhardt +! Heiko.Erhardt@munich.netsurf.de + +--- 322,326 ---- + Have fun! + + Heiko Erhardt +! heiko.erhardt@gmx.net + +*** ../vim-7.3.924/src/auto/configure 2013-05-04 04:40:06.000000000 +0200 +--- src/auto/configure 2013-05-06 04:06:04.000000000 +0200 +*************** +*** 5831,5837 **** + /* If this program fails, then RTLD_GLOBAL is needed. + * RTLD_GLOBAL will be used and then it is not possible to + * have both python versions enabled in the same vim instance. +! * Only the first pyhton version used will be switched on. + */ + + int no_rtl_global_needed_for(char *python_instsoname, char *prefix) +--- 5831,5837 ---- + /* If this program fails, then RTLD_GLOBAL is needed. + * RTLD_GLOBAL will be used and then it is not possible to + * have both python versions enabled in the same vim instance. +! * Only the first python version used will be switched on. + */ + + int no_rtl_global_needed_for(char *python_instsoname, char *prefix) +*************** +*** 5897,5903 **** + /* If this program fails, then RTLD_GLOBAL is needed. + * RTLD_GLOBAL will be used and then it is not possible to + * have both python versions enabled in the same vim instance. +! * Only the first pyhton version used will be switched on. + */ + + int no_rtl_global_needed_for(char *python_instsoname, wchar_t *prefix) +--- 5897,5903 ---- + /* If this program fails, then RTLD_GLOBAL is needed. + * RTLD_GLOBAL will be used and then it is not possible to + * have both python versions enabled in the same vim instance. +! * Only the first python version used will be switched on. + */ + + int no_rtl_global_needed_for(char *python_instsoname, wchar_t *prefix) +*************** +*** 10593,10599 **** + _ACEOF + + if test "x$vim_cv_tty_mode" = "x" ; then +! as_fn_error "It seems you're cross compiling and have 'vim_cv_tty_group' set, please also set the environment variable 'vim_cv_tty_mode' to the correct mode (propably 0620)" "$LINENO" 5 + else + $as_echo "#define PTYMODE 0620" >>confdefs.h + +--- 10593,10599 ---- + _ACEOF + + if test "x$vim_cv_tty_mode" = "x" ; then +! as_fn_error "It seems you're cross compiling and have 'vim_cv_tty_group' set, please also set the environment variable 'vim_cv_tty_mode' to the correct mode (probably 0620)" "$LINENO" 5 + else + $as_echo "#define PTYMODE 0620" >>confdefs.h + +*** ../vim-7.3.924/src/buffer.c 2013-04-24 16:52:28.000000000 +0200 +--- src/buffer.c 2013-05-06 04:06:04.000000000 +0200 +*************** +*** 2005,2011 **** + * "buf" if one exists */ + if (swb_flags & SWB_USEOPEN) + wp = buf_jump_open_win(buf); +! /* If 'switchbuf' contians "usetab": jump to first window in any tab + * page containing "buf" if one exists */ + if (wp == NULL && (swb_flags & SWB_USETAB)) + wp = buf_jump_open_tab(buf); +--- 2005,2011 ---- + * "buf" if one exists */ + if (swb_flags & SWB_USEOPEN) + wp = buf_jump_open_win(buf); +! /* If 'switchbuf' contains "usetab": jump to first window in any tab + * page containing "buf" if one exists */ + if (wp == NULL && (swb_flags & SWB_USETAB)) + wp = buf_jump_open_tab(buf); +*** ../vim-7.3.924/src/configure.in 2013-05-04 04:40:06.000000000 +0200 +--- src/configure.in 2013-05-06 04:06:04.000000000 +0200 +*************** +*** 306,312 **** + AC_SUBST(line_break) + + if test "$cf_cv_ebcdic" = "yes"; then +! dnl If we have EBCDIC we most likley have z/OS Unix, let's test it! + AC_MSG_CHECKING(for z/OS Unix) + case `uname` in + OS/390) zOSUnix="yes"; +--- 306,312 ---- + AC_SUBST(line_break) + + if test "$cf_cv_ebcdic" = "yes"; then +! dnl If we have EBCDIC we most likely have z/OS Unix, let's test it! + AC_MSG_CHECKING(for z/OS Unix) + case `uname` in + OS/390) zOSUnix="yes"; +*************** +*** 1228,1234 **** + /* If this program fails, then RTLD_GLOBAL is needed. + * RTLD_GLOBAL will be used and then it is not possible to + * have both python versions enabled in the same vim instance. +! * Only the first pyhton version used will be switched on. + */ + + int no_rtl_global_needed_for(char *python_instsoname, char *prefix) +--- 1228,1234 ---- + /* If this program fails, then RTLD_GLOBAL is needed. + * RTLD_GLOBAL will be used and then it is not possible to + * have both python versions enabled in the same vim instance. +! * Only the first python version used will be switched on. + */ + + int no_rtl_global_needed_for(char *python_instsoname, char *prefix) +*************** +*** 1274,1280 **** + /* If this program fails, then RTLD_GLOBAL is needed. + * RTLD_GLOBAL will be used and then it is not possible to + * have both python versions enabled in the same vim instance. +! * Only the first pyhton version used will be switched on. + */ + + int no_rtl_global_needed_for(char *python_instsoname, wchar_t *prefix) +--- 1274,1280 ---- + /* If this program fails, then RTLD_GLOBAL is needed. + * RTLD_GLOBAL will be used and then it is not possible to + * have both python versions enabled in the same vim instance. +! * Only the first python version used will be switched on. + */ + + int no_rtl_global_needed_for(char *python_instsoname, wchar_t *prefix) +*************** +*** 3002,3008 **** + if test "x$vim_cv_tty_group" != "xworld" ; then + AC_DEFINE_UNQUOTED(PTYGROUP,$vim_cv_tty_group) + if test "x$vim_cv_tty_mode" = "x" ; then +! AC_MSG_ERROR([It seems you're cross compiling and have 'vim_cv_tty_group' set, please also set the environment variable 'vim_cv_tty_mode' to the correct mode (propably 0620)]) + else + AC_DEFINE(PTYMODE, 0620) + fi +--- 3002,3008 ---- + if test "x$vim_cv_tty_group" != "xworld" ; then + AC_DEFINE_UNQUOTED(PTYGROUP,$vim_cv_tty_group) + if test "x$vim_cv_tty_mode" = "x" ; then +! AC_MSG_ERROR([It seems you're cross compiling and have 'vim_cv_tty_group' set, please also set the environment variable 'vim_cv_tty_mode' to the correct mode (probably 0620)]) + else + AC_DEFINE(PTYMODE, 0620) + fi +*** ../vim-7.3.924/src/diff.c 2013-03-19 14:25:50.000000000 +0100 +--- src/diff.c 2013-05-06 04:06:04.000000000 +0200 +*************** +*** 1110,1116 **** + } + + /* +! * Set options to show difs for the current window. + */ + void + ex_diffthis(eap) +--- 1110,1116 ---- + } + + /* +! * Set options to show diffs for the current window. + */ + void + ex_diffthis(eap) +*** ../vim-7.3.924/src/dosinst.c 2013-02-13 14:36:39.000000000 +0100 +--- src/dosinst.c 2013-05-06 04:06:04.000000000 +0200 +*************** +*** 1609,1615 **** + + /* + * Only add the choice for the open-with menu entry when gvim.exe was found +! * and and regedit.exe exist. + */ + static void + init_openwith_choice(void) +--- 1609,1615 ---- + + /* + * Only add the choice for the open-with menu entry when gvim.exe was found +! * and regedit.exe exist. + */ + static void + init_openwith_choice(void) +*** ../vim-7.3.924/src/edit.c 2013-03-19 16:46:59.000000000 +0100 +--- src/edit.c 2013-05-06 04:06:04.000000000 +0200 +*************** +*** 1418,1424 **** + + normalchar: + /* +! * Insert a nomal character. + */ + #ifdef FEAT_AUTOCMD + if (!p_paste) +--- 1418,1424 ---- + + normalchar: + /* +! * Insert a normal character. + */ + #ifdef FEAT_AUTOCMD + if (!p_paste) +*************** +*** 7162,7168 **** + /* + * Count each sequence of folded lines as one logical line. + */ +! /* go to the the start of the current fold */ + (void)hasFolding(lnum, &lnum, NULL); + + while (n--) +--- 7162,7168 ---- + /* + * Count each sequence of folded lines as one logical line. + */ +! /* go to the start of the current fold */ + (void)hasFolding(lnum, &lnum, NULL); + + while (n--) +*************** +*** 7213,7219 **** + (void)hasFolding(lnum, NULL, &lnum); + #endif + /* This fails if the cursor is already in the last line or would move +! * beyound the last line and '-' is in 'cpoptions' */ + if (lnum >= curbuf->b_ml.ml_line_count + || (lnum + n > curbuf->b_ml.ml_line_count + && vim_strchr(p_cpo, CPO_MINUS) != NULL)) +--- 7213,7219 ---- + (void)hasFolding(lnum, NULL, &lnum); + #endif + /* This fails if the cursor is already in the last line or would move +! * beyond the last line and '-' is in 'cpoptions' */ + if (lnum >= curbuf->b_ml.ml_line_count + || (lnum + n > curbuf->b_ml.ml_line_count + && vim_strchr(p_cpo, CPO_MINUS) != NULL)) +*************** +*** 7715,7721 **** + /* + * return TRUE if 'cinkeys' contains the key "keytyped", + * when == '*': Only if key is preceded with '*' (indent before insert) +! * when == '!': Only if key is prededed with '!' (don't insert) + * when == ' ': Only if key is not preceded with '*'(indent afterwards) + * + * "keytyped" can have a few special values: +--- 7715,7721 ---- + /* + * return TRUE if 'cinkeys' contains the key "keytyped", + * when == '*': Only if key is preceded with '*' (indent before insert) +! * when == '!': Only if key is preceded with '!' (don't insert) + * when == ' ': Only if key is not preceded with '*'(indent afterwards) + * + * "keytyped" can have a few special values: +*************** +*** 8541,8547 **** + #endif + + /* +! * key in Insert mode: toggle insert/remplace mode. + */ + static void + ins_insert(replaceState) +--- 8541,8547 ---- + #endif + + /* +! * key in Insert mode: toggle insert/replace mode. + */ + static void + ins_insert(replaceState) +*** ../vim-7.3.924/src/eval.c 2013-05-06 03:52:44.000000000 +0200 +--- src/eval.c 2013-05-06 04:07:45.000000000 +0200 +*************** +*** 16669,16675 **** + tabpage_T *save_curtab; + { + #ifdef FEAT_WINDOWS +! /* Restore current tabpage and window, if still valid (autocomands can + * make them invalid). */ + if (valid_tabpage(save_curtab)) + goto_tabpage_tp(save_curtab, TRUE); +--- 16669,16675 ---- + tabpage_T *save_curtab; + { + #ifdef FEAT_WINDOWS +! /* Restore current tabpage and window, if still valid (autocommands can + * make them invalid). */ + if (valid_tabpage(save_curtab)) + goto_tabpage_tp(save_curtab, TRUE); +*** ../vim-7.3.924/src/ex_cmds2.c 2013-03-19 16:46:59.000000000 +0100 +--- src/ex_cmds2.c 2013-05-06 04:06:04.000000000 +0200 +*************** +*** 2851,2857 **** + EMSG(_(e_argreq)); + + else if (eap != NULL && eap->forceit) +! /* ":source!": read Normal mdoe commands + * Need to execute the commands directly. This is required at least + * for: + * - ":g" command busy +--- 2851,2857 ---- + EMSG(_(e_argreq)); + + else if (eap != NULL && eap->forceit) +! /* ":source!": read Normal mode commands + * Need to execute the commands directly. This is required at least + * for: + * - ":g" command busy +*** ../vim-7.3.924/src/ex_docmd.c 2013-03-19 14:25:50.000000000 +0100 +--- src/ex_docmd.c 2013-05-06 04:06:04.000000000 +0200 +*************** +*** 1093,1099 **** + msg_didany = FALSE; /* no output yet */ + msg_start(); + msg_scroll = TRUE; /* put messages below each other */ +! ++no_wait_return; /* dont wait for return until finished */ + ++RedrawingDisabled; + did_inc = TRUE; + } +--- 1093,1099 ---- + msg_didany = FALSE; /* no output yet */ + msg_start(); + msg_scroll = TRUE; /* put messages below each other */ +! ++no_wait_return; /* don't wait for return until finished */ + ++RedrawingDisabled; + did_inc = TRUE; + } +*************** +*** 1298,1304 **** + && !(did_emsg + #ifdef FEAT_EVAL + /* Keep going when inside try/catch, so that the error can be +! * dealth with, except when it is a syntax error, it may cause + * the :endtry to be missed. */ + && (cstack.cs_trylevel == 0 || did_emsg_syntax) + #endif +--- 1298,1304 ---- + && !(did_emsg + #ifdef FEAT_EVAL + /* Keep going when inside try/catch, so that the error can be +! * deal with, except when it is a syntax error, it may cause + * the :endtry to be missed. */ + && (cstack.cs_trylevel == 0 || did_emsg_syntax) + #endif +*************** +*** 10982,10988 **** + *p = '/'; + } + +! /* escapse special characters */ + p = vim_strsave_fnameescape(sname, FALSE); + vim_free(sname); + if (p == NULL) +--- 10982,10988 ---- + *p = '/'; + } + +! /* escape special characters */ + p = vim_strsave_fnameescape(sname, FALSE); + vim_free(sname); + if (p == NULL) +*** ../vim-7.3.924/src/ex_eval.c 2010-08-15 21:57:25.000000000 +0200 +--- src/ex_eval.c 2013-05-06 04:06:04.000000000 +0200 +*************** +*** 44,50 **** + * executed. Otherwise, errors and/or interrupts are converted into catchable + * exceptions (did_throw additionally set), which terminate the script only if + * not caught. For user exceptions, only did_throw is set. (Note: got_int can +! * be set asyncronously afterwards by a SIGINT, so did_throw && got_int is not + * a reliant test that the exception currently being thrown is an interrupt + * exception. Similarly, did_emsg can be set afterwards on an error in an + * (unskipped) conditional command inside an inactive conditional, so did_throw +--- 44,50 ---- + * executed. Otherwise, errors and/or interrupts are converted into catchable + * exceptions (did_throw additionally set), which terminate the script only if + * not caught. For user exceptions, only did_throw is set. (Note: got_int can +! * be set asynchronously afterwards by a SIGINT, so did_throw && got_int is not + * a reliant test that the exception currently being thrown is an interrupt + * exception. Similarly, did_emsg can be set afterwards on an error in an + * (unskipped) conditional command inside an inactive conditional, so did_throw +*************** +*** 2091,2101 **** + * Values used for "searched_cond" are (CSF_WHILE | CSF_FOR) or CSF_TRY or 0, + * the latter meaning the innermost try conditional not in its finally clause. + * "inclusive" tells whether the conditional searched for should be made +! * inactive itself (a try conditional not in its finally claused possibly find + * before is always made inactive). If "inclusive" is TRUE and + * "searched_cond" is CSF_TRY|CSF_SILENT, the saved former value of + * "emsg_silent", if reset when the try conditional finally reached was +! * entered, is restored (unsed by ex_endtry()). This is normally done only + * when such a try conditional is left. + */ + int +--- 2091,2101 ---- + * Values used for "searched_cond" are (CSF_WHILE | CSF_FOR) or CSF_TRY or 0, + * the latter meaning the innermost try conditional not in its finally clause. + * "inclusive" tells whether the conditional searched for should be made +! * inactive itself (a try conditional not in its finally clause possibly find + * before is always made inactive). If "inclusive" is TRUE and + * "searched_cond" is CSF_TRY|CSF_SILENT, the saved former value of + * "emsg_silent", if reset when the try conditional finally reached was +! * entered, is restored (used by ex_endtry()). This is normally done only + * when such a try conditional is left. + */ + int +*** ../vim-7.3.924/src/farsi.c 2012-07-16 17:26:18.000000000 +0200 +--- src/farsi.c 2013-05-06 04:06:04.000000000 +0200 +*************** +*** 1841,1847 **** + } + + /* +! * Convert the Farsi VIM into Farsi 3342 standad. + */ + void + conv_to_pstd() +--- 1841,1847 ---- + } + + /* +! * Convert the Farsi VIM into Farsi 3342 standard. + */ + void + conv_to_pstd() +*** ../vim-7.3.924/src/feature.h 2013-04-15 15:40:08.000000000 +0200 +--- src/feature.h 2013-05-06 04:06:04.000000000 +0200 +*************** +*** 1007,1013 **** + + /* + * MODIFIED_BY Name of who modified Vim. Required when distributing +! * a modifed version of Vim. + * Also from the "--with-modified-by" configure argument. + */ + /* #define MODIFIED_BY "John Doe" */ +--- 1007,1013 ---- + + /* + * MODIFIED_BY Name of who modified Vim. Required when distributing +! * a modified version of Vim. + * Also from the "--with-modified-by" configure argument. + */ + /* #define MODIFIED_BY "John Doe" */ +*** ../vim-7.3.924/src/fileio.c 2013-04-24 16:33:58.000000000 +0200 +--- src/fileio.c 2013-05-06 04:06:04.000000000 +0200 +*************** +*** 3279,3285 **** + overwriting = FALSE; + + if (exiting) +! settmode(TMODE_COOK); /* when exiting allow typahead now */ + + ++no_wait_return; /* don't wait for return yet */ + +--- 3279,3285 ---- + overwriting = FALSE; + + if (exiting) +! settmode(TMODE_COOK); /* when exiting allow typeahead now */ + + ++no_wait_return; /* don't wait for return yet */ + +*************** +*** 3303,3309 **** + int empty_memline = (buf->b_ml.ml_mfp == NULL); + + /* +! * Apply PRE aucocommands. + * Set curbuf to the buffer to be written. + * Careful: The autocommands may call buf_write() recursively! + */ +--- 3303,3309 ---- + int empty_memline = (buf->b_ml.ml_mfp == NULL); + + /* +! * Apply PRE autocommands. + * Set curbuf to the buffer to be written. + * Careful: The autocommands may call buf_write() recursively! + */ +*************** +*** 8866,8872 **** + else + { + /* There is no window for "buf", use "aucmd_win". To minimize the side +! * effects, insert it in a the current tab page. + * Anything related to a window (e.g., setting folds) may have + * unexpected results. */ + aco->use_aucmd_win = TRUE; +--- 8866,8872 ---- + else + { + /* There is no window for "buf", use "aucmd_win". To minimize the side +! * effects, insert it in the current tab page. + * Anything related to a window (e.g., setting folds) may have + * unexpected results. */ + aco->use_aucmd_win = TRUE; +*** ../vim-7.3.924/src/glbl_ime.cpp 2010-08-15 21:57:27.000000000 +0200 +--- src/glbl_ime.cpp 2013-05-06 04:06:04.000000000 +0200 +*************** +*** 156,162 **** + } + + /* +! * Set position of IME compotision window. + * + * You have to call this before starting composition. If once composition + * started, this can take no effect until that composition have finished. So +--- 156,162 ---- + } + + /* +! * Set position of IME composition window. + * + * You have to call this before starting composition. If once composition + * started, this can take no effect until that composition have finished. So +*** ../vim-7.3.924/src/gui.c 2013-04-03 21:11:33.000000000 +0200 +--- src/gui.c 2013-05-06 04:06:04.000000000 +0200 +*************** +*** 826,832 **** + #endif + + /* +! * Set the font. "font_list" is a a comma separated list of font names. The + * first font name that works is used. If none is found, use the default + * font. + * If "fontset" is TRUE, the "font_list" is used as one name for the fontset. +--- 826,832 ---- + #endif + + /* +! * Set the font. "font_list" is a comma separated list of font names. The + * first font name that works is used. If none is found, use the default + * font. + * If "fontset" is TRUE, the "font_list" is used as one name for the fontset. +*************** +*** 2376,2382 **** + { + int start; /* index of bytes to be drawn */ + int cells; /* cellwidth of bytes to be drawn */ +! int thislen; /* length of bytes to be drawin */ + int cn; /* cellwidth of current char */ + int i; /* index of current char */ + int c; /* current char value */ +--- 2376,2382 ---- + { + int start; /* index of bytes to be drawn */ + int cells; /* cellwidth of bytes to be drawn */ +! int thislen; /* length of bytes to be drawn */ + int cn; /* cellwidth of current char */ + int i; /* index of current char */ + int c; /* current char value */ +*************** +*** 3886,3892 **** + gui.dragged_sb = SBAR_NONE; + #ifdef FEAT_GUI_GTK + /* Keep the "dragged_wp" value until after the scrolling, for when the +! * moust button is released. GTK2 doesn't send the button-up event. */ + gui.dragged_wp = NULL; + #endif + } +--- 3886,3892 ---- + gui.dragged_sb = SBAR_NONE; + #ifdef FEAT_GUI_GTK + /* Keep the "dragged_wp" value until after the scrolling, for when the +! * mouse button is released. GTK2 doesn't send the button-up event. */ + gui.dragged_wp = NULL; + #endif + } +*** ../vim-7.3.924/src/gui_athena.c 2011-01-17 20:08:03.000000000 +0100 +--- src/gui_athena.c 2013-05-06 04:06:04.000000000 +0200 +*************** +*** 519,525 **** + &color[TOP_SHADOW].pixel, + &color[HIGHLIGHT].pixel); + +! /* Setup the color subsititution table */ + attrs.valuemask = XpmColorSymbols; + attrs.colorsymbols = color; + attrs.numsymbols = 5; +--- 519,525 ---- + &color[TOP_SHADOW].pixel, + &color[HIGHLIGHT].pixel); + +! /* Setup the color substitution table */ + attrs.valuemask = XpmColorSymbols; + attrs.colorsymbols = color; + attrs.numsymbols = 5; +*** ../vim-7.3.924/src/gui_beval.c 2012-10-21 00:58:34.000000000 +0200 +--- src/gui_beval.c 2013-05-06 04:06:04.000000000 +0200 +*************** +*** 726,732 **** + BalloonEval *beval; + XEvent *event; + { +! Position distance; /* a measure of how much the ponter moved */ + Position delta; /* used to compute distance */ + + switch (event->type) +--- 726,732 ---- + BalloonEval *beval; + XEvent *event; + { +! Position distance; /* a measure of how much the pointer moved */ + Position delta; /* used to compute distance */ + + switch (event->type) +*** ../vim-7.3.924/src/gui_gtk_x11.c 2013-03-13 17:50:20.000000000 +0100 +--- src/gui_gtk_x11.c 2013-05-06 04:06:04.000000000 +0200 +*************** +*** 1257,1263 **** + } + } + +! /* Chop off any traiing NUL bytes. OpenOffice sends these. */ + while (len > 0 && text[len - 1] == NUL) + --len; + +--- 1257,1263 ---- + } + } + +! /* Chop off any trailing NUL bytes. OpenOffice sends these. */ + while (len > 0 && text[len - 1] == NUL) + --len; + +*** ../vim-7.3.924/src/gui_mac.c 2012-11-20 17:18:56.000000000 +0100 +--- src/gui_mac.c 2013-05-06 04:06:04.000000000 +0200 +*************** +*** 41,47 **** + #define USE_AEVENT /* Enable AEVENT */ + #undef USE_OFFSETED_WINDOW /* Debugging feature: start Vim window OFFSETed */ + +! /* Compile as CodeWarior External Editor */ + #if defined(FEAT_CW_EDITOR) && !defined(USE_AEVENT) + # define USE_AEVENT /* Need Apple Event Support */ + #endif +--- 41,47 ---- + #define USE_AEVENT /* Enable AEVENT */ + #undef USE_OFFSETED_WINDOW /* Debugging feature: start Vim window OFFSETed */ + +! /* Compile as CodeWarrior External Editor */ + #if defined(FEAT_CW_EDITOR) && !defined(USE_AEVENT) + # define USE_AEVENT /* Need Apple Event Support */ + #endif +*************** +*** 1478,1484 **** + /* + * gui_mac_get_menu_item_index + * +! * Returns the index inside the menu wher + */ + short /* Should we return MenuItemIndex? */ + gui_mac_get_menu_item_index(vimmenu_T *pMenu) +--- 1478,1484 ---- + /* + * gui_mac_get_menu_item_index + * +! * Returns the index inside the menu where + */ + short /* Should we return MenuItemIndex? */ + gui_mac_get_menu_item_index(vimmenu_T *pMenu) +*************** +*** 1693,1699 **** + + if (theControl != NUL) + { +! /* We hit a scollbar */ + + if (thePortion != kControlIndicatorPart) + { +--- 1693,1699 ---- + + if (theControl != NUL) + { +! /* We hit a scrollbar */ + + if (thePortion != kControlIndicatorPart) + { +*************** +*** 2630,2636 **** + { + /* Handle the menu CntxMenuID, CntxMenuItem */ + /* The submenu can be handle directly by gui_mac_handle_menu */ +! /* But what about the current menu, is the meny changed by ContextualMenuSelect */ + gui_mac_handle_menu((CntxMenuID << 16) + CntxMenuItem); + } + else if (CntxMenuID == kCMShowHelpSelected) +--- 2630,2636 ---- + { + /* Handle the menu CntxMenuID, CntxMenuItem */ + /* The submenu can be handle directly by gui_mac_handle_menu */ +! /* But what about the current menu, is the many changed by ContextualMenuSelect */ + gui_mac_handle_menu((CntxMenuID << 16) + CntxMenuItem); + } + else if (CntxMenuID == kCMShowHelpSelected) +*************** +*** 5356,5362 **** + char_u *initdir, + char_u *filter) + { +! /* TODO: Add Ammon's safety checl (Dany) */ + NavReplyRecord reply; + char_u *fname = NULL; + char_u **fnames = NULL; +--- 5356,5362 ---- + char_u *initdir, + char_u *filter) + { +! /* TODO: Add Ammon's safety check (Dany) */ + NavReplyRecord reply; + char_u *fname = NULL; + char_u **fnames = NULL; +*************** +*** 5704,5710 **** + + /* Resize the button to fit its name */ + width = StringWidth(name) + 2 * dfltButtonEdge; +! /* Limite the size of any button to an acceptable value. */ + /* TODO: Should be based on the message width */ + if (width > maxButtonWidth) + width = maxButtonWidth; +--- 5704,5710 ---- + + /* Resize the button to fit its name */ + width = StringWidth(name) + 2 * dfltButtonEdge; +! /* Limit the size of any button to an acceptable value. */ + /* TODO: Should be based on the message width */ + if (width > maxButtonWidth) + width = maxButtonWidth; +*************** +*** 5887,5893 **** + /* Free the modal filterProc */ + DisposeRoutineDescriptor(dialogUPP); + +! /* Get ride of th edialog (free memory) */ + DisposeDialog(theDialog); + + return itemHit; +--- 5887,5893 ---- + /* Free the modal filterProc */ + DisposeRoutineDescriptor(dialogUPP); + +! /* Get ride of the dialog (free memory) */ + DisposeDialog(theDialog); + + return itemHit; +*************** +*** 5967,5975 **** + /* New way */ + + /* +! * Get first devoice with one button. +! * This will probably be the standad mouse +! * startat head of cursor dev list + * + */ + +--- 5967,5975 ---- + /* New way */ + + /* +! * Get first device with one button. +! * This will probably be the standard mouse +! * start at head of cursor dev list + * + */ + +*************** +*** 6151,6157 **** + } + + /* +! * Convert a FSSpec to a fuill path + */ + + char_u *FullPathFromFSSpec_save(FSSpec file) +--- 6151,6157 ---- + } + + /* +! * Convert a FSSpec to a full path + */ + + char_u *FullPathFromFSSpec_save(FSSpec file) +*************** +*** 6215,6222 **** + + #ifdef USE_UNIXFILENAME + /* +! * The function used here are available in Carbon, but +! * do nothing une MacOS 8 and 9 + */ + if (error == fnfErr) + { +--- 6215,6222 ---- + + #ifdef USE_UNIXFILENAME + /* +! * The functions used here are available in Carbon, but do nothing on +! * MacOS 8 and 9. + */ + if (error == fnfErr) + { +*************** +*** 6544,6550 **** + + // when the tabline is hidden, vim doesn't call update_tabline(). When + // the tabline is shown again, show_tabline() is called before update_tabline(), +! // and because of this, the tab labels and vims internal tabs are out of sync + // for a very short time. to prevent inconsistent state, we store the labels + // of the tabs, not pointers to the tabs (which are invalid for a short time). + static CFStringRef *tabLabels = NULL; +--- 6544,6550 ---- + + // when the tabline is hidden, vim doesn't call update_tabline(). When + // the tabline is shown again, show_tabline() is called before update_tabline(), +! // and because of this, the tab labels and vim's internal tabs are out of sync + // for a very short time. to prevent inconsistent state, we store the labels + // of the tabs, not pointers to the tabs (which are invalid for a short time). + static CFStringRef *tabLabels = NULL; +*************** +*** 6578,6584 **** + + // assert(property == kTabsColumn); // why is this violated?? + +! // changeValue is true if we have a modifieable list and data was changed. + // In our case, it's always false. + // (that is: if (changeValue) updateInternalData(); else return + // internalData(); +--- 6578,6584 ---- + + // assert(property == kTabsColumn); // why is this violated?? + +! // changeValue is true if we have a modifiable list and data was changed. + // In our case, it's always false. + // (that is: if (changeValue) updateInternalData(); else return + // internalData(); +*** ../vim-7.3.924/src/gui_motif.c 2011-01-17 20:08:03.000000000 +0100 +--- src/gui_motif.c 2013-05-06 04:06:04.000000000 +0200 +*************** +*** 1344,1350 **** + else + { + /* Without shadows one can't sense whatever the button has been +! * pressed or not! However we wan't to save a bit of space... + * Need the highlightThickness to see the focus. + */ + XtSetArg(args[n], XmNhighlightThickness, 1); n++; +--- 1344,1350 ---- + else + { + /* Without shadows one can't sense whatever the button has been +! * pressed or not! However we want to save a bit of space... + * Need the highlightThickness to see the focus. + */ + XtSetArg(args[n], XmNhighlightThickness, 1); n++; +*************** +*** 3205,3211 **** + # ifdef FEAT_FOOTER + /* + * The next toolbar enter/leave callbacks should really do balloon help. But +! * I have to use footer help for backwards compatability. Hopefully both will + * get implemented and the user will have a choice. + */ + static void +--- 3205,3211 ---- + # ifdef FEAT_FOOTER + /* + * The next toolbar enter/leave callbacks should really do balloon help. But +! * I have to use footer help for backwards compatibility. Hopefully both will + * get implemented and the user will have a choice. + */ + static void +*** ../vim-7.3.924/src/gui_photon.c 2012-11-20 16:53:34.000000000 +0100 +--- src/gui_photon.c 2013-05-06 04:06:04.000000000 +0200 +*************** +*** 61,67 **** + static PhPoint_t gui_ph_raw_offset; + static PtWidget_t *gui_ph_timer_cursor; /* handle cursor blinking */ + static PtWidget_t *gui_ph_timer_timeout; /* used in gui_mch_wait_for_chars */ +! static short is_timeout; /* Has the timeout occured? */ + + /* + * This is set inside the mouse callback for a right mouse +--- 61,67 ---- + static PhPoint_t gui_ph_raw_offset; + static PtWidget_t *gui_ph_timer_cursor; /* handle cursor blinking */ + static PtWidget_t *gui_ph_timer_timeout; /* used in gui_mch_wait_for_chars */ +! static short is_timeout; /* Has the timeout occurred? */ + + /* + * This is set inside the mouse callback for a right mouse +*************** +*** 1156,1162 **** + PtSetArg(&args[ n++ ], Pt_ARG_POS, &pos, 0); + + #ifdef USE_PANEL_GROUP +! /* Put in a temprary place holder title */ + PtSetArg(&args[ n++ ], Pt_ARG_PG_PANEL_TITLES, &empty_title, 1); + + gui.vimPanelGroup = PtCreateWidget(PtPanelGroup, gui.vimWindow, n, args); +--- 1156,1162 ---- + PtSetArg(&args[ n++ ], Pt_ARG_POS, &pos, 0); + + #ifdef USE_PANEL_GROUP +! /* Put in a temporary place holder title */ + PtSetArg(&args[ n++ ], Pt_ARG_PG_PANEL_TITLES, &empty_title, 1); + + gui.vimPanelGroup = PtCreateWidget(PtPanelGroup, gui.vimWindow, n, args); +*************** +*** 1527,1533 **** + /* There is one less separator than buttons, so bump up the button count */ + button_count = 1; + +! /* Count string length and number of seperators */ + for (str = buttons; *str; str++) + { + len++; +--- 1527,1533 ---- + /* There is one less separator than buttons, so bump up the button count */ + button_count = 1; + +! /* Count string length and number of separators */ + for (str = buttons; *str; str++) + { + len++; +*** ../vim-7.3.924/src/gui_w16.c 2012-11-20 16:53:34.000000000 +0100 +--- src/gui_w16.c 2013-05-06 04:06:04.000000000 +0200 +*************** +*** 511,517 **** + workarea_rect.right = GetSystemMetrics(SM_CXSCREEN); + workarea_rect.bottom = GetSystemMetrics(SM_CYFULLSCREEN); + +! /* get current posision of our window */ + wndpl.length = sizeof(WINDOWPLACEMENT); + GetWindowPlacement(s_hwnd, &wndpl); + if (wndpl.showCmd == SW_SHOWNORMAL) +--- 511,517 ---- + workarea_rect.right = GetSystemMetrics(SM_CXSCREEN); + workarea_rect.bottom = GetSystemMetrics(SM_CYFULLSCREEN); + +! /* get current position of our window */ + wndpl.length = sizeof(WINDOWPLACEMENT); + GetWindowPlacement(s_hwnd, &wndpl); + if (wndpl.showCmd == SW_SHOWNORMAL) +*************** +*** 1161,1167 **** + return -1; + + /* +! * make a copy of 'buttons' to fiddle with it. complier grizzles because + * vim_strsave() doesn't take a const arg (why not?), so cast away the + * const. + */ +--- 1161,1167 ---- + return -1; + + /* +! * make a copy of 'buttons' to fiddle with it. compiler grizzles because + * vim_strsave() doesn't take a const arg (why not?), so cast away the + * const. + */ +*** ../vim-7.3.924/src/gui_w32.c 2013-03-19 14:48:25.000000000 +0100 +--- src/gui_w32.c 2013-05-06 04:06:04.000000000 +0200 +*************** +*** 1258,1264 **** + + #ifdef FEAT_NETBEANS_INTG + { +! /* stolen from gui_x11.x */ + int arg; + + for (arg = 1; arg < *argc; arg++) +--- 1258,1264 ---- + + #ifdef FEAT_NETBEANS_INTG + { +! /* stolen from gui_x11.c */ + int arg; + + for (arg = 1; arg < *argc; arg++) +*************** +*** 1676,1682 **** + * used by the taskbar or appbars. */ + get_work_area(&workarea_rect); + +! /* Get current posision of our window. Note that the .left and .top are + * relative to the work area. */ + wndpl.length = sizeof(WINDOWPLACEMENT); + GetWindowPlacement(s_hwnd, &wndpl); +--- 1676,1682 ---- + * used by the taskbar or appbars. */ + get_work_area(&workarea_rect); + +! /* Get current position of our window. Note that the .left and .top are + * relative to the work area. */ + wndpl.length = sizeof(WINDOWPLACEMENT); + GetWindowPlacement(s_hwnd, &wndpl); +*************** +*** 3100,3106 **** + return -1; + + /* +! * make a copy of 'buttons' to fiddle with it. complier grizzles because + * vim_strsave() doesn't take a const arg (why not?), so cast away the + * const. + */ +--- 3100,3106 ---- + return -1; + + /* +! * make a copy of 'buttons' to fiddle with it. compiler grizzles because + * vim_strsave() doesn't take a const arg (why not?), so cast away the + * const. + */ +*************** +*** 4391,4397 **** + } + + sign.hImage = NULL; +! ext = signfile + STRLEN(signfile) - 4; /* get extention */ + if (ext > signfile) + { + int do_load = 1; +--- 4391,4397 ---- + } + + sign.hImage = NULL; +! ext = signfile + STRLEN(signfile) - 4; /* get extension */ + if (ext > signfile) + { + int do_load = 1; +*** ../vim-7.3.924/src/gui_w48.c 2013-03-19 14:48:25.000000000 +0100 +--- src/gui_w48.c 2013-05-06 04:06:04.000000000 +0200 +*************** +*** 1222,1228 **** + + /* When side scroll bar is unshown, the size of window will change. + * then, the text area move left or right. thus client rect should be +! * forcely redraw. (Yasuhiro Matsumoto) */ + if (oldx != x || oldy != y) + { + InvalidateRect(s_hwnd, NULL, FALSE); +--- 1222,1228 ---- + + /* When side scroll bar is unshown, the size of window will change. + * then, the text area move left or right. thus client rect should be +! * forcedly redrawn. (Yasuhiro Matsumoto) */ + if (oldx != x || oldy != y) + { + InvalidateRect(s_hwnd, NULL, FALSE); +*** ../vim-7.3.924/src/gui_xmebw.c 2012-06-29 13:19:23.000000000 +0200 +--- src/gui_xmebw.c 2013-05-06 04:06:04.000000000 +0200 +*************** +*** 345,351 **** + &eb->primitive.top_shadow_color, + &eb->primitive.highlight_color); + +! /* Setup color subsititution table. */ + color[0].pixel = eb->core.background_pixel; + color[1].pixel = eb->core.background_pixel; + color[2].pixel = eb->core.background_pixel; +--- 345,351 ---- + &eb->primitive.top_shadow_color, + &eb->primitive.highlight_color); + +! /* Setup color substitution table. */ + color[0].pixel = eb->core.background_pixel; + color[1].pixel = eb->core.background_pixel; + color[2].pixel = eb->core.background_pixel; +*************** +*** 919,926 **** + } + + /* +! * Plase note that we manipulate the width only in case of push buttons not +! * used in the context of a menu pane. + */ + if (Lab_IsMenupane(newtb)) + { +--- 919,926 ---- + } + + /* +! * Please note that we manipulate the width only in case of push buttons +! * not used in the context of a menu pane. + */ + if (Lab_IsMenupane(newtb)) + { +*************** +*** 1006,1012 **** + XmString str; + set_pixmap(eb); + +! /* FIXME: this is not the perfect way to deal with menues, which do not + * have any string set right now. */ + str = XmStringCreateLocalized(""); + XtVaSetValues((Widget) eb, XmNlabelString, str, NULL); +--- 1006,1012 ---- + XmString str; + set_pixmap(eb); + +! /* FIXME: this is not the perfect way to deal with menus, which do not + * have any string set right now. */ + str = XmStringCreateLocalized(""); + XtVaSetValues((Widget) eb, XmNlabelString, str, NULL); +*** ../vim-7.3.924/src/gui_xmebwp.h 2010-08-15 21:57:27.000000000 +0200 +--- src/gui_xmebwp.h 2013-05-06 04:06:04.000000000 +0200 +*************** +*** 26,32 **** + + + /* +! * EnahncedButton class structure. + */ + typedef struct _XmEnhancedButtonClassPart + { +--- 26,32 ---- + + + /* +! * EnhancedButton class structure. + */ + typedef struct _XmEnhancedButtonClassPart + { +*************** +*** 49,55 **** + extern XmEnhancedButtonClassRec xmEnhancedButtonClassRec; + + /* +! * EnahncedButton instance record. + */ + typedef struct _XmEnhancedButtonPart + { +--- 49,55 ---- + extern XmEnhancedButtonClassRec xmEnhancedButtonClassRec; + + /* +! * EnhancedButton instance record. + */ + typedef struct _XmEnhancedButtonPart + { +*** ../vim-7.3.924/src/hardcopy.c 2011-04-11 21:35:03.000000000 +0200 +--- src/hardcopy.c 2013-05-06 04:00:47.000000000 +0200 +*************** +*** 2186,2192 **** + if (num_copies > 1) + { + prt_write_string(" numcopies("); +! /* Note: no space wanted so dont use prt_write_int() */ + sprintf((char *)prt_line_buffer, "%d", num_copies); + prt_write_file(prt_line_buffer); + prt_write_string(")"); +--- 2186,2192 ---- + if (num_copies > 1) + { + prt_write_string(" numcopies("); +! /* Note: no space wanted so don't use prt_write_int() */ + sprintf((char *)prt_line_buffer, "%d", num_copies); + prt_write_file(prt_line_buffer); + prt_write_string(")"); +*** ../vim-7.3.924/src/if_cscope.c 2011-06-12 21:24:56.000000000 +0200 +--- src/if_cscope.c 2013-05-06 03:58:29.000000000 +0200 +*************** +*** 1192,1200 **** + if (nummatches == NULL) + return FALSE; + +! /* send query to all open connections, then count the total number +! * of matches so we can alloc matchesp all in one swell foop +! */ + for (i = 0; i < csinfo_size; i++) + nummatches[i] = 0; + totmatches = 0; +--- 1192,1199 ---- + if (nummatches == NULL) + return FALSE; + +! /* Send query to all open connections, then count the total number +! * of matches so we can alloc all in one swell foop. */ + for (i = 0; i < csinfo_size; i++) + nummatches[i] = 0; + totmatches = 0; +*** ../vim-7.3.924/src/if_mzsch.c 2013-01-31 21:09:10.000000000 +0100 +--- src/if_mzsch.c 2013-05-06 04:06:04.000000000 +0200 +*************** +*** 3053,3059 **** + status = FAIL; + else + { +! /* add the value in advance to allow handling of self-referencial + * data structures */ + typval_T *visited_tv = (typval_T *)alloc(sizeof(typval_T)); + copy_tv(tv, visited_tv); +--- 3053,3059 ---- + status = FAIL; + else + { +! /* add the value in advance to allow handling of self-referential + * data structures */ + typval_T *visited_tv = (typval_T *)alloc(sizeof(typval_T)); + copy_tv(tv, visited_tv); +*************** +*** 3088,3094 **** + if (status == FAIL) + break; + } +! /* impoper list not terminated with null + * need to handle the last element */ + if (status == OK && !SCHEME_NULLP(curr)) + { +--- 3088,3094 ---- + if (status == FAIL) + break; + } +! /* improper list not terminated with null + * need to handle the last element */ + if (status == OK && !SCHEME_NULLP(curr)) + { +*************** +*** 3136,3142 **** + { + if (((Scheme_Hash_Table *) obj)->vals[i] != NULL) + { +! /* generate item for `diplay'ed Scheme key */ + dictitem_T *item = dictitem_alloc((char_u *)string_to_line( + ((Scheme_Hash_Table *) obj)->keys[i])); + /* convert Scheme val to Vim and add it to the dict */ +--- 3136,3142 ---- + { + if (((Scheme_Hash_Table *) obj)->vals[i] != NULL) + { +! /* generate item for `display'ed Scheme key */ + dictitem_T *item = dictitem_alloc((char_u *)string_to_line( + ((Scheme_Hash_Table *) obj)->keys[i])); + /* convert Scheme val to Vim and add it to the dict */ +*** ../vim-7.3.924/src/if_ole.cpp 2010-08-15 21:57:32.000000000 +0200 +--- src/if_ole.cpp 2013-05-06 04:06:04.000000000 +0200 +*************** +*** 645,651 **** + CoTaskMemFree(wGUID); + } + +! // Delete a key and all of its descendents + static void RecursiveDeleteKey(HKEY hKeyParent, const char *child) + { + // Open the child +--- 645,651 ---- + CoTaskMemFree(wGUID); + } + +! // Delete a key and all of its descendants + static void RecursiveDeleteKey(HKEY hKeyParent, const char *child) + { + // Open the child +*************** +*** 655,661 **** + if (result != ERROR_SUCCESS) + return; + +! // Enumerate all of the decendents of this child + FILETIME time; + char buffer[1024]; + DWORD size = 1024; +--- 655,661 ---- + if (result != ERROR_SUCCESS) + return; + +! // Enumerate all of the descendants of this child + FILETIME time; + char buffer[1024]; + DWORD size = 1024; +*************** +*** 663,669 **** + while (RegEnumKeyEx(hKeyChild, 0, buffer, &size, NULL, + NULL, NULL, &time) == S_OK) + { +! // Delete the decendents of this child + RecursiveDeleteKey(hKeyChild, buffer); + size = 256; + } +--- 663,669 ---- + while (RegEnumKeyEx(hKeyChild, 0, buffer, &size, NULL, + NULL, NULL, &time) == S_OK) + { +! // Delete the descendants of this child + RecursiveDeleteKey(hKeyChild, buffer); + size = 256; + } +*** ../vim-7.3.924/src/if_perl.xs 2013-03-19 14:25:50.000000000 +0100 +--- src/if_perl.xs 2013-05-06 04:06:04.000000000 +0200 +*************** +*** 657,663 **** + + /* + * perl_win_free +! * Remove all refences to the window to be destroyed + */ + void + perl_win_free(wp) +--- 657,663 ---- + + /* + * perl_win_free +! * Remove all references to the window to be destroyed + */ + void + perl_win_free(wp) +*** ../vim-7.3.924/src/if_py_both.h 2013-05-06 03:52:44.000000000 +0200 +--- src/if_py_both.h 2013-05-06 04:06:04.000000000 +0200 +*************** +*** 2160,2166 **** + static int + SetBufferLine(buf_T *buf, PyInt n, PyObject *line, PyInt *len_change) + { +! /* First of all, we check the thpe of the supplied Python object. + * There are three cases: + * 1. NULL, or None - this is a deletion. + * 2. A string - this is a replacement. +--- 2160,2166 ---- + static int + SetBufferLine(buf_T *buf, PyInt n, PyObject *line, PyInt *len_change) + { +! /* First of all, we check the type of the supplied Python object. + * There are three cases: + * 1. NULL, or None - this is a deletion. + * 2. A string - this is a replacement. +*************** +*** 2251,2257 **** + static int + SetBufferLineList(buf_T *buf, PyInt lo, PyInt hi, PyObject *list, PyInt *len_change) + { +! /* First of all, we check the thpe of the supplied Python object. + * There are three cases: + * 1. NULL, or None - this is a deletion. + * 2. A list - this is a replacement. +--- 2251,2257 ---- + static int + SetBufferLineList(buf_T *buf, PyInt lo, PyInt hi, PyObject *list, PyInt *len_change) + { +! /* First of all, we check the type of the supplied Python object. + * There are three cases: + * 1. NULL, or None - this is a deletion. + * 2. A list - this is a replacement. +*************** +*** 2428,2434 **** + } + } + +! /* Insert a number of lines into the specified buffer after the specifed line. + * The line number is in Vim format (1-based). The lines to be inserted are + * given as a Python list of string objects or as a single string. The lines + * to be added are checked for validity and correct format. Errors are +--- 2428,2434 ---- + } + } + +! /* Insert a number of lines into the specified buffer after the specified line. + * The line number is in Vim format (1-based). The lines to be inserted are + * given as a Python list of string objects or as a single string. The lines + * to be added are checked for validity and correct format. Errors are +*************** +*** 2819,2825 **** + return NULL; + } + +! /* Ckeck for keyboard interrupt */ + if (VimErrorCheck()) + return NULL; + +--- 2819,2825 ---- + return NULL; + } + +! /* Check for keyboard interrupt */ + if (VimErrorCheck()) + return NULL; + +*** ../vim-7.3.924/src/if_python.c 2013-05-06 03:52:44.000000000 +0200 +--- src/if_python.c 2013-05-06 04:06:04.000000000 +0200 +*************** +*** 773,779 **** + + /* Remove the element from sys.path that was added because of our + * argv[0] value in PythonMod_Init(). Previously we used an empty +! * string, but dependinding on the OS we then get an empty entry or + * the current directory in sys.path. */ + PyRun_SimpleString("import sys; sys.path = filter(lambda x: x != '/must>not&exist', sys.path)"); + +--- 773,779 ---- + + /* Remove the element from sys.path that was added because of our + * argv[0] value in PythonMod_Init(). Previously we used an empty +! * string, but depending on the OS we then get an empty entry or + * the current directory in sys.path. */ + PyRun_SimpleString("import sys; sys.path = filter(lambda x: x != '/must>not&exist', sys.path)"); + +*** ../vim-7.3.924/src/if_python3.c 2013-05-06 03:52:44.000000000 +0200 +--- src/if_python3.c 2013-05-06 04:06:04.000000000 +0200 +*************** +*** 766,772 **** + + /* Remove the element from sys.path that was added because of our + * argv[0] value in Py3Init_vim(). Previously we used an empty +! * string, but dependinding on the OS we then get an empty entry or + * the current directory in sys.path. + * Only after vim has been imported, the element does exist in + * sys.path. +--- 766,772 ---- + + /* Remove the element from sys.path that was added because of our + * argv[0] value in Py3Init_vim(). Previously we used an empty +! * string, but depending on the OS we then get an empty entry or + * the current directory in sys.path. + * Only after vim has been imported, the element does exist in + * sys.path. +*** ../vim-7.3.924/src/if_ruby.c 2013-04-14 16:18:52.000000000 +0200 +--- src/if_ruby.c 2013-05-06 04:06:04.000000000 +0200 +*************** +*** 113,119 **** + #endif + + /* +! * Backward compatiblity for Ruby 1.8 and earlier. + * Ruby 1.9 does not provide STR2CSTR, instead StringValuePtr is provided. + * Ruby 1.9 does not provide RXXX(s)->len and RXXX(s)->ptr, instead + * RXXX_LEN(s) and RXXX_PTR(s) are provided. +--- 113,119 ---- + #endif + + /* +! * Backward compatibility for Ruby 1.8 and earlier. + * Ruby 1.9 does not provide STR2CSTR, instead StringValuePtr is provided. + * Ruby 1.9 does not provide RXXX(s)->len and RXXX(s)->ptr, instead + * RXXX_LEN(s) and RXXX_PTR(s) are provided. +*************** +*** 1333,1339 **** + rb_global_variable(&objtbl); + + /* The Vim module used to be called "VIM", but "Vim" is better. Make an +! * alias "VIM" for backwards compatiblity. */ + mVIM = rb_define_module("Vim"); + rb_define_const(rb_cObject, "VIM", mVIM); + rb_define_const(mVIM, "VERSION_MAJOR", INT2NUM(VIM_VERSION_MAJOR)); +--- 1333,1339 ---- + rb_global_variable(&objtbl); + + /* The Vim module used to be called "VIM", but "Vim" is better. Make an +! * alias "VIM" for backwards compatibility. */ + mVIM = rb_define_module("Vim"); + rb_define_const(rb_cObject, "VIM", mVIM); + rb_define_const(mVIM, "VERSION_MAJOR", INT2NUM(VIM_VERSION_MAJOR)); +*** ../vim-7.3.924/src/main.aap 2010-08-15 21:57:28.000000000 +0200 +--- src/main.aap 2013-05-06 04:06:04.000000000 +0200 +*************** +*** 1213,1221 **** + :move gui_mac.rsrc.rsrcfork $(RESDIR)/$(VIMNAME).rsrc + + # po/Make_osx.pl says something about generating a Mac message file +! # for Ukrananian. Would somebody using Mac OS X in Ukranian + # *really* be upset that Carbon Vim was not localised in +! # Ukranian? + # + #bundle-language: bundle-dir po/Make_osx.pl + # cd po && perl Make_osx.pl --outdir ../$(RESDIR) $(MULTILANG) +--- 1213,1221 ---- + :move gui_mac.rsrc.rsrcfork $(RESDIR)/$(VIMNAME).rsrc + + # po/Make_osx.pl says something about generating a Mac message file +! # for Ukrainian. Would somebody using Mac OS X in Ukrainian + # *really* be upset that Carbon Vim was not localised in +! # Ukrainian? + # + #bundle-language: bundle-dir po/Make_osx.pl + # cd po && perl Make_osx.pl --outdir ../$(RESDIR) $(MULTILANG) +*** ../vim-7.3.924/src/mbyte.c 2013-02-26 14:56:24.000000000 +0100 +--- src/mbyte.c 2013-05-06 04:06:04.000000000 +0200 +*************** +*** 903,909 **** + { + switch (enc_dbcs) + { +! /* please add classfy routine for your language in here */ + + case DBCS_JPNU: /* ? */ + case DBCS_JPN: +--- 903,909 ---- + { + switch (enc_dbcs) + { +! /* please add classify routine for your language in here */ + + case DBCS_JPNU: /* ? */ + case DBCS_JPN: +*************** +*** 1003,1009 **** + * 26 : Box Drawings + * 27 : Unit Symbols + * 28 : Circled/Parenthesized Letter +! * 29 : Hirigana/Katakana + * 30 : Cyrillic Letter + */ + +--- 1003,1009 ---- + * 26 : Box Drawings + * 27 : Unit Symbols + * 28 : Circled/Parenthesized Letter +! * 29 : Hiragana/Katakana + * 30 : Cyrillic Letter + */ + +*************** +*** 1054,1060 **** + return 28; + case 0xAA: + case 0xAB: +! /* Hirigana/Katakana */ + return 29; + case 0xAC: + /* Cyrillic Letter */ +--- 1054,1060 ---- + return 28; + case 0xAA: + case 0xAB: +! /* Hiragana/Katakana */ + return 29; + case 0xAC: + /* Cyrillic Letter */ +*************** +*** 4599,4605 **** + } + + /* The thing which setting "preedit_start_col" to MAXCOL means that +! * "preedit_start_col" will be set forcely when calling + * preedit_changed_cb() next time. + * "preedit_start_col" should not reset with MAXCOL on this part. Vim + * is simulating the preediting by using add_to_input_str(). when +--- 4599,4605 ---- + } + + /* The thing which setting "preedit_start_col" to MAXCOL means that +! * "preedit_start_col" will be set forcedly when calling + * preedit_changed_cb() next time. + * "preedit_start_col" should not reset with MAXCOL on this part. Vim + * is simulating the preediting by using add_to_input_str(). when +*** ../vim-7.3.924/src/memfile.c 2011-05-10 16:41:13.000000000 +0200 +--- src/memfile.c 2013-05-06 04:06:04.000000000 +0200 +*************** +*** 628,634 **** + * sync from the system itself). + */ + # if defined(__EMX__) +! error "Dont use fsync with EMX! Read emxdoc.doc or emxfix01.doc for info." + # endif + if (STRCMP(p_sws, "fsync") == 0) + { +--- 628,634 ---- + * sync from the system itself). + */ + # if defined(__EMX__) +! error "Don't use fsync with EMX! Read emxdoc.doc or emxfix01.doc for info." + # endif + if (STRCMP(p_sws, "fsync") == 0) + { +*************** +*** 1075,1081 **** + if (nr > mfp->mf_infile_count) /* beyond end of file */ + { + nr = mfp->mf_infile_count; +! hp2 = mf_find_hash(mfp, nr); /* NULL catched below */ + } + else + hp2 = hp; +--- 1075,1081 ---- + if (nr > mfp->mf_infile_count) /* beyond end of file */ + { + nr = mfp->mf_infile_count; +! hp2 = mf_find_hash(mfp, nr); /* NULL caught below */ + } + else + hp2 = hp; +*************** +*** 1184,1190 **** + { + new_bnum = freep->bh_bnum; + /* +! * If the page count of the free block was larger, recude it. + * If the page count matches, remove the block from the free list + */ + if (freep->bh_page_count > page_count) +--- 1184,1190 ---- + { + new_bnum = freep->bh_bnum; + /* +! * If the page count of the free block was larger, reduce it. + * If the page count matches, remove the block from the free list + */ + if (freep->bh_page_count > page_count) +*************** +*** 1309,1315 **** + mf_set_ffname(mfp); + #if defined(MSDOS) || defined(MSWIN) + /* +! * A ":!cd e:xxx" may change the directory without us knowning, use the + * full pathname always. Careful: This frees fname! + */ + mf_fullname(mfp); +--- 1309,1315 ---- + mf_set_ffname(mfp); + #if defined(MSDOS) || defined(MSWIN) + /* +! * A ":!cd e:xxx" may change the directory without us knowing, use the + * full pathname always. Careful: This frees fname! + */ + mf_fullname(mfp); +*** ../vim-7.3.924/src/memline.c 2012-10-03 18:24:55.000000000 +0200 +--- src/memline.c 2013-05-06 04:01:02.000000000 +0200 +*************** +*** 3141,3147 **** + ) + set_keep_msg((char_u *)_(no_lines_msg), 0); + +! /* FEAT_BYTEOFF already handled in there, dont worry 'bout it below */ + i = ml_replace((linenr_T)1, (char_u *)"", TRUE); + buf->b_ml.ml_flags |= ML_EMPTY; + +--- 3141,3147 ---- + ) + set_keep_msg((char_u *)_(no_lines_msg), 0); + +! /* FEAT_BYTEOFF already handled in there, don't worry 'bout it below */ + i = ml_replace((linenr_T)1, (char_u *)"", TRUE); + buf->b_ml.ml_flags |= ML_EMPTY; + +*** ../vim-7.3.924/src/misc1.c 2013-05-04 03:40:22.000000000 +0200 +--- src/misc1.c 2013-05-06 04:06:04.000000000 +0200 +*************** +*** 1654,1660 **** + if (vim_iswhite(string[0])) + { + if (i == 0 || !vim_iswhite(line[i - 1])) +! continue; /* missing shite space */ + while (vim_iswhite(string[0])) + ++string; + } +--- 1654,1660 ---- + if (vim_iswhite(string[0])) + { + if (i == 0 || !vim_iswhite(line[i - 1])) +! continue; /* missing white space */ + while (vim_iswhite(string[0])) + ++string; + } +*** ../vim-7.3.924/src/misc2.c 2013-04-12 14:42:35.000000000 +0200 +--- src/misc2.c 2013-05-06 03:59:29.000000000 +0200 +*************** +*** 2907,2913 **** + int modifiers = *modp; + + #ifdef MACOS +! /* Command-key really special, No fancynest */ + if (!(modifiers & MOD_MASK_CMD)) + #endif + if ((modifiers & MOD_MASK_SHIFT) && ASCII_ISALPHA(key)) +--- 2907,2913 ---- + int modifiers = *modp; + + #ifdef MACOS +! /* Command-key really special, no fancynest */ + if (!(modifiers & MOD_MASK_CMD)) + #endif + if ((modifiers & MOD_MASK_SHIFT) && ASCII_ISALPHA(key)) +*************** +*** 2934,2940 **** + key = K_ZERO; + } + #ifdef MACOS +! /* Command-key really special, No fancynest */ + if (!(modifiers & MOD_MASK_CMD)) + #endif + if ((modifiers & MOD_MASK_ALT) && key < 0x80 +--- 2934,2940 ---- + key = K_ZERO; + } + #ifdef MACOS +! /* Command-key really special, no fancynest */ + if (!(modifiers & MOD_MASK_CMD)) + #endif + if ((modifiers & MOD_MASK_ALT) && key < 0x80 +*** ../vim-7.3.924/src/nbdebug.c 2010-08-15 21:57:29.000000000 +0200 +--- src/nbdebug.c 2013-05-06 04:06:04.000000000 +0200 +*************** +*** 17,23 **** + * debugging startup problems because gvim will be started automatically from + * netbeans and cannot be run directly from a debugger. The only way to debug + * a gvim started by netbeans is by attaching a debugger to it. Without this +! * tool all starup code will have completed before you can get the pid and + * attach. + * + * The second tool is a log tool. +--- 17,23 ---- + * debugging startup problems because gvim will be started automatically from + * netbeans and cannot be run directly from a debugger. The only way to debug + * a gvim started by netbeans is by attaching a debugger to it. Without this +! * tool all startup code will have completed before you can get the pid and + * attach. + * + * The second tool is a log tool. +*** ../vim-7.3.924/src/normal.c 2013-04-24 18:34:40.000000000 +0200 +--- src/normal.c 2013-05-06 04:06:04.000000000 +0200 +*************** +*** 2513,2519 **** + + #ifndef FEAT_VISUAL + /* +! * ALT is only used for starging/extending Visual mode. + */ + if ((mod_mask & MOD_MASK_ALT)) + return FALSE; +--- 2513,2519 ---- + + #ifndef FEAT_VISUAL + /* +! * ALT is only used for starting/extending Visual mode. + */ + if ((mod_mask & MOD_MASK_ALT)) + return FALSE; +*************** +*** 5084,5090 **** + } + break; + +! /* "zE": erease all folds */ + case 'E': if (foldmethodIsManual(curwin)) + { + clearFolding(curwin); +--- 5084,5090 ---- + } + break; + +! /* "zE": erase all folds */ + case 'E': if (foldmethodIsManual(curwin)) + { + clearFolding(curwin); +*************** +*** 7465,7471 **** + static char_u trans[] = "YyDdCcxdXdAAIIrr"; + + /* Uppercase means linewise, except in block mode, then "D" deletes till +! * the end of the line, and "C" replaces til EOL */ + if (isupper(cap->cmdchar)) + { + if (VIsual_mode != Ctrl_V) +--- 7465,7471 ---- + static char_u trans[] = "YyDdCcxdXdAAIIrr"; + + /* Uppercase means linewise, except in block mode, then "D" deletes till +! * the end of the line, and "C" replaces till EOL */ + if (isupper(cap->cmdchar)) + { + if (VIsual_mode != Ctrl_V) +*************** +*** 8804,8810 **** + * at first, but it's really more what we mean when we say + * 'cw'. + * Another strangeness: When standing on the end of a word +! * "ce" will change until the end of the next wordt, but "cw" + * will change only one character! This is done by setting + * flag. + */ +--- 8804,8810 ---- + * at first, but it's really more what we mean when we say + * 'cw'. + * Another strangeness: When standing on the end of a word +! * "ce" will change until the end of the next word, but "cw" + * will change only one character! This is done by setting + * flag. + */ +*************** +*** 9150,9156 **** + { + int save_State = State; + +! /* Pretent Insert mode here to allow the cursor on the + * character past the end of the line */ + State = INSERT; + coladvance((colnr_T)MAXCOL); +--- 9150,9156 ---- + { + int save_State = State; + +! /* Pretend Insert mode here to allow the cursor on the + * character past the end of the line */ + State = INSERT; + coladvance((colnr_T)MAXCOL); +*************** +*** 9189,9195 **** + { + int save_State = State; + +! /* Pretent Insert mode here to allow the cursor on the + * character past the end of the line */ + State = INSERT; + coladvance(getviscol()); +--- 9189,9195 ---- + { + int save_State = State; + +! /* Pretend Insert mode here to allow the cursor on the + * character past the end of the line */ + State = INSERT; + coladvance(getviscol()); +*** ../vim-7.3.924/src/ops.c 2013-03-13 17:50:20.000000000 +0100 +--- src/ops.c 2013-05-06 04:06:04.000000000 +0200 +*************** +*** 398,404 **** + #ifdef FEAT_RIGHTLEFT + int old_p_ri = p_ri; + +! p_ri = 0; /* don't want revins in ident */ + #endif + + State = INSERT; /* don't want REPLACE for State */ +--- 398,404 ---- + #ifdef FEAT_RIGHTLEFT + int old_p_ri = p_ri; + +! p_ri = 0; /* don't want revins in indent */ + #endif + + State = INSERT; /* don't want REPLACE for State */ +*** ../vim-7.3.924/src/os_amiga.c 2012-11-20 16:53:34.000000000 +0100 +--- src/os_amiga.c 2013-05-06 04:06:04.000000000 +0200 +*************** +*** 118,124 **** + } + + /* +! * mch_inchar(): low level input funcion. + * Get a characters from the keyboard. + * If time == 0 do not wait for characters. + * If time == n wait a short time for characters. +--- 118,124 ---- + } + + /* +! * mch_inchar(): low level input function. + * Get a characters from the keyboard. + * If time == 0 do not wait for characters. + * If time == n wait a short time for characters. +*** ../vim-7.3.924/src/os_mac.h 2010-08-15 21:57:32.000000000 +0200 +--- src/os_mac.h 2013-05-06 04:06:04.000000000 +0200 +*************** +*** 45,51 **** + /* Get stat.h or something similar. Comment: How come some OS get in in vim.h */ + # include + /* && defined(HAVE_CURSE) */ +! /* The curses.h from MacOS X provides by default some BACKWARD compatibilty + * definition which can cause us problem later on. So we undefine a few of them. */ + # include + # undef reg +--- 45,51 ---- + /* Get stat.h or something similar. Comment: How come some OS get in in vim.h */ + # include + /* && defined(HAVE_CURSE) */ +! /* The curses.h from MacOS X provides by default some BACKWARD compatibility + * definition which can cause us problem later on. So we undefine a few of them. */ + # include + # undef reg +*** ../vim-7.3.924/src/os_msdos.c 2012-11-20 16:53:34.000000000 +0100 +--- src/os_msdos.c 2013-05-06 04:06:04.000000000 +0200 +*************** +*** 702,708 **** + * If Vim should work over the serial line after a 'ctty com1' we must use + * kbhit() and getch(). (jw) + * Usually kbhit() is not used, because then CTRL-C and CTRL-P +! * will be catched by DOS (mool). + * + * return TRUE if a character is available, FALSE otherwise + */ +--- 702,708 ---- + * If Vim should work over the serial line after a 'ctty com1' we must use + * kbhit() and getch(). (jw) + * Usually kbhit() is not used, because then CTRL-C and CTRL-P +! * will be caught by DOS (mool). + * + * return TRUE if a character is available, FALSE otherwise + */ +*************** +*** 971,977 **** + } + + /* +! * mch_inchar(): low level input funcion. + * Get a characters from the keyboard. + * If time == 0 do not wait for characters. + * If time == n wait a short time for characters. +--- 971,977 ---- + } + + /* +! * mch_inchar(): low level input function. + * Get a characters from the keyboard. + * If time == 0 do not wait for characters. + * If time == n wait a short time for characters. +*************** +*** 993,999 **** + + /* + * if we got a ctrl-C when we were busy, there will be a "^C" somewhere +! * on the sceen, so we need to redisplay it. + */ + if (delayed_redraw) + { +--- 993,999 ---- + + /* + * if we got a ctrl-C when we were busy, there will be a "^C" somewhere +! * on the screen, so we need to redisplay it. + */ + if (delayed_redraw) + { +*************** +*** 1745,1751 **** + mch_setmouse(int on) + { + mouse_active = on; +! mouse_hidden = TRUE; /* dont show it until moved */ + } + #endif + +--- 1745,1751 ---- + mch_setmouse(int on) + { + mouse_active = on; +! mouse_hidden = TRUE; /* don't show it until moved */ + } + #endif + +*************** +*** 2438,2444 **** + long start_time; + int tick_count; + +! /* int 02xf, AX = 0x1701 attempts to open the Windows clipboard. Upon + * return from the interrupt, if AX is non-zero, the clipboard was + * successfully opened. If AX is zero, the clipboard could not be opened + * because it is currently in use by another process. +--- 2438,2444 ---- + long start_time; + int tick_count; + +! /* int 0x2f, AX = 0x1701 attempts to open the Windows clipboard. Upon + * return from the interrupt, if AX is non-zero, the clipboard was + * successfully opened. If AX is zero, the clipboard could not be opened + * because it is currently in use by another process. +*************** +*** 2533,2539 **** + { + __dpmi_regs dpmi_regs; + +! /* int 02xf, AX = 0x1702 attempts to empty the Windows clipboard. Upon + * return from the interrupt, if AX == 0, the clipboard could not be + * emptied (for some reason). + */ +--- 2533,2539 ---- + { + __dpmi_regs dpmi_regs; + +! /* int 0x2f, AX = 0x1702 attempts to empty the Windows clipboard. Upon + * return from the interrupt, if AX == 0, the clipboard could not be + * emptied (for some reason). + */ +*************** +*** 2616,2622 **** + case CF_TEXT: /* Windows text */ + case CF_OEMTEXT: /* DOS (OEM) text */ + +! /* int 02xf, AX = 0x1704 returns the number of bytes of data currently + * on the Windows clipboard, for the specified format. Upon return + * from the interrupt, DX:AX = the number of bytes, rounded up to the + * nearest multiple of 32. +--- 2616,2622 ---- + case CF_TEXT: /* Windows text */ + case CF_OEMTEXT: /* DOS (OEM) text */ + +! /* int 0x2f, AX = 0x1704 returns the number of bytes of data currently + * on the Windows clipboard, for the specified format. Upon return + * from the interrupt, DX:AX = the number of bytes, rounded up to the + * nearest multiple of 32. +*************** +*** 2820,2826 **** + clip_data_size); /* how many bytes to copy */ + + /* Send data from the DOS transfer buffer to the Windows clipboard. +! * int 02xf, AX = 0x1703 sends SI:CX bytes of data from the buffer + * at ES:BX, to the clipboard. + */ + dpmi_regs.x.ax = 0x1703; /* send clipboard data */ +--- 2820,2826 ---- + clip_data_size); /* how many bytes to copy */ + + /* Send data from the DOS transfer buffer to the Windows clipboard. +! * int 0x2f, AX = 0x1703 sends SI:CX bytes of data from the buffer + * at ES:BX, to the clipboard. + */ + dpmi_regs.x.ax = 0x1703; /* send clipboard data */ +*** ../vim-7.3.924/src/os_mswin.c 2013-03-19 14:48:25.000000000 +0100 +--- src/os_mswin.c 2013-05-06 04:06:04.000000000 +0200 +*************** +*** 1794,1800 **** + * + * So we create a hidden window, and arrange to destroy it on exit. + */ +! HWND message_window = 0; /* window that's handling messsages */ + + #define VIM_CLASSNAME "VIM_MESSAGES" + #define VIM_CLASSNAME_LEN (sizeof(VIM_CLASSNAME) - 1) +--- 1794,1800 ---- + * + * So we create a hidden window, and arrange to destroy it on exit. + */ +! HWND message_window = 0; /* window that's handling messages */ + + #define VIM_CLASSNAME "VIM_MESSAGES" + #define VIM_CLASSNAME_LEN (sizeof(VIM_CLASSNAME) - 1) +*************** +*** 1857,1863 **** + + static int save_reply(HWND server, char_u *reply, int expr); + +! /*s + * The window procedure for the hidden message window. + * It handles callback messages and notifications from servers. + * In order to process these messages, it is necessary to run a +--- 1857,1863 ---- + + static int save_reply(HWND server, char_u *reply, int expr); + +! /* + * The window procedure for the hidden message window. + * It handles callback messages and notifications from servers. + * In order to process these messages, it is necessary to run a +*************** +*** 2603,2609 **** + + ReleaseDC(hwnd, hdc); + +! /* If we couldn't find a useable font, return failure */ + if (n == 1) + return FAIL; + +--- 2603,2609 ---- + + ReleaseDC(hwnd, hdc); + +! /* If we couldn't find a usable font, return failure */ + if (n == 1) + return FAIL; + +*** ../vim-7.3.924/src/os_win16.h 2012-11-20 16:53:34.000000000 +0100 +--- src/os_win16.h 2013-05-06 04:06:04.000000000 +0200 +*************** +*** 50,56 **** + #endif + + /* toupper() is not really broken, but it's very slow. Probably because of +! * using unicde characters on Windows NT */ + #define BROKEN_TOUPPER + + #define FNAME_ILLEGAL "\"*?><|" /* illegal characters in a file name */ +--- 50,56 ---- + #endif + + /* toupper() is not really broken, but it's very slow. Probably because of +! * using unicode characters on Windows NT */ + #define BROKEN_TOUPPER + + #define FNAME_ILLEGAL "\"*?><|" /* illegal characters in a file name */ +*** ../vim-7.3.924/src/os_win32.c 2013-03-19 14:48:25.000000000 +0100 +--- src/os_win32.c 2013-05-06 04:06:04.000000000 +0200 +*************** +*** 161,167 **** + + #ifndef PROTO + +! /* Enable common dialogs input unicode from IME if posible. */ + #ifdef FEAT_MBYTE + LRESULT (WINAPI *pDispatchMessage)(CONST MSG *) = DispatchMessage; + BOOL (WINAPI *pGetMessage)(LPMSG, HWND, UINT, UINT) = GetMessage; +--- 161,167 ---- + + #ifndef PROTO + +! /* Enable common dialogs input unicode from IME if possible. */ + #ifdef FEAT_MBYTE + LRESULT (WINAPI *pDispatchMessage)(CONST MSG *) = DispatchMessage; + BOOL (WINAPI *pGetMessage)(LPMSG, HWND, UINT, UINT) = GetMessage; +*************** +*** 1032,1038 **** + DWORD dwLR = (pmer->dwButtonState & LEFT_RIGHT); + + /* if either left or right button only is pressed, see if the +! * the next mouse event has both of them pressed */ + if (dwLR == LEFT || dwLR == RIGHT) + { + for (;;) +--- 1032,1038 ---- + DWORD dwLR = (pmer->dwButtonState & LEFT_RIGHT); + + /* if either left or right button only is pressed, see if the +! * next mouse event has both of them pressed */ + if (dwLR == LEFT || dwLR == RIGHT) + { + for (;;) +*** ../vim-7.3.924/src/os_win32.h 2013-03-19 14:48:25.000000000 +0100 +--- src/os_win32.h 2013-05-06 04:06:04.000000000 +0200 +*************** +*** 201,207 **** + + #ifndef PROTO + +! /* Enable common dialogs input unicode from IME if posible. */ + #ifdef FEAT_MBYTE + /* The variables are defined in os_win32.c. */ + extern LRESULT (WINAPI *pDispatchMessage)(CONST MSG *); +--- 201,207 ---- + + #ifndef PROTO + +! /* Enable common dialogs input unicode from IME if possible. */ + #ifdef FEAT_MBYTE + /* The variables are defined in os_win32.c. */ + extern LRESULT (WINAPI *pDispatchMessage)(CONST MSG *); +*** ../vim-7.3.924/src/quickfix.c 2013-03-07 16:32:49.000000000 +0100 +--- src/quickfix.c 2013-05-06 04:06:04.000000000 +0200 +*************** +*** 3235,3241 **** + mch_dirname(dirname_start, MAXPATHL); + + #ifdef FEAT_AUTOCMD +! /* Remeber the value of qf_start, so that we can check for autocommands + * changing the current quickfix list. */ + cur_qf_start = qi->qf_lists[qi->qf_curlist].qf_start; + #endif +--- 3235,3241 ---- + mch_dirname(dirname_start, MAXPATHL); + + #ifdef FEAT_AUTOCMD +! /* Remember the value of qf_start, so that we can check for autocommands + * changing the current quickfix list. */ + cur_qf_start = qi->qf_lists[qi->qf_curlist].qf_start; + #endif +*** ../vim-7.3.924/src/screen.c 2013-02-13 12:15:59.000000000 +0100 +--- src/screen.c 2013-05-06 04:06:04.000000000 +0200 +*************** +*** 4044,4050 **** + + /* If a double-width char doesn't fit at the left side display + * a '<' in the first column. Don't do this for unprintable +! * charactes. */ + if (n_skip > 0 && mb_l > 1 && n_extra == 0) + { + n_extra = 1; +--- 4044,4050 ---- + + /* If a double-width char doesn't fit at the left side display + * a '<' in the first column. Don't do this for unprintable +! * characters. */ + if (n_skip > 0 && mb_l > 1 && n_extra == 0) + { + n_extra = 1; +*** ../vim-7.3.924/src/search.c 2013-04-03 21:14:25.000000000 +0200 +--- src/search.c 2013-05-06 04:06:04.000000000 +0200 +*************** +*** 73,79 **** + { + char_u *pat; /* the pattern (in allocated memory) or NULL */ + int magic; /* magicness of the pattern */ +! int no_scs; /* no smarcase for this pattern */ + struct soffset off; + }; + +--- 73,79 ---- + { + char_u *pat; /* the pattern (in allocated memory) or NULL */ + int magic; /* magicness of the pattern */ +! int no_scs; /* no smartcase for this pattern */ + struct soffset off; + }; + +*************** +*** 3546,3552 **** + + /* + * Find block under the cursor, cursor at end. +! * "what" and "other" are two matching parenthesis/paren/etc. + */ + int + current_block(oap, count, include, what, other) +--- 3546,3552 ---- + + /* + * Find block under the cursor, cursor at end. +! * "what" and "other" are two matching parenthesis/brace/etc. + */ + int + current_block(oap, count, include, what, other) +*** ../vim-7.3.924/src/spell.c 2012-06-29 12:57:03.000000000 +0200 +--- src/spell.c 2013-05-06 04:06:04.000000000 +0200 +*************** +*** 4228,4234 **** + ga_init2(&ga, sizeof(langp_T), 2); + clear_midword(wp); + +! /* Make a copy of 'spellang', the SpellFileMissing autocommands may change + * it under our fingers. */ + spl_copy = vim_strsave(wp->w_s->b_p_spl); + if (spl_copy == NULL) +--- 4228,4234 ---- + ga_init2(&ga, sizeof(langp_T), 2); + clear_midword(wp); + +! /* Make a copy of 'spelllang', the SpellFileMissing autocommands may change + * it under our fingers. */ + spl_copy = vim_strsave(wp->w_s->b_p_spl); + if (spl_copy == NULL) +*************** +*** 7645,7651 **** + + /* Compress both trees. Either they both have many nodes, which makes + * compression useful, or one of them is small, which means +! * compression goes fast. But when filling the souldfold word tree + * there is no keep-case tree. */ + wordtree_compress(spin, spin->si_foldroot); + if (affixID >= 0) +--- 7645,7651 ---- + + /* Compress both trees. Either they both have many nodes, which makes + * compression useful, or one of them is small, which means +! * compression goes fast. But when filling the soundfold word tree + * there is no keep-case tree. */ + wordtree_compress(spin, spin->si_foldroot); + if (affixID >= 0) +*************** +*** 8671,8677 **** + unsigned words_done = 0; + int wordcount[MAXWLEN]; + +! /* We use si_foldroot for the souldfolded trie. */ + spin->si_foldroot = wordtree_alloc(spin); + if (spin->si_foldroot == NULL) + return FAIL; +--- 8671,8677 ---- + unsigned words_done = 0; + int wordcount[MAXWLEN]; + +! /* We use si_foldroot for the soundfolded trie. */ + spin->si_foldroot = wordtree_alloc(spin); + if (spin->si_foldroot == NULL) + return FAIL; +*************** +*** 13019,13025 **** + + /* + * Combine the list of suggestions in su->su_ga and su->su_sga. +! * They are intwined. + */ + static void + score_combine(su) +--- 13019,13025 ---- + + /* + * Combine the list of suggestions in su->su_ga and su->su_sga. +! * They are entwined. + */ + static void + score_combine(su) +*************** +*** 13457,13463 **** + + /* Add a small penalty for changing the first letter from + * lower to upper case. Helps for "tath" -> "Kath", which is +! * less common thatn "tath" -> "path". Don't do it when the + * letter is the same, that has already been counted. */ + gc = PTR2CHAR(p); + if (SPELL_ISUPPER(gc)) +--- 13457,13463 ---- + + /* Add a small penalty for changing the first letter from + * lower to upper case. Helps for "tath" -> "Kath", which is +! * less common than "tath" -> "path". Don't do it when the + * letter is the same, that has already been counted. */ + gc = PTR2CHAR(p); + if (SPELL_ISUPPER(gc)) +*** ../vim-7.3.924/src/structs.h 2013-04-15 12:27:30.000000000 +0200 +--- src/structs.h 2013-05-06 04:06:04.000000000 +0200 +*************** +*** 1215,1221 **** + #ifdef FEAT_SYN_HL + hashtab_T b_keywtab; /* syntax keywords hash table */ + hashtab_T b_keywtab_ic; /* idem, ignore case */ +! int b_syn_error; /* TRUE when error occured in HL */ + int b_syn_ic; /* ignore case for :syn cmds */ + int b_syn_spell; /* SYNSPL_ values */ + garray_T b_syn_patterns; /* table for syntax patterns */ +--- 1215,1221 ---- + #ifdef FEAT_SYN_HL + hashtab_T b_keywtab; /* syntax keywords hash table */ + hashtab_T b_keywtab_ic; /* idem, ignore case */ +! int b_syn_error; /* TRUE when error occurred in HL */ + int b_syn_ic; /* ignore case for :syn cmds */ + int b_syn_spell; /* SYNSPL_ values */ + garray_T b_syn_patterns; /* table for syntax patterns */ +*** ../vim-7.3.924/src/syntax.c 2013-05-04 03:42:30.000000000 +0200 +--- src/syntax.c 2013-05-06 04:06:04.000000000 +0200 +*************** +*** 6069,6075 **** + static int depth = 0; + int r; + +! /* If spp has a "containedin" list and "cur_si" is in it, return TRUE. */ + if (cur_si != NULL && ssp->cont_in_list != NULL + && !(cur_si->si_flags & HL_MATCH)) + { +--- 6069,6075 ---- + static int depth = 0; + int r; + +! /* If ssp has a "containedin" list and "cur_si" is in it, return TRUE. */ + if (cur_si != NULL && ssp->cont_in_list != NULL + && !(cur_si->si_flags & HL_MATCH)) + { +*** ../vim-7.3.924/src/window.c 2013-04-15 15:55:15.000000000 +0200 +--- src/window.c 2013-05-06 04:06:04.000000000 +0200 +*************** +*** 3687,3693 **** + + /* + * Prepare for leaving the current tab page. +! * When autocomands change "curtab" we don't leave the tab page and return + * FAIL. + * Careful: When OK is returned need to get a new tab page very very soon! + */ +--- 3687,3693 ---- + + /* + * Prepare for leaving the current tab page. +! * When autocommands change "curtab" we don't leave the tab page and return + * FAIL. + * Careful: When OK is returned need to get a new tab page very very soon! + */ +*** ../vim-7.3.924/vimtutor.com 2010-08-15 21:57:32.000000000 +0200 +--- vimtutor.com 2013-05-06 04:04:07.000000000 +0200 +*************** +*** 30,36 **** + $ ! + $ if f$search ("vim:vim.exe") .eqs. "" + $ then +! $ write sys$error "Error - Can't run tutoral. VIM not found." + $ exit + $ endif + $ ! +--- 30,36 ---- + $ ! + $ if f$search ("vim:vim.exe") .eqs. "" + $ then +! $ write sys$error "Error - Can't run tutorial. VIM not found." + $ exit + $ endif + $ ! +*** ../vim-7.3.924/src/version.c 2013-05-06 03:52:44.000000000 +0200 +--- src/version.c 2013-05-06 04:03:10.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 925, + /**/ + +-- + A KNIGHT rides into shot and hacks him to the ground. He rides off. + We stay for a moment on the glade. A MIDDLE-AGED LADY in a C. & A. + twin-set emerges from the trees and looks in horror at the body of her + HUSBAND. +MRS HISTORIAN: FRANK! + "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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.926 b/7.3.926 new file mode 100644 index 0000000..f0d6cc3 --- /dev/null +++ b/7.3.926 @@ -0,0 +1,905 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.926 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.926 +Problem: Autocommands are triggered by setwinvar() et al. Missing BufEnter + on :tabclose. Duplicate WinEnter on :tabclose. Wrong order of + events for :tablose and :tabnew. +Solution: Fix these autocommand events. (Zyx) +Files: runtime/doc/eval.txt, src/buffer.c, src/eval.c, src/ex_cmds2.c, + src/fileio.c, src/proto/window.pro, src/testdir/test62.in, + src/testdir/test62.ok, src/window.c + + +*** ../vim-7.3.925/runtime/doc/eval.txt 2013-02-20 21:11:14.000000000 +0100 +--- runtime/doc/eval.txt 2013-05-06 04:33:13.000000000 +0200 +*************** +*** 5294,5301 **** + |t:var| + Note that the variable name without "t:" must be used. + Tabs are numbered starting with one. +- Vim briefly goes to the tab page {tabnr}, this may trigger +- TabLeave and TabEnter autocommands. + This function is not available in the |sandbox|. + + settabwinvar({tabnr}, {winnr}, {varname}, {val}) *settabwinvar()* +--- 5320,5325 ---- +*************** +*** 5308,5315 **** + doesn't work for a global or local buffer variable. + For a local buffer option the global value is unchanged. + Note that the variable name without "w:" must be used. +- Vim briefly goes to the tab page {tabnr}, this may trigger +- TabLeave and TabEnter autocommands. + Examples: > + :call settabwinvar(1, 1, "&list", 0) + :call settabwinvar(3, 2, "myvar", "foobar") +--- 5332,5337 ---- +*** ../vim-7.3.925/src/buffer.c 2013-05-06 04:21:35.000000000 +0200 +--- src/buffer.c 2013-05-06 04:33:13.000000000 +0200 +*************** +*** 4551,4557 **** + * When the ":tab" modifier was used do this for all tab pages. + */ + if (had_tab > 0) +! goto_tabpage_tp(first_tabpage, TRUE); + for (;;) + { + tpnext = curtab->tp_next; +--- 4551,4557 ---- + * When the ":tab" modifier was used do this for all tab pages. + */ + if (had_tab > 0) +! goto_tabpage_tp(first_tabpage, TRUE, TRUE); + for (;;) + { + tpnext = curtab->tp_next; +*************** +*** 4663,4669 **** + if (!valid_tabpage(tpnext)) + tpnext = first_tabpage; /* start all over...*/ + # endif +! goto_tabpage_tp(tpnext, TRUE); + } + + /* +--- 4663,4669 ---- + if (!valid_tabpage(tpnext)) + tpnext = first_tabpage; /* start all over...*/ + # endif +! goto_tabpage_tp(tpnext, TRUE, TRUE); + } + + /* +*************** +*** 4767,4779 **** + if (last_curtab != new_curtab) + { + if (valid_tabpage(last_curtab)) +! goto_tabpage_tp(last_curtab, TRUE); + if (win_valid(last_curwin)) + win_enter(last_curwin, FALSE); + } + /* to window with first arg */ + if (valid_tabpage(new_curtab)) +! goto_tabpage_tp(new_curtab, TRUE); + if (win_valid(new_curwin)) + win_enter(new_curwin, FALSE); + +--- 4767,4779 ---- + if (last_curtab != new_curtab) + { + if (valid_tabpage(last_curtab)) +! goto_tabpage_tp(last_curtab, TRUE, TRUE); + if (win_valid(last_curwin)) + win_enter(last_curwin, FALSE); + } + /* to window with first arg */ + if (valid_tabpage(new_curtab)) +! goto_tabpage_tp(new_curtab, TRUE, TRUE); + if (win_valid(new_curwin)) + win_enter(new_curwin, FALSE); + +*************** +*** 4825,4831 **** + */ + #ifdef FEAT_WINDOWS + if (had_tab > 0) +! goto_tabpage_tp(first_tabpage, TRUE); + for (;;) + { + #endif +--- 4825,4831 ---- + */ + #ifdef FEAT_WINDOWS + if (had_tab > 0) +! goto_tabpage_tp(first_tabpage, TRUE, TRUE); + for (;;) + { + #endif +*************** +*** 4865,4871 **** + /* Without the ":tab" modifier only do the current tab page. */ + if (had_tab == 0 || tpnext == NULL) + break; +! goto_tabpage_tp(tpnext, TRUE); + } + #endif + +--- 4865,4871 ---- + /* Without the ":tab" modifier only do the current tab page. */ + if (had_tab == 0 || tpnext == NULL) + break; +! goto_tabpage_tp(tpnext, TRUE, TRUE); + } + #endif + +*** ../vim-7.3.925/src/eval.c 2013-05-06 04:21:35.000000000 +0200 +--- src/eval.c 2013-05-06 04:33:13.000000000 +0200 +*************** +*** 16604,16610 **** + if (tp != NULL && varname != NULL && varp != NULL) + { + save_curtab = curtab; +! goto_tabpage_tp(tp, TRUE); + + tabvarname = alloc((unsigned)STRLEN(varname) + 3); + if (tabvarname != NULL) +--- 16604,16610 ---- + if (tp != NULL && varname != NULL && varp != NULL) + { + save_curtab = curtab; +! goto_tabpage_tp(tp, FALSE, FALSE); + + tabvarname = alloc((unsigned)STRLEN(varname) + 3); + if (tabvarname != NULL) +*************** +*** 16617,16623 **** + + /* Restore current tabpage */ + if (valid_tabpage(save_curtab)) +! goto_tabpage_tp(save_curtab, TRUE); + } + } + +--- 16617,16623 ---- + + /* Restore current tabpage */ + if (valid_tabpage(save_curtab)) +! goto_tabpage_tp(save_curtab, FALSE, FALSE); + } + } + +*************** +*** 16654,16660 **** + /* set curwin to be our win, temporarily */ + *save_curwin = curwin; + *save_curtab = curtab; +! goto_tabpage_tp(tp, TRUE); + if (!win_valid(win)) + return FAIL; + curwin = win; +--- 16654,16660 ---- + /* set curwin to be our win, temporarily */ + *save_curwin = curwin; + *save_curtab = curtab; +! goto_tabpage_tp(tp, FALSE, FALSE); + if (!win_valid(win)) + return FAIL; + curwin = win; +*************** +*** 16672,16678 **** + /* Restore current tabpage and window, if still valid (autocommands can + * make them invalid). */ + if (valid_tabpage(save_curtab)) +! goto_tabpage_tp(save_curtab, TRUE); + if (win_valid(save_curwin)) + { + curwin = save_curwin; +--- 16672,16678 ---- + /* Restore current tabpage and window, if still valid (autocommands can + * make them invalid). */ + if (valid_tabpage(save_curtab)) +! goto_tabpage_tp(save_curtab, FALSE, FALSE); + if (win_valid(save_curwin)) + { + curwin = save_curwin; +*** ../vim-7.3.925/src/ex_cmds2.c 2013-05-06 04:21:35.000000000 +0200 +--- src/ex_cmds2.c 2013-05-06 04:33:13.000000000 +0200 +*************** +*** 2482,2488 **** + /* go to window "tp" */ + if (!valid_tabpage(tp)) + break; +! goto_tabpage_tp(tp, TRUE); + tp = tp->tp_next; + } + #endif +--- 2482,2488 ---- + /* go to window "tp" */ + if (!valid_tabpage(tp)) + break; +! goto_tabpage_tp(tp, TRUE, TRUE); + tp = tp->tp_next; + } + #endif +*** ../vim-7.3.925/src/fileio.c 2013-05-06 04:21:35.000000000 +0200 +--- src/fileio.c 2013-05-06 04:33:13.000000000 +0200 +*************** +*** 8934,8940 **** + if (wp == aucmd_win) + { + if (tp != curtab) +! goto_tabpage_tp(tp, TRUE); + win_goto(aucmd_win); + goto win_found; + } +--- 8934,8940 ---- + if (wp == aucmd_win) + { + if (tp != curtab) +! goto_tabpage_tp(tp, TRUE, TRUE); + win_goto(aucmd_win); + goto win_found; + } +*** ../vim-7.3.925/src/proto/window.pro 2012-07-19 18:05:40.000000000 +0200 +--- src/proto/window.pro 2013-05-06 04:33:13.000000000 +0200 +*************** +*** 27,33 **** + tabpage_T *find_tabpage __ARGS((int n)); + int tabpage_index __ARGS((tabpage_T *ftp)); + void goto_tabpage __ARGS((int n)); +! void goto_tabpage_tp __ARGS((tabpage_T *tp, int trigger_autocmds)); + void goto_tabpage_win __ARGS((tabpage_T *tp, win_T *wp)); + void tabpage_move __ARGS((int nr)); + void win_goto __ARGS((win_T *wp)); +--- 27,33 ---- + tabpage_T *find_tabpage __ARGS((int n)); + int tabpage_index __ARGS((tabpage_T *ftp)); + void goto_tabpage __ARGS((int n)); +! void goto_tabpage_tp __ARGS((tabpage_T *tp, int trigger_enter_autocmds, int trigger_leave_autocmds)); + void goto_tabpage_win __ARGS((tabpage_T *tp, win_T *wp)); + void tabpage_move __ARGS((int nr)); + void win_goto __ARGS((win_T *wp)); +*** ../vim-7.3.925/src/testdir/test62.in 2012-07-06 18:27:34.000000000 +0200 +--- src/testdir/test62.in 2013-05-06 04:35:08.000000000 +0200 +*************** +*** 120,125 **** +--- 120,187 ---- + :endtry + i=a  + :" ++ :" Test autocommands ++ :tabonly! ++ :let g:r=[] ++ :command -nargs=1 -bar C :call add(g:r, '=== ' . . ' ===')| ++ :function Test() ++ let hasau=has('autocmd') ++ if hasau ++ autocmd TabEnter * :call add(g:r, 'TabEnter') ++ autocmd WinEnter * :call add(g:r, 'WinEnter') ++ autocmd BufEnter * :call add(g:r, 'BufEnter') ++ autocmd TabLeave * :call add(g:r, 'TabLeave') ++ autocmd WinLeave * :call add(g:r, 'WinLeave') ++ autocmd BufLeave * :call add(g:r, 'BufLeave') ++ endif ++ let t:a='a' ++ C tab split ++ if !hasau ++ let g:r+=['WinLeave', 'TabLeave', 'WinEnter', 'TabEnter'] ++ endif ++ let t:a='b' ++ C tabnew ++ if !hasau ++ let g:r+=['WinLeave', 'TabLeave', 'WinEnter', 'TabEnter', 'BufLeave', 'BufEnter'] ++ endif ++ let t:a='c' ++ call add(g:r, join(map(range(1, tabpagenr('$')), 'gettabvar(v:val, "a")'))) ++ C call map(range(1, tabpagenr('$')), 'settabvar(v:val, "a", v:val*2)') ++ call add(g:r, join(map(range(1, tabpagenr('$')), 'gettabvar(v:val, "a")'))) ++ let w:a='a' ++ C vsplit ++ if !hasau ++ let g:r+=['WinLeave', 'WinEnter'] ++ endif ++ let w:a='a' ++ let tabn=tabpagenr() ++ let winr=range(1, winnr('$')) ++ C tabnext 1 ++ if !hasau ++ let g:r+=['BufLeave', 'WinLeave', 'TabLeave', 'WinEnter', 'TabEnter', 'BufEnter'] ++ endif ++ call add(g:r, join(map(copy(winr), 'gettabwinvar('.tabn.', v:val, "a")'))) ++ C call map(copy(winr), 'settabwinvar('.tabn.', v:val, "a", v:val*2)') ++ call add(g:r, join(map(copy(winr), 'gettabwinvar('.tabn.', v:val, "a")'))) ++ if hasau ++ augroup TabDestructive ++ autocmd TabEnter * :C tabnext 2 | C tabclose 3 ++ augroup END ++ C tabnext 3 ++ let g:r+=[tabpagenr().'/'.tabpagenr('$')] ++ autocmd! TabDestructive TabEnter ++ C tabnew ++ C tabnext 1 ++ autocmd TabDestructive TabEnter * nested :C tabnext 2 | C tabclose 3 ++ C tabnext 3 ++ let g:r+=[tabpagenr().'/'.tabpagenr('$')] ++ else ++ let g:r+=["=== tabnext 3 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","=== tabnext 2 ===","=== tabclose 3 ===","2/2","=== tabnew ===","WinLeave","TabLeave","WinEnter","TabEnter","BufLeave","BufEnter","=== tabnext 1 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","BufEnter","=== tabnext 3 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","=== tabnext 2 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","=== tabnext 2 ===","=== tabclose 3 ===","BufEnter","=== tabclose 3 ===","2/2",] ++ endif ++ endfunction ++ :call Test() ++ :$ put =g:r ++ :" + :" + :/^Results/,$w! test.out + :qa! +*** ../vim-7.3.925/src/testdir/test62.ok 2012-07-06 18:27:34.000000000 +0200 +--- src/testdir/test62.ok 2013-05-06 04:35:08.000000000 +0200 +*************** +*** 18,20 **** +--- 18,88 ---- + 4 + 6 + E474 caught. ++ === tab split === ++ WinLeave ++ TabLeave ++ WinEnter ++ TabEnter ++ === tabnew === ++ WinLeave ++ TabLeave ++ WinEnter ++ TabEnter ++ BufLeave ++ BufEnter ++ a b c ++ === call map(range(1, tabpagenr('$')), 'settabvar(v:val, === ++ a b c ++ === vsplit === ++ WinLeave ++ WinEnter ++ === tabnext 1 === ++ BufLeave ++ WinLeave ++ TabLeave ++ WinEnter ++ TabEnter ++ BufEnter ++ a a ++ === call map(copy(winr), 'settabwinvar('.tabn.', v:val, === ++ a a ++ === tabnext 3 === ++ BufLeave ++ WinLeave ++ TabLeave ++ WinEnter ++ TabEnter ++ === tabnext 2 === ++ === tabclose 3 === ++ 2/2 ++ === tabnew === ++ WinLeave ++ TabLeave ++ WinEnter ++ TabEnter ++ BufLeave ++ BufEnter ++ === tabnext 1 === ++ BufLeave ++ WinLeave ++ TabLeave ++ WinEnter ++ TabEnter ++ BufEnter ++ === tabnext 3 === ++ BufLeave ++ WinLeave ++ TabLeave ++ WinEnter ++ TabEnter ++ === tabnext 2 === ++ BufLeave ++ WinLeave ++ TabLeave ++ WinEnter ++ TabEnter ++ === tabnext 2 === ++ === tabclose 3 === ++ BufEnter ++ === tabclose 3 === ++ 2/2 +*** ../vim-7.3.925/src/window.c 2013-05-06 04:21:35.000000000 +0200 +--- src/window.c 2013-05-06 04:47:06.000000000 +0200 +*************** +*** 44,54 **** + static void new_frame __ARGS((win_T *wp)); + #if defined(FEAT_WINDOWS) || defined(PROTO) + static tabpage_T *alloc_tabpage __ARGS((void)); +! static int leave_tabpage __ARGS((buf_T *new_curbuf)); +! static void enter_tabpage __ARGS((tabpage_T *tp, buf_T *old_curbuf, int trigger_autocmds)); + static void frame_fix_height __ARGS((win_T *wp)); + static int frame_minheight __ARGS((frame_T *topfrp, win_T *next_curwin)); +! static void win_enter_ext __ARGS((win_T *wp, int undo_sync, int no_curwin)); + static void win_free __ARGS((win_T *wp, tabpage_T *tp)); + static void frame_append __ARGS((frame_T *after, frame_T *frp)); + static void frame_insert __ARGS((frame_T *before, frame_T *frp)); +--- 44,54 ---- + static void new_frame __ARGS((win_T *wp)); + #if defined(FEAT_WINDOWS) || defined(PROTO) + static tabpage_T *alloc_tabpage __ARGS((void)); +! static int leave_tabpage __ARGS((buf_T *new_curbuf, int trigger_leave_autocmds)); +! static void enter_tabpage __ARGS((tabpage_T *tp, buf_T *old_curbuf, int trigger_enter_autocmds, int trigger_leave_autocmds)); + static void frame_fix_height __ARGS((win_T *wp)); + static int frame_minheight __ARGS((frame_T *topfrp, win_T *next_curwin)); +! static void win_enter_ext __ARGS((win_T *wp, int undo_sync, int no_curwin, int trigger_enter_autocmds, int trigger_leave_autocmds)); + static void win_free __ARGS((win_T *wp, tabpage_T *tp)); + static void frame_append __ARGS((frame_T *after, frame_T *frp)); + static void frame_insert __ARGS((frame_T *before, frame_T *frp)); +*************** +*** 353,363 **** + && valid_tabpage(oldtab)) + { + newtab = curtab; +! goto_tabpage_tp(oldtab, TRUE); + if (curwin == wp) + win_close(curwin, FALSE); + if (valid_tabpage(newtab)) +! goto_tabpage_tp(newtab, TRUE); + } + } + break; +--- 353,363 ---- + && valid_tabpage(oldtab)) + { + newtab = curtab; +! goto_tabpage_tp(oldtab, TRUE, TRUE); + if (curwin == wp) + win_close(curwin, FALSE); + if (valid_tabpage(newtab)) +! goto_tabpage_tp(newtab, TRUE, TRUE); + } + } + break; +*************** +*** 2124,2129 **** +--- 2124,2131 ---- + { + if (firstwin == lastwin) + { ++ buf_T *old_curbuf = curbuf; ++ + /* + * Closing the last window in a tab page. First go to another tab + * page and then close the window and the tab page. This avoids that +*************** +*** 2132,2138 **** + * Don't trigger autocommands yet, they may use wrong values, so do + * that below. + */ +! goto_tabpage_tp(alt_tabpage(), FALSE); + redraw_tabline = TRUE; + + /* Safety check: Autocommands may have closed the window when jumping +--- 2134,2140 ---- + * Don't trigger autocommands yet, they may use wrong values, so do + * that below. + */ +! goto_tabpage_tp(alt_tabpage(), FALSE, TRUE); + redraw_tabline = TRUE; + + /* Safety check: Autocommands may have closed the window when jumping +*************** +*** 2148,2155 **** + /* Since goto_tabpage_tp above did not trigger *Enter autocommands, do + * that now. */ + #ifdef FEAT_AUTOCMD +- apply_autocmds(EVENT_TABENTER, NULL, NULL, FALSE, curbuf); + apply_autocmds(EVENT_WINENTER, NULL, NULL, FALSE, curbuf); + #endif + return TRUE; + } +--- 2150,2159 ---- + /* Since goto_tabpage_tp above did not trigger *Enter autocommands, do + * that now. */ + #ifdef FEAT_AUTOCMD + apply_autocmds(EVENT_WINENTER, NULL, NULL, FALSE, curbuf); ++ apply_autocmds(EVENT_TABENTER, NULL, NULL, FALSE, curbuf); ++ if (old_curbuf != curbuf) ++ apply_autocmds(EVENT_BUFENTER, NULL, NULL, FALSE, curbuf); + #endif + return TRUE; + } +*************** +*** 2341,2347 **** + win_comp_pos(); + if (close_curwin) + { +! win_enter_ext(wp, FALSE, TRUE); + #ifdef FEAT_AUTOCMD + if (other_buffer) + /* careful: after this wp and win may be invalid! */ +--- 2345,2351 ---- + win_comp_pos(); + if (close_curwin) + { +! win_enter_ext(wp, FALSE, TRUE, TRUE, TRUE); + #ifdef FEAT_AUTOCMD + if (other_buffer) + /* careful: after this wp and win may be invalid! */ +*************** +*** 3529,3535 **** + return FAIL; + + /* Remember the current windows in this Tab page. */ +! if (leave_tabpage(curbuf) == FAIL) + { + vim_free(newtp); + return FAIL; +--- 3533,3539 ---- + return FAIL; + + /* Remember the current windows in this Tab page. */ +! if (leave_tabpage(curbuf, TRUE) == FAIL) + { + vim_free(newtp); + return FAIL; +*************** +*** 3574,3587 **** + + redraw_all_later(CLEAR); + #ifdef FEAT_AUTOCMD +- apply_autocmds(EVENT_TABENTER, NULL, NULL, FALSE, curbuf); + apply_autocmds(EVENT_WINENTER, NULL, NULL, FALSE, curbuf); + #endif + return OK; + } + + /* Failed, get back the previous Tab page */ +! enter_tabpage(curtab, curbuf, TRUE); + return FAIL; + } + +--- 3578,3591 ---- + + redraw_all_later(CLEAR); + #ifdef FEAT_AUTOCMD + apply_autocmds(EVENT_WINENTER, NULL, NULL, FALSE, curbuf); ++ apply_autocmds(EVENT_TABENTER, NULL, NULL, FALSE, curbuf); + #endif + return OK; + } + + /* Failed, get back the previous Tab page */ +! enter_tabpage(curtab, curbuf, TRUE, TRUE); + return FAIL; + } + +*************** +*** 3692,3700 **** + * Careful: When OK is returned need to get a new tab page very very soon! + */ + static int +! leave_tabpage(new_curbuf) + buf_T *new_curbuf UNUSED; /* what is going to be the new curbuf, + NULL if unknown */ + { + tabpage_T *tp = curtab; + +--- 3696,3705 ---- + * Careful: When OK is returned need to get a new tab page very very soon! + */ + static int +! leave_tabpage(new_curbuf, trigger_leave_autocmds) + buf_T *new_curbuf UNUSED; /* what is going to be the new curbuf, + NULL if unknown */ ++ int trigger_leave_autocmds UNUSED; + { + tabpage_T *tp = curtab; + +*************** +*** 3702,3719 **** + reset_VIsual_and_resel(); /* stop Visual mode */ + #endif + #ifdef FEAT_AUTOCMD +! if (new_curbuf != curbuf) + { +! apply_autocmds(EVENT_BUFLEAVE, NULL, NULL, FALSE, curbuf); + if (curtab != tp) + return FAIL; + } +- apply_autocmds(EVENT_WINLEAVE, NULL, NULL, FALSE, curbuf); +- if (curtab != tp) +- return FAIL; +- apply_autocmds(EVENT_TABLEAVE, NULL, NULL, FALSE, curbuf); +- if (curtab != tp) +- return FAIL; + #endif + #if defined(FEAT_GUI) + /* Remove the scrollbars. They may be added back later. */ +--- 3707,3727 ---- + reset_VIsual_and_resel(); /* stop Visual mode */ + #endif + #ifdef FEAT_AUTOCMD +! if (trigger_leave_autocmds) + { +! if (new_curbuf != curbuf) +! { +! apply_autocmds(EVENT_BUFLEAVE, NULL, NULL, FALSE, curbuf); +! if (curtab != tp) +! return FAIL; +! } +! apply_autocmds(EVENT_WINLEAVE, NULL, NULL, FALSE, curbuf); +! if (curtab != tp) +! return FAIL; +! apply_autocmds(EVENT_TABLEAVE, NULL, NULL, FALSE, curbuf); + if (curtab != tp) + return FAIL; + } + #endif + #if defined(FEAT_GUI) + /* Remove the scrollbars. They may be added back later. */ +*************** +*** 3734,3746 **** + /* + * Start using tab page "tp". + * Only to be used after leave_tabpage() or freeing the current tab page. +! * Only trigger *Enter autocommands when trigger_autocmds is TRUE. + */ + static void +! enter_tabpage(tp, old_curbuf, trigger_autocmds) + tabpage_T *tp; + buf_T *old_curbuf UNUSED; +! int trigger_autocmds UNUSED; + { + int old_off = tp->tp_firstwin->w_winrow; + win_T *next_prevwin = tp->tp_prevwin; +--- 3742,3756 ---- + /* + * Start using tab page "tp". + * Only to be used after leave_tabpage() or freeing the current tab page. +! * Only trigger *Enter autocommands when trigger_enter_autocmds is TRUE. +! * Only trigger *Leave autocommands when trigger_leave_autocmds is TRUE. + */ + static void +! enter_tabpage(tp, old_curbuf, trigger_enter_autocmds, trigger_leave_autocmds) + tabpage_T *tp; + buf_T *old_curbuf UNUSED; +! int trigger_enter_autocmds UNUSED; +! int trigger_leave_autocmds UNUSED; + { + int old_off = tp->tp_firstwin->w_winrow; + win_T *next_prevwin = tp->tp_prevwin; +*************** +*** 3753,3759 **** + /* We would like doing the TabEnter event first, but we don't have a + * valid current window yet, which may break some commands. + * This triggers autocommands, thus may make "tp" invalid. */ +! win_enter_ext(tp->tp_curwin, FALSE, TRUE); + prevwin = next_prevwin; + + last_status(FALSE); /* status line may appear or disappear */ +--- 3763,3769 ---- + /* We would like doing the TabEnter event first, but we don't have a + * valid current window yet, which may break some commands. + * This triggers autocommands, thus may make "tp" invalid. */ +! win_enter_ext(tp->tp_curwin, FALSE, TRUE, trigger_enter_autocmds, trigger_leave_autocmds); + prevwin = next_prevwin; + + last_status(FALSE); /* status line may appear or disappear */ +*************** +*** 3788,3794 **** + #ifdef FEAT_AUTOCMD + /* Apply autocommands after updating the display, when 'rows' and + * 'columns' have been set correctly. */ +! if (trigger_autocmds) + { + apply_autocmds(EVENT_TABENTER, NULL, NULL, FALSE, curbuf); + if (old_curbuf != curbuf) +--- 3798,3804 ---- + #ifdef FEAT_AUTOCMD + /* Apply autocommands after updating the display, when 'rows' and + * 'columns' have been set correctly. */ +! if (trigger_enter_autocmds) + { + apply_autocmds(EVENT_TABENTER, NULL, NULL, FALSE, curbuf); + if (old_curbuf != curbuf) +*************** +*** 3869,3875 **** + } + } + +! goto_tabpage_tp(tp, TRUE); + + #ifdef FEAT_GUI_TABLINE + if (gui_use_tabline()) +--- 3879,3885 ---- + } + } + +! goto_tabpage_tp(tp, TRUE, TRUE); + + #ifdef FEAT_GUI_TABLINE + if (gui_use_tabline()) +*************** +*** 3879,3901 **** + + /* + * Go to tabpage "tp". +! * Only trigger *Enter autocommands when trigger_autocmds is TRUE. + * Note: doesn't update the GUI tab. + */ + void +! goto_tabpage_tp(tp, trigger_autocmds) + tabpage_T *tp; +! int trigger_autocmds; + { + /* Don't repeat a message in another tab page. */ + set_keep_msg(NULL, 0); + +! if (tp != curtab && leave_tabpage(tp->tp_curwin->w_buffer) == OK) + { + if (valid_tabpage(tp)) +! enter_tabpage(tp, curbuf, trigger_autocmds); + else +! enter_tabpage(curtab, curbuf, trigger_autocmds); + } + } + +--- 3889,3916 ---- + + /* + * Go to tabpage "tp". +! * Only trigger *Enter autocommands when trigger_enter_autocmds is TRUE. +! * Only trigger *Leave autocommands when trigger_leave_autocmds is TRUE. + * Note: doesn't update the GUI tab. + */ + void +! goto_tabpage_tp(tp, trigger_enter_autocmds, trigger_leave_autocmds) + tabpage_T *tp; +! int trigger_enter_autocmds; +! int trigger_leave_autocmds; + { + /* Don't repeat a message in another tab page. */ + set_keep_msg(NULL, 0); + +! if (tp != curtab && leave_tabpage(tp->tp_curwin->w_buffer, +! trigger_leave_autocmds) == OK) + { + if (valid_tabpage(tp)) +! enter_tabpage(tp, curbuf, trigger_enter_autocmds, +! trigger_leave_autocmds); + else +! enter_tabpage(curtab, curbuf, trigger_enter_autocmds, +! trigger_leave_autocmds); + } + } + +*************** +*** 3908,3914 **** + tabpage_T *tp; + win_T *wp; + { +! goto_tabpage_tp(tp, TRUE); + if (curtab == tp && win_valid(wp)) + { + win_enter(wp, TRUE); +--- 3923,3929 ---- + tabpage_T *tp; + win_T *wp; + { +! goto_tabpage_tp(tp, TRUE, TRUE); + if (curtab == tp && win_valid(wp)) + { + win_enter(wp, TRUE); +*************** +*** 4168,4174 **** + win_T *wp; + int undo_sync; + { +! win_enter_ext(wp, undo_sync, FALSE); + } + + /* +--- 4183,4189 ---- + win_T *wp; + int undo_sync; + { +! win_enter_ext(wp, undo_sync, FALSE, TRUE, TRUE); + } + + /* +*************** +*** 4177,4186 **** + * been closed and isn't valid. + */ + static void +! win_enter_ext(wp, undo_sync, curwin_invalid) + win_T *wp; + int undo_sync; + int curwin_invalid; + { + #ifdef FEAT_AUTOCMD + int other_buffer = FALSE; +--- 4192,4203 ---- + * been closed and isn't valid. + */ + static void +! win_enter_ext(wp, undo_sync, curwin_invalid, trigger_enter_autocmds, trigger_leave_autocmds) + win_T *wp; + int undo_sync; + int curwin_invalid; ++ int trigger_enter_autocmds UNUSED; ++ int trigger_leave_autocmds UNUSED; + { + #ifdef FEAT_AUTOCMD + int other_buffer = FALSE; +*************** +*** 4190,4196 **** + return; + + #ifdef FEAT_AUTOCMD +! if (!curwin_invalid) + { + /* + * Be careful: If autocommands delete the window, return now. +--- 4207,4213 ---- + return; + + #ifdef FEAT_AUTOCMD +! if (!curwin_invalid && trigger_leave_autocmds) + { + /* + * Be careful: If autocommands delete the window, return now. +*************** +*** 4259,4267 **** + } + + #ifdef FEAT_AUTOCMD +! apply_autocmds(EVENT_WINENTER, NULL, NULL, FALSE, curbuf); +! if (other_buffer) +! apply_autocmds(EVENT_BUFENTER, NULL, NULL, FALSE, curbuf); + #endif + + #ifdef FEAT_TITLE +--- 4276,4287 ---- + } + + #ifdef FEAT_AUTOCMD +! if (trigger_enter_autocmds) +! { +! apply_autocmds(EVENT_WINENTER, NULL, NULL, FALSE, curbuf); +! if (other_buffer) +! apply_autocmds(EVENT_BUFENTER, NULL, NULL, FALSE, curbuf); +! } + #endif + + #ifdef FEAT_TITLE +*** ../vim-7.3.925/src/version.c 2013-05-06 04:21:35.000000000 +0200 +--- src/version.c 2013-05-06 04:40:52.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 926, + /**/ + +-- + Bravely bold Sir Robin, rode forth from Camelot, + He was not afraid to die, Oh Brave Sir Robin, + He was not at all afraid to be killed in nasty ways + Brave, brave, brave, brave Sir Robin. + "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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.927 b/7.3.927 new file mode 100644 index 0000000..4add389 --- /dev/null +++ b/7.3.927 @@ -0,0 +1,99 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.927 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.927 +Problem: Missing combining characters when putting text in a register. +Solution: Include combining characters. (Christian Brabandt) +Files: src/getchar.c, src/testdir/test44.in, src/testdir/test44.ok + + +*** ../vim-7.3.926/src/getchar.c 2013-04-15 15:47:07.000000000 +0200 +--- src/getchar.c 2013-05-06 05:06:13.000000000 +0200 +*************** +*** 4616,4624 **** +--- 4616,4636 ---- + } + else + { ++ #ifdef FEAT_MBYTE ++ int len = mb_char2len(PTR2CHAR(s)); ++ int len2 = mb_ptr2len(s); ++ #endif + /* Add character, possibly multi-byte to destination, escaping + * CSI and K_SPECIAL. */ + d = add_char2buf(PTR2CHAR(s), d); ++ #ifdef FEAT_MBYTE ++ while (len < len2) ++ { ++ /* add following combining char */ ++ d = add_char2buf(PTR2CHAR(s + len), d); ++ len += mb_char2len(PTR2CHAR(s + len)); ++ } ++ #endif + mb_ptr_adv(s); + } + } +*** ../vim-7.3.926/src/testdir/test44.in 2013-01-23 16:43:07.000000000 +0100 +--- src/testdir/test44.in 2013-05-06 05:01:39.000000000 +0200 +*************** +*** 32,38 **** + x:" Test backwards search from a multi-byte char + /x + x?. +! x:?^1?,$w! test.out + :e! test.out + G:put =matchstr(\"אבגד\", \".\", 0, 2) " ב + :put =matchstr(\"אבגד\", \"..\", 0, 2) " בג +--- 32,40 ---- + x:" Test backwards search from a multi-byte char + /x + x?. +! x:let @w=':%s#comb[i]nations#œ̄ṣ́m̥̄ᾱ̆́#g' +! :@w +! :?^1?,$w! test.out + :e! test.out + G:put =matchstr(\"אבגד\", \".\", 0, 2) " ב + :put =matchstr(\"אבגד\", \"..\", 0, 2) " בג +*************** +*** 61,63 **** +--- 63,66 ---- + h AÀÁÂÃÄÅĀĂĄǍǞǠẢ BḂḆ CÇĆĈĊČ DĎĐḊḎḐ EÈÉÊËĒĔĖĘĚẺẼ FḞ GĜĞĠĢǤǦǴḠ HĤĦḢḦḨ IÌÍÎÏĨĪĬĮİǏỈ JĴ KĶǨḰḴ LĹĻĽĿŁḺ MḾṀ NÑŃŅŇṄṈ OÒÓÔÕÖØŌŎŐƠǑǪǬỎ PṔṖ Q RŔŖŘṘṞ SŚŜŞŠṠ TŢŤŦṪṮ UÙÚÛÜŨŪŬŮŰŲƯǓỦ VṼ WŴẀẂẄẆ XẊẌ YÝŶŸẎỲỶỸ ZŹŻŽƵẐẔ + i aàáâãäåāăąǎǟǡả bḃḇ cçćĉċč dďđḋḏḑ eèéêëēĕėęěẻẽ fḟ gĝğġģǥǧǵḡ hĥħḣḧḩẖ iìíîïĩīĭįǐỉ jĵǰ kķǩḱḵ lĺļľŀłḻ mḿṁ nñńņňʼnṅṉ oòóôõöøōŏőơǒǫǭỏ pṕṗ q rŕŗřṙṟ sśŝşšṡ tţťŧṫṯẗ uùúûüũūŭůűųưǔủ vṽ wŵẁẃẅẇẘ xẋẍ yýÿŷẏẙỳỷỹ zźżžƶẑẕ + j 0123❤x ++ k combinations +*** ../vim-7.3.926/src/testdir/test44.ok 2013-01-23 16:43:07.000000000 +0100 +--- src/testdir/test44.ok 2013-05-06 05:01:39.000000000 +0200 +*************** +*** 17,22 **** +--- 17,23 ---- + h AÀÁÂÃÄÅĀĂĄǍǞǠẢ BḂḆ CÇĆĈĊČ DĎĐḊḎḐ EÈÉÊËĒĔĖĘĚẺẼ FḞ GĜĞĠĢǤǦǴḠ HĤĦḢḦḨ IÌÍÎÏĨĪĬĮİǏỈ JĴ KĶǨḰḴ LĹĻĽĿŁḺ MḾṀ NÑŃŅŇṄṈ OÒÓÔÕÖØŌŎŐƠǑǪǬỎ PṔṖ Q RŔŖŘṘṞ SŚŜŞŠṠ TŢŤŦṪṮ UÙÚÛÜŨŪŬŮŰŲƯǓỦ VṼ WŴẀẂẄẆ XẊẌ YÝŶŸẎỲỶỸ ZŹŻŽƵẐ + i aàáâãäåāăąǎǟǡả bḃḇ cçćĉċč dďđḋḏḑ eèéêëēĕėęěẻẽ fḟ gĝğġģǥǧǵḡ hĥħḣḧḩẖ iìíîïĩīĭįǐỉ jĵǰ kķǩḱḵ lĺļľŀłḻ mḿṁ nñńņňʼnṅṉ oòóôõöøōŏőơǒǫǭỏ pṕṗ q rŕŗřṙṟ sśŝşšṡ tţťŧṫṯẗ uùúûüũūŭůűųưǔủ vṽ wŵẁẃẅẇẘ xẋẍ yýÿŷẏẙỳỷỹ zźżžƶẑ + j 012❤ ++ k œ̄ṣ́m̥̄ᾱ̆́ + ב + בג + א +*** ../vim-7.3.926/src/version.c 2013-05-06 04:50:26.000000000 +0200 +--- src/version.c 2013-05-06 05:08:11.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 927, + /**/ + +-- +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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.928 b/7.3.928 new file mode 100644 index 0000000..764e705 --- /dev/null +++ b/7.3.928 @@ -0,0 +1,86 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.928 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.928 (after 7.3.924) +Problem: Can't build with strict C compiler. +Solution: Move declaration to start of block. (Taro Muraoka) +Files: src/if_py_both.h + + +*** ../vim-7.3.927/src/if_py_both.h 2013-05-06 04:21:35.000000000 +0200 +--- src/if_py_both.h 2013-05-06 06:21:55.000000000 +0200 +*************** +*** 1521,1532 **** + int flags; + long numval; + char_u *stringval; + + if (this->Check(this->from)) + return NULL; + +- DICTKEY_DECL +- + DICTKEY_GET_NOTEMPTY(NULL) + + flags = get_option_value_strict(key, &numval, &stringval, +--- 1521,1531 ---- + int flags; + long numval; + char_u *stringval; ++ DICTKEY_DECL + + if (this->Check(this->from)) + return NULL; + + DICTKEY_GET_NOTEMPTY(NULL) + + flags = get_option_value_strict(key, &numval, &stringval, +*************** +*** 1616,1627 **** + int flags; + int opt_flags; + int r = 0; + + if (this->Check(this->from)) + return -1; + +- DICTKEY_DECL +- + DICTKEY_GET_NOTEMPTY(-1) + + flags = get_option_value_strict(key, NULL, NULL, +--- 1615,1625 ---- + int flags; + int opt_flags; + int r = 0; ++ DICTKEY_DECL + + if (this->Check(this->from)) + return -1; + + DICTKEY_GET_NOTEMPTY(-1) + + flags = get_option_value_strict(key, NULL, NULL, +*** ../vim-7.3.927/src/version.c 2013-05-06 05:50:22.000000000 +0200 +--- src/version.c 2013-05-06 06:22:57.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 928, + /**/ + +-- +press CTRL-ALT-DEL for more information + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.929 b/7.3.929 new file mode 100644 index 0000000..adf5d6e --- /dev/null +++ b/7.3.929 @@ -0,0 +1,178 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.929 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.929 (after 7.3.924) +Problem: Compiler warning for unused variable. Not freeing unused string. +Solution: Remove the variable. Clear the options. +Files: src/option.c + + +*** ../vim-7.3.928/src/option.c 2013-05-06 03:52:44.000000000 +0200 +--- src/option.c 2013-05-06 06:42:03.000000000 +0200 +*************** +*** 9705,9713 **** + { + struct vimoption *p; + int opt_idx; +! +! buf_T *buf = (buf_T *) from; +! win_T *win = (win_T *) from; + + opt_idx = findoption(name); + p = &(options[opt_idx]); +--- 9705,9711 ---- + { + struct vimoption *p; + int opt_idx; +! buf_T *buf = (buf_T *)from; + + opt_idx = findoption(name); + p = &(options[opt_idx]); +*************** +*** 9716,9775 **** + { + /* global option with local value: use local value if it's been set */ + case PV_EP: +! *buf->b_p_ep = NUL; + break; + case PV_KP: +! *buf->b_p_kp = NUL; + break; + case PV_PATH: +! *buf->b_p_path = NUL; + break; + case PV_AR: + buf->b_p_ar = -1; + break; + case PV_TAGS: +! *buf->b_p_tags = NUL; + break; + #ifdef FEAT_FIND_ID + case PV_DEF: +! *buf->b_p_def = NUL; + break; + case PV_INC: +! *buf->b_p_inc = NUL; + break; + #endif + #ifdef FEAT_INS_EXPAND + case PV_DICT: +! *buf->b_p_dict = NUL; + break; + case PV_TSR: +! *buf->b_p_tsr = NUL; + break; + #endif + #ifdef FEAT_QUICKFIX + case PV_EFM: +! *buf->b_p_efm = NUL; + break; + case PV_GP: +! *buf->b_p_gp = NUL; + break; + case PV_MP: +! *buf->b_p_mp = NUL; + break; + #endif + #if defined(FEAT_BEVAL) && defined(FEAT_EVAL) + case PV_BEXPR: +! *buf->b_p_bexpr = NUL; + break; + #endif + #if defined(FEAT_CRYPT) + case PV_CM: +! *buf->b_p_cm = NUL; + break; + #endif + #ifdef FEAT_STL_OPT + case PV_STL: +! *win->w_p_stl = NUL; + break; + #endif + } +--- 9714,9773 ---- + { + /* global option with local value: use local value if it's been set */ + case PV_EP: +! clear_string_option(&buf->b_p_ep); + break; + case PV_KP: +! clear_string_option(&buf->b_p_kp); + break; + case PV_PATH: +! clear_string_option(&buf->b_p_path); + break; + case PV_AR: + buf->b_p_ar = -1; + break; + case PV_TAGS: +! clear_string_option(&buf->b_p_tags); + break; + #ifdef FEAT_FIND_ID + case PV_DEF: +! clear_string_option(&buf->b_p_def); + break; + case PV_INC: +! clear_string_option(&buf->b_p_inc); + break; + #endif + #ifdef FEAT_INS_EXPAND + case PV_DICT: +! clear_string_option(&buf->b_p_dict); + break; + case PV_TSR: +! clear_string_option(&buf->b_p_tsr); + break; + #endif + #ifdef FEAT_QUICKFIX + case PV_EFM: +! clear_string_option(&buf->b_p_efm); + break; + case PV_GP: +! clear_string_option(&buf->b_p_gp); + break; + case PV_MP: +! clear_string_option(&buf->b_p_mp); + break; + #endif + #if defined(FEAT_BEVAL) && defined(FEAT_EVAL) + case PV_BEXPR: +! clear_string_option(&buf->b_p_bexpr); + break; + #endif + #if defined(FEAT_CRYPT) + case PV_CM: +! clear_string_option(&buf->b_p_cm); + break; + #endif + #ifdef FEAT_STL_OPT + case PV_STL: +! clear_string_option(&((win_T *)from)->w_p_stl); + break; + #endif + } +*** ../vim-7.3.928/src/version.c 2013-05-06 06:26:10.000000000 +0200 +--- src/version.c 2013-05-06 06:35:06.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 929, + /**/ + +-- +Microsoft: "Windows NT 4.0 now has the same user-interface as Windows 95" + Windows 95: "Press CTRL-ALT-DEL to reboot" +Windows NT 4.0: "Press CTRL-ALT-DEL to login" + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.930 b/7.3.930 new file mode 100644 index 0000000..b2ba17c --- /dev/null +++ b/7.3.930 @@ -0,0 +1,46 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.930 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.930 +Problem: MSVC 2012 update is not recognized. +Solution: Update the version in the makefile. (Raymond Ko) +Files: src/Make_mvc.mak + + +*** ../vim-7.3.929/src/Make_mvc.mak 2013-05-06 04:21:35.000000000 +0200 +--- src/Make_mvc.mak 2013-05-07 05:08:08.000000000 +0200 +*************** +*** 416,421 **** +--- 416,424 ---- + !if "$(_NMAKE_VER)" == "11.00.51106.1" + MSVCVER = 11.0 + !endif ++ !if "$(_NMAKE_VER)" == "11.00.60315.1" ++ MSVCVER = 11.0 ++ !endif + !endif + + # Abort building VIM if version of VC is unrecognised. +*** ../vim-7.3.929/src/version.c 2013-05-06 06:45:42.000000000 +0200 +--- src/version.c 2013-05-07 05:09:51.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 930, + /**/ + +-- +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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.931 b/7.3.931 new file mode 100644 index 0000000..bc96b7a --- /dev/null +++ b/7.3.931 @@ -0,0 +1,58 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.931 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.931 +Problem: No completion for :xmap and :smap. (Yukihiro Nakadaira) +Solution: Add the case statements. (Christian Brabandt) +Files: src/ex_docmd.c + + +*** ../vim-7.3.930/src/ex_docmd.c 2013-05-06 04:21:35.000000000 +0200 +--- src/ex_docmd.c 2013-05-07 05:15:26.000000000 +0200 +*************** +*** 3889,3894 **** +--- 3889,3896 ---- + case CMD_imap: case CMD_inoremap: + case CMD_cmap: case CMD_cnoremap: + case CMD_lmap: case CMD_lnoremap: ++ case CMD_smap: case CMD_snoremap: ++ case CMD_xmap: case CMD_xnoremap: + return set_context_in_map_cmd(xp, cmd, arg, forceit, + FALSE, FALSE, ea.cmdidx); + case CMD_unmap: +*************** +*** 3898,3903 **** +--- 3900,3907 ---- + case CMD_iunmap: + case CMD_cunmap: + case CMD_lunmap: ++ case CMD_sunmap: ++ case CMD_xunmap: + return set_context_in_map_cmd(xp, cmd, arg, forceit, + FALSE, TRUE, ea.cmdidx); + case CMD_abbreviate: case CMD_noreabbrev: +*** ../vim-7.3.930/src/version.c 2013-05-07 05:11:12.000000000 +0200 +--- src/version.c 2013-05-07 05:16:45.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 931, + /**/ + +-- +FIRST HEAD: All right! All right! We'll kill him first and then have tea and + biscuits. + "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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.932 b/7.3.932 new file mode 100644 index 0000000..81ae1aa --- /dev/null +++ b/7.3.932 @@ -0,0 +1,51 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.932 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.932 +Problem: Compiler warning for uninitialized variable. (Tony Mechelynck) +Solution: Initialize the variable. +Files: src/option.c + + +*** ../vim-7.3.931/src/option.c 2013-05-06 06:45:42.000000000 +0200 +--- src/option.c 2013-05-08 01:32:25.000000000 +0200 +*************** +*** 8847,8853 **** + void *from; + { + int opt_idx; +! char_u *varp; + struct vimoption *p; + int r = 0; + +--- 8847,8853 ---- + void *from; + { + int opt_idx; +! char_u *varp = NULL; + struct vimoption *p; + int r = 0; + +*** ../vim-7.3.931/src/version.c 2013-05-07 05:18:15.000000000 +0200 +--- src/version.c 2013-05-11 13:44:04.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 932, + /**/ + +-- +Proverb: A nightingale that forgets the lyrics is a hummingbird. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.933 b/7.3.933 new file mode 100644 index 0000000..d76314b --- /dev/null +++ b/7.3.933 @@ -0,0 +1,163 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.933 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.933 +Problem: Ruby on Mac crashes due to GC failure. +Solution: Init the stack from main(). (Hiroshi Shirosaki) +Files: src/main.c, src/if_ruby.c, src/proto/if_ruby.pro + + +*** ../vim-7.3.932/src/main.c 2013-03-19 13:33:18.000000000 +0100 +--- src/main.c 2013-05-11 13:37:23.000000000 +0200 +*************** +*** 192,197 **** +--- 192,204 ---- + params.window_count = -1; + #endif + ++ #ifdef FEAT_RUBY ++ { ++ int ruby_stack_start; ++ vim_ruby_init((void *)&ruby_stack_start); ++ } ++ #endif ++ + #ifdef FEAT_TCL + vim_tcl_init(params.argv[0]); + #endif +*** ../vim-7.3.932/src/if_ruby.c 2013-05-06 04:21:35.000000000 +0200 +--- src/if_ruby.c 2013-05-11 13:37:23.000000000 +0200 +*************** +*** 144,149 **** +--- 144,150 ---- + #endif + + static int ruby_initialized = 0; ++ static void *ruby_stack_start; + static VALUE objtbl; + + static VALUE mVIM; +*************** +*** 226,231 **** +--- 227,233 ---- + # define rb_float_new dll_rb_float_new + # define rb_ary_new dll_rb_ary_new + # define rb_ary_push dll_rb_ary_push ++ # define ruby_init_stack dll_ruby_init_stack + #else + # define rb_str2cstr dll_rb_str2cstr + #endif +*************** +*** 250,256 **** + # define rb_enc_str_new dll_rb_enc_str_new + # define rb_sprintf dll_rb_sprintf + # define rb_require dll_rb_require +- # define ruby_init_stack dll_ruby_init_stack + # define ruby_process_options dll_ruby_process_options + #endif + +--- 252,257 ---- +*************** +*** 335,340 **** +--- 336,342 ---- + static VALUE (*dll_rb_float_new) (double); + static VALUE (*dll_rb_ary_new) (void); + static VALUE (*dll_rb_ary_push) (VALUE, VALUE); ++ static void (*ruby_init_stack)(VALUE*); + #endif + #ifdef RUBY19_OR_LATER + static VALUE (*dll_rb_int2big)(SIGNED_VALUE); +*************** +*** 347,353 **** + static VALUE (*dll_rb_enc_str_new) (const char*, long, rb_encoding*); + static VALUE (*dll_rb_sprintf) (const char*, ...); + static VALUE (*dll_rb_require) (const char*); +- static void (*ruby_init_stack)(VALUE*); + static void* (*ruby_process_options)(int, char**); + #endif + +--- 349,354 ---- +*************** +*** 475,480 **** +--- 476,482 ---- + #endif + #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18 + {"rb_string_value_ptr", (RUBY_PROC*)&dll_rb_string_value_ptr}, ++ {"ruby_init_stack", (RUBY_PROC*)&dll_ruby_init_stack}, + # if DYNAMIC_RUBY_VER <= 19 + {"rb_float_new", (RUBY_PROC*)&dll_rb_float_new}, + # else +*************** +*** 491,497 **** + {"rb_enc_str_new", (RUBY_PROC*)&dll_rb_enc_str_new}, + {"rb_sprintf", (RUBY_PROC*)&dll_rb_sprintf}, + {"rb_require", (RUBY_PROC*)&dll_rb_require}, +- {"ruby_init_stack", (RUBY_PROC*)&dll_ruby_init_stack}, + {"ruby_process_options", (RUBY_PROC*)&dll_ruby_process_options}, + #endif + {"", NULL}, +--- 493,498 ---- +*************** +*** 716,723 **** + NtInitialize(&argc, &argv); + #endif + { +! #ifdef RUBY19_OR_LATER +! RUBY_INIT_STACK; + #endif + ruby_init(); + } +--- 717,724 ---- + NtInitialize(&argc, &argv); + #endif + { +! #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18 +! ruby_init_stack(ruby_stack_start); + #endif + ruby_init(); + } +*************** +*** 1389,1391 **** +--- 1390,1398 ---- + rb_define_virtual_variable("$curbuf", buffer_s_current, 0); + rb_define_virtual_variable("$curwin", window_s_current, 0); + } ++ ++ void vim_ruby_init(void *stack_start) ++ { ++ /* should get machine stack start address early in main function */ ++ ruby_stack_start = stack_start; ++ } +*** ../vim-7.3.932/src/proto/if_ruby.pro 2010-08-15 21:57:28.000000000 +0200 +--- src/proto/if_ruby.pro 2013-05-11 13:37:28.000000000 +0200 +*************** +*** 6,9 **** +--- 6,10 ---- + void ex_rubyfile __ARGS((exarg_T *eap)); + void ruby_buffer_free __ARGS((buf_T *buf)); + void ruby_window_free __ARGS((win_T *win)); ++ void vim_ruby_init __ARGS((void *stack_start)); + /* vim: set ft=c : */ +*** ../vim-7.3.932/src/version.c 2013-05-11 13:45:00.000000000 +0200 +--- src/version.c 2013-05-11 13:52:55.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 933, + /**/ + +-- +Veni, Vidi, Video -- I came, I saw, I taped what I saw. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.934 b/7.3.934 new file mode 100644 index 0000000..d820f3c --- /dev/null +++ b/7.3.934 @@ -0,0 +1,81 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.934 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.934 +Problem: E381 and E380 make the user think nothing happened. +Solution: Display the message indicating what error list is now active. + (Christian Brabandt) +Files: src/quickfix.c + + +*** ../vim-7.3.933/src/quickfix.c 2013-05-06 04:21:35.000000000 +0200 +--- src/quickfix.c 2013-05-11 13:50:56.000000000 +0200 +*************** +*** 2085,2091 **** + if (qi->qf_curlist == 0) + { + EMSG(_("E380: At bottom of quickfix stack")); +! return; + } + --qi->qf_curlist; + } +--- 2085,2091 ---- + if (qi->qf_curlist == 0) + { + EMSG(_("E380: At bottom of quickfix stack")); +! break; + } + --qi->qf_curlist; + } +*************** +*** 2094,2106 **** + if (qi->qf_curlist >= qi->qf_listcount - 1) + { + EMSG(_("E381: At top of quickfix stack")); +! return; + } + ++qi->qf_curlist; + } + } + qf_msg(qi); +- + } + + static void +--- 2094,2105 ---- + if (qi->qf_curlist >= qi->qf_listcount - 1) + { + EMSG(_("E381: At top of quickfix stack")); +! break; + } + ++qi->qf_curlist; + } + } + qf_msg(qi); + } + + static void +*** ../vim-7.3.933/src/version.c 2013-05-11 13:56:12.000000000 +0200 +--- src/version.c 2013-05-11 15:46:36.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 934, + /**/ + +-- +"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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.935 b/7.3.935 new file mode 100644 index 0000000..fb14b74 --- /dev/null +++ b/7.3.935 @@ -0,0 +1,114 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.935 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.935 (after 7.3.933) +Problem: Init stack works differently on 64 bit systems. +Solution: Handle 64 bit systems and also static library. (Yukihiro + Nakadaira) +Files: src/if_ruby.c + + +*** ../vim-7.3.934/src/if_ruby.c 2013-05-11 13:56:12.000000000 +0200 +--- src/if_ruby.c 2013-05-11 17:31:55.000000000 +0200 +*************** +*** 227,233 **** + # define rb_float_new dll_rb_float_new + # define rb_ary_new dll_rb_ary_new + # define rb_ary_push dll_rb_ary_push +! # define ruby_init_stack dll_ruby_init_stack + #else + # define rb_str2cstr dll_rb_str2cstr + #endif +--- 227,239 ---- + # define rb_float_new dll_rb_float_new + # define rb_ary_new dll_rb_ary_new + # define rb_ary_push dll_rb_ary_push +! # ifdef __ia64 +! # define rb_ia64_bsp dll_rb_ia64_bsp +! # undef ruby_init_stack +! # define ruby_init_stack(addr) dll_ruby_init_stack((addr), rb_ia64_bsp()) +! # else +! # define ruby_init_stack dll_ruby_init_stack +! # endif + #else + # define rb_str2cstr dll_rb_str2cstr + #endif +*************** +*** 336,342 **** + static VALUE (*dll_rb_float_new) (double); + static VALUE (*dll_rb_ary_new) (void); + static VALUE (*dll_rb_ary_push) (VALUE, VALUE); +! static void (*ruby_init_stack)(VALUE*); + #endif + #ifdef RUBY19_OR_LATER + static VALUE (*dll_rb_int2big)(SIGNED_VALUE); +--- 342,353 ---- + static VALUE (*dll_rb_float_new) (double); + static VALUE (*dll_rb_ary_new) (void); + static VALUE (*dll_rb_ary_push) (VALUE, VALUE); +! # ifdef __ia64 +! static void * (*dll_rb_ia64_bsp) (void); +! static void (*dll_ruby_init_stack)(VALUE*, void*); +! # else +! static void (*dll_ruby_init_stack)(VALUE*); +! # endif + #endif + #ifdef RUBY19_OR_LATER + static VALUE (*dll_rb_int2big)(SIGNED_VALUE); +*************** +*** 476,481 **** +--- 487,495 ---- + #endif + #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18 + {"rb_string_value_ptr", (RUBY_PROC*)&dll_rb_string_value_ptr}, ++ # ifdef __ia64 ++ {"rb_ia64_bsp", (RUBY_PROC*)&dll_rb_ia64_bsp}, ++ # endif + {"ruby_init_stack", (RUBY_PROC*)&dll_ruby_init_stack}, + # if DYNAMIC_RUBY_VER <= 19 + {"rb_float_new", (RUBY_PROC*)&dll_rb_float_new}, +*************** +*** 717,723 **** + NtInitialize(&argc, &argv); + #endif + { +! #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18 + ruby_init_stack(ruby_stack_start); + #endif + ruby_init(); +--- 731,737 ---- + NtInitialize(&argc, &argv); + #endif + { +! #if defined(RUBY_VERSION) && RUBY_VERSION >= 18 + ruby_init_stack(ruby_stack_start); + #endif + ruby_init(); +*** ../vim-7.3.934/src/version.c 2013-05-11 15:50:02.000000000 +0200 +--- src/version.c 2013-05-11 17:39:08.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 935, + /**/ + +-- +ARTHUR: Well, it doesn't matter. Will you go and tell your master that + Arthur from the Court of Camelot is here. +GUARD #1: Listen, in order to maintain air-speed velocity, a swallow + needs to beat its wings 43 times every second, right? +ARTHUR: Please! + 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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.936 b/7.3.936 new file mode 100644 index 0000000..964dae7 --- /dev/null +++ b/7.3.936 @@ -0,0 +1,661 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.936 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.936 (after 7.3.935) +Problem: Ruby 1.8: Missing piece for static linking on 64 bit systems. +Solution: Define ruby_init_stack() (Hiroshi Shirosaki) + Also fix preprocessor indents. +Files: src/if_ruby.c + + +*** ../vim-7.3.935/src/if_ruby.c 2013-05-11 17:45:45.000000000 +0200 +--- src/if_ruby.c 2013-05-12 00:09:18.000000000 +0200 +*************** +*** 158,265 **** + static void ruby_io_init(void); + static void ruby_vim_init(void); + +! #if defined(DYNAMIC_RUBY) || defined(PROTO) +! #ifdef PROTO +! # define HINSTANCE int /* for generating prototypes */ + #endif + + /* + * Wrapper defines + */ +! #define rb_assoc_new dll_rb_assoc_new +! #define rb_cObject (*dll_rb_cObject) +! #define rb_check_type dll_rb_check_type +! #define rb_class_path dll_rb_class_path +! #define rb_data_object_alloc dll_rb_data_object_alloc +! #define rb_define_class_under dll_rb_define_class_under +! #define rb_define_const dll_rb_define_const +! #define rb_define_global_function dll_rb_define_global_function +! #define rb_define_method dll_rb_define_method +! #define rb_define_module dll_rb_define_module +! #define rb_define_module_function dll_rb_define_module_function +! #define rb_define_singleton_method dll_rb_define_singleton_method +! #define rb_define_virtual_variable dll_rb_define_virtual_variable +! #define rb_stdout (*dll_rb_stdout) +! #define rb_eArgError (*dll_rb_eArgError) +! #define rb_eIndexError (*dll_rb_eIndexError) +! #define rb_eRuntimeError (*dll_rb_eRuntimeError) +! #define rb_eStandardError (*dll_rb_eStandardError) +! #define rb_eval_string_protect dll_rb_eval_string_protect +! #define rb_global_variable dll_rb_global_variable +! #define rb_hash_aset dll_rb_hash_aset +! #define rb_hash_new dll_rb_hash_new +! #define rb_inspect dll_rb_inspect +! #define rb_int2inum dll_rb_int2inum +! #if SIZEOF_INT < SIZEOF_LONG /* 64 bits only */ +! #define rb_fix2int dll_rb_fix2int +! #define rb_num2int dll_rb_num2int +! #define rb_num2uint dll_rb_num2uint +! #endif +! #define rb_lastline_get dll_rb_lastline_get +! #define rb_lastline_set dll_rb_lastline_set +! #define rb_load_protect dll_rb_load_protect +! #ifndef RUBY19_OR_LATER +! #define rb_num2long dll_rb_num2long +! #endif +! #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER <= 19 +! #define rb_num2ulong dll_rb_num2ulong +! #endif +! #define rb_obj_alloc dll_rb_obj_alloc +! #define rb_obj_as_string dll_rb_obj_as_string +! #define rb_obj_id dll_rb_obj_id +! #define rb_raise dll_rb_raise +! #define rb_str_cat dll_rb_str_cat +! #define rb_str_concat dll_rb_str_concat +! #define rb_str_new dll_rb_str_new +! #ifdef rb_str_new2 + /* Ruby may #define rb_str_new2 to use rb_str_new_cstr. */ +! # define need_rb_str_new_cstr 1 + /* Ruby's headers #define rb_str_new_cstr to make use of GCC's + * __builtin_constant_p extension. */ +! # undef rb_str_new_cstr +! # define rb_str_new_cstr dll_rb_str_new_cstr +! #else +! # define rb_str_new2 dll_rb_str_new2 +! #endif +! #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18 +! # define rb_string_value dll_rb_string_value +! # define rb_string_value_ptr dll_rb_string_value_ptr +! # define rb_float_new dll_rb_float_new +! # define rb_ary_new dll_rb_ary_new +! # define rb_ary_push dll_rb_ary_push +! # ifdef __ia64 +! # define rb_ia64_bsp dll_rb_ia64_bsp +! # undef ruby_init_stack +! # define ruby_init_stack(addr) dll_ruby_init_stack((addr), rb_ia64_bsp()) + # else +! # define ruby_init_stack dll_ruby_init_stack + # endif +- #else +- # define rb_str2cstr dll_rb_str2cstr +- #endif +- #ifdef RUBY19_OR_LATER +- # define rb_errinfo dll_rb_errinfo +- #else +- # define ruby_errinfo (*dll_ruby_errinfo) +- #endif +- #define ruby_init dll_ruby_init +- #define ruby_init_loadpath dll_ruby_init_loadpath +- #ifdef WIN3264 +- # define NtInitialize dll_NtInitialize + # if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18 +! # define rb_w32_snprintf dll_rb_w32_snprintf + # endif +- #endif + +! #ifdef RUBY19_OR_LATER +! # define ruby_script dll_ruby_script +! # define rb_enc_find_index dll_rb_enc_find_index +! # define rb_enc_find dll_rb_enc_find +! # define rb_enc_str_new dll_rb_enc_str_new +! # define rb_sprintf dll_rb_sprintf +! # define rb_require dll_rb_require +! # define ruby_process_options dll_ruby_process_options +! #endif + + /* + * Pointers for dynamic link +--- 158,269 ---- + static void ruby_io_init(void); + static void ruby_vim_init(void); + +! #if defined(__ia64) && !defined(ruby_init_stack) +! # define ruby_init_stack(addr) ruby_init_stack((addr), rb_ia64_bsp()) + #endif + ++ #if defined(DYNAMIC_RUBY) || defined(PROTO) ++ # ifdef PROTO ++ # define HINSTANCE int /* for generating prototypes */ ++ # endif ++ + /* + * Wrapper defines + */ +! # define rb_assoc_new dll_rb_assoc_new +! # define rb_cObject (*dll_rb_cObject) +! # define rb_check_type dll_rb_check_type +! # define rb_class_path dll_rb_class_path +! # define rb_data_object_alloc dll_rb_data_object_alloc +! # define rb_define_class_under dll_rb_define_class_under +! # define rb_define_const dll_rb_define_const +! # define rb_define_global_function dll_rb_define_global_function +! # define rb_define_method dll_rb_define_method +! # define rb_define_module dll_rb_define_module +! # define rb_define_module_function dll_rb_define_module_function +! # define rb_define_singleton_method dll_rb_define_singleton_method +! # define rb_define_virtual_variable dll_rb_define_virtual_variable +! # define rb_stdout (*dll_rb_stdout) +! # define rb_eArgError (*dll_rb_eArgError) +! # define rb_eIndexError (*dll_rb_eIndexError) +! # define rb_eRuntimeError (*dll_rb_eRuntimeError) +! # define rb_eStandardError (*dll_rb_eStandardError) +! # define rb_eval_string_protect dll_rb_eval_string_protect +! # define rb_global_variable dll_rb_global_variable +! # define rb_hash_aset dll_rb_hash_aset +! # define rb_hash_new dll_rb_hash_new +! # define rb_inspect dll_rb_inspect +! # define rb_int2inum dll_rb_int2inum +! # if SIZEOF_INT < SIZEOF_LONG /* 64 bits only */ +! # define rb_fix2int dll_rb_fix2int +! # define rb_num2int dll_rb_num2int +! # define rb_num2uint dll_rb_num2uint +! # endif +! # define rb_lastline_get dll_rb_lastline_get +! # define rb_lastline_set dll_rb_lastline_set +! # define rb_load_protect dll_rb_load_protect +! # ifndef RUBY19_OR_LATER +! # define rb_num2long dll_rb_num2long +! # endif +! # if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER <= 19 +! # define rb_num2ulong dll_rb_num2ulong +! # endif +! # define rb_obj_alloc dll_rb_obj_alloc +! # define rb_obj_as_string dll_rb_obj_as_string +! # define rb_obj_id dll_rb_obj_id +! # define rb_raise dll_rb_raise +! # define rb_str_cat dll_rb_str_cat +! # define rb_str_concat dll_rb_str_concat +! # define rb_str_new dll_rb_str_new +! # ifdef rb_str_new2 + /* Ruby may #define rb_str_new2 to use rb_str_new_cstr. */ +! # define need_rb_str_new_cstr 1 + /* Ruby's headers #define rb_str_new_cstr to make use of GCC's + * __builtin_constant_p extension. */ +! # undef rb_str_new_cstr +! # define rb_str_new_cstr dll_rb_str_new_cstr + # else +! # define rb_str_new2 dll_rb_str_new2 + # endif + # if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18 +! # define rb_string_value dll_rb_string_value +! # define rb_string_value_ptr dll_rb_string_value_ptr +! # define rb_float_new dll_rb_float_new +! # define rb_ary_new dll_rb_ary_new +! # define rb_ary_push dll_rb_ary_push +! # ifdef __ia64 +! # define rb_ia64_bsp dll_rb_ia64_bsp +! # undef ruby_init_stack +! # define ruby_init_stack(addr) dll_ruby_init_stack((addr), rb_ia64_bsp()) +! # else +! # define ruby_init_stack dll_ruby_init_stack +! # endif +! # else +! # define rb_str2cstr dll_rb_str2cstr +! # endif +! # ifdef RUBY19_OR_LATER +! # define rb_errinfo dll_rb_errinfo +! # else +! # define ruby_errinfo (*dll_ruby_errinfo) +! # endif +! # define ruby_init dll_ruby_init +! # define ruby_init_loadpath dll_ruby_init_loadpath +! # ifdef WIN3264 +! # define NtInitialize dll_NtInitialize +! # if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18 +! # define rb_w32_snprintf dll_rb_w32_snprintf +! # endif + # endif + +! # ifdef RUBY19_OR_LATER +! # define ruby_script dll_ruby_script +! # define rb_enc_find_index dll_rb_enc_find_index +! # define rb_enc_find dll_rb_enc_find +! # define rb_enc_str_new dll_rb_enc_str_new +! # define rb_sprintf dll_rb_sprintf +! # define rb_require dll_rb_require +! # define ruby_process_options dll_ruby_process_options +! # endif + + /* + * Pointers for dynamic link +*************** +*** 267,275 **** + static VALUE (*dll_rb_assoc_new) (VALUE, VALUE); + VALUE *dll_rb_cFalseClass; + VALUE *dll_rb_cFixnum; +! #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 20 + VALUE *dll_rb_cFloat; +! #endif + VALUE *dll_rb_cNilClass; + static VALUE *dll_rb_cObject; + VALUE *dll_rb_cSymbol; +--- 271,279 ---- + static VALUE (*dll_rb_assoc_new) (VALUE, VALUE); + VALUE *dll_rb_cFalseClass; + VALUE *dll_rb_cFixnum; +! # if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 20 + VALUE *dll_rb_cFloat; +! # endif + VALUE *dll_rb_cNilClass; + static VALUE *dll_rb_cObject; + VALUE *dll_rb_cSymbol; +*************** +*** 296,306 **** + static VALUE (*dll_rb_hash_new) (void); + static VALUE (*dll_rb_inspect) (VALUE); + static VALUE (*dll_rb_int2inum) (long); +! #if SIZEOF_INT < SIZEOF_LONG /* 64 bits only */ + static long (*dll_rb_fix2int) (VALUE); + static long (*dll_rb_num2int) (VALUE); + static unsigned long (*dll_rb_num2uint) (VALUE); +! #endif + static VALUE (*dll_rb_lastline_get) (void); + static void (*dll_rb_lastline_set) (VALUE); + static void (*dll_rb_load_protect) (VALUE, int, int*); +--- 300,310 ---- + static VALUE (*dll_rb_hash_new) (void); + static VALUE (*dll_rb_inspect) (VALUE); + static VALUE (*dll_rb_int2inum) (long); +! # if SIZEOF_INT < SIZEOF_LONG /* 64 bits only */ + static long (*dll_rb_fix2int) (VALUE); + static long (*dll_rb_num2int) (VALUE); + static unsigned long (*dll_rb_num2uint) (VALUE); +! # endif + static VALUE (*dll_rb_lastline_get) (void); + static void (*dll_rb_lastline_set) (VALUE); + static void (*dll_rb_load_protect) (VALUE, int, int*); +*************** +*** 310,359 **** + static VALUE (*dll_rb_obj_as_string) (VALUE); + static VALUE (*dll_rb_obj_id) (VALUE); + static void (*dll_rb_raise) (VALUE, const char*, ...); +! #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18 + static VALUE (*dll_rb_string_value) (volatile VALUE*); +! #else + static char *(*dll_rb_str2cstr) (VALUE,int*); +! #endif + static VALUE (*dll_rb_str_cat) (VALUE, const char*, long); + static VALUE (*dll_rb_str_concat) (VALUE, VALUE); + static VALUE (*dll_rb_str_new) (const char*, long); +! #ifdef need_rb_str_new_cstr + /* Ruby may #define rb_str_new2 to use rb_str_new_cstr. */ + static VALUE (*dll_rb_str_new_cstr) (const char*); +! #else + static VALUE (*dll_rb_str_new2) (const char*); +! #endif +! #ifdef RUBY19_OR_LATER + static VALUE (*dll_rb_errinfo) (void); +! #else + static VALUE *dll_ruby_errinfo; +! #endif + static void (*dll_ruby_init) (void); + static void (*dll_ruby_init_loadpath) (void); +! #ifdef WIN3264 + static void (*dll_NtInitialize) (int*, char***); +! # if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18 + static int (*dll_rb_w32_snprintf)(char*, size_t, const char*, ...); + # endif +! #endif +! #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18 + static char * (*dll_rb_string_value_ptr) (volatile VALUE*); + static VALUE (*dll_rb_float_new) (double); + static VALUE (*dll_rb_ary_new) (void); + static VALUE (*dll_rb_ary_push) (VALUE, VALUE); +! # ifdef __ia64 + static void * (*dll_rb_ia64_bsp) (void); + static void (*dll_ruby_init_stack)(VALUE*, void*); +! # else + static void (*dll_ruby_init_stack)(VALUE*); + # endif +! #endif +! #ifdef RUBY19_OR_LATER + static VALUE (*dll_rb_int2big)(SIGNED_VALUE); +! #endif + +! #ifdef RUBY19_OR_LATER + static void (*dll_ruby_script) (const char*); + static int (*dll_rb_enc_find_index) (const char*); + static rb_encoding* (*dll_rb_enc_find) (const char*); +--- 314,363 ---- + static VALUE (*dll_rb_obj_as_string) (VALUE); + static VALUE (*dll_rb_obj_id) (VALUE); + static void (*dll_rb_raise) (VALUE, const char*, ...); +! # if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18 + static VALUE (*dll_rb_string_value) (volatile VALUE*); +! # else + static char *(*dll_rb_str2cstr) (VALUE,int*); +! # endif + static VALUE (*dll_rb_str_cat) (VALUE, const char*, long); + static VALUE (*dll_rb_str_concat) (VALUE, VALUE); + static VALUE (*dll_rb_str_new) (const char*, long); +! # ifdef need_rb_str_new_cstr + /* Ruby may #define rb_str_new2 to use rb_str_new_cstr. */ + static VALUE (*dll_rb_str_new_cstr) (const char*); +! # else + static VALUE (*dll_rb_str_new2) (const char*); +! # endif +! # ifdef RUBY19_OR_LATER + static VALUE (*dll_rb_errinfo) (void); +! # else + static VALUE *dll_ruby_errinfo; +! # endif + static void (*dll_ruby_init) (void); + static void (*dll_ruby_init_loadpath) (void); +! # ifdef WIN3264 + static void (*dll_NtInitialize) (int*, char***); +! # if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18 + static int (*dll_rb_w32_snprintf)(char*, size_t, const char*, ...); ++ # endif + # endif +! # if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18 + static char * (*dll_rb_string_value_ptr) (volatile VALUE*); + static VALUE (*dll_rb_float_new) (double); + static VALUE (*dll_rb_ary_new) (void); + static VALUE (*dll_rb_ary_push) (VALUE, VALUE); +! # ifdef __ia64 + static void * (*dll_rb_ia64_bsp) (void); + static void (*dll_ruby_init_stack)(VALUE*, void*); +! # else + static void (*dll_ruby_init_stack)(VALUE*); ++ # endif + # endif +! # ifdef RUBY19_OR_LATER + static VALUE (*dll_rb_int2big)(SIGNED_VALUE); +! # endif + +! # ifdef RUBY19_OR_LATER + static void (*dll_ruby_script) (const char*); + static int (*dll_rb_enc_find_index) (const char*); + static rb_encoding* (*dll_rb_enc_find) (const char*); +*************** +*** 361,369 **** + static VALUE (*dll_rb_sprintf) (const char*, ...); + static VALUE (*dll_rb_require) (const char*); + static void* (*ruby_process_options)(int, char**); +! #endif + +! #if defined(RUBY19_OR_LATER) && !defined(PROTO) + SIGNED_VALUE rb_num2long_stub(VALUE x) + { + return dll_rb_num2long(x); +--- 365,373 ---- + static VALUE (*dll_rb_sprintf) (const char*, ...); + static VALUE (*dll_rb_require) (const char*); + static void* (*ruby_process_options)(int, char**); +! # endif + +! # if defined(RUBY19_OR_LATER) && !defined(PROTO) + SIGNED_VALUE rb_num2long_stub(VALUE x) + { + return dll_rb_num2long(x); +*************** +*** 372,378 **** + { + return dll_rb_int2big(x); + } +! #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 20 \ + && SIZEOF_INT < SIZEOF_LONG + long rb_fix2int_stub(VALUE x) + { +--- 376,382 ---- + { + return dll_rb_int2big(x); + } +! # if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 20 \ + && SIZEOF_INT < SIZEOF_LONG + long rb_fix2int_stub(VALUE x) + { +*************** +*** 382,389 **** + { + return dll_rb_num2int(x); + } +! #endif +! #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 20 + VALUE + rb_float_new_in_heap(double d) + { +--- 386,393 ---- + { + return dll_rb_num2int(x); + } +! # endif +! # if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 20 + VALUE + rb_float_new_in_heap(double d) + { +*************** +*** 393,400 **** + { + return (long)RSHIFT((SIGNED_VALUE)(x),1); + } +! #endif +! #endif + + static HINSTANCE hinstRuby = NULL; /* Instance of ruby.dll */ + +--- 397,404 ---- + { + return (long)RSHIFT((SIGNED_VALUE)(x),1); + } +! # endif +! # endif + + static HINSTANCE hinstRuby = NULL; /* Instance of ruby.dll */ + +*************** +*** 410,418 **** + {"rb_assoc_new", (RUBY_PROC*)&dll_rb_assoc_new}, + {"rb_cFalseClass", (RUBY_PROC*)&dll_rb_cFalseClass}, + {"rb_cFixnum", (RUBY_PROC*)&dll_rb_cFixnum}, +! #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 20 + {"rb_cFloat", (RUBY_PROC*)&dll_rb_cFloat}, +! #endif + {"rb_cNilClass", (RUBY_PROC*)&dll_rb_cNilClass}, + {"rb_cObject", (RUBY_PROC*)&dll_rb_cObject}, + {"rb_cSymbol", (RUBY_PROC*)&dll_rb_cSymbol}, +--- 414,422 ---- + {"rb_assoc_new", (RUBY_PROC*)&dll_rb_assoc_new}, + {"rb_cFalseClass", (RUBY_PROC*)&dll_rb_cFalseClass}, + {"rb_cFixnum", (RUBY_PROC*)&dll_rb_cFixnum}, +! # if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 20 + {"rb_cFloat", (RUBY_PROC*)&dll_rb_cFloat}, +! # endif + {"rb_cNilClass", (RUBY_PROC*)&dll_rb_cNilClass}, + {"rb_cObject", (RUBY_PROC*)&dll_rb_cObject}, + {"rb_cSymbol", (RUBY_PROC*)&dll_rb_cSymbol}, +*************** +*** 439,449 **** + {"rb_hash_new", (RUBY_PROC*)&dll_rb_hash_new}, + {"rb_inspect", (RUBY_PROC*)&dll_rb_inspect}, + {"rb_int2inum", (RUBY_PROC*)&dll_rb_int2inum}, +! #if SIZEOF_INT < SIZEOF_LONG /* 64 bits only */ + {"rb_fix2int", (RUBY_PROC*)&dll_rb_fix2int}, + {"rb_num2int", (RUBY_PROC*)&dll_rb_num2int}, + {"rb_num2uint", (RUBY_PROC*)&dll_rb_num2uint}, +! #endif + {"rb_lastline_get", (RUBY_PROC*)&dll_rb_lastline_get}, + {"rb_lastline_set", (RUBY_PROC*)&dll_rb_lastline_set}, + {"rb_load_protect", (RUBY_PROC*)&dll_rb_load_protect}, +--- 443,453 ---- + {"rb_hash_new", (RUBY_PROC*)&dll_rb_hash_new}, + {"rb_inspect", (RUBY_PROC*)&dll_rb_inspect}, + {"rb_int2inum", (RUBY_PROC*)&dll_rb_int2inum}, +! # if SIZEOF_INT < SIZEOF_LONG /* 64 bits only */ + {"rb_fix2int", (RUBY_PROC*)&dll_rb_fix2int}, + {"rb_num2int", (RUBY_PROC*)&dll_rb_num2int}, + {"rb_num2uint", (RUBY_PROC*)&dll_rb_num2uint}, +! # endif + {"rb_lastline_get", (RUBY_PROC*)&dll_rb_lastline_get}, + {"rb_lastline_set", (RUBY_PROC*)&dll_rb_lastline_set}, + {"rb_load_protect", (RUBY_PROC*)&dll_rb_load_protect}, +*************** +*** 453,505 **** + {"rb_obj_as_string", (RUBY_PROC*)&dll_rb_obj_as_string}, + {"rb_obj_id", (RUBY_PROC*)&dll_rb_obj_id}, + {"rb_raise", (RUBY_PROC*)&dll_rb_raise}, +! #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18 + {"rb_string_value", (RUBY_PROC*)&dll_rb_string_value}, +! #else + {"rb_str2cstr", (RUBY_PROC*)&dll_rb_str2cstr}, +! #endif + {"rb_str_cat", (RUBY_PROC*)&dll_rb_str_cat}, + {"rb_str_concat", (RUBY_PROC*)&dll_rb_str_concat}, + {"rb_str_new", (RUBY_PROC*)&dll_rb_str_new}, +! #ifdef need_rb_str_new_cstr + {"rb_str_new_cstr", (RUBY_PROC*)&dll_rb_str_new_cstr}, +! #else + {"rb_str_new2", (RUBY_PROC*)&dll_rb_str_new2}, +! #endif +! #ifdef RUBY19_OR_LATER + {"rb_errinfo", (RUBY_PROC*)&dll_rb_errinfo}, +! #else + {"ruby_errinfo", (RUBY_PROC*)&dll_ruby_errinfo}, +! #endif + {"ruby_init", (RUBY_PROC*)&dll_ruby_init}, + {"ruby_init_loadpath", (RUBY_PROC*)&dll_ruby_init_loadpath}, +! #ifdef WIN3264 + { +! # if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER < 19 + "NtInitialize", +! # else + "ruby_sysinit", +! # endif + (RUBY_PROC*)&dll_NtInitialize}, +! # if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18 + {"rb_w32_snprintf", (RUBY_PROC*)&dll_rb_w32_snprintf}, + # endif +! #endif +! #if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18 + {"rb_string_value_ptr", (RUBY_PROC*)&dll_rb_string_value_ptr}, +! # ifdef __ia64 + {"rb_ia64_bsp", (RUBY_PROC*)&dll_rb_ia64_bsp}, +! # endif + {"ruby_init_stack", (RUBY_PROC*)&dll_ruby_init_stack}, +! # if DYNAMIC_RUBY_VER <= 19 + {"rb_float_new", (RUBY_PROC*)&dll_rb_float_new}, +! # else + {"rb_float_new_in_heap", (RUBY_PROC*)&dll_rb_float_new}, +! # endif + {"rb_ary_new", (RUBY_PROC*)&dll_rb_ary_new}, + {"rb_ary_push", (RUBY_PROC*)&dll_rb_ary_push}, +! #endif +! #ifdef RUBY19_OR_LATER + {"rb_int2big", (RUBY_PROC*)&dll_rb_int2big}, + {"ruby_script", (RUBY_PROC*)&dll_ruby_script}, + {"rb_enc_find_index", (RUBY_PROC*)&dll_rb_enc_find_index}, +--- 457,509 ---- + {"rb_obj_as_string", (RUBY_PROC*)&dll_rb_obj_as_string}, + {"rb_obj_id", (RUBY_PROC*)&dll_rb_obj_id}, + {"rb_raise", (RUBY_PROC*)&dll_rb_raise}, +! # if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18 + {"rb_string_value", (RUBY_PROC*)&dll_rb_string_value}, +! # else + {"rb_str2cstr", (RUBY_PROC*)&dll_rb_str2cstr}, +! # endif + {"rb_str_cat", (RUBY_PROC*)&dll_rb_str_cat}, + {"rb_str_concat", (RUBY_PROC*)&dll_rb_str_concat}, + {"rb_str_new", (RUBY_PROC*)&dll_rb_str_new}, +! # ifdef need_rb_str_new_cstr + {"rb_str_new_cstr", (RUBY_PROC*)&dll_rb_str_new_cstr}, +! # else + {"rb_str_new2", (RUBY_PROC*)&dll_rb_str_new2}, +! # endif +! # ifdef RUBY19_OR_LATER + {"rb_errinfo", (RUBY_PROC*)&dll_rb_errinfo}, +! # else + {"ruby_errinfo", (RUBY_PROC*)&dll_ruby_errinfo}, +! # endif + {"ruby_init", (RUBY_PROC*)&dll_ruby_init}, + {"ruby_init_loadpath", (RUBY_PROC*)&dll_ruby_init_loadpath}, +! # ifdef WIN3264 + { +! # if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER < 19 + "NtInitialize", +! # else + "ruby_sysinit", +! # endif + (RUBY_PROC*)&dll_NtInitialize}, +! # if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18 + {"rb_w32_snprintf", (RUBY_PROC*)&dll_rb_w32_snprintf}, ++ # endif + # endif +! # if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 18 + {"rb_string_value_ptr", (RUBY_PROC*)&dll_rb_string_value_ptr}, +! # ifdef __ia64 + {"rb_ia64_bsp", (RUBY_PROC*)&dll_rb_ia64_bsp}, +! # endif + {"ruby_init_stack", (RUBY_PROC*)&dll_ruby_init_stack}, +! # if DYNAMIC_RUBY_VER <= 19 + {"rb_float_new", (RUBY_PROC*)&dll_rb_float_new}, +! # else + {"rb_float_new_in_heap", (RUBY_PROC*)&dll_rb_float_new}, +! # endif + {"rb_ary_new", (RUBY_PROC*)&dll_rb_ary_new}, + {"rb_ary_push", (RUBY_PROC*)&dll_rb_ary_push}, +! # endif +! # ifdef RUBY19_OR_LATER + {"rb_int2big", (RUBY_PROC*)&dll_rb_int2big}, + {"ruby_script", (RUBY_PROC*)&dll_ruby_script}, + {"rb_enc_find_index", (RUBY_PROC*)&dll_rb_enc_find_index}, +*************** +*** 508,514 **** + {"rb_sprintf", (RUBY_PROC*)&dll_rb_sprintf}, + {"rb_require", (RUBY_PROC*)&dll_rb_require}, + {"ruby_process_options", (RUBY_PROC*)&dll_ruby_process_options}, +! #endif + {"", NULL}, + }; + +--- 512,518 ---- + {"rb_sprintf", (RUBY_PROC*)&dll_rb_sprintf}, + {"rb_require", (RUBY_PROC*)&dll_rb_require}, + {"ruby_process_options", (RUBY_PROC*)&dll_ruby_process_options}, +! # endif + {"", NULL}, + }; + +*** ../vim-7.3.935/src/version.c 2013-05-11 17:45:45.000000000 +0200 +--- src/version.c 2013-05-12 14:09:22.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 936, + /**/ + +-- +DEAD PERSON: I don't want to go in the cart! +CUSTOMER: Oh, don't be such a baby. +MORTICIAN: I can't take him... +DEAD PERSON: I feel fine! +CUSTOMER: Oh, do us a favor... +MORTICIAN: I can't. + 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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.937 b/7.3.937 new file mode 100644 index 0000000..a9bd210 --- /dev/null +++ b/7.3.937 @@ -0,0 +1,616 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.937 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.937 +Problem: More can be shared between Python 2 and 3. +Solution: Move code to if_py_both.h. (ZyX) +Files: src/if_python.c, src/if_python3.c, src/if_py_both.h + + +*** ../vim-7.3.936/src/if_python.c 2013-05-06 04:21:35.000000000 +0200 +--- src/if_python.c 2013-05-12 18:31:20.000000000 +0200 +*************** +*** 619,624 **** +--- 619,627 ---- + + #define DESTRUCTOR_FINISH(self) Py_DECREF(self); + ++ #define WIN_PYTHON_REF(win) win->w_python_ref ++ #define BUF_PYTHON_REF(buf) buf->b_python_ref ++ + static PyObject *OutputGetattr(PyObject *, char *); + static PyObject *BufferGetattr(PyObject *, char *); + static PyObject *WindowGetattr(PyObject *, char *); +*************** +*** 1054,1095 **** + */ + + static PyObject * +- BufferNew(buf_T *buf) +- { +- /* We need to handle deletion of buffers underneath us. +- * If we add a "b_python_ref" field to the buf_T structure, +- * then we can get at it in buf_freeall() in vim. We then +- * need to create only ONE Python object per buffer - if +- * we try to create a second, just INCREF the existing one +- * and return it. The (single) Python object referring to +- * the buffer is stored in "b_python_ref". +- * Question: what to do on a buf_freeall(). We'll probably +- * have to either delete the Python object (DECREF it to +- * zero - a bad idea, as it leaves dangling refs!) or +- * set the buf_T * value to an invalid value (-1?), which +- * means we need checks in all access functions... Bah. +- */ +- +- BufferObject *self; +- +- if (buf->b_python_ref != NULL) +- { +- self = buf->b_python_ref; +- Py_INCREF(self); +- } +- else +- { +- self = PyObject_NEW(BufferObject, &BufferType); +- if (self == NULL) +- return NULL; +- self->buf = buf; +- buf->b_python_ref = self; +- } +- +- return (PyObject *)(self); +- } +- +- static PyObject * + BufferGetattr(PyObject *self, char *name) + { + PyObject *r; +--- 1057,1062 ---- +*************** +*** 1107,1136 **** + /******************/ + + static PyInt +- BufferLength(PyObject *self) +- { +- /* HOW DO WE SIGNAL AN ERROR FROM THIS FUNCTION? */ +- if (CheckBuffer((BufferObject *)(self))) +- return -1; /* ??? */ +- +- return (((BufferObject *)(self))->buf->b_ml.ml_line_count); +- } +- +- static PyObject * +- BufferItem(PyObject *self, PyInt n) +- { +- return RBItem((BufferObject *)(self), n, 1, +- (int)((BufferObject *)(self))->buf->b_ml.ml_line_count); +- } +- +- static PyObject * +- BufferSlice(PyObject *self, PyInt lo, PyInt hi) +- { +- return RBSlice((BufferObject *)(self), lo, hi, 1, +- (int)((BufferObject *)(self))->buf->b_ml.ml_line_count); +- } +- +- static PyInt + BufferAssItem(PyObject *self, PyInt n, PyObject *val) + { + return RBAsItem((BufferObject *)(self), n, val, 1, +--- 1074,1079 ---- +*************** +*** 1217,1256 **** + */ + + static PyObject * +- WindowNew(win_T *win) +- { +- /* We need to handle deletion of windows underneath us. +- * If we add a "w_python_ref" field to the win_T structure, +- * then we can get at it in win_free() in vim. We then +- * need to create only ONE Python object per window - if +- * we try to create a second, just INCREF the existing one +- * and return it. The (single) Python object referring to +- * the window is stored in "w_python_ref". +- * On a win_free() we set the Python object's win_T* field +- * to an invalid value. We trap all uses of a window +- * object, and reject them if the win_T* field is invalid. +- */ +- +- WindowObject *self; +- +- if (win->w_python_ref) +- { +- self = win->w_python_ref; +- Py_INCREF(self); +- } +- else +- { +- self = PyObject_NEW(WindowObject, &WindowType); +- if (self == NULL) +- return NULL; +- self->win = win; +- win->w_python_ref = self; +- } +- +- return (PyObject *)(self); +- } +- +- static PyObject * + WindowGetattr(PyObject *self, char *name) + { + PyObject *r; +--- 1160,1165 ---- +*************** +*** 1289,1299 **** + void + python_buffer_free(buf_T *buf) + { +! if (buf->b_python_ref != NULL) + { +! BufferObject *bp = buf->b_python_ref; + bp->buf = INVALID_BUFFER_VALUE; +! buf->b_python_ref = NULL; + } + } + +--- 1198,1208 ---- + void + python_buffer_free(buf_T *buf) + { +! if (BUF_PYTHON_REF(buf) != NULL) + { +! BufferObject *bp = BUF_PYTHON_REF(buf); + bp->buf = INVALID_BUFFER_VALUE; +! BUF_PYTHON_REF(buf) = NULL; + } + } + +*************** +*** 1301,1311 **** + void + python_window_free(win_T *win) + { +! if (win->w_python_ref != NULL) + { +! WindowObject *wp = win->w_python_ref; + wp->win = INVALID_WINDOW_VALUE; +! win->w_python_ref = NULL; + } + } + #endif +--- 1210,1220 ---- + void + python_window_free(win_T *win) + { +! if (WIN_PYTHON_REF(win) != NULL) + { +! WindowObject *wp = WIN_PYTHON_REF(win); + wp->win = INVALID_WINDOW_VALUE; +! WIN_PYTHON_REF(win) = NULL; + } + } + #endif +*** ../vim-7.3.936/src/if_python3.c 2013-05-06 04:21:35.000000000 +0200 +--- src/if_python3.c 2013-05-12 18:31:20.000000000 +0200 +*************** +*** 621,626 **** +--- 621,629 ---- + + #define DESTRUCTOR_FINISH(self) Py_TYPE(self)->tp_free((PyObject*)self); + ++ #define WIN_PYTHON_REF(win) win->w_python3_ref ++ #define BUF_PYTHON_REF(buf) buf->b_python3_ref ++ + static void + call_PyObject_Free(void *p) + { +*************** +*** 1067,1112 **** + }; + + +! /* Buffer object - Definitions + */ + + static PyObject * +- BufferNew(buf_T *buf) +- { +- /* We need to handle deletion of buffers underneath us. +- * If we add a "b_python3_ref" field to the buf_T structure, +- * then we can get at it in buf_freeall() in vim. We then +- * need to create only ONE Python object per buffer - if +- * we try to create a second, just INCREF the existing one +- * and return it. The (single) Python object referring to +- * the buffer is stored in "b_python3_ref". +- * Question: what to do on a buf_freeall(). We'll probably +- * have to either delete the Python object (DECREF it to +- * zero - a bad idea, as it leaves dangling refs!) or +- * set the buf_T * value to an invalid value (-1?), which +- * means we need checks in all access functions... Bah. +- */ +- +- BufferObject *self; +- +- if (buf->b_python3_ref != NULL) +- { +- self = buf->b_python3_ref; +- Py_INCREF(self); +- } +- else +- { +- self = PyObject_NEW(BufferObject, &BufferType); +- buf->b_python3_ref = self; +- if (self == NULL) +- return NULL; +- self->buf = buf; +- } +- +- return (PyObject *)(self); +- } +- +- static PyObject * + BufferGetattro(PyObject *self, PyObject*nameobj) + { + PyObject *r; +--- 1070,1079 ---- + }; + + +! /* Buffer object + */ + + static PyObject * + BufferGetattro(PyObject *self, PyObject*nameobj) + { + PyObject *r; +*************** +*** 1132,1160 **** + + /******************/ + +- static Py_ssize_t +- BufferLength(PyObject *self) +- { +- if (CheckBuffer((BufferObject *)(self))) +- return -1; +- +- return (Py_ssize_t)(((BufferObject *)(self))->buf->b_ml.ml_line_count); +- } +- +- static PyObject * +- BufferItem(PyObject *self, Py_ssize_t n) +- { +- return RBItem((BufferObject *)(self), n, 1, +- (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count); +- } +- +- static PyObject * +- BufferSlice(PyObject *self, Py_ssize_t lo, Py_ssize_t hi) +- { +- return RBSlice((BufferObject *)(self), lo, hi, 1, +- (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count); +- } +- + static PyObject * + BufferSubscript(PyObject *self, PyObject* idx) + { +--- 1099,1104 ---- +*************** +*** 1342,1381 **** + */ + + static PyObject * +- WindowNew(win_T *win) +- { +- /* We need to handle deletion of windows underneath us. +- * If we add a "w_python3_ref" field to the win_T structure, +- * then we can get at it in win_free() in vim. We then +- * need to create only ONE Python object per window - if +- * we try to create a second, just INCREF the existing one +- * and return it. The (single) Python object referring to +- * the window is stored in "w_python3_ref". +- * On a win_free() we set the Python object's win_T* field +- * to an invalid value. We trap all uses of a window +- * object, and reject them if the win_T* field is invalid. +- */ +- +- WindowObject *self; +- +- if (win->w_python3_ref) +- { +- self = win->w_python3_ref; +- Py_INCREF(self); +- } +- else +- { +- self = PyObject_NEW(WindowObject, &WindowType); +- if (self == NULL) +- return NULL; +- self->win = win; +- win->w_python3_ref = self; +- } +- +- return (PyObject *)(self); +- } +- +- static PyObject * + WindowGetattro(PyObject *self, PyObject *nameobj) + { + PyObject *r; +--- 1286,1291 ---- +*************** +*** 1575,1585 **** + void + python3_buffer_free(buf_T *buf) + { +! if (buf->b_python3_ref != NULL) + { +! BufferObject *bp = buf->b_python3_ref; + bp->buf = INVALID_BUFFER_VALUE; +! buf->b_python3_ref = NULL; + } + } + +--- 1485,1495 ---- + void + python3_buffer_free(buf_T *buf) + { +! if (BUF_PYTHON_REF(buf) != NULL) + { +! BufferObject *bp = BUF_PYTHON_REF(buf); + bp->buf = INVALID_BUFFER_VALUE; +! BUF_PYTHON_REF(buf) = NULL; + } + } + +*************** +*** 1587,1597 **** + void + python3_window_free(win_T *win) + { +! if (win->w_python3_ref != NULL) + { +! WindowObject *wp = win->w_python3_ref; + wp->win = INVALID_WINDOW_VALUE; +! win->w_python3_ref = NULL; + } + } + #endif +--- 1497,1507 ---- + void + python3_window_free(win_T *win) + { +! if (WIN_PYTHON_REF(win) != NULL) + { +! WindowObject *wp = WIN_PYTHON_REF(win); + wp->win = INVALID_WINDOW_VALUE; +! WIN_PYTHON_REF(win) = NULL; + } + } + #endif +*** ../vim-7.3.936/src/if_py_both.h 2013-05-06 06:26:10.000000000 +0200 +--- src/if_py_both.h 2013-05-12 18:31:20.000000000 +0200 +*************** +*** 1782,1792 **** +--- 1782,1832 ---- + return 0; + } + ++ /* Window object ++ */ ++ + static int WindowSetattr(PyObject *, char *, PyObject *); + static PyObject *WindowRepr(PyObject *); + static PyTypeObject WindowType; + + static PyObject * ++ WindowNew(win_T *win) ++ { ++ /* We need to handle deletion of windows underneath us. ++ * If we add a "w_python*_ref" field to the win_T structure, ++ * then we can get at it in win_free() in vim. We then ++ * need to create only ONE Python object per window - if ++ * we try to create a second, just INCREF the existing one ++ * and return it. The (single) Python object referring to ++ * the window is stored in "w_python*_ref". ++ * On a win_free() we set the Python object's win_T* field ++ * to an invalid value. We trap all uses of a window ++ * object, and reject them if the win_T* field is invalid. ++ * ++ * Python2 and Python3 get different fields and different objects: ++ * w_python_ref and w_python3_ref fields respectively. ++ */ ++ ++ WindowObject *self; ++ ++ if (WIN_PYTHON_REF(win)) ++ { ++ self = WIN_PYTHON_REF(win); ++ Py_INCREF(self); ++ } ++ else ++ { ++ self = PyObject_NEW(WindowObject, &WindowType); ++ if (self == NULL) ++ return NULL; ++ self->win = win; ++ WIN_PYTHON_REF(win) = self; ++ } ++ ++ return (PyObject *)(self); ++ } ++ ++ static PyObject * + WindowAttr(WindowObject *this, char *name) + { + if (strcmp(name, "buffer") == 0) +*************** +*** 1809,1815 **** + return OptionsNew(SREQ_WIN, this->win, (checkfun) CheckWindow, + (PyObject *) this); + else if (strcmp(name,"__members__") == 0) +! return Py_BuildValue("[sssss]", "buffer", "cursor", "height", "vars", + "options"); + else + return NULL; +--- 1849,1855 ---- + return OptionsNew(SREQ_WIN, this->win, (checkfun) CheckWindow, + (PyObject *) this); + else if (strcmp(name,"__members__") == 0) +! return Py_BuildValue("[ssssss]", "buffer", "cursor", "height", "vars", + "options"); + else + return NULL; +*************** +*** 1821,1831 **** + WindowObject *this = (WindowObject *)(self); + + if (this->win && this->win != INVALID_WINDOW_VALUE) +! #if PY_MAJOR_VERSION >= 3 +! this->win->w_python3_ref = NULL; +! #else +! this->win->w_python_ref = NULL; +! #endif + + DESTRUCTOR_FINISH(self); + } +--- 1861,1867 ---- + WindowObject *this = (WindowObject *)(self); + + if (this->win && this->win != INVALID_WINDOW_VALUE) +! WIN_PYTHON_REF(this->win) = NULL; + + DESTRUCTOR_FINISH(self); + } +*************** +*** 2756,2771 **** + BufferObject *this = (BufferObject *)(self); + + if (this->buf && this->buf != INVALID_BUFFER_VALUE) +! #if PY_MAJOR_VERSION >= 3 +! this->buf->b_python3_ref = NULL; +! #else +! this->buf->b_python_ref = NULL; +! #endif + + DESTRUCTOR_FINISH(self); + } + + static PyObject * + BufferAttr(BufferObject *this, char *name) + { + if (strcmp(name, "name") == 0) +--- 2792,2842 ---- + BufferObject *this = (BufferObject *)(self); + + if (this->buf && this->buf != INVALID_BUFFER_VALUE) +! BUF_PYTHON_REF(this->buf) = NULL; + + DESTRUCTOR_FINISH(self); + } + + static PyObject * ++ BufferNew(buf_T *buf) ++ { ++ /* We need to handle deletion of buffers underneath us. ++ * If we add a "b_python*_ref" field to the buf_T structure, ++ * then we can get at it in buf_freeall() in vim. We then ++ * need to create only ONE Python object per buffer - if ++ * we try to create a second, just INCREF the existing one ++ * and return it. The (single) Python object referring to ++ * the buffer is stored in "b_python*_ref". ++ * Question: what to do on a buf_freeall(). We'll probably ++ * have to either delete the Python object (DECREF it to ++ * zero - a bad idea, as it leaves dangling refs!) or ++ * set the buf_T * value to an invalid value (-1?), which ++ * means we need checks in all access functions... Bah. ++ * ++ * Python2 and Python3 get different fields and different objects: ++ * b_python_ref and b_python3_ref fields respectively. ++ */ ++ ++ BufferObject *self; ++ ++ if (BUF_PYTHON_REF(buf) != NULL) ++ { ++ self = BUF_PYTHON_REF(buf); ++ Py_INCREF(self); ++ } ++ else ++ { ++ self = PyObject_NEW(BufferObject, &BufferType); ++ if (self == NULL) ++ return NULL; ++ self->buf = buf; ++ BUF_PYTHON_REF(buf) = self; ++ } ++ ++ return (PyObject *)(self); ++ } ++ ++ static PyObject * + BufferAttr(BufferObject *this, char *name) + { + if (strcmp(name, "name") == 0) +*************** +*** 2783,2788 **** +--- 2854,2883 ---- + return NULL; + } + ++ static PyInt ++ BufferLength(PyObject *self) ++ { ++ /* HOW DO WE SIGNAL AN ERROR FROM THIS FUNCTION? */ ++ if (CheckBuffer((BufferObject *)(self))) ++ return -1; /* ??? */ ++ ++ return (PyInt)(((BufferObject *)(self))->buf->b_ml.ml_line_count); ++ } ++ ++ static PyObject * ++ BufferItem(PyObject *self, PyInt n) ++ { ++ return RBItem((BufferObject *)(self), n, 1, ++ (PyInt)((BufferObject *)(self))->buf->b_ml.ml_line_count); ++ } ++ ++ static PyObject * ++ BufferSlice(PyObject *self, PyInt lo, PyInt hi) ++ { ++ return RBSlice((BufferObject *)(self), lo, hi, 1, ++ (PyInt)((BufferObject *)(self))->buf->b_ml.ml_line_count); ++ } ++ + static PyObject * + BufferAppend(PyObject *self, PyObject *args) + { +*** ../vim-7.3.936/src/version.c 2013-05-12 14:10:41.000000000 +0200 +--- src/version.c 2013-05-12 18:44:01.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 937, + /**/ + +-- +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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.938 b/7.3.938 new file mode 100644 index 0000000..df8d37a --- /dev/null +++ b/7.3.938 @@ -0,0 +1,145 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.938 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.938 +Problem: Python: not easy to get to window number. +Solution: Add vim.window.number. (ZyX) +Files: runtime/doc/if_pyth.txt, src/if_py_both.h, src/proto/window.pro, + src/window.c + + +*** ../vim-7.3.937/runtime/doc/if_pyth.txt 2013-05-06 03:52:44.000000000 +0200 +--- runtime/doc/if_pyth.txt 2013-05-12 18:55:41.000000000 +0200 +*************** +*** 396,401 **** +--- 396,405 ---- + |python-options|. If option is |global-local| + and local value is missing getting it will + return None. ++ number (read-only) Window number. The first window has number 1. ++ This is zero in case it cannot be determined ++ (e.g. when the window object belongs to other ++ tab page). + The height attribute is writable only if the screen is split horizontally. + The width attribute is writable only if the screen is split vertically. + +*** ../vim-7.3.937/src/if_py_both.h 2013-05-12 18:44:44.000000000 +0200 +--- src/if_py_both.h 2013-05-12 18:48:07.000000000 +0200 +*************** +*** 1848,1856 **** + else if (strcmp(name, "options") == 0) + return OptionsNew(SREQ_WIN, this->win, (checkfun) CheckWindow, + (PyObject *) this); + else if (strcmp(name,"__members__") == 0) + return Py_BuildValue("[ssssss]", "buffer", "cursor", "height", "vars", +! "options"); + else + return NULL; + } +--- 1848,1858 ---- + else if (strcmp(name, "options") == 0) + return OptionsNew(SREQ_WIN, this->win, (checkfun) CheckWindow, + (PyObject *) this); ++ else if (strcmp(name, "number") == 0) ++ return PyLong_FromLong((long) get_win_number(this->win)); + else if (strcmp(name,"__members__") == 0) + return Py_BuildValue("[ssssss]", "buffer", "cursor", "height", "vars", +! "options", "number"); + else + return NULL; + } +*************** +*** 1974,1990 **** + } + else + { +! int i = 0; +! win_T *w; + +! for (w = firstwin; w != NULL && w != this->win; w = W_NEXT(w)) +! ++i; +! +! if (w == NULL) + vim_snprintf(repr, 100, _(""), + (self)); + else +! vim_snprintf(repr, 100, _(""), i); + + return PyString_FromString(repr); + } +--- 1976,1988 ---- + } + else + { +! int w = get_win_number(this->win); + +! if (w == 0) + vim_snprintf(repr, 100, _(""), + (self)); + else +! vim_snprintf(repr, 100, _(""), w - 1); + + return PyString_FromString(repr); + } +*** ../vim-7.3.937/src/proto/window.pro 2013-05-06 04:50:26.000000000 +0200 +--- src/proto/window.pro 2013-05-12 18:48:07.000000000 +0200 +*************** +*** 74,77 **** +--- 74,78 ---- + 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)); ++ int get_win_number __ARGS((win_T *wp)); + /* vim: set ft=c : */ +*** ../vim-7.3.937/src/window.c 2013-05-06 04:50:26.000000000 +0200 +--- src/window.c 2013-05-12 18:48:07.000000000 +0200 +*************** +*** 6731,6733 **** +--- 6731,6750 ---- + return cur; + } + #endif ++ ++ #if defined(FEAT_PYTHON) || defined(FEAT_PYTHON3) || defined(PROTO) ++ int ++ get_win_number(win_T *wp) ++ { ++ int i = 1; ++ win_T *w; ++ ++ for (w = firstwin; w != NULL && w != wp; w = W_NEXT(w)) ++ ++i; ++ ++ if (w == NULL) ++ return 0; ++ else ++ return i; ++ } ++ #endif +*** ../vim-7.3.937/src/version.c 2013-05-12 18:44:44.000000000 +0200 +--- src/version.c 2013-05-12 18:52:29.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 938, + /**/ + +-- +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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.939 b/7.3.939 new file mode 100644 index 0000000..3b8b716 --- /dev/null +++ b/7.3.939 @@ -0,0 +1,60 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.939 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.939 +Problem: Using Py_BuildValue is inefficient sometimes. +Solution: Use PyLong_FromLong(). (ZyX) +Files: src/if_py_both.h + + +*** ../vim-7.3.938/src/if_py_both.h 2013-05-12 19:00:36.000000000 +0200 +--- src/if_py_both.h 2013-05-12 19:08:24.000000000 +0200 +*************** +*** 1838,1847 **** + return Py_BuildValue("(ll)", (long)(pos->lnum), (long)(pos->col)); + } + else if (strcmp(name, "height") == 0) +! return Py_BuildValue("l", (long)(this->win->w_height)); + #ifdef FEAT_VERTSPLIT + else if (strcmp(name, "width") == 0) +! return Py_BuildValue("l", (long)(W_WIDTH(this->win))); + #endif + else if (strcmp(name, "vars") == 0) + return DictionaryNew(this->win->w_vars); +--- 1838,1847 ---- + return Py_BuildValue("(ll)", (long)(pos->lnum), (long)(pos->col)); + } + else if (strcmp(name, "height") == 0) +! return PyLong_FromLong((long)(this->win->w_height)); + #ifdef FEAT_VERTSPLIT + else if (strcmp(name, "width") == 0) +! return PyLong_FromLong((long)(W_WIDTH(this->win))); + #endif + else if (strcmp(name, "vars") == 0) + return DictionaryNew(this->win->w_vars); +*** ../vim-7.3.938/src/version.c 2013-05-12 19:00:36.000000000 +0200 +--- src/version.c 2013-05-12 19:09:19.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 939, + /**/ + +-- +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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.940 b/7.3.940 new file mode 100644 index 0000000..07209b0 --- /dev/null +++ b/7.3.940 @@ -0,0 +1,87 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.940 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.940 +Problem: Python: Can't get position of window. +Solution: Add window.row and window.col. (ZyX) +Files: runtime/doc/if_pyth.txt, src/if_py_both.h + + +*** ../vim-7.3.939/runtime/doc/if_pyth.txt 2013-05-12 19:00:36.000000000 +0200 +--- runtime/doc/if_pyth.txt 2013-05-12 19:24:40.000000000 +0200 +*************** +*** 400,405 **** +--- 400,408 ---- + This is zero in case it cannot be determined + (e.g. when the window object belongs to other + tab page). ++ row, col (read-only) On-screen window position in display cells. ++ First position is zero. ++ + The height attribute is writable only if the screen is split horizontally. + The width attribute is writable only if the screen is split vertically. + +*** ../vim-7.3.939/src/if_py_both.h 2013-05-12 19:09:46.000000000 +0200 +--- src/if_py_both.h 2013-05-12 19:22:16.000000000 +0200 +*************** +*** 1839,1847 **** +--- 1839,1853 ---- + } + else if (strcmp(name, "height") == 0) + return PyLong_FromLong((long)(this->win->w_height)); ++ #ifdef FEAT_WINDOWS ++ else if (strcmp(name, "row") == 0) ++ return PyLong_FromLong((long)(this->win->w_winrow)); ++ #endif + #ifdef FEAT_VERTSPLIT + else if (strcmp(name, "width") == 0) + return PyLong_FromLong((long)(W_WIDTH(this->win))); ++ else if (strcmp(name, "col") == 0) ++ return PyLong_FromLong((long)(W_WINCOL(this->win))); + #endif + else if (strcmp(name, "vars") == 0) + return DictionaryNew(this->win->w_vars); +*************** +*** 1851,1858 **** + else if (strcmp(name, "number") == 0) + return PyLong_FromLong((long) get_win_number(this->win)); + else if (strcmp(name,"__members__") == 0) +! return Py_BuildValue("[ssssss]", "buffer", "cursor", "height", "vars", +! "options", "number"); + else + return NULL; + } +--- 1857,1864 ---- + else if (strcmp(name, "number") == 0) + return PyLong_FromLong((long) get_win_number(this->win)); + else if (strcmp(name,"__members__") == 0) +! return Py_BuildValue("[ssssssss]", "buffer", "cursor", "height", "vars", +! "options", "number", "row", "col"); + else + return NULL; + } +*** ../vim-7.3.939/src/version.c 2013-05-12 19:09:46.000000000 +0200 +--- src/version.c 2013-05-12 19:23:50.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 940, + /**/ + +-- +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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.941 b/7.3.941 new file mode 100644 index 0000000..c7792aa --- /dev/null +++ b/7.3.941 @@ -0,0 +1,1456 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.941 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.941 +Problem: Stuff in if_py_both.h is ordered badly. +Solution: Reorder by type. (ZyX) +Files: src/if_py_both.h, src/if_python.c + + +*** ../vim-7.3.940/src/if_py_both.h 2013-05-12 19:30:27.000000000 +0200 +--- src/if_py_both.h 2013-05-12 19:36:38.000000000 +0200 +*************** +*** 7,13 **** + * See README.txt for an overview of the Vim source code. + */ + /* +! * Python extensions by Paul Moore, David Leonard, Roland Puntaier. + * + * Common code for if_python.c and if_python3.c. + */ +--- 7,14 ---- + * See README.txt for an overview of the Vim source code. + */ + /* +! * Python extensions by Paul Moore, David Leonard, Roland Puntaier, Nikolay +! * Pavlov. + * + * Common code for if_python.c and if_python3.c. + */ +*************** +*** 22,27 **** +--- 23,39 ---- + # define ENC_OPT "latin1" + #endif + ++ #define PyErr_SetVim(str) PyErr_SetString(VimError, str) ++ ++ #define INVALID_BUFFER_VALUE ((buf_T *)(-1)) ++ #define INVALID_WINDOW_VALUE ((win_T *)(-1)) ++ ++ static int ConvertFromPyObject(PyObject *, typval_T *); ++ static int _ConvertFromPyObject(PyObject *, typval_T *, PyObject *); ++ ++ static PyInt RangeStart; ++ static PyInt RangeEnd; ++ + /* + * obtain a lock on the Vim data structures + */ +*************** +*** 38,53 **** + { + } + +! /* Output object definition + */ + +- static PyObject *OutputWrite(PyObject *, PyObject *); +- static PyObject *OutputWritelines(PyObject *, PyObject *); +- static PyObject *OutputFlush(PyObject *, PyObject *); +- + /* Function to write a line, points to either msg() or emsg(). */ + typedef void (*writefn)(char_u *); +! static void writer(writefn fn, char_u *str, PyInt n); + + typedef struct + { +--- 50,62 ---- + { + } + +! /* Output buffer management + */ + + /* Function to write a line, points to either msg() or emsg(). */ + typedef void (*writefn)(char_u *); +! +! static PyTypeObject OutputType; + + typedef struct + { +*************** +*** 56,76 **** + long error; + } OutputObject; + +- static struct PyMethodDef OutputMethods[] = { +- /* name, function, calling, documentation */ +- {"write", OutputWrite, 1, ""}, +- {"writelines", OutputWritelines, 1, ""}, +- {"flush", OutputFlush, 1, ""}, +- { NULL, NULL, 0, NULL} +- }; +- +- #define PyErr_SetVim(str) PyErr_SetString(VimError, str) +- +- /*************/ +- +- /* Output buffer management +- */ +- + static int + OutputSetattr(PyObject *self, char *name, PyObject *val) + { +--- 65,70 ---- +*************** +*** 96,101 **** +--- 90,145 ---- + return -1; + } + ++ /* Buffer IO, we write one whole line at a time. */ ++ static garray_T io_ga = {0, 0, 1, 80, NULL}; ++ static writefn old_fn = NULL; ++ ++ static void ++ PythonIO_Flush(void) ++ { ++ if (old_fn != NULL && io_ga.ga_len > 0) ++ { ++ ((char_u *)io_ga.ga_data)[io_ga.ga_len] = NUL; ++ old_fn((char_u *)io_ga.ga_data); ++ } ++ io_ga.ga_len = 0; ++ } ++ ++ static void ++ writer(writefn fn, char_u *str, PyInt n) ++ { ++ char_u *ptr; ++ ++ /* Flush when switching output function. */ ++ if (fn != old_fn) ++ PythonIO_Flush(); ++ old_fn = fn; ++ ++ /* Write each NL separated line. Text after the last NL is kept for ++ * writing later. */ ++ while (n > 0 && (ptr = memchr(str, '\n', n)) != NULL) ++ { ++ PyInt len = ptr - str; ++ ++ if (ga_grow(&io_ga, (int)(len + 1)) == FAIL) ++ break; ++ ++ mch_memmove(((char *)io_ga.ga_data) + io_ga.ga_len, str, (size_t)len); ++ ((char *)io_ga.ga_data)[io_ga.ga_len + len] = NUL; ++ fn((char_u *)io_ga.ga_data); ++ str = ptr + 1; ++ n -= len + 1; ++ io_ga.ga_len = 0; ++ } ++ ++ /* Put the remaining text into io_ga for later printing. */ ++ if (n > 0 && ga_grow(&io_ga, (int)(n + 1)) == OK) ++ { ++ mch_memmove(((char *)io_ga.ga_data) + io_ga.ga_len, str, (size_t)n); ++ io_ga.ga_len += (int)n; ++ } ++ } ++ + static PyObject * + OutputWrite(PyObject *self, PyObject *args) + { +*************** +*** 172,231 **** + return Py_None; + } + +- +- /* Buffer IO, we write one whole line at a time. */ +- static garray_T io_ga = {0, 0, 1, 80, NULL}; +- static writefn old_fn = NULL; +- +- static void +- PythonIO_Flush(void) +- { +- if (old_fn != NULL && io_ga.ga_len > 0) +- { +- ((char_u *)io_ga.ga_data)[io_ga.ga_len] = NUL; +- old_fn((char_u *)io_ga.ga_data); +- } +- io_ga.ga_len = 0; +- } +- +- static void +- writer(writefn fn, char_u *str, PyInt n) +- { +- char_u *ptr; +- +- /* Flush when switching output function. */ +- if (fn != old_fn) +- PythonIO_Flush(); +- old_fn = fn; +- +- /* Write each NL separated line. Text after the last NL is kept for +- * writing later. */ +- while (n > 0 && (ptr = memchr(str, '\n', n)) != NULL) +- { +- PyInt len = ptr - str; +- +- if (ga_grow(&io_ga, (int)(len + 1)) == FAIL) +- break; +- +- mch_memmove(((char *)io_ga.ga_data) + io_ga.ga_len, str, (size_t)len); +- ((char *)io_ga.ga_data)[io_ga.ga_len + len] = NUL; +- fn((char_u *)io_ga.ga_data); +- str = ptr + 1; +- n -= len + 1; +- io_ga.ga_len = 0; +- } +- +- /* Put the remaining text into io_ga for later printing. */ +- if (n > 0 && ga_grow(&io_ga, (int)(n + 1)) == OK) +- { +- mch_memmove(((char *)io_ga.ga_data) + io_ga.ga_len, str, (size_t)n); +- io_ga.ga_len += (int)n; +- } +- } +- + /***************/ + +! static PyTypeObject OutputType; + + static OutputObject Output = + { +--- 216,230 ---- + return Py_None; + } + + /***************/ + +! static struct PyMethodDef OutputMethods[] = { +! /* name, function, calling, documentation */ +! {"write", OutputWrite, 1, ""}, +! {"writelines", OutputWritelines, 1, ""}, +! {"flush", OutputFlush, 1, ""}, +! { NULL, NULL, 0, NULL} +! }; + + static OutputObject Output = + { +*************** +*** 281,286 **** +--- 280,286 ---- + + /* Vim module - Implementation + */ ++ + static PyObject * + VimCommand(PyObject *self UNUSED, PyObject *args) + { +*************** +*** 530,555 **** + { NULL, NULL, 0, NULL } + }; + +- typedef struct +- { +- PyObject_HEAD +- buf_T *buf; +- } BufferObject; +- +- #define INVALID_BUFFER_VALUE ((buf_T *)(-1)) +- + /* + * Buffer list object - Implementation + */ + + typedef struct + { + PyObject_HEAD + } BufListObject; + +- static PyTypeObject BufListType; +- static PySequenceMethods WinListAsSeq; +- + static PyInt + BufListLength(PyObject *self UNUSED) + { +--- 530,547 ---- + { NULL, NULL, 0, NULL } + }; + + /* + * Buffer list object - Implementation + */ + ++ static PyTypeObject BufListType; ++ static PySequenceMethods BufListAsSeq; ++ + typedef struct + { + PyObject_HEAD + } BufListObject; + + static PyInt + BufListLength(PyObject *self UNUSED) + { +*************** +*** 580,599 **** + return NULL; + } + +- typedef struct +- { +- PyObject_HEAD +- win_T *win; +- } WindowObject; +- +- static struct PyMethodDef WindowMethods[] = { +- /* name, function, calling, documentation */ +- { NULL, NULL, 0, NULL } +- }; +- +- static int ConvertFromPyObject(PyObject *, typval_T *); +- static int _ConvertFromPyObject(PyObject *, typval_T *, PyObject *); +- + typedef struct pylinkedlist_S { + struct pylinkedlist_S *pll_next; + struct pylinkedlist_S *pll_prev; +--- 572,577 ---- +*************** +*** 655,670 **** + pylinkedlist_T ref; + } DictionaryObject; + +- static PyInt DictionaryAssItem(PyObject *, PyObject *, PyObject *); +- static PyInt DictionaryLength(PyObject *); +- static PyObject *DictionaryItem(PyObject *, PyObject *); +- +- static PyMappingMethods DictionaryAsMapping = { +- (lenfunc) DictionaryLength, +- (binaryfunc) DictionaryItem, +- (objobjargproc) DictionaryAssItem, +- }; +- + static PyObject * + DictionaryNew(dict_T *dict) + { +--- 633,638 ---- +*************** +*** 693,895 **** + } + + static int +! pydict_to_tv(PyObject *obj, typval_T *tv, PyObject *lookupDict) + { +! dict_T *d; +! char_u *key; +! dictitem_T *di; +! PyObject *keyObject; +! PyObject *valObject; +! Py_ssize_t iter = 0; + +! d = dict_alloc(); +! if (d == NULL) + { +! PyErr_NoMemory(); + return -1; + } + +! tv->v_type = VAR_DICT; +! tv->vval.v_dict = d; +! +! while (PyDict_Next(obj, &iter, &keyObject, &valObject)) + { +! DICTKEY_DECL +! +! if (keyObject == NULL) +! return -1; +! if (valObject == NULL) +! return -1; +! +! DICTKEY_GET_NOTEMPTY(-1) +! +! di = dictitem_alloc(key); +! +! DICTKEY_UNREF +! +! if (di == NULL) +! { +! PyErr_NoMemory(); +! return -1; +! } +! di->di_tv.v_lock = 0; +! +! if (_ConvertFromPyObject(valObject, &di->di_tv, lookupDict) == -1) + { +! vim_free(di); + return -1; + } +! if (dict_add(d, di) == FAIL) + { +! vim_free(di); +! PyErr_SetVim(_("failed to add key to dictionary")); +! return -1; + } + } +- return 0; + } + +! static int +! pymap_to_tv(PyObject *obj, typval_T *tv, PyObject *lookupDict) + { +- dict_T *d; + char_u *key; + dictitem_T *di; +! PyObject *list; +! PyObject *litem; +! PyObject *keyObject; +! PyObject *valObject; +! Py_ssize_t lsize; +! +! d = dict_alloc(); +! if (d == NULL) +! { +! PyErr_NoMemory(); +! return -1; +! } +! +! tv->v_type = VAR_DICT; +! tv->vval.v_dict = d; +! +! list = PyMapping_Items(obj); +! if (list == NULL) +! return -1; +! lsize = PyList_Size(list); +! while (lsize--) +! { +! DICTKEY_DECL +! +! litem = PyList_GetItem(list, lsize); +! if (litem == NULL) +! { +! Py_DECREF(list); +! return -1; +! } +! +! keyObject = PyTuple_GetItem(litem, 0); +! if (keyObject == NULL) +! { +! Py_DECREF(list); +! Py_DECREF(litem); +! return -1; +! } +! +! DICTKEY_GET_NOTEMPTY(-1) +! +! valObject = PyTuple_GetItem(litem, 1); +! if (valObject == NULL) +! { +! Py_DECREF(list); +! Py_DECREF(litem); +! return -1; +! } +! +! di = dictitem_alloc(key); +! +! DICTKEY_UNREF +! +! if (di == NULL) +! { +! Py_DECREF(list); +! Py_DECREF(litem); +! PyErr_NoMemory(); +! return -1; +! } +! di->di_tv.v_lock = 0; +! +! if (_ConvertFromPyObject(valObject, &di->di_tv, lookupDict) == -1) +! { +! vim_free(di); +! Py_DECREF(list); +! Py_DECREF(litem); +! return -1; +! } +! if (dict_add(d, di) == FAIL) +! { +! vim_free(di); +! Py_DECREF(list); +! Py_DECREF(litem); +! PyErr_SetVim(_("failed to add key to dictionary")); +! return -1; +! } +! Py_DECREF(litem); +! } +! Py_DECREF(list); +! return 0; +! } +! +! static int +! DictionarySetattr(PyObject *self, char *name, PyObject *val) +! { +! DictionaryObject *this = (DictionaryObject *)(self); +! +! if (val == NULL) +! { +! PyErr_SetString(PyExc_AttributeError, _("Cannot delete DictionaryObject attributes")); +! return -1; +! } +! +! if (strcmp(name, "locked") == 0) +! { +! if (this->dict->dv_lock == VAR_FIXED) +! { +! PyErr_SetString(PyExc_TypeError, _("Cannot modify fixed dictionary")); +! return -1; +! } +! else +! { +! if (!PyBool_Check(val)) +! { +! PyErr_SetString(PyExc_TypeError, _("Only boolean objects are allowed")); +! return -1; +! } +! +! if (val == Py_True) +! this->dict->dv_lock = VAR_LOCKED; +! else +! this->dict->dv_lock = 0; +! } +! return 0; +! } +! else +! { +! PyErr_SetString(PyExc_AttributeError, _("Cannot set this attribute")); +! return -1; +! } +! } +! +! static PyInt +! DictionaryLength(PyObject *self) +! { +! return ((PyInt) ((((DictionaryObject *)(self))->dict->dv_hashtab.ht_used))); +! } +! +! static PyObject * +! DictionaryItem(PyObject *self, PyObject *keyObject) +! { +! char_u *key; +! dictitem_T *di; +! DICTKEY_DECL + + DICTKEY_GET_NOTEMPTY(NULL) + +--- 661,717 ---- + } + + static int +! DictionarySetattr(PyObject *self, char *name, PyObject *val) + { +! DictionaryObject *this = (DictionaryObject *)(self); + +! if (val == NULL) + { +! PyErr_SetString(PyExc_AttributeError, _("Cannot delete DictionaryObject attributes")); + return -1; + } + +! if (strcmp(name, "locked") == 0) + { +! if (this->dict->dv_lock == VAR_FIXED) + { +! PyErr_SetString(PyExc_TypeError, _("Cannot modify fixed dictionary")); + return -1; + } +! else + { +! if (!PyBool_Check(val)) +! { +! PyErr_SetString(PyExc_TypeError, _("Only boolean objects are allowed")); +! return -1; +! } +! +! if (val == Py_True) +! this->dict->dv_lock = VAR_LOCKED; +! else +! this->dict->dv_lock = 0; + } ++ return 0; ++ } ++ else ++ { ++ PyErr_SetString(PyExc_AttributeError, _("Cannot set this attribute")); ++ return -1; + } + } + +! static PyInt +! DictionaryLength(PyObject *self) +! { +! return ((PyInt) ((((DictionaryObject *)(self))->dict->dv_hashtab.ht_used))); +! } +! +! static PyObject * +! DictionaryItem(PyObject *self, PyObject *keyObject) + { + char_u *key; + dictitem_T *di; +! DICTKEY_DECL + + DICTKEY_GET_NOTEMPTY(NULL) + +*************** +*** 993,998 **** +--- 815,826 ---- + return r; + } + ++ static PyMappingMethods DictionaryAsMapping = { ++ (lenfunc) DictionaryLength, ++ (binaryfunc) DictionaryItem, ++ (objobjargproc) DictionaryAssItem, ++ }; ++ + static struct PyMethodDef DictionaryMethods[] = { + {"keys", (PyCFunction)DictionaryListKeys, METH_NOARGS, ""}, + { NULL, NULL, 0, NULL } +*************** +*** 1065,1136 **** + return 0; + } + +- static int +- pyseq_to_tv(PyObject *obj, typval_T *tv, PyObject *lookupDict) +- { +- list_T *l; +- +- l = list_alloc(); +- if (l == NULL) +- { +- PyErr_NoMemory(); +- return -1; +- } +- +- tv->v_type = VAR_LIST; +- tv->vval.v_list = l; +- +- if (list_py_concat(l, obj, lookupDict) == -1) +- return -1; +- +- return 0; +- } +- +- static int +- pyiter_to_tv(PyObject *obj, typval_T *tv, PyObject *lookupDict) +- { +- PyObject *iterator = PyObject_GetIter(obj); +- PyObject *item; +- list_T *l; +- listitem_T *li; +- +- l = list_alloc(); +- +- if (l == NULL) +- { +- PyErr_NoMemory(); +- return -1; +- } +- +- tv->vval.v_list = l; +- tv->v_type = VAR_LIST; +- +- +- if (iterator == NULL) +- return -1; +- +- while ((item = PyIter_Next(obj))) +- { +- li = listitem_alloc(); +- if (li == NULL) +- { +- PyErr_NoMemory(); +- return -1; +- } +- li->li_tv.v_lock = 0; +- +- if (_ConvertFromPyObject(item, &li->li_tv, lookupDict) == -1) +- return -1; +- +- list_append(l, li); +- +- Py_DECREF(item); +- } +- +- Py_DECREF(iterator); +- return 0; +- } +- + static PyInt + ListLength(PyObject *self) + { +--- 893,898 ---- +*************** +*** 1768,1774 **** + (objobjargproc) OptionsAssItem, + }; + +! #define INVALID_WINDOW_VALUE ((win_T *)(-1)) + + static int + CheckWindow(WindowObject *this) +--- 1530,1547 ---- + (objobjargproc) OptionsAssItem, + }; + +! /* Window object +! */ +! +! typedef struct +! { +! PyObject_HEAD +! win_T *win; +! } WindowObject; +! +! static int WindowSetattr(PyObject *, char *, PyObject *); +! static PyObject *WindowRepr(PyObject *); +! static PyTypeObject WindowType; + + static int + CheckWindow(WindowObject *this) +*************** +*** 1782,1794 **** + return 0; + } + +- /* Window object +- */ +- +- static int WindowSetattr(PyObject *, char *, PyObject *); +- static PyObject *WindowRepr(PyObject *); +- static PyTypeObject WindowType; +- + static PyObject * + WindowNew(win_T *win) + { +--- 1555,1560 ---- +*************** +*** 1803,1809 **** + * to an invalid value. We trap all uses of a window + * object, and reject them if the win_T* field is invalid. + * +! * Python2 and Python3 get different fields and different objects: + * w_python_ref and w_python3_ref fields respectively. + */ + +--- 1569,1575 ---- + * to an invalid value. We trap all uses of a window + * object, and reject them if the win_T* field is invalid. + * +! * Python2 and Python3 get different fields and different objects: + * w_python_ref and w_python3_ref fields respectively. + */ + +*************** +*** 1826,1831 **** +--- 1592,1608 ---- + return (PyObject *)(self); + } + ++ static void ++ WindowDestructor(PyObject *self) ++ { ++ WindowObject *this = (WindowObject *)(self); ++ ++ if (this->win && this->win != INVALID_WINDOW_VALUE) ++ WIN_PYTHON_REF(this->win) = NULL; ++ ++ DESTRUCTOR_FINISH(self); ++ } ++ + static PyObject * + WindowAttr(WindowObject *this, char *name) + { +*************** +*** 1863,1879 **** + return NULL; + } + +- static void +- WindowDestructor(PyObject *self) +- { +- WindowObject *this = (WindowObject *)(self); +- +- if (this->win && this->win != INVALID_WINDOW_VALUE) +- WIN_PYTHON_REF(this->win) = NULL; +- +- DESTRUCTOR_FINISH(self); +- } +- + static int + WindowSetattr(PyObject *self, char *name, PyObject *val) + { +--- 1640,1645 ---- +*************** +*** 1994,2011 **** + } + } + + /* +! * Window list object - Implementation + */ + + typedef struct + { + PyObject_HEAD + } WinListObject; + +- static PyTypeObject WinListType; +- static PySequenceMethods BufListAsSeq; +- + static PyInt + WinListLength(PyObject *self UNUSED) + { +--- 1760,1782 ---- + } + } + ++ static struct PyMethodDef WindowMethods[] = { ++ /* name, function, calling, documentation */ ++ { NULL, NULL, 0, NULL } ++ }; ++ + /* +! * Window list object + */ + ++ static PyTypeObject WinListType; ++ static PySequenceMethods WinListAsSeq; ++ + typedef struct + { + PyObject_HEAD + } WinListObject; + + static PyInt + WinListLength(PyObject *self UNUSED) + { +*************** +*** 2596,2602 **** + * ------------------------------------------- + */ + +! static int + CheckBuffer(BufferObject *this) + { + if (this->buf == INVALID_BUFFER_VALUE) +--- 2367,2379 ---- + * ------------------------------------------- + */ + +! typedef struct +! { +! PyObject_HEAD +! buf_T *buf; +! } BufferObject; +! +! static int + CheckBuffer(BufferObject *this) + { + if (this->buf == INVALID_BUFFER_VALUE) +*************** +*** 2737,2746 **** + return Py_None; + } + +! /* Range object - Definitions + */ + + static PyTypeObject RangeType; + + typedef struct + { +--- 2514,2525 ---- + return Py_None; + } + +! /* Range object + */ + + static PyTypeObject RangeType; ++ static PySequenceMethods RangeAsSeq; ++ static PyMappingMethods RangeAsMapping; + + typedef struct + { +*************** +*** 2750,2759 **** + PyInt end; + } RangeObject; + +- static void RangeDestructor(PyObject *); +- static PySequenceMethods RangeAsSeq; +- static PyMappingMethods RangeAsMapping; +- + static PyObject * + RangeNew(buf_T *buf, PyInt start, PyInt end) + { +--- 2529,2534 ---- +*************** +*** 2785,2806 **** + DESTRUCTOR_FINISH(self); + } + +! static PyTypeObject BufferType; +! static PyObject *BufferRepr(PyObject *); +! static PySequenceMethods BufferAsSeq; +! static PyMappingMethods BufferAsMapping; + +! static void +! BufferDestructor(PyObject *self) + { +! BufferObject *this = (BufferObject *)(self); + +! if (this->buf && this->buf != INVALID_BUFFER_VALUE) +! BUF_PYTHON_REF(this->buf) = NULL; + +! DESTRUCTOR_FINISH(self); + } + + static PyObject * + BufferNew(buf_T *buf) + { +--- 2560,2642 ---- + DESTRUCTOR_FINISH(self); + } + +! static PyInt +! RangeLength(PyObject *self) +! { +! /* HOW DO WE SIGNAL AN ERROR FROM THIS FUNCTION? */ +! if (CheckBuffer(((RangeObject *)(self))->buf)) +! return -1; /* ??? */ + +! return (((RangeObject *)(self))->end - ((RangeObject *)(self))->start + 1); +! } +! +! static PyObject * +! RangeItem(PyObject *self, PyInt n) + { +! return RBItem(((RangeObject *)(self))->buf, n, +! ((RangeObject *)(self))->start, +! ((RangeObject *)(self))->end); +! } + +! static PyObject * +! RangeSlice(PyObject *self, PyInt lo, PyInt hi) +! { +! return RBSlice(((RangeObject *)(self))->buf, lo, hi, +! ((RangeObject *)(self))->start, +! ((RangeObject *)(self))->end); +! } + +! static PyObject * +! RangeAppend(PyObject *self, PyObject *args) +! { +! return RBAppend(((RangeObject *)(self))->buf, args, +! ((RangeObject *)(self))->start, +! ((RangeObject *)(self))->end, +! &((RangeObject *)(self))->end); +! } +! +! static PyObject * +! RangeRepr(PyObject *self) +! { +! static char repr[100]; +! RangeObject *this = (RangeObject *)(self); +! +! if (this->buf->buf == INVALID_BUFFER_VALUE) +! { +! vim_snprintf(repr, 100, "", +! (self)); +! return PyString_FromString(repr); +! } +! else +! { +! char *name = (char *)this->buf->buf->b_fname; +! int len; +! +! if (name == NULL) +! name = ""; +! len = (int)strlen(name); +! +! if (len > 45) +! name = name + (45 - len); +! +! vim_snprintf(repr, 100, "", +! len > 45 ? "..." : "", name, +! this->start, this->end); +! +! return PyString_FromString(repr); +! } + } + ++ static struct PyMethodDef RangeMethods[] = { ++ /* name, function, calling, documentation */ ++ {"append", RangeAppend, 1, "Append data to the Vim range" }, ++ { NULL, NULL, 0, NULL } ++ }; ++ ++ static PyTypeObject BufferType; ++ static PySequenceMethods BufferAsSeq; ++ static PyMappingMethods BufferAsMapping; ++ + static PyObject * + BufferNew(buf_T *buf) + { +*************** +*** 2817,2823 **** + * set the buf_T * value to an invalid value (-1?), which + * means we need checks in all access functions... Bah. + * +! * Python2 and Python3 get different fields and different objects: + * b_python_ref and b_python3_ref fields respectively. + */ + +--- 2653,2659 ---- + * set the buf_T * value to an invalid value (-1?), which + * means we need checks in all access functions... Bah. + * +! * Python2 and Python3 get different fields and different objects: + * b_python_ref and b_python3_ref fields respectively. + */ + +*************** +*** 2840,2861 **** + return (PyObject *)(self); + } + +! static PyObject * +! BufferAttr(BufferObject *this, char *name) + { +! if (strcmp(name, "name") == 0) +! return Py_BuildValue("s", this->buf->b_ffname); +! else if (strcmp(name, "number") == 0) +! return Py_BuildValue(Py_ssize_t_fmt, this->buf->b_fnum); +! else if (strcmp(name, "vars") == 0) +! return DictionaryNew(this->buf->b_vars); +! else if (strcmp(name, "options") == 0) +! return OptionsNew(SREQ_BUF, this->buf, (checkfun) CheckBuffer, +! (PyObject *) this); +! else if (strcmp(name,"__members__") == 0) +! return Py_BuildValue("[ssss]", "name", "number", "vars", "options"); +! else +! return NULL; + } + + static PyInt +--- 2676,2690 ---- + return (PyObject *)(self); + } + +! static void +! BufferDestructor(PyObject *self) + { +! BufferObject *this = (BufferObject *)(self); +! +! if (this->buf && this->buf != INVALID_BUFFER_VALUE) +! BUF_PYTHON_REF(this->buf) = NULL; +! +! DESTRUCTOR_FINISH(self); + } + + static PyInt +*************** +*** 2883,2888 **** +--- 2712,2735 ---- + } + + static PyObject * ++ BufferAttr(BufferObject *this, char *name) ++ { ++ if (strcmp(name, "name") == 0) ++ return Py_BuildValue("s", this->buf->b_ffname); ++ else if (strcmp(name, "number") == 0) ++ return Py_BuildValue(Py_ssize_t_fmt, this->buf->b_fnum); ++ else if (strcmp(name, "vars") == 0) ++ return DictionaryNew(this->buf->b_vars); ++ else if (strcmp(name, "options") == 0) ++ return OptionsNew(SREQ_BUF, this->buf, (checkfun) CheckBuffer, ++ (PyObject *) this); ++ else if (strcmp(name,"__members__") == 0) ++ return Py_BuildValue("[ssss]", "name", "number", "vars", "options"); ++ else ++ return NULL; ++ } ++ ++ static PyObject * + BufferAppend(PyObject *self, PyObject *args) + { + return RBAppend((BufferObject *)(self), args, 1, +*************** +*** 2985,3073 **** + { NULL, NULL, 0, NULL } + }; + +! static PyObject * +! RangeAppend(PyObject *self, PyObject *args) +! { +! return RBAppend(((RangeObject *)(self))->buf, args, +! ((RangeObject *)(self))->start, +! ((RangeObject *)(self))->end, +! &((RangeObject *)(self))->end); +! } +! +! static PyInt +! RangeLength(PyObject *self) +! { +! /* HOW DO WE SIGNAL AN ERROR FROM THIS FUNCTION? */ +! if (CheckBuffer(((RangeObject *)(self))->buf)) +! return -1; /* ??? */ +! +! return (((RangeObject *)(self))->end - ((RangeObject *)(self))->start + 1); +! } +! +! static PyObject * +! RangeItem(PyObject *self, PyInt n) +! { +! return RBItem(((RangeObject *)(self))->buf, n, +! ((RangeObject *)(self))->start, +! ((RangeObject *)(self))->end); +! } +! +! static PyObject * +! RangeRepr(PyObject *self) +! { +! static char repr[100]; +! RangeObject *this = (RangeObject *)(self); +! +! if (this->buf->buf == INVALID_BUFFER_VALUE) +! { +! vim_snprintf(repr, 100, "", +! (self)); +! return PyString_FromString(repr); +! } +! else +! { +! char *name = (char *)this->buf->buf->b_fname; +! int len; +! +! if (name == NULL) +! name = ""; +! len = (int)strlen(name); +! +! if (len > 45) +! name = name + (45 - len); +! +! vim_snprintf(repr, 100, "", +! len > 45 ? "..." : "", name, +! this->start, this->end); +! +! return PyString_FromString(repr); +! } +! } +! +! static PyObject * +! RangeSlice(PyObject *self, PyInt lo, PyInt hi) +! { +! return RBSlice(((RangeObject *)(self))->buf, lo, hi, +! ((RangeObject *)(self))->start, +! ((RangeObject *)(self))->end); +! } +! +! /* +! * Line range object - Definitions +! */ +! +! static struct PyMethodDef RangeMethods[] = { +! /* name, function, calling, documentation */ +! {"append", RangeAppend, 1, "Append data to the Vim range" }, +! { NULL, NULL, 0, NULL } +! }; +! +! /* Current items object - Implementation + */ + +- static PyInt RangeStart; +- static PyInt RangeEnd; +- + static PyObject * + CurrentGetattr(PyObject *self UNUSED, char *name) + { +--- 2832,2840 ---- + { NULL, NULL, 0, NULL } + }; + +! /* Current items object + */ + + static PyObject * + CurrentGetattr(PyObject *self UNUSED, char *name) + { +*************** +*** 3147,3152 **** +--- 2914,3131 ---- + return 0; + } + ++ static int ++ pydict_to_tv(PyObject *obj, typval_T *tv, PyObject *lookupDict) ++ { ++ dict_T *d; ++ char_u *key; ++ dictitem_T *di; ++ PyObject *keyObject; ++ PyObject *valObject; ++ Py_ssize_t iter = 0; ++ ++ d = dict_alloc(); ++ if (d == NULL) ++ { ++ PyErr_NoMemory(); ++ return -1; ++ } ++ ++ tv->v_type = VAR_DICT; ++ tv->vval.v_dict = d; ++ ++ while (PyDict_Next(obj, &iter, &keyObject, &valObject)) ++ { ++ DICTKEY_DECL ++ ++ if (keyObject == NULL) ++ return -1; ++ if (valObject == NULL) ++ return -1; ++ ++ DICTKEY_GET_NOTEMPTY(-1) ++ ++ di = dictitem_alloc(key); ++ ++ DICTKEY_UNREF ++ ++ if (di == NULL) ++ { ++ PyErr_NoMemory(); ++ return -1; ++ } ++ di->di_tv.v_lock = 0; ++ ++ if (_ConvertFromPyObject(valObject, &di->di_tv, lookupDict) == -1) ++ { ++ vim_free(di); ++ return -1; ++ } ++ if (dict_add(d, di) == FAIL) ++ { ++ vim_free(di); ++ PyErr_SetVim(_("failed to add key to dictionary")); ++ return -1; ++ } ++ } ++ return 0; ++ } ++ ++ static int ++ pymap_to_tv(PyObject *obj, typval_T *tv, PyObject *lookupDict) ++ { ++ dict_T *d; ++ char_u *key; ++ dictitem_T *di; ++ PyObject *list; ++ PyObject *litem; ++ PyObject *keyObject; ++ PyObject *valObject; ++ Py_ssize_t lsize; ++ ++ d = dict_alloc(); ++ if (d == NULL) ++ { ++ PyErr_NoMemory(); ++ return -1; ++ } ++ ++ tv->v_type = VAR_DICT; ++ tv->vval.v_dict = d; ++ ++ list = PyMapping_Items(obj); ++ if (list == NULL) ++ return -1; ++ lsize = PyList_Size(list); ++ while (lsize--) ++ { ++ DICTKEY_DECL ++ ++ litem = PyList_GetItem(list, lsize); ++ if (litem == NULL) ++ { ++ Py_DECREF(list); ++ return -1; ++ } ++ ++ keyObject = PyTuple_GetItem(litem, 0); ++ if (keyObject == NULL) ++ { ++ Py_DECREF(list); ++ Py_DECREF(litem); ++ return -1; ++ } ++ ++ DICTKEY_GET_NOTEMPTY(-1) ++ ++ valObject = PyTuple_GetItem(litem, 1); ++ if (valObject == NULL) ++ { ++ Py_DECREF(list); ++ Py_DECREF(litem); ++ return -1; ++ } ++ ++ di = dictitem_alloc(key); ++ ++ DICTKEY_UNREF ++ ++ if (di == NULL) ++ { ++ Py_DECREF(list); ++ Py_DECREF(litem); ++ PyErr_NoMemory(); ++ return -1; ++ } ++ di->di_tv.v_lock = 0; ++ ++ if (_ConvertFromPyObject(valObject, &di->di_tv, lookupDict) == -1) ++ { ++ vim_free(di); ++ Py_DECREF(list); ++ Py_DECREF(litem); ++ return -1; ++ } ++ if (dict_add(d, di) == FAIL) ++ { ++ vim_free(di); ++ Py_DECREF(list); ++ Py_DECREF(litem); ++ PyErr_SetVim(_("failed to add key to dictionary")); ++ return -1; ++ } ++ Py_DECREF(litem); ++ } ++ Py_DECREF(list); ++ return 0; ++ } ++ ++ static int ++ pyseq_to_tv(PyObject *obj, typval_T *tv, PyObject *lookupDict) ++ { ++ list_T *l; ++ ++ l = list_alloc(); ++ if (l == NULL) ++ { ++ PyErr_NoMemory(); ++ return -1; ++ } ++ ++ tv->v_type = VAR_LIST; ++ tv->vval.v_list = l; ++ ++ if (list_py_concat(l, obj, lookupDict) == -1) ++ return -1; ++ ++ return 0; ++ } ++ ++ static int ++ pyiter_to_tv(PyObject *obj, typval_T *tv, PyObject *lookupDict) ++ { ++ PyObject *iterator = PyObject_GetIter(obj); ++ PyObject *item; ++ list_T *l; ++ listitem_T *li; ++ ++ l = list_alloc(); ++ ++ if (l == NULL) ++ { ++ PyErr_NoMemory(); ++ return -1; ++ } ++ ++ tv->vval.v_list = l; ++ tv->v_type = VAR_LIST; ++ ++ ++ if (iterator == NULL) ++ return -1; ++ ++ while ((item = PyIter_Next(obj))) ++ { ++ li = listitem_alloc(); ++ if (li == NULL) ++ { ++ PyErr_NoMemory(); ++ return -1; ++ } ++ li->li_tv.v_lock = 0; ++ ++ if (_ConvertFromPyObject(item, &li->li_tv, lookupDict) == -1) ++ return -1; ++ ++ list_append(l, li); ++ ++ Py_DECREF(item); ++ } ++ ++ Py_DECREF(iterator); ++ return 0; ++ } ++ + typedef int (*pytotvfunc)(PyObject *, typval_T *, PyObject *); + + static int +*** ../vim-7.3.940/src/if_python.c 2013-05-12 18:44:44.000000000 +0200 +--- src/if_python.c 2013-05-12 19:34:35.000000000 +0200 +*************** +*** 1019,1027 **** + + #define BufferType_Check(obj) ((obj)->ob_type == &BufferType) + +- static PyInt BufferLength(PyObject *); +- static PyObject *BufferItem(PyObject *, PyInt); +- static PyObject *BufferSlice(PyObject *, PyInt, PyInt); + static PyInt BufferAssItem(PyObject *, PyInt, PyObject *); + static PyInt BufferAssSlice(PyObject *, PyInt, PyInt, PyObject *); + +--- 1019,1024 ---- +*** ../vim-7.3.940/src/version.c 2013-05-12 19:30:27.000000000 +0200 +--- src/version.c 2013-05-12 19:37:08.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 941, + /**/ + +-- +ARTHUR: Well, I AM king... +DENNIS: Oh king, eh, very nice. An' how'd you get that, eh? By exploitin' + the workers -- by 'angin' on to outdated imperialist dogma which + perpetuates the economic an' social differences in our society! If + there's ever going to be any progress-- + 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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.942 b/7.3.942 new file mode 100644 index 0000000..2ce3d16 --- /dev/null +++ b/7.3.942 @@ -0,0 +1,205 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.942 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.942 +Problem: Python: SEGV in Buffer functions. +Solution: Call CheckBuffer() at the right time. (ZyX) +Files: src/if_py_both.h, src/if_python.c, src/if_python3.c + + +*** ../vim-7.3.941/src/if_py_both.h 2013-05-12 19:45:30.000000000 +0200 +--- src/if_py_both.h 2013-05-12 20:19:08.000000000 +0200 +*************** +*** 2391,2396 **** +--- 2391,2399 ---- + if (CheckBuffer(self)) + return NULL; + ++ if (end == -1) ++ end = self->buf->b_ml.ml_line_count; ++ + if (n < 0 || n > end - start) + { + PyErr_SetString(PyExc_IndexError, _("line number out of range")); +*************** +*** 2408,2413 **** +--- 2411,2419 ---- + if (CheckBuffer(self)) + return NULL; + ++ if (end == -1) ++ end = self->buf->b_ml.ml_line_count; ++ + size = end - start + 1; + + if (lo < 0) +*************** +*** 2432,2437 **** +--- 2438,2446 ---- + if (CheckBuffer(self)) + return -1; + ++ if (end == -1) ++ end = self->buf->b_ml.ml_line_count; ++ + if (n < 0 || n > end - start) + { + PyErr_SetString(PyExc_IndexError, _("line number out of range")); +*************** +*** 2457,2462 **** +--- 2466,2474 ---- + if (CheckBuffer(self)) + return -1; + ++ if (end == -1) ++ end = self->buf->b_ml.ml_line_count; ++ + /* Sort out the slice range */ + size = end - start + 1; + +*************** +*** 2493,2498 **** +--- 2505,2513 ---- + if (CheckBuffer(self)) + return NULL; + ++ if (end == -1) ++ end = self->buf->b_ml.ml_line_count; ++ + max = n = end - start + 1; + + if (!PyArg_ParseTuple(args, "O|n", &lines, &n)) +*************** +*** 2700,2714 **** + static PyObject * + BufferItem(PyObject *self, PyInt n) + { +! return RBItem((BufferObject *)(self), n, 1, +! (PyInt)((BufferObject *)(self))->buf->b_ml.ml_line_count); + } + + static PyObject * + BufferSlice(PyObject *self, PyInt lo, PyInt hi) + { +! return RBSlice((BufferObject *)(self), lo, hi, 1, +! (PyInt)((BufferObject *)(self))->buf->b_ml.ml_line_count); + } + + static PyObject * +--- 2715,2727 ---- + static PyObject * + BufferItem(PyObject *self, PyInt n) + { +! return RBItem((BufferObject *)(self), n, 1, -1); + } + + static PyObject * + BufferSlice(PyObject *self, PyInt lo, PyInt hi) + { +! return RBSlice((BufferObject *)(self), lo, hi, 1, -1); + } + + static PyObject * +*************** +*** 2732,2740 **** + static PyObject * + BufferAppend(PyObject *self, PyObject *args) + { +! return RBAppend((BufferObject *)(self), args, 1, +! (PyInt)((BufferObject *)(self))->buf->b_ml.ml_line_count, +! NULL); + } + + static PyObject * +--- 2745,2751 ---- + static PyObject * + BufferAppend(PyObject *self, PyObject *args) + { +! return RBAppend((BufferObject *)(self), args, 1, -1, NULL); + } + + static PyObject * +*** ../vim-7.3.941/src/if_python.c 2013-05-12 19:45:30.000000000 +0200 +--- src/if_python.c 2013-05-12 20:19:08.000000000 +0200 +*************** +*** 1073,1089 **** + static PyInt + BufferAssItem(PyObject *self, PyInt n, PyObject *val) + { +! return RBAsItem((BufferObject *)(self), n, val, 1, +! (PyInt)((BufferObject *)(self))->buf->b_ml.ml_line_count, +! NULL); + } + + static PyInt + BufferAssSlice(PyObject *self, PyInt lo, PyInt hi, PyObject *val) + { +! return RBAsSlice((BufferObject *)(self), lo, hi, val, 1, +! (PyInt)((BufferObject *)(self))->buf->b_ml.ml_line_count, +! NULL); + } + + static PySequenceMethods RangeAsSeq = { +--- 1073,1085 ---- + static PyInt + BufferAssItem(PyObject *self, PyInt n, PyObject *val) + { +! return RBAsItem((BufferObject *)(self), n, val, 1, -1, NULL); + } + + static PyInt + BufferAssSlice(PyObject *self, PyInt lo, PyInt hi, PyObject *val) + { +! return RBAsSlice((BufferObject *)(self), lo, hi, val, 1, -1, NULL); + } + + static PySequenceMethods RangeAsSeq = { +*** ../vim-7.3.941/src/if_python3.c 2013-05-12 18:44:44.000000000 +0200 +--- src/if_python3.c 2013-05-12 20:19:08.000000000 +0200 +*************** +*** 1110,1115 **** +--- 1110,1118 ---- + { + Py_ssize_t start, stop, step, slicelen; + ++ if (CheckBuffer((BufferObject *) self)) ++ return NULL; ++ + if (PySlice_GetIndicesEx((PyObject *)idx, + (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count+1, + &start, &stop, +*************** +*** 1139,1144 **** +--- 1142,1150 ---- + { + Py_ssize_t start, stop, step, slicelen; + ++ if (CheckBuffer((BufferObject *) self)) ++ return -1; ++ + if (PySlice_GetIndicesEx((PyObject *)idx, + (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count+1, + &start, &stop, +*** ../vim-7.3.941/src/version.c 2013-05-12 19:45:30.000000000 +0200 +--- src/version.c 2013-05-12 19:49:58.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 942, + /**/ + +-- +Vim is like Emacs without all the typing. (John "Johann" Spetz) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.943 b/7.3.943 new file mode 100644 index 0000000..5d1de0c --- /dev/null +++ b/7.3.943 @@ -0,0 +1,267 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.943 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.943 +Problem: Python: Negative indices were failing. +Solution: Fix negative indices. Add tests. (ZyX) +Files: src/if_py_both.h, src/if_python3.c, src/testdir/test86.in, + src/testdir/test86.ok, src/testdir/test87.in, + src/testdir/test87.ok + + +*** ../vim-7.3.942/src/if_py_both.h 2013-05-12 20:36:09.000000000 +0200 +--- src/if_py_both.h 2013-05-12 21:10:03.000000000 +0200 +*************** +*** 2394,2399 **** +--- 2394,2402 ---- + if (end == -1) + end = self->buf->b_ml.ml_line_count; + ++ if (n < 0) ++ n += end - start + 1; ++ + if (n < 0 || n > end - start) + { + PyErr_SetString(PyExc_IndexError, _("line number out of range")); +*************** +*** 2441,2446 **** +--- 2444,2452 ---- + if (end == -1) + end = self->buf->b_ml.ml_line_count; + ++ if (n < 0) ++ n += end - start + 1; ++ + if (n < 0 || n > end - start) + { + PyErr_SetString(PyExc_IndexError, _("line number out of range")); +*** ../vim-7.3.942/src/if_python3.c 2013-05-12 20:36:09.000000000 +0200 +--- src/if_python3.c 2013-05-12 21:10:03.000000000 +0200 +*************** +*** 1114,1120 **** + return NULL; + + if (PySlice_GetIndicesEx((PyObject *)idx, +! (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count+1, + &start, &stop, + &step, &slicelen) < 0) + { +--- 1114,1120 ---- + return NULL; + + if (PySlice_GetIndicesEx((PyObject *)idx, +! (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count, + &start, &stop, + &step, &slicelen) < 0) + { +*************** +*** 1146,1152 **** + return -1; + + if (PySlice_GetIndicesEx((PyObject *)idx, +! (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count+1, + &start, &stop, + &step, &slicelen) < 0) + { +--- 1146,1152 ---- + return -1; + + if (PySlice_GetIndicesEx((PyObject *)idx, +! (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count, + &start, &stop, + &step, &slicelen) < 0) + { +*** ../vim-7.3.942/src/testdir/test86.in 2013-05-06 03:52:44.000000000 +0200 +--- src/testdir/test86.in 2013-05-12 21:11:43.000000000 +0200 +*************** +*** 475,483 **** + : endtry + : endfor + : call RecVars(oname) +- endtry + :endfor + :only + :endfun + :" + :call Test() +--- 475,524 ---- + : endtry + : endfor + : call RecVars(oname) + :endfor + :only ++ :" ++ :" Test buffer object ++ :vnew ++ :put ='First line' ++ :put ='Second line' ++ :put ='Third line' ++ :1 delete _ ++ :py b=vim.current.buffer ++ :wincmd w ++ :mark a ++ py << EOF ++ cb = vim.current.buffer ++ # Tests BufferAppend and BufferItem ++ cb.append(b[0]) ++ # Tests BufferSlice and BufferAssSlice ++ cb.append('abc') # Will be overwritten ++ cb[-1:] = b[:-2] ++ # Test BufferLength and BufferAssSlice ++ cb.append('def') # Will not be overwritten ++ cb[len(cb):] = b[:] ++ # Test BufferAssItem and BufferMark ++ cb.append('ghi') # Will be overwritten ++ cb[-1] = repr((len(cb) - cb.mark('a')[0], cb.mark('a')[1])) ++ # Test BufferRepr ++ cb.append(repr(cb) + repr(b)) ++ # Modify foreign buffer ++ b.append('foo') ++ b[0]='bar' ++ b[0:0]=['baz'] ++ vim.command('call append("$", getbufline(%i, 1, "$"))' % b.number) ++ # Test CheckBuffer ++ vim.command('bwipeout! ' + str(b.number)) ++ for expr in ('b[1]','b[:] = ["A", "B"]','b[:]','b.append("abc")'): ++ try: ++ exec(expr) ++ except vim.error: ++ pass ++ else: ++ # Usually a SEGV here ++ # Should not happen in any case ++ cb.append('No exception for ' + expr) ++ EOF + :endfun + :" + :call Test() +*** ../vim-7.3.942/src/testdir/test86.ok 2013-05-06 03:52:44.000000000 +0200 +--- src/testdir/test86.ok 2013-05-12 21:11:43.000000000 +0200 +*************** +*** 306,308 **** +--- 306,321 ---- + G: '.,,' + W: 1:',,' 2:'.,,' 3:'.,,' 4:'.,,' + B: 1:',,' 2:'.,,' 3:'.,,' 4:'.,,' ++ First line ++ First line ++ def ++ First line ++ Second line ++ Third line ++ (7, 2) ++ ++ baz ++ bar ++ Second line ++ Third line ++ foo +*** ../vim-7.3.942/src/testdir/test87.in 2013-05-06 03:52:44.000000000 +0200 +--- src/testdir/test87.in 2013-05-12 21:11:43.000000000 +0200 +*************** +*** 444,452 **** + : endtry + : endfor + : call RecVars(oname) +- endtry + :endfor + :only + :endfun + :" + :call Test() +--- 444,493 ---- + : endtry + : endfor + : call RecVars(oname) + :endfor + :only ++ :" ++ :" Test buffer object ++ :vnew ++ :put ='First line' ++ :put ='Second line' ++ :put ='Third line' ++ :1 delete _ ++ :py3 b=vim.current.buffer ++ :wincmd w ++ :mark a ++ py3 << EOF ++ cb = vim.current.buffer ++ # Tests BufferAppend and BufferItem ++ cb.append(b[0]) ++ # Tests BufferSlice and BufferAssSlice ++ cb.append('abc') # Will be overwritten ++ cb[-1:] = b[:-2] ++ # Test BufferLength and BufferAssSlice ++ cb.append('def') # Will not be overwritten ++ cb[len(cb):] = b[:] ++ # Test BufferAssItem and BufferMark ++ cb.append('ghi') # Will be overwritten ++ cb[-1] = repr((len(cb) - cb.mark('a')[0], cb.mark('a')[1])) ++ # Test BufferRepr ++ cb.append(repr(cb) + repr(b)) ++ # Modify foreign buffer ++ b.append('foo') ++ b[0]='bar' ++ b[0:0]=['baz'] ++ vim.command('call append("$", getbufline(%i, 1, "$"))' % b.number) ++ # Test CheckBuffer ++ vim.command('bwipeout! ' + str(b.number)) ++ for expr in ('b[1]','b[:] = ["A", "B"]','b[:]','b.append("abc")'): ++ try: ++ exec(expr) ++ except vim.error: ++ pass ++ else: ++ # Usually a SEGV here ++ # Should not happen in any case ++ cb.append('No exception for ' + expr) ++ EOF + :endfun + :" + :call Test() +*** ../vim-7.3.942/src/testdir/test87.ok 2013-05-06 03:52:44.000000000 +0200 +--- src/testdir/test87.ok 2013-05-12 21:11:43.000000000 +0200 +*************** +*** 295,297 **** +--- 295,310 ---- + G: '.,,' + W: 1:',,' 2:'.,,' 3:'.,,' 4:'.,,' + B: 1:',,' 2:'.,,' 3:'.,,' 4:'.,,' ++ First line ++ First line ++ def ++ First line ++ Second line ++ Third line ++ (7, 2) ++ ++ baz ++ bar ++ Second line ++ Third line ++ foo +*** ../vim-7.3.942/src/version.c 2013-05-12 20:36:09.000000000 +0200 +--- src/version.c 2013-05-12 21:11:53.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 943, + /**/ + +-- +Q: Is selling software the same as selling hardware? +A: No, good hardware is sold new, good software has already been used by many. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.3.944 b/7.3.944 new file mode 100644 index 0000000..f5bbc97 --- /dev/null +++ b/7.3.944 @@ -0,0 +1,69 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.944 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.944 +Problem: External program receives the termrespone. +Solution: Insert a delay and discard input. (Hayaki Saito) +Files: src/term.c + + +*** ../vim-7.3.943/src/term.c 2013-04-06 14:30:35.000000000 +0200 +--- src/term.c 2013-05-13 20:24:14.000000000 +0200 +*************** +*** 3253,3261 **** + if (!gui.in_use && !gui.starting) + # endif + { +! /* May need to check for T_CRV response. */ + if (crv_status == CRV_SENT || u7_status == U7_SENT) +! (void)vpeekc_nomap(); + /* Check for termcodes first, otherwise an external program may + * get them. */ + check_for_codes_from_term(); +--- 3253,3271 ---- + if (!gui.in_use && !gui.starting) + # endif + { +! /* May need to discard T_CRV or T_U7 response. */ + if (crv_status == CRV_SENT || u7_status == U7_SENT) +! { +! # ifdef UNIX +! /* Give the terminal a chance to respond. */ +! mch_delay(100L, FALSE); +! # endif +! # ifdef TCIFLUSH +! /* Discard data received but not read. */ +! if (exiting) +! tcflush(fileno(stdin), TCIFLUSH); +! # endif +! } + /* Check for termcodes first, otherwise an external program may + * get them. */ + check_for_codes_from_term(); +*** ../vim-7.3.943/src/version.c 2013-05-12 21:16:17.000000000 +0200 +--- src/version.c 2013-05-13 20:24:29.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 944, + /**/ + +-- +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/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/README.patches b/README.patches index c407164..ad55b60 100644 --- a/README.patches +++ b/README.patches @@ -299,6 +299,7 @@ Individual patches for Vim 7.3: 4017 7.3.265 storing search pattern in history without separator check 1677 7.3.266 in Gvim with iBus typing space in Insert mode doesn't work 1784 7.3.267 Ruby on Mac OS X 10.7 may crash + 2093 7.3.268 Vim freezes when executing an external command with zsh 2871 7.3.269 'shellcmdflag' only works with one flag 1514 7.3.270 illegal memory access 12980 7.3.271 code not following Vim coding style @@ -743,3 +744,235 @@ Individual patches for Vim 7.3: 1685 7.3.710 (after 7.3.704) "fn" is broken 7579 7.3.711 (after 7.3.688) vim.current.buffer is not available 1474 7.3.712 nmake from VS2010 SP1 is not recognized + 3513 7.3.713 printf() can only align to bytes, not characters + 2296 7.3.714 :setlocal and :setglobal do not work in the sandbox + 8244 7.3.715 crash when calling setloclist() in BufUnload autocmd + 1857 7.3.716 error on exit when using Python 3 + 1581 7.3.717 when changing font size only MS-Windows limits window size + 1559 7.3.718 when re-using the current buffer the buffer-local options stay + 18500 7.3.719 cannot run new version of cproto + 11303 7.3.720 proto files are outdated + 1624 7.3.721 Ruby interface defines local functions globally + 2244 7.3.722 Perl flags may contain "-g", which breaks "make proto" + 7337 7.3.723 various tiny problem. + 2294 7.3.724 building with Ruby and Tcl on MS-Windows 64 bit does not work + 2064 7.3.725 :aboveleft and :belowright have no effect on :copen + 1900 7.3.726 typos and duplicate info in README + 1405 7.3.727 can't always find Win32.mak when building GvimExt + 7176 7.3.728 cannot compile with MzScheme interface on Ubuntu 12.10 + 1763 7.3.729 building with Ruby fails on some systems + 2575 7.3.730 crash in PHP file when using syntastic + 2188 7.3.731 Py3Init_vim() is exported uneccessarily + 3772 7.3.732 compiler warnings for function arguments + 2735 7.3.733 tests fail when including MzScheme + 3680 7.3.734 cannot put help files in a sub-directory + 3694 7.3.735 cannot build Ruby 1.9 with MingW or Cygwin + 7558 7.3.736 file name completion in input() escapes white space + 1380 7.3.737 when using do_cmdline() recursively did_endif is not reset + 5106 7.3.738 (after 7.3.730) unused function argument + 2326 7.3.739 computing number of lines may have an integer overflow + 4818 7.3.740 IOC tool complains about undefined behavior for int + 1576 7.3.741 (after 7.3.737) tiny build fails + 1302 7.3.742 leaking memory when :vimgrep restores the directory + 1773 7.3.743 (after 7.3.741) tiny build still fails + 1467 7.3.744 64 bit compiler warning + 2697 7.3.745 automatically setting 'ttymouse' doesn't work + 2902 7.3.746 memory leaks when using location lists + 2285 7.3.747 tab alignment does not work when characters are concealed + 14505 7.3.748 no tests for conceal mode + 1675 7.3.749 cannot build Python interface without multi-byte feature + 3050 7.3.750 the justify macro does not always work correctly + 3267 7.3.751 test 61 is flaky, it fails once in a while + 2410 7.3.752 test 49 script file doesn't fold properly + 3777 7.3.753 ":q" twice does not work when there is a QuitPre autocommand + 1488 7.3.754 latest nmake is not recognized + 5332 7.3.755 autoconf doesn't find Python 3 if it's called "python" + 2957 7.3.756 a location list can get a wrong count in :lvimgrep + 1549 7.3.757 issue 96: access freed memory if put command triggers autocmd + 3173 7.3.758 matchit plugin does not handle space in #ifdef + 3080 7.3.759 MS-Windows: Updating tabline is slow when there are many tabs + 3055 7.3.760 dv_ deletes the white space before the line + 2828 7.3.761 in Visual mode a "-p does not work + 1798 7.3.762 (after 7.3.759) on some systems the tabline is not redraw. + 2044 7.3.763 jumping to a mark does not open fold if it is in the same line + 4060 7.3.764 not all message translation files are installed + 3254 7.3.765 segfault when doing "cclose" on BufUnload in a python function + 2865 7.3.766 ":help cpo-*" jumps to the wrong place + 4437 7.3.767 (Win32) The _errno used for iconv may be the wrong one + 1979 7.3.768 settabvar() and setwinvar() may move the cursor + 9748 7.3.769 'matchpairs' does not work with multi-byte characters + 3912 7.3.770 vim.h indentation is inconsistent + 2074 7.3.771 (after 7.3.769) uninitialized variable + 1539 7.3.772 cursor at wrong location after doing %s/x/y/c + 1496 7.3.773 (after 7.3.767) crash when OriginalFirstThunk is zero + 2567 7.3.774 tiny GUI version misses console dialog feature + 2761 7.3.775 Cygwin and Mingw builds miss dependency on gui_w48.c + 12411 7.3.776 ml_get error when searching, caused by curwin/curbuf mismatch + 2035 7.3.777 when building with Gnome locale gets reset + 1664 7.3.778 compiler error for adding up two pointers + 4570 7.3.779 backwards search lands in wrong place when on a multibyte char + 6443 7.3.780 char2nr() and nr2char() always use 'encoding' + 5262 7.3.781 drawing with 'guifontwide' can be slow + 4964 7.3.782 Windows: IME composition may use a wrong font + 1329 7.3.783 crash when mark is not set + 1914 7.3.784 (after 7.3.781) error when 'guifontwide' has a comma + 3145 7.3.785 (after 7.3.776) crash with specific use of search pattern + 2928 7.3.786 Python threads don't run in the background (issue 103) + 4304 7.3.787 with 'relativenumber' can't see the absolute line number + 1481 7.3.788 when only using patches build fails on missing nl.po + 5078 7.3.789 (after 7.3.776) "\k" in regexp does not work in other window + 1727 7.3.790 after reloading a buffer the modelines are not processed + 61514 7.3.791 MzScheme interface doesn't work propely + 4000 7.3.792 ":substitute" works differently without confirmation + 1768 7.3.793 (after 7.3.792) new :substutite behavior is not tested + 1999 7.3.794 tiny build fails + 5967 7.3.795 MzScheme does not build with tiny features + 3027 7.3.796 "/[^\n]" does match at a line break + 2040 7.3.797 (after 7.3.792) compiler warning for size_t to int conversion + 3208 7.3.798 (after 7.3.791) MzScheme: circular list works wrong + 1666 7.3.799 the color column is not correct when entering a buffer + 2085 7.3.800 the " mark is not adjusted when inserting lines + 2053 7.3.801 ":window set nu?" displays the cursor line + 1426 7.3.802 no error when setting 'isk' to a value ending in a comma + 2523 7.3.803 (after 7.3.792) ":s/a/b/gc" is a no-op when typing 'q' + 1373 7.3.804 (after 7.3.799) compiler warning for tiny build + 3434 7.3.805 Lua version 5.2 is not detected properly on Arch Linux + 4287 7.3.806 compiler warnings in Perl code when using Visual studio 2012 + 1620 7.3.807 popup menu does not work properly in some situations + 8219 7.3.808 Python threads still do not work properly + 1609 7.3.809 the dosinst.c program has a buffer overflow + 8532 7.3.810 'relativenumber is reset unexpectedly + 1867 7.3.811 useless termresponse parsing for SGR mouse + 2481 7.3.812 when 'indentexpr' moves the cursor "curswant" not restored + 2028 7.3.813 the CompleteDone event is not always triggered + 4425 7.3.814 Win32 console: problem if 'enc' differs from current codepage + 4694 7.3.815 building with Cygwin and Ruby doesn't work + 12480 7.3.816 can't compute a hash + 1567 7.3.817 test 89 fails with tiny and small features + 4236 7.3.818 when test 40 fails it may leave files behind + 16345 7.3.819 (CORRECTED) compiling without +eval and Python isn't working + 3295 7.3.820 errors when building with small features and Lua, Perl or Ruby + 2199 7.3.821 build with OLE and Cygwin is broken + 4013 7.3.822 (after 7.3.799) crash when accessing freed buffer + 2051 7.3.823 (after 7.3.821) building with Cygwin: '-lsupc++' is not needed + 1566 7.3.824 can redefine builtin functions + 4540 7.3.825 with Python errors are not always clear + 3807 7.3.826 list of features in :version output is hard to read + 3112 7.3.827 (after 7.3.825) Python tests fail + 4780 7.3.828 mappings are not aware of wildmenu mode + 2664 7.3.829 'showmatch' shows wrong match and may scroll the screen + 2841 7.3.830 :mksession confuses bytes and characters when placing cursor + 20653 7.3.831 clumsy to handle the situation that a variable does not exist + 1830 7.3.832 compiler warning + 2985 7.3.833 In the terminal scroll wheel always scrolls the active window + 2556 7.3.834 Ruby 2.0 has a few API changes + 1755 7.3.835 "xxd -i" fails on an empty file + 59985 7.3.836 clipboard does not work on Win32 when compiled with Cygwin + 2221 7.3.837 empty lines in :version output when 'columns' is 320 + 11057 7.3.838 (after 7.3.830) insufficient testing for mksession + 2012 7.3.839 some files missing in the list of distributed files + 1652 7.3.840 "\@ 1 line + 1630 7.3.854 after BS in insert mode completion current entry is wrong + 1831 7.3.855 compiler warnings + 8587 7.3.856 system() garbles multi-byte clipboard contents + 2763 7.3.857 QuitPre autocommand event does not trigger for :qa and :wq + 4120 7.3.858 "gv" selects the wrong area after some operators + 9955 7.3.859 'ambiwidth' must be set by the user + 2602 7.3.860 in --remote-expr try/catch does not work + 4494 7.3.861 ":setlocal number" clears global value of 'relativenumber' + 5831 7.3.862 dragging the status line can be slow + 3025 7.3.863 (after 7.3.859) 'ambiwidth' detection for ANSI terminal + 1516 7.3.864 (after 7.3.862) can't build without the mouse feature + 2015 7.3.865 (after 7.3.862) mouse position can be wrong + 4745 7.3.866 not serving the X selection during system() isn't nice + 9641 7.3.867 matchparen does not update match when using auto-indenting + 2567 7.3.868 empty line at hit-return prompt with few lines of text + 11112 7.3.869 bufwinnr() matches buffers in other tabs + 6562 7.3.870 compiler warnings when using MingW 4.5.3 + 2741 7.3.871 search('^$', 'c') does not use empty match under the cursor + 14914 7.3.872 on some systems file name case is always ignored + 5967 7.3.873 cannot easily use :s to make title case + 3480 7.3.874 comparing file names does not handle multi-byte chars properly + 1865 7.3.875 (after 7.3.866) build problem with a combination of features + 2182 7.3.876 #if indents are off + 3069 7.3.877 (after 7.3.871) forward searching with search() is broken + 3124 7.3.878 'fileignorecase' is missing in options window and quickref + 2792 7.3.879 aborting an ex command does not abort a pending operator + 7907 7.3.880 new viminfo history lines may be replacd with old lines + 2849 7.3.881 Python list does not work correctly + 1714 7.3.882 CursorHold may trigger after receiving the termresponse + 2350 7.3.883 (after 7.3.880) can't build with some combination of features + 2150 7.3.884 compiler warning for variable shadowing another + 2408 7.3.885 double free for list and dict in Lua + 2567 7.3.886 can't build with multi-byte on Solaris 10 + 9601 7.3.887 no tests for Visual mode operators, what 7.3.879 fixes + 3933 7.3.888 filename completion with 'fic' does not work for multi-byte + 2040 7.3.889 can't build with Ruby 2.0 on a 64 bit system + 1563 7.3.890 test 79 fails on Windows + 3761 7.3.891 merging viminfo history doesn't work well + 7984 7.3.892 (after 7.3.891) still merging problems for viminfo history + 19606 7.3.893 crash when using b:, w: or t: after closing the buffer etc. + 2219 7.3.894 using wrong RUBY_VER causing Ruby build to break + 5927 7.3.895 valgrind error in test 91 + 5208 7.3.896 memory leaks in Lua interface + 4487 7.3.897 configure doesn't always find the shared library + 7367 7.3.898 memory leak reported by valgrind in test 91 + 2116 7.3.899 #if indents are off + 1639 7.3.900 not obvious that some mouse features are mutual-exclusive + 2748 7.3.901 outdated comment, ugly condition + 1345 7.3.902 tabline not updated when deleting last buffer in other tab + 1827 7.3.903 (after 7.3.892) crash on exit writing viminfo + 1465 7.3.904 (after 7.3.893) using memory freed by the garbage collector + 1394 7.3.905 (after 7.3.903) crash when writing viminfo + 1796 7.3.906 the "sleep .2" for running tests does not work on Solaris + 5559 7.3.907 Python uses IndexError when a dict key is not found + 1307 7.3.908 possible crash when using a list in Python + 57917 7.3.909 duplicate Python code + 2955 7.3.910 Python code in #ifdef branches with only minor differences + 11651 7.3.911 Python: Access to Vim variables is not so easy + 1673 7.3.912 typing ":" at hit-enter dialog fails if the a file changed + 2166 7.3.913 (after 7.3.905) still a crash when writing viminfo + 1966 7.3.914 ~/.viminfo is messed up when running tests + 1461 7.3.915 next encoding in 'fencs' is not used if error at the end + 3213 7.3.916 using freed memory when pasting with the mouse (Issue 130) + 2504 7.3.917 when a path ends in backslash appending a comma fails + 2634 7.3.918 repeating Ex command after using Visual motion does not work + 1777 7.3.919 (after 7.3.788) empty nl.po file does not work with old msgfmt + 1578 7.3.920 compiler warning for size_t to int + 1840 7.3.921 trying to create a fontset handle when 'guifontset' is not set + 2073 7.3.922 no test for what 7.3.918 fixes + 3123 7.3.923 configure check for X11 header files fails on Solaris + 44449 7.3.924 Python interface can't easily access options + 99193 7.3.925 typos in source code and build files + 26424 7.3.926 triggering autocommands is wrong for :tabclose et al. + 4329 7.3.927 missing combining characters when putting text in a register + 2141 7.3.928 (after 7.3.924) can't build with strict C compiler + 4270 7.3.929 (after 7.3.924) unused variable, not freeing unused string + 1375 7.3.930 MSVC 2012 update is not recognized + 1915 7.3.931 no completion for :xmap and :smap + 1388 7.3.932 compiler warning for uninitialized variable + 4739 7.3.933 Ruby on Mac crashes due to GC failure + 2023 7.3.934 E381 and E380 make the user think nothing happened + 3655 7.3.935 (after 7.3.933) Ruby init stack differs on 64 bit systems + 23271 7.3.936 (after 7.3.935) Ruby missing piece for static 64 bit linking + 16512 7.3.937 more can be shared between Python 2 and 3 + 4418 7.3.938 Python: not so easy to get the window number + 2053 7.3.939 Using Py_BuildValue is inefficient sometimes + 3030 7.3.940 Python: Can't get position of window + 32095 7.3.941 Python: Stuff in if_py_both.h is ordered badly + 5470 7.3.942 Python: SEGV in Buffer functions + 6867 7.3.943 Python: Negative indices were failing + 2283 7.3.944 external program receives the termrespone diff --git a/nl.po b/nl.po new file mode 100644 index 0000000..23dc99e --- /dev/null +++ b/nl.po @@ -0,0 +1,8207 @@ +# Dutch Translation for Vim vim:set foldmethod=marker: +# Do ":help uganda" in Vim to read copying and usage conditions. +# Do ":help credits" in Vim to see a list of people who contributed. +# Previous-Translator(s): +# highlight: oplichten +# Erwin Poeze , 2011, 2012. +msgid "" +msgstr "" +"Project-Id-Version: vim 7.3\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2011-05-29 07:43+0200\n" +"PO-Revision-Date: 2012-03-28 08:07+0200\n" +"Last-Translator: YOUR NAME \n" +"Language-Team: Dutch \n" +"Language: nl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: blowfish.c:418 +msgid "E831: bf_key_init() called with empty password" +msgstr "E831: bf_key_init() uitgevoerd met leeg wachtwoord" + +#: blowfish.c:513 +msgid "E820: sizeof(uint32_t) != 4" +msgstr "E820: sizeof(uint32_t) != 4" + +#: blowfish.c:532 +msgid "E817: Blowfish big/little endian use wrong" +msgstr "E817: gebruik Blowfish big/little endian is onjuist" + +#: blowfish.c:645 +msgid "E818: sha256 test failed" +msgstr "E818: sha256 test mislukt" + +#: blowfish.c:650 +msgid "E819: Blowfish test failed" +msgstr "E819: Blowfish test mislukt" + +#: buffer.c:103 +msgid "E82: Cannot allocate any buffer, exiting..." +msgstr "E82: kan geen buffer aanmaken, beëindigen..." + +#: buffer.c:106 +msgid "E83: Cannot allocate buffer, using other one..." +msgstr "E83: kan geen buffer aanmaken, een andere wordt gebruikt..." + +#: buffer.c:879 +msgid "E515: No buffers were unloaded" +msgstr "E515: geen van de buffers is gelost" + +#: buffer.c:881 +msgid "E516: No buffers were deleted" +msgstr "E516: geen van de buffers is verwijderd" + +#: buffer.c:883 +msgid "E517: No buffers were wiped out" +msgstr "E517: geen van de buffers is gewist" + +#: buffer.c:891 +msgid "1 buffer unloaded" +msgstr "1 buffer gelost" + +#: buffer.c:893 +#, c-format +msgid "%d buffers unloaded" +msgstr "%d buffers gelost" + +#: buffer.c:898 +msgid "1 buffer deleted" +msgstr "1 buffer verwijderd" + +#: buffer.c:900 +#, c-format +msgid "%d buffers deleted" +msgstr "%d buffers verwijderd" + +#: buffer.c:905 +msgid "1 buffer wiped out" +msgstr "1 buffer gewist" + +#: buffer.c:907 +#, c-format +msgid "%d buffers wiped out" +msgstr "%d buffers gewist" + +#: buffer.c:965 +msgid "E84: No modified buffer found" +msgstr "E84: geen aangepast buffer gevonden" + +#. back where we started, didn't find anything. +#: buffer.c:1004 +msgid "E85: There is no listed buffer" +msgstr "E85: er is geen vermelde buffer" + +#: buffer.c:1016 +#, c-format +msgid "E86: Buffer %ld does not exist" +msgstr "E86: Buffer %ld bestaat niet" + +#: buffer.c:1019 +msgid "E87: Cannot go beyond last buffer" +msgstr "E87: kan niet voorbij het laatste buffer komen" + +#: buffer.c:1021 +msgid "E88: Cannot go before first buffer" +msgstr "E88: kan niet vóór het eerste buffer komen" + +#: buffer.c:1063 +#, c-format +msgid "E89: No write since last change for buffer %ld (add ! to override)" +msgstr "E89: niets opgeslagen sinds laatste wijziging van buffer %ld (voeg ! toe om te forceren)" + +#: buffer.c:1080 +msgid "E90: Cannot unload last buffer" +msgstr "E90: kan laatste buffer niet legen" + +#: buffer.c:1657 +msgid "W14: Warning: List of file names overflow" +msgstr "W14: waarschuwing: lijst met bestandsnamen is vol" + +#: buffer.c:1856 +#: quickfix.c:3626 +#, c-format +msgid "E92: Buffer %ld not found" +msgstr "E92: buffer %ld niet gevonden" + +#: buffer.c:2131 +#, c-format +msgid "E93: More than one match for %s" +msgstr "E93: %s meermaals gevonden" + +#: buffer.c:2133 +#, c-format +msgid "E94: No matching buffer for %s" +msgstr "E94: geen overeenkomstig buffer voor %s" + +#: buffer.c:2585 +#, c-format +msgid "line %ld" +msgstr "regel %ld" + +#: buffer.c:2672 +msgid "E95: Buffer with this name already exists" +msgstr "E95: buffer met deze naam bestaat al" + +#: buffer.c:2999 +msgid " [Modified]" +msgstr " [Gewijzigd]" + +#: buffer.c:3004 +msgid "[Not edited]" +msgstr "[Niet bewerkt]" + +#: buffer.c:3009 +msgid "[New file]" +msgstr "[Nieuw bestand]" + +#: buffer.c:3010 +msgid "[Read errors]" +msgstr "[Leesfouten]" + +#: buffer.c:3012 +#: fileio.c:2429 +#: netbeans.c:3848 +msgid "[readonly]" +msgstr "[alleen-lezen]" + +#: buffer.c:3035 +#, c-format +msgid "1 line --%d%%--" +msgstr "1 regel --%d%%--" + +#: buffer.c:3038 +#, c-format +msgid "%ld lines --%d%%--" +msgstr "%ld regels --%d%%--" + +#: buffer.c:3045 +#, c-format +msgid "line %ld of %ld --%d%%-- col " +msgstr "regel %ld van %ld --%d%%-- kol " + +#: buffer.c:3166 +#: buffer.c:5132 +#: memline.c:1783 +msgid "[No Name]" +msgstr "[Geen naam]" + +#. must be a help buffer +#: buffer.c:3204 +msgid "help" +msgstr "hulp" + +#: buffer.c:3832 +#: screen.c:6091 +msgid "[Help]" +msgstr "[Hulp]" + +#: buffer.c:3866 +#: screen.c:6097 +msgid "[Preview]" +msgstr "[Voorvertoning]" + +#: buffer.c:4188 +msgid "All" +msgstr "Alles" + +#: buffer.c:4188 +msgid "Bot" +msgstr "Bodem" + +#: buffer.c:4191 +msgid "Top" +msgstr "Top" + +#: buffer.c:5067 +#, c-format +msgid "" +"\n" +"# Buffer list:\n" +msgstr "" +"\n" +"# Bufferlijst:\n" + +#: buffer.c:5116 +msgid "[Location List]" +msgstr "[Locatielijst]" + +#: buffer.c:5118 +msgid "[Quickfix list]" +msgstr "[Quickfix-lijst]" + +#: buffer.c:5128 +msgid "[Scratch]" +msgstr "[Klad]" + +#: buffer.c:5445 +msgid "" +"\n" +"--- Signs ---" +msgstr "" +"\n" +"--- Tekens ---" + +#: buffer.c:5455 +#, c-format +msgid "Signs for %s:" +msgstr "Tekens voor %s:" + +#: buffer.c:5461 +#, c-format +msgid " line=%ld id=%d name=%s" +msgstr " regel=%ld id=%d naam=%s" + +#: diff.c:141 +#, c-format +msgid "E96: Can not diff more than %ld buffers" +msgstr "E96: kan niet meer dan %ld buffers vergelijken" + +#: diff.c:777 +msgid "E810: Cannot read or write temp files" +msgstr "E810: kan tijdelijke bestand niet lezen of opslaan" + +#: diff.c:778 +msgid "E97: Cannot create diffs" +msgstr "E97: kan geen verschillen genereren" + +#: diff.c:901 +msgid "Patch file" +msgstr "Patch-bestand" + +#: diff.c:1005 +msgid "E816: Cannot read patch output" +msgstr "E816: kan patch-uitvoer niet lezen" + +#: diff.c:1236 +msgid "E98: Cannot read diff output" +msgstr "E98: kan diff-uitvoer niet lezen" + +#: diff.c:2095 +msgid "E99: Current buffer is not in diff mode" +msgstr "E99: huidige buffer is niet in diff-modus" + +#: diff.c:2114 +msgid "E793: No other buffer in diff mode is modifiable" +msgstr "E793: geen ander buffer in diff-modus is bewerkbaar" + +#: diff.c:2116 +msgid "E100: No other buffer in diff mode" +msgstr "E100: geen ander buffer in diff-modus" + +#: diff.c:2126 +msgid "E101: More than two buffers in diff mode, don't know which one to use" +msgstr "E101: meer dan twee buffers in diff-modus, weet niet welke gebruikt moet worden" + +#: diff.c:2149 +#, c-format +msgid "E102: Can't find buffer \"%s\"" +msgstr "E102: kan buffer \"%s\" niet vinden" + +#: diff.c:2157 +#, c-format +msgid "E103: Buffer \"%s\" is not in diff mode" +msgstr "E103: buffer \"%s\" is niet in diff-modus" + +#: diff.c:2201 +msgid "E787: Buffer changed unexpectedly" +msgstr "E787: buffer is onverwacht gewijzigd" + +#: digraph.c:2214 +msgid "E104: Escape not allowed in digraph" +msgstr "E104: Escape in digraph niet toegestaan" + +#: digraph.c:2407 +msgid "E544: Keymap file not found" +msgstr "E544: bestand met toetsbindingen niet gevonden" + +#: digraph.c:2434 +msgid "E105: Using :loadkeymap not in a sourced file" +msgstr "E105: Gebruik van :loadkeymap niet in een 'sourced' bestand" + +#: digraph.c:2473 +msgid "E791: Empty keymap entry" +msgstr "E791: toetsbinding leeg" + +#: edit.c:42 +msgid " Keyword completion (^N^P)" +msgstr " trefwoordvoltooiing (^N^P)" + +#. ctrl_x_mode == 0, ^P/^N compl. +#: edit.c:43 +msgid " ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)" +msgstr " ^X-modus (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)" + +#: edit.c:45 +msgid " Whole line completion (^L^N^P)" +msgstr " gehele-regelvoltooiing (^L^N^P)" + +#: edit.c:46 +msgid " File name completion (^F^N^P)" +msgstr " bestandsnaamvoltooiing (^F^N^P)" + +#: edit.c:47 +msgid " Tag completion (^]^N^P)" +msgstr " tag-voltooiing (^]^N^P)" + +#: edit.c:48 +msgid " Path pattern completion (^N^P)" +msgstr " Padpatroonvoltooiing (^N^P)" + +#: edit.c:49 +msgid " Definition completion (^D^N^P)" +msgstr " definitievoltooiiing (^D^N^P)" + +#: edit.c:51 +msgid " Dictionary completion (^K^N^P)" +msgstr " Dictionaryvoltooiing (^K^N^P)" + +#: edit.c:52 +msgid " Thesaurus completion (^T^N^P)" +msgstr " Thesaurusvoltooiing (^T^N^P)" + +#: edit.c:53 +msgid " Command-line completion (^V^N^P)" +msgstr " opdrachtregelvoltooiing (^V^N^P)" + +#: edit.c:54 +msgid " User defined completion (^U^N^P)" +msgstr " gebruikergedefinieerde voltooiing (^U^N^P)" + +#: edit.c:55 +msgid " Omni completion (^O^N^P)" +msgstr " omni-voltooiing (^O^N^P)" + +#: edit.c:56 +msgid " Spelling suggestion (s^N^P)" +msgstr " spellingsuggestie (s^N^P)" + +#: edit.c:57 +msgid " Keyword Local completion (^N^P)" +msgstr " lokaal-trefwoordvoltooiing (^N^P)" + +#: edit.c:60 +msgid "Hit end of paragraph" +msgstr "Einde van paragraaf" + +#: edit.c:2042 +msgid "'dictionary' option is empty" +msgstr "'Dictionary'-optie is leeg" + +#: edit.c:2043 +msgid "'thesaurus' option is empty" +msgstr "'thesaurus'-optie is leeg" + +#: edit.c:3009 +#, c-format +msgid "Scanning dictionary: %s" +msgstr "Doorzoeken Dictionary: %s" + +#: edit.c:3494 +msgid " (insert) Scroll (^E/^Y)" +msgstr " (invoegen) scroll (^E/^Y)" + +#: edit.c:3496 +msgid " (replace) Scroll (^E/^Y)" +msgstr " (vervangen) scroll (^E/^Y)" + +#: edit.c:3973 +#, c-format +msgid "Scanning: %s" +msgstr "doorzoeken: %s" + +#: edit.c:4008 +msgid "Scanning tags." +msgstr "Doorzoeken tags." + +#: edit.c:5021 +msgid " Adding" +msgstr " toevoegen" + +#. showmode might reset the internal line pointers, so it must +#. * be called before line = ml_get(), or when this address is no +#. * longer needed. -- Acevedo. +#. +#: edit.c:5068 +msgid "-- Searching..." +msgstr "-- doorzoeken..." + +#: edit.c:5128 +msgid "Back at original" +msgstr "Terug naar origineel" + +#: edit.c:5133 +msgid "Word from other line" +msgstr "Woord uit andere regel" + +#: edit.c:5138 +msgid "The only match" +msgstr "Het enige resultaat" + +#: edit.c:5203 +#, c-format +msgid "match %d of %d" +msgstr "resultaat %d van %d" + +#: edit.c:5207 +#, c-format +msgid "match %d" +msgstr "resultaat %d" + +#: eval.c:96 +msgid "E18: Unexpected characters in :let" +msgstr "E18: onverwachte tekens in :let" + +#: eval.c:97 +#, c-format +msgid "E684: list index out of range: %ld" +msgstr "E684: lijstindex buiten bereik: %ld" + +#: eval.c:98 +#, c-format +msgid "E121: Undefined variable: %s" +msgstr "E121: ongedefinieerde variabele: %s" + +#: eval.c:99 +msgid "E111: Missing ']'" +msgstr "E111: ontbrekende ']'" + +#: eval.c:100 +#, c-format +msgid "E686: Argument of %s must be a List" +msgstr "E686: argument van %s moet een List zijn" + +#: eval.c:101 +#, c-format +msgid "E712: Argument of %s must be a List or Dictionary" +msgstr "E712: argument van %s moet een List of Dictionary zijn" + +#: eval.c:102 +msgid "E713: Cannot use empty key for Dictionary" +msgstr "E713: kan geen leeg trefwoord als Dictionary gebruiken" + +#: eval.c:103 +msgid "E714: List required" +msgstr "E714: List is vereist" + +#: eval.c:104 +msgid "E715: Dictionary required" +msgstr "E715: Dictionary is vereist" + +#: eval.c:105 +#, c-format +msgid "E118: Too many arguments for function: %s" +msgstr "E118: te veel argumenten voor functie: %s" + +#: eval.c:106 +#, c-format +msgid "E716: Key not present in Dictionary: %s" +msgstr "E716: trefwoord niet aangetroffen in Dictionary: %s" + +#: eval.c:107 +#, c-format +msgid "E122: Function %s already exists, add ! to replace it" +msgstr "E122: function %s bestaat reeds, voeg ! toe om te vervangen" + +#: eval.c:108 +msgid "E717: Dictionary entry already exists" +msgstr "E717: woord bestaat al in Dictionary" + +#: eval.c:109 +msgid "E718: Funcref required" +msgstr "E718: Funcref is vereist" + +#: eval.c:110 +msgid "E719: Cannot use [:] with a Dictionary" +msgstr "E719: kan [:] niet met een Dictionary gebruiken" + +#: eval.c:111 +#, c-format +msgid "E734: Wrong variable type for %s=" +msgstr "E734: onjuist type variabele voor %s=" + +#: eval.c:112 +#, c-format +msgid "E130: Unknown function: %s" +msgstr "E130: onbekende functie: %s" + +#: eval.c:113 +#, c-format +msgid "E461: Illegal variable name: %s" +msgstr "E461: ongeldige variabelenaam: %s" + +#: eval.c:1931 +msgid "E687: Less targets than List items" +msgstr "E687: minder doelen dan Listitems" + +#: eval.c:1936 +msgid "E688: More targets than List items" +msgstr "E688: meer doelen dan Listitems" + +#: eval.c:2022 +msgid "Double ; in list of variables" +msgstr "Dubbele ; in variabelenlijst" + +#: eval.c:2241 +#, c-format +msgid "E738: Can't list variables for %s" +msgstr "E738: kan variabelen voor %s niet tonen" + +#: eval.c:2587 +msgid "E689: Can only index a List or Dictionary" +msgstr "E689: alleen een List of Dictionary kan geïndexeerd worden" + +#: eval.c:2593 +msgid "E708: [:] must come last" +msgstr "E708: [:] moet als laatste staan" + +#: eval.c:2645 +msgid "E709: [:] requires a List value" +msgstr "E709: [:] vereist een Listwaarde" + +#: eval.c:2881 +msgid "E710: List value has more items than target" +msgstr "E710: Listwaarde heeft meer value has more items than target" + +#: eval.c:2885 +msgid "E711: List value has not enough items" +msgstr "E711: Listwaarde heeft onvoldoende items" + +#: eval.c:3120 +msgid "E690: Missing \"in\" after :for" +msgstr "E690: \"in\" ontbreekt na :for" + +#: eval.c:3353 +#, c-format +msgid "E107: Missing parentheses: %s" +msgstr "E107: ontbrekende haakjes: %s" + +#: eval.c:3592 +#, c-format +msgid "E108: No such variable: \"%s\"" +msgstr "E108: onbekende variabele: \"%s\"" + +#: eval.c:3679 +msgid "E743: variable nested too deep for (un)lock" +msgstr "E743: variabele is te diep genest om te beveiligen" + +#: eval.c:4027 +msgid "E109: Missing ':' after '?'" +msgstr "E109: ':' ontbreekt na '?'" + +#: eval.c:4329 +msgid "E691: Can only compare List with List" +msgstr "E691: List kan alleen met een Lijst worden vergeleken" + +#: eval.c:4331 +msgid "E692: Invalid operation for Lists" +msgstr "E692: ongeldige bewerking voor Listen" + +#: eval.c:4358 +msgid "E735: Can only compare Dictionary with Dictionary" +msgstr "E735: Dictionary kan alleen met Woordenboek worden vergeleken" + +#: eval.c:4360 +msgid "E736: Invalid operation for Dictionary" +msgstr "E736: ongeldige bewerking voor Dictionary" + +#: eval.c:4380 +msgid "E693: Can only compare Funcref with Funcref" +msgstr "E693: Funcref kan alleen met Funcref worden vergeleken" + +#: eval.c:4382 +msgid "E694: Invalid operation for Funcrefs" +msgstr "E694: ongeldige bewerking voor Funcrefs" + +#: eval.c:4802 +msgid "E804: Cannot use '%' with Float" +msgstr "E804: '%' kan niet met Float worden gebruikt" + +#: eval.c:5022 +msgid "E110: Missing ')'" +msgstr "E110: ')' ontbreekt" + +#: eval.c:5174 +msgid "E695: Cannot index a Funcref" +msgstr "E695: een Funcref kan niet geïndexeerd worden" + +#: eval.c:5431 +#, c-format +msgid "E112: Option name missing: %s" +msgstr "E112: optienaam ontbreekt: %s" + +#: eval.c:5449 +#, c-format +msgid "E113: Unknown option: %s" +msgstr "E113: onbekende optie: %s" + +#: eval.c:5515 +#, c-format +msgid "E114: Missing quote: %s" +msgstr "E114: ontbrekend aanhaalteken: %s" + +#: eval.c:5651 +#, c-format +msgid "E115: Missing quote: %s" +msgstr "E115: ontbrekend aanhaalteken: %s" + +#: eval.c:5730 +#, c-format +msgid "E696: Missing comma in List: %s" +msgstr "E696: komma ontbreekt in List: %s" + +#: eval.c:5738 +#, c-format +msgid "E697: Missing end of List ']': %s" +msgstr "E697: einde van List ']' ontbreekt: %s" + +#: eval.c:7230 +#, c-format +msgid "E720: Missing colon in Dictionary: %s" +msgstr "E720: dubbelepunt in Dictionary ontbreekt: %s" + +#: eval.c:7259 +#, c-format +msgid "E721: Duplicate key in Dictionary: \"%s\"" +msgstr "E721: dubbele sleutel in Dictionary: \"%s\"" + +#: eval.c:7279 +#, c-format +msgid "E722: Missing comma in Dictionary: %s" +msgstr "E722: komma ontbreekt in Dictionary: %s" + +#: eval.c:7287 +#, c-format +msgid "E723: Missing end of Dictionary '}': %s" +msgstr "E723: einde van Dictionary '}' ontbreekt: %s" + +#: eval.c:7325 +msgid "E724: variable nested too deep for displaying" +msgstr "E724: variabele is te diep genest om te tonen" + +#: eval.c:8059 +#, c-format +msgid "E740: Too many arguments for function %s" +msgstr "E740: teveel argumenten voor functie %s" + +#: eval.c:8061 +#, c-format +msgid "E116: Invalid arguments for function %s" +msgstr "E116: ongeldige argumenten voor functie %s" + +#: eval.c:8270 +#, c-format +msgid "E117: Unknown function: %s" +msgstr "E117: onbekende functie: %s" + +#: eval.c:8276 +#, c-format +msgid "E119: Not enough arguments for function: %s" +msgstr "E119: onvoldoende argumenten voor functie: %s" + +#: eval.c:8280 +#, c-format +msgid "E120: Using not in a script context: %s" +msgstr "E120: gebruik van buiten een scriptcontext: %s" + +#: eval.c:8284 +#, c-format +msgid "E725: Calling dict function without Dictionary: %s" +msgstr "E725: dict-functie aanroep zonder Dictionary: %s" + +#: eval.c:8357 +msgid "E808: Number or Float required" +msgstr "E808: Number of Float vereist" + +#: eval.c:8949 +msgid "E699: Too many arguments" +msgstr "E699:teveel argumenten" + +#: eval.c:9118 +msgid "E785: complete() can only be used in Insert mode" +msgstr "E785: complete() kan alleen in Invoegmodus worden gebruikt" + +#. +#. * Yes this is ugly, I don't particularly like it either. But doing it +#. * this way has the compelling advantage that translations need not to +#. * be touched at all. See below what 'ok' and 'ync' are used for. +#. +#: eval.c:9218 +#: gui.c:4876 +#: gui_gtk.c:2144 +#: os_mswin.c:598 +msgid "&Ok" +msgstr "&Ok" + +#: eval.c:9914 +#, c-format +msgid "E737: Key already exists: %s" +msgstr "E737: sleutel bestaat al: %s" + +#: eval.c:10506 +#, c-format +msgid "+-%s%3ld lines: " +msgstr "+-%s%3ld regels: " + +#: eval.c:10594 +#, c-format +msgid "E700: Unknown function: %s" +msgstr "E700: onbekende functie: %s" + +#: eval.c:12620 +msgid "" +"&OK\n" +"&Cancel" +msgstr "" +"&OK\n" +"&Annuleren" + +#: eval.c:12702 +msgid "called inputrestore() more often than inputsave()" +msgstr "inputrestore() vaker aangeroepen dan inputsave()" + +#: eval.c:12836 +msgid "E786: Range not allowed" +msgstr "E786: bereik niet toegestaan" + +#: eval.c:13036 +msgid "E701: Invalid type for len()" +msgstr "E701: ongeldig type voor len()" + +#: eval.c:14063 +msgid "E726: Stride is zero" +msgstr "E726: stap is nul" + +#: eval.c:14065 +msgid "E727: Start past end" +msgstr "E727: start na einde" + +#: eval.c:14118 +#: eval.c:17978 +msgid "" +msgstr "" + +#: eval.c:14352 +msgid "E240: No connection to Vim server" +msgstr "E240: geen verbinding met Vim-server" + +#: eval.c:14400 +#, c-format +msgid "E241: Unable to send to %s" +msgstr "E241: verzenden naar %s onmogelijk" + +#: eval.c:14547 +msgid "E277: Unable to read a server reply" +msgstr "E277: lezen van serverantwoord onmogelijk" + +#: eval.c:14797 +msgid "E655: Too many symbolic links (cycle?)" +msgstr "E655: teveel symbolische koppelingen (oneindige lus?)" + +#: eval.c:15527 +msgid "E258: Unable to send to client" +msgstr "E258: verzenden nar client onmogelijk" + +#: eval.c:16294 +msgid "E702: Sort compare function failed" +msgstr "E702: sorteer-vergelijkfunctie mislukt" + +#: eval.c:16619 +msgid "(Invalid)" +msgstr "(ongeldig)" + +#: eval.c:17104 +msgid "E677: Error writing temp file" +msgstr "E677: opslaan van temp-bestand is mislukt" + +#: eval.c:19007 +msgid "E805: Using a Float as a Number" +msgstr "E805: een Float wordt als Number gebruikt" + +#: eval.c:19011 +msgid "E703: Using a Funcref as a Number" +msgstr "E703: een Funcref wordt als Number gebruikt" + +#: eval.c:19019 +msgid "E745: Using a List as a Number" +msgstr "E745: List wordt als een Number gebruikt" + +#: eval.c:19022 +msgid "E728: Using a Dictionary as a Number" +msgstr "E728: Dictionary gebruiken als een Number" + +#: eval.c:19125 +msgid "E729: using Funcref as a String" +msgstr "E729: Funcref gebruiken als een String" + +#: eval.c:19128 +msgid "E730: using List as a String" +msgstr "E730: List gebruiken als een String" + +#: eval.c:19131 +msgid "E731: using Dictionary as a String" +msgstr "E731: Dictionary gebruiken als een String" + +#: eval.c:19135 +msgid "E806: using Float as a String" +msgstr "E806: Float gebruiken als een String" + +#: eval.c:19505 +#, c-format +msgid "E704: Funcref variable name must start with a capital: %s" +msgstr "E704: variabelenaam van Funcref moet beginnen met een hoofdletter: %s" + +#: eval.c:19513 +#, c-format +msgid "E705: Variable name conflicts with existing function: %s" +msgstr "E705: variablenaam botst met bestaande functie: %s" + +#: eval.c:19538 +#, c-format +msgid "E706: Variable type mismatch for: %s" +msgstr "E706: variabelesoort past niet bij: %s" + +#: eval.c:19647 +#, c-format +msgid "E795: Cannot delete variable %s" +msgstr "E795: kan variabele %s niet verwijderen" + +#: eval.c:19664 +#, c-format +msgid "E741: Value is locked: %s" +msgstr "E741: waarde is geblokkeerd: %s" + +#: eval.c:19665 +#: eval.c:19671 +#: message.c:2132 +#: os_mswin.c:2258 +msgid "Unknown" +msgstr "Onbekend" + +#: eval.c:19670 +#, c-format +msgid "E742: Cannot change value of %s" +msgstr "E742: kan waarde van %s niet veranderen" + +#: eval.c:19755 +msgid "E698: variable nested too deep for making a copy" +msgstr "E698: variabele te diep genest om een kopie te maken" + +#: eval.c:20228 +#, c-format +msgid "E123: Undefined function: %s" +msgstr "E123: ongedefinieerde functie: %s" + +#: eval.c:20241 +#, c-format +msgid "E124: Missing '(': %s" +msgstr "E124: ontbrekende '(': %s" + +#: eval.c:20297 +#, c-format +msgid "E125: Illegal argument: %s" +msgstr "E125: ongeldig argument: %s" + +#: eval.c:20407 +msgid "E126: Missing :endfunction" +msgstr "E126: ontbrekende :endfunction" + +#: eval.c:20544 +#, c-format +msgid "E707: Function name conflicts with variable: %s" +msgstr "E707: functienaam botst met variabele: %s" + +#: eval.c:20559 +#, c-format +msgid "E127: Cannot redefine function %s: It is in use" +msgstr "E127: kan functie %s niet opnieuw definiëren, het is in gebruik" + +#: eval.c:20624 +#, c-format +msgid "E746: Function name does not match script file name: %s" +msgstr "E746: functienaam komt niet overeen met bestandsnaam van het script: %s" + +#: eval.c:20742 +msgid "E129: Function name required" +msgstr "E129: functienaam is vereist" + +#: eval.c:20862 +#, c-format +msgid "E128: Function name must start with a capital or contain a colon: %s" +msgstr "E128: functionnaam moet met een hoofdletter beginnen of een dubbelepunt bevatten: %s" + +#: eval.c:21394 +#, c-format +msgid "E131: Cannot delete function %s: It is in use" +msgstr "E131: functie %s wordt gebruikt en kan niet worden verwijderd" + +#: eval.c:21514 +msgid "E132: Function call depth is higher than 'maxfuncdepth'" +msgstr "E132: diepte functieaanroep overstijgt 'maxfuncdepth'" + +#: eval.c:21653 +#, c-format +msgid "calling %s" +msgstr "%s aanroepen" + +#: eval.c:21745 +#, c-format +msgid "%s aborted" +msgstr "%s afgebroken" + +#: eval.c:21747 +#, c-format +msgid "%s returning #%ld" +msgstr "%s komt terug met de waarde #%ld" + +#: eval.c:21763 +#, c-format +msgid "%s returning %s" +msgstr "%s komt terug met de waarde %s" + +#: eval.c:21787 +#: ex_cmds2.c:3233 +#, c-format +msgid "continuing in %s" +msgstr "voortzetten in %s" + +#: eval.c:21906 +msgid "E133: :return not inside a function" +msgstr "E133: :return niet binnen een functie" + +#: eval.c:22319 +msgid "" +"\n" +"# global variables:\n" +msgstr "" +"\n" +"# globale variabelen:\n" + +#: eval.c:22436 +msgid "" +"\n" +"\tLast set from " +msgstr "" +"\n" +"\tLaatst ingesteld door " + +#: eval.c:22456 +msgid "No old files" +msgstr "Geen oudere bestanden" + +#: ex_cmds.c:101 +#, c-format +msgid "<%s>%s%s %d, Hex %02x, Octal %03o" +msgstr "<%s>%s%s %d, Hex %02x, Octal %03o" + +#: ex_cmds.c:128 +#, c-format +msgid "> %d, Hex %04x, Octal %o" +msgstr "> %d, Hex %04x, Octal %o" + +#: ex_cmds.c:129 +#, c-format +msgid "> %d, Hex %08x, Octal %o" +msgstr "> %d, Hex %08x, Octal %o" + +#: ex_cmds.c:739 +msgid "E134: Move lines into themselves" +msgstr "E134: verplaats regels in zichzelf" + +#: ex_cmds.c:808 +msgid "1 line moved" +msgstr "1 regel verplaatst" + +#: ex_cmds.c:810 +#, c-format +msgid "%ld lines moved" +msgstr "%ld regels verplaatst" + +#: ex_cmds.c:1305 +#, c-format +msgid "%ld lines filtered" +msgstr "%ld regels gefilterd" + +#: ex_cmds.c:1329 +msgid "E135: *Filter* Autocommands must not change current buffer" +msgstr "E135: *Filter* Autocommands mogen huidige buffer niet wijzigen" + +#: ex_cmds.c:1414 +msgid "[No write since last change]\n" +msgstr "[Niets opgeslagen sinds laatste wijziging]\n" + +#: ex_cmds.c:1672 +#, c-format +msgid "%sviminfo: %s in line: " +msgstr "%sviminfo: %s in regel: " + +#: ex_cmds.c:1680 +msgid "E136: viminfo: Too many errors, skipping rest of file" +msgstr "E136: viminfo: teveel fouten, restand van bestand overgeslagen" + +#: ex_cmds.c:1709 +#, c-format +msgid "Reading viminfo file \"%s\"%s%s%s" +msgstr "Inlezen viminfo-bestand \"%s\"%s%s%s" + +#: ex_cmds.c:1711 +msgid " info" +msgstr " info" + +#: ex_cmds.c:1712 +msgid " marks" +msgstr " markering" + +#: ex_cmds.c:1713 +msgid " oldfiles" +msgstr " oud-bestanden" + +#: ex_cmds.c:1714 +msgid " FAILED" +msgstr " MISLUKT" + +#. avoid a wait_return for this message, it's annoying +#: ex_cmds.c:1810 +#, c-format +msgid "E137: Viminfo file is not writable: %s" +msgstr "E137: viminfo-bestand is niet schrijfbaar: %s" + +#: ex_cmds.c:1963 +#, c-format +msgid "E138: Can't write viminfo file %s!" +msgstr "E138: kan niet naar viminfo-bestand %s schrijven!" + +#: ex_cmds.c:1973 +#, c-format +msgid "Writing viminfo file \"%s\"" +msgstr "viminfo-bestand \"%s\" opslaan" + +#. Write the info: +#: ex_cmds.c:2081 +#, c-format +msgid "# This viminfo file was generated by Vim %s.\n" +msgstr "# Dit viminfo-bestand is aangemaakt door Vim %s.\n" + +#: ex_cmds.c:2083 +#, c-format +msgid "" +"# You may edit it if you're careful!\n" +"\n" +msgstr "" +"# Bewerken is toegestaan, maar doe het met aandacht!\n" +"\n" + +#: ex_cmds.c:2085 +#, c-format +msgid "# Value of 'encoding' when this file was written\n" +msgstr "# Waarde van 'encoding' bij het opslaan van dit bestand\n" + +#: ex_cmds.c:2185 +msgid "Illegal starting char" +msgstr "Ongeldig startteken" + +#: ex_cmds.c:2551 +#: ex_cmds2.c:1478 +msgid "Save As" +msgstr "Opslaan als" + +#: ex_cmds.c:2628 +msgid "Write partial file?" +msgstr "Gedeeltelijk bestand opslaan?" + +#: ex_cmds.c:2635 +msgid "E140: Use ! to write partial buffer" +msgstr "E140: gebruik ! om gedeeltelijk buffer op te slaan" + +#: ex_cmds.c:2777 +#, c-format +msgid "Overwrite existing file \"%s\"?" +msgstr "Bestaand bestand \"%s\" overschrijven?" + +#: ex_cmds.c:2820 +#, c-format +msgid "Swap file \"%s\" exists, overwrite anyway?" +msgstr "Wisselbestand \"%s\" bestaat, toch overschrijven?" + +#: ex_cmds.c:2833 +#, c-format +msgid "E768: Swap file exists: %s (:silent! overrides)" +msgstr "E768: wisselbestand bestaat: %s (:silent! overschrijft)" + +#: ex_cmds.c:2901 +#, c-format +msgid "E141: No file name for buffer %ld" +msgstr "E141: buffer %ld heeft geen bestandsnaam" + +#: ex_cmds.c:2940 +msgid "E142: File not written: Writing is disabled by 'write' option" +msgstr "E142: bestand is niet opgeslagen: opslaan is uitgeschakeld door 'write'-optie" + +#: ex_cmds.c:2970 +#, c-format +msgid "" +"'readonly' option is set for \"%s\".\n" +"Do you wish to write anyway?" +msgstr "" +"'alleen-lezen'-optie is inschakeld voor \"%s\".\n" +"Toch opslaan?" + +#: ex_cmds.c:2973 +#, c-format +msgid "" +"File permissions of \"%s\" are read-only.\n" +"It may still be possible to write it.\n" +"Do you wish to try?" +msgstr "" +"Bestandsrechten van \"%s\" zijn alleen-lezen.\n" +"Mogelijk kan er toch naar weggeschreven worden.\n" +"Proberen op te slaan?" + +#: ex_cmds.c:2990 +#, c-format +msgid "E505: \"%s\" is read-only (add ! to override)" +msgstr "E505: \"%s\" is alleen-lezen (voeg ! toe om te overschrijven)" + +#: ex_cmds.c:3177 +msgid "Edit File" +msgstr "Bestand bewerken" + +#: ex_cmds.c:3860 +#, c-format +msgid "E143: Autocommands unexpectedly deleted new buffer %s" +msgstr "E143: 'Autocommands' hebben het nieuwe buffer %s onverwacht verwijderd" + +#: ex_cmds.c:4076 +msgid "E144: non-numeric argument to :z" +msgstr "E144: niet-numeriek argument voor :z" + +#: ex_cmds.c:4175 +msgid "E145: Shell commands not allowed in rvim" +msgstr "E145: in rvim zijn shell-opdrachten zijn niet toegestaan" + +#: ex_cmds.c:4276 +msgid "E146: Regular expressions can't be delimited by letters" +msgstr "E146: reguliere expressies kunnen niet begrensd worden door letters" + +#: ex_cmds.c:4736 +#, c-format +msgid "replace with %s (y/n/a/q/l/^E/^Y)?" +msgstr "vervang door %s (y/n/a/q/l/^E/^Y)?" + +#: ex_cmds.c:5181 +msgid "(Interrupted) " +msgstr "(Onderbroken) " + +#: ex_cmds.c:5186 +msgid "1 match" +msgstr "1 overeenkomst" + +#: ex_cmds.c:5186 +msgid "1 substitution" +msgstr "1 vervanging" + +#: ex_cmds.c:5189 +#, c-format +msgid "%ld matches" +msgstr "%ld overeenkomsten" + +#: ex_cmds.c:5189 +#, c-format +msgid "%ld substitutions" +msgstr "%ld vervangingen" + +#: ex_cmds.c:5194 +msgid " on 1 line" +msgstr " op 1 regel" + +#: ex_cmds.c:5197 +#, c-format +msgid " on %ld lines" +msgstr " op %ld regels" + +#: ex_cmds.c:5244 +msgid "E147: Cannot do :global recursive" +msgstr "E147: kan :global niet recursief uitvoeren" + +#: ex_cmds.c:5277 +msgid "E148: Regular expression missing from global" +msgstr "E148: reguliere expressies ontbreken bij global" + +#: ex_cmds.c:5326 +#, c-format +msgid "Pattern found in every line: %s" +msgstr "Patroon aangetroffen in iedere regel: %s" + +#: ex_cmds.c:5413 +#, c-format +msgid "" +"\n" +"# Last Substitute String:\n" +"$" +msgstr "" +"\n" +"# Laatst vervangingsstring:\n" +"$" + +#: ex_cmds.c:5526 +msgid "E478: Don't panic!" +msgstr "E478: geen paniek!" + +#: ex_cmds.c:5572 +#, c-format +msgid "E661: Sorry, no '%s' help for %s" +msgstr "E661: helaas, geen '%s'-hulp voor %s" + +#: ex_cmds.c:5575 +#, c-format +msgid "E149: Sorry, no help for %s" +msgstr "E149: helaas, geen hulp voor %s" + +#: ex_cmds.c:5617 +#, c-format +msgid "Sorry, help file \"%s\" not found" +msgstr "helaas, hulpbestand \"%s\" is niet gevonden" + +#: ex_cmds.c:6195 +#, c-format +msgid "E150: Not a directory: %s" +msgstr "E150: geen map: %s" + +#: ex_cmds.c:6338 +#, c-format +msgid "E152: Cannot open %s for writing" +msgstr "E152: kan %s niet openen om naar te schrijven" + +#: ex_cmds.c:6375 +#, c-format +msgid "E153: Unable to open %s for reading" +msgstr "E153: kan %s niet openen om uit te lezen" + +#: ex_cmds.c:6411 +#, c-format +msgid "E670: Mix of help file encodings within a language: %s" +msgstr "E670: mengelmoes van hulpbestandcoderingen binnen een taal: %s" + +#: ex_cmds.c:6489 +#, c-format +msgid "E154: Duplicate tag \"%s\" in file %s/%s" +msgstr "E154: dubbele tag \"%s\" in bestand %s/%s" + +#: ex_cmds.c:6625 +#, c-format +msgid "E160: Unknown sign command: %s" +msgstr "E160: onbekende opdracht voor margetekens: %s" + +#: ex_cmds.c:6642 +msgid "E156: Missing sign name" +msgstr "E156: ontbrekende naam margeteken" + +#: ex_cmds.c:6688 +msgid "E612: Too many signs defined" +msgstr "E612: teveel margetekens gedefinieerd" + +#: ex_cmds.c:6756 +#, c-format +msgid "E239: Invalid sign text: %s" +msgstr "E239: ongeldige tekst margeteken: %s" + +#: ex_cmds.c:6787 +#: ex_cmds.c:6962 +#, c-format +msgid "E155: Unknown sign: %s" +msgstr "E155: onbekend margeteken: %s" + +#: ex_cmds.c:6820 +msgid "E159: Missing sign number" +msgstr "E159: ontbrekend nummer margeteken" + +#: ex_cmds.c:6902 +#, c-format +msgid "E158: Invalid buffer name: %s" +msgstr "E158: ongeldige buffernaam: %s" + +#: ex_cmds.c:6941 +#, c-format +msgid "E157: Invalid sign ID: %ld" +msgstr "E157: ongeldige id margeteken: %ld" + +#: ex_cmds.c:7011 +msgid " (NOT FOUND)" +msgstr " (NIET GEVONDEN)" + +#: ex_cmds.c:7013 +msgid " (not supported)" +msgstr "(niet ondersteund)" + +#: ex_cmds.c:7137 +msgid "[Deleted]" +msgstr "[Verwijderd]" + +#: ex_cmds2.c:138 +msgid "Entering Debug mode. Type \"cont\" to continue." +msgstr "Debug-modus gestart. Typ \"cont\" om verder te gaan." + +#: ex_cmds2.c:142 +#: ex_docmd.c:1094 +#, c-format +msgid "line %ld: %s" +msgstr "regel %ld: %s" + +#: ex_cmds2.c:144 +#, c-format +msgid "cmd: %s" +msgstr "cmd: %s" + +#: ex_cmds2.c:344 +#, c-format +msgid "Breakpoint in \"%s%s\" line %ld" +msgstr "'Breakpoint' in \"%s%s\" regel %ld" + +#: ex_cmds2.c:656 +#, c-format +msgid "E161: Breakpoint not found: %s" +msgstr "E161: 'Breakpoint' niet gevonden: %s" + +#: ex_cmds2.c:692 +msgid "No breakpoints defined" +msgstr "Geen 'breakpoints' opgegeven" + +#: ex_cmds2.c:697 +#, c-format +msgid "%3d %s %s line %ld" +msgstr "%3d %s %s regel %ld" + +#: ex_cmds2.c:1095 +msgid "E750: First use \":profile start {fname}\"" +msgstr "E750: gebruik eerst \":profile start {fname}\"" + +#: ex_cmds2.c:1503 +#, c-format +msgid "Save changes to \"%s\"?" +msgstr "veranderingen opslaan in \"%s\"?" + +#: ex_cmds2.c:1505 +#: ex_docmd.c:10880 +msgid "Untitled" +msgstr "naamloos" + +#: ex_cmds2.c:1634 +#, c-format +msgid "E162: No write since last change for buffer \"%s\"" +msgstr "E162: niets opgeslagen sinds laatste wijziging van buffer \"%s\"" + +#: ex_cmds2.c:1705 +msgid "Warning: Entered other buffer unexpectedly (check autocommands)" +msgstr "Waarschuwing: onverwacht ander buffer binnengegaan (controleer 'autocommands')" + +#: ex_cmds2.c:2149 +msgid "E163: There is only one file to edit" +msgstr "E163: slechts een bestand beschikbaar voor bewerking" + +#: ex_cmds2.c:2151 +msgid "E164: Cannot go before first file" +msgstr "E164: kan niet verder terug dan eerste bestand" + +#: ex_cmds2.c:2153 +msgid "E165: Cannot go beyond last file" +msgstr "E165: kan niet verder dan laatste bestand" + +#: ex_cmds2.c:2583 +#, c-format +msgid "E666: compiler not supported: %s" +msgstr "E666: compiler niet ondersteund: %s" + +#: ex_cmds2.c:2684 +#, c-format +msgid "Searching for \"%s\" in \"%s\"" +msgstr "Naar \"%s\" in \"%s\" zoeken" + +#: ex_cmds2.c:2711 +#, c-format +msgid "Searching for \"%s\"" +msgstr "Naar \"%s\" zoeken" + +#: ex_cmds2.c:2737 +#, c-format +msgid "not found in 'runtimepath': \"%s\"" +msgstr "niet gevonden in 'runtimepath': \"%s\"" + +#: ex_cmds2.c:2772 +msgid "Source Vim script" +msgstr "Vim-script laden" + +#: ex_cmds2.c:2962 +#, c-format +msgid "Cannot source a directory: \"%s\"" +msgstr "kan geen map laden: \"%s\"" + +#: ex_cmds2.c:3019 +#, c-format +msgid "could not source \"%s\"" +msgstr "kan \"%s\" niet laden" + +#: ex_cmds2.c:3021 +#, c-format +msgid "line %ld: could not source \"%s\"" +msgstr "regel %ld: kan \"%s\" niet laden" + +#: ex_cmds2.c:3037 +#, c-format +msgid "sourcing \"%s\"" +msgstr "\"%s\" laden" + +#: ex_cmds2.c:3039 +#, c-format +msgid "line %ld: sourcing \"%s\"" +msgstr "regel %ld: \"%s\" laden" + +#: ex_cmds2.c:3231 +#, c-format +msgid "finished sourcing %s" +msgstr "laden van %s afgerond" + +#: ex_cmds2.c:3315 +msgid "modeline" +msgstr "modusregel" + +#: ex_cmds2.c:3317 +msgid "--cmd argument" +msgstr "argument van --cmd" + +#: ex_cmds2.c:3319 +msgid "-c argument" +msgstr "argument van -c" + +#: ex_cmds2.c:3321 +msgid "environment variable" +msgstr "omgevingsvariabele" + +#: ex_cmds2.c:3323 +msgid "error handler" +msgstr "foutafhandeling" + +#: ex_cmds2.c:3615 +msgid "W15: Warning: Wrong line separator, ^M may be missing" +msgstr "W15: waarschuwing: ongeldige regelscheiding, ^M kan ontbreken" + +#: ex_cmds2.c:3748 +msgid "E167: :scriptencoding used outside of a sourced file" +msgstr "E167: :scriptencoding buiten een geladen bestand gebruikt" + +#: ex_cmds2.c:3781 +msgid "E168: :finish used outside of a sourced file" +msgstr "E168: :finish buiten een geladen bestand gebruikt" + +#: ex_cmds2.c:4103 +#, c-format +msgid "Current %slanguage: \"%s\"" +msgstr "Huidige %s-taal: \"%s\"" + +#: ex_cmds2.c:4120 +#, c-format +msgid "E197: Cannot set language to \"%s\"" +msgstr "E197: taal kan niet ingesteld worden op \"%s\"" + +#: ex_docmd.c:639 +msgid "Entering Ex mode. Type \"visual\" to go to Normal mode." +msgstr "Ex-modus betreden. Typ \"visual\" om naar de Normaal-modus te gaan." + +#: ex_docmd.c:694 +msgid "E501: At end-of-file" +msgstr "E501: bij bestandseinde" + +#: ex_docmd.c:793 +msgid "E169: Command too recursive" +msgstr "E169: opdracht te recursief" + +#: ex_docmd.c:1372 +#, c-format +msgid "E605: Exception not caught: %s" +msgstr "E605: uitzondering niet afgevangen: %s" + +#: ex_docmd.c:1460 +msgid "End of sourced file" +msgstr "Einde van geladen bestand" + +#: ex_docmd.c:1461 +msgid "End of function" +msgstr "Einde van functie" + +#: ex_docmd.c:2109 +msgid "E464: Ambiguous use of user-defined command" +msgstr "E464: dubbelzinnig gebruik van gebruikergedefinieerde opdracht" + +#: ex_docmd.c:2123 +msgid "E492: Not an editor command" +msgstr "E492: geen editor-opdracht" + +#: ex_docmd.c:2255 +msgid "E493: Backwards range given" +msgstr "E493: Teruggaand bereik opgegeven" + +#: ex_docmd.c:2259 +msgid "Backwards range given, OK to swap" +msgstr "Teruggaand bereik opgegeven, wisselen is toegestaan" + +#: ex_docmd.c:2322 +msgid "E494: Use w or w>>" +msgstr "E494: w of w>> gebruiken" + +#: ex_docmd.c:4095 +msgid "E319: Sorry, the command is not available in this version" +msgstr "E319: Helaas, in deze versie is de opdracht niet beschikbaar" + +#: ex_docmd.c:4444 +msgid "E172: Only one file name allowed" +msgstr "E172: slechts een bestandsnaam toegestaan" + +#: ex_docmd.c:5056 +msgid "1 more file to edit. Quit anyway?" +msgstr "1 bestand wacht nog op bewerking. Toch stoppen?" + +#: ex_docmd.c:5059 +#, c-format +msgid "%d more files to edit. Quit anyway?" +msgstr "%d bestanden wachten nog op bewerking. Toch stoppen?" + +#: ex_docmd.c:5066 +msgid "E173: 1 more file to edit" +msgstr "E173: 1 bestand wacht op bewerking" + +#: ex_docmd.c:5068 +#, c-format +msgid "E173: %ld more files to edit" +msgstr "E173: %ld bestanden wachten op bewerking" + +#: ex_docmd.c:5162 +msgid "E174: Command already exists: add ! to replace it" +msgstr "E174: opdracht bestaat al: voeg ! toe om het te vervangen" + +#: ex_docmd.c:5284 +msgid "" +"\n" +" Name Args Range Complete Definition" +msgstr "" +"\n" +" Naam Args Berk. Compleet Definitie" + +#: ex_docmd.c:5377 +msgid "No user-defined commands found" +msgstr "Geen gebruikergedefinieerde opdrachten gevonden" + +#: ex_docmd.c:5409 +msgid "E175: No attribute specified" +msgstr "E175: geen attribute opgegeven" + +#: ex_docmd.c:5461 +msgid "E176: Invalid number of arguments" +msgstr "E176: ongeldig aantal argumenten" + +#: ex_docmd.c:5476 +msgid "E177: Count cannot be specified twice" +msgstr "E177: aantal kan niet tweemaal worden opgegeven" + +#: ex_docmd.c:5486 +msgid "E178: Invalid default value for count" +msgstr "E178: ongeldige standaardwaarde voor aantal" + +#: ex_docmd.c:5514 +msgid "E179: argument required for -complete" +msgstr "E179: argument vereist voor -complete" + +#: ex_docmd.c:5526 +#, c-format +msgid "E181: Invalid attribute: %s" +msgstr "E181: ongeldig attribute: %s" + +#: ex_docmd.c:5572 +msgid "E182: Invalid command name" +msgstr "E182: ongeldige opdrachtnaam" + +#: ex_docmd.c:5587 +msgid "E183: User defined commands must start with an uppercase letter" +msgstr "E183: door gebruiker gedefinieerde opdrachten moet een een hoofdletter beginnen" + +#: ex_docmd.c:5655 +#, c-format +msgid "E184: No such user-defined command: %s" +msgstr "E184: deze door gebruiker gedefinieerde opdracht bestaat niet: %s" + +#: ex_docmd.c:6207 +#, c-format +msgid "E180: Invalid complete value: %s" +msgstr "E180: ongeldige voltooiingswaarde: %s" + +#: ex_docmd.c:6218 +msgid "E468: Completion argument only allowed for custom completion" +msgstr "E468: argument voor voltooiing alleen toegestaan bij aangepaste voltooiing" + +#: ex_docmd.c:6226 +msgid "E467: Custom completion requires a function argument" +msgstr "E467: aangepaste voltooiing vereist een functieargument" + +#: ex_docmd.c:6262 +msgid "unknown" +msgstr "onbekend" + +#: ex_docmd.c:6266 +#, c-format +msgid "E185: Cannot find color scheme %s" +msgstr "E185: kan kleurenschema %s niet vinden" + +#: ex_docmd.c:6274 +msgid "Greetings, Vim user!" +msgstr "Gegroet, Vim-gebruiker!" + +#: ex_docmd.c:6492 +msgid "E784: Cannot close last tab page" +msgstr "E784: laatste tabpagina kan niet afgesloten worden" + +#: ex_docmd.c:6534 +msgid "Already only one tab page" +msgstr "Reeds beperkt tot één tabpagina" + +#: ex_docmd.c:7221 +msgid "Edit File in new window" +msgstr "Bestand in nieuw venster bewerken" + +#: ex_docmd.c:7347 +#, c-format +msgid "Tab page %d" +msgstr "Tabpagina %d" + +#: ex_docmd.c:7739 +msgid "No swap file" +msgstr "Geen wisselbestand" + +#: ex_docmd.c:7844 +msgid "Append File" +msgstr "Bestand toevoegen" + +#: ex_docmd.c:7943 +msgid "E747: Cannot change directory, buffer is modified (add ! to override)" +msgstr "E747: kan niet van map veranderen, buffer is gewijzigd (voeg ! toe om te forceren)" + +#: ex_docmd.c:7952 +msgid "E186: No previous directory" +msgstr "E186: geen voorgaande map" + +#: ex_docmd.c:8033 +msgid "E187: Unknown" +msgstr "E187: onbekend" + +#: ex_docmd.c:8128 +msgid "E465: :winsize requires two number arguments" +msgstr "E465: :winsize vereist twee getallen als argument" + +#: ex_docmd.c:8190 +#, c-format +msgid "Window position: X %d, Y %d" +msgstr "Vensterpositie: X %d, Y %d" + +#: ex_docmd.c:8195 +msgid "E188: Obtaining window position not implemented for this platform" +msgstr "E188: verkrijgen van vensterpositie is voor dit platform niet geïmplementeerd" + +#: ex_docmd.c:8205 +msgid "E466: :winpos requires two number arguments" +msgstr "E466: :winpos vereist twee getallen als argument" + +#: ex_docmd.c:8565 +msgid "Save Redirection" +msgstr "'Redirection' opslaan" + +#: ex_docmd.c:8796 +msgid "Save View" +msgstr "Beeld opslaan" + +#: ex_docmd.c:8797 +msgid "Save Session" +msgstr "Sessie opslaan" + +#: ex_docmd.c:8799 +msgid "Save Setup" +msgstr "Instellingen opslaan" + +#: ex_docmd.c:8955 +#, c-format +msgid "E739: Cannot create directory: %s" +msgstr "E739: kan map %s niet aanmaken" + +#: ex_docmd.c:8984 +#, c-format +msgid "E189: \"%s\" exists (add ! to override)" +msgstr "E189: \"%s\" bestaat al (voeg ! toe om te forceren)" + +#: ex_docmd.c:8989 +#, c-format +msgid "E190: Cannot open \"%s\" for writing" +msgstr "E190: \"%s\" kan niet worden beschreven" + +#. set mark +#: ex_docmd.c:9013 +msgid "E191: Argument must be a letter or forward/backward quote" +msgstr "E191: argument moet een letter zijn of een aanhaalteken, voor of achterwaarts" + +#: ex_docmd.c:9060 +msgid "E192: Recursive use of :normal too deep" +msgstr "E192: recursief gebruik van :normal gaat te diep" + +#: ex_docmd.c:9659 +msgid "E809: #< is not available without the +eval feature" +msgstr "E809: #< is zonder de +eval-functionaliteit niet beschikbaar" + +#: ex_docmd.c:9668 +msgid "E194: No alternate file name to substitute for '#'" +msgstr "E194: er is geen wisselende bestandsnaam beschikbaar om '#' te vervangen" + +#: ex_docmd.c:9709 +msgid "E495: no autocommand file name to substitute for \"\"" +msgstr "E495: er is geen 'autocommand'-bestandsnaam om \"\" te vervangen" + +#: ex_docmd.c:9718 +msgid "E496: no autocommand buffer number to substitute for \"\"" +msgstr "E496: er is geen 'autocommand'-buffernummer om \"\" te vervangen" + +#: ex_docmd.c:9729 +msgid "E497: no autocommand match name to substitute for \"\"" +msgstr "E497: er is geen 'autocommand'-naamovereenkomst om \"\" te vervangen" + +#: ex_docmd.c:9739 +msgid "E498: no :source file name to substitute for \"\"" +msgstr "E498: er is geen :source-bestandsnaam om \"\" te vervangen" + +#: ex_docmd.c:9781 +#, no-c-format +msgid "E499: Empty file name for '%' or '#', only works with \":p:h\"" +msgstr "E499: lege bestandsnaam voor '%' of '#', werkt alleen samen met \":p:h\"" + +#: ex_docmd.c:9783 +msgid "E500: Evaluates to an empty string" +msgstr "E500: resulteert in een lege string" + +#: ex_docmd.c:10860 +msgid "E195: Cannot open viminfo file for reading" +msgstr "E195: het 'viminfo'-bestand kan niet worden gelezen" + +#: ex_docmd.c:11048 +msgid "E196: No digraphs in this version" +msgstr "E196: deze versie bevat geen 'digraphs'" + +#: ex_eval.c:441 +msgid "E608: Cannot :throw exceptions with 'Vim' prefix" +msgstr "E608: :throw exceptions met 'Vim' als voorvoegsel zijn niet mogelijk" + +#. always scroll up, don't overwrite +#: ex_eval.c:534 +#, c-format +msgid "Exception thrown: %s" +msgstr "Geworpen uitzondering: %s" + +#: ex_eval.c:588 +#, c-format +msgid "Exception finished: %s" +msgstr "Afgeronde uitzondering: %s" + +#: ex_eval.c:589 +#, c-format +msgid "Exception discarded: %s" +msgstr "Afgedankte uitzondering: %s" + +#: ex_eval.c:635 +#: ex_eval.c:687 +#, c-format +msgid "%s, line %ld" +msgstr "%s, regel %ld" + +#. always scroll up, don't overwrite +#: ex_eval.c:657 +#, c-format +msgid "Exception caught: %s" +msgstr "Gevangen uitzondering: %s" + +#: ex_eval.c:737 +#, c-format +msgid "%s made pending" +msgstr "%s aanhanging gemaakt" + +#: ex_eval.c:740 +#, c-format +msgid "%s resumed" +msgstr "%s voortgezet" + +#: ex_eval.c:744 +#, c-format +msgid "%s discarded" +msgstr "%s afgedankt" + +#: ex_eval.c:771 +msgid "Exception" +msgstr "Uitzondering" + +#: ex_eval.c:777 +msgid "Error and interrupt" +msgstr "Fout en onderbreken" + +#: ex_eval.c:779 +#: gui.c:4875 +#: gui_xmdlg.c:689 +#: gui_xmdlg.c:808 +#: os_mswin.c:597 +msgid "Error" +msgstr "Fout" + +#. if (pending & CSTP_INTERRUPT) +#: ex_eval.c:781 +msgid "Interrupt" +msgstr "Onderbreken" + +#: ex_eval.c:873 +msgid "E579: :if nesting too deep" +msgstr "E579: te diepe :if-nesting" + +#: ex_eval.c:910 +msgid "E580: :endif without :if" +msgstr "E580: :endif zonder :if" + +#: ex_eval.c:955 +msgid "E581: :else without :if" +msgstr "E581: :else zonder :if" + +#: ex_eval.c:958 +msgid "E582: :elseif without :if" +msgstr "E582: :elseif zonder :if" + +#: ex_eval.c:965 +msgid "E583: multiple :else" +msgstr "E583: meerdere :else" + +#: ex_eval.c:968 +msgid "E584: :elseif after :else" +msgstr "E584: :elseif na :else" + +#: ex_eval.c:1035 +msgid "E585: :while/:for nesting too deep" +msgstr "E585: te diepe :while/:for-nesting" + +#: ex_eval.c:1133 +msgid "E586: :continue without :while or :for" +msgstr "E586: :continue zonder :while of :for" + +#: ex_eval.c:1172 +msgid "E587: :break without :while or :for" +msgstr "E587: :break zonder :while of :for" + +#: ex_eval.c:1222 +msgid "E732: Using :endfor with :while" +msgstr "E732: gebruik van :endfor met :while" + +#: ex_eval.c:1224 +msgid "E733: Using :endwhile with :for" +msgstr "E733: gebruik van :endwhile met :for" + +#: ex_eval.c:1399 +msgid "E601: :try nesting too deep" +msgstr "E601: te diepe :try-nesting" + +#: ex_eval.c:1479 +msgid "E603: :catch without :try" +msgstr "E603: :catch zonder :try" + +#. Give up for a ":catch" after ":finally" and ignore it. +#. * Just parse. +#: ex_eval.c:1498 +msgid "E604: :catch after :finally" +msgstr "E604: :catch na :finally" + +#: ex_eval.c:1632 +msgid "E606: :finally without :try" +msgstr "E606: :finally zonder :try" + +#. Give up for a multiple ":finally" and ignore it. +#: ex_eval.c:1652 +msgid "E607: multiple :finally" +msgstr "E607: meerdere :finally" + +#: ex_eval.c:1762 +msgid "E602: :endtry without :try" +msgstr "E602: :endtry zonder :try" + +#: ex_eval.c:2267 +msgid "E193: :endfunction not inside a function" +msgstr "E193: :endfunction niet binnen een functie" + +#: ex_getln.c:2010 +msgid "E788: Not allowed to edit another buffer now" +msgstr "E788: nu een andere buffer bewerken is niet toegestaan" + +#: ex_getln.c:2025 +msgid "E811: Not allowed to change buffer information now" +msgstr "E811: nu bufferinformatie wijzigen is niet toegestaan" + +#: ex_getln.c:3923 +msgid "tagname" +msgstr "tagnaam" + +#: ex_getln.c:3926 +msgid " kind file\n" +msgstr "soor bestand\n" + +#: ex_getln.c:5708 +msgid "'history' option is zero" +msgstr "'history'-optie is nul" + +#: ex_getln.c:5979 +#, c-format +msgid "" +"\n" +"# %s History (newest to oldest):\n" +msgstr "" +"\n" +"# %s Historie (jongste naar oudste):\n" + +#: ex_getln.c:5980 +msgid "Command Line" +msgstr "Opdrachtregel" + +#: ex_getln.c:5981 +msgid "Search String" +msgstr "Zoekstring" + +#: ex_getln.c:5982 +msgid "Expression" +msgstr "Expressie" + +#: ex_getln.c:5983 +msgid "Input Line" +msgstr "Invoerregel" + +#: ex_getln.c:6021 +msgid "E198: cmd_pchar beyond the command length" +msgstr "E198: cmd_pchar is langer dan toegestaan voor een opdracht" + +#: ex_getln.c:6222 +msgid "E199: Active window or buffer deleted" +msgstr "E199: actieve venster of buffer verwijderd" + +#: fileio.c:158 +msgid "E812: Autocommands changed buffer or buffer name" +msgstr "E812: buffer of buffernaam gewijzigd door autocommands" + +#: fileio.c:418 +msgid "Illegal file name" +msgstr "Ongeldige bestandsnaam" + +#: fileio.c:447 +#: fileio.c:601 +#: fileio.c:3542 +#: fileio.c:3593 +msgid "is a directory" +msgstr "is een map" + +#: fileio.c:449 +msgid "is not a file" +msgstr "is geen bestand" + +#: fileio.c:462 +msgid "is a device (disabled with 'opendevice' option)" +msgstr "is een apparaat (uitgeschakeld door optie 'opendevice'" + +#: fileio.c:642 +#: fileio.c:4848 +msgid "[New File]" +msgstr "[Nieuw bestand]" + +#: fileio.c:645 +msgid "[New DIRECTORY]" +msgstr "[Nieuwe MAP]" + +#: fileio.c:679 +#: fileio.c:682 +msgid "[File too big]" +msgstr "Bestand te groot" + +#: fileio.c:684 +msgid "[Permission Denied]" +msgstr "[Geen rechten]" + +#: fileio.c:817 +msgid "E200: *ReadPre autocommands made the file unreadable" +msgstr "E200: *ReadPre autocommands hebben het bestand niet-leesbaar gemaakt" + +#: fileio.c:819 +msgid "E201: *ReadPre autocommands must not change current buffer" +msgstr "E201: *ReadPre autocommands mogen huidige buffer niet wijzigen" + +#: fileio.c:840 +msgid "Vim: Reading from stdin...\n" +msgstr "Vim: lezen van standaardinvoer...\n" + +#: fileio.c:846 +msgid "Reading from stdin..." +msgstr "Lezen van standaardinvoer..." + +#. Re-opening the original file failed! +#: fileio.c:1145 +msgid "E202: Conversion made file unreadable!" +msgstr "E202: bestand niet-leesbaar gemaakt door conversatie" + +#: fileio.c:2400 +msgid "[fifo/socket]" +msgstr "[fifo/socket]" + +#: fileio.c:2407 +msgid "[fifo]" +msgstr "[fifo]" + +#: fileio.c:2414 +msgid "[socket]" +msgstr "[socket]" + +#: fileio.c:2422 +msgid "[character special]" +msgstr "[karakter speciaal]" + +#: fileio.c:2429 +#: netbeans.c:3848 +msgid "[RO]" +msgstr "[RO]" + +#: fileio.c:2439 +msgid "[CR missing]" +msgstr "[CR ontbreekt]" + +#: fileio.c:2444 +msgid "[long lines split]" +msgstr "[lange regels gesplitst]" + +#: fileio.c:2450 +#: fileio.c:4832 +msgid "[NOT converted]" +msgstr "[NIET omgezet]" + +#: fileio.c:2455 +#: fileio.c:4837 +msgid "[converted]" +msgstr "[omgezet]" + +#: fileio.c:2462 +#: fileio.c:4862 +msgid "[crypted]" +msgstr "[versleuteld]" + +#: fileio.c:2470 +#, c-format +msgid "[CONVERSION ERROR in line %ld]" +msgstr "[OMZETFOUT in regel %ld]" + +#: fileio.c:2476 +#, c-format +msgid "[ILLEGAL BYTE in line %ld]" +msgstr "[ONGELDIGE BYTE in regel %ld]" + +#: fileio.c:2483 +msgid "[READ ERRORS]" +msgstr "[LEESFOUTEN]" + +#: fileio.c:2775 +msgid "Can't find temp file for conversion" +msgstr "Tijdelijk bestand voor conversie ontbreekt" + +#: fileio.c:2782 +msgid "Conversion with 'charconvert' failed" +msgstr "Conversatie met 'charconvert' is mislukt" + +#: fileio.c:2785 +msgid "can't read output of 'charconvert'" +msgstr "uitvoer van 'charconvert' kan niet worden gelezen" + +#: fileio.c:2852 +msgid "E821: File is encrypted with unknown method" +msgstr "E821: bestand is met onbekende methode versleuteld" + +#: fileio.c:3387 +msgid "E676: No matching autocommands for acwrite buffer" +msgstr "E676: geen overeenkomende autocommands voor 'acwrite'-buffer" + +#: fileio.c:3422 +msgid "E203: Autocommands deleted or unloaded buffer to be written" +msgstr "E203: autocommands hebben buffer verwijderd of gelost die moest worden opgeslagen" + +#: fileio.c:3445 +msgid "E204: Autocommand changed number of lines in unexpected way" +msgstr "E204: autocommand heeft op onverwachte wijze het aantal regels gewijzigd" + +#: fileio.c:3485 +msgid "NetBeans disallows writes of unmodified buffers" +msgstr "Netbeans staat het opslaan van onveranderde buffers niet toe" + +#: fileio.c:3493 +msgid "Partial writes disallowed for NetBeans buffers" +msgstr "Deelopslag voor buffers van Netbeans niet toegestaan" + +#: fileio.c:3548 +#: fileio.c:3566 +msgid "is not a file or writable device" +msgstr "is geen bestand of schrijfbaar apparaat" + +#: fileio.c:3577 +msgid "writing to device disabled with 'opendevice' option" +msgstr "het schrijven naar apparaat is uitgeschakeld met optie 'opendevice'" + +#: fileio.c:3619 +#: netbeans.c:3913 +msgid "is read-only (add ! to override)" +msgstr "is alleen-lezen (voeg ! toe om te schrijven)" + +#: fileio.c:3983 +msgid "E506: Can't write to backup file (add ! to override)" +msgstr "E506: kan niet naar back-upbestand schrijven (voeg hiervoor ! toe)" + +#: fileio.c:3995 +msgid "E507: Close error for backup file (add ! to override)" +msgstr "E507: fout tijdens afsluiten van back-upbestand (voeg ! om toch af te sluiten)" + +#: fileio.c:3997 +msgid "E508: Can't read file for backup (add ! to override)" +msgstr "E508: kan bestand voor back-up niet lezen (voeg ! toe om toch te lezen)" + +#: fileio.c:4016 +msgid "E509: Cannot create backup file (add ! to override)" +msgstr "E509: kan back-upbestand niet aanmaken (voeg ! toe om dit toch aan te maken)" + +#: fileio.c:4118 +msgid "E510: Can't make backup file (add ! to override)" +msgstr "E510: kan back-upbestand niet maken (voeg ! toe om dit toch te maken)" + +#: fileio.c:4180 +msgid "E460: The resource fork would be lost (add ! to override)" +msgstr "E460: de afsplitsing van middelen zou verloren gaan (voeg ! toe om dit toch te doen)" + +#: fileio.c:4289 +msgid "E214: Can't find temp file for writing" +msgstr "E214: kan tijdelijk bestand voor wegschrijven niet vinden" + +#: fileio.c:4307 +msgid "E213: Cannot convert (add ! to write without conversion)" +msgstr "E213: kan niet omzetten (voeg ! toe om zonder omzetting op te slaan)" + +#: fileio.c:4342 +msgid "E166: Can't open linked file for writing" +msgstr "E166: kan niet schrijven naar gekoppeld bestand" + +#: fileio.c:4346 +msgid "E212: Can't open file for writing" +msgstr "E212: kan niet schrijven naar bestand" + +#: fileio.c:4648 +msgid "E667: Fsync failed" +msgstr "E667: fsync is mislukt" + +#: fileio.c:4687 +msgid "E512: Close failed" +msgstr "E512: Afsluiten is mislukt" + +#: fileio.c:4739 +msgid "E513: write error, conversion failed (make 'fenc' empty to override)" +msgstr "E513: schrijffout waarbij omzetting is mislukt (leeg 'fenc' om te overschrijven)" + +#: fileio.c:4744 +#, c-format +msgid "E513: write error, conversion failed in line %ld (make 'fenc' empty to override)" +msgstr "E513: schrijffout waarbij omzetting in regel %ld is mislukt (leeg 'fenc' om te overschrijven)" + +#: fileio.c:4753 +msgid "E514: write error (file system full?)" +msgstr "E514: schrijffout (is bestandssysteem vol?)" + +#: fileio.c:4821 +msgid " CONVERSION ERROR" +msgstr " OMZETTINGFOUT" + +#: fileio.c:4826 +#, c-format +msgid " in line %ld;" +msgstr " in regel %ld;" + +#: fileio.c:4843 +msgid "[Device]" +msgstr "[Apparaat]" + +#: fileio.c:4848 +msgid "[New]" +msgstr "[Nieuw]" + +#: fileio.c:4870 +msgid " [a]" +msgstr " [a]" + +#: fileio.c:4870 +msgid " appended" +msgstr " toegevoegd" + +#: fileio.c:4872 +msgid " [w]" +msgstr " [w]" + +#: fileio.c:4872 +msgid " written" +msgstr " opgeslagen" + +#: fileio.c:4927 +msgid "E205: Patchmode: can't save original file" +msgstr "E205: patch-modus: kan oorspronkelijke bestand niet opslaan" + +#: fileio.c:4950 +msgid "E206: patchmode: can't touch empty original file" +msgstr "E206: patch-modus: kan oorspronkelijk leeg bestand niet aanraken" + +#: fileio.c:4965 +msgid "E207: Can't delete backup file" +msgstr "E207: back-upbestand kan niet worden verwijderd" + +#: fileio.c:5031 +msgid "" +"\n" +"WARNING: Original file may be lost or damaged\n" +msgstr "" +"\n" +"WAARSCHUWING: oorspronkelijk bestand kan verloren gaan of beschadigen\n" + +#: fileio.c:5033 +msgid "don't quit the editor until the file is successfully written!" +msgstr "verlaat vim niet voordat het bestand volledig opgeslagen is!" + +#: fileio.c:5189 +msgid "[dos]" +msgstr "[dos]" + +#: fileio.c:5189 +msgid "[dos format]" +msgstr "[dos-format]" + +#: fileio.c:5196 +msgid "[mac]" +msgstr "[mac]" + +#: fileio.c:5196 +msgid "[mac format]" +msgstr "[mac-format]" + +#: fileio.c:5203 +msgid "[unix]" +msgstr "[unix]" + +#: fileio.c:5203 +msgid "[unix format]" +msgstr "[unix-format]" + +#: fileio.c:5236 +msgid "1 line, " +msgstr "1 regel, " + +#: fileio.c:5238 +#, c-format +msgid "%ld lines, " +msgstr "%ld regels, " + +#: fileio.c:5241 +msgid "1 character" +msgstr "1 teken" + +#: fileio.c:5245 +#, c-format +msgid "%lld characters" +msgstr "%lld tekens" + +#: fileio.c:5247 +#, c-format +msgid "%ld characters" +msgstr "%ld tekens" + +#: fileio.c:5259 +#: netbeans.c:3853 +msgid "[noeol]" +msgstr "[noeol]" + +#: fileio.c:5259 +#: netbeans.c:3854 +msgid "[Incomplete last line]" +msgstr "[Laatste regel onvolledig]" + +#. don't overwrite messages here +#. must give this prompt +#. don't use emsg() here, don't want to flush the buffers +#: fileio.c:5278 +msgid "WARNING: The file has been changed since reading it!!!" +msgstr "WAARSCHUWING: het bestand is na het laden gewijzigd!!!" + +#: fileio.c:5280 +msgid "Do you really want to write to it" +msgstr "Wilt u er zeker naar schrijven" + +#: fileio.c:6639 +#, c-format +msgid "E208: Error writing to \"%s\"" +msgstr "E208: schrijven naar \"%s\" is mislukt" + +#: fileio.c:6646 +#, c-format +msgid "E209: Error closing \"%s\"" +msgstr "E209: afsluiten van \"%s\" is mislukt" + +#: fileio.c:6649 +#, c-format +msgid "E210: Error reading \"%s\"" +msgstr "E210: lezen van \"%s\" is mislukt" + +#: fileio.c:6911 +msgid "E246: FileChangedShell autocommand deleted buffer" +msgstr "E246: buffer verwijderd door 'autocommand' FileChangedShell" + +#: fileio.c:6926 +#, c-format +msgid "E211: File \"%s\" no longer available" +msgstr "E211: bestand \"%s\" is niet meer beschikbaar" + +#: fileio.c:6941 +#, c-format +msgid "W12: Warning: File \"%s\" has changed and the buffer was changed in Vim as well" +msgstr "W12: waarschuwing: bestand \"%s\" en de buffer zijn gewijzigd in Vim " + +#: fileio.c:6942 +msgid "See \":help W12\" for more info." +msgstr "Lees \":help W12\" voor meer informatie." + +#: fileio.c:6946 +#, c-format +msgid "W11: Warning: File \"%s\" has changed since editing started" +msgstr "W11: waarschuwing: bestand \"%s\" is gewijzigd sinds het begin van het bewerken" + +#: fileio.c:6947 +msgid "See \":help W11\" for more info." +msgstr "Lees \":help W11\" voor meer informatie." + +#: fileio.c:6951 +#, c-format +msgid "W16: Warning: Mode of file \"%s\" has changed since editing started" +msgstr "W16: waarschuwing: rechten van bestand \"%s\" zijn gewijzigd sinds het begin van het bewerken" + +#: fileio.c:6952 +msgid "See \":help W16\" for more info." +msgstr "Lees \":help W16\" voor meer informatie" + +#: fileio.c:6967 +#, c-format +msgid "W13: Warning: File \"%s\" has been created after editing started" +msgstr "W13: waarschuwing: na het begin van het bewerken van bestand \"%s\" is deze ook elders aangemaakt" + +#: fileio.c:6997 +msgid "Warning" +msgstr "Waarschuwing" + +#: fileio.c:6998 +msgid "" +"&OK\n" +"&Load File" +msgstr "" +"&OK\n" +"Bestand &Laden" + +#: fileio.c:7121 +#, c-format +msgid "E462: Could not prepare for reloading \"%s\"" +msgstr "E462: het voorbereiden van \"%s\" voor het opnieuw laden is mislukt" + +#: fileio.c:7140 +#, c-format +msgid "E321: Could not reload \"%s\"" +msgstr "E321: kan \"%s\" niet opnieuw laden" + +#: fileio.c:7754 +msgid "--Deleted--" +msgstr "--Verwijderd--" + +#: fileio.c:7907 +#, c-format +msgid "auto-removing autocommand: %s " +msgstr "automatisch verwijderen 'autocommand': %s " + +#. the group doesn't exist +#: fileio.c:7953 +#, c-format +msgid "E367: No such group: \"%s\"" +msgstr "E367: groep \"%s\" bestaat niet" + +#: fileio.c:8100 +#, c-format +msgid "E215: Illegal character after *: %s" +msgstr "E215: ongeldig teken na *: %s" + +#: fileio.c:8112 +#, c-format +msgid "E216: No such event: %s" +msgstr "E216: onbekend 'event': %s" + +#: fileio.c:8114 +#, c-format +msgid "E216: No such group or event: %s" +msgstr "E216: onbekende groep of 'event': %s" + +#. Highlight title +#: fileio.c:8325 +msgid "" +"\n" +"--- Auto-Commands ---" +msgstr "" +"\n" +"--- Auto-Commands ---" + +#: fileio.c:8561 +#, c-format +msgid "E680: : invalid buffer number " +msgstr "E680: : ongeldig buffernummer " + +#: fileio.c:8658 +msgid "E217: Can't execute autocommands for ALL events" +msgstr "E217: autocommands kunnen niet voor alle 'events' worden uitgevoerd" + +#: fileio.c:8681 +msgid "No matching autocommands" +msgstr "Geen overeenkomstige autocommands" + +#: fileio.c:9130 +msgid "E218: autocommand nesting too deep" +msgstr "E218: hierarchie van aanroepen autocommands te diep" + +#: fileio.c:9483 +#, c-format +msgid "%s Auto commands for \"%s\"" +msgstr "%s 'Auto commands' voor \"%s\"" + +#: fileio.c:9493 +#, c-format +msgid "Executing %s" +msgstr "%s uitvoeren" + +#: fileio.c:9562 +#, c-format +msgid "autocommand %s" +msgstr "autocommand %s" + +#: fileio.c:10252 +msgid "E219: Missing {." +msgstr "E219: ontbrekende {." + +#: fileio.c:10254 +msgid "E220: Missing }." +msgstr "E220: ontbrekende }." + +#: fold.c:68 +msgid "E490: No fold found" +msgstr "E490: geen vouw gevonden" + +#: fold.c:593 +msgid "E350: Cannot create fold with current 'foldmethod'" +msgstr "E350: kan geen vouw aanmaken met huidige 'vouwmethode'" + +#: fold.c:595 +msgid "E351: Cannot delete fold with current 'foldmethod'" +msgstr "E351: kan geen vouw verwijderen met huidige 'vouwmethode'" + +#: fold.c:1998 +#, c-format +msgid "+--%3ld lines folded " +msgstr "+--%3ld regels gevouwen " + +#: getchar.c:252 +msgid "E222: Add to read buffer" +msgstr "E222: aan leesbuffer toevoegen" + +#: getchar.c:2418 +msgid "E223: recursive mapping" +msgstr "E223: recursieve toewijzing" + +#: getchar.c:3404 +#, c-format +msgid "E224: global abbreviation already exists for %s" +msgstr "E224: algemene afkorting bestaat al voor %s" + +#: getchar.c:3407 +#, c-format +msgid "E225: global mapping already exists for %s" +msgstr "E225: er bestaat al een algemene toewijzing voor %s" + +#: getchar.c:3539 +#, c-format +msgid "E226: abbreviation already exists for %s" +msgstr "E226: er bestaat al een afkorting voor %s" + +#: getchar.c:3542 +#, c-format +msgid "E227: mapping already exists for %s" +msgstr "E227: toewijzing bestaat al voor %s" + +#: getchar.c:3610 +msgid "No abbreviation found" +msgstr "Geen afkorting gevonden" + +#: getchar.c:3612 +msgid "No mapping found" +msgstr "Geen toewijzing gevonden" + +#: getchar.c:4725 +msgid "E228: makemap: Illegal mode" +msgstr "E228: makemap: ongeldige modus" + +#: gui.c:226 +msgid "E229: Cannot start the GUI" +msgstr "E229: de GUI kan niet worden gestart" + +#: gui.c:361 +#, c-format +msgid "E230: Cannot read from \"%s\"" +msgstr "E230: kan niet gelezen worden uit \"%s\"" + +#: gui.c:487 +msgid "E665: Cannot start GUI, no valid font found" +msgstr "E665: de GUI kan niet gestart worden, er is geen geldig lettertype gevonden" + +#: gui.c:492 +msgid "E231: 'guifontwide' invalid" +msgstr "E231: 'guifontwide' ongeldig" + +#: gui.c:598 +msgid "E599: Value of 'imactivatekey' is invalid" +msgstr "E599: waarde van 'imactivatekey' is ongeldig" + +#: gui.c:4528 +#, c-format +msgid "E254: Cannot allocate color %s" +msgstr "E254: kan de kleur %s niet reserveren" + +#: gui.c:5112 +msgid "No match at cursor, finding next" +msgstr "Op cursorpositie is geen overeenkomst: de volgende zoeken" + +#: gui_at_fs.c:300 +msgid " " +msgstr " " + +#: gui_at_fs.c:1133 +#, c-format +msgid "E616: vim_SelFile: can't get font %s" +msgstr "E616: vim_SelFile: lettertype %s niet gevonden" + +#: gui_at_fs.c:2767 +msgid "E614: vim_SelFile: can't return to current directory" +msgstr "E614: vim_SelFile: teruggaan naar huidige map is niet mogelijk" + +#: gui_at_fs.c:2787 +msgid "Pathname:" +msgstr "Padnaam:" + +#: gui_at_fs.c:2793 +msgid "E615: vim_SelFile: can't get current directory" +msgstr "E615: vim_SelFile: vaststellen huidige map is niet mogelijk" + +#: gui_at_fs.c:2801 +#: gui_xmdlg.c:931 +msgid "OK" +msgstr "Ok" + +#: gui_at_fs.c:2801 +#: gui_gtk.c:2818 +#: gui_xmdlg.c:940 +msgid "Cancel" +msgstr "Annuleren" + +#: gui_at_sb.c:490 +msgid "Scrollbar Widget: Could not get geometry of thumb pixmap." +msgstr "Scrollbar-widget: vaststellen afmetingen van miniaturenkaart niet mogelijk." + +#: gui_athena.c:2160 +#: gui_motif.c:2588 +msgid "Vim dialog" +msgstr "Vim-dialoog" + +#: gui_beval.c:202 +#: gui_w32.c:4740 +msgid "E232: Cannot create BalloonEval with both message and callback" +msgstr "E232: aanmaken 'BalloonEval' met zowel een bericht als een 'callback' is niet mogelijk" + +#: gui_gtk.c:1694 +msgid "Vim dialog..." +msgstr "Vim-dialoog..." + +#: gui_gtk.c:2145 +#: message.c:3654 +msgid "" +"&Yes\n" +"&No\n" +"&Cancel" +msgstr "" +"&Ja\n" +"&Nee\n" +"&Annuleren" + +#: gui_gtk.c:2343 +msgid "Input _Methods" +msgstr "Invoer_wijzen" + +#: gui_gtk.c:2621 +#: gui_motif.c:3761 +msgid "VIM - Search and Replace..." +msgstr "VIM - zoeken en vervangen..." + +#: gui_gtk.c:2629 +#: gui_motif.c:3763 +msgid "VIM - Search..." +msgstr "VIM - zoeken..." + +#: gui_gtk.c:2661 +#: gui_motif.c:3872 +msgid "Find what:" +msgstr "Zoek naar:" + +#: gui_gtk.c:2679 +#: gui_motif.c:3905 +msgid "Replace with:" +msgstr "Vervang door:" + +#. whole word only button +#: gui_gtk.c:2711 +#: gui_motif.c:4026 +msgid "Match whole word only" +msgstr "Alleen volledig woord" + +#. match case button +#: gui_gtk.c:2722 +#: gui_motif.c:4038 +msgid "Match case" +msgstr "Hoofdlettergevoelig" + +#: gui_gtk.c:2732 +#: gui_motif.c:3977 +msgid "Direction" +msgstr "Richting" + +#. 'Up' and 'Down' buttons +#: gui_gtk.c:2744 +#: gui_motif.c:3990 +msgid "Up" +msgstr "Opwaarts" + +#: gui_gtk.c:2748 +#: gui_motif.c:3999 +msgid "Down" +msgstr "Neerwaarts" + +#: gui_gtk.c:2770 +#: gui_gtk.c:2772 +msgid "Find Next" +msgstr "Volgende zoeken" + +#: gui_gtk.c:2789 +#: gui_gtk.c:2791 +msgid "Replace" +msgstr "Vervangen" + +#: gui_gtk.c:2802 +#: gui_gtk.c:2804 +msgid "Replace All" +msgstr "Alles vervangen" + +#: gui_gtk_x11.c:2432 +msgid "Vim: Received \"die\" request from session manager\n" +msgstr "Vim: \"die\"-verzoek van sessiebeheerder ontvangen\n" + +#: gui_gtk_x11.c:3259 +msgid "Close" +msgstr "Sluiten" + +#: gui_gtk_x11.c:3260 +#: gui_w48.c:2374 +msgid "New tab" +msgstr "Nieuw tabblad" + +#: gui_gtk_x11.c:3261 +msgid "Open Tab..." +msgstr "Tabblad openen..." + +#: gui_gtk_x11.c:4092 +msgid "Vim: Main window unexpectedly destroyed\n" +msgstr "Vim: hoofdvenster onverwacht gesloten\n" + +#: gui_gtk_x11.c:4807 +msgid "Font Selection" +msgstr "Lettertypeselectie" + +#: gui_motif.c:2355 +msgid "&Filter" +msgstr "&Filter" + +#: gui_motif.c:2356 +#: gui_motif.c:3840 +msgid "&Cancel" +msgstr "&Annuleren" + +#: gui_motif.c:2357 +msgid "Directories" +msgstr "Mappen" + +#: gui_motif.c:2358 +msgid "Filter" +msgstr "Filter" + +#: gui_motif.c:2359 +msgid "&Help" +msgstr "&Hulp" + +#: gui_motif.c:2360 +msgid "Files" +msgstr "Bestanden" + +#: gui_motif.c:2361 +msgid "&OK" +msgstr "&Ok" + +#: gui_motif.c:2362 +msgid "Selection" +msgstr "Selectie" + +#: gui_motif.c:3792 +msgid "Find &Next" +msgstr "&Volgende zoeken" + +#: gui_motif.c:3807 +msgid "&Replace" +msgstr "Ve&rvangen" + +#: gui_motif.c:3818 +msgid "Replace &All" +msgstr "&Alles vervangen" + +#: gui_motif.c:3829 +msgid "&Undo" +msgstr "&Herstellen" + +#: gui_riscos.c:953 +#, c-format +msgid "E610: Can't load Zap font '%s'" +msgstr "E610: Zap-lettertype '%s' kan niet worden geladen" + +#: gui_riscos.c:1052 +#, c-format +msgid "E611: Can't use font %s" +msgstr "E611: lettertype %s kan niet worden gebruikt" + +#: gui_riscos.c:3282 +msgid "" +"\n" +"Sending message to terminate child process.\n" +msgstr "" +"\n" +"Bericht versturen om kindproces te beëindigen.\n" + +#: gui_w32.c:1178 +#, c-format +msgid "E671: Cannot find window title \"%s\"" +msgstr "E671: kan venstertitel \"%s\" niet vinden" + +#: gui_w32.c:1191 +#, c-format +msgid "E243: Argument not supported: \"-%s\"; Use the OLE version." +msgstr "E243: argument niet ondersteund: \"-%s\"; gebruik de OLE-versie." + +#: gui_w32.c:1432 +msgid "E672: Unable to open window inside MDI application" +msgstr "E672: kan geen venster binnen MDI-applicatie openen" + +#: gui_w48.c:2373 +msgid "Close tab" +msgstr "Tabblad sluiten" + +#: gui_w48.c:2376 +msgid "Open tab..." +msgstr "Tabblad openen..." + +#: gui_w48.c:2632 +msgid "Find string (use '\\\\' to find a '\\')" +msgstr "Tekenreeks zoeken (gebruik '\\\\' om een '\\' te vinden)" + +#: gui_w48.c:2668 +msgid "Find & Replace (use '\\\\' to find a '\\')" +msgstr "Zoeken & vervangen (gebruik '\\\\' om een '\\' te vinden')" + +#. We fake this: Use a filter that doesn't select anything and a default +#. * file name that won't be used. +#: gui_w48.c:3462 +msgid "Not Used" +msgstr "Niet gebruikt" + +#: gui_w48.c:3463 +msgid "Directory\t*.nothing\n" +msgstr "Map\t*.niets\n" + +#: gui_x11.c:1545 +msgid "Vim E458: Cannot allocate colormap entry, some colors may be incorrect" +msgstr "E458: kan geen kleur toewijzen, sommige kleuren kunnen onjuist zijn" + +#: gui_x11.c:2137 +#, c-format +msgid "E250: Fonts for the following charsets are missing in fontset %s:" +msgstr "E250: lettertypen voor de volgende tekenverzamelingen ontbreken in verzameling %s:" + +#: gui_x11.c:2180 +#, c-format +msgid "E252: Fontset name: %s" +msgstr "E252: naam lettertypeverzameling: %s" + +#: gui_x11.c:2181 +#, c-format +msgid "Font '%s' is not fixed-width" +msgstr "Lettertype '%s' heeft geen vaste breedte" + +#: gui_x11.c:2200 +#, c-format +msgid "E253: Fontset name: %s\n" +msgstr "E253: naam lettertypeverzameling: %s\n" + +#: gui_x11.c:2201 +#, c-format +msgid "Font0: %s\n" +msgstr "Font0: %s\n" + +#: gui_x11.c:2202 +#, c-format +msgid "Font1: %s\n" +msgstr "Font1: %s\n" + +#: gui_x11.c:2203 +#, c-format +msgid "Font%ld width is not twice that of font0\n" +msgstr "Breedte font%ld is niet het dubbele van font0\n" + +#: gui_x11.c:2204 +#, c-format +msgid "Font0 width: %ld\n" +msgstr "Font0-breedte: %ld\n" + +#: gui_x11.c:2205 +#, c-format +msgid "" +"Font1 width: %ld\n" +"\n" +msgstr "" +"Font1-breedte: %ld\n" +"\n" + +#: gui_xmdlg.c:690 +#: gui_xmdlg.c:809 +msgid "Invalid font specification" +msgstr "Onjuiste specificatie van lettertype" + +#: gui_xmdlg.c:691 +#: gui_xmdlg.c:810 +msgid "&Dismiss" +msgstr "&Afwijzen" + +#: gui_xmdlg.c:700 +msgid "no specific match" +msgstr "geen specifieke overeenkomst" + +#: gui_xmdlg.c:909 +msgid "Vim - Font Selector" +msgstr "Vim - Lettertypekiezer" + +#: gui_xmdlg.c:978 +msgid "Name:" +msgstr "Naam:" + +#. create toggle button +#: gui_xmdlg.c:1018 +msgid "Show size in Points" +msgstr "Grootte in punten tonen" + +#: gui_xmdlg.c:1037 +msgid "Encoding:" +msgstr "Codering:" + +#: gui_xmdlg.c:1083 +msgid "Font:" +msgstr "Lettertype:" + +#: gui_xmdlg.c:1116 +msgid "Style:" +msgstr "Stijl:" + +#: gui_xmdlg.c:1148 +msgid "Size:" +msgstr "Grootte:" + +#: hangulin.c:610 +msgid "E256: Hangul automata ERROR" +msgstr "E256: 'Hangul automata'-fout" + +#: hardcopy.c:210 +msgid "E550: Missing colon" +msgstr "E550: dubbelepunt ontbreekt" + +#: hardcopy.c:222 +msgid "E551: Illegal component" +msgstr "E551: ongeldige component" + +#: hardcopy.c:230 +msgid "E552: digit expected" +msgstr "E552: cijfer verwacht" + +#: hardcopy.c:501 +#, c-format +msgid "Page %d" +msgstr "Pagina %d" + +#: hardcopy.c:658 +msgid "No text to be printed" +msgstr "Geen tekst om af te drukken" + +#: hardcopy.c:736 +#, c-format +msgid "Printing page %d (%d%%)" +msgstr "Afdrukken van pagina %d (%d%%)" + +#: hardcopy.c:748 +#, c-format +msgid " Copy %d of %d" +msgstr "Kopie %d van %d" + +#: hardcopy.c:806 +#, c-format +msgid "Printed: %s" +msgstr "Afgedrukt: %s" + +#: hardcopy.c:814 +msgid "Printing aborted" +msgstr "Afdrukken afgebroken" + +#: hardcopy.c:1469 +msgid "E455: Error writing to PostScript output file" +msgstr "E455: wegschrijven Postscript-uitvoerbestand is mislukt" + +#: hardcopy.c:1931 +#, c-format +msgid "E624: Can't open file \"%s\"" +msgstr "E624: openen bestand \"%s\" is mislukt" + +#: hardcopy.c:1941 +#: hardcopy.c:2822 +#, c-format +msgid "E457: Can't read PostScript resource file \"%s\"" +msgstr "E457: kan 'Postscript resource'-bestand \"%s\" niet lezen" + +#: hardcopy.c:1957 +#, c-format +msgid "E618: file \"%s\" is not a PostScript resource file" +msgstr "E618L bestand \"%s\" is geen 'Postscript resource'-bestand" + +#: hardcopy.c:1975 +#: hardcopy.c:1994 +#: hardcopy.c:2037 +#, c-format +msgid "E619: file \"%s\" is not a supported PostScript resource file" +msgstr "E619: bestand \"%s\" is geen ondersteund 'Postscript resource'-bestand" + +#: hardcopy.c:2056 +#, c-format +msgid "E621: \"%s\" resource file has wrong version" +msgstr "E621: 'resource'-bestand \"%s\" heeft verkeerde versie" + +#: hardcopy.c:2543 +msgid "E673: Incompatible multi-byte encoding and character set." +msgstr "E673: Multi-byte-codering en de tekenverzameling zijn onverenigbaar." + +#: hardcopy.c:2560 +msgid "E674: printmbcharset cannot be empty with multi-byte encoding." +msgstr "E674: printmbcharset mag bij multi-byte-codering niet leeg zijn." + +#: hardcopy.c:2578 +msgid "E675: No default font specified for multi-byte printing." +msgstr "E675: geen standaard lettertype opgegeven voor multi-byte-afdrukken." + +#: hardcopy.c:2771 +msgid "E324: Can't open PostScript output file" +msgstr "E324: openen van PostScript-uitoverbestand is mislukt" + +#: hardcopy.c:2808 +#, c-format +msgid "E456: Can't open file \"%s\"" +msgstr "E456: Bestand \"%s\" kan niet worden geopend" + +#: hardcopy.c:2942 +msgid "E456: Can't find PostScript resource file \"prolog.ps\"" +msgstr "E456: 'PostScript resource'-bestand \"prolog.ps\" is niet gevonden" + +#: hardcopy.c:2955 +msgid "E456: Can't find PostScript resource file \"cidfont.ps\"" +msgstr "E456: 'PostScript resource'-bestand \"cidfont.ps\" is niet gevonden" + +#: hardcopy.c:2993 +#: hardcopy.c:3015 +#: hardcopy.c:3044 +#, c-format +msgid "E456: Can't find PostScript resource file \"%s.ps\"" +msgstr "E456: 'PostScript resource'-bestand \"%s.ps\" is niet gevonden" + +#: hardcopy.c:3031 +#, c-format +msgid "E620: Unable to convert to print encoding \"%s\"" +msgstr "E620: omzetten naar afdrukcodering \"%s\" is mislukt" + +#: hardcopy.c:3285 +msgid "Sending to printer..." +msgstr "Naar printer versturen..." + +#: hardcopy.c:3289 +msgid "E365: Failed to print PostScript file" +msgstr "E365: Afdrukken van PostScript-bestand is mislukt" + +#: hardcopy.c:3291 +msgid "Print job sent." +msgstr "Afdrukopdracht verzonden" + +#: if_cscope.c:77 +msgid "Add a new database" +msgstr "Nieuwe databank toevoegen" + +#: if_cscope.c:79 +msgid "Query for a pattern" +msgstr "Naar een patroon zoeken" + +#: if_cscope.c:81 +msgid "Show this message" +msgstr "Dit bericht tonen" + +#: if_cscope.c:83 +msgid "Kill a connection" +msgstr "Een verbinding verbreken" + +#: if_cscope.c:85 +msgid "Reinit all connections" +msgstr "Alle verbindingen opnieuw initialiseren" + +#: if_cscope.c:87 +msgid "Show connections" +msgstr "Verbindingen tonen" + +#: if_cscope.c:95 +#, c-format +msgid "E560: Usage: cs[cope] %s" +msgstr "E560: Gebruik: cs[cope] %s" + +#: if_cscope.c:236 +msgid "This cscope command does not support splitting the window.\n" +msgstr "Deze cscope-opdracht ondersteunt niet het splitsen van het venster.\n" + +#: if_cscope.c:287 +msgid "E562: Usage: cstag " +msgstr "E562: Gebruik: cstag " + +#: if_cscope.c:345 +msgid "E257: cstag: tag not found" +msgstr "E257: cstag: tag is gevonden" + +#: if_cscope.c:515 +#, c-format +msgid "E563: stat(%s) error: %d" +msgstr "E563: bevraag((%s) fout: %d" + +#: if_cscope.c:525 +msgid "E563: stat error" +msgstr "E563: bevragingsfout" + +#: if_cscope.c:622 +#, c-format +msgid "E564: %s is not a directory or a valid cscope database" +msgstr "E564: %s is geen map of een geldige cscope-databank" + +#: if_cscope.c:640 +#, c-format +msgid "Added cscope database %s" +msgstr "cscope-databank %s toegevoegd" + +#: if_cscope.c:695 +#, c-format +msgid "E262: error reading cscope connection %ld" +msgstr "E262: lezen van cscope-verbinding %ld is mislukt" + +#: if_cscope.c:802 +msgid "E561: unknown cscope search type" +msgstr "E561: soort cscope-zoekopdracht is onbekend" + +#: if_cscope.c:866 +#: if_cscope.c:905 +msgid "E566: Could not create cscope pipes" +msgstr "E566: aanmaken cscopei-pijp is mislukt" + +#: if_cscope.c:882 +msgid "E622: Could not fork for cscope" +msgstr "E622: nieuw cscope-proces beginnen is mislukt" + +#: if_cscope.c:992 +#: if_cscope.c:1029 +msgid "cs_create_connection exec failed" +msgstr "uitvoering cs_create_connection is mislukt" + +#: if_cscope.c:1002 +#: if_cscope.c:1042 +msgid "cs_create_connection: fdopen for to_fp failed" +msgstr "cs_create_connection: fdopen voor to_fp is mislukt" + +#: if_cscope.c:1004 +#: if_cscope.c:1046 +msgid "cs_create_connection: fdopen for fr_fp failed" +msgstr "cs_create_connection: fdopen voor fr_fp is mislukt" + +#: if_cscope.c:1030 +msgid "E623: Could not spawn cscope process" +msgstr "E623: voortbrengen cscope-proces is mislukt" + +#: if_cscope.c:1074 +msgid "E567: no cscope connections" +msgstr "E567: geen cscope-verbindingen" + +#: if_cscope.c:1155 +#, c-format +msgid "E469: invalid cscopequickfix flag %c for %c" +msgstr "E469: cscopequickfix-vlag %c voor %c is ongeldig" + +#: if_cscope.c:1218 +#, c-format +msgid "E259: no matches found for cscope query %s of %s" +msgstr "E259: cscope-zoekopdracht %s van %s leverde geen resultaten" + +#: if_cscope.c:1324 +msgid "cscope commands:\n" +msgstr "cscope-opdrachten:\n" + +#: if_cscope.c:1333 +#, c-format +msgid "%-5s: %s%*s (Usage: %s)" +msgstr "%-5s: %s%*s (Gebruik: %s)" + +#: if_cscope.c:1338 +msgid "" +"\n" +" c: Find functions calling this function\n" +" d: Find functions called by this function\n" +" e: Find this egrep pattern\n" +" f: Find this file\n" +" g: Find this definition\n" +" i: Find files #including this file\n" +" s: Find this C symbol\n" +" t: Find assignments to\n" +msgstr "" +"\n" +" c: zoek functies die deze functie aanroepen\n" +" d: zoek functies die door deze functie worden aangeroepen\n" +" e: zoek op dit egrep-patroon\n" +" f: zoek dit bestand\n" +" g: zoek deze definitie\n" +" i: zoek bestanden #inclusief dit bestand\n" +" s: zoek dit C-symbool\n" +" t: zoek toekenningen aan\n" + +#: if_cscope.c:1426 +#, c-format +msgid "E625: cannot open cscope database: %s" +msgstr "E625: openen is mislukt van cscope-databank: %s" + +#: if_cscope.c:1444 +msgid "E626: cannot get cscope database information" +msgstr "E626: opvragen cscope-databankinformatie is mislukt" + +#: if_cscope.c:1469 +msgid "E568: duplicate cscope database not added" +msgstr "E568: dubbele cscope-databank is niet toegevoegd" + +#: if_cscope.c:1614 +#, c-format +msgid "E261: cscope connection %s not found" +msgstr "E261: cscope-verbinding %s is niet gevonden" + +#: if_cscope.c:1648 +#, c-format +msgid "cscope connection %s closed" +msgstr "cscope-verbinding %s is verbroken" + +#. should not reach here +#: if_cscope.c:1788 +msgid "E570: fatal error in cs_manage_matches" +msgstr "E570: fatale fout in cs_manage_matches" + +#: if_cscope.c:2050 +#, c-format +msgid "Cscope tag: %s" +msgstr "Cscope-tag: %s" + +#: if_cscope.c:2072 +msgid "" +"\n" +" # line" +msgstr "" +"\n" +" # regel" + +#: if_cscope.c:2074 +msgid "filename / context / line\n" +msgstr "bestandsnaam / context / regel\n" + +#: if_cscope.c:2186 +#, c-format +msgid "E609: Cscope error: %s" +msgstr "E609: Cscope-fout: %s" + +#: if_cscope.c:2459 +msgid "All cscope databases reset" +msgstr "Alle cscope-databanken opnieuw ingesteld" + +#: if_cscope.c:2526 +msgid "no cscope connections\n" +msgstr "geen cscope-verbindingen\n" + +#: if_cscope.c:2530 +msgid " # pid database name prepend path\n" +msgstr " # pid databanknaam padvoorvoegsel\n" + +#: if_mzsch.c:1038 +msgid "E815: Sorry, this command is disabled, the MzScheme libraries could not be loaded." +msgstr "E815: helaas, deze opdracht is uitgeschakeld. De MzScheme-bibliotheken kunnen niet geladen worden." + +#: if_mzsch.c:1425 +#: if_python.c:1271 +#: if_tcl.c:1404 +msgid "invalid expression" +msgstr "ongeldige uitdrukking" + +#: if_mzsch.c:1433 +#: if_python.c:1290 +#: if_tcl.c:1409 +msgid "expressions disabled at compile time" +msgstr "tijdens compileren zijn de expressies uitgeschakeld" + +#: if_mzsch.c:1522 +msgid "hidden option" +msgstr "verborgen optie" + +#: if_mzsch.c:1524 +#: if_tcl.c:501 +msgid "unknown option" +msgstr "onbekende optie" + +#: if_mzsch.c:1683 +msgid "window index is out of range" +msgstr "vensterindex valt buiten het bereik" + +#: if_mzsch.c:1843 +msgid "couldn't open buffer" +msgstr "buffer openen is mislukt" + +#: if_mzsch.c:2123 +#: if_mzsch.c:2153 +#: if_mzsch.c:2250 +#: if_mzsch.c:2314 +#: if_mzsch.c:2435 +#: if_mzsch.c:2492 +#: if_python.c:2508 +#: if_python.c:2542 +#: if_python.c:2601 +#: if_python.c:2668 +#: if_python.c:2790 +#: if_python.c:2842 +#: if_tcl.c:684 +#: if_tcl.c:729 +#: if_tcl.c:803 +#: if_tcl.c:875 +#: if_tcl.c:2017 +msgid "cannot save undo information" +msgstr "herstelinformatie kan niet worden opgeslagen" + +#: if_mzsch.c:2128 +#: if_mzsch.c:2258 +#: if_mzsch.c:2328 +#: if_python.c:2510 +#: if_python.c:2608 +#: if_python.c:2679 +msgid "cannot delete line" +msgstr "regel kan niet worden verwijderd" + +#: if_mzsch.c:2159 +#: if_mzsch.c:2343 +#: if_python.c:2547 +#: if_python.c:2695 +#: if_tcl.c:690 +#: if_tcl.c:2039 +msgid "cannot replace line" +msgstr "regel kan niet worden vervangen" + +#: if_mzsch.c:2358 +#: if_mzsch.c:2441 +#: if_mzsch.c:2502 +#: if_python.c:2713 +#: if_python.c:2792 +#: if_python.c:2850 +msgid "cannot insert line" +msgstr "regel kan niet worden ingevoegd" + +#: if_mzsch.c:2593 +#: if_python.c:2962 +msgid "string cannot contain newlines" +msgstr "tekenreeks kan geen regeleinden bevatten" + +#: if_mzsch.c:3034 +msgid "Vim error: ~a" +msgstr "Vim-fout: ~a" + +#: if_mzsch.c:3067 +msgid "Vim error" +msgstr "Vim-fout" + +#: if_mzsch.c:3133 +msgid "buffer is invalid" +msgstr "buffer is ongeldig" + +#: if_mzsch.c:3142 +msgid "window is invalid" +msgstr "venster is ongeldig" + +#: if_mzsch.c:3162 +msgid "linenr out of range" +msgstr "regelnummer buiten het bereik" + +#: if_mzsch.c:3313 +#: if_mzsch.c:3355 +msgid "not allowed in the Vim sandbox" +msgstr "niet toegestaan in de Vim-zandbak" + +#: if_python.c:517 +msgid "E263: Sorry, this command is disabled, the Python library could not be loaded." +msgstr "E263: helaas, deze opdracht is uitgeschakeld. De Python-bibliotheek kan niet worden geladen." + +#: if_python.c:583 +msgid "E659: Cannot invoke Python recursively" +msgstr "E659: Python kan niet recursief worden aangeroepen" + +#: if_python.c:776 +msgid "can't delete OutputObject attributes" +msgstr "attributen van OutputObject kunnen niet worden verwijderd" + +#: if_python.c:783 +msgid "softspace must be an integer" +msgstr "zachte spatie moet een geheel getal zijn" + +#: if_python.c:791 +msgid "invalid attribute" +msgstr "ongeldig attribuut" + +#: if_python.c:830 +#: if_python.c:844 +msgid "writelines() requires list of strings" +msgstr "writelines() vereist een lijst met tekenreeksen" + +#: if_python.c:970 +msgid "E264: Python: Error initialising I/O objects" +msgstr "E264: Python: initialiseren I/O-objecten is mislukt" + +#: if_python.c:1303 +msgid "attempt to refer to deleted buffer" +msgstr "poging om naar een verwijderd buffer te verwijzen" + +#: if_python.c:1318 +#: if_python.c:1359 +#: if_python.c:1423 +#: if_tcl.c:1216 +msgid "line number out of range" +msgstr "regelnummer valt buiten het bereik" + +#: if_python.c:1558 +#, c-format +msgid "" +msgstr "" + +#: if_python.c:1649 +#: if_tcl.c:836 +msgid "invalid mark name" +msgstr "naam markering ongeldig" + +#: if_python.c:1927 +msgid "no such buffer" +msgstr "onbekende buffer" + +#: if_python.c:2015 +msgid "attempt to refer to deleted window" +msgstr "poging om naar een verwijderd venster te verwijzen" + +#: if_python.c:2060 +msgid "readonly attribute" +msgstr "alleen-lezen attribuut" + +#: if_python.c:2074 +msgid "cursor position outside buffer" +msgstr "cursorpositie valt buiten buffer" + +#: if_python.c:2157 +#, c-format +msgid "" +msgstr "" + +#: if_python.c:2169 +#, c-format +msgid "" +msgstr "" + +#: if_python.c:2172 +#, c-format +msgid "" +msgstr "" + +#: if_python.c:2246 +msgid "no such window" +msgstr "onbekend venster" + +#: if_ruby.c:554 +msgid "E265: $_ must be an instance of String" +msgstr "E265: $_ moet een instantie van String zijn" + +#: if_ruby.c:630 +msgid "E266: Sorry, this command is disabled, the Ruby library could not be loaded." +msgstr "E266: helaas, deze opdracht is uitgeschakeld. De Ruby-bibliotheek kan niet worden geladen." + +#: if_ruby.c:662 +msgid "E267: unexpected return" +msgstr "E267: onverwacht resultaat" + +#: if_ruby.c:665 +msgid "E268: unexpected next" +msgstr "E268: onverwachte volgende" + +#: if_ruby.c:668 +msgid "E269: unexpected break" +msgstr "E269: onverwachte onderbreking" + +#: if_ruby.c:671 +msgid "E270: unexpected redo" +msgstr "E270: onverwachte herstelopdracht" + +#: if_ruby.c:674 +msgid "E271: retry outside of rescue clause" +msgstr "E271: hernieuwde poging buiten de reddingsclausule" + +#: if_ruby.c:686 +msgid "E272: unhandled exception" +msgstr "E272: niet-afgehandelde uitzondering" + +#: if_ruby.c:701 +#, c-format +msgid "E273: unknown longjmp status %d" +msgstr "E273: onbekende longjmp-status %d" + +#: if_sniff.c:64 +msgid "Toggle implementation/definition" +msgstr "Implementatie/definitie wisselen" + +#: if_sniff.c:65 +msgid "Show base class of" +msgstr "Toon basisklasse van" + +#: if_sniff.c:66 +msgid "Show overridden member function" +msgstr "Toon overschreven member-functie" + +#: if_sniff.c:67 +msgid "Retrieve from file" +msgstr "Uit bestand halen" + +#: if_sniff.c:68 +msgid "Retrieve from project" +msgstr "Uit project halen" + +#: if_sniff.c:70 +msgid "Retrieve from all projects" +msgstr "Uit alle projecten halen" + +#: if_sniff.c:71 +msgid "Retrieve" +msgstr "Ophalen" + +#: if_sniff.c:72 +msgid "Show source of" +msgstr "Toon broncode van" + +#: if_sniff.c:73 +msgid "Find symbol" +msgstr "Zoek symbool" + +#: if_sniff.c:74 +msgid "Browse class" +msgstr "Bekijk klasse" + +#: if_sniff.c:75 +msgid "Show class in hierarchy" +msgstr "Toon klasse in hierarchie" + +#: if_sniff.c:76 +msgid "Show class in restricted hierarchy" +msgstr "Toon klasse in beperkte hierarchie" + +#: if_sniff.c:77 +msgid "Xref refers to" +msgstr "Xref verwijst naar" + +#: if_sniff.c:78 +msgid "Xref referred by" +msgstr "Xref wordt naar verwezen door" + +#: if_sniff.c:79 +msgid "Xref has a" +msgstr "Xref heeft een" + +#: if_sniff.c:80 +msgid "Xref used by" +msgstr "Xref gebruikt door" + +#: if_sniff.c:81 +msgid "Show docu of" +msgstr "Toon documentatie van" + +#: if_sniff.c:82 +msgid "Generate docu for" +msgstr "Genereer documentatie voor" + +#: if_sniff.c:94 +msgid "Cannot connect to SNiFF+. Check environment (sniffemacs must be found in $PATH).\n" +msgstr "Verbinden met SNiFF+ is mislukt. Controleer omgevingsvariabelen (sniffemacs moet in $PATH staan).\n" + +#: if_sniff.c:422 +msgid "E274: Sniff: Error during read. Disconnected" +msgstr "E274: Sniff: leesfout. Verbroken" + +#: if_sniff.c:550 +msgid "SNiFF+ is currently " +msgstr "SNiFF+ is momenteel " + +#: if_sniff.c:552 +msgid "not " +msgstr "niet " + +#: if_sniff.c:553 +msgid "connected" +msgstr "verbonden" + +#: if_sniff.c:589 +#, c-format +msgid "E275: Unknown SNiFF+ request: %s" +msgstr "E275: onbekend SNiFF+-verzoek: %s" + +#: if_sniff.c:602 +msgid "E276: Error connecting to SNiFF+" +msgstr "E276: verbinden met SNiFF+ is mislukt" + +#: if_sniff.c:1013 +msgid "E278: SNiFF+ not connected" +msgstr "E278: SNiFF+ niet verbonden" + +#: if_sniff.c:1022 +msgid "E279: Not a SNiFF+ buffer" +msgstr "E279: geen SNiFF+-buffer" + +#: if_sniff.c:1089 +msgid "Sniff: Error during write. Disconnected" +msgstr "Sniff: schrijven is mislukt. Verbroken" + +#: if_tcl.c:419 +msgid "invalid buffer number" +msgstr "buffernummer is ongeldig" + +#: if_tcl.c:465 +#: if_tcl.c:935 +#: if_tcl.c:1115 +msgid "not implemented yet" +msgstr "nog niet geïmplementeerd" + +#. ??? +#: if_tcl.c:774 +msgid "cannot set line(s)" +msgstr "kan regel(s) niet instellen" + +#: if_tcl.c:845 +msgid "mark not set" +msgstr "markering niet ingesteld" + +#: if_tcl.c:852 +#: if_tcl.c:1071 +#, c-format +msgid "row %d column %d" +msgstr "rij %d kolom %d" + +#: if_tcl.c:884 +msgid "cannot insert/append line" +msgstr "invoegen/toevoegen regel is mislukt" + +#: if_tcl.c:1270 +msgid "unknown flag: " +msgstr "unbekende instelling: " + +#: if_tcl.c:1340 +msgid "unknown vimOption" +msgstr "onbekende vim-optie" + +#: if_tcl.c:1425 +msgid "keyboard interrupt" +msgstr "toetsenbord-interrupt" + +#: if_tcl.c:1430 +msgid "vim error" +msgstr "vim-fout" + +#: if_tcl.c:1474 +msgid "cannot create buffer/window command: object is being deleted" +msgstr "aanmaken buffer-/vensteropdracht is mislukt: object wordt verwijderd" + +#: if_tcl.c:1550 +msgid "cannot register callback command: buffer/window is already being deleted" +msgstr " kan 'callback'-opdracht niet registreren: buffer/venster is reeds verwijderd" + +#. This should never happen. Famous last word? +#: if_tcl.c:1569 +msgid "E280: TCL FATAL ERROR: reflist corrupt!? Please report this to vim-dev@vim.org" +msgstr "E280: TCL FATALE FOUT: reflist misschien corrupt!? Meld dit a.u.b. aan vim-dev@vim.org" + +#: if_tcl.c:1570 +msgid "cannot register callback command: buffer/window reference not found" +msgstr "'callback'-opdracht kan niet worden geregistreerd: buffer-/vensterreferentie ontbreekt" + +#: if_tcl.c:1742 +msgid "E571: Sorry, this command is disabled: the Tcl library could not be loaded." +msgstr "E571: Helaas, deze opdracht is uitgeschakeld: het laden van de Tcl-bibliotheek is mislukt." + +#: if_tcl.c:1904 +msgid "E281: TCL ERROR: exit code is not int!? Please report this to vim-dev@vim.org" +msgstr "E281: Tcl-fout: afsluitcode is geen geheel getal!? Meld dit a.u.b. aan vim-dev@vim.org" + +#: if_tcl.c:1909 +#, c-format +msgid "E572: exit code %d" +msgstr "E572: afsluitcode %d" + +#: if_tcl.c:2025 +msgid "cannot get line" +msgstr "kan regel niet verkrijgen" + +#: if_xcmdsrv.c:218 +msgid "Unable to register a command server name" +msgstr "Het registreren van een opdrachtservernaam is mislukt" + +#: if_xcmdsrv.c:477 +msgid "E248: Failed to send command to the destination program" +msgstr "E248: versturen van opdracht naar het doelprogramma is mislukt" + +#: if_xcmdsrv.c:750 +#, c-format +msgid "E573: Invalid server id used: %s" +msgstr "E573: ongeldige server-id gebruikt: %s" + +#: if_xcmdsrv.c:1131 +msgid "E251: VIM instance registry property is badly formed. Deleted!" +msgstr "E251: registereigenschap van VIM-instantie is misvormd. Verwijderd!" + +#: main.c:138 +msgid "Unknown option argument" +msgstr "Onbekend optieargument" + +#: main.c:140 +msgid "Too many edit arguments" +msgstr "Teveel bewerkargumenten" + +#: main.c:142 +msgid "Argument missing after" +msgstr "Argument ontbreekt na" + +#: main.c:144 +msgid "Garbage after option argument" +msgstr "Rommel na optieargument" + +#: main.c:146 +msgid "Too many \"+command\", \"-c command\" or \"--cmd command\" arguments" +msgstr "Teveel \"+opdracht\", \"-c opdracht\" of \"--cmd opdracht\"-argumenten" + +#: main.c:148 +msgid "Invalid argument for" +msgstr "Ongeldig argument voor" + +#: main.c:517 +#, c-format +msgid "%d files to edit\n" +msgstr "%d bestanden om te bewerken\n" + +#: main.c:942 +msgid "netbeans is not supported with this GUI\n" +msgstr "Netbeans wordt door deze GUI niet ondersteund\n" + +#: main.c:1531 +msgid "This Vim was not compiled with the diff feature." +msgstr "Deze Vim is niet met de diff-functionaliteit gecompileerd" + +#: main.c:1633 +msgid "'-nb' cannot be used: not enabled at compile time\n" +msgstr "'-nb' kan niet worden gebruikt: was tijdens compilatie niet ingeschakeld\n" + +#: main.c:2165 +msgid "Attempt to open script file again: \"" +msgstr "Poging scriptbestand wederom te openen: \"" + +#: main.c:2174 +msgid "Cannot open for reading: \"" +msgstr "Openen om te lezen is mislukt: \"" + +#: main.c:2228 +msgid "Cannot open for script output: \"" +msgstr "Openen voor script-uitvoer is mislukt: \"" + +#: main.c:2394 +msgid "Vim: Error: Failure to start gvim from NetBeans\n" +msgstr "Vim: Fout: gvim starten vanuit Netbeans is mislukt\n" + +#: main.c:2399 +msgid "Vim: Warning: Output is not to a terminal\n" +msgstr "Vim: Waarschuwing: Uitvoer gaan niet naar een terminal\n" + +#: main.c:2401 +msgid "Vim: Warning: Input is not from a terminal\n" +msgstr "Vim: Waarschuwing: Invoer komt niet van een terminal\n" + +#. just in case.. +#: main.c:2718 +msgid "pre-vimrc command line" +msgstr "pre-vimrc-opdracjtregel" + +#: main.c:2815 +#, c-format +msgid "E282: Cannot read from \"%s\"" +msgstr "E282: Kan niet lezen vanuit \"%s\"" + +#: main.c:3032 +msgid "" +"\n" +"More info with: \"vim -h\"\n" +msgstr "" +"\n" +"Meer informatie via: \"vim -h\"\n" + +#: main.c:3065 +msgid "[file ..] edit specified file(s)" +msgstr "[bestand ..] bewerk opgegeven bestand(en)" + +#: main.c:3066 +msgid "- read text from stdin" +msgstr "- lees tekst vanuit stdin" + +#: main.c:3067 +msgid "-t tag edit file where tag is defined" +msgstr "-t tag bewerk bestand waar tag is gedefinieerd" + +#: main.c:3069 +msgid "-q [errorfile] edit file with first error" +msgstr "-q [foutbestand] bewerk bestand dat eerste fout bevat" + +#: main.c:3078 +msgid "" +"\n" +"\n" +"usage:" +msgstr "" +"\n" +"\n" +"Gebruik:" + +#: main.c:3081 +msgid " vim [arguments] " +msgstr " vim [argumenten] " + +#: main.c:3085 +msgid "" +"\n" +" or:" +msgstr "" +"\n" +" of:" + +#: main.c:3088 +msgid "" +"\n" +"Where case is ignored prepend / to make flag upper case" +msgstr "" +"\n" +"Daar waar hoofdletters genegeerd worden kan met / vlag in hoofdletters gezet worden" + +#: main.c:3091 +msgid "" +"\n" +"\n" +"Arguments:\n" +msgstr "" +"\n" +"\n" +"Argumenten:\n" + +#: main.c:3092 +msgid "--\t\t\tOnly file names after this" +msgstr "--\t\t\tHierna alleen bestandsnamen" + +#: main.c:3094 +msgid "--literal\t\tDon't expand wildcards" +msgstr "--literal\t\tJokertekens niet vervangen" + +#: main.c:3097 +msgid "-register\t\tRegister this gvim for OLE" +msgstr "-register\t\tDeze gvim voor OLE registreren" + +#: main.c:3098 +msgid "-unregister\t\tUnregister gvim for OLE" +msgstr "-unregister\t\tgvim afmelden voor OLE" + +#: main.c:3101 +msgid "-g\t\t\tRun using GUI (like \"gvim\")" +msgstr "-g\t\t\tMet GUI opstarten (zoals \"gvim\")" + +#: main.c:3102 +msgid "-f or --nofork\tForeground: Don't fork when starting GUI" +msgstr "-f of --nofork\tVoorgrond: niet afsplitsen tijdens opstarten GUI" + +#: main.c:3104 +msgid "-v\t\t\tVi mode (like \"vi\")" +msgstr "-v\t\t\tVi-modus (zoals \"vi\")" + +#: main.c:3105 +msgid "-e\t\t\tEx mode (like \"ex\")" +msgstr "-e\t\t\tEx-modus (zoals \"ex\")" + +#: main.c:3106 +msgid "-s\t\t\tSilent (batch) mode (only for \"ex\")" +msgstr "-s\t\t\tStille (bulk)modus (alleen bij \"ex\")" + +#: main.c:3108 +msgid "-d\t\t\tDiff mode (like \"vimdiff\")" +msgstr "-d\t\t\tDiff-modus (zoals \"vimdiff\")" + +#: main.c:3110 +msgid "-y\t\t\tEasy mode (like \"evim\", modeless)" +msgstr "-y\t\t\tEenvoudige modus (zoals \"evim\", zonder modus)" + +#: main.c:3111 +msgid "-R\t\t\tReadonly mode (like \"view\")" +msgstr "-R\t\t\tAlleen-lezen modus (zoals \"view\")" + +#: main.c:3112 +msgid "-Z\t\t\tRestricted mode (like \"rvim\")" +msgstr "-Z\t\t\tBeperkte modus (zoals \"rvim\")" + +#: main.c:3113 +msgid "-m\t\t\tModifications (writing files) not allowed" +msgstr "-m\t\t\tAanpassingen (bestanden opslaan) niet toegestaan" + +#: main.c:3114 +msgid "-M\t\t\tModifications in text not allowed" +msgstr "-M\t\t\tTekstuele aanpassingen niet toegestaan" + +#: main.c:3115 +msgid "-b\t\t\tBinary mode" +msgstr "-b\t\t\tBinaire modus" + +#: main.c:3117 +msgid "-l\t\t\tLisp mode" +msgstr "-l\t\t\tLisp-modus" + +#: main.c:3119 +msgid "-C\t\t\tCompatible with Vi: 'compatible'" +msgstr "-C\t\t\tUitwisselbaar met Vi: 'compatible'" + +#: main.c:3120 +msgid "-N\t\t\tNot fully Vi compatible: 'nocompatible'" +msgstr "-N\t\t\tNiet volledig met Vi uitwisselbaar: 'nocompatible'" + +#: main.c:3121 +msgid "-V[N][fname]\t\tBe verbose [level N] [log messages to fname]" +msgstr "-V[N][fname]\t\tWees uitbundig [niveau N] [schrijf berichten naar fname]" + +#: main.c:3123 +msgid "-D\t\t\tDebugging mode" +msgstr "-D\t\t\tFoutopspoormodus" + +#: main.c:3125 +msgid "-n\t\t\tNo swap file, use memory only" +msgstr "-n\t\t\tGeen wisselbestand, alleen geheugen gebruiken" + +#: main.c:3126 +msgid "-r\t\t\tList swap files and exit" +msgstr "-r\t\t\tWisselbestanden tonen en stoppen" + +#: main.c:3127 +msgid "-r (with file name)\tRecover crashed session" +msgstr "-r (bestandsnaam)\tHerstel ontspoorde sessie" + +#: main.c:3128 +msgid "-L\t\t\tSame as -r" +msgstr "-L\t\t\tGelijk aan -r" + +#: main.c:3130 +msgid "-f\t\t\tDon't use newcli to open window" +msgstr "-f\t\t\tGebruik geen newcli om venster te openen" + +#: main.c:3131 +msgid "-dev \t\tUse for I/O" +msgstr "-dev \t\tGebruik voor in- en uitvoer" + +#: main.c:3134 +msgid "-A\t\t\tstart in Arabic mode" +msgstr "-A\t\t\tIn Arabische modus starten" + +#: main.c:3137 +msgid "-H\t\t\tStart in Hebrew mode" +msgstr "-H\t\t\tIn Hebrewsche modus starten" + +#: main.c:3140 +msgid "-F\t\t\tStart in Farsi mode" +msgstr "-F\t\t\tIn Perzische modus starten" + +#: main.c:3142 +msgid "-T \tSet terminal type to " +msgstr "-T \tTerminalsoort op instellen" + +#: main.c:3143 +msgid "-u \t\tUse instead of any .vimrc" +msgstr "-u \t\tGebruik in plaats van enige .vimrc" + +#: main.c:3145 +msgid "-U \t\tUse instead of any .gvimrc" +msgstr "-U \t\tGebruik in plaats van enige .gvimrc" + +#: main.c:3147 +msgid "--noplugin\t\tDon't load plugin scripts" +msgstr "--noplugin\t\tGeen plugin-scripts laden" + +#: main.c:3149 +msgid "-p[N]\t\tOpen N tab pages (default: one for each file)" +msgstr "-p[N]\t\tN tabpagina's openen (standaard: 1 per bestand)" + +#: main.c:3150 +msgid "-o[N]\t\tOpen N windows (default: one for each file)" +msgstr "-o[N]\t\tN vensters openen (standaard: 1 per bestand)" + +#: main.c:3151 +msgid "-O[N]\t\tLike -o but split vertically" +msgstr "-O[N]\t\tGelijk aan -o maar vertikaal gesplitst" + +#: main.c:3153 +msgid "+\t\t\tStart at end of file" +msgstr "+\t\t\tAan einde van bestand beginnen" + +#: main.c:3154 +msgid "+\t\tStart at line " +msgstr "+\t\tOp regel beginnen" + +#: main.c:3155 +msgid "--cmd \tExecute before loading any vimrc file" +msgstr "--cmd \tOpdracht uitvoeren voor enige vimrc-bestand" + +#: main.c:3156 +msgid "-c \t\tExecute after loading the first file" +msgstr "-c \t\tOpdracht uitvoeren na eerste bestand" + +#: main.c:3157 +msgid "-S \t\tSource file after loading the first file" +msgstr "" + +#: main.c:3158 +msgid "-s \tRead Normal mode commands from file " +msgstr "" + +#: main.c:3159 +msgid "-w \tAppend all typed commands to file " +msgstr "" + +#: main.c:3160 +msgid "-W \tWrite all typed commands to file " +msgstr "" + +#: main.c:3162 +msgid "-x\t\t\tEdit encrypted files" +msgstr "" + +#: main.c:3166 +msgid "-display \tConnect vim to this particular X-server" +msgstr "" + +#: main.c:3168 +msgid "-X\t\t\tDo not connect to X server" +msgstr "" + +#: main.c:3171 +msgid "--remote \tEdit in a Vim server if possible" +msgstr "" + +#: main.c:3172 +msgid "--remote-silent Same, don't complain if there is no server" +msgstr "" + +#: main.c:3173 +msgid "--remote-wait As --remote but wait for files to have been edited" +msgstr "" + +#: main.c:3174 +msgid "--remote-wait-silent Same, don't complain if there is no server" +msgstr "" + +#: main.c:3176 +msgid "--remote-tab[-wait][-silent] As --remote but use tab page per file" +msgstr "" + +#: main.c:3178 +msgid "--remote-send \tSend to a Vim server and exit" +msgstr "" + +#: main.c:3179 +msgid "--remote-expr \tEvaluate in a Vim server and print result" +msgstr "" + +#: main.c:3180 +msgid "--serverlist\t\tList available Vim server names and exit" +msgstr "" + +#: main.c:3181 +msgid "--servername \tSend to/become the Vim server " +msgstr "" + +#: main.c:3184 +msgid "--startuptime \tWrite startup timing messages to " +msgstr "" + +#: main.c:3187 +msgid "-i \t\tUse instead of .viminfo" +msgstr "" + +#: main.c:3189 +msgid "-h or --help\tPrint Help (this message) and exit" +msgstr "-h of --help\tDit bericht tonen en stoppen" + +#: main.c:3190 +msgid "--version\t\tPrint version information and exit" +msgstr "--version\t\tVersieinformatie tonen en stoppen" + +#: main.c:3194 +msgid "" +"\n" +"Arguments recognised by gvim (Motif version):\n" +msgstr "" + +#: main.c:3198 +msgid "" +"\n" +"Arguments recognised by gvim (neXtaw version):\n" +msgstr "" + +#: main.c:3200 +msgid "" +"\n" +"Arguments recognised by gvim (Athena version):\n" +msgstr "" + +#: main.c:3204 +msgid "-display \tRun vim on " +msgstr "" + +#: main.c:3205 +msgid "-iconic\t\tStart vim iconified" +msgstr "" + +#: main.c:3207 +msgid "-name \t\tUse resource as if vim was " +msgstr "" + +#: main.c:3208 +msgid "\t\t\t (Unimplemented)\n" +msgstr "" + +#: main.c:3210 +msgid "-background \tUse for the background (also: -bg)" +msgstr "" + +#: main.c:3211 +msgid "-foreground \tUse for normal text (also: -fg)" +msgstr "" + +#: main.c:3212 +#: main.c:3232 +msgid "-font \t\tUse for normal text (also: -fn)" +msgstr "" + +#: main.c:3213 +msgid "-boldfont \tUse for bold text" +msgstr "" + +#: main.c:3214 +msgid "-italicfont \tUse for italic text" +msgstr "" + +#: main.c:3215 +#: main.c:3233 +msgid "-geometry \tUse for initial geometry (also: -geom)" +msgstr "" + +#: main.c:3216 +msgid "-borderwidth \tUse a border width of (also: -bw)" +msgstr "" + +#: main.c:3217 +msgid "-scrollbarwidth Use a scrollbar width of (also: -sw)" +msgstr "" + +#: main.c:3219 +msgid "-menuheight \tUse a menu bar height of (also: -mh)" +msgstr "" + +#: main.c:3221 +#: main.c:3234 +msgid "-reverse\t\tUse reverse video (also: -rv)" +msgstr "" + +#: main.c:3222 +msgid "+reverse\t\tDon't use reverse video (also: +rv)" +msgstr "" + +#: main.c:3223 +msgid "-xrm \tSet the specified resource" +msgstr "" + +#: main.c:3226 +msgid "" +"\n" +"Arguments recognised by gvim (RISC OS version):\n" +msgstr "" + +#: main.c:3227 +msgid "--columns \tInitial width of window in columns" +msgstr "" + +#: main.c:3228 +msgid "--rows \tInitial height of window in rows" +msgstr "" + +#: main.c:3231 +msgid "" +"\n" +"Arguments recognised by gvim (GTK+ version):\n" +msgstr "" + +#: main.c:3235 +msgid "-display \tRun vim on (also: --display)" +msgstr "" + +#: main.c:3237 +msgid "--role \tSet a unique role to identify the main window" +msgstr "" + +#: main.c:3239 +msgid "--socketid \tOpen Vim inside another GTK widget" +msgstr "" + +#: main.c:3242 +msgid "-P \tOpen Vim inside parent application" +msgstr "" + +#: main.c:3243 +msgid "--windowid \tOpen Vim inside another win32 widget" +msgstr "" + +#: main.c:3587 +msgid "No display" +msgstr "" + +#. Failed to send, abort. +#: main.c:3602 +msgid ": Send failed.\n" +msgstr "" + +#. Let vim start normally. +#: main.c:3608 +msgid ": Send failed. Trying to execute locally\n" +msgstr "" + +#: main.c:3646 +#: main.c:3667 +#, c-format +msgid "%d of %d edited" +msgstr "" + +#: main.c:3689 +msgid "No display: Send expression failed.\n" +msgstr "" + +#: main.c:3701 +msgid ": Send expression failed.\n" +msgstr "" + +#: mark.c:761 +msgid "No marks set" +msgstr "" + +#: mark.c:763 +#, c-format +msgid "E283: No marks matching \"%s\"" +msgstr "" + +#. Highlight title +#: mark.c:774 +msgid "" +"\n" +"mark line col file/text" +msgstr "" + +#. Highlight title +#: mark.c:896 +msgid "" +"\n" +" jump line col file/text" +msgstr "" + +#. Highlight title +#: mark.c:943 +msgid "" +"\n" +"change line col text" +msgstr "" + +#: mark.c:1437 +#, c-format +msgid "" +"\n" +"# File marks:\n" +msgstr "" + +#. Write the jumplist with -' +#: mark.c:1472 +#, c-format +msgid "" +"\n" +"# Jumplist (newest first):\n" +msgstr "" + +#: mark.c:1573 +#, c-format +msgid "" +"\n" +"# History of marks within files (newest to oldest):\n" +msgstr "" + +#: mark.c:1677 +msgid "Missing '>'" +msgstr "" + +#: mbyte.c:550 +msgid "E543: Not a valid codepage" +msgstr "" + +#: mbyte.c:5540 +msgid "E284: Cannot set IC values" +msgstr "" + +#: mbyte.c:5692 +msgid "E285: Failed to create input context" +msgstr "" + +#: mbyte.c:5850 +msgid "E286: Failed to open input method" +msgstr "" + +#: mbyte.c:5863 +msgid "E287: Warning: Could not set destroy callback to IM" +msgstr "" + +#: mbyte.c:5869 +msgid "E288: input method doesn't support any style" +msgstr "" + +#: mbyte.c:5928 +msgid "E289: input method doesn't support my preedit type" +msgstr "" + +#: mbyte.c:6004 +msgid "E290: over-the-spot style requires fontset" +msgstr "" + +#: mbyte.c:6040 +msgid "E291: Your GTK+ is older than 1.2.3. Status area disabled" +msgstr "" + +#: mbyte.c:6351 +msgid "E292: Input Method Server is not running" +msgstr "" + +#: memfile.c:502 +msgid "E293: block was not locked" +msgstr "" + +#: memfile.c:1045 +msgid "E294: Seek error in swap file read" +msgstr "" + +#: memfile.c:1050 +msgid "E295: Read error in swap file" +msgstr "" + +#: memfile.c:1102 +msgid "E296: Seek error in swap file write" +msgstr "" + +#: memfile.c:1120 +msgid "E297: Write error in swap file" +msgstr "" + +#: memfile.c:1317 +msgid "E300: Swap file already exists (symlink attack?)" +msgstr "" + +#: memline.c:312 +msgid "E298: Didn't get block nr 0?" +msgstr "E298: Ophalen blok nummer 0 mislukt?" + +#: memline.c:359 +msgid "E298: Didn't get block nr 1?" +msgstr "E298: Ophalen blok nummer 1 mislukt?" + +#: memline.c:377 +msgid "E298: Didn't get block nr 2?" +msgstr "E298: Ophalen blok nummer 2 mislukt?" + +#. could not (re)open the swap file, what can we do???? +#: memline.c:490 +msgid "E301: Oops, lost the swap file!!!" +msgstr "E301: Helaas, wisselbestand is verdwenen!!!" + +#: memline.c:502 +msgid "E302: Could not rename swap file" +msgstr "" + +#: memline.c:592 +#, c-format +msgid "E303: Unable to open swap file for \"%s\", recovery impossible" +msgstr "" + +#: memline.c:703 +msgid "E304: ml_upd_block0(): Didn't get block 0??" +msgstr "" + +#: memline.c:905 +#, c-format +msgid "E305: No swap file found for %s" +msgstr "" + +#: memline.c:915 +msgid "Enter number of swap file to use (0 to quit): " +msgstr "Typ het nummer van het wisselbestand om te gebruiken (0 om te stoppen): " + +#: memline.c:960 +#, c-format +msgid "E306: Cannot open %s" +msgstr "" + +#: memline.c:982 +msgid "Unable to read block 0 from " +msgstr "" + +#: memline.c:985 +msgid "" +"\n" +"Maybe no changes were made or Vim did not update the swap file." +msgstr "" + +#: memline.c:995 +#: memline.c:1012 +msgid " cannot be used with this version of Vim.\n" +msgstr "" + +#: memline.c:997 +msgid "Use Vim version 3.0.\n" +msgstr "" + +#: memline.c:1003 +#, c-format +msgid "E307: %s does not look like a Vim swap file" +msgstr "" + +#: memline.c:1016 +msgid " cannot be used on this computer.\n" +msgstr "" + +#: memline.c:1018 +msgid "The file was created on " +msgstr "" + +#: memline.c:1022 +msgid "" +",\n" +"or the file has been damaged." +msgstr "" + +#: memline.c:1040 +msgid " has been damaged (page size is smaller than minimum value).\n" +msgstr "" + +#: memline.c:1072 +#, c-format +msgid "Using swap file \"%s\"" +msgstr "Toepassen van wisselbestand \"%s\"" + +#: memline.c:1078 +#, c-format +msgid "Original file \"%s\"" +msgstr "Oorspronkelijke bestand \"%s\"" + +#: memline.c:1091 +msgid "E308: Warning: Original file may have been changed" +msgstr "" + +#: memline.c:1161 +#, c-format +msgid "E309: Unable to read block 1 from %s" +msgstr "" + +#: memline.c:1165 +msgid "???MANY LINES MISSING" +msgstr "" + +#: memline.c:1181 +msgid "???LINE COUNT WRONG" +msgstr "" + +#: memline.c:1188 +msgid "???EMPTY BLOCK" +msgstr "" + +#: memline.c:1214 +msgid "???LINES MISSING" +msgstr "" + +#: memline.c:1246 +#, c-format +msgid "E310: Block 1 ID wrong (%s not a .swp file?)" +msgstr "" + +#: memline.c:1251 +msgid "???BLOCK MISSING" +msgstr "" + +#: memline.c:1267 +msgid "??? from here until ???END lines may be messed up" +msgstr "" + +#: memline.c:1283 +msgid "??? from here until ???END lines may have been inserted/deleted" +msgstr "" + +#: memline.c:1303 +msgid "???END" +msgstr "" + +#: memline.c:1366 +msgid "E311: Recovery Interrupted" +msgstr "" + +#: memline.c:1371 +msgid "E312: Errors detected while recovering; look for lines starting with ???" +msgstr "" + +#: memline.c:1373 +msgid "See \":help E312\" for more information." +msgstr "" + +#: memline.c:1380 +msgid "Recovery completed. You should check if everything is OK." +msgstr "Herstel is afgerond. Controleer of het resultaat juist is." + +#: memline.c:1381 +msgid "" +"\n" +"(You might want to write out this file under another name\n" +msgstr "" +"\n" +"(Een advies is dit bestand onder een andere naam op te slaan\n" + +#: memline.c:1382 +msgid "and run diff with the original file to check for changes)" +msgstr "en met 'diff' te controleren op wijzigingen)" + +#: memline.c:1385 +msgid "Recovery completed. Buffer contents equals file contents." +msgstr "Herstel is afgerond. Inhoud van het buffer komt overeen met de bestandsinhoud." + +#: memline.c:1386 +msgid "" +"\n" +"You may want to delete the .swp file now.\n" +"\n" +msgstr "" +"\n" +"Het .swp-bestand kan nu verwijderd worden.\n" +"\n" + +#. use msg() to start the scrolling properly +#: memline.c:1462 +msgid "Swap files found:" +msgstr "Gevonden wisselbestanden:" + +#: memline.c:1649 +msgid " In current directory:\n" +msgstr " In huidige map:\n" + +#: memline.c:1651 +msgid " Using specified name:\n" +msgstr " Gebruikt opgegeven naam:\n" + +#: memline.c:1655 +msgid " In directory " +msgstr " In map " + +#: memline.c:1673 +msgid " -- none --\n" +msgstr " -- geen --\n" + +#: memline.c:1748 +msgid " owned by: " +msgstr " eigenaar: " + +#: memline.c:1750 +msgid " dated: " +msgstr " datum: " + +#: memline.c:1754 +#: memline.c:3794 +msgid " dated: " +msgstr " datum: " + +#: memline.c:1773 +msgid " [from Vim version 3.0]" +msgstr " [van Vim-versie 3.0]" + +#: memline.c:1777 +msgid " [does not look like a Vim swap file]" +msgstr " [lijkt geen Vvim-wisselbestand te zijn]" + +#: memline.c:1781 +msgid " file name: " +msgstr " bestandsnaam: " + +#: memline.c:1787 +msgid "" +"\n" +" modified: " +msgstr "" +"\n" +" bewerkt: " + +#: memline.c:1788 +msgid "YES" +msgstr "JA" + +#: memline.c:1788 +msgid "no" +msgstr "nee" + +#: memline.c:1792 +msgid "" +"\n" +" user name: " +msgstr "" +"\n" +" gebruikersnaam: " + +#: memline.c:1799 +msgid " host name: " +msgstr " host-naam:" + +#: memline.c:1801 +msgid "" +"\n" +" host name: " +msgstr "" +"\n" +" host-naam: " + +#: memline.c:1807 +msgid "" +"\n" +" process ID: " +msgstr "" +"\n" +" proces-id: " + +#: memline.c:1813 +msgid " (still running)" +msgstr " (nog actief)" + +#: memline.c:1825 +msgid "" +"\n" +" [not usable with this version of Vim]" +msgstr "" +"\n" +" [onbruikbaar met deze versie van Vim]" + +#: memline.c:1828 +msgid "" +"\n" +" [not usable on this computer]" +msgstr "" +"\n" +" [onbruikbaar op deze computer]" + +#: memline.c:1833 +msgid " [cannot be read]" +msgstr " [lezen is onmogelijk]" + +#: memline.c:1837 +msgid " [cannot be opened]" +msgstr " [openen is onmogelijk]" + +#: memline.c:2027 +msgid "E313: Cannot preserve, there is no swap file" +msgstr "E313: kan niet worden behouden, want er is geen wisselbestand" + +#: memline.c:2080 +msgid "File preserved" +msgstr "Bestand behouden" + +#: memline.c:2082 +msgid "E314: Preserve failed" +msgstr "E314: behouden is mislukt" + +#: memline.c:2159 +#, c-format +msgid "E315: ml_get: invalid lnum: %ld" +msgstr "" + +#: memline.c:2194 +#, c-format +msgid "E316: ml_get: cannot find line %ld" +msgstr "" + +#: memline.c:2608 +msgid "E317: pointer block id wrong 3" +msgstr "" + +#: memline.c:2688 +msgid "stack_idx should be 0" +msgstr "" + +#: memline.c:2750 +msgid "E318: Updated too many blocks?" +msgstr "" + +#: memline.c:2930 +msgid "E317: pointer block id wrong 4" +msgstr "" + +#: memline.c:2957 +msgid "deleted block 1?" +msgstr "" + +#: memline.c:3164 +#, c-format +msgid "E320: Cannot find line %ld" +msgstr "" + +#: memline.c:3413 +msgid "E317: pointer block id wrong" +msgstr "" + +#: memline.c:3429 +msgid "pe_line_count is zero" +msgstr "" + +#: memline.c:3458 +#, c-format +msgid "E322: line number out of range: %ld past the end" +msgstr "" + +#: memline.c:3462 +#, c-format +msgid "E323: line count wrong in block %ld" +msgstr "" + +#: memline.c:3511 +msgid "Stack size increases" +msgstr "" + +#: memline.c:3558 +msgid "E317: pointer block id wrong 2" +msgstr "" + +#: memline.c:3595 +#, c-format +msgid "E773: Symlink loop for \"%s\"" +msgstr "E773: Symbolische koppelingslus voor \"%s\"" + +#: memline.c:3784 +msgid "E325: ATTENTION" +msgstr "E325: OPGELET" + +#: memline.c:3785 +msgid "" +"\n" +"Found a swap file by the name \"" +msgstr "" +"\n" +"Er is een wisselbestand aangetroffen met de naam \"" + +#: memline.c:3789 +msgid "While opening file \"" +msgstr "bij het openen van bestand \"" + +#: memline.c:3802 +msgid " NEWER than swap file!\n" +msgstr " NIEUWER dan het wisselbestand!\n" + +#. Some of these messages are long to allow translation to +#. * other languages. +#: memline.c:3806 +msgid "" +"\n" +"(1) Another program may be editing the same file.\n" +" If this is the case, be careful not to end up with two\n" +" different instances of the same file when making changes.\n" +msgstr "" +"\n" +"(1) Mogelijk wordt dit bestand met een ander programma bewerkt.\n" +" Als dit het geval is, pas dan op niet met twee verschillende\n" +" versies van hetzelfde bestand te eindigen bij het bewerken.\n" + +#: memline.c:3807 +msgid " Quit, or continue with caution.\n" +msgstr " Stop of ga aandachtig verder.\n" + +#: memline.c:3808 +msgid "" +"\n" +"(2) An edit session for this file crashed.\n" +msgstr "" +"\n" +"(2) Een sessie waarin dit bestand werd bewerkt is onverhoeds gestopt.\n" + +#: memline.c:3809 +msgid " If this is the case, use \":recover\" or \"vim -r " +msgstr " Als dit het geval is, gebruikt dan \":recover\" of \"vim -r " + +#: memline.c:3811 +msgid "" +"\"\n" +" to recover the changes (see \":help recovery\").\n" +msgstr "" +"\"\n" +" om de aanpassingen te herstellen (zie \":help recovery\").\n" + +#: memline.c:3812 +msgid " If you did this already, delete the swap file \"" +msgstr " Als dit al gedaan is, verwijder dan het wisselbestand \"" + +#: memline.c:3814 +msgid "" +"\"\n" +" to avoid this message.\n" +msgstr "" +"\"\n" +" om dit bericht te voorkomen.\n" + +#: memline.c:4233 +#: memline.c:4237 +msgid "Swap file \"" +msgstr "Wisselbestand \"" + +#: memline.c:4234 +#: memline.c:4240 +msgid "\" already exists!" +msgstr "\" bestaat al!" + +#: memline.c:4243 +msgid "VIM - ATTENTION" +msgstr "VIM - OPGELET" + +#: memline.c:4245 +msgid "Swap file already exists!" +msgstr "Wisselbestand bestaat reeds." + +#: memline.c:4249 +msgid "" +"&Open Read-Only\n" +"&Edit anyway\n" +"&Recover\n" +"&Quit\n" +"&Abort" +msgstr "" +"Alleen-lezen &openen\n" +"Toch b&ewerken\n" +"He&rstellen\n" +"&Stoppen\n" +"&Afbreken" + +#: memline.c:4251 +msgid "" +"&Open Read-Only\n" +"&Edit anyway\n" +"&Recover\n" +"&Delete it\n" +"&Quit\n" +"&Abort" +msgstr "" +"Alleen-lezen &openen\n" +"Toch b&ewerken\n" +"He&rstellen\n" +"Verwij&deren\n" +"&Stoppen\n" +"&Afbreken" + +#: memline.c:4322 +msgid "E326: Too many swap files found" +msgstr "E326: teveel wisselbestanden aangetroffen" + +#: menu.c:67 +msgid "E327: Part of menu-item path is not sub-menu" +msgstr "E327: deel van menu-itempad is geen submenu" + +#: menu.c:68 +msgid "E328: Menu only exists in another mode" +msgstr "E328: menu bestaat alleen in andere modus" + +#: menu.c:69 +#, c-format +msgid "E329: No menu \"%s\"" +msgstr "E329: geen menu \"%s\"" + +#. Only a mnemonic or accelerator is not valid. +#: menu.c:480 +msgid "E792: Empty menu name" +msgstr "E792: menunaam is leeg" + +#: menu.c:498 +msgid "E330: Menu path must not lead to a sub-menu" +msgstr "" + +#: menu.c:537 +msgid "E331: Must not add menu items directly to menu bar" +msgstr "" + +#: menu.c:543 +msgid "E332: Separator cannot be part of a menu path" +msgstr "" + +#. Now we have found the matching menu, and we list the mappings +#. Highlight title +#: menu.c:1112 +msgid "" +"\n" +"--- Menus ---" +msgstr "" + +#: menu.c:2146 +msgid "Tear off this menu" +msgstr "" + +#: menu.c:2211 +msgid "E333: Menu path must lead to a menu item" +msgstr "" + +#: menu.c:2231 +#, c-format +msgid "E334: Menu not found: %s" +msgstr "" + +#: menu.c:2313 +#, c-format +msgid "E335: Menu not defined for %s mode" +msgstr "" + +#: menu.c:2351 +msgid "E336: Menu path must lead to a sub-menu" +msgstr "" + +#: menu.c:2372 +msgid "E337: Menu not found - check menu names" +msgstr "" + +#: message.c:462 +#, c-format +msgid "Error detected while processing %s:" +msgstr "Fout opgetreden tijdens verwerken van %s:" + +#: message.c:487 +#, c-format +msgid "line %4ld:" +msgstr "regel %4ld:" + +#: message.c:685 +#, c-format +msgid "E354: Invalid register name: '%s'" +msgstr "" + +#: message.c:833 +msgid "Messages maintainer: Bram Moolenaar " +msgstr "Vertaald door: Erwin Poeze " + +#: message.c:1090 +msgid "Interrupt: " +msgstr "" + +#: message.c:1092 +msgid "Press ENTER or type command to continue" +msgstr "Toets ENTER of typ een opdracht om verder te gaan" + +#: message.c:2139 +#, c-format +msgid "%s line %ld" +msgstr "%s regel %ld" + +#: message.c:2839 +msgid "-- More --" +msgstr "-- meer --" + +#: message.c:2845 +msgid " SPACE/d/j: screen/page/line down, b/u/k: up, q: quit " +msgstr "" + +#: message.c:3637 +#: message.c:3652 +msgid "Question" +msgstr "Vraag" + +#: message.c:3639 +msgid "" +"&Yes\n" +"&No" +msgstr "" + +#: message.c:3672 +msgid "" +"&Yes\n" +"&No\n" +"Save &All\n" +"&Discard All\n" +"&Cancel" +msgstr "" + +#: message.c:3713 +msgid "Select Directory dialog" +msgstr "" + +#: message.c:3715 +msgid "Save File dialog" +msgstr "" + +#: message.c:3717 +msgid "Open File dialog" +msgstr "" + +#. TODO: non-GUI file selector here +#: message.c:3817 +msgid "E338: Sorry, no file browser in console mode" +msgstr "" + +#: message.c:3848 +msgid "E766: Insufficient arguments for printf()" +msgstr "" + +#: message.c:3924 +msgid "E807: Expected Float argument for printf()" +msgstr "" + +#: message.c:4812 +msgid "E767: Too many arguments to printf()" +msgstr "" + +#: misc1.c:2984 +msgid "W10: Warning: Changing a readonly file" +msgstr "" + +#: misc1.c:3278 +msgid "Type number and or click with mouse (empty cancels): " +msgstr "" + +#: misc1.c:3280 +msgid "Type number and (empty cancels): " +msgstr "" + +#: misc1.c:3332 +msgid "1 more line" +msgstr "1 regel meer" + +#: misc1.c:3334 +msgid "1 line less" +msgstr "1 regel minder" + +#: misc1.c:3339 +#, c-format +msgid "%ld more lines" +msgstr "%ld regels meer" + +#: misc1.c:3341 +#, c-format +msgid "%ld fewer lines" +msgstr "%ld regels minder" + +#: misc1.c:3344 +msgid " (Interrupted)" +msgstr " (onderbroken)" + +#: misc1.c:3409 +msgid "Beep!" +msgstr "biep!" + +#: misc1.c:8394 +msgid "Vim: preserving files...\n" +msgstr "" + +#. close all memfiles, without deleting +#: misc1.c:8404 +msgid "Vim: Finished.\n" +msgstr "" + +#: misc2.c:771 +#: misc2.c:787 +#, c-format +msgid "ERROR: " +msgstr "" + +#: misc2.c:791 +#, c-format +msgid "" +"\n" +"[bytes] total alloc-freed %lu-%lu, in use %lu, peak use %lu\n" +msgstr "" + +#: misc2.c:793 +#, c-format +msgid "" +"[calls] total re/malloc()'s %lu, total free()'s %lu\n" +"\n" +msgstr "" + +#: misc2.c:848 +msgid "E340: Line is becoming too long" +msgstr "" + +#: misc2.c:892 +#, c-format +msgid "E341: Internal error: lalloc(%ld, )" +msgstr "" + +#: misc2.c:1006 +#, c-format +msgid "E342: Out of memory! (allocating %lu bytes)" +msgstr "" + +#: misc2.c:3087 +#, c-format +msgid "Calling shell to execute: \"%s\"" +msgstr "" + +#: misc2.c:3356 +msgid "E545: Missing colon" +msgstr "" + +#: misc2.c:3358 +#: misc2.c:3385 +msgid "E546: Illegal mode" +msgstr "" + +#: misc2.c:3424 +msgid "E547: Illegal mouseshape" +msgstr "" + +#: misc2.c:3464 +msgid "E548: digit expected" +msgstr "" + +#: misc2.c:3469 +msgid "E549: Illegal percentage" +msgstr "" + +#: misc2.c:3864 +msgid "Enter encryption key: " +msgstr "" + +#: misc2.c:3865 +msgid "Enter same key again: " +msgstr "" + +#: misc2.c:3876 +msgid "Keys don't match!" +msgstr "" + +#: misc2.c:4418 +#, c-format +msgid "E343: Invalid path: '**[number]' must be at the end of the path or be followed by '%s'." +msgstr "" + +#: misc2.c:5713 +#, c-format +msgid "E344: Can't find directory \"%s\" in cdpath" +msgstr "" + +#: misc2.c:5716 +#, c-format +msgid "E345: Can't find file \"%s\" in path" +msgstr "" + +#: misc2.c:5722 +#, c-format +msgid "E346: No more directory \"%s\" found in cdpath" +msgstr "" + +#: misc2.c:5725 +#, c-format +msgid "E347: No more file \"%s\" found in path" +msgstr "" + +#: netbeans.c:390 +msgid "Cannot connect to Netbeans #2" +msgstr "" + +#: netbeans.c:400 +msgid "Cannot connect to Netbeans" +msgstr "" + +#: netbeans.c:445 +#, c-format +msgid "E668: Wrong access mode for NetBeans connection info file: \"%s\"" +msgstr "" + +#: netbeans.c:798 +msgid "read from Netbeans socket" +msgstr "" + +#: netbeans.c:1950 +#, c-format +msgid "E658: NetBeans connection lost for buffer %ld" +msgstr "" + +#: netbeans.c:2976 +msgid "E511: netbeans already connected" +msgstr "" + +#: netbeans.c:3911 +msgid "E505: " +msgstr "" + +#: normal.c:186 +msgid "E349: No identifier under cursor" +msgstr "" + +#: normal.c:2206 +msgid "E774: 'operatorfunc' is empty" +msgstr "" + +#: normal.c:2225 +msgid "E775: Eval feature not available" +msgstr "" + +#: normal.c:3240 +msgid "Warning: terminal cannot highlight" +msgstr "waarschuwing: terminal kan niet oplichten" + +#: normal.c:3535 +msgid "E348: No string under cursor" +msgstr "" + +#: normal.c:4887 +msgid "E352: Cannot erase folds with current 'foldmethod'" +msgstr "" + +#: normal.c:7449 +msgid "E664: changelist is empty" +msgstr "E664: wijzigingslijst is leeg" + +#: normal.c:7451 +msgid "E662: At start of changelist" +msgstr "E662: begin van wijzigingslijst" + +#: normal.c:7453 +msgid "E663: At end of changelist" +msgstr "E663: einde van wijzigingslijst" + +#: normal.c:8854 +msgid "Type :quit to exit Vim" +msgstr "Typ :quit om Vim te verlaten" + +#: ops.c:293 +#, c-format +msgid "1 line %sed 1 time" +msgstr "1 regel %sed 1 maal" + +#: ops.c:295 +#, c-format +msgid "1 line %sed %d times" +msgstr "1 regel %sed %d maal" + +#: ops.c:300 +#, c-format +msgid "%ld lines %sed 1 time" +msgstr "%ld regels %sed 1 maal" + +#: ops.c:303 +#, c-format +msgid "%ld lines %sed %d times" +msgstr "%ld regels %sed %d maal" + +#: ops.c:691 +#, c-format +msgid "%ld lines to indent... " +msgstr "%ld in te springen regels... " + +#: ops.c:742 +msgid "1 line indented " +msgstr "1 regel ingesprongen " + +#: ops.c:744 +#, c-format +msgid "%ld lines indented " +msgstr "%ld regels ingesprongen " + +#: ops.c:1170 +msgid "E748: No previously used register" +msgstr "" + +#. must display the prompt +#: ops.c:1741 +msgid "cannot yank; delete anyway" +msgstr "kopiëren niet mogelijk; toch verwijderd" + +#: ops.c:2338 +msgid "1 line changed" +msgstr "1 regel gewijzigd" + +#: ops.c:2340 +#, c-format +msgid "%ld lines changed" +msgstr "%ld regels gewijzigd" + +#: ops.c:2795 +#, c-format +msgid "freeing %ld lines" +msgstr "" + +#: ops.c:3080 +msgid "block of 1 line yanked" +msgstr "blok van 1 regel gekopieerd" + +#: ops.c:3083 +msgid "1 line yanked" +msgstr "1 regel gekopieerd" + +#: ops.c:3087 +#, c-format +msgid "block of %ld lines yanked" +msgstr "blok van %ld regels gekopieerd" + +#: ops.c:3090 +#, c-format +msgid "%ld lines yanked" +msgstr "%ld regels gekopieerd" + +#: ops.c:3385 +#, c-format +msgid "E353: Nothing in register %s" +msgstr "E353: niets in register %s" + +#. Highlight title +#: ops.c:3977 +msgid "" +"\n" +"--- Registers ---" +msgstr "" +"\n" +"--- Registers ---" + +#: ops.c:5351 +msgid "Illegal register name" +msgstr "ongeldige registernaam" + +#: ops.c:5447 +#, c-format +msgid "" +"\n" +"# Registers:\n" +msgstr "" +"\n" +"# Registers:\n" + +#: ops.c:5504 +#, c-format +msgid "E574: Unknown register type %d" +msgstr "" + +#: ops.c:6445 +#, c-format +msgid "%ld Cols; " +msgstr "%ld koln; " + +#: ops.c:6454 +#, c-format +msgid "Selected %s%ld of %ld Lines; %ld of %ld Words; %ld of %ld Bytes" +msgstr "geselecteerd %s%ld van %ld regels; %ld van %ld woorden; %ld van %ld bytes" + +#: ops.c:6461 +#, c-format +msgid "Selected %s%ld of %ld Lines; %ld of %ld Words; %ld of %ld Chars; %ld of %ld Bytes" +msgstr "geselecteerd %s%ld van %ld regels; %ld van %ld woorden; %ld van %ld rekens; %ld van %ld bytes" + +#: ops.c:6480 +#, c-format +msgid "Col %s of %s; Line %ld of %ld; Word %ld of %ld; Byte %ld of %ld" +msgstr "kol %s van %s; regel %ld van %ld; woord %ld van %ld; byte %ld van %ld" + +#: ops.c:6488 +#, c-format +msgid "Col %s of %s; Line %ld of %ld; Word %ld of %ld; Char %ld of %ld; Byte %ld of %ld" +msgstr "kol %s van %s; regel %ld van %ld; woord %ld van %ld; teken %ld van %ld; byte %ld van %ld" + +#: ops.c:6500 +#, c-format +msgid "(+%ld for BOM)" +msgstr "(+%ld voor BOD)" + +#: option.c:1991 +msgid "%<%f%h%m%=Page %N" +msgstr "%<%f%h%m%=pagina %N" + +#: option.c:2565 +msgid "Thanks for flying Vim" +msgstr "Dank voor het gebruik van Vim" + +#: option.c:4179 +#: option.c:4322 +msgid "E518: Unknown option" +msgstr "E518: onbekende optie" + +#: option.c:4192 +msgid "E519: Option not supported" +msgstr "E519: optie niet ondersteund" + +#: option.c:4230 +msgid "E520: Not allowed in a modeline" +msgstr "" + +#: option.c:4448 +msgid "E521: Number required after =" +msgstr "" + +#: option.c:4773 +#: option.c:5579 +msgid "E522: Not found in termcap" +msgstr "" + +#: option.c:4890 +#, c-format +msgid "E539: Illegal character <%s>" +msgstr "" + +#: option.c:5571 +msgid "E529: Cannot set 'term' to empty string" +msgstr "" + +#: option.c:5574 +msgid "E530: Cannot change term in GUI" +msgstr "" + +#: option.c:5576 +msgid "E531: Use \":gui\" to start the GUI" +msgstr "" + +#: option.c:5605 +msgid "E589: 'backupext' and 'patchmode' are equal" +msgstr "" + +#: option.c:5833 +msgid "E617: Cannot be changed in the GTK+ 2 GUI" +msgstr "" + +#: option.c:6015 +msgid "E524: Missing colon" +msgstr "" + +#: option.c:6017 +msgid "E525: Zero length string" +msgstr "" + +#: option.c:6100 +#, c-format +msgid "E526: Missing number after <%s>" +msgstr "" + +#: option.c:6114 +msgid "E527: Missing comma" +msgstr "" + +#: option.c:6121 +msgid "E528: Must specify a ' value" +msgstr "" + +#: option.c:6170 +msgid "E595: contains unprintable or wide character" +msgstr "" + +#: option.c:6214 +msgid "E596: Invalid font(s)" +msgstr "" + +#: option.c:6223 +msgid "E597: can't select fontset" +msgstr "" + +#: option.c:6225 +msgid "E598: Invalid fontset" +msgstr "" + +#: option.c:6233 +msgid "E533: can't select wide font" +msgstr "" + +#: option.c:6235 +msgid "E534: Invalid wide font" +msgstr "" + +#: option.c:6564 +#, c-format +msgid "E535: Illegal character after <%c>" +msgstr "E535: ongeldig teken na <%c>" + +#: option.c:6688 +msgid "E536: comma required" +msgstr "E536: komma is vereist" + +#: option.c:6698 +#, c-format +msgid "E537: 'commentstring' must be empty or contain %s" +msgstr "E537: 'commentstring' moet leeg zijn of het volgende bevatten: %s" + +#: option.c:6779 +msgid "E538: No mouse support" +msgstr "E538: geen muisondersteuning" + +#: option.c:7104 +msgid "E540: Unclosed expression sequence" +msgstr "E540: ongepaarde expressie-volgorde" + +#: option.c:7108 +msgid "E541: too many items" +msgstr "E541: teveel items" + +#: option.c:7110 +msgid "E542: unbalanced groups" +msgstr "E542: ongepaarde groepen" + +#: option.c:7461 +msgid "E590: A preview window already exists" +msgstr "E590: een voorvertoningsvenster bestaat al" + +#: option.c:7716 +msgid "W17: Arabic requires UTF-8, do ':set encoding=utf-8'" +msgstr "W17: Arabisch vereist UTF-8, typ ':set encoding=utf-8'" + +#: option.c:8172 +#, c-format +msgid "E593: Need at least %d lines" +msgstr "E593: vereist minstens %d regels" + +#: option.c:8182 +#, c-format +msgid "E594: Need at least %d columns" +msgstr "E594: vereist minstens %d kolommen" + +#: option.c:8501 +#, c-format +msgid "E355: Unknown option: %s" +msgstr "E355: onbekende optie: %s" + +#. 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. +#: option.c:8533 +#, c-format +msgid "E521: Number required: &%s = '%s'" +msgstr "E521: 'Number' vereist: &%s = '%s'" + +#: option.c:8657 +msgid "" +"\n" +"--- Terminal codes ---" +msgstr "" +"\n" +"--- Terminal-codes ---" + +#: option.c:8659 +msgid "" +"\n" +"--- Global option values ---" +msgstr "" +"\n" +"--- Globale optiewaarden ---" + +#: option.c:8661 +msgid "" +"\n" +"--- Local option values ---" +msgstr "" +"\n" +"--- Lokale optiewaarden ---" + +#: option.c:8663 +msgid "" +"\n" +"--- Options ---" +msgstr "" +"\n" +"--- Opties ---" + +#: option.c:9489 +msgid "E356: get_varp ERROR" +msgstr "" + +#: option.c:10604 +#, c-format +msgid "E357: 'langmap': Matching character missing for %s" +msgstr "" + +#: option.c:10628 +#, c-format +msgid "E358: 'langmap': Extra characters after semicolon: %s" +msgstr "" + +#: os_amiga.c:278 +msgid "cannot open " +msgstr "gefaald tijden openen van " + +#: os_amiga.c:313 +msgid "VIM: Can't open window!\n" +msgstr "VIM: kan venster niet openen!\n" + +#: os_amiga.c:340 +msgid "Need Amigados version 2.04 or later\n" +msgstr "Vereist Amigados versie 2.04 of nieuwer\n" + +#: os_amiga.c:346 +#, c-format +msgid "Need %s version %ld\n" +msgstr "Vereist %s versie %ld\n" + +#: os_amiga.c:419 +msgid "Cannot open NIL:\n" +msgstr "" + +#: os_amiga.c:437 +msgid "Cannot create " +msgstr "Gefaald tijdens aanmaken van " + +#: os_amiga.c:943 +#, c-format +msgid "Vim exiting with %d\n" +msgstr "Vim stoppen met %d\n" + +#: os_amiga.c:979 +msgid "cannot change console mode ?!\n" +msgstr "" + +#: os_amiga.c:1057 +msgid "mch_get_shellsize: not a console??\n" +msgstr "" + +#. if Vim opened a window: Executing a shell may cause crashes +#: os_amiga.c:1212 +msgid "E360: Cannot execute shell with -f option" +msgstr "" + +#: os_amiga.c:1253 +#: os_amiga.c:1343 +msgid "Cannot execute " +msgstr "" + +#: os_amiga.c:1256 +#: os_amiga.c:1353 +msgid "shell " +msgstr "" + +#: os_amiga.c:1276 +#: os_amiga.c:1378 +msgid " returned\n" +msgstr "" + +#: os_amiga.c:1540 +msgid "ANCHOR_BUF_SIZE too small." +msgstr "" + +#: os_amiga.c:1544 +msgid "I/O ERROR" +msgstr "" + +#: os_mswin.c:595 +msgid "Message" +msgstr "" + +#: os_mswin.c:710 +msgid "'columns' is not 80, cannot execute external commands" +msgstr "" + +#: os_mswin.c:2143 +msgid "E237: Printer selection failed" +msgstr "" + +#: os_mswin.c:2183 +#, c-format +msgid "to %s on %s" +msgstr "" + +#: os_mswin.c:2198 +#, c-format +msgid "E613: Unknown printer font: %s" +msgstr "" + +#: os_mswin.c:2247 +#: os_mswin.c:2257 +#, c-format +msgid "E238: Print error: %s" +msgstr "" + +#: os_mswin.c:2285 +#, c-format +msgid "Printing '%s'" +msgstr "" + +#: os_mswin.c:3461 +#, c-format +msgid "E244: Illegal charset name \"%s\" in font name \"%s\"" +msgstr "" + +#: os_mswin.c:3471 +#, c-format +msgid "E245: Illegal char '%c' in font name \"%s\"" +msgstr "" + +#: os_riscos.c:1263 +msgid "E366: Invalid 'osfiletype' option - using Text" +msgstr "" + +#: os_unix.c:1083 +msgid "Vim: Double signal, exiting\n" +msgstr "Vim: dubbel signaal, stoppen\n" + +#: os_unix.c:1089 +#, c-format +msgid "Vim: Caught deadly signal %s\n" +msgstr "Vim: fataal signaal gevangen %s\n" + +#: os_unix.c:1092 +#, c-format +msgid "Vim: Caught deadly signal\n" +msgstr "Vim: fataal signaal gevangen\n" + +#: os_unix.c:1430 +#, c-format +msgid "Opening the X display took %ld msec" +msgstr "Openen van X-display vereiste %ld ms" + +#: os_unix.c:1457 +msgid "" +"\n" +"Vim: Got X error\n" +msgstr "" + +#: os_unix.c:1568 +msgid "Testing the X display failed" +msgstr "" + +#: os_unix.c:1708 +msgid "Opening the X display timed out" +msgstr "" + +#: os_unix.c:2682 +#: os_unix.c:2689 +msgid "" +"\n" +"Could not get security context for " +msgstr "" + +#: os_unix.c:2699 +msgid "" +"\n" +"Could not set security context for " +msgstr "" + +#: os_unix.c:3718 +#: os_unix.c:4643 +msgid "" +"\n" +"Cannot execute shell " +msgstr "" + +#: os_unix.c:3766 +msgid "" +"\n" +"Cannot execute shell sh\n" +msgstr "" + +#: os_unix.c:3770 +#: os_unix.c:4649 +msgid "" +"\n" +"shell returned " +msgstr "" + +#: os_unix.c:3914 +msgid "" +"\n" +"Cannot create pipes\n" +msgstr "" + +#: os_unix.c:3928 +#: os_unix.c:4192 +msgid "" +"\n" +"Cannot fork\n" +msgstr "" + +#: os_unix.c:4656 +msgid "" +"\n" +"Command terminated\n" +msgstr "" + +#: os_unix.c:4957 +#: os_unix.c:5122 +#: os_unix.c:6852 +msgid "XSMP lost ICE connection" +msgstr "" + +#: os_unix.c:6252 +#: os_unix.c:6355 +#, c-format +msgid "dlerror = \"%s\"" +msgstr "" + +#: os_unix.c:6437 +msgid "Opening the X display failed" +msgstr "" + +#: os_unix.c:6761 +msgid "XSMP handling save-yourself request" +msgstr "" + +#: os_unix.c:6875 +msgid "XSMP opening connection" +msgstr "" + +#: os_unix.c:6894 +msgid "XSMP ICE connection watch failed" +msgstr "" + +#: os_unix.c:6918 +#, c-format +msgid "XSMP SmcOpenConnection failed: %s" +msgstr "" + +#: os_vms_mms.c:60 +msgid "At line" +msgstr "Bij regel" + +#: os_w32exe.c:89 +msgid "Could not load vim32.dll!" +msgstr "" + +#: os_w32exe.c:89 +#: os_w32exe.c:100 +msgid "VIM Error" +msgstr "Vim-fout" + +#: os_w32exe.c:99 +msgid "Could not fix up function pointers to the DLL!" +msgstr "" + +#: os_win16.c:342 +#: os_win32.c:3399 +#, c-format +msgid "shell returned %d" +msgstr "" + +#: os_win32.c:2856 +#, c-format +msgid "Vim: Caught %s event\n" +msgstr "" + +#: os_win32.c:2858 +msgid "close" +msgstr "sluiten" + +#: os_win32.c:2860 +msgid "logoff" +msgstr "uitloggen" + +#: os_win32.c:2861 +msgid "shutdown" +msgstr "afsluiten" + +#: os_win32.c:3351 +msgid "E371: Command not found" +msgstr "E371: opdracht niet gevonden" + +#: os_win32.c:3364 +msgid "" +"VIMRUN.EXE not found in your $PATH.\n" +"External commands will not pause after completion.\n" +"See :help win32-vimrun for more information." +msgstr "" + +#: os_win32.c:3367 +msgid "Vim Warning" +msgstr "Vim-waarschuwing" + +#: quickfix.c:330 +#, c-format +msgid "E372: Too many %%%c in format string" +msgstr "" + +#: quickfix.c:343 +#, c-format +msgid "E373: Unexpected %%%c in format string" +msgstr "" + +#: quickfix.c:405 +msgid "E374: Missing ] in format string" +msgstr "" + +#: quickfix.c:419 +#, c-format +msgid "E375: Unsupported %%%c in format string" +msgstr "" + +#: quickfix.c:439 +#, c-format +msgid "E376: Invalid %%%c in format string prefix" +msgstr "" + +#: quickfix.c:447 +#, c-format +msgid "E377: Invalid %%%c in format string" +msgstr "" + +#: quickfix.c:473 +msgid "E378: 'errorformat' contains no pattern" +msgstr "" + +#: quickfix.c:706 +msgid "E379: Missing or empty directory name" +msgstr "" + +#: quickfix.c:1408 +msgid "E553: No more items" +msgstr "" + +#: quickfix.c:1830 +#, c-format +msgid "(%d of %d)%s%s: " +msgstr "" + +#: quickfix.c:1832 +msgid " (line deleted)" +msgstr "" + +#: quickfix.c:2055 +msgid "E380: At bottom of quickfix stack" +msgstr "" + +#: quickfix.c:2064 +msgid "E381: At top of quickfix stack" +msgstr "" + +#: quickfix.c:2078 +#, c-format +msgid "error list %d of %d; %d errors" +msgstr "" + +#: quickfix.c:2664 +msgid "E382: Cannot write, 'buftype' option is set" +msgstr "" + +#: quickfix.c:3068 +msgid "E683: File name missing or invalid pattern" +msgstr "" + +#: quickfix.c:3166 +#, c-format +msgid "Cannot open file \"%s\"" +msgstr "" + +#: quickfix.c:3703 +msgid "E681: Buffer is not loaded" +msgstr "E681: buffer is niet geladen" + +#: quickfix.c:3764 +msgid "E777: String or List expected" +msgstr "" + +#: regexp.c:331 +#, c-format +msgid "E369: invalid item in %s%%[]" +msgstr "" + +#: regexp.c:1059 +#: regexp.c:1077 +msgid "E339: Pattern too long" +msgstr "" + +#: regexp.c:1234 +msgid "E50: Too many \\z(" +msgstr "" + +#: regexp.c:1245 +#, c-format +msgid "E51: Too many %s(" +msgstr "" + +#: regexp.c:1302 +msgid "E52: Unmatched \\z(" +msgstr "E52: \\z( is niet gepaard" + +#: regexp.c:1306 +#, c-format +msgid "E53: Unmatched %s%%(" +msgstr "E53: %s%%( is niet gepaard" + +#: regexp.c:1308 +#, c-format +msgid "E54: Unmatched %s(" +msgstr "E54: %s( is niet gepaard" + +#: regexp.c:1313 +#, c-format +msgid "E55: Unmatched %s)" +msgstr "E55: %s) is ongepaard" + +#: regexp.c:1531 +#, c-format +msgid "E59: invalid character after %s@" +msgstr "" + +#: regexp.c:1565 +#, c-format +msgid "E60: Too many complex %s{...}s" +msgstr "" + +#: regexp.c:1581 +#, c-format +msgid "E61: Nested %s*" +msgstr "E61: geneste %s*" + +#: regexp.c:1584 +#, c-format +msgid "E62: Nested %s%c" +msgstr "E62: geneste %s%c" + +#: regexp.c:1704 +msgid "E63: invalid use of \\_" +msgstr "E63: onjuist gebruikt van \\_" + +#: regexp.c:1760 +#, c-format +msgid "E64: %s%c follows nothing" +msgstr "E64: %s%c volgt op niets" + +#: regexp.c:1816 +msgid "E65: Illegal back reference" +msgstr "E65: ongeldige terugverwijzing" + +#: regexp.c:1829 +msgid "E66: \\z( not allowed here" +msgstr "E66: \\z( hier niet toegestaan" + +#: regexp.c:1848 +msgid "E67: \\z1 et al. not allowed here" +msgstr "E67: \\z1 en andere hier niet toegestaan" + +#: regexp.c:1860 +msgid "E68: Invalid character after \\z" +msgstr "E68: ongeldig teken na \\z" + +#: regexp.c:1912 +#, c-format +msgid "E69: Missing ] after %s%%[" +msgstr "E69: ontbrekende ] na %s%%[" + +#: regexp.c:1928 +#, c-format +msgid "E70: Empty %s%%[]" +msgstr "E70: leeg %s%%[]" + +#: regexp.c:1973 +#, c-format +msgid "E678: Invalid character after %s%%[dxouU]" +msgstr "E678: onjuist teken na %s%%[dxouU]" + +#: regexp.c:2044 +#, c-format +msgid "E71: Invalid character after %s%%" +msgstr "E71: onjuist teken na %s%%" + +#: regexp.c:2337 +#, c-format +msgid "E769: Missing ] after %s[" +msgstr "E769: ontbrekende ] na %s[" + +#: regexp.c:3033 +#, c-format +msgid "E554: Syntax error in %s{...}" +msgstr "E554: Syntaxfout in %s{...}" + +#: regexp.c:3876 +msgid "External submatches:\n" +msgstr "" + +#: screen.c:9356 +msgid " VREPLACE" +msgstr "" + +#: screen.c:9360 +msgid " REPLACE" +msgstr " VERVANGEN" + +#: screen.c:9365 +msgid " REVERSE" +msgstr "" + +#: screen.c:9367 +msgid " INSERT" +msgstr " INVOEGEN" + +#: screen.c:9370 +msgid " (insert)" +msgstr " (invoegen)" + +#: screen.c:9372 +msgid " (replace)" +msgstr " (vervangen)" + +#: screen.c:9374 +msgid " (vreplace)" +msgstr "" + +#: screen.c:9377 +msgid " Hebrew" +msgstr "" + +#: screen.c:9388 +msgid " Arabic" +msgstr "" + +#: screen.c:9391 +msgid " (lang)" +msgstr "" + +#: screen.c:9395 +msgid " (paste)" +msgstr "" + +#: screen.c:9408 +msgid " VISUAL" +msgstr " VISUEEL" + +#: screen.c:9409 +msgid " VISUAL LINE" +msgstr " VISUELE REGEL" + +#: screen.c:9410 +msgid " VISUAL BLOCK" +msgstr " VISUEEL BLOK" + +#: screen.c:9411 +msgid " SELECT" +msgstr " SELECTEREN" + +#: screen.c:9412 +msgid " SELECT LINE" +msgstr " REGELSELECTIE" + +#: screen.c:9413 +msgid " SELECT BLOCK" +msgstr " BLOKSELECTIE" + +#: screen.c:9429 +#: screen.c:9495 +msgid "recording" +msgstr "opnemen" + +#: search.c:562 +#, c-format +msgid "E383: Invalid search string: %s" +msgstr "E383: ongeldige zoekstring: %s" + +#: search.c:983 +#, c-format +msgid "E384: search hit TOP without match for: %s" +msgstr "E384: TOP bereikt zonder overeenkomst voor: %s" + +#: search.c:986 +#, c-format +msgid "E385: search hit BOTTOM without match for: %s" +msgstr "E385: BODEM bereikt zonder overeenkomst voor: %s" + +#: search.c:1418 +msgid "E386: Expected '?' or '/' after ';'" +msgstr "E386: verwachte '?' of '/' na ';'" + +#: search.c:4691 +msgid " (includes previously listed match)" +msgstr " (bevat eerder getoonde overeenkomst)" + +#. cursor at status line +#: search.c:4711 +msgid "--- Included files " +msgstr "--- bevatte bestanden " + +#: search.c:4713 +msgid "not found " +msgstr "niet gevonden " + +#: search.c:4714 +msgid "in path ---\n" +msgstr "in pad ---\n" + +#: search.c:4771 +msgid " (Already listed)" +msgstr " (Reeds getoond)" + +#: search.c:4773 +msgid " NOT FOUND" +msgstr " NIET GEVONDEN" + +#: search.c:4827 +#, c-format +msgid "Scanning included file: %s" +msgstr "" + +#: search.c:4836 +#, c-format +msgid "Searching included file %s" +msgstr "" + +#: search.c:5059 +msgid "E387: Match is on current line" +msgstr "" + +#: search.c:5203 +msgid "All included files were found" +msgstr "" + +#: search.c:5205 +msgid "No included files" +msgstr "" + +#: search.c:5221 +msgid "E388: Couldn't find definition" +msgstr "" + +#: search.c:5223 +msgid "E389: Couldn't find pattern" +msgstr "E389: kan zoekpatroon niet vinden" + +#: search.c:5401 +msgid "Substitute " +msgstr "Vervangen " + +#: search.c:5414 +#, c-format +msgid "" +"\n" +"# Last %sSearch Pattern:\n" +"~" +msgstr "" +"\n" +"# Laatste %szoekpatroon:\n" +"~" + +#: spell.c:984 +msgid "E759: Format error in spell file" +msgstr "" + +#: spell.c:985 +msgid "E758: Truncated spell file" +msgstr "" + +#: spell.c:986 +#, c-format +msgid "Trailing text in %s line %d: %s" +msgstr "" + +#: spell.c:987 +#, c-format +msgid "Affix name too long in %s line %d: %s" +msgstr "" + +#: spell.c:988 +msgid "E761: Format error in affix file FOL, LOW or UPP" +msgstr "" + +#: spell.c:989 +msgid "E762: Character in FOL, LOW or UPP is out of range" +msgstr "" + +#: spell.c:990 +msgid "Compressing word tree..." +msgstr "" + +#: spell.c:2146 +msgid "E756: Spell checking is not enabled" +msgstr "" + +#: spell.c:2499 +#, c-format +msgid "Warning: Cannot find word list \"%s.%s.spl\" or \"%s.ascii.spl\"" +msgstr "" + +#: spell.c:2773 +#, c-format +msgid "Reading spell file \"%s\"" +msgstr "" + +#: spell.c:2805 +msgid "E757: This does not look like a spell file" +msgstr "" + +#: spell.c:2811 +msgid "E771: Old spell file, needs to be updated" +msgstr "" + +#: spell.c:2816 +msgid "E772: Spell file is for newer version of Vim" +msgstr "" + +#: spell.c:2919 +msgid "E770: Unsupported section in spell file" +msgstr "" + +#: spell.c:4320 +#, c-format +msgid "Warning: region %s not supported" +msgstr "" + +#: spell.c:5207 +#, c-format +msgid "Reading affix file %s ..." +msgstr "" + +#: spell.c:5255 +#: spell.c:6599 +#: spell.c:7178 +#, c-format +msgid "Conversion failure for word in %s line %d: %s" +msgstr "" + +#: spell.c:5303 +#: spell.c:7213 +#, c-format +msgid "Conversion in %s not supported: from %s to %s" +msgstr "" + +#: spell.c:5307 +#: spell.c:7218 +#, c-format +msgid "Conversion in %s not supported" +msgstr "" + +#: spell.c:5320 +#, c-format +msgid "Invalid value for FLAG in %s line %d: %s" +msgstr "" + +#: spell.c:5333 +#, c-format +msgid "FLAG after using flags in %s line %d: %s" +msgstr "" + +#: spell.c:5424 +#, c-format +msgid "Defining COMPOUNDFORBIDFLAG after PFX item may give wrong results in %s line %d" +msgstr "" + +#: spell.c:5433 +#, c-format +msgid "Defining COMPOUNDPERMITFLAG after PFX item may give wrong results in %s line %d" +msgstr "" + +#: spell.c:5454 +#, c-format +msgid "Wrong COMPOUNDRULES value in %s line %d: %s" +msgstr "" + +#: spell.c:5481 +#, c-format +msgid "Wrong COMPOUNDWORDMAX value in %s line %d: %s" +msgstr "" + +#: spell.c:5489 +#, c-format +msgid "Wrong COMPOUNDMIN value in %s line %d: %s" +msgstr "" + +#: spell.c:5497 +#, c-format +msgid "Wrong COMPOUNDSYLMAX value in %s line %d: %s" +msgstr "" + +#: spell.c:5519 +#, c-format +msgid "Wrong CHECKCOMPOUNDPATTERN value in %s line %d: %s" +msgstr "" + +#: spell.c:5585 +#, c-format +msgid "Different combining flag in continued affix block in %s line %d: %s" +msgstr "" + +#: spell.c:5588 +#, c-format +msgid "Duplicate affix in %s line %d: %s" +msgstr "" + +#: spell.c:5610 +#, c-format +msgid "Affix also used for BAD/RARE/KEEPCASE/NEEDAFFIX/NEEDCOMPOUND/NOSUGGEST in %s line %d: %s" +msgstr "" + +#: spell.c:5634 +#, c-format +msgid "Expected Y or N in %s line %d: %s" +msgstr "" + +#: spell.c:5718 +#, c-format +msgid "Broken condition in %s line %d: %s" +msgstr "" + +#: spell.c:5866 +#, c-format +msgid "Expected REP(SAL) count in %s line %d" +msgstr "" + +#: spell.c:5901 +#, c-format +msgid "Expected MAP count in %s line %d" +msgstr "" + +#: spell.c:5920 +#, c-format +msgid "Duplicate character in MAP in %s line %d" +msgstr "" + +#: spell.c:5977 +#, c-format +msgid "Unrecognized or duplicate item in %s line %d: %s" +msgstr "" + +#: spell.c:6005 +#, c-format +msgid "Missing FOL/LOW/UPP line in %s" +msgstr "" + +#: spell.c:6031 +msgid "COMPOUNDSYLMAX used without SYLLABLE" +msgstr "" + +#: spell.c:6049 +msgid "Too many postponed prefixes" +msgstr "" + +#: spell.c:6051 +msgid "Too many compound flags" +msgstr "" + +#: spell.c:6053 +msgid "Too many postponed prefixes and/or compound flags" +msgstr "" + +#: spell.c:6065 +#, c-format +msgid "Missing SOFO%s line in %s" +msgstr "" + +#: spell.c:6068 +#, c-format +msgid "Both SAL and SOFO lines in %s" +msgstr "" + +#: spell.c:6175 +#, c-format +msgid "Flag is not a number in %s line %d: %s" +msgstr "" + +#: spell.c:6178 +#, c-format +msgid "Illegal flag in %s line %d: %s" +msgstr "" + +#: spell.c:6395 +#: spell.c:6408 +#, c-format +msgid "%s value differs from what is used in another .aff file" +msgstr "" + +#: spell.c:6560 +#, c-format +msgid "Reading dictionary file %s ..." +msgstr "" + +#: spell.c:6569 +#, c-format +msgid "E760: No word count in %s" +msgstr "" + +#: spell.c:6640 +#, c-format +msgid "line %6d, word %6d - %s" +msgstr "" + +#: spell.c:6664 +#, c-format +msgid "Duplicate word in %s line %d: %s" +msgstr "" + +#: spell.c:6667 +#, c-format +msgid "First duplicate word in %s line %d: %s" +msgstr "" + +#: spell.c:6722 +#, c-format +msgid "%d duplicate word(s) in %s" +msgstr "" + +#: spell.c:6724 +#, c-format +msgid "Ignored %d word(s) with non-ASCII characters in %s" +msgstr "" + +#: spell.c:7147 +#, c-format +msgid "Reading word file %s ..." +msgstr "" + +#: spell.c:7197 +#, c-format +msgid "Duplicate /encoding= line ignored in %s line %d: %s" +msgstr "" + +#: spell.c:7200 +#, c-format +msgid "/encoding= line after word ignored in %s line %d: %s" +msgstr "" + +#: spell.c:7227 +#, c-format +msgid "Duplicate /regions= line ignored in %s line %d: %s" +msgstr "" + +#: spell.c:7233 +#, c-format +msgid "Too many regions in %s line %d: %s" +msgstr "" + +#: spell.c:7247 +#, c-format +msgid "/ line ignored in %s line %d: %s" +msgstr "" + +#: spell.c:7277 +#, c-format +msgid "Invalid region nr in %s line %d: %s" +msgstr "" + +#: spell.c:7285 +#, c-format +msgid "Unrecognized flags in %s line %d: %s" +msgstr "" + +#: spell.c:7315 +#, c-format +msgid "Ignored %d words with non-ASCII characters" +msgstr "" + +#: spell.c:7776 +#, c-format +msgid "Compressed %d of %d nodes; %d (%d%%) remaining" +msgstr "" + +#: spell.c:8567 +msgid "Reading back spell file..." +msgstr "" + +#. +#. * Go through the trie of good words, soundfold each word and add it to +#. * the soundfold trie. +#. +#: spell.c:8588 +msgid "Performing soundfolding..." +msgstr "" + +#: spell.c:8601 +#, c-format +msgid "Number of words after soundfolding: %ld" +msgstr "" + +#: spell.c:8726 +#, c-format +msgid "Total number of words: %d" +msgstr "" + +#: spell.c:8943 +#, c-format +msgid "Writing suggestion file %s ..." +msgstr "" + +#: spell.c:9004 +#: spell.c:9265 +#, c-format +msgid "Estimated runtime memory use: %d bytes" +msgstr "" + +#: spell.c:9136 +msgid "E751: Output file name must not have region name" +msgstr "" + +#: spell.c:9138 +msgid "E754: Only up to 8 regions supported" +msgstr "" + +#: spell.c:9168 +#, c-format +msgid "E755: Invalid region in %s" +msgstr "" + +#: spell.c:9239 +msgid "Warning: both compounding and NOBREAK specified" +msgstr "" + +#: spell.c:9258 +#, c-format +msgid "Writing spell file %s ..." +msgstr "" + +#: spell.c:9263 +msgid "Done!" +msgstr "" + +#: spell.c:9390 +#, c-format +msgid "E765: 'spellfile' does not have %ld entries" +msgstr "" + +#: spell.c:9435 +#, c-format +msgid "Word removed from %s" +msgstr "" + +#: spell.c:9480 +#, c-format +msgid "Word added to %s" +msgstr "" + +#: spell.c:9799 +msgid "E763: Word characters differ between spell files" +msgstr "" + +#: spell.c:10177 +msgid "Sorry, no suggestions" +msgstr "" + +#: spell.c:10181 +#, c-format +msgid "Sorry, only %ld suggestions" +msgstr "" + +#. for when 'cmdheight' > 1 +#. avoid more prompt +#: spell.c:10202 +#, c-format +msgid "Change \"%.*s\" to:" +msgstr "" + +#: spell.c:10242 +#, c-format +msgid " < \"%.*s\"" +msgstr "" + +#: spell.c:10420 +msgid "E752: No previous spell replacement" +msgstr "" + +#: spell.c:10470 +#, c-format +msgid "E753: Not found: %s" +msgstr "" + +#: spell.c:10890 +#, c-format +msgid "E778: This does not look like a .sug file: %s" +msgstr "" + +#: spell.c:10897 +#, c-format +msgid "E779: Old .sug file, needs to be updated: %s" +msgstr "" + +#: spell.c:10903 +#, c-format +msgid "E780: .sug file is for newer version of Vim: %s" +msgstr "" + +#: spell.c:10913 +#, c-format +msgid "E781: .sug file doesn't match .spl file: %s" +msgstr "" + +#: spell.c:10926 +#, c-format +msgid "E782: error while reading .sug file: %s" +msgstr "" + +#. This should have been checked when generating the .spl +#. * file. +#: spell.c:13623 +msgid "E783: duplicate char in MAP entry" +msgstr "" + +#: syntax.c:3321 +#: syntax.c:3346 +#: syntax.c:3372 +#, c-format +msgid "E390: Illegal argument: %s" +msgstr "" + +#: syntax.c:3571 +#, c-format +msgid "E391: No such syntax cluster: %s" +msgstr "" + +#: syntax.c:3730 +msgid "No Syntax items defined for this buffer" +msgstr "" + +#: syntax.c:3738 +msgid "syncing on C-style comments" +msgstr "" + +#: syntax.c:3746 +msgid "no syncing" +msgstr "" + +#: syntax.c:3749 +msgid "syncing starts " +msgstr "" + +#: syntax.c:3751 +#: syntax.c:3827 +msgid " lines before top line" +msgstr "" + +#: syntax.c:3756 +msgid "" +"\n" +"--- Syntax sync items ---" +msgstr "" + +#: syntax.c:3761 +msgid "" +"\n" +"syncing on items" +msgstr "" + +#: syntax.c:3767 +msgid "" +"\n" +"--- Syntax items ---" +msgstr "" + +#: syntax.c:3790 +#, c-format +msgid "E392: No such syntax cluster: %s" +msgstr "" + +#: syntax.c:3817 +msgid "minimal " +msgstr "" + +#: syntax.c:3824 +msgid "maximal " +msgstr "" + +#: syntax.c:3836 +msgid "; match " +msgstr "" + +#: syntax.c:3838 +msgid " line breaks" +msgstr "" + +#: syntax.c:4480 +msgid "E395: contains argument not accepted here" +msgstr "" + +#: syntax.c:4491 +msgid "E396: containedin argument not accepted here" +msgstr "" + +#: syntax.c:4535 +msgid "E393: group[t]here not accepted here" +msgstr "" + +#: syntax.c:4559 +#, c-format +msgid "E394: Didn't find region item for %s" +msgstr "" + +#: syntax.c:4636 +msgid "E397: Filename required" +msgstr "" + +#: syntax.c:4759 +#, c-format +msgid "E789: Missing ']': %s" +msgstr "" + +#: syntax.c:5004 +#, c-format +msgid "E398: Missing '=': %s" +msgstr "" + +#: syntax.c:5166 +#, c-format +msgid "E399: Not enough arguments: syntax region %s" +msgstr "" + +#: syntax.c:5500 +msgid "E400: No cluster specified" +msgstr "" + +#: syntax.c:5537 +#, c-format +msgid "E401: Pattern delimiter not found: %s" +msgstr "" + +#: syntax.c:5612 +#, c-format +msgid "E402: Garbage after pattern: %s" +msgstr "" + +#: syntax.c:5701 +msgid "E403: syntax sync: line continuations pattern specified twice" +msgstr "" + +#: syntax.c:5758 +#, c-format +msgid "E404: Illegal arguments: %s" +msgstr "" + +#: syntax.c:5808 +#, c-format +msgid "E405: Missing equal sign: %s" +msgstr "" + +#: syntax.c:5814 +#, c-format +msgid "E406: Empty argument: %s" +msgstr "" + +#: syntax.c:5840 +#, c-format +msgid "E407: %s not allowed here" +msgstr "" + +#: syntax.c:5847 +#, c-format +msgid "E408: %s must be first in contains list" +msgstr "" + +#: syntax.c:5917 +#, c-format +msgid "E409: Unknown group name: %s" +msgstr "" + +#: syntax.c:6153 +#, c-format +msgid "E410: Invalid :syntax subcommand: %s" +msgstr "" + +#: syntax.c:6702 +msgid "E679: recursive loop loading syncolor.vim" +msgstr "" + +#: syntax.c:6829 +#, c-format +msgid "E411: highlight group not found: %s" +msgstr "" + +#: syntax.c:6853 +#, c-format +msgid "E412: Not enough arguments: \":highlight link %s\"" +msgstr "" + +#: syntax.c:6860 +#, c-format +msgid "E413: Too many arguments: \":highlight link %s\"" +msgstr "" + +#: syntax.c:6880 +msgid "E414: group has settings, highlight link ignored" +msgstr "" + +#: syntax.c:7012 +#, c-format +msgid "E415: unexpected equal sign: %s" +msgstr "" + +#: syntax.c:7048 +#, c-format +msgid "E416: missing equal sign: %s" +msgstr "" + +#: syntax.c:7076 +#, c-format +msgid "E417: missing argument: %s" +msgstr "" + +#: syntax.c:7113 +#, c-format +msgid "E418: Illegal value: %s" +msgstr "" + +#: syntax.c:7232 +msgid "E419: FG color unknown" +msgstr "" + +#: syntax.c:7243 +msgid "E420: BG color unknown" +msgstr "" + +#: syntax.c:7304 +#, c-format +msgid "E421: Color name or number not recognized: %s" +msgstr "" + +#: syntax.c:7537 +#, c-format +msgid "E422: terminal code too long: %s" +msgstr "" + +#: syntax.c:7584 +#, c-format +msgid "E423: Illegal argument: %s" +msgstr "" + +#: syntax.c:8145 +msgid "E424: Too many different highlighting attributes in use" +msgstr "" + +#: syntax.c:8894 +msgid "E669: Unprintable character in group name" +msgstr "" + +#: syntax.c:8903 +msgid "W18: Invalid character in group name" +msgstr "" + +#: tag.c:85 +msgid "E555: at bottom of tag stack" +msgstr "" + +#: tag.c:86 +msgid "E556: at top of tag stack" +msgstr "" + +#: tag.c:435 +msgid "E425: Cannot go before first matching tag" +msgstr "" + +#: tag.c:584 +#, c-format +msgid "E426: tag not found: %s" +msgstr "E426: tag niet gevonden: %s" + +#: tag.c:617 +msgid " # pri kind tag" +msgstr "" + +#: tag.c:620 +msgid "file\n" +msgstr "" + +#: tag.c:954 +msgid "E427: There is only one matching tag" +msgstr "" + +#: tag.c:956 +msgid "E428: Cannot go beyond last matching tag" +msgstr "" + +#: tag.c:980 +#, c-format +msgid "File \"%s\" does not exist" +msgstr "" + +#. Give an indication of the number of matching tags +#: tag.c:992 +#, c-format +msgid "tag %d of %d%s" +msgstr "" + +#: tag.c:995 +msgid " or more" +msgstr "" + +#: tag.c:997 +msgid " Using tag with different case!" +msgstr "" + +#: tag.c:1052 +#, c-format +msgid "E429: File \"%s\" does not exist" +msgstr "" + +#. Highlight title +#: tag.c:1120 +msgid "" +"\n" +" # TO tag FROM line in file/text" +msgstr "" + +#: tag.c:1547 +#, c-format +msgid "Searching tags file %s" +msgstr "" + +#: tag.c:1738 +#, c-format +msgid "E430: Tag file path truncated for %s\n" +msgstr "" + +#: tag.c:2389 +#, c-format +msgid "E431: Format error in tags file \"%s\"" +msgstr "" + +#: tag.c:2393 +#, c-format +msgid "Before byte %ld" +msgstr "" + +#: tag.c:2426 +#, c-format +msgid "E432: Tags file not sorted: %s" +msgstr "" + +#. never opened any tags file +#: tag.c:2470 +msgid "E433: No tags file" +msgstr "E433: geen tags-bestand" + +#: tag.c:2749 +msgid "Ignoring long line in tags file" +msgstr "" + +#: tag.c:3258 +msgid "E434: Can't find tag pattern" +msgstr "" + +#: tag.c:3269 +msgid "E435: Couldn't find tag, just guessing!" +msgstr "" + +#: term.c:1793 +msgid "' not known. Available builtin terminals are:" +msgstr "" + +#: term.c:1817 +msgid "defaulting to '" +msgstr "" + +#: term.c:2172 +msgid "E557: Cannot open termcap file" +msgstr "" + +#: term.c:2176 +msgid "E558: Terminal entry not found in terminfo" +msgstr "" + +#: term.c:2178 +msgid "E559: Terminal entry not found in termcap" +msgstr "" + +#: term.c:2337 +#, c-format +msgid "E436: No \"%s\" entry in termcap" +msgstr "" + +#: term.c:2814 +msgid "E437: terminal capability \"cm\" required" +msgstr "" + +#. Highlight title +#: term.c:5283 +msgid "" +"\n" +"--- Terminal keys ---" +msgstr "" + +#: ui.c:284 +msgid "new shell started\n" +msgstr "" + +#: ui.c:1886 +msgid "Vim: Error reading input, exiting...\n" +msgstr "Vim: lezen van de invoer is mislukt. Stoppen...\n" + +#: ui.c:2409 +msgid "Used CUT_BUFFER0 instead of empty selection" +msgstr "" + +#. must display the prompt +#: undo.c:654 +msgid "No undo possible; continue anyway" +msgstr "" + +#. magic at start of header +#. magic after last header +#. magic at start of entry +#. magic after last entry +#. 2-byte undofile version number +#. idem, encrypted +#: undo.c:675 +#, c-format +msgid "E828: Cannot open undo file for writing: %s" +msgstr "" + +#: undo.c:784 +#, c-format +msgid "E825: Corrupted undo file (%s): %s" +msgstr "" + +#: undo.c:1195 +msgid "Cannot write undo file in any directory in 'undodir'" +msgstr "" + +#: undo.c:1243 +#, c-format +msgid "Will not overwrite with undo file, cannot read: %s" +msgstr "" + +#: undo.c:1265 +#, c-format +msgid "Will not overwrite, this is not an undo file: %s" +msgstr "" + +#: undo.c:1282 +msgid "Skipping undo file write, noting to undo" +msgstr "" + +#: undo.c:1297 +#, c-format +msgid "Writing undo file: %s" +msgstr "" + +#: undo.c:1387 +#, c-format +msgid "E829: write error in undo file: %s" +msgstr "" + +#: undo.c:1467 +#, c-format +msgid "Not reading undo file, owner differs: %s" +msgstr "" + +#: undo.c:1481 +#, c-format +msgid "Reading undo file: %s" +msgstr "" + +#: undo.c:1489 +#, c-format +msgid "E822: Cannot open undo file for reading: %s" +msgstr "" + +#: undo.c:1499 +#, c-format +msgid "E823: Not an undo file: %s" +msgstr "" + +#: undo.c:1508 +#, c-format +msgid "E832: Non-encrypted file has encrypted undo file: %s" +msgstr "" + +#: undo.c:1514 +#, c-format +msgid "E826: Undo file decryption failed: %s" +msgstr "" + +#: undo.c:1518 +#, c-format +msgid "E827: Undo file is encrypted: %s" +msgstr "" + +#: undo.c:1524 +#, c-format +msgid "E824: Incompatible undo file: %s" +msgstr "" + +#: undo.c:1542 +msgid "File contents changed, cannot use undo info" +msgstr "" + +#: undo.c:1707 +#, c-format +msgid "Finished reading undo file %s" +msgstr "" + +#: undo.c:1803 +#: undo.c:2011 +msgid "Already at oldest change" +msgstr "Reeds de laatste wijziging" + +#: undo.c:1818 +#: undo.c:2013 +msgid "Already at newest change" +msgstr "Reeds de nieuwste wijziging" + +#: undo.c:2004 +#, c-format +msgid "E830: Undo number %ld not found" +msgstr "E830: Ongedaan-nummer %ld niet gevonden" + +#: undo.c:2177 +msgid "E438: u_undo: line numbers wrong" +msgstr "E438: u_undo: regelnummers onjuist" + +#: undo.c:2415 +msgid "more line" +msgstr "extra regel" + +#: undo.c:2417 +msgid "more lines" +msgstr "extra regel" + +#: undo.c:2419 +msgid "line less" +msgstr "regel minder" + +#: undo.c:2421 +msgid "fewer lines" +msgstr "regels minder" + +#: undo.c:2426 +msgid "change" +msgstr "wijziging" + +#: undo.c:2428 +msgid "changes" +msgstr "wijzigingen" + +#: undo.c:2452 +#, c-format +msgid "%ld %s; %s #%ld %s" +msgstr "%ld %s; %s #%ld %s" + +#: undo.c:2455 +msgid "before" +msgstr "voor" + +#: undo.c:2455 +msgid "after" +msgstr "na" + +#: undo.c:2562 +msgid "Nothing to undo" +msgstr "Niets om ongedaan te maken" + +#: undo.c:2568 +msgid "number changes time" +msgstr "aantal wijzign tijd" + +#: undo.c:2601 +#, c-format +msgid "%ld seconds ago" +msgstr "%ld seconden geleden" + +#: undo.c:2616 +msgid "E790: undojoin is not allowed after undo" +msgstr "" + +#: undo.c:2666 +msgid "E439: undo list corrupt" +msgstr "" + +#: undo.c:2698 +msgid "E440: undo line missing" +msgstr "" + +#. Only MS VC 4.1 and earlier can do Win32s +#: version.c:775 +msgid "" +"\n" +"MS-Windows 16/32-bit GUI version" +msgstr "" +"\n" +"MS-Windows 16/32-bit GUI-versie" + +#: version.c:778 +msgid "" +"\n" +"MS-Windows 64-bit GUI version" +msgstr "" +"\n" +"MS-Windows 64-bit GUI-versie" + +#: version.c:780 +msgid "" +"\n" +"MS-Windows 32-bit GUI version" +msgstr "" +"\n" +"MS-Windows 32-bit GUIversie" + +#: version.c:784 +msgid " in Win32s mode" +msgstr " in Win32s-modus" + +#: version.c:786 +msgid " with OLE support" +msgstr "met OLE-ondersteuning" + +#: version.c:790 +msgid "" +"\n" +"MS-Windows 64-bit console version" +msgstr "" +"\n" +"MS-Windows 64-bit console-versie" + +#: version.c:792 +msgid "" +"\n" +"MS-Windows 32-bit console version" +msgstr "" +"\n" +"MS-Windows 32-bit console-versie" + +#: version.c:797 +msgid "" +"\n" +"MS-Windows 16-bit version" +msgstr "" +"\n" +"MS-Windows 16-bit-versie" + +#: version.c:801 +msgid "" +"\n" +"32-bit MS-DOS version" +msgstr "" +"\n" +"32-bit MS-DOS-versie" + +#: version.c:803 +msgid "" +"\n" +"16-bit MS-DOS version" +msgstr "" +"\n" +"16-bit MS-DOS-versie" + +#: version.c:809 +msgid "" +"\n" +"MacOS X (unix) version" +msgstr "" +"\n" +"MacOS X (unix)-versie" + +#: version.c:811 +msgid "" +"\n" +"MacOS X-versie" +msgstr "" +"\n" +"MacOS X version" + +#: version.c:814 +msgid "" +"\n" +"MacOS version" +msgstr "" +"\n" +"MacOS-versie" + +#: version.c:819 +msgid "" +"\n" +"RISC OS version" +msgstr "" +"\n" +"RISC OS-versie" + +#: version.c:822 +msgid "" +"\n" +"OpenVMS version" +msgstr "" +"\n" +"OpenVMS-versie" + +#: version.c:837 +msgid "" +"\n" +"Included patches: " +msgstr "" +"\n" +"Inclusief 'patches': " + +#: version.c:864 +msgid "" +"\n" +"Extra patches: " +msgstr "" +"\n" +"Extra 'patches': " + +#: version.c:876 +#: version.c:1240 +msgid "Modified by " +msgstr "Aangepast door " + +#: version.c:883 +msgid "" +"\n" +"Compiled " +msgstr "" +"\n" +"Gecompileerd " + +#: version.c:886 +msgid "by " +msgstr "door " + +#: version.c:898 +msgid "" +"\n" +"Huge version " +msgstr "" +"\n" +"Enorme versie " + +#: version.c:901 +msgid "" +"\n" +"Big version " +msgstr "" +"\n" +"Grote versie " + +#: version.c:904 +msgid "" +"\n" +"Normal version " +msgstr "" +"\n" +"Normale versie " + +#: version.c:907 +msgid "" +"\n" +"Small version " +msgstr "" +"\n" +"Kleine versie " + +#: version.c:909 +msgid "" +"\n" +"Tiny version " +msgstr "" +"\n" +"Mini versie " + +#: version.c:915 +msgid "without GUI." +msgstr "" + +#: version.c:920 +msgid "with GTK2-GNOME GUI." +msgstr "" + +#: version.c:922 +msgid "with GTK-GNOME GUI." +msgstr "" + +#: version.c:926 +msgid "with GTK2 GUI." +msgstr "" + +#: version.c:928 +msgid "with GTK GUI." +msgstr "" + +#: version.c:933 +msgid "with X11-Motif GUI." +msgstr "" + +#: version.c:937 +msgid "with X11-neXtaw GUI." +msgstr "" + +#: version.c:939 +msgid "with X11-Athena GUI." +msgstr "" + +#: version.c:943 +msgid "with Photon GUI." +msgstr "" + +#: version.c:946 +msgid "with GUI." +msgstr "" + +#: version.c:949 +msgid "with Carbon GUI." +msgstr "" + +#: version.c:952 +msgid "with Cocoa GUI." +msgstr "" + +#: version.c:955 +msgid "with (classic) GUI." +msgstr "" + +#: version.c:965 +msgid " Features included (+) or not (-):\n" +msgstr "" + +#: version.c:977 +msgid " system vimrc file: \"" +msgstr "" + +#: version.c:982 +msgid " user vimrc file: \"" +msgstr "" + +#: version.c:987 +msgid " 2nd user vimrc file: \"" +msgstr "" + +#: version.c:992 +msgid " 3rd user vimrc file: \"" +msgstr "" + +#: version.c:997 +msgid " user exrc file: \"" +msgstr "" + +#: version.c:1002 +msgid " 2nd user exrc file: \"" +msgstr "" + +#: version.c:1008 +msgid " system gvimrc file: \"" +msgstr "" + +#: version.c:1012 +msgid " user gvimrc file: \"" +msgstr "" + +#: version.c:1016 +msgid "2nd user gvimrc file: \"" +msgstr "" + +#: version.c:1021 +msgid "3rd user gvimrc file: \"" +msgstr "" + +#: version.c:1028 +msgid " system menu file: \"" +msgstr "" + +#: version.c:1036 +msgid " fall-back for $VIM: \"" +msgstr "" + +#: version.c:1042 +msgid " f-b for $VIMRUNTIME: \"" +msgstr "" + +#: version.c:1046 +msgid "Compilation: " +msgstr "Compilatie: " + +#: version.c:1052 +msgid "Compiler: " +msgstr "Compiler: " + +#: version.c:1057 +msgid "Linking: " +msgstr "Linking: " + +#: version.c:1062 +msgid " DEBUG BUILD" +msgstr " DEBUG BUILD" + +#: version.c:1101 +msgid "VIM - Vi IMproved" +msgstr "VIM - Vi IMproved" + +#: version.c:1103 +msgid "version " +msgstr "versie " + +#: version.c:1104 +msgid "by Bram Moolenaar et al." +msgstr "door Bram Moolenaar en anderen" + +#: version.c:1108 +msgid "Vim is open source and freely distributable" +msgstr "Vim is open-source en vrij verspreidbaar" + +#: version.c:1110 +msgid "Help poor children in Uganda!" +msgstr "Help arme kinderen in Uganda!" + +#: version.c:1111 +msgid "type :help iccf for information " +msgstr "typ :help iccf voor informatie" + +#: version.c:1113 +msgid "type :q to exit" +msgstr "typ :q om te stoppen" + +#: version.c:1114 +msgid "type :help or for on-line help" +msgstr "typ :help of voor on-line hulp" + +#: version.c:1115 +msgid "type :help version7 for version info" +msgstr "typ :help version7 voor versieinformatie" + +#: version.c:1118 +msgid "Running in Vi compatible mode" +msgstr "wordt uitgevoerd in Vi compatible-modus" + +#: version.c:1119 +msgid "type :set nocp for Vim defaults" +msgstr "typ :set nocp voor standaardinstellingen van Vim" + +#: version.c:1120 +msgid "type :help cp-default for info on this" +msgstr "typ :help cp-default voor informatie hierover" + +#: version.c:1135 +msgid "menu Help->Orphans for information " +msgstr "menu Help->Orphans voor informatie" + +#: version.c:1137 +msgid "Running modeless, typed text is inserted" +msgstr "" + +#: version.c:1138 +msgid "menu Edit->Global Settings->Toggle Insert Mode " +msgstr "" + +#: version.c:1139 +msgid " for two modes " +msgstr "" + +#: version.c:1143 +msgid "menu Edit->Global Settings->Toggle Vi Compatible" +msgstr "" + +#: version.c:1144 +msgid " for Vim defaults " +msgstr "" + +#: version.c:1191 +msgid "Sponsor Vim development!" +msgstr "Ondersteun de ontwikkeling van Vim!" + +#: version.c:1192 +msgid "Become a registered Vim user!" +msgstr "Word een geregistreerde Vim-gebruiker!" + +#: version.c:1195 +msgid "type :help sponsor for information " +msgstr "typ :help sponsor voor informatie " + +#: version.c:1196 +msgid "type :help register for information " +msgstr "typ :help register voor informatie " + +#: version.c:1198 +msgid "menu Help->Sponsor/Register for information " +msgstr "menu Help->Sponsor/Register voor informatie " + +#: version.c:1208 +msgid "WARNING: Windows 95/98/ME detected" +msgstr "Waarschuwing: Windows 95/98/ME gedetecteerd" + +#: version.c:1211 +msgid "type :help windows95 for info on this" +msgstr "typ :help windows95 voor informatie hierover" + +#: window.c:88 +msgid "Already only one window" +msgstr "Reeds beperkt tot een venster" + +#: window.c:237 +msgid "E441: There is no preview window" +msgstr "E441: er is geen voorvertoningsvenster" + +#: window.c:672 +msgid "E442: Can't split topleft and botright at the same time" +msgstr "E442: kan linkerbovenzijde en rechteronderzijde niet gelijktijdig splitsen" + +#: window.c:1491 +msgid "E443: Cannot rotate when another window is split" +msgstr "" + +#: window.c:2120 +msgid "E444: Cannot close last window" +msgstr "E444: sluiten laatste venster is mislukt" + +#: window.c:2127 +msgid "E813: Cannot close autocmd window" +msgstr "E813: sluiten autocmd-venster is mislukt" + +#: window.c:2132 +msgid "E814: Cannot close window, only autocmd window would remain" +msgstr "E814: venster kan niet sluiten want autocmd-venster blijft als enige achter" + +#: window.c:3195 +msgid "E445: Other window contains changes" +msgstr "E445: ander venster blijft achter" + +#: window.c:5885 +msgid "E446: No file name under cursor" +msgstr "E446: cursor staat niet op een bestandsnaam" + +#: window.c:6022 +#, c-format +msgid "E447: Can't find file \"%s\" in path" +msgstr "E447: bestand \"%s\" niet in pad gevonden" + +#: if_perl.xs:434 +#: globals.h:1427 +#, c-format +msgid "E370: Could not load library %s" +msgstr "E370: laden van bibliotheek %s is mislukt" + +#: if_perl.xs:685 +msgid "Sorry, this command is disabled: the Perl library could not be loaded." +msgstr "" + +#: if_perl.xs:742 +msgid "E299: Perl evaluation forbidden in sandbox without the Safe module" +msgstr "" + +#: GvimExt/gvimext.cpp:587 +msgid "Edit with &multiple Vims" +msgstr "" + +#: GvimExt/gvimext.cpp:593 +msgid "Edit with single &Vim" +msgstr "" + +#: GvimExt/gvimext.cpp:602 +msgid "Diff with Vim" +msgstr "" + +#: GvimExt/gvimext.cpp:615 +msgid "Edit with &Vim" +msgstr "" + +#. Now concatenate +#: GvimExt/gvimext.cpp:637 +msgid "Edit with existing Vim - " +msgstr "" + +#: GvimExt/gvimext.cpp:752 +msgid "Edits the selected file(s) with Vim" +msgstr "" + +#: GvimExt/gvimext.cpp:891 +#: GvimExt/gvimext.cpp:972 +msgid "Error creating process: Check if gvim is in your path!" +msgstr "" + +#: GvimExt/gvimext.cpp:892 +#: GvimExt/gvimext.cpp:906 +#: GvimExt/gvimext.cpp:973 +msgid "gvimext.dll error" +msgstr "" + +#: GvimExt/gvimext.cpp:905 +msgid "Path length too long!" +msgstr "" + +#: globals.h:1182 +msgid "--No lines in buffer--" +msgstr "-- geen regels in buffer --" + +#. +#. * The error messages that can be shared are included here. +#. * Excluded are errors that are only used once and debugging messages. +#. +#: globals.h:1381 +msgid "E470: Command aborted" +msgstr "E470: opdracht afgebroken" + +#: globals.h:1382 +msgid "E471: Argument required" +msgstr "E471: Argument vereist" + +#: globals.h:1383 +msgid "E10: \\ should be followed by /, ? or &" +msgstr "E10: \\ moet worden gevolgd door /, ? of &" + +#: globals.h:1385 +msgid "E11: Invalid in command-line window; executes, CTRL-C quits" +msgstr "E11: ongeldig in opdrachtregelvenster; voert uit, CTRL-C stopt" + +#: globals.h:1387 +msgid "E12: Command not allowed from exrc/vimrc in current dir or tag search" +msgstr "" + +#: globals.h:1389 +msgid "E171: Missing :endif" +msgstr "" + +#: globals.h:1390 +msgid "E600: Missing :endtry" +msgstr "" + +#: globals.h:1391 +msgid "E170: Missing :endwhile" +msgstr "" + +#: globals.h:1392 +msgid "E170: Missing :endfor" +msgstr "" + +#: globals.h:1393 +msgid "E588: :endwhile without :while" +msgstr "" + +#: globals.h:1394 +msgid "E588: :endfor without :for" +msgstr "" + +#: globals.h:1396 +msgid "E13: File exists (add ! to override)" +msgstr "" + +#: globals.h:1397 +msgid "E472: Command failed" +msgstr "" + +#: globals.h:1399 +#, c-format +msgid "E234: Unknown fontset: %s" +msgstr "" + +#: globals.h:1403 +#, c-format +msgid "E235: Unknown font: %s" +msgstr "" + +#: globals.h:1406 +#, c-format +msgid "E236: Font \"%s\" is not fixed-width" +msgstr "" + +#: globals.h:1408 +msgid "E473: Internal error" +msgstr "E473: interne fout" + +#: globals.h:1409 +msgid "Interrupted" +msgstr "onderbroken" + +#: globals.h:1410 +msgid "E14: Invalid address" +msgstr "E14: ongeldig adres" + +#: globals.h:1411 +msgid "E474: Invalid argument" +msgstr "E474: ongeldig argument" + +#: globals.h:1412 +#, c-format +msgid "E475: Invalid argument: %s" +msgstr "E475: ongeldig argument: %s" + +#: globals.h:1414 +#, c-format +msgid "E15: Invalid expression: %s" +msgstr "E15: ongeldige expressie: %s" + +#: globals.h:1416 +msgid "E16: Invalid range" +msgstr "E16: ongeldig bereik" + +#: globals.h:1417 +msgid "E476: Invalid command" +msgstr "E476: ongeldige opdracht" + +#: globals.h:1419 +#, c-format +msgid "E17: \"%s\" is a directory" +msgstr "" + +#: globals.h:1422 +#, c-format +msgid "E364: Library call failed for \"%s()\"" +msgstr "" + +#: globals.h:1428 +#, c-format +msgid "E448: Could not load library function %s" +msgstr "" + +#: globals.h:1430 +msgid "E19: Mark has invalid line number" +msgstr "E19: markering heeft een ongeldig regelnummer" + +#: globals.h:1431 +msgid "E20: Mark not set" +msgstr "E20: Markering is niet ingesteld" + +#: globals.h:1432 +msgid "E21: Cannot make changes, 'modifiable' is off" +msgstr "E21: kan geen veranderingen maken, 'modifiable' is uitgeschakeld" + +#: globals.h:1433 +msgid "E22: Scripts nested too deep" +msgstr "E22: scripts " + +#: globals.h:1434 +msgid "E23: No alternate file" +msgstr "" + +#: globals.h:1435 +msgid "E24: No such abbreviation" +msgstr "" + +#: globals.h:1436 +msgid "E477: No ! allowed" +msgstr "" + +#: globals.h:1438 +msgid "E25: GUI cannot be used: Not enabled at compile time" +msgstr "" + +#: globals.h:1441 +msgid "E26: Hebrew cannot be used: Not enabled at compile time\n" +msgstr "" + +#: globals.h:1444 +msgid "E27: Farsi cannot be used: Not enabled at compile time\n" +msgstr "" + +#: globals.h:1447 +msgid "E800: Arabic cannot be used: Not enabled at compile time\n" +msgstr "" + +#: globals.h:1450 +#, c-format +msgid "E28: No such highlight group name: %s" +msgstr "E28: naam van deze oplichtgroep is onbekend: %s" + +#: globals.h:1452 +msgid "E29: No inserted text yet" +msgstr "" + +#: globals.h:1453 +msgid "E30: No previous command line" +msgstr "" + +#: globals.h:1454 +msgid "E31: No such mapping" +msgstr "" + +#: globals.h:1455 +msgid "E479: No match" +msgstr "E479: geen overeenkomst" + +#: globals.h:1456 +#, c-format +msgid "E480: No match: %s" +msgstr "E480: geen overeenkomst: %s" + +#: globals.h:1457 +msgid "E32: No file name" +msgstr "E32: geen bestandsnaam" + +#: globals.h:1458 +msgid "E33: No previous substitute regular expression" +msgstr "E33: geen eerdere reguliere expressie substitutie" + +#: globals.h:1459 +msgid "E34: No previous command" +msgstr "E34: geen eerdere opdracht" + +#: globals.h:1460 +msgid "E35: No previous regular expression" +msgstr "E35: geen eerdere reguliere expressie" + +#: globals.h:1461 +msgid "E481: No range allowed" +msgstr "E481: een bereik is niet toegestaan" + +#: globals.h:1463 +msgid "E36: Not enough room" +msgstr "E36: onvoldoende ruimte" + +#: globals.h:1466 +#, c-format +msgid "E247: no registered server named \"%s\"" +msgstr "E247: \"%s\" niet gevonden als geregistreerde server" + +#: globals.h:1468 +#, c-format +msgid "E482: Can't create file %s" +msgstr "E482: aanmaken bestand %s is mislukt" + +#: globals.h:1469 +msgid "E483: Can't get temp file name" +msgstr "E483: bepalen naam tijdelijk bestand is mislukt" + +#: globals.h:1470 +#, c-format +msgid "E484: Can't open file %s" +msgstr "E484: openen bestand %s is mislukt" + +#: globals.h:1471 +#, c-format +msgid "E485: Can't read file %s" +msgstr "E485: lezen bestand %s is mislukt" + +#: globals.h:1472 +msgid "E37: No write since last change (add ! to override)" +msgstr "E37: niets opgeslagen sinds laatste wijziging (voeg ! toe om te forceren)" + +#: globals.h:1473 +msgid "E38: Null argument" +msgstr "E38: leeg argument (null)" + +#: globals.h:1475 +msgid "E39: Number expected" +msgstr "E39: getal verwacht" + +#: globals.h:1478 +#, c-format +msgid "E40: Can't open errorfile %s" +msgstr "E40: openen foutenbestand %s is mislukt" + +#: globals.h:1481 +msgid "E233: cannot open display" +msgstr "E233: openen scherm is mislukt" + +#: globals.h:1483 +msgid "E41: Out of memory!" +msgstr "E41: te weinig geheugen!" + +#: globals.h:1485 +msgid "Pattern not found" +msgstr "patroon niet gevonden" + +#: globals.h:1487 +#, c-format +msgid "E486: Pattern not found: %s" +msgstr "E486: patroon niet gevonden: %s" + +#: globals.h:1488 +msgid "E487: Argument must be positive" +msgstr "E487: argument moet positief zijn" + +#: globals.h:1490 +msgid "E459: Cannot go back to previous directory" +msgstr "E459: kan niet terug naar vorig Dictionary" + +#: globals.h:1494 +msgid "E42: No Errors" +msgstr "E42: geen fouten" + +#: globals.h:1495 +msgid "E776: No location list" +msgstr "" + +#: globals.h:1497 +msgid "E43: Damaged match string" +msgstr "E43: beschadigde zoekstring" + +#: globals.h:1498 +msgid "E44: Corrupted regexp program" +msgstr "E44: regexp-programma is misvormd" + +#: globals.h:1499 +msgid "E45: 'readonly' option is set (add ! to override)" +msgstr "E45: 'alleen-lezen'-optie is ingeschakeld (voeg ! toe om te overschrijven)" + +#: globals.h:1501 +#, c-format +msgid "E46: Cannot change read-only variable \"%s\"" +msgstr "E46: kan alleen-lezenvariabele \"%s\" niet veranderen" + +#: globals.h:1502 +#, c-format +msgid "E794: Cannot set variable in the sandbox: \"%s\"" +msgstr "E794: kan variabele niet instellen in de zandbak: \"%s\"" + +#: globals.h:1505 +msgid "E47: Error while reading errorfile" +msgstr "E47: fout tijdens lezen foutenbestand" + +#: globals.h:1508 +msgid "E48: Not allowed in sandbox" +msgstr "E48: niet toegestaan in zandbak" + +#: globals.h:1510 +msgid "E523: Not allowed here" +msgstr "E523: hier niet toegestaan" + +#: globals.h:1513 +msgid "E359: Screen mode setting not supported" +msgstr "E359: instelling schermmodus niet ondersteund" + +#: globals.h:1515 +msgid "E49: Invalid scroll size" +msgstr "E49: ongeldige scroll-grootte" + +#: globals.h:1516 +msgid "E91: 'shell' option is empty" +msgstr "E91: 'shell'-optie is leeg" + +#: globals.h:1518 +msgid "E255: Couldn't read in sign data!" +msgstr "" + +#: globals.h:1520 +msgid "E72: Close error on swap file" +msgstr "" + +#: globals.h:1521 +msgid "E73: tag stack empty" +msgstr "" + +#: globals.h:1522 +msgid "E74: Command too complex" +msgstr "E74: opdracht te ingewikkeld" + +#: globals.h:1523 +msgid "E75: Name too long" +msgstr "E75: te lange naam" + +#: globals.h:1524 +msgid "E76: Too many [" +msgstr "E76: teveel [" + +#: globals.h:1525 +msgid "E77: Too many file names" +msgstr "E77: teveel bestandsnamen" + +#: globals.h:1526 +msgid "E488: Trailing characters" +msgstr "E488: nakomende tekens" + +#: globals.h:1527 +msgid "E78: Unknown mark" +msgstr "E78: onbekende markering" + +#: globals.h:1528 +msgid "E79: Cannot expand wildcards" +msgstr "E79: vervangen jokertekens is mislukt" + +#: globals.h:1530 +msgid "E591: 'winheight' cannot be smaller than 'winminheight'" +msgstr "E591: 'winheight' kan niet kleiner zijn dan 'winminheight'" + +#: globals.h:1532 +msgid "E592: 'winwidth' cannot be smaller than 'winminwidth'" +msgstr "E592: 'winwidth' kan niet kleiner zijn dan 'winminwidth'" + +#: globals.h:1535 +msgid "E80: Error while writing" +msgstr "E80: opslaan is mislukt" + +#: globals.h:1536 +msgid "Zero count" +msgstr "Aantal is nul" + +#: globals.h:1538 +msgid "E81: Using not in a script context" +msgstr "E81: wordt buiten de scriptcontext gebruikt" + +#: globals.h:1541 +msgid "E449: Invalid expression received" +msgstr "E449: ontvangen expressie is ongeldig" + +#: globals.h:1544 +msgid "E463: Region is guarded, cannot modify" +msgstr "E463: Regio is bescherm en kan niet worden veranderd" + +#: globals.h:1545 +msgid "E744: NetBeans does not allow changes in read-only files" +msgstr "E744: NetBeans staat geen veranderingen in alleen-lezenbestanden toe" + +#: globals.h:1547 +#, c-format +msgid "E685: Internal error: %s" +msgstr "E685: interne fout: %s" + +#: globals.h:1548 +msgid "E363: pattern uses more memory than 'maxmempattern'" +msgstr "E363: patroon gebruikt meer geheugen dan 'maxmempattern'" + +#: globals.h:1549 +msgid "E749: empty buffer" +msgstr "E749: leeg buffer" + +#: globals.h:1552 +msgid "E682: Invalid search pattern or delimiter" +msgstr "E682: zoekpatroon of scheidingsteken is ongeldig" + +#: globals.h:1554 +msgid "E139: File is loaded in another buffer" +msgstr "E139: bestand is in een ander buffer geladen" + +#: globals.h:1557 +#, c-format +msgid "E764: Option '%s' is not set" +msgstr "E764: Optie '%s' is niet ingesteld" + +#: globals.h:1564 +msgid "search hit TOP, continuing at BOTTOM" +msgstr "zoeken bereikte TOP, verder vanaf BODEM" + +#: globals.h:1565 +msgid "search hit BOTTOM, continuing at TOP" +msgstr "zoeken bereikte BODEM, verder vanaf TOP" + diff --git a/vim-7.0-crv.patch b/vim-7.0-crv.patch deleted file mode 100644 index 416c64e..0000000 --- a/vim-7.0-crv.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- vim70aa/src/term.c.orig 2006-03-14 15:40:15.000000000 +0100 -+++ vim70aa/src/term.c 2006-03-14 15:43:54.000000000 +0100 -@@ -1284,7 +1284,6 @@ - {(int)KS_CWS, "[%dCWS%d]"}, - {(int)KS_CWP, "[%dCWP%d]"}, - # endif -- {(int)KS_CRV, "[CRV]"}, - {K_UP, "[KU]"}, - {K_DOWN, "[KD]"}, - {K_LEFT, "[KL]"}, diff --git a/vim-7.3-rubyversion.patch b/vim-7.3-rubyversion.patch new file mode 100644 index 0000000..114b8a7 --- /dev/null +++ b/vim-7.3-rubyversion.patch @@ -0,0 +1,15 @@ +diff -up vim73/src/configure.in.rubyversion vim73/src/configure.in +--- vim73/src/configure.in.rubyversion 2013-05-08 16:21:11.067927960 +0200 ++++ vim73/src/configure.in 2013-05-08 16:31:05.854534820 +0200 +@@ -1490,7 +1490,10 @@ if test "$enable_rubyinterp" = "yes" -o + if test -d "$rubyhdrdir/$rubyarch"; then + RUBY_CFLAGS="$RUBY_CFLAGS -I$rubyhdrdir/$rubyarch" + fi +- rubyversion=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['ruby_version']].gsub(/\./, '')[[0,2]]"` ++ rubymajor=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['MAJOR']]"` ++ rubyminor=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['MINOR']]"` ++ rubyversion="$rubymajor$rubyminor" ++ # rubyversion=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['ruby_version']].gsub(/\./, '')[[0,2]]"` + RUBY_CFLAGS="$RUBY_CFLAGS -DRUBY_VERSION=$rubyversion" + rubylibs=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['LIBS']]"` + if test "X$rubylibs" != "X"; then diff --git a/vim-7.3-xsubpp-path.patch b/vim-7.3-xsubpp-path.patch new file mode 100644 index 0000000..971b10a --- /dev/null +++ b/vim-7.3-xsubpp-path.patch @@ -0,0 +1,12 @@ +diff -up vim73/src/Makefile.xsubpp vim73/src/Makefile +--- vim73/src/Makefile.xsubpp 2013-05-13 15:02:15.894805644 +0200 ++++ vim73/src/Makefile 2013-05-13 15:07:03.922821257 +0200 +@@ -2416,7 +2416,7 @@ lintinstall: + + auto/if_perl.c: if_perl.xs + $(PERL) -e 'unless ( $$] >= 5.005 ) { for (qw(na defgv errgv)) { print "#define PL_$$_ $$_\n" }}' > $@ +- $(PERL) $(PERLLIB)/ExtUtils/xsubpp -prototypes -typemap \ ++ $(PERL) $(PERLLIB)/vendor_perl/ExtUtils/xsubpp -prototypes -typemap \ + $(PERLLIB)/ExtUtils/typemap if_perl.xs >> $@ + + auto/osdef.h: auto/config.h osdef.sh osdef1.h.in osdef2.h.in diff --git a/vim.spec b/vim.spec index 6418963..e4bffe2 100644 --- a/vim.spec +++ b/vim.spec @@ -18,7 +18,7 @@ #used for pre-releases: %define beta %{nil} %define vimdir vim73%{?beta} -%define patchlevel 712 +%define patchlevel 944 Summary: The VIM editor URL: http://www.vim.org/ @@ -42,10 +42,10 @@ Source13: vim-spell-files.tar.bz2 %endif Source14: spec-template Source15: spec-template.new +Source16: nl.po Patch2002: vim-7.0-fixkeys.patch Patch2003: vim-6.2-specsyntax.patch -Patch2004: vim-7.0-crv.patch %if %{withhunspell} Patch2011: vim-7.0-hunspell.patch BuildRequires: hunspell-devel @@ -768,6 +768,238 @@ Patch709: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.709 Patch710: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.710 Patch711: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.711 Patch712: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.712 +Patch713: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.713 +Patch714: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.714 +Patch715: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.715 +Patch716: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.716 +Patch717: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.717 +Patch718: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.718 +Patch719: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.719 +Patch720: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.720 +Patch721: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.721 +Patch722: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.722 +Patch723: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.723 +Patch724: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.724 +Patch725: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.725 +Patch726: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.726 +Patch727: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.727 +Patch728: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.728 +Patch729: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.729 +Patch730: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.730 +Patch731: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.731 +Patch732: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.732 +Patch733: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.733 +Patch734: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.734 +Patch735: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.735 +Patch736: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.736 +Patch737: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.737 +Patch738: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.738 +Patch739: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.739 +Patch740: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.740 +Patch741: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.741 +Patch742: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.742 +Patch743: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.743 +Patch744: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.744 +Patch745: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.745 +Patch746: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.746 +Patch747: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.747 +Patch748: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.748 +Patch749: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.749 +Patch750: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.750 +Patch751: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.751 +Patch752: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.752 +Patch753: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.753 +Patch754: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.754 +Patch755: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.755 +Patch756: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.756 +Patch757: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.757 +Patch758: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.758 +Patch759: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.759 +Patch760: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.760 +Patch761: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.761 +Patch762: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.762 +Patch763: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.763 +Patch764: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.764 +Patch765: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.765 +Patch766: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.766 +Patch767: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.767 +Patch768: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.768 +Patch769: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.769 +Patch770: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.770 +Patch771: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.771 +Patch772: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.772 +Patch773: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.773 +Patch774: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.774 +Patch775: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.775 +Patch776: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.776 +Patch777: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.777 +Patch778: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.778 +Patch779: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.779 +Patch780: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.780 +Patch781: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.781 +Patch782: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.782 +Patch783: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.783 +Patch784: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.784 +Patch785: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.785 +Patch786: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.786 +Patch787: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.787 +Patch788: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.788 +Patch789: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.789 +Patch790: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.790 +Patch791: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.791 +Patch792: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.792 +Patch793: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.793 +Patch794: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.794 +Patch795: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.795 +Patch796: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.796 +Patch797: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.797 +Patch798: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.798 +Patch799: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.799 +Patch800: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.800 +Patch801: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.801 +Patch802: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.802 +Patch803: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.803 +Patch804: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.804 +Patch805: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.805 +Patch806: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.806 +Patch807: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.807 +Patch808: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.808 +Patch809: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.809 +Patch810: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.810 +Patch811: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.811 +Patch812: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.812 +Patch813: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.813 +Patch814: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.814 +Patch815: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.815 +Patch816: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.816 +Patch817: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.817 +Patch818: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.818 +Patch819: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.819 +Patch820: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.820 +Patch821: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.821 +Patch822: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.822 +Patch823: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.823 +Patch824: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.824 +Patch825: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.825 +Patch826: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.826 +Patch827: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.827 +Patch828: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.828 +Patch829: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.829 +Patch830: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.830 +Patch831: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.831 +Patch832: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.832 +Patch833: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.833 +Patch834: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.834 +Patch835: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.835 +Patch836: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.836 +Patch837: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.837 +Patch838: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.838 +Patch839: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.839 +Patch840: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.840 +Patch841: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.841 +Patch842: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.842 +Patch843: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.843 +Patch844: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.844 +Patch845: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.845 +Patch846: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.846 +Patch847: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.847 +Patch848: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.848 +Patch849: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.849 +Patch850: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.850 +Patch851: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.851 +Patch852: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.852 +Patch853: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.853 +Patch854: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.854 +Patch855: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.855 +Patch856: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.856 +Patch857: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.857 +Patch858: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.858 +Patch859: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.859 +Patch860: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.860 +Patch861: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.861 +Patch862: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.862 +Patch863: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.863 +Patch864: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.864 +Patch865: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.865 +Patch866: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.866 +Patch867: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.867 +Patch868: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.868 +Patch869: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.869 +Patch870: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.870 +Patch871: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.871 +Patch872: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.872 +Patch873: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.873 +Patch874: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.874 +Patch875: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.875 +Patch876: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.876 +Patch877: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.877 +Patch878: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.878 +Patch879: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.879 +Patch880: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.880 +Patch881: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.881 +Patch882: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.882 +Patch883: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.883 +Patch884: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.884 +Patch885: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.885 +Patch886: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.886 +Patch887: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.887 +Patch888: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.888 +Patch889: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.889 +Patch890: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.890 +Patch891: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.891 +Patch892: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.892 +Patch893: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.893 +Patch894: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.894 +Patch895: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.895 +Patch896: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.896 +Patch897: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.897 +Patch898: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.898 +Patch899: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.899 +Patch900: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.900 +Patch901: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.901 +Patch902: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.902 +Patch903: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.903 +Patch904: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.904 +Patch905: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.905 +Patch906: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.906 +Patch907: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.907 +Patch908: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.908 +Patch909: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.909 +Patch910: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.910 +Patch911: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.911 +Patch912: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.912 +Patch913: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.913 +Patch914: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.914 +Patch915: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.915 +Patch916: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.916 +Patch917: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.917 +Patch918: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.918 +Patch919: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.919 +Patch920: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.920 +Patch921: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.921 +Patch922: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.922 +Patch923: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.923 +Patch924: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.924 +Patch925: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.925 +Patch926: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.926 +Patch927: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.927 +Patch928: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.928 +Patch929: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.929 +Patch930: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.930 +Patch931: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.931 +Patch932: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.932 +Patch933: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.933 +Patch934: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.934 +Patch935: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.935 +Patch936: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.936 +Patch937: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.937 +Patch938: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.938 +Patch939: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.939 +Patch940: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.940 +Patch941: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.941 +Patch942: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.942 +Patch943: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.943 +Patch944: ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.944 Patch3000: vim-7.3-syntax.patch Patch3002: vim-7.1-nowarnings.patch @@ -780,10 +1012,12 @@ Patch3010: vim-7.0-specedit.patch Patch3011: vim72-rh514717.patch Patch3012: vim-7.3-bug816848.patch Patch3013: vim-7.3-manpage-typo-668894-675480.patch +Patch3014: vim-7.3-rubyversion.patch +Patch3015: vim-7.3-xsubpp-path.patch Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: python-devel ncurses-devel gettext perl-devel -BuildRequires: perl(ExtUtils::Embed) +BuildRequires: perl(ExtUtils::Embed) perl(ExtUtils::ParseXS) BuildRequires: libacl-devel gpm-devel autoconf %if %{WITH_SELINUX} BuildRequires: libselinux-devel @@ -905,7 +1139,6 @@ vim-common package. chmod -x runtime/tools/mve.awk %patch2002 -p1 %patch2003 -p1 -%patch2004 -p1 %if %{withhunspell} %patch2011 -p1 %endif @@ -1626,6 +1859,238 @@ perl -pi -e "s,bin/nawk,bin/awk,g" runtime/tools/mve.awk %patch710 -p0 %patch711 -p0 %patch712 -p0 +%patch713 -p0 +%patch714 -p0 +%patch715 -p0 +%patch716 -p0 +%patch717 -p0 +%patch718 -p0 +%patch719 -p0 +%patch720 -p0 +%patch721 -p0 +%patch722 -p0 +%patch723 -p0 +%patch724 -p0 +%patch725 -p0 +%patch726 -p0 +%patch727 -p0 +%patch728 -p0 +%patch729 -p0 +%patch730 -p0 +%patch731 -p0 +%patch732 -p0 +%patch733 -p0 +%patch734 -p0 +%patch735 -p0 +%patch736 -p0 +%patch737 -p0 +%patch738 -p0 +%patch739 -p0 +%patch740 -p0 +%patch741 -p0 +%patch742 -p0 +%patch743 -p0 +%patch744 -p0 +%patch745 -p0 +%patch746 -p0 +%patch747 -p0 +%patch748 -p0 +%patch749 -p0 +%patch750 -p0 +%patch751 -p0 +%patch752 -p0 +%patch753 -p0 +%patch754 -p0 +%patch755 -p0 +%patch756 -p0 +%patch757 -p0 +%patch758 -p0 +%patch759 -p0 +%patch760 -p0 +%patch761 -p0 +%patch762 -p0 +%patch763 -p0 +%patch764 -p0 +%patch765 -p0 +%patch766 -p0 +%patch767 -p0 +%patch768 -p0 +%patch769 -p0 +%patch770 -p0 +%patch771 -p0 +%patch772 -p0 +%patch773 -p0 +%patch774 -p0 +%patch775 -p0 +%patch776 -p0 +%patch777 -p0 +%patch778 -p0 +%patch779 -p0 +%patch780 -p0 +%patch781 -p0 +%patch782 -p0 +%patch783 -p0 +%patch784 -p0 +%patch785 -p0 +%patch786 -p0 +%patch787 -p0 +%patch788 -p0 +%patch789 -p0 +%patch790 -p0 +%patch791 -p0 +%patch792 -p0 +%patch793 -p0 +%patch794 -p0 +%patch795 -p0 +%patch796 -p0 +%patch797 -p0 +%patch798 -p0 +%patch799 -p0 +%patch800 -p0 +%patch801 -p0 +%patch802 -p0 +%patch803 -p0 +%patch804 -p0 +%patch805 -p0 +%patch806 -p0 +%patch807 -p0 +%patch808 -p0 +%patch809 -p0 +%patch810 -p0 +%patch811 -p0 +%patch812 -p0 +%patch813 -p0 +%patch814 -p0 +%patch815 -p0 +%patch816 -p0 +%patch817 -p0 +%patch818 -p0 +%patch819 -p0 +%patch820 -p0 +%patch821 -p0 +%patch822 -p0 +%patch823 -p0 +%patch824 -p0 +%patch825 -p0 +%patch826 -p0 +%patch827 -p0 +%patch828 -p0 +%patch829 -p0 +%patch830 -p0 +%patch831 -p0 +%patch832 -p0 +%patch833 -p0 +%patch834 -p0 +%patch835 -p0 +%patch836 -p0 +%patch837 -p0 +%patch838 -p0 +%patch839 -p0 +%patch840 -p0 +%patch841 -p0 +%patch842 -p0 +%patch843 -p0 +%patch844 -p0 +%patch845 -p0 +%patch846 -p0 +%patch847 -p0 +%patch848 -p0 +%patch849 -p0 +%patch850 -p0 +%patch851 -p0 +%patch852 -p0 +%patch853 -p0 +%patch854 -p0 +%patch855 -p0 +%patch856 -p0 +%patch857 -p0 +%patch858 -p0 +%patch859 -p0 +%patch860 -p0 +%patch861 -p0 +%patch862 -p0 +%patch863 -p0 +%patch864 -p0 +%patch865 -p0 +%patch866 -p0 +%patch867 -p0 +%patch868 -p0 +%patch869 -p0 +%patch870 -p0 +%patch871 -p0 +%patch872 -p0 +%patch873 -p0 +%patch874 -p0 +%patch875 -p0 +%patch876 -p0 +%patch877 -p0 +%patch878 -p0 +%patch879 -p0 +%patch880 -p0 +%patch881 -p0 +%patch882 -p0 +%patch883 -p0 +%patch884 -p0 +%patch885 -p0 +%patch886 -p0 +%patch887 -p0 +%patch888 -p0 +%patch889 -p0 +%patch890 -p0 +%patch891 -p0 +%patch892 -p0 +%patch893 -p0 +%patch894 -p0 +%patch895 -p0 +%patch896 -p0 +%patch897 -p0 +%patch898 -p0 +%patch899 -p0 +%patch900 -p0 +%patch901 -p0 +%patch902 -p0 +%patch903 -p0 +%patch904 -p0 +%patch905 -p0 +%patch906 -p0 +%patch907 -p0 +%patch908 -p0 +%patch909 -p0 +%patch910 -p0 +%patch911 -p0 +%patch912 -p0 +%patch913 -p0 +%patch914 -p0 +%patch915 -p0 +%patch916 -p0 +%patch917 -p0 +%patch918 -p0 +%patch919 -p0 +%patch920 -p0 +%patch921 -p0 +%patch922 -p0 +%patch923 -p0 +%patch924 -p0 +%patch925 -p0 +%patch926 -p0 +%patch927 -p0 +%patch928 -p0 +%patch929 -p0 +%patch930 -p0 +%patch931 -p0 +%patch932 -p0 +%patch933 -p0 +%patch934 -p0 +%patch935 -p0 +%patch936 -p0 +%patch937 -p0 +%patch938 -p0 +%patch939 -p0 +%patch940 -p0 +%patch941 -p0 +%patch942 -p0 +%patch943 -p0 +%patch944 -p0 # install spell files @@ -1644,9 +2109,12 @@ perl -pi -e "s,bin/nawk,bin/awk,g" runtime/tools/mve.awk %patch3011 -p1 %patch3012 -p1 %patch3013 -p1 +%patch3014 -p1 +%patch3015 -p1 %build cp -f %{SOURCE5} . +cp -f %{SOURCE16} src/po/ cd src autoconf @@ -1782,7 +2250,10 @@ install -p -m644 %{SOURCE10} \ ln -sf gvim ./%{_bindir}/vimx %if "%{desktop_file}" == "1" mkdir -p $RPM_BUILD_ROOT/%{_datadir}/applications - desktop-file-install --vendor fedora \ + desktop-file-install \ + %if 0%{?fedora} && 0%{?fedora} < 19 + --vendor fedora \ + %endif --dir $RPM_BUILD_ROOT/%{_datadir}/applications \ %{SOURCE3} # --add-category "Development;TextEditor;X-Red-Hat-Base" D\ @@ -1937,6 +2408,7 @@ rm -rf $RPM_BUILD_ROOT %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(de) %{_datadir}/%{name}/%{vimdir}/lang/de %lang(en_GB) %{_datadir}/%{name}/%{vimdir}/lang/en_GB %lang(eo) %{_datadir}/%{name}/%{vimdir}/lang/eo @@ -1946,18 +2418,26 @@ rm -rf $RPM_BUILD_ROOT %lang(ga) %{_datadir}/%{name}/%{vimdir}/lang/ga %lang(it) %{_datadir}/%{name}/%{vimdir}/lang/it %lang(ja) %{_datadir}/%{name}/%{vimdir}/lang/ja +%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(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(sv) %{_datadir}/%{name}/%{vimdir}/lang/sv %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 @@ -2091,16 +2571,63 @@ rm -rf $RPM_BUILD_ROOT %{_datadir}/icons/hicolor/*/apps/* %changelog +* 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) +- fix path to xsubpp script + +* 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)