From f3c378e8e1d8ce9694d14449e55df180e176e32b Mon Sep 17 00:00:00 2001 From: =?utf8?q?Adam=20Go=C5=82=C4=99biowski?= Date: Fri, 3 Nov 2006 21:20:09 +0000 Subject: [PATCH] - new Changed files: 7.0.082 -> 1.1 7.0.083 -> 1.1 7.0.084 -> 1.1 7.0.085 -> 1.1 7.0.086 -> 1.1 7.0.087 -> 1.1 7.0.088 -> 1.1 7.0.089 -> 1.1 7.0.090 -> 1.1 7.0.091 -> 1.1 7.0.092 -> 1.1 7.0.093 -> 1.1 7.0.094 -> 1.1 7.0.095 -> 1.1 7.0.096 -> 1.1 7.0.097 -> 1.1 7.0.098 -> 1.1 7.0.099 -> 1.1 7.0.100 -> 1.1 7.0.101 -> 1.1 7.0.102 -> 1.1 7.0.103 -> 1.1 7.0.104 -> 1.1 7.0.105 -> 1.1 7.0.106 -> 1.1 7.0.107 -> 1.1 7.0.109 -> 1.1 7.0.110 -> 1.1 7.0.111 -> 1.1 7.0.112 -> 1.1 7.0.113 -> 1.1 7.0.114 -> 1.1 7.0.115 -> 1.1 7.0.116 -> 1.1 7.0.117 -> 1.1 7.0.118 -> 1.1 7.0.119 -> 1.1 7.0.120 -> 1.1 7.0.121 -> 1.1 7.0.122 -> 1.1 7.0.123 -> 1.1 7.0.124 -> 1.1 7.0.125 -> 1.1 7.0.126 -> 1.1 7.0.127 -> 1.1 7.0.128 -> 1.1 7.0.129 -> 1.1 7.0.131 -> 1.1 7.0.133 -> 1.1 7.0.134 -> 1.1 7.0.135 -> 1.1 7.0.136 -> 1.1 7.0.137 -> 1.1 7.0.139 -> 1.1 7.0.140 -> 1.1 7.0.141 -> 1.1 7.0.142 -> 1.1 7.0.143 -> 1.1 7.0.144 -> 1.1 7.0.145 -> 1.1 7.0.146 -> 1.1 7.0.147 -> 1.1 7.0.148 -> 1.1 7.0.149 -> 1.1 7.0.150 -> 1.1 7.0.151 -> 1.1 7.0.152 -> 1.1 7.0.153 -> 1.1 7.0.154 -> 1.1 7.0.155 -> 1.1 7.0.157 -> 1.1 7.0.158 -> 1.1 vim-autopaste.patch -> 1.1 --- 7.0.082 | 103 +++++ 7.0.083 | 91 +++++ 7.0.084 | 221 +++++++++++ 7.0.085 | 53 +++ 7.0.086 | 57 +++ 7.0.087 | 262 +++++++++++++ 7.0.088 | 84 ++++ 7.0.089 | 97 +++++ 7.0.090 | 81 ++++ 7.0.091 | 52 +++ 7.0.092 | 104 +++++ 7.0.093 | 74 ++++ 7.0.094 | 73 ++++ 7.0.095 | 935 ++++++++++++++++++++++++++++++++++++++++++++ 7.0.096 | 82 ++++ 7.0.097 | 113 ++++++ 7.0.098 | 71 ++++ 7.0.099 | 70 ++++ 7.0.100 | 64 +++ 7.0.101 | 89 +++++ 7.0.102 | 54 +++ 7.0.103 | 53 +++ 7.0.104 | 89 +++++ 7.0.105 | 50 +++ 7.0.106 | 150 +++++++ 7.0.107 | 58 +++ 7.0.109 | 70 ++++ 7.0.110 | 88 +++++ 7.0.111 | 336 ++++++++++++++++ 7.0.112 | 108 +++++ 7.0.113 | 57 +++ 7.0.114 | 64 +++ 7.0.115 | 75 ++++ 7.0.116 | 49 +++ 7.0.117 | 166 ++++++++ 7.0.118 | 49 +++ 7.0.119 | 48 +++ 7.0.120 | 64 +++ 7.0.121 | 50 +++ 7.0.122 | 92 +++++ 7.0.123 | 112 ++++++ 7.0.124 | 87 +++++ 7.0.125 | 72 ++++ 7.0.126 | 63 +++ 7.0.127 | 99 +++++ 7.0.128 | 76 ++++ 7.0.129 | 86 ++++ 7.0.131 | 77 ++++ 7.0.133 | 93 +++++ 7.0.134 | 83 ++++ 7.0.135 | 362 +++++++++++++++++ 7.0.136 | 54 +++ 7.0.137 | 70 ++++ 7.0.139 | 79 ++++ 7.0.140 | 82 ++++ 7.0.141 | 210 ++++++++++ 7.0.142 | 70 ++++ 7.0.143 | 53 +++ 7.0.144 | 219 +++++++++++ 7.0.145 | 54 +++ 7.0.146 | 137 +++++++ 7.0.147 | 297 ++++++++++++++ 7.0.148 | 58 +++ 7.0.149 | 186 +++++++++ 7.0.150 | 97 +++++ 7.0.151 | 55 +++ 7.0.152 | 74 ++++ 7.0.153 | 154 ++++++++ 7.0.154 | 65 +++ 7.0.155 | 196 ++++++++++ 7.0.157 | 105 +++++ 7.0.158 | 50 +++ vim-autopaste.patch | 69 ++++ 73 files changed, 8190 insertions(+) create mode 100644 7.0.082 create mode 100644 7.0.083 create mode 100644 7.0.084 create mode 100644 7.0.085 create mode 100644 7.0.086 create mode 100644 7.0.087 create mode 100644 7.0.088 create mode 100644 7.0.089 create mode 100644 7.0.090 create mode 100644 7.0.091 create mode 100644 7.0.092 create mode 100644 7.0.093 create mode 100644 7.0.094 create mode 100644 7.0.095 create mode 100644 7.0.096 create mode 100644 7.0.097 create mode 100644 7.0.098 create mode 100644 7.0.099 create mode 100644 7.0.100 create mode 100644 7.0.101 create mode 100644 7.0.102 create mode 100644 7.0.103 create mode 100644 7.0.104 create mode 100644 7.0.105 create mode 100644 7.0.106 create mode 100644 7.0.107 create mode 100644 7.0.109 create mode 100644 7.0.110 create mode 100644 7.0.111 create mode 100644 7.0.112 create mode 100644 7.0.113 create mode 100644 7.0.114 create mode 100644 7.0.115 create mode 100644 7.0.116 create mode 100644 7.0.117 create mode 100644 7.0.118 create mode 100644 7.0.119 create mode 100644 7.0.120 create mode 100644 7.0.121 create mode 100644 7.0.122 create mode 100644 7.0.123 create mode 100644 7.0.124 create mode 100644 7.0.125 create mode 100644 7.0.126 create mode 100644 7.0.127 create mode 100644 7.0.128 create mode 100644 7.0.129 create mode 100644 7.0.131 create mode 100644 7.0.133 create mode 100644 7.0.134 create mode 100644 7.0.135 create mode 100644 7.0.136 create mode 100644 7.0.137 create mode 100644 7.0.139 create mode 100644 7.0.140 create mode 100644 7.0.141 create mode 100644 7.0.142 create mode 100644 7.0.143 create mode 100644 7.0.144 create mode 100644 7.0.145 create mode 100644 7.0.146 create mode 100644 7.0.147 create mode 100644 7.0.148 create mode 100644 7.0.149 create mode 100644 7.0.150 create mode 100644 7.0.151 create mode 100644 7.0.152 create mode 100644 7.0.153 create mode 100644 7.0.154 create mode 100644 7.0.155 create mode 100644 7.0.157 create mode 100644 7.0.158 create mode 100644 vim-autopaste.patch diff --git a/7.0.082 b/7.0.082 new file mode 100644 index 0000000..1eb5c0e --- /dev/null +++ b/7.0.082 @@ -0,0 +1,103 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.082 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.082 +Problem: Calling a function that waits for input may cause List and + Dictionary arguments to be freed by the garbage collector. +Solution: Keep a list of all arguments to internal functions. +Files: src/eval.c + + +*** ../vim-7.0.081/src/eval.c Sat Sep 2 13:45:01 2006 +--- src/eval.c Sun Sep 3 15:36:10 2006 +*************** +*** 248,253 **** +--- 248,264 ---- + }; + + /* ++ * Struct used to make a list of all arguments used in internal functions. ++ */ ++ typedef struct av_list_item_S av_list_item_T; ++ struct av_list_item_S { ++ av_list_item_T *avl_next; ++ typval_T *avl_argvars; ++ }; ++ ++ av_list_item_T *argvars_list = NULL; ++ ++ /* + * Info used by a ":for" loop. + */ + typedef struct +*************** +*** 6058,6063 **** +--- 6069,6075 ---- + int i; + funccall_T *fc; + int did_free = FALSE; ++ av_list_item_T *av; + #ifdef FEAT_WINDOWS + tabpage_T *tp; + #endif +*************** +*** 6094,6099 **** +--- 6106,6116 ---- + set_ref_in_ht(&fc->l_avars.dv_hashtab, copyID); + } + ++ /* arguments for internal functions */ ++ for (av = argvars_list; av != NULL; av = av->avl_next) ++ for (i = 0; av->avl_argvars[i].v_type != VAR_UNKNOWN; ++i) ++ set_ref_in_item(&av->avl_argvars[i], copyID); ++ + /* + * 2. Go through the list of dicts and free items without the copyID. + */ +*************** +*** 7537,7545 **** +--- 7554,7574 ---- + error = ERROR_TOOMANY; + else + { ++ av_list_item_T av_list_item; ++ ++ /* Add the arguments to the "argvars_list" to avoid the ++ * garbage collector not seeing them. This isn't needed ++ * for user functions, because the arguments are available ++ * in the a: hashtab. */ ++ av_list_item.avl_argvars = argvars; ++ av_list_item.avl_next = argvars_list; ++ argvars_list = &av_list_item; ++ + argvars[argcount].v_type = VAR_UNKNOWN; + functions[i].f_func(argvars, rettv); + error = ERROR_NONE; ++ ++ argvars_list = av_list_item.avl_next; + } + } + } +*** ../vim-7.0.081/src/version.c Sat Sep 2 17:58:36 2006 +--- src/version.c Sun Sep 3 15:35:16 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 82, + /**/ + +-- +Just think of all the things we haven't thought of yet. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.0.083 b/7.0.083 new file mode 100644 index 0000000..9f212f3 --- /dev/null +++ b/7.0.083 @@ -0,0 +1,91 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.083 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.083 +Problem: Clicking with the mouse on an item for inputlist() doesn't work + when 'compatible' is set and/or when 'cmdheight' is more than one. + (Christian J. Robinson) +Solution: Also decrement "lines_left" when 'more' isn't set. Set + "cmdline_row" to zero to get all mouse events. +Files: src/message.c, src/misc1.c + + +*** ../vim-7.0.082/src/message.c Sat May 13 13:12:49 2006 +--- src/message.c Sun Sep 3 14:32:00 2006 +*************** +*** 1925,1931 **** + * If screen is completely filled and 'more' is set then wait + * for a character. + */ +! if (p_more && --lines_left == 0 && State != HITRETURN + && !msg_no_more && !exmode_active) + { + #ifdef FEAT_CON_DIALOG +--- 1925,1932 ---- + * If screen is completely filled and 'more' is set then wait + * for a character. + */ +! --lines_left; +! if (p_more && lines_left == 0 && State != HITRETURN + && !msg_no_more && !exmode_active) + { + #ifdef FEAT_CON_DIALOG +*** ../vim-7.0.082/src/misc1.c Tue Aug 15 22:26:04 2006 +--- src/misc1.c Sun Sep 3 16:33:48 2006 +*************** +*** 3196,3209 **** + else + MSG_PUTS(_("Choice number ( cancels): ")); + +! /* Set the state such that text can be selected/copied/pasted. */ + save_cmdline_row = cmdline_row; +! cmdline_row = Rows - 1; + save_State = State; +! if (mouse_used == NULL) +! State = CMDLINE; +! else +! State = NORMAL; + + i = get_number(TRUE, mouse_used); + if (KeyTyped) +--- 3196,3207 ---- + else + MSG_PUTS(_("Choice number ( cancels): ")); + +! /* Set the state such that text can be selected/copied/pasted and we still +! * get mouse events. */ + save_cmdline_row = cmdline_row; +! cmdline_row = 0; + save_State = State; +! State = CMDLINE; + + i = get_number(TRUE, mouse_used); + if (KeyTyped) +*** ../vim-7.0.082/src/version.c Sun Sep 3 15:38:02 2006 +--- src/version.c Sun Sep 3 16:36:58 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 83, + /**/ + +-- + "To whoever finds this note - + I have been imprisoned by my father who wishes me to marry + against my will. Please please please please come and rescue me. + I am in the tall tower of Swamp Castle." + SIR LAUNCELOT's eyes light up with holy inspiration. + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.0.084 b/7.0.084 new file mode 100644 index 0000000..925a0a1 --- /dev/null +++ b/7.0.084 @@ -0,0 +1,221 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.084 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.084 +Problem: The garbage collector may do its work while some Lists or + Dictionaries are used internally, e.g., by ":echo" that runs into + the more-prompt or ":echo [garbagecollect()]". +Solution: Only do garbage collection when waiting for a character at the + toplevel. Let garbagecollect() set a flag that is handled at the + toplevel before waiting for a character. +Files: src/eval.c, src/getchar.c, src/globals.h, src/main.c + + +*** ../vim-7.0.083/src/eval.c Sun Sep 3 15:38:02 2006 +--- src/eval.c Tue Sep 5 11:49:38 2006 +*************** +*** 6074,6079 **** +--- 6074,6083 ---- + tabpage_T *tp; + #endif + ++ /* Only do this once. */ ++ want_garbage_collect = FALSE; ++ may_garbage_collect = FALSE; ++ + /* + * 1. Go through all accessible variables and mark all lists and dicts + * with copyID. +*************** +*** 9636,9642 **** + typval_T *argvars; + typval_T *rettv; + { +! garbage_collect(); + } + + /* +--- 9640,9648 ---- + typval_T *argvars; + typval_T *rettv; + { +! /* This is postponed until we are back at the toplevel, because we may be +! * using Lists and Dicts internally. E.g.: ":echo [garbagecollect()]". */ +! want_garbage_collect = TRUE; + } + + /* +*** ../vim-7.0.083/src/getchar.c Wed May 3 23:19:24 2006 +--- src/getchar.c Tue Sep 5 12:55:54 2006 +*************** +*** 1451,1457 **** + { + updatescript(0); + #ifdef FEAT_EVAL +! garbage_collect(); + #endif + } + +--- 1451,1458 ---- + { + updatescript(0); + #ifdef FEAT_EVAL +! if (may_garbage_collect) +! garbage_collect(); + #endif + } + +*************** +*** 1502,1507 **** +--- 1503,1515 ---- + int i; + #endif + ++ #ifdef FEAT_EVAL ++ /* Do garbage collection when garbagecollect() was called previously and ++ * we are now at the toplevel. */ ++ if (may_garbage_collect && want_garbage_collect) ++ garbage_collect(); ++ #endif ++ + /* + * If a character was put back with vungetc, it was already processed. + * Return it directly. +*************** +*** 1511,1523 **** + c = old_char; + old_char = -1; + mod_mask = old_mod_mask; +- return c; + } +! +! mod_mask = 0x0; +! last_recorded_len = 0; +! for (;;) /* this is done twice if there are modifiers */ + { + if (mod_mask) /* no mapping after modifier has been read */ + { + ++no_mapping; +--- 1519,1531 ---- + c = old_char; + old_char = -1; + mod_mask = old_mod_mask; + } +! else + { ++ mod_mask = 0x0; ++ last_recorded_len = 0; ++ for (;;) /* this is done twice if there are modifiers */ ++ { + if (mod_mask) /* no mapping after modifier has been read */ + { + ++no_mapping; +*************** +*** 1695,1702 **** + } + #endif + +! return c; + } + } + + /* +--- 1703,1722 ---- + } + #endif + +! break; +! } + } ++ ++ #ifdef FEAT_EVAL ++ /* ++ * In the main loop "may_garbage_collect" can be set to do garbage ++ * collection in the first next vgetc(). It's disabled after that to ++ * avoid internally used Lists and Dicts to be freed. ++ */ ++ may_garbage_collect = FALSE; ++ #endif ++ ++ return c; + } + + /* +*** ../vim-7.0.083/src/globals.h Sat Sep 2 14:52:41 2006 +--- src/globals.h Tue Sep 5 11:46:10 2006 +*************** +*** 300,308 **** + #endif + + #ifdef FEAT_EVAL +! EXTERN scid_T current_SID INIT(= 0); /* ID of script being sourced or +! was sourced to define the +! current function. */ + #endif + + #if defined(FEAT_EVAL) || defined(FEAT_SYN_HL) +--- 300,315 ---- + #endif + + #ifdef FEAT_EVAL +! /* Garbage collection can only take place when we are sure there are no Lists +! * or Dictionaries being used internally. This is flagged with +! * "may_garbage_collect" when we are at the toplevel. +! * "want_garbage_collect" is set by the garbagecollect() function, which means +! * we do garbage collection before waiting for a char at the toplevel. */ +! EXTERN int may_garbage_collect INIT(= FALSE); +! EXTERN int want_garbage_collect INIT(= FALSE); +! +! /* ID of script being sourced or was sourced to define the current function. */ +! EXTERN scid_T current_SID INIT(= 0); + #endif + + #if defined(FEAT_EVAL) || defined(FEAT_SYN_HL) +*** ../vim-7.0.083/src/main.c Tue Aug 29 17:28:56 2006 +--- src/main.c Tue Sep 5 12:33:47 2006 +*************** +*** 1130,1135 **** +--- 1130,1145 ---- + */ + update_curswant(); + ++ #ifdef FEAT_EVAL ++ /* ++ * May perform garbage collection when waiting for a character, but ++ * only at the very toplevel. Otherwise we may be using a List or ++ * Dict internally somewhere. ++ * "may_garbage_collect" is reset in vgetc() which is invoked through ++ * do_exmode() and normal_cmd(). ++ */ ++ may_garbage_collect = (!cmdwin && !noexmode); ++ #endif + /* + * If we're invoked as ex, do a round of ex commands. + * Otherwise, get and execute a normal mode command. +*** ../vim-7.0.083/src/version.c Sun Sep 3 16:39:51 2006 +--- src/version.c Tue Sep 5 12:51:28 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 84, + /**/ + +-- +LAUNCELOT: At last! A call! A cry of distress ... + (he draws his sword, and turns to CONCORDE) + Concorde! Brave, Concorde ... you shall not have died in vain! +CONCORDE: I'm not quite dead, sir ... + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.0.085 b/7.0.085 new file mode 100644 index 0000000..d22fa43 --- /dev/null +++ b/7.0.085 @@ -0,0 +1,53 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.085 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.085 +Problem: When doing "make test" the viminfo file is modified. +Solution: Use another viminfo file after setting 'compatible. +Files: src/testdir/test56.in + + +*** ../vim-7.0.084/src/testdir/test56.in Thu May 19 00:21:20 2005 +--- src/testdir/test56.in Sun Sep 3 16:28:41 2006 +*************** +*** 3,9 **** + STARTTEST + :so small.vim + :" +! :set nocp + :/^start:/+1,/^end:/-1w! Xtest.vim + :source Xtest.vim + _x +--- 3,9 ---- + STARTTEST + :so small.vim + :" +! :set nocp viminfo+=nviminfo + :/^start:/+1,/^end:/-1w! Xtest.vim + :source Xtest.vim + _x +*** ../vim-7.0.084/src/version.c Tue Sep 5 12:57:14 2006 +--- src/version.c Tue Sep 5 13:33:22 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 85, + /**/ + +-- +Apologies for taking up the bandwidth with the apology. Anything else I +can apologise for ...... er no can't think of anything, sorry about that. + Andy Hunt (Member of British Olympic Apology Squad) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.0.086 b/7.0.086 new file mode 100644 index 0000000..41951f9 --- /dev/null +++ b/7.0.086 @@ -0,0 +1,57 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.086 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.086 +Problem: getqflist() returns entries for pattern and text with the number + zero. Passing these to setqflist() results in the string "0". +Solution: Use an empty string instead of the number zero. +Files: src/quickfix.c + + +*** ../vim-7.0.085/src/quickfix.c Tue Aug 29 17:28:56 2006 +--- src/quickfix.c Mon Sep 4 20:18:48 2006 +*************** +*** 3426,3433 **** + || dict_add_nr_str(dict, "col", (long)qfp->qf_col, NULL) == FAIL + || dict_add_nr_str(dict, "vcol", (long)qfp->qf_viscol, NULL) == FAIL + || dict_add_nr_str(dict, "nr", (long)qfp->qf_nr, NULL) == FAIL +! || dict_add_nr_str(dict, "pattern", 0L, qfp->qf_pattern) == FAIL +! || dict_add_nr_str(dict, "text", 0L, qfp->qf_text) == FAIL + || dict_add_nr_str(dict, "type", 0L, buf) == FAIL + || dict_add_nr_str(dict, "valid", (long)qfp->qf_valid, NULL) == FAIL) + return FAIL; +--- 3426,3435 ---- + || dict_add_nr_str(dict, "col", (long)qfp->qf_col, NULL) == FAIL + || dict_add_nr_str(dict, "vcol", (long)qfp->qf_viscol, NULL) == FAIL + || dict_add_nr_str(dict, "nr", (long)qfp->qf_nr, NULL) == FAIL +! || dict_add_nr_str(dict, "pattern", 0L, +! qfp->qf_pattern == NULL ? (char_u *)"" : qfp->qf_pattern) == FAIL +! || dict_add_nr_str(dict, "text", 0L, +! qfp->qf_text == NULL ? (char_u *)"" : qfp->qf_text) == FAIL + || dict_add_nr_str(dict, "type", 0L, buf) == FAIL + || dict_add_nr_str(dict, "valid", (long)qfp->qf_valid, NULL) == FAIL) + return FAIL; +*** ../vim-7.0.085/src/version.c Tue Sep 5 13:34:30 2006 +--- src/version.c Tue Sep 5 15:35:40 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 86, + /**/ + +-- +A vacation is a period of travel during which you find that you +took twice as many clothes and half as much money as you needed. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.0.087 b/7.0.087 new file mode 100644 index 0000000..029aef7 --- /dev/null +++ b/7.0.087 @@ -0,0 +1,262 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.087 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.087 +Problem: After ":file fname" and ":saveas fname" the 'autochdir' option + does not take effect. (Yakov Lerner) + Commands for handling 'autochdir' are repeated many times. +Solution: Add the DO_AUTOCHDIR macro and do_autochdir(). Use it for + ":file fname" and ":saveas fname". +Files: src/proto/buffer.pro, src/buffer.c, src/ex_cmds.c, src/macros.h, + src/option.c, src/window.c + + +*** ../vim-7.0.086/src/proto/buffer.pro Sun Apr 30 20:25:32 2006 +--- src/proto/buffer.pro Tue Sep 5 16:25:40 2006 +*************** +*** 10,15 **** +--- 10,16 ---- + extern int do_buffer __ARGS((int action, int start, int dir, int count, int forceit)); + extern void set_curbuf __ARGS((buf_T *buf, int action)); + extern void enter_buffer __ARGS((buf_T *buf)); ++ extern void do_autochdir __ARGS((void)); + extern buf_T *buflist_new __ARGS((char_u *ffname, char_u *sfname, linenr_T lnum, int flags)); + extern void free_buf_options __ARGS((buf_T *buf, int free_p_ff)); + extern int buflist_getfile __ARGS((int n, linenr_T lnum, int options, int forceit)); +*** ../vim-7.0.086/src/buffer.c Tue Aug 29 16:52:01 2006 +--- src/buffer.c Tue Sep 5 15:18:19 2006 +*************** +*** 434,445 **** + if (usingNetbeans) + netbeans_file_closed(buf); + #endif +! #ifdef FEAT_AUTOCHDIR +! /* Change directories when the acd option is set on. */ +! if (p_acd && curbuf->b_ffname != NULL +! && vim_chdirfile(curbuf->b_ffname) == OK) +! shorten_fnames(TRUE); +! #endif + + /* + * Remove the buffer from the list. +--- 434,441 ---- + if (usingNetbeans) + netbeans_file_closed(buf); + #endif +! /* Change directories when the 'acd' option is set. */ +! DO_AUTOCHDIR + + /* + * Remove the buffer from the list. +*************** +*** 1422,1433 **** + netbeans_file_activated(curbuf); + #endif + +! #ifdef FEAT_AUTOCHDIR +! /* Change directories when the acd option is set on. */ +! if (p_acd && curbuf->b_ffname != NULL +! && vim_chdirfile(curbuf->b_ffname) == OK) +! shorten_fnames(TRUE); +! #endif + + #ifdef FEAT_KEYMAP + if (curbuf->b_kmap_state & KEYMAP_INIT) +--- 1418,1425 ---- + netbeans_file_activated(curbuf); + #endif + +! /* Change directories when the 'acd' option is set. */ +! DO_AUTOCHDIR + + #ifdef FEAT_KEYMAP + if (curbuf->b_kmap_state & KEYMAP_INIT) +*************** +*** 1435,1440 **** +--- 1427,1444 ---- + #endif + redraw_later(NOT_VALID); + } ++ ++ #if defined(FEAT_AUTOCHDIR) || defined(PROTO) ++ /* ++ * Change to the directory of the current buffer. ++ */ ++ void ++ do_autochdir() ++ { ++ if (curbuf->b_ffname != NULL && vim_chdirfile(curbuf->b_ffname) == OK) ++ shorten_fnames(TRUE); ++ } ++ #endif + + /* + * functions for dealing with the buffer list +*** ../vim-7.0.086/src/ex_cmds.c Tue Aug 29 17:28:56 2006 +--- src/ex_cmds.c Tue Sep 5 15:24:58 2006 +*************** +*** 2458,2463 **** +--- 2458,2465 ---- + #ifdef FEAT_AUTOCMD + apply_autocmds(EVENT_BUFFILEPOST, NULL, NULL, FALSE, curbuf); + #endif ++ /* Change directories when the 'acd' option is set. */ ++ DO_AUTOCHDIR + } + /* print full file name if :cd used */ + fileinfo(FALSE, FALSE, eap->forceit); +*************** +*** 2675,2682 **** + eap, eap->append, eap->forceit, TRUE, FALSE); + + /* After ":saveas fname" reset 'readonly'. */ +! if (eap->cmdidx == CMD_saveas && retval == OK) +! curbuf->b_p_ro = FALSE; + } + + theend: +--- 2677,2689 ---- + eap, eap->append, eap->forceit, TRUE, FALSE); + + /* After ":saveas fname" reset 'readonly'. */ +! if (eap->cmdidx == CMD_saveas) +! { +! if (retval == OK) +! curbuf->b_p_ro = FALSE; +! /* Change directories when the 'acd' option is set. */ +! DO_AUTOCHDIR +! } + } + + theend: +*************** +*** 3547,3557 **** + foldUpdateAll(curwin); + #endif + +! #ifdef FEAT_AUTOCHDIR +! if (p_acd && curbuf->b_ffname != NULL +! && vim_chdirfile(curbuf->b_ffname) == OK) +! shorten_fnames(TRUE); +! #endif + /* + * Careful: open_buffer() and apply_autocmds() may change the current + * buffer and window. +--- 3554,3562 ---- + foldUpdateAll(curwin); + #endif + +! /* Change directories when the 'acd' option is set. */ +! DO_AUTOCHDIR +! + /* + * Careful: open_buffer() and apply_autocmds() may change the current + * buffer and window. +*************** +*** 3718,3729 **** + if (p_im) + need_start_insertmode = TRUE; + +! #ifdef FEAT_AUTOCHDIR +! /* Change directories when the acd option is set on. */ +! if (p_acd && curbuf->b_ffname != NULL +! && vim_chdirfile(curbuf->b_ffname) == OK) +! shorten_fnames(TRUE); +! #endif + + #if defined(FEAT_SUN_WORKSHOP) || defined(FEAT_NETBEANS_INTG) + if (gui.in_use && curbuf->b_ffname != NULL) +--- 3723,3730 ---- + if (p_im) + need_start_insertmode = TRUE; + +! /* Change directories when the 'acd' option is set. */ +! DO_AUTOCHDIR + + #if defined(FEAT_SUN_WORKSHOP) || defined(FEAT_NETBEANS_INTG) + if (gui.in_use && curbuf->b_ffname != NULL) +*** ../vim-7.0.086/src/macros.h Wed Mar 1 23:00:25 2006 +--- src/macros.h Tue Sep 5 15:15:30 2006 +*************** +*** 276,278 **** +--- 276,284 ---- + # define MB_CHARLEN(p) STRLEN(p) + # define PTR2CHAR(p) ((int)*(p)) + #endif ++ ++ #ifdef FEAT_AUTOCHDIR ++ # define DO_AUTOCHDIR if (p_acd) do_autochdir(); ++ #else ++ # define DO_AUTOCHDIR ++ #endif +*** ../vim-7.0.086/src/option.c Tue Aug 29 17:28:56 2006 +--- src/option.c Tue Sep 5 15:20:04 2006 +*************** +*** 7326,7334 **** + #ifdef FEAT_AUTOCHDIR + else if ((int *)varp == &p_acd) + { +! if (p_acd && curbuf->b_ffname != NULL +! && vim_chdirfile(curbuf->b_ffname) == OK) +! shorten_fnames(TRUE); + } + #endif + +--- 7326,7333 ---- + #ifdef FEAT_AUTOCHDIR + else if ((int *)varp == &p_acd) + { +! /* Change directories when the 'acd' option is set now. */ +! DO_AUTOCHDIR + } + #endif + +*** ../vim-7.0.086/src/window.c Tue Aug 29 17:28:56 2006 +--- src/window.c Tue Sep 5 15:20:35 2006 +*************** +*** 3954,3966 **** + setmouse(); /* in case jumped to/from help buffer */ + #endif + +! #ifdef FEAT_AUTOCHDIR +! /* Change directories when the 'acd' option is set on and after +! * switching windows. */ +! if (p_acd && curbuf->b_ffname != NULL +! && vim_chdirfile(curbuf->b_ffname) == OK) +! shorten_fnames(TRUE); +! #endif + } + + #endif /* FEAT_WINDOWS */ +--- 3954,3961 ---- + setmouse(); /* in case jumped to/from help buffer */ + #endif + +! /* Change directories when the 'acd' option is set. */ +! DO_AUTOCHDIR + } + + #endif /* FEAT_WINDOWS */ +*** ../vim-7.0.086/src/version.c Tue Sep 5 15:36:30 2006 +--- src/version.c Tue Sep 5 15:52:45 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 87, + /**/ + +-- +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/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.0.088 b/7.0.088 new file mode 100644 index 0000000..ef21db4 --- /dev/null +++ b/7.0.088 @@ -0,0 +1,84 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.088 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.088 +Problem: When compiled with Perl the generated prototypes have "extern" + unnecessarily added. +Solution: Remove the "-pipe" argument from PERL_CFLAGS. +Files: src/auto/configure, src/configure.in + + +*** ../vim-7.0.087/src/auto/configure Thu May 4 23:52:03 2006 +--- src/auto/configure Tue Sep 5 17:09:55 2006 +*************** +*** 4014,4020 **** + LDFLAGS=$ldflags_save + if test $perl_ok = yes; then + if test "X$perlcppflags" != "X"; then +! PERL_CFLAGS="$perlcppflags" + fi + if test "X$perlldflags" != "X"; then + LDFLAGS="$perlldflags $LDFLAGS" +--- 4014,4020 ---- + LDFLAGS=$ldflags_save + if test $perl_ok = yes; then + if test "X$perlcppflags" != "X"; then +! PERL_CFLAGS=`echo "$perlcppflags" | sed 's/-pipe //'` + fi + if test "X$perlldflags" != "X"; then + LDFLAGS="$perlldflags $LDFLAGS" +*** ../vim-7.0.087/src/configure.in Thu May 4 23:52:32 2006 +--- src/configure.in Tue Sep 5 17:09:50 2006 +*************** +*** 508,514 **** + LDFLAGS=$ldflags_save + if test $perl_ok = yes; then + if test "X$perlcppflags" != "X"; then +! PERL_CFLAGS="$perlcppflags" + fi + if test "X$perlldflags" != "X"; then + LDFLAGS="$perlldflags $LDFLAGS" +--- 508,515 ---- + LDFLAGS=$ldflags_save + if test $perl_ok = yes; then + if test "X$perlcppflags" != "X"; then +! dnl remove -pipe, it confuses cproto +! PERL_CFLAGS=`echo "$perlcppflags" | sed 's/-pipe //'` + fi + if test "X$perlldflags" != "X"; then + LDFLAGS="$perlldflags $LDFLAGS" +*** ../vim-7.0.087/src/version.c Tue Sep 5 16:29:38 2006 +--- src/version.c Tue Sep 5 17:27:33 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 88, + /**/ + +-- + ** 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/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.0.089 b/7.0.089 new file mode 100644 index 0000000..f314286 --- /dev/null +++ b/7.0.089 @@ -0,0 +1,97 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.089 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.089 +Problem: "ga" does not work properly for a non-Unicode multi-byte encoding. +Solution: Only check for composing chars for utf-8. (Taro Muraoka) +Files: src/ex_cmds.c + + +*** ../vim-7.0.088/src/ex_cmds.c Tue Sep 5 16:29:38 2006 +--- src/ex_cmds.c Tue Sep 5 18:12:41 2006 +*************** +*** 95,101 **** + _("<%s>%s%s %d, Hex %02x, Octal %03o"), + transchar(c), buf1, buf2, c, c, c); + #ifdef FEAT_MBYTE +! c = cc[ci++]; + #endif + } + +--- 95,104 ---- + _("<%s>%s%s %d, Hex %02x, Octal %03o"), + transchar(c), buf1, buf2, c, c, c); + #ifdef FEAT_MBYTE +! if (enc_utf8) +! c = cc[ci++]; +! else +! c = 0; + #endif + } + +*************** +*** 108,114 **** + if (len > 0) + IObuff[len++] = ' '; + IObuff[len++] = '<'; +! if (utf_iscomposing(c) + # ifdef USE_GUI + && !gui.in_use + # endif +--- 111,117 ---- + if (len > 0) + IObuff[len++] = ' '; + IObuff[len++] = '<'; +! if (enc_utf8 && utf_iscomposing(c) + # ifdef USE_GUI + && !gui.in_use + # endif +*************** +*** 120,126 **** + : _("> %d, Hex %08x, Octal %o"), c, c, c); + if (ci == MAX_MCO) + break; +! c = cc[ci++]; + } + #endif + +--- 123,132 ---- + : _("> %d, Hex %08x, Octal %o"), c, c, c); + if (ci == MAX_MCO) + break; +! if (enc_utf8) +! c = cc[ci++]; +! else +! c = 0; + } + #endif + +*** ../vim-7.0.088/src/version.c Tue Sep 5 17:30:25 2006 +--- src/version.c Tue Sep 5 18:19:42 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 89, + /**/ + +-- + [clop clop] +GUARD #1: Halt! Who goes there? +ARTHUR: It is I, Arthur, son of Uther Pendragon, from the castle of + Camelot. King of the Britons, defeator of the Saxons, sovereign of + all England! +GUARD #1: Pull the other one! + The Quest for the Holy Grail (Monty Python) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.0.090 b/7.0.090 new file mode 100644 index 0000000..413d59b --- /dev/null +++ b/7.0.090 @@ -0,0 +1,81 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.090 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.090 +Problem: Cancelling the conform() dialog on the console with Esc requires + typing it twice. (Benji Fisher) +Solution: When the start of an escape sequence is found use 'timeoutlen' or + 'ttimeoutlen'. +Files: src/misc1.c + + +*** ../vim-7.0.089/src/misc1.c Sun Sep 3 16:39:51 2006 +--- src/misc1.c Tue Sep 5 20:31:43 2006 +*************** +*** 3016,3021 **** +--- 3016,3022 ---- + int len = 0; + int n; + int save_mapped_ctrl_c = mapped_ctrl_c; ++ int waited = 0; + + mapped_ctrl_c = FALSE; /* mappings are not used here */ + for (;;) +*************** +*** 3034,3044 **** + /* Replace zero and CSI by a special key code. */ + n = fix_input_buffer(buf + len, n, FALSE); + len += n; + } + +! /* incomplete termcode: get more characters */ +! if ((n = check_termcode(1, buf, len)) < 0) + continue; + /* found a termcode: adjust length */ + if (n > 0) + len = n; +--- 3035,3050 ---- + /* Replace zero and CSI by a special key code. */ + n = fix_input_buffer(buf + len, n, FALSE); + len += n; ++ waited = 0; + } ++ else if (len > 0) ++ ++waited; /* keep track of the waiting time */ + +! /* Incomplete termcode and not timed out yet: get more characters */ +! if ((n = check_termcode(1, buf, len)) < 0 +! && (!p_ttimeout || waited * 100L < (p_ttm < 0 ? p_tm : p_ttm))) + continue; ++ + /* found a termcode: adjust length */ + if (n > 0) + len = n; +*** ../vim-7.0.089/src/version.c Tue Sep 5 18:28:45 2006 +--- src/version.c Tue Sep 5 20:49:01 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 90, + /**/ + +-- +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/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.0.091 b/7.0.091 new file mode 100644 index 0000000..46aad92 --- /dev/null +++ b/7.0.091 @@ -0,0 +1,52 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.091 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.091 +Problem: Using winrestview() while 'showcmd' is set causes the cursor to be + displayed in the wrong position. (Yakov Lerner) +Solution: Set the window topline properly. +Files: src/eval.c + + +*** ../vim-7.0.090/src/eval.c Tue Sep 5 12:57:14 2006 +--- src/eval.c Tue Sep 5 21:21:37 2006 +*************** +*** 16225,16231 **** + curwin->w_curswant = get_dict_number(dict, (char_u *)"curswant"); + curwin->w_set_curswant = FALSE; + +! curwin->w_topline = get_dict_number(dict, (char_u *)"topline"); + #ifdef FEAT_DIFF + curwin->w_topfill = get_dict_number(dict, (char_u *)"topfill"); + #endif +--- 16225,16231 ---- + curwin->w_curswant = get_dict_number(dict, (char_u *)"curswant"); + curwin->w_set_curswant = FALSE; + +! set_topline(curwin, get_dict_number(dict, (char_u *)"topline")); + #ifdef FEAT_DIFF + curwin->w_topfill = get_dict_number(dict, (char_u *)"topfill"); + #endif +*** ../vim-7.0.090/src/version.c Tue Sep 5 20:56:11 2006 +--- src/version.c Wed Sep 6 22:12:31 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 91, + /**/ + +-- +Shit makes the flowers grow and that's beautiful + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.0.092 b/7.0.092 new file mode 100644 index 0000000..c247eeb --- /dev/null +++ b/7.0.092 @@ -0,0 +1,104 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.092 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.092 (after 7.0.082 and 7.0.084) +Problem: The list of internal function arguments is obsolete now that + garbage collection is only done at the toplevel. +Solution: Remove the list of all arguments to internal functions. +Files: src/eval.c + + +*** ../vim-7.0.091/src/eval.c Wed Sep 6 22:14:42 2006 +--- src/eval.c Sat Sep 9 12:00:28 2006 +*************** +*** 248,264 **** + }; + + /* +- * Struct used to make a list of all arguments used in internal functions. +- */ +- typedef struct av_list_item_S av_list_item_T; +- struct av_list_item_S { +- av_list_item_T *avl_next; +- typval_T *avl_argvars; +- }; +- +- av_list_item_T *argvars_list = NULL; +- +- /* + * Info used by a ":for" loop. + */ + typedef struct +--- 248,253 ---- +*************** +*** 6069,6075 **** + int i; + funccall_T *fc; + int did_free = FALSE; +- av_list_item_T *av; + #ifdef FEAT_WINDOWS + tabpage_T *tp; + #endif +--- 6058,6063 ---- +*************** +*** 6110,6120 **** + set_ref_in_ht(&fc->l_avars.dv_hashtab, copyID); + } + +- /* arguments for internal functions */ +- for (av = argvars_list; av != NULL; av = av->avl_next) +- for (i = 0; av->avl_argvars[i].v_type != VAR_UNKNOWN; ++i) +- set_ref_in_item(&av->avl_argvars[i], copyID); +- + /* + * 2. Go through the list of dicts and free items without the copyID. + */ +--- 6098,6103 ---- +*************** +*** 7558,7578 **** + error = ERROR_TOOMANY; + else + { +- av_list_item_T av_list_item; +- +- /* Add the arguments to the "argvars_list" to avoid the +- * garbage collector not seeing them. This isn't needed +- * for user functions, because the arguments are available +- * in the a: hashtab. */ +- av_list_item.avl_argvars = argvars; +- av_list_item.avl_next = argvars_list; +- argvars_list = &av_list_item; +- + argvars[argcount].v_type = VAR_UNKNOWN; + functions[i].f_func(argvars, rettv); + error = ERROR_NONE; +- +- argvars_list = av_list_item.avl_next; + } + } + } +--- 7541,7549 ---- +*** ../vim-7.0.091/src/version.c Wed Sep 6 22:14:42 2006 +--- src/version.c Sat Sep 9 12:04:55 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 92, + /**/ + +-- +"Hegel was right when he said that we learn from history that man can +never learn anything from history." (George Bernard Shaw) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.0.093 b/7.0.093 new file mode 100644 index 0000000..953e5f8 --- /dev/null +++ b/7.0.093 @@ -0,0 +1,74 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.093 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.093 +Problem: The matchparen plugin can't handle a 'matchpairs' value where a + colon is matched. +Solution: Change the split() that is used to change 'matchpairs' into a + List. +Files: runtime/plugin/matchparen.vim + + +*** ../vim-7.0.092/runtime/plugin/matchparen.vim Wed Sep 6 22:13:48 2006 +--- runtime/plugin/matchparen.vim Sat Sep 9 13:35:54 2006 +*************** +*** 1,6 **** + " Vim plugin for showing matching parens + " Maintainer: Bram Moolenaar +! " Last Change: 2006 Jun 26 + + " Exit quickly when: + " - this plugin was already loaded (or disabled) +--- 1,6 ---- + " Vim plugin for showing matching parens + " Maintainer: Bram Moolenaar +! " Last Change: 2006 Sep 09 + + " Exit quickly when: + " - this plugin was already loaded (or disabled) +*************** +*** 44,50 **** + let before = 0 + + let c = getline(c_lnum)[c_col - 1] +! let plist = split(&matchpairs, ':\|,') + let i = index(plist, c) + if i < 0 + " not found, in Insert mode try character before the cursor +--- 44,50 ---- + let before = 0 + + let c = getline(c_lnum)[c_col - 1] +! let plist = split(&matchpairs, '.\zs[:,]') + let i = index(plist, c) + if i < 0 + " not found, in Insert mode try character before the cursor +*** ../vim-7.0.092/src/version.c Sat Sep 9 12:05:39 2006 +--- src/version.c Sat Sep 9 13:29:58 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 93, + /**/ + +-- +BLACK KNIGHT: I move for no man. +ARTHUR: So be it! + [hah] [parry thrust] + [ARTHUR chops the BLACK KNIGHT's left arm off] +ARTHUR: Now stand aside, worthy adversary. +BLACK KNIGHT: 'Tis but a scratch. + The Quest for the Holy Grail (Monty Python) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.0.094 b/7.0.094 new file mode 100644 index 0000000..c45a9bc --- /dev/null +++ b/7.0.094 @@ -0,0 +1,73 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.094 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.094 +Problem: When a hidden buffer is made the current buffer and another file + edited later, the file message will still be given. Using + ":silent" also doesn't prevent the file message. (Marvin Renich) +Solution: Reset the need_fileinfo flag when reading a file. Don't set + need_fileinfo when msg_silent is set. +Files: src/buffer.c, src/fileio.c + + +*** ../vim-7.0.093/src/buffer.c Tue Sep 5 16:29:38 2006 +--- src/buffer.c Thu Sep 7 21:43:41 2006 +*************** +*** 1386,1392 **** + } + else + { +! need_fileinfo = TRUE; /* display file info after redraw */ + (void)buf_check_timestamp(curbuf, FALSE); /* check if file changed */ + #ifdef FEAT_AUTOCMD + curwin->w_topline = 1; +--- 1386,1393 ---- + } + else + { +! if (!msg_silent) +! need_fileinfo = TRUE; /* display file info after redraw */ + (void)buf_check_timestamp(curbuf, FALSE); /* check if file changed */ + #ifdef FEAT_AUTOCMD + curwin->w_topline = 1; +*** ../vim-7.0.093/src/fileio.c Tue Aug 29 18:16:37 2006 +--- src/fileio.c Wed Sep 6 22:54:19 2006 +*************** +*** 316,321 **** +--- 316,324 ---- + * display the line. */ + ex_no_reprint = TRUE; + ++ /* don't display the file info for another buffer now */ ++ need_fileinfo = FALSE; ++ + /* + * For Unix: Use the short file name whenever possible. + * Avoids problems with networks and when directory names are changed. +*** ../vim-7.0.093/src/version.c Sat Sep 9 13:36:51 2006 +--- src/version.c Sat Sep 9 14:19:04 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 94, + /**/ + +-- +ARTHUR: A scratch? Your arm's off! +BLACK KNIGHT: No, it isn't. +ARTHUR: Well, what's that then? +BLACK KNIGHT: I've had worse. + The Quest for the Holy Grail (Monty Python) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.0.095 b/7.0.095 new file mode 100644 index 0000000..81e9027 --- /dev/null +++ b/7.0.095 @@ -0,0 +1,935 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.095 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.095 +Problem: The Greek tutor is not available in utf-8. "el" is used for the + language, only "gr" for the country is recognized. +Solution: Add the utf-8 Greek tutor. Use it for conversion to iso-8859-7 + and cp737. (Lefteris Dimitroulakis) +Files: runtime/tutor/Makefile, runtime/tutor/tutor.gr.utf-8, + runtime/tutor/tutor.vim + + +*** ../vim-7.0.094/runtime/tutor/Makefile Sat Sep 2 14:54:17 2006 +--- runtime/tutor/Makefile Sun Sep 10 11:56:54 2006 +*************** +*** 7,13 **** + + all: tutor.ja.sjis tutor.ja.euc \ + tutor.ko.euc \ +! tutor.ru tutor.ru.cp1251 + + tutor.ja.sjis: tutor.ja.utf-8 + nkf -WXs tutor.ja.utf-8 > tutor.ja.sjis +--- 7,14 ---- + + all: tutor.ja.sjis tutor.ja.euc \ + tutor.ko.euc \ +! tutor.ru tutor.ru.cp1251 \ +! tutor.gr tutor.gr.cp737 + + tutor.ja.sjis: tutor.ja.utf-8 + nkf -WXs tutor.ja.utf-8 > tutor.ja.sjis +*************** +*** 23,25 **** +--- 24,32 ---- + + tutor.ru.cp1251: tutor.ru.utf-8 + iconv -f UTF-8 -t cp1251 tutor.ru.utf-8 > tutor.ru.cp1251 ++ ++ tutor.gr: tutor.gr.utf-8 ++ iconv -f UTF-8 -t ISO-8859-7 tutor.gr.utf-8 > tutor.gr ++ ++ tutor.gr.cp737: tutor.gr.utf-8 ++ iconv -f UTF-8 -t cp737 tutor.gr.utf-8 > tutor.gr.cp737 +*** ../vim-7.0.094/runtime/tutor/tutor.gr.utf-8 Sun Sep 10 13:20:58 2006 +--- runtime/tutor/tutor.gr.utf-8 Sun Sep 10 11:54:10 2006 +*************** +*** 0 **** +--- 1,815 ---- ++ =============================================================================== ++ = Κ αλ ω σ ή ρ θ α τ ε σ τ ο V I M T u t o r - Έκδοση 1.5 = ++ =============================================================================== ++ ++ Ο Vim είναι ένας πανίσχυρος συντάκτης που έχει πολλές εντολές, πάρα ++ πολλές για να εξηγήσουμε σε μία περιήγηση όπως αυτή. Αυτή η περιήγηση ++ σχεδιάστηκε για να περιγράψει ικανοποιητικά τις εντολές που θα σας ++ κάνουν να χρησιμοποιείτε εύκολα τον Vim σαν έναν γενικής χρήσης συντάκτη. ++ ++ Ο κατά προσέγγιση χρόνος που απαιτείται για να ολοκληρώσετε την περιήγηση ++ είναι 25-30 λεπτά, εξαρτώντας από το πόσο χρόνο θα ξοδέψετε για ++ πειραματισμούς. ++ ++ Οι εντολές στα μαθήματα θα τροποποιήσουν το κείμενο. Δημιουργήστε ένα ++ αντίγραφο αυτού του αρχείου για να εξασκηθείτε (αν ξεκινήσατε το ++ "Vimtutor" αυτό είναι ήδη ένα αντίγραφο). ++ ++ Είναι σημαντικό να θυμάστε ότι αυτή η περιήγηση είναι οργανωμένη έτσι ++ ώστε να διδάσκει μέσω της χρήσης. Αυτό σημαίνει ότι χρειάζεται να ++ εκτελείτε τις εντολές για να τις μάθετε σωστά. Αν διαβάζετε μόνο το ++ κείμενο, θα τις ξεχάσετε! ++ ++ Τώρα, βεβαιωθείτε ότι το πλήκτρο Shift-Lock ΔΕΝ είναι πατημένο και ++ πατήστε το πλήκτρο j αρκετές φορές για να μετακινήσετε τον δρομέα έτσι ++ ώστε το Μάθημα 1.1 να γεμίσει πλήρως την οθόνη. ++ ++ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ++ Μάθημα 1.1: ΜΕΤΑΚΙΝΟΝΤΑΣ ΤΟΝ ΔΡΟΜΕΑ ++ ++ ** Για να κινήσετε τον δρομέα, πατήστε τα πλήκτρα h,j,k,l όπως δείχνεται. ** ++ ^ ++ k Hint: Το πλήκτρο h είναι αριστερά και κινεί στ' αριστερά. ++ < h l > Το πλήκτρο l είναι δεξιά και κινεί στα δεξιά. ++ j Το πλήκτρο j μοιάζει με βελάκι προς τα κάτω. ++ v ++ ++ 1. Μετακινείστε τον δρομέα τριγύρω στην οθόνη μέχρι να νοιώθετε άνετα. ++ ++ 2. Κρατήστε πατημένο το κάτω πλήκτρο (j) μέχρι να επαναληφθεί. ++ ---> Τώρα ξέρετε πώς να μετακινηθείτε στο επόμενο μάθημα. ++ ++ 3. Χρησιμοποιώντας το κάτω πλήκτρο, μετακινηθείτε στο Μάθημα 1.2. ++ ++ Σημείωση: Αν αμφιβάλλετε για κάτι που πατήσατε, πατήστε για να βρεθείτε ++ στην Κανονική Κατάσταση. Μετά πατήστε ξανά την εντολή που θέλατε. ++ ++ Σημείωση: Τα πλήκτρα του δρομέα θα πρέπει επίσης να δουλεύουν. Αλλά με τα hjkl ++ θα μπορείτε να κινηθείτε πολύ γρηγορότερα, μόλις τα συνηθίσετε. ++ ++ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ++ Μάθημα 1.2: ΜΠΑΙΝΟΝΤΑΣ ΚΑΙ ΒΓΑΙΝΟΝΤΑΣ ΣΤΟΝ VIM ++ ++ !! ΣΗΜΕΙΩΣΗ: Πριν εκτελέσετε κάποιο από τα βήματα, διαβάστε όλο το μάθημα!! ++ ++ 1. Πατήστε το πλήκτρο (για να είστε σίγουρα στην Κανονική Κατάσταση). ++ ++ 2. Πληκτρολογήστε: :q! . ++ ++ ---> Αυτό εξέρχεται από τον συντάκτη ΧΩΡΙΣ να σώσει όποιες αλλαγές έχετε κάνει. ++ Αν θέλετε να σώσετε τις αλλαγές και να εξέρθετε πληκτρολογήστε: ++ :wq ++ ++ 3. Όταν δείτε την προτροπή του φλοιού, πληκτρολογήστε την εντολή με την οποία ++ μπήκατε σε αυτήν την περιήγηση. Μπορεί να είναι: vimtutor ++ Κανονικά θα χρησιμοποιούσατε: vim tutor ++ ++ ---> 'vim' σημαίνει εισαγωγή στον συντάκτη vim, 'tutor' είναι το αρχείο που ++ θέλουμε να διορθώσουμε. ++ ++ 4. Αν έχετε απομνημονεύσει αυτά τα βήματα και έχετε αυτοπεποίθηση, εκτελέστε ++ τα βήματα 1 έως 3 για να βγείτε και να μπείτε ξανά στον συντάκτη. Μετά ++ μετακινήστε τον δρομέα κάτω στο Μάθημα 1.3. ++ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ++ Μάθημα 1.3: ΔΙΟΡΘΩΣΗ ΚΕΙΜΕΝΟΥ - ΔΙΑΓΡΑΦΗ ++ ++ ** Όσο είστε στην Κανονική Κατάσταση πατήστε x για να διαγράψετε τον ++ χαρακτήρα κάτω από τον δρομέα. ** ++ ++ 1. Μετακινείστε τον δρομέα στην παρακάτω γραμμή σημειωμένη με --->. ++ ++ 2. Για να διορθώσετε τα λάθη, κινείστε τον δρομέα μέχρι να είναι πάνω από ++ τον χαρακτήρα που θα διαγραφεί. ++ ++ 3. Πατήστε το πλήκτρο x για να διαγράψετε τον ανεπιθύμητο χαρακτήρα. ++ ++ 4. Επαναλάβετε τα βήματα 2 μέχρι 4 μέχρι η πρόταση να είναι σωστή. ++ ++ ---> The ccow jumpedd ovverr thhe mooon. ++ ++ 5. Τώρα που η γραμμή είναι σωστή, πηγαίντε στο Μάθημα 1.4. ++ ++ ΣΗΜΕΙΩΣΗ: Καθώς διατρέχετε αυτήν την περιήγηση, προσπαθήστε να μην ++ απομνημονεύετε, μαθαίνετε με τη χρήση. ++ ++ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ++ Μάθημα 1.4: ΔΙΟΡΘΩΣΗ ΚΕΙΜΕΝΟΥ - ΠΑΡΕΜΒΟΛΗ ++ ++ ** Όσο είστε σε Κανονική Κατάσταση πατήστε i για να παρεμβάλλετε κείμενο. ** ++ ++ 1. Μετακινείστε τον δρομέα μέχρι την πρώτη γραμμή παρακάτω σημειωμένη με --->. ++ ++ 2. Για να κάνετε την πρώτη γραμμή ίδια με την δεύτερη, μετακινείστε τον ++ δρομέα πάνω στον πρώτο χαρακτήρα ΜΕΤΑ από όπου θα παρεμβληθεί το κείμενο. ++ ++ 3. Πατήστε το i και πληκτρολογήστε τις απαραίτητες προσθήκες. ++ ++ 4. Καθώς διορθώνετε κάθε λάθος πατήστε για να επιστρέψετε στην ++ Κανονική Κατάσταση. Επαναλάβετε τα βήματα 2 μέχρι 4 για να διορθώσετε ++ την πρόταση. ++ ++ ---> There is text misng this . ++ ---> There is some text missing from this line. ++ ++ 5. Όταν είστε άνετοι με την παρεμβολή κειμένου μετακινηθείτε στην ++ παρακάτω περίληψη. ++ ++ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ++ ΜΑΘΗΜΑ 1 ΠΕΡΙΛΗΨΗ ++ ++ ++ 1. Ο δρομέας κινείται χρησιμοποιώντας είτε τα πλήκτρα δρομέα ή τα hjkl. ++ h (αριστέρα) j (κάτω) k (πάνω) l (δεξιά) ++ ++ 2. Για να μπείτε στον Vim (από την προτροπή %) γράψτε: vim ΑΡΧΕΙΟ ++ ++ 3. Για να βγείτε γράψτε: :q! για απόρριψη των αλλαγών. ++ Ή γράψτε: :wq για αποθήκευση των αλλαγών. ++ ++ 4. Για να διαγράψετε έναν χαρακτήρα κάτω από τον δρομέα σε ++ Κανονική Κατάσταση πατήστε: x ++ ++ 5. Για να εισάγετε κείμενο στον δρομέα όσο είστε σε Κανονική Κατάσταση γράψτε: ++ i πληκτρολογήστε το κείμενο ++ ++ ΣΗΜΕΙΩΣΗ: Πατώντας θα τοποθετηθείτε στην Κανονική Κατάσταση ή θα ++ ακυρώσετε μία ανεπιθύμητη και μερικώς ολοκληρωμένη εντολή. ++ ++ Τώρα συνεχίστε με το Μάθημα 2. ++ ++ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ++ Μάθημα 2.1: ΕΝΤΟΛΕΣ ΔΙΑΓΡΑΦΗΣ ++ ++ ** Γράψτε dw για να διαγράψετε μέχρι το τέλος μίας λέξης. ** ++ ++ 1. Πατήστε για να βεβαιωθείτε ότι είστε στην Κανονική Κατάσταση. ++ ++ 2. Μετακινείστε τον δρομέα στην παρακάτω γραμμή σημειωμένη με --->. ++ ++ 3. Πηγαίνετε τον δρομέα στην αρχή της λέξης που πρέπει να διαγραφεί. ++ ++ 4. Γράψτε dw για να κάνετε την λέξη να εξαφανιστεί. ++ ++ ΣΗΜΕΙΩΣΗ: Τα γράμματα dw θα εμφανιστούν στην τελευταία γραμμή της οθόνης όσο ++ τα πληκτρολογείτε. Αν γράψατε κάτι λάθος, πατήστε και ++ ξεκινήστε από την αρχή. ++ ++ ---> There are a some words fun that don't belong paper in this sentence. ++ ++ 5. Επαναλάβετε τα βήματα 3 και 4 μέχρι η πρόταση να είναι σωστή και ++ πηγαίνετε στο Μάθημα 2.2. ++ ++ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ++ Μάθημα 2.2: ΠΕΡΙΣΣΟΤΕΡΕΣ ΕΝΤΟΛΕΣ ΔΙΑΓΡΑΦΗΣ ++ ++ ** Πληκτρολογήστε d$ για να διαγράψετε μέχρι το τέλος της γραμμής. ** ++ ++ 1. Πατήστε για να βεβαιωθείτε ότι είστε στην Κανονική Κατάσταση. ++ ++ 2. Μετακινείστε τον δρομέα στην παρακάτω γραμμή σημειωμένη με --->. ++ ++ 3. Μετακινείστε τον δρομέα στο τέλος της σωστής γραμμής (ΜΕΤΑ την πρώτη . ). ++ ++ 4. Πατήστε d$ για να διαγράψετε μέχρι το τέλος της γραμμής. ++ ++ ---> Somebody typed the end of this line twice. end of this line twice. ++ ++ 5. Πηγαίνετε στο Μάθημα 2.3 για να καταλάβετε τι συμβαίνει. ++ ++ ++ ++ ++ ++ ++ ++ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ++ Μάθημα 2.3: ΠΕΡΙ ΕΝΤΟΛΩΝ ΚΑΙ ΑΝΤΙΚΕΙΜΕΝΩΝ ++ ++ ++ Η μορφή της εντολής διαγραφής d είναι ως εξής: ++ ++ [αριθμός] d αντικείμενο Ή d [αριθμός] αντικείμενο ++ Όπου: ++ αριθμός - πόσες φορές θα εκτελεστεί η εντολή (προαιρετικό, εξ' ορισμού=1). ++ d - η εντολή της διαγραφής. ++ αντικείμενο - πάνω σε τι θα λειτουργήσει η εντολή (παρακάτω λίστα). ++ ++ Μία μικρή λίστα από αντικείμενα: ++ w - από τον δρομέα μέχρι το τέλος της λέξης, περιλαμβάνοντας το διάστημα. ++ e - από τον δρομέα μέχρι το τέλος της λέξης, ΧΩΡΙΣ το διάστημα. ++ $ - από τον δρομέα μέχρι το τέλος της γραμμής. ++ ++ ΣΗΜΕΙΩΣΗ: Για τους τύπους της περιπέτειας, πατώντας απλώς το αντικείμενο όσο ++ είστε στην Κανονική Κατάσταση χωρίς κάποια εντολή θα μετακινήσετε ++ τον δρομέα όπως καθορίζεται στην λίστα αντικειμένων. ++ ++ ++ ++ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ++ Μάθημα 2.4: ΜΙΑ ΕΞΑΙΡΕΣΗ ΣΤΗΝ 'ΕΝΤΟΛΗ-ΑΝΤΙΚΕΙΜΕΝΟ' ++ ++ ** Πληκτρολογήστε dd για να διαγράψετε όλη τη γραμμή. ** ++ ++ Εξαιτίας της συχνότητας της διαγραφής ολόκληρης γραμμής, οι σχεδιαστές ++ του Vim αποφάσισαν ότι θα ήταν ευκολότερο να γράφετε απλώς δύο d στη ++ σειρά για να διαγράψετε μία γραμμή. ++ ++ 1. Μετακινείστε τον δρομέα στη δεύτερη γραμμή της παρακάτω φράσης. ++ 2. Γράψτε dd για να διαγράψετε τη γραμμή. ++ 3. Τώρα μετακινηθείτε στην τέταρτη γραμμή. ++ 4. Γράψτε 2dd (θυμηθείτε αριθμός-εντολή-αντικείμενο) για να ++ διαγράψετε δύο γραμμές. ++ ++ 1) Roses are red, ++ 2) Mud is fun, ++ 3) Violets are blue, ++ 4) I have a car, ++ 5) Clocks tell time, ++ 6) Sugar is sweet ++ 7) And so are you. ++ ++ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ++ Μάθημα 2.5: Η ΕΝΤΟΛΗ ΑΝΑΙΡΕΣΗΣ ++ ++ ** Πατήστε u για να αναιρέσετε τις τελευταίες εντολές, ++ U για να διορθώσετε όλη τη γραμμή. ** ++ ++ 1. Μετακινείστε τον δρομέα στην παρακάτω γραμμή σημειωμένη με ---> και ++ τοποθετήστε τον πάνω στο πρώτο λάθος. ++ 2. Πατήστε x για να διαγράψετε τον πρώτο ανεπιθύμητο χαρακτήρα. ++ 3. Τώρα πατήστε u για να αναιρέσετε την τελευταία εκτελεσμένη εντολή. ++ 4. Αυτή τη φορά διορθώστε όλα τα λάθη στη γραμμή χρησιμοποιώντας την εντολή x. ++ 5. Τώρα πατήστε ένα κεφαλαίο U για να επιστρέψετε τη γραμμή στην αρχική ++ της κατάσταση. ++ 6. Τώρα πατήστε u μερικές φορές για να αναιρέσετε την U και ++ προηγούμενες εντολές. ++ 7. Τώρα πατήστε CTRL-R (κρατώντας πατημένο το πλήκτρο CTRL καθώς πατάτε το R) ++ μερικές φορές για να επαναφέρετε τις εντολές (αναίρεση των αναιρέσεων). ++ ++ ---> Fiix the errors oon thhis line and reeplace them witth undo. ++ ++ 8. Αυτές είναι πολύ χρήσιμες εντολές. Τώρα πηγαίνετε στην ++ Περίληψη του Μαθήματος 2. ++ ++ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ++ ΜΑΘΗΜΑ 2 ΠΕΡΙΛΗΨΗ ++ ++ ++ 1. Για να διαγράψετε από τον δρομέα μέχρι το τέλος λέξης γράψτε: dw ++ ++ 2. Για να διαγράψετε από τον δρομέα μέχρι το τέλος γραμμής γράψτε: d$ ++ ++ 3. Για να διαγράψετε ολόκληρη τη γραμμή γράψτε: dd ++ ++ 4. Η μορφή για μία εντολή στην Κανονική Κατάσταση είναι: ++ ++ [αριθμός] εντολή αντικείμενο Ή εντολή [αριθμός] αντικείμενο ++ όπου: ++ αριθμός - πόσες φορές να επαναληφθεί η εντολή ++ εντολή - τι να γίνει, όπως η d για διαγραφή ++ αντικείμενο - πάνω σε τι να ενεργήσει η εντολή, όπως w (λέξη), ++ $ (τέλος της γραμμής), κτλ. ++ ++ 5. Για να αναιρέσετε προηγούμενες ενέργειες, πατήστε: u (πεζό u) ++ Για να αναιρέσετε όλες τις αλλαγές στη γραμμή, πατήστε: U (κεφαλαίο U) ++ Για να αναιρέσετε τις αναιρέσεις, πατήστε: CTRL-R ++ ++ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ++ Μάθημα 3.1: Η ΕΝΤΟΛΗ ΤΟΠΟΘΕΤΗΣΗΣ ++ ++ ++ ** Πατήστε p για να τοποθετήσετε την τελευταία διαγραφή μετά τον δρομέα. ** ++ ++ 1. Μετακινείστε τον δρομέα στην πρώτη γραμμή της παρακάτω ομάδας. ++ ++ 2. Πατήστε dd για να διαγράψετε τη γραμμή και να την αποθηκεύσετε σε ++ προσωρινή μνήμη του Vim. ++ ++ 3. Μετακινείστε τον δρομέα στη γραμμή ΠΑΝΩ από εκεί που θα πρέπει να πάει ++ η διαγραμμένη γραμμή. ++ ++ 4. Όσο είστε σε Κανονική Κατάσταση, πατήστε p για να βάλετε τη γραμμή. ++ ++ 5. Επαναλάβετε τα βήματα 2 έως 4 για να βάλετε όλες τις γραμμές στη ++ σωστή σειρά. ++ ++ d) Can you learn too? ++ b) Violets are blue, ++ c) Intelligence is learned, ++ a) Roses are red, ++ ++ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ++ Μάθημα 3.2: Η ΕΝΤΟΛΗ ΑΝΤΙΚΑΤΑΣΤΑΣΗΣ ++ ++ ++ ** Πατήστε r και χαρακτήρα για να αλλάξετε αυτόν που είναι ++ κάτω από τον δρομέα. ** ++ ++ 1. Μετακινείστε τον δρομέα στην πρώτη γραμμή παρακάτω σημειωμένη με --->. ++ ++ 2. Μετακινείστε τον δρομέα έτσι ώστε να είναι πάνω στο πρώτο λάθος. ++ ++ 3. Πατήστε r και μετά τον χαρακτήρα ο οποίος διορθώνει το λάθος. ++ ++ 4. Επαναλάβετε τα βήματα 2 και 3 μέχρι να είναι σωστή η πρώτη γραμμή. ++ ++ ---> Whan this lime was tuoed in, someone presswd some wrojg keys! ++ ---> When this line was typed in, someone pressed some wrong keys! ++ ++ 5. Τώρα πηγαίνετε στο Μάθημα 3.2. ++ ++ ΣΗΜΕΙΩΣΗ: Να θυμάστε ότι πρέπει να μαθαίνετε με τη χρήση, και όχι με ++ την απομνημόνευση. ++ ++ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ++ Μάθημα 3.3: Η ΕΝΤΟΛΗ ΑΛΛΑΓΗΣ ++ ++ ** Για να αλλάξετε τμήμα ή όλη τη λέξη, πατήστε cw . ** ++ ++ 1. Μετακινείστε τον δρομέα στην πρώτη γραμμή παρακάτω σημειωμένη με --->. ++ ++ 2. Τοποθετήστε τον δρομέα πάνω στο u της λέξης lubw. ++ ++ 3. Πατήστε cw και τη σωστή λέξη (στην περίπτωση αυτή, γράψτε 'ine'.) ++ ++ 4. Πατήστε και πηγαίνετε στο επόμενο λάθος (στον πρώτο ++ χαρακτήρα προς αλλαγή). ++ ++ 5. Επαναλάβετε τα βήματα 3 και 4 μέχρις ότου η πρώτη πρόταση να είναι ++ ίδια με τη δεύτερη. ++ ++ ---> This lubw has a few wptfd that mrrf changing usf the change command. ++ ---> This line has a few words that need changing using the change command. ++ ++ Παρατηρείστε ότι η cw όχι μόνο αντικαθιστάει τη λέξη, αλλά σας εισάγει ++ επίσης σε παρεμβολή. ++ ++ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ++ Μάθημα 3.4: ΠΕΡΙΣΣΟΤΕΡΕΣ ΑΛΛΑΓΕΣ ΜΕ c ++ ++ ++ ** Η εντολή αλλαγής χρησιμοποιείται με τα ίδια αντικείμενα της διαγραφής. ** ++ ++ ++ 1. Η εντολή αλλαγής δουλεύει με τον ίδιο τρόπο όπως η διαγραφή. Η μορφή είναι: ++ ++ [αριθμός] c αντικείμενο Ή c [αριθμός] αντικείμενο ++ ++ 2. Τα αντικείμενα είναι πάλι τα ίδια, όπως w (λέξη), $ (τέλος γραμμής), κτλ. ++ ++ 3. Μετακινηθείτε στην πρώτη γραμμή παρακάτω σημειωμένη με --->. ++ ++ 4. Μετακινείστε τον δρομέα στο πρώτο λάθος. ++ ++ 5. Γράψτε c$ για να κάνετε το υπόλοιπο της γραμμής ίδιο με τη δεύτερη ++ και πατήστε . ++ ++ ---> The end of this line needs some help to make it like the second. ++ ---> The end of this line needs to be corrected using the c$ command. ++ ++ ++ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ++ ΜΑΘΗΜΑ 3 ΠΕΡΙΛΗΨΗ ++ ++ ++ 1. Για να τοποθετήσετε κείμενο που μόλις έχει διαγραφεί, πατήστε p . ++ Αυτό τοποθετεί το διαγραμμένο κείμενο ΜΕΤΑ τον δρομέα (αν διαγράφτηκε ++ γραμμή θα πάει μετά στη γραμμή κάτω από τον δρομέα. ++ ++ 2. Για να αντικαταστήσετε τον χαρακτήρα κάτω από τον δρομέα, πατήστε r ++ και μετά τον χαρακτήρα που θα αντικαταστήσει τον αρχικό. ++ ++ 3. Η εντολή αλλαγής σας επιτρέπει να αλλάξετε το καθορισμένο αντικείμενο ++ από τον δρομέα μέχρι το τέλος του αντικείμενο. Π.χ. γράψτε cw για να ++ αλλάξετε από τον δρομέα μέχρι το τέλος της λέξης, c$ για να αλλάξετε ++ μέχρι το τέλος γραμμής. ++ ++ 4. Η μορφή για την αλλαγή είναι: ++ ++ [αριθμός] c αντικείμενο Ή c [αριθμός] αντικείμενο ++ ++ Τώρα συνεχίστε με το επόμενο μάθημα. ++ ++ ++ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ++ Μάθημα 4.1: ΘΕΣΗ ΚΑΙ ΚΑΤΑΣΤΑΣΗ ΑΡΧΕΙΟΥ ++ ++ ++ ** Πατήστε CTRL-g για να εμφανιστεί η θέση σας στο αρχείο και η κατάστασή του. ++ Πατήστε SHIFT-G για να πάτε σε μία γραμμή στο αρχείο. ** ++ ++ Σημείωση: Διαβάστε ολόκληρο το μάθημα πριν εκτελέσετε κάποιο από τα βήματα!! ++ ++ 1. Κρατήστε πατημένο το πλήκτρο Ctrl και πατήστε g . Μία γραμμή κατάστασης ++ θα εμφανιστεί στο κάτω μέρος της σελίδας με το όνομα αρχείου και τη ++ γραμμή που είστε. Θυμηθείτε τον αριθμό γραμμής για το Βήμα 3. ++ ++ 2. Πατήστε shift-G για να μετακινηθείτε στο τέλος του αρχείου. ++ ++ 3. Πατήστε τον αριθμό της γραμμής που ήσασταν και μετά shift-G. Αυτό θα ++ σας επιστρέψει στη γραμμή που ήσασταν πριν πατήσετε για πρώτη φορά Ctrl-g. ++ (Όταν πληκτρολογείτε τους αριθμούς, ΔΕΝ θα εμφανίζονται στην οθόνη). ++ ++ 4. Αν νοιώθετε σίγουρος για αυτό, εκτελέστε τα βήματα 1 έως 3. ++ ++ ++ ++ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ++ Μάθημα 4.2: Η ΕΝΤΟΛΗ ΑΝΑΖΗΤΗΣΗΣ ++ ++ ++ ** Πατήστε / ακολουθούμενο από τη φράση που ψάχνετε. ** ++ ++ 1. Σε Κανονική Κατάσταση πατήστε τον χαρακτήρα / . Παρατηρήστε ότι αυτός και ++ ο δρομέας εμφανίζονται στο κάτω μέρος της οθόνης όπως με την εντολή : . ++ ++ 2. Τώρα γράψτε 'errroor' . Αυτή είναι η λέξη που θέλετε να ψάξετε. ++ ++ 3. Για να ψάξετε ξανά για την ίδια φράση, πατήστε απλώς n . ++ Για να ψάξετε την ίδια φράση στην αντίθετη κατεύθυνση, πατήστε Shift-N . ++ ++ 4. Αν θέλετε να ψάξετε για μία φράση προς τα πίσω, χρησιμοποιήστε την εντολή ? αντί της / . ++ ++ ---> Όταν η αναζήτηση φτάσει στο τέλος του αρχείου θα συνεχίσει από την αρχή. ++ ++ "errroor" is not the way to spell error; errroor is an error. ++ ++ ++ ++ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ++ Μάθημα 4.3: ΕΥΡΕΣΗ ΤΑΙΡΙΑΣΤΩΝ ΠΑΡΕΝΘΕΣΕΩΝ ++ ++ ++ ** Πατήστε % για να βρείτε την αντίστοιχη ), ], ή } . ** ++ ++ 1. Τοποθετήστε τον δρομέα σε κάποια (, [, ή { στην παρακάτω γραμμή ++ σημειωμένη με --->. ++ ++ 2. Τώρα πατήστε τον χαρακτήρα % . ++ ++ 3. Ο δρομέας θα πρέπει να είναι στην αντίστοιχη παρένθεση ή αγκύλη. ++ ++ 4. Πατήστε % για να μετακινήσετε τον δρομέα πίσω στην πρώτη αγκύλη ++ (του ζευγαριού). ++ ++ ---> This ( is a test line with ('s, ['s ] and {'s } in it. )) ++ ++ ΣΗΜΕΙΩΣΗ: Αυτό είναι πολύ χρήσιμο στην αποσφαλμάτωση ενός προγράμματος ++ με μη ταιριαστές παρενθέσεις! ++ ++ ++ ++ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ++ Μάθημα 4.4: ΕΝΑΣ ΤΡΟΠΟΣ ΓΙΑ ΑΛΛΑΓΗ ΛΑΘΩΝ ++ ++ ++ ** Γράψτε :s/old/new/g για να αλλάξετε το 'new' με το 'old'. ** ++ ++ 1. Μετακινείστε τον δρομέα στην παρακάτω γραμμή σημειωμένη με --->. ++ ++ 2. Γράψτε :s/thee/the . Σημειώστε ότι αυτή η εντολή αλλάζει μόνο ++ την πρώτη εμφάνιση στη γραμμή. ++ ++ 3. Τώρα γράψτε :s/thee/the/g εννοώντας γενική αντικατάσταση στη ++ γραμμή. Αυτό αλλάζει όλες τις εμφανίσεις επί της γραμμής. ++ ++ ---> thee best time to see thee flowers is in thee spring. ++ ++ 4. Για να αλλάξετε κάθε εμφάνιση μίας συμβολοσειράς μεταξύ δύο γραμμών, ++ γράψτε :#,#s/old/new/g όπου #,# οι αριθμοί των δύο γραμμών. ++ Γράψτε :%s/old/new/g για να αλλάξετε κάθε εμφάνιση σε όλο το αρχείο. ++ ++ ++ ++ ++ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ++ ΜΑΘΗΜΑ 4 ΠΕΡΙΛΗΨΗ ++ ++ ++ 1. Το Ctrl-g εμφανίζει τη θέση σας στο αρχείο και την κατάστασή του. ++ Το Shift-G πηγαίνει στο τέλος του αρχείου. Ένας αριθμός γραμμής ++ ακολουθούμενος από Shift-G πηγαίνει σε εκείνη τη γραμμή. ++ ++ 2. Γράφοντας / ακολουθούμενο από μία φράση ψάχνει προς τα ΜΠΡΟΣΤΑ για ++ τη φράση. Γράφοντας ? ακολουθούμενο από μία φράση ψάχνει προς τα ΠΙΣΩ ++ για τη φράση. Μετά από μία αναζήτηση πατήστε n για να βρείτε την ++ επόμενη εμφάνιση προς την ίδια κατεύθυνση ή Shift-N για να ψάξετε ++ προς την αντίθετη κατεύθυνση. ++ ++ 3. Πατώντας % όσο ο δρομέας είναι πάνω σε μία (,),[,],{, ή } εντοπίζει ++ το αντίστοιχο ταίρι του ζευγαριού. ++ ++ 4. Για αντικατάσταση με new του πρώτου old στη γραμμή γράψτε :s/old/new ++ Για αντικατάσταση με new όλων των 'old' στη γραμμή γράψτε :s/old/new/g ++ Για αντικατάσταση φράσεων μεταξύ δύο # γραμμών γράψτε :#,#s/old/new/g ++ Για αντικατάσταση όλων των εμφανίσεων στο αρχείο γράψτε :%s/old/new/g ++ Για ερώτηση επιβεβαίωσης κάθε φορά προσθέστε ένα 'c' "%s/old/new/gc ++ ++ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ++ Μάθημα 5.1: ΠΩΣ ΕΚΤΕΛΩ ΜΙΑ ΕΞΩΤΕΡΙΚΗ ΕΝΤΟΛΗ ++ ++ ++ ** Γράψτε :! ακολουθούμενο από μία εξωτερική εντολή για να την εκτελέσετε. ** ++ ++ 1. Πατήστε την οικεία εντολή : για να θέσετε τον δρομέα στο κάτω μέρος ++ της οθόνης. Αυτό σας επιτρέπει να δώσετε μία εντολή. ++ ++ 2. Τώρα πατήστε το ! (θαυμαστικό). Αυτό σας επιτρέπει να εκτελέσετε ++ οποιαδήποτε εξωτερική εντολή του φλοιού. ++ ++ 3. Σαν παράδειγμα γράψτε ls μετά από το ! και πατήστε . Αυτό θα ++ σας εμφανίσει μία λίστα του καταλόγου σας, ακριβώς σαν να ήσασταν στην ++ προτροπή του φλοιού. Ή χρησιμοποιήστε :!dir αν το ls δεν δουλεύει. ++ ++ ---> Σημείωση: Είναι δυνατόν να εκτελέσετε οποιαδήποτε εξωτερική εντολή ++ με αυτόν τον τρόπο. ++ ++ ---> Σημείωση: Όλες οι εντολές : πρέπει να τερματίζονται πατώντας το . ++ ++ ++ ++ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ++ Μάθημα 5.2: ΠΕΡΙΣΣΟΤΕΡΑ ΠΕΡΙ ΕΓΓΡΑΦΗΣ ΑΡΧΕΙΩΝ ++ ++ ++ ** Για να σώσετε τις αλλάγες που κάνατε στο αρχείο, γράψτε :w ΑΡΧΕΙΟ. ** ++ ++ 1. Γράψτε :!dir ή :!ls για να πάρετε μία λίστα του καταλόγου σας. ++ Ήδη ξέρετε ότι πρέπει να πατήσετε μετά από αυτό. ++ ++ 2. Διαλέξτε ένα όνομα αρχείου που δεν υπάρχει ακόμα, όπως το TEST. ++ ++ 3. Τώρα γράψτε: :w TEST (όπου TEST είναι το όνομα αρχείου που διαλέξατε). ++ ++ 4. Αυτό σώζει όλο το αρχείο (vim Tutor) με το όνομα TEST. Για να το ++ επαληθεύσετε, γράψτε ξανά :!dir για να δείτε τον κατάλογό σας. ++ ++ ---> Σημειώστε ότι αν βγαίνατε από τον Vim και μπαίνατε ξανά με το όνομα ++ αρχείου TEST, το αρχείο θα ήταν ακριβές αντίγραφο του tutor όταν το σώσατε. ++ ++ 5. Τώρα διαγράψτε το αρχείο γράφοντας (MS-DOS): :!del TEST ++ ++ ++ ++ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ++ Μάθημα 5.3: ΕΠΙΛΕΚΤΙΚΗ ΕΝΤΟΛΗ ΕΓΓΡΑΦΗΣ ++ ++ ++ ** Για να σώσετε τμήμα του αρχείου, γράψτε :#,# w ΑΡΧΕΙΟ ** ++ ++ 1. Άλλη μια φορά, γράψτε :!dir ή :!ls για να πάρετε μία λίστα από τον ++ κατάλογό σας και διαλέξτε ένα κατάλληλο όνομα αρχείου όπως το TEST. ++ ++ 2. Μετακινείστε τον δρομέα στο πάνω μέρος αυτής της σελίδας και πατήστε ++ Ctrl-g για να βρείτε τον αριθμό αυτής της γραμμής. ++ ΝΑ ΘΥΜΑΣΤΕ ΑΥΤΟΝ ΤΟΝ ΑΡΙΘΜΟ! ++ ++ 3. Τώρα πηγαίνετε στο κάτω μέρος της σελίδας και πατήστε Ctrl-g ξανά. ++ ΝΑ ΘΥΜΑΣΤΕ ΚΑΙ ΑΥΤΟΝ ΤΟΝ ΑΡΙΘΜΟ! ++ ++ 4. Για να σώσετε ΜΟΝΟ ένα τμήμα σε αρχείο, γράψτε :#,# w TEST ++ όπου #,# οι δύο αριθμοί που απομνημονεύσατε (πάνω,κάτω) και TEST το ++ όνομα του αρχείου σας. ++ ++ 5. Ξανά, δείτε ότι το αρχείο είναι εκεί με την :!dir αλλά ΜΗΝ το διαγράψετε. ++ ++ ++ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ++ Μάθημα 5.4: ΑΝΑΚΤΩΝΤΑΣ ΚΑΙ ΕΝΩΝΟΝΤΑΣ ΑΡΧΕΙΑ ++ ++ ++ ** Για να εισάγετε τα περιεχόμενα ενός αρχείου, γράψτε :r ΑΡΧΕΙΟ ** ++ ++ 1. Γράψτε :!dir για να βεβαιωθείτε ότι το TEST υπάρχει από πριν. ++ ++ 2. Τοποθετήστε τον δρομέα στο πάνω μέρος της σελίδας. ++ ++ ΣΗΜΕΙΩΣΗ: Αφότου εκτελέσετε το Βήμα 3 θα δείτε το Μάθημα 5.3. ++ Μετά κινηθείτε ΚΑΤΩ ξανά προς το μάθημα αυτό. ++ ++ 3. Τώρα ανακτήστε το αρχείο σας TEST χρησιμοποιώντας την εντολή :r TEST ++ όπου TEST είναι το όνομα του αρχείου. ++ ++ ΣΗΜΕΙΩΣΗ: Το αρχείο που ανακτάτε τοποθετείται ξεκινώντας εκεί που βρίσκεται ++ ο δρομέας. ++ ++ 4. Για να επαληθεύσετε ότι το αρχείο ανακτήθηκε, πίσω τον δρομέα και ++ παρατηρήστε ότι υπάρχουν τώρα δύο αντίγραφα του Μαθήματος 5.3, το ++ αρχικό και η έκδοση του αρχείου. ++ ++ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ++ ΜΑΘΗΜΑ 5 ΠΕΡΙΛΗΨΗ ++ ++ ++ 1. :!εντολή εκτελεί μία εξωτερική εντολή. ++ ++ Μερικά χρήσιμα παραδείγματα είναι (MS-DOS): ++ :!dir - εμφάνιση λίστας ενός καταλόγου. ++ :!del ΑΡΧΕΙΟ - διαγράφει το ΑΡΧΕΙΟ. ++ ++ 2. :w ΑΡΧΕΙΟ γράφει το τρέχων αρχείο του Vim στο δίσκο με όνομα ΑΡΧΕΙΟ. ++ ++ 3. :#,#w ΑΡΧΕΙΟ σώζει τις γραμμές από # μέχρι # στο ΑΡΧΕΙΟ. ++ ++ 4. :r ΑΡΧΕΙΟ ανακτεί το αρχείο δίσκου ΑΡΧΕΙΟ και το παρεμβάλλει μέσα ++ στο τρέχον αρχείο μετά από τη θέση του δρομέα. ++ ++ ++ ++ ++ ++ ++ ++ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ++ Μάθημα 6.1: Η ΕΝΤΟΛΗ ΑΝΟΙΓΜΑΤΟΣ ++ ++ ++ ** Πατήστε o για να ανοίξετε μία γραμμή κάτω από τον δρομέα και να ++ βρεθείτε σε Κατάσταση Κειμένου. ** ++ ++ 1. Μετακινείστε τον δρομέα στην παρακάτω γραμμή σημειωμένη με --->. ++ ++ 2. Πατήστε o (πεζό) για να ανοίξετε μία γραμμή ΚΑΤΩ από τον δρομέα και να ++ βρεθείτε σε Κατάσταση Κειμένου. ++ ++ 3. Τώρα αντιγράψτε τη σημειωμένη με ---> γραμμή και πατήστε για να ++ βγείτε από την Κατάσταση Κειμένου. ++ ++ ---> After typing o the cursor is placed on the open line in Insert mode. ++ ++ 4. Για να ανοίξετε μία γραμμή ΠΑΝΩ από τον δρομέα, πατήστε απλά ένα κεφαλαίο ++ O, αντί για ένα πεζό o. Δοκιμάστε το στην παρακάτω γραμμή. ++ Ανοίγετε γραμμή πάνω από αυτήν πατώντας Shift-O όσο ο δρομέας είναι στη γραμμή ++ ++ ++ ++ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ++ Μάθημα 6.2: Η ΕΝΤΟΛΗ ΠΡΟΣΘΗΚΗΣ ++ ++ ** Πατήστε a για να εισάγετε κείμενο ΜΕΤΑ τον δρομέα. ** ++ ++ 1. Μετακινείστε τον δρομέα στο τέλος της πρώτης γραμμής παρακάτω ++ σημειωμένη με ---> πατώντας $ στην Κανονική Κατάσταση. ++ ++ 2. Πατήστε ένα a (πεζό) για να προσθέσετε κείμενο ΜΕΤΑ από τον χαρακτήρα ++ που είναι κάτω από τον δρομέα. (Το κεφαλαίο A προσθέτει στο τέλος ++ της γραμμής). ++ ++ Σημείωση: Αυτό αποφεύγει το πάτημα του i , τον τελευταίο χαρακτήρα, το ++ κείμενο της εισαγωγής, , δρομέα-δεξιά, και τέλος, x, μόνο και ++ μόνο για να προσθέσετε στο τέλος της γραμμής! ++ ++ 3. Συμπληρώστε τώρα την πρώτη γραμμή. Σημειώστε επίσης ότι η προσθήκη είναι ++ ακριβώς ίδια στην Κατάσταση Κειμένου με την Κατάσταση Εισαγωγής, εκτός ++ από τη θέση που εισάγεται το κείμενο. ++ ++ ---> This line will allow you to practice ++ ---> This line will allow you to practice appending text to the end of a line. ++ ++ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ++ Μάθημα 6.3: ΑΛΛΗ ΕΚΔΟΣΗ ΤΗΣ ΑΝΤΙΚΑΤΑΣΤΑΣΗΣ ++ ++ ++ ** Πατήστε κεφαλαίο R για να αλλάξετε περισσότερους από έναν χαρακτήρες. ** ++ ++ 1. Μετακινείστε τον δρομέα στην πρώτη γραμμή παρακάτω σημειωμένη με --->. ++ ++ 2. Τοποθετήστε τον δρομέα στην αρχή της πρώτης λέξης που είναι διαφορετική ++ από τη δεύτερη γραμμή σημειωμένη με ---> (η λέξη 'last'). ++ ++ 3. Πατήστε τώρα R και αλλάξτε το υπόλοιπο του κειμένου στην πρώτη γραμμή ++ γράφοντας πάνω από το παλιό κείμενο ώστε να κάνετε την πρώτη γραμμή ίδια ++ με τη δεύτερη. ++ ++ ---> To make the first line the same as the last on this page use the keys. ++ ---> To make the first line the same as the second, type R and the new text. ++ ++ 4. Σημειώστε ότι όταν πατάτε για να βγείτε, παραμένει οποιοδήποτε ++ αναλλοίωτο κείμενο. ++ ++ ++ ++ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ++ Μάθημα 6.4: ΡΥΘΜΙΣΗ ΕΠΙΛΟΓΗΣ ++ ++ ++ ** Ρυθμίστε μία επιλογή έτσι ώστε η αναζήτηση ή η αντικατάσταση να αγνοεί ++ τη διαφορά πεζών-κεφαλαίων ** ++ ++ 1. Ψάξτε για 'ignore' εισάγοντας: ++ /ignore ++ Συνεχίστε αρκετές φορές πατώντας το πλήκτρο n. ++ ++ 2. Θέστε την επιλογή 'ic' (Ignore case) γράφοντας: ++ :set ic ++ ++ 3. Ψάξτε τώρα ξανά για 'ignore' πατώντας: n ++ Συνεχίστε την αναζήτηση μερικές ακόμα φορές πατώντας το πλήκτρο n ++ ++ 4. Θέστε τις επιλογές 'hlsearch' και 'incsearch': ++ :set hls is ++ ++ 5. Εισάγετε τώρα ξανά την εντολή αναζήτησης, και δείτε τι συμβαίνει ++ /ignore ++ ++ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ++ ΜΑΘΗΜΑ 6 ΠΕΡΙΛΗΨΗ ++ ++ ++ 1. Πατώντας o ανοίγει μία γραμμή ΚΑΤΩ από τον δρομέα και τοποθετεί τον ++ δρομέα στην ανοιχτή γραμμή σε Κατάσταση Κειμένου. ++ ++ 2. Πατήστε a για να εισάγετε κείμενο ΜΕΤΑ τον χαρακτήρα στον οποίο είναι ++ ο δρομέας. Πατώντας κεφαλαίο A αυτόματα προσθέτει κείμενο στο τέλος ++ της γραμμής. ++ ++ 3. Πατώντας κεφαλαίο R εισέρχεται στην Κατάσταη Αντικατάστασης μέχρι να ++ πατηθεί το και να εξέλθει. ++ ++ 4. Γράφοντας ":set xxx" ρυθμίζει την επιλογή "xxx". ++ ++ ++ ++ ++ ++ ++ ++ ++ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ++ ΜΑΘΗΜΑ 7: ON-LINE ΕΝΤΟΛΕΣ ΒΟΗΘΕΙΑΣ ++ ++ ++ ** Χρησιμοποιήστε το on-line σύστημα βοήθειας ** ++ ++ Ο Vim έχει ένα περιεκτικό on-line σύστημα βοήθειας. Για να ξεκινήσει, ++ δοκιμάστε κάποιο από τα τρία: ++ - πατήστε το πλήκτρο (αν έχετε κάποιο) ++ - πατήστε το πλήκτρο (αν έχετε κάποιο) ++ - γράψτε :help ++ ++ Γράψτε :q για να κλείσετε το παράθυρο της βοήθειας. ++ ++ Μπορείτε να βρείτε βοήθεια πάνω σε κάθε αντικείμενο, δίνοντας μία παράμετρο ++ στην εντολή ":help". Δοκιμάστε αυτά (μην ξεχνάτε να πατάτε ): ++ ++ :help w ++ :help c_ +! " Last Change: 2006 Sep 02 + + " This small source file is used for detecting if a translation of the + " tutor file exist, i.e., a tutor.xx file, where xx is the language. +--- 1,6 ---- + " Vim tutor support file + " Author: Eduardo F. Amatria +! " Last Change: 2006 Sep 09 + + " This small source file is used for detecting if a translation of the + " tutor file exist, i.e., a tutor.xx file, where xx is the language. +*************** +*** 93,101 **** + endif + endif + +! " The Greek tutor is available in two encodings, guess which one to use +! if s:ext =~? '\.gr' && &enc =~ 737 +! let s:ext = ".gr.cp737" + endif + + " The Slovak tutor is available in two encodings, guess which one to use +--- 93,108 ---- + endif + endif + +! " The Greek tutor is available in three encodings, guess what to use. +! " We used ".gr" (Greece) instead of ".el" (Greek); accept both. +! if s:ext =~? '\.gr\|\.el' +! if &enc == "iso-8859-7" +! let s:ext = ".gr" +! elseif &enc == "utf-8" +! let s:ext = ".gr.utf-8" +! elseif &enc =~ 737 +! let s:ext = ".gr.cp737" +! endif + endif + + " The Slovak tutor is available in two encodings, guess which one to use +*** ../vim-7.0.094/src/version.c Sat Sep 9 14:51:43 2006 +--- src/version.c Sun Sep 10 13:19:23 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 95, + /**/ + +-- +FATHER: You killed eight wedding guests in all! +LAUNCELOT: Er, Well ... the thing is ... I thought your son was a lady. +FATHER: I can understand that. + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.0.096 b/7.0.096 new file mode 100644 index 0000000..755b78e --- /dev/null +++ b/7.0.096 @@ -0,0 +1,82 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.096 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.096 +Problem: taglist() returns the filename relative to the tags file, while + the directory of the tags file is unknown. (Hari Krishna Dara) +Solution: Expand the file name. (Yegappan Lakshmanan) +Files: src/tag.c + + +*** ../vim-7.0.095/src/tag.c Thu Apr 27 23:40:34 2006 +--- src/tag.c Sun Sep 10 13:42:41 2006 +*************** +*** 3787,3792 **** +--- 3787,3793 ---- + { + int num_matches, i, ret; + char_u **matches, *p; ++ char_u *full_fname; + dict_T *dict; + tagptrs_T tp; + long is_static; +*************** +*** 3809,3823 **** + if (list_append_dict(list, dict) == FAIL) + ret = FAIL; + + if (add_tag_field(dict, "name", tp.tagname, tp.tagname_end) == FAIL +! || add_tag_field(dict, "filename", tp.fname, +! tp.fname_end) == FAIL + || add_tag_field(dict, "cmd", tp.command, + tp.command_end) == FAIL + || add_tag_field(dict, "kind", tp.tagkind, + tp.tagkind_end) == FAIL + || dict_add_nr_str(dict, "static", is_static, NULL) == FAIL) + ret = FAIL; + + if (tp.command_end != NULL) + { +--- 3810,3827 ---- + if (list_append_dict(list, dict) == FAIL) + ret = FAIL; + ++ full_fname = tag_full_fname(&tp); + if (add_tag_field(dict, "name", tp.tagname, tp.tagname_end) == FAIL +! || add_tag_field(dict, "filename", full_fname, +! NULL) == FAIL + || add_tag_field(dict, "cmd", tp.command, + tp.command_end) == FAIL + || add_tag_field(dict, "kind", tp.tagkind, + tp.tagkind_end) == FAIL + || dict_add_nr_str(dict, "static", is_static, NULL) == FAIL) + ret = FAIL; ++ ++ vim_free(full_fname); + + if (tp.command_end != NULL) + { +*** ../vim-7.0.095/src/version.c Sun Sep 10 13:22:26 2006 +--- src/version.c Sun Sep 10 13:52:01 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 96, + /**/ + +-- +The early bird gets the worm. If you want something else for +breakfast, get up later. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.0.097 b/7.0.097 new file mode 100644 index 0000000..c16ba93 --- /dev/null +++ b/7.0.097 @@ -0,0 +1,113 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.097 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.097 +Problem: ":tabclose N" that closes another tab page does not remove the tab + pages line. Same problem when using the mouse. +Solution: Adjust the tab pages line when needed in tabpage_close_other(). +Files: src/ex_docmd.c + + +*** ../vim-7.0.096/src/ex_docmd.c Tue Aug 29 17:28:56 2006 +--- src/ex_docmd.c Sun Sep 10 15:47:33 2006 +*************** +*** 6296,6302 **** + exarg_T *eap; + { + tabpage_T *tp; +- int h = tabline_height(); + + # ifdef FEAT_CMDWIN + if (cmdwin_type != 0) +--- 6296,6301 ---- +*************** +*** 6328,6336 **** + ) + tabpage_close(eap->forceit); + } +- +- if (h != tabline_height()) +- shell_new_rows(); + } + + /* +--- 6327,6332 ---- +*************** +*** 6342,6348 **** + { + tabpage_T *tp; + int done; +- int h = tabline_height(); + + # ifdef FEAT_CMDWIN + if (cmdwin_type != 0) +--- 6338,6343 ---- +*************** +*** 6371,6379 **** + break; + } + } +- +- if (h != tabline_height()) +- shell_new_rows(); + } + + /* +--- 6366,6371 ---- +*************** +*** 6397,6402 **** +--- 6389,6396 ---- + /* + * Close tab page "tp", which is not the current tab page. + * Note that autocommands may make "tp" invalid. ++ * Also takes care of the tab pages line disappearing when closing the ++ * last-but-one tab page. + */ + void + tabpage_close_other(tp, forceit) +*************** +*** 6405,6410 **** +--- 6399,6405 ---- + { + int done = 0; + win_T *wp; ++ int h = tabline_height(); + + /* Limit to 1000 windows, autocommands may add a window while we close + * one. OK, so I'm paranoid... */ +*************** +*** 6418,6424 **** +--- 6413,6422 ---- + if (!valid_tabpage(tp) || tp->tp_firstwin == wp) + break; + } ++ + redraw_tabline = TRUE; ++ if (h != tabline_height()) ++ shell_new_rows(); + } + + /* +*** ../vim-7.0.096/src/version.c Sun Sep 10 13:56:06 2006 +--- src/version.c Sun Sep 10 15:44:24 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 97, + /**/ + +-- +Advice to worms: Sleep late. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.0.098 b/7.0.098 new file mode 100644 index 0000000..c970faa --- /dev/null +++ b/7.0.098 @@ -0,0 +1,71 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.098 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.098 +Problem: Redirecting command output in a cmdline completion function + doesn't work. (Hari Krishna Dara) +Solution: Enable redirection when redirection is started. +Files: src/ex_docmd.c, src/ex_getln.c + + +*** ../vim-7.0.097/src/ex_docmd.c Sun Sep 10 15:50:32 2006 +--- src/ex_docmd.c Sun Sep 10 20:59:46 2006 +*************** +*** 8422,8427 **** +--- 8422,8436 ---- + else + EMSG2(_(e_invarg2), eap->arg); + } ++ ++ /* Make sure redirection is not off. Can happen for cmdline completion ++ * that indirectly invokes a command to catch its output. */ ++ if (redir_fd != NULL ++ #ifdef FEAT_EVAL ++ || redir_reg || redir_vname ++ #endif ++ ) ++ redir_off = FALSE; + } + + /* +*** ../vim-7.0.097/src/ex_getln.c Sat Sep 2 17:58:36 2006 +--- src/ex_getln.c Sun Sep 10 21:04:57 2006 +*************** +*** 324,329 **** +--- 324,332 ---- + */ + for (;;) + { ++ redir_off = TRUE; /* Don't redirect the typed command. ++ Repeated, because a ":redir" inside ++ completion may switch it on. */ + #ifdef USE_ON_FLY_SCROLL + dont_scroll = FALSE; /* allow scrolling here */ + #endif +*** ../vim-7.0.097/src/version.c Sun Sep 10 15:50:32 2006 +--- src/version.c Sun Sep 10 20:58:17 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 98, + /**/ + +-- +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/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.0.099 b/7.0.099 new file mode 100644 index 0000000..c51ad0d --- /dev/null +++ b/7.0.099 @@ -0,0 +1,70 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.099 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.099 +Problem: GUI: When the popup menu is visible using the scrollbar messes up + the display. +Solution: Disallow scrolling the current window. Redraw the popup menu + after scrolling another window. +Files: src/gui.c + + +*** ../vim-7.0.098/src/gui.c Tue Aug 29 18:16:37 2006 +--- src/gui.c Sun Sep 10 21:28:57 2006 +*************** +*** 3734,3739 **** +--- 3734,3745 ---- + if (dont_scroll || input_available()) + return; + #endif ++ #ifdef FEAT_INS_EXPAND ++ /* Disallow scrolling the current window when the completion popup menu is ++ * visible. */ ++ if ((sb->wp == NULL || sb->wp == curwin) && pum_visible()) ++ return; ++ #endif + + #ifdef FEAT_RIGHTLEFT + if (sb->wp == NULL && curwin->w_p_rl) +*************** +*** 4207,4212 **** +--- 4213,4224 ---- + redraw_win_later(wp, VALID); + updateWindow(wp); /* update window, status line, and cmdline */ + } ++ ++ #ifdef FEAT_INS_EXPAND ++ /* May need to redraw the popup menu. */ ++ if (pum_visible()) ++ pum_redraw(); ++ #endif + + return (wp == curwin && !equalpos(curwin->w_cursor, old_cursor)); + } +*** ../vim-7.0.098/src/version.c Sun Sep 10 21:05:39 2006 +--- src/version.c Sun Sep 10 21:35:27 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 99, + /**/ + +-- +FATHER: We are here today to witness the union of two young people in the + joyful bond of the holy wedlock. Unfortunately, one of them, my son + Herbert, has just fallen to his death. + [Murmurs from CROWD; the BRIDE smiles with relief, coughs.] + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.0.100 b/7.0.100 new file mode 100644 index 0000000..222e978 --- /dev/null +++ b/7.0.100 @@ -0,0 +1,64 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.100 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.100 +Problem: "zug" may report the wrong filename. (Lawrence Kesteloot) +Solution: Call home_replace() to fill NameBuff[]. +Files: src/spell.c + + +*** ../vim-7.0.099/src/spell.c Tue Aug 29 17:28:56 2006 +--- src/spell.c Mon Sep 11 20:45:35 2006 +*************** +*** 1483,1489 **** + else if ((mode == FIND_COMPOUND || mode == FIND_KEEPCOMPOUND + || !word_ends)) + { +! /* If there is no flag or the word is shorter than + * COMPOUNDMIN reject it quickly. + * Makes you wonder why someone puts a compound flag on a word + * that's too short... Myspell compatibility requires this +--- 1483,1489 ---- + else if ((mode == FIND_COMPOUND || mode == FIND_KEEPCOMPOUND + || !word_ends)) + { +! /* If there is no compound flag or the word is shorter than + * COMPOUNDMIN reject it quickly. + * Makes you wonder why someone puts a compound flag on a word + * that's too short... Myspell compatibility requires this +*************** +*** 9336,9342 **** +--- 9336,9345 ---- + { + fputc('#', fd); + if (undo) ++ { ++ home_replace(NULL, fname, NameBuff, MAXPATHL, TRUE); + smsg((char_u *)_("Word removed from %s"), NameBuff); ++ } + } + fseek(fd, fpos_next, SEEK_SET); + } +*** ../vim-7.0.099/src/version.c Sun Sep 10 21:38:48 2006 +--- src/version.c Mon Sep 11 21:36:13 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 100, + /**/ + +-- +Be nice to your kids... they'll be the ones choosing your nursing home. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.0.101 b/7.0.101 new file mode 100644 index 0000000..bc1d1cd --- /dev/null +++ b/7.0.101 @@ -0,0 +1,89 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.101 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.101 +Problem: When the "~/.vim/spell" directory does not exist "zg" may create + a wrong directory. "zw" doesn't work. +Solution: Use the directory of the file name instead of NameBuff. For "zw" + not only remove a good word but also add the word with "!". +Files: src/spell.c + + +*** ../vim-7.0.100/src/spell.c Mon Sep 11 21:37:27 2006 +--- src/spell.c Tue Sep 12 20:21:01 2006 +*************** +*** 9347,9366 **** + fclose(fd); + } + } +! else + { + fd = mch_fopen((char *)fname, "a"); + if (fd == NULL && new_spf) + { + /* We just initialized the 'spellfile' option and can't open the + * file. We may need to create the "spell" directory first. We + * already checked the runtime directory is writable in + * init_spellfile(). */ +! if (!dir_of_file_exists(fname)) + { + /* The directory doesn't exist. Try creating it and opening + * the file again. */ +! vim_mkdir(NameBuff, 0755); + fd = mch_fopen((char *)fname, "a"); + } + } +--- 9347,9373 ---- + fclose(fd); + } + } +! +! if (!undo) + { + fd = mch_fopen((char *)fname, "a"); + if (fd == NULL && new_spf) + { ++ char_u *p; ++ + /* We just initialized the 'spellfile' option and can't open the + * file. We may need to create the "spell" directory first. We + * already checked the runtime directory is writable in + * init_spellfile(). */ +! if (!dir_of_file_exists(fname) && (p = gettail_sep(fname)) != fname) + { ++ int c = *p; ++ + /* The directory doesn't exist. Try creating it and opening + * the file again. */ +! *p = NUL; +! vim_mkdir(fname, 0755); +! *p = c; + fd = mch_fopen((char *)fname, "a"); + } + } +*** ../vim-7.0.100/src/version.c Mon Sep 11 21:37:27 2006 +--- src/version.c Tue Sep 12 21:47:21 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 101, + /**/ + +-- +ARTHUR: Did you say shrubberies? +ROGER: Yes. Shrubberies are my trade. I am a shrubber. My name is Roger + the Shrubber. I arrange, design, and sell shrubberies. + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.0.102 b/7.0.102 new file mode 100644 index 0000000..ae27fcb --- /dev/null +++ b/7.0.102 @@ -0,0 +1,54 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.102 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.102 +Problem: Redrawing cmdline is not correct when using SCIM. +Solution: Don't call im_get_status(). (Yukihiro Nakadaira) +Files: src/ex_getln.c + + +*** ../vim-7.0.101/src/ex_getln.c Sun Sep 10 21:05:39 2006 +--- src/ex_getln.c Tue Sep 12 20:52:51 2006 +*************** +*** 2363,2369 **** + { + if ((State & CMDLINE) + && xic != NULL +! && im_get_status() + && !p_imdisable + && im_is_preediting()) + { +--- 2363,2369 ---- + { + if ((State & CMDLINE) + && xic != NULL +! /* && im_get_status() doesn't work when using SCIM */ + && !p_imdisable + && im_is_preediting()) + { +*** ../vim-7.0.101/src/version.c Tue Sep 12 22:24:48 2006 +--- src/version.c Thu Sep 14 10:23:45 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 102, + /**/ + +-- +TIM: That is not an ordinary rabbit ... 'tis the most foul cruel and + bad-tempered thing you ever set eyes on. +ROBIN: You tit. I soiled my armour I was so scared! + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.0.103 b/7.0.103 new file mode 100644 index 0000000..975d648 --- /dev/null +++ b/7.0.103 @@ -0,0 +1,53 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.103 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.103 (after 7.0.101) +Problem: Compiler warning for uninitialized variable. (Tony Mechelynck) +Solution: Init variable. +Files: src/spell.c + + +*** ../vim-7.0.102/src/spell.c Tue Sep 12 22:24:48 2006 +--- src/spell.c Wed Sep 13 20:46:22 2006 +*************** +*** 9251,9257 **** + 'spellfile' */ + int undo; /* TRUE for "zug", "zuG", "zuw" and "zuW" */ + { +! FILE *fd; + buf_T *buf = NULL; + int new_spf = FALSE; + char_u *fname; +--- 9251,9257 ---- + 'spellfile' */ + int undo; /* TRUE for "zug", "zuG", "zuw" and "zuW" */ + { +! FILE *fd = NULL; + buf_T *buf = NULL; + int new_spf = FALSE; + char_u *fname; +*** ../vim-7.0.102/src/version.c Thu Sep 14 10:25:34 2006 +--- src/version.c Thu Sep 14 10:47:39 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 103, + /**/ + +-- +ARTHUR: Go on, Bors, chop its head off. +BORS: Right. Silly little bleeder. One rabbit stew coming up. + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.0.104 b/7.0.104 new file mode 100644 index 0000000..55b3d44 --- /dev/null +++ b/7.0.104 @@ -0,0 +1,89 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.104 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.104 +Problem: The CursorHoldI event only triggers once in Insert mode. It also + triggers after CTRL-V and other two-key commands. +Solution: Set "did_cursorhold" before getting a second key. Reset + "did_cursorhold" after handling a command. +Files: src/edit.c, src/fileio.c + + +*** ../vim-7.0.103/src/edit.c Tue Aug 29 18:36:55 2006 +--- src/edit.c Tue Sep 12 21:12:10 2006 +*************** +*** 707,712 **** +--- 707,717 ---- + lastc = c; /* remember previous char for CTRL-D */ + c = safe_vgetc(); + ++ #ifdef FEAT_AUTOCMD ++ /* Don't want K_CURSORHOLD for the second key, e.g., after CTRL-V. */ ++ did_cursorhold = TRUE; ++ #endif ++ + #ifdef FEAT_RIGHTLEFT + if (p_hkmap && KeyTyped) + c = hkmap(c); /* Hebrew mode mapping */ +*************** +*** 1388,1393 **** +--- 1393,1404 ---- + #endif + break; + } /* end of switch (c) */ ++ ++ #ifdef FEAT_AUTOCMD ++ /* If typed something may trigger CursorHoldI again. */ ++ if (c != K_CURSORHOLD) ++ did_cursorhold = FALSE; ++ #endif + + /* If the cursor was moved we didn't just insert a space */ + if (arrow_used) +*** ../vim-7.0.103/src/fileio.c Sat Sep 9 14:51:43 2006 +--- src/fileio.c Tue Sep 12 20:58:55 2006 +*************** +*** 8289,8295 **** + { + int state; + +! if (!did_cursorhold && has_cursorhold() && !Recording) + { + state = get_real_state(); + if (state == NORMAL_BUSY || (state & INSERT) != 0) +--- 8289,8299 ---- + { + int state; + +! if (!did_cursorhold && has_cursorhold() && !Recording +! #ifdef FEAT_INS_EXPAND +! && !ins_compl_active() +! #endif +! ) + { + state = get_real_state(); + if (state == NORMAL_BUSY || (state & INSERT) != 0) +*** ../vim-7.0.103/src/version.c Thu Sep 14 10:48:00 2006 +--- src/version.c Thu Sep 14 11:05:33 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 104, + /**/ + +-- +A hamburger walks into a bar, and the bartender says: "I'm sorry, +but we don't serve food here." + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.0.105 b/7.0.105 new file mode 100644 index 0000000..31c2939 --- /dev/null +++ b/7.0.105 @@ -0,0 +1,50 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.105 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.105 +Problem: When using incremental search the statusline ruler isn't updated. + (Christoph Koegl) +Solution: Update the statusline when it contains the ruler. +Files: src/ex_getln.c + + +*** ../vim-7.0.104/src/ex_getln.c Thu Sep 14 10:25:34 2006 +--- src/ex_getln.c Thu Sep 14 10:42:24 2006 +*************** +*** 1756,1761 **** +--- 1756,1766 ---- + end_pos = curwin->w_cursor; /* shutup gcc 4 */ + + validate_cursor(); ++ # ifdef FEAT_WINDOWS ++ /* May redraw the status line to show the cursor position. */ ++ if (p_ru && curwin->w_status_height > 0) ++ curwin->w_redr_status = TRUE; ++ # endif + + save_cmdline(&save_ccline); + update_screen(SOME_VALID); +*** ../vim-7.0.104/src/version.c Thu Sep 14 11:07:08 2006 +--- src/version.c Thu Sep 14 11:25:37 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 105, + /**/ + +-- +An indication you must be a manager: +You feel sorry for Dilbert's boss. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.0.106 b/7.0.106 new file mode 100644 index 0000000..2736dc7 --- /dev/null +++ b/7.0.106 @@ -0,0 +1,150 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.106 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.106 +Problem: The spell popup menu uses ":amenu", triggering mappings. Other + PopupMenu autocommands are removed. (John Little) +Solution: Use ":anoremenu" and use an autocmd group. +Files: runtime/menu.vim + + +*** ../vim-7.0.105/runtime/menu.vim Tue Apr 18 00:06:31 2006 +--- runtime/menu.vim Thu Sep 14 13:14:25 2006 +*************** +*** 2,8 **** + " You can also use this as a start for your own set of menus. + " + " Maintainer: Bram Moolenaar +! " Last Change: 2006 Apr 17 + + " Note that ":an" (short for ":anoremenu") is often used to make a menu work + " in all modes and avoid side effects from mappings defined by the user. +--- 2,8 ---- + " You can also use this as a start for your own set of menus. + " + " Maintainer: Bram Moolenaar +! " Last Change: 2006 Sep 14 + + " Note that ":an" (short for ":anoremenu") is often used to make a menu work + " in all modes and avoid side effects from mappings defined by the user. +*************** +*** 885,890 **** +--- 885,892 ---- + if exists("s:changeitem") && s:changeitem != '' + call SpellDel() + endif ++ ++ " Return quickly if spell checking is not enabled. + if !&spell || &spelllang == '' + return + endif +*************** +*** 908,925 **** + let s:fromword = w + let pri = 1 + for sug in s:suglist +! exe 'amenu 1.5.' . pri . ' PopUp.' . s:changeitem . '.' . escape(sug, ' .') + \ . ' :call SpellReplace(' . pri . ')' + let pri += 1 + endfor + + let s:additem = 'add\ "' . escape(w, ' .') . '"\ to\ word\ list' +! exe 'amenu 1.6 PopUp.' . s:additem . ' :spellgood ' . w . '' + + let s:ignoreitem = 'ignore\ "' . escape(w, ' .') . '"' +! exe 'amenu 1.7 PopUp.' . s:ignoreitem . ' :spellgood! ' . w . '' + +! amenu 1.8 PopUp.-SpellSep- : + endif + endif + endfunc +--- 910,927 ---- + let s:fromword = w + let pri = 1 + for sug in s:suglist +! exe 'anoremenu 1.5.' . pri . ' PopUp.' . s:changeitem . '.' . escape(sug, ' .') + \ . ' :call SpellReplace(' . pri . ')' + let pri += 1 + endfor + + let s:additem = 'add\ "' . escape(w, ' .') . '"\ to\ word\ list' +! exe 'anoremenu 1.6 PopUp.' . s:additem . ' :spellgood ' . w . '' + + let s:ignoreitem = 'ignore\ "' . escape(w, ' .') . '"' +! exe 'anoremenu 1.7 PopUp.' . s:ignoreitem . ' :spellgood! ' . w . '' + +! anoremenu 1.8 PopUp.-SpellSep- : + endif + endif + endfunc +*************** +*** 938,944 **** + let s:changeitem = '' + endfun + +! au! MenuPopup * call SpellPopup() + endif + + " The GUI toolbar (for MS-Windows and GTK) +--- 940,948 ---- + let s:changeitem = '' + endfun + +! augroup SpellPopupMenu +! au! MenuPopup * call SpellPopup() +! augroup END + endif + + " The GUI toolbar (for MS-Windows and GTK) +*************** +*** 1013,1021 **** + tmenu ToolBar.FindPrev Find Previous + tmenu ToolBar.Replace Find / Replace... + endif +! tmenu ToolBar.LoadSesn Chose a session to load + tmenu ToolBar.SaveSesn Save current session +! tmenu ToolBar.RunScript Chose a Vim Script to run + tmenu ToolBar.Make Make current project (:make) + tmenu ToolBar.RunCtags Build tags in current directory tree (!ctags -R .) + tmenu ToolBar.TagJump Jump to tag under cursor +--- 1017,1025 ---- + tmenu ToolBar.FindPrev Find Previous + tmenu ToolBar.Replace Find / Replace... + endif +! tmenu ToolBar.LoadSesn Choose a session to load + tmenu ToolBar.SaveSesn Save current session +! tmenu ToolBar.RunScript Choose a Vim Script to run + tmenu ToolBar.Make Make current project (:make) + tmenu ToolBar.RunCtags Build tags in current directory tree (!ctags -R .) + tmenu ToolBar.TagJump Jump to tag under cursor +*** ../vim-7.0.105/src/version.c Thu Sep 14 11:27:12 2006 +--- src/version.c Thu Sep 14 13:24:44 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 106, + /**/ + +-- +BROTHER MAYNARD: Armaments Chapter Two Verses Nine to Twenty One. +ANOTHER MONK: And St. Attila raised his hand grenade up on high saying "O + Lord bless this thy hand grenade that with it thou mayest + blow thine enemies to tiny bits, in thy mercy. "and the Lord + did grin and people did feast upon the lambs and sloths and + carp and anchovies and orang-utans and breakfast cereals and + fruit bats and... +BROTHER MAYNARD: Skip a bit brother ... + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.0.107 b/7.0.107 new file mode 100644 index 0000000..d0aafdf --- /dev/null +++ b/7.0.107 @@ -0,0 +1,58 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.107 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.107 +Problem: Incremental search doesn't redraw the text tabline. (Ilya Bobir) + Also happens in other situations with one window in a tab page. +Solution: Redraw the tabline after clearing the screen. +Files: src/screen.c + + +*** ../vim-7.0.106/src/screen.c Tue Aug 29 17:28:56 2006 +--- src/screen.c Thu Sep 14 21:00:32 2006 +*************** +*** 1228,1234 **** +--- 1228,1241 ---- + { + mid_end = wp->w_height; + if (lastwin == firstwin) ++ { + screenclear(); ++ #ifdef FEAT_WINDOWS ++ /* The screen was cleared, redraw the tab pages line. */ ++ if (redraw_tabline) ++ draw_tabline(); ++ #endif ++ } + } + } + else +*** ../vim-7.0.106/src/version.c Thu Sep 14 13:35:17 2006 +--- src/version.c Thu Sep 14 21:03:40 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 107, + /**/ + +-- +VOICE OVER: As the horrendous Black Beast lunged forward, escape for Arthur + and his knights seemed hopeless, when, suddenly ... the animator + suffered a fatal heart attack. +ANIMATOR: Aaaaagh! +VOICE OVER: The cartoon peril was no more ... The Quest for Holy Grail could + continue. + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.0.109 b/7.0.109 new file mode 100644 index 0000000..62c2ff2 --- /dev/null +++ b/7.0.109 @@ -0,0 +1,70 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.109 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.109 +Problem: Lisp indenting is confused by escaped quotes in strings. (Dorai + Sitaram) +Solution: Check for backslash inside strings. (Sergey Khorev) +Files: src/misc1.c + + +*** ../vim-7.0.108/src/misc1.c Tue Sep 5 20:56:11 2006 +--- src/misc1.c Wed Sep 13 20:13:57 2006 +*************** +*** 8074,8082 **** + } + if (*that == '"' && *(that + 1) != NUL) + { +! that++; +! while (*that && (*that != '"' || *(that - 1) == '\\')) +! ++that; + } + if (*that == '(' || *that == '[') + ++parencount; +--- 8074,8093 ---- + } + if (*that == '"' && *(that + 1) != NUL) + { +! while (*++that && *that != '"') +! { +! /* skipping escaped characters in the string */ +! if (*that == '\\') +! { +! if (*++that == NUL) +! break; +! if (that[1] == NUL) +! { +! ++that; +! break; +! } +! } +! } + } + if (*that == '(' || *that == '[') + ++parencount; +*** ../vim-7.0.108/src/version.c Thu Sep 14 21:36:35 2006 +--- src/version.c Fri Sep 15 20:15:40 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 109, + /**/ + +-- +ARTHUR: No, hang on! Just answer the five questions ... +GALAHAD: Three questions ... +ARTHUR: Three questions ... And we shall watch ... and pray. + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.0.110 b/7.0.110 new file mode 100644 index 0000000..c107a77 --- /dev/null +++ b/7.0.110 @@ -0,0 +1,88 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.110 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.110 +Problem: Amiga: Compilation problems when not using libnix. +Solution: Change a few #ifdefs. (Willy Catteau) +Files: src/memfile.c + + +*** ../vim-7.0.109/src/memfile.c Tue Mar 7 00:27:12 2006 +--- src/memfile.c Sun Sep 17 15:50:00 2006 +*************** +*** 517,523 **** + mf_ins_free(mfp, hp); /* put *hp in the free list */ + } + +! #if defined(__MORPHOS__) + /* function is missing in MorphOS libnix version */ + extern unsigned long *__stdfiledes; + +--- 517,523 ---- + mf_ins_free(mfp, hp); /* put *hp in the free list */ + } + +! #if defined(__MORPHOS__) && defined(__libnix__) + /* function is missing in MorphOS libnix version */ + extern unsigned long *__stdfiledes; + +*************** +*** 677,691 **** + # else + # if defined(_DCC) || defined(__GNUC__) || defined(__MORPHOS__) + { +! # if defined(__GNUC__) && !defined(__MORPHOS__) + /* Have function (in libnix at least), + * but ain't got no prototype anywhere. */ + extern unsigned long fdtofh(int filedescriptor); + # endif + BPTR fh = (BPTR)fdtofh(mfp->mf_fd); + + if (fh != 0) + Flush(fh); + } + # else /* assume Manx */ + Flush(_devtab[mfp->mf_fd].fd); +--- 677,695 ---- + # else + # if defined(_DCC) || defined(__GNUC__) || defined(__MORPHOS__) + { +! # if defined(__GNUC__) && !defined(__MORPHOS__) && defined(__libnix__) + /* Have function (in libnix at least), + * but ain't got no prototype anywhere. */ + extern unsigned long fdtofh(int filedescriptor); + # endif ++ # if !defined(__libnix__) ++ fflush(NULL); ++ # else + BPTR fh = (BPTR)fdtofh(mfp->mf_fd); + + if (fh != 0) + Flush(fh); ++ # endif + } + # else /* assume Manx */ + Flush(_devtab[mfp->mf_fd].fd); +*** ../vim-7.0.109/src/version.c Fri Sep 15 20:17:49 2006 +--- src/version.c Tue Sep 26 13:48:48 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 110, + /**/ + +-- +A fool must search for a greater fool to find admiration. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.0.111 b/7.0.111 new file mode 100644 index 0000000..ebe3162 --- /dev/null +++ b/7.0.111 @@ -0,0 +1,336 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.111 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.111 +Problem: The gzip plugin can't handle filenames with single quotes. +Solution: Add and use the shellescape() function. (partly by Alexey Froloff) +Files: runtime/autoload/gzip.vim, runtime/doc/eval.txt, src/eval.c, + src/mbyte.c, src/misc2.c, src/proto/misc2.pro + + +*** ../vim-7.0.110/runtime/autoload/gzip.vim Tue Aug 8 19:55:06 2006 +--- runtime/autoload/gzip.vim Tue Oct 3 14:39:29 2006 +*************** +*** 1,6 **** + " Vim autoload file for editing compressed files. + " Maintainer: Bram Moolenaar +! " Last Change: 2006 Jul 19 + + " These functions are used by the gzip plugin. + +--- 1,6 ---- + " Vim autoload file for editing compressed files. + " Maintainer: Bram Moolenaar +! " Last Change: 2006 Oct 03 + + " These functions are used by the gzip plugin. + +*************** +*** 68,76 **** + let tmp = tempname() + let tmpe = tmp . "." . expand(":e") + " write the just read lines to a temp file "'[,']w tmp.gz" +! execute "silent '[,']w " . tmpe + " uncompress the temp file: call system("gzip -dn tmp.gz") +! call system(a:cmd . " " . tmpe) + if !filereadable(tmp) + " uncompress didn't work! Keep the compressed file then. + echoerr "Error: Could not read uncompressed file" +--- 68,76 ---- + let tmp = tempname() + let tmpe = tmp . "." . expand(":e") + " write the just read lines to a temp file "'[,']w tmp.gz" +! execute "silent '[,']w " . escape(tmpe, ' ') + " uncompress the temp file: call system("gzip -dn tmp.gz") +! call system(a:cmd . " " . s:escape(tmpe)) + if !filereadable(tmp) + " uncompress didn't work! Keep the compressed file then. + echoerr "Error: Could not read uncompressed file" +*************** +*** 127,135 **** + let nmt = s:tempname(nm) + if rename(nm, nmt) == 0 + if exists("b:gzip_comp_arg") +! call system(a:cmd . " " . b:gzip_comp_arg . " '" . nmt . "'") + else +! call system(a:cmd . " '" . nmt . "'") + endif + call rename(nmt . "." . expand(":e"), nm) + endif +--- 127,135 ---- + let nmt = s:tempname(nm) + if rename(nm, nmt) == 0 + if exists("b:gzip_comp_arg") +! call system(a:cmd . " " . b:gzip_comp_arg . " " . s:escape(nmt)) + else +! call system(a:cmd . " " . s:escape(nmt)) + endif + call rename(nmt . "." . expand(":e"), nm) + endif +*************** +*** 154,163 **** + if rename(nm, nmte) == 0 + if &patchmode != "" && getfsize(nm . &patchmode) == -1 + " Create patchmode file by creating the decompressed file new +! call system(a:cmd . " -c " . nmte . " > " . nmt) + call rename(nmte, nm . &patchmode) + else +! call system(a:cmd . " " . nmte) + endif + call rename(nmt, nm) + endif +--- 154,163 ---- + if rename(nm, nmte) == 0 + if &patchmode != "" && getfsize(nm . &patchmode) == -1 + " Create patchmode file by creating the decompressed file new +! call system(a:cmd . " -c " . s:escape(nmte) . " > " . s:escape(nmt)) + call rename(nmte, nm . &patchmode) + else +! call system(a:cmd . " " . s:escape(nmte)) + endif + call rename(nmt, nm) + endif +*************** +*** 173,178 **** +--- 173,186 ---- + return fn + endif + return fnamemodify(a:name, ":p:h") . "/X~=@l9q5" ++ endfun ++ ++ fun s:escape(name) ++ " shellescape() was added by patch 7.0.111 ++ if v:version > 700 || (v:version == 700 && has('patch111')) ++ return shellescape(a:name) ++ endif ++ return "'" . a:name . "'" + endfun + + " vim: set sw=2 : +*** ../vim-7.0.110/runtime/doc/eval.txt Sun May 7 17:08:32 2006 +--- runtime/doc/eval.txt Fri Sep 22 19:43:18 2006 +*************** +*** 1,4 **** +! *eval.txt* For Vim version 7.0. Last change: 2006 May 06 + + + VIM REFERENCE MANUAL by Bram Moolenaar +--- 1,4 ---- +! *eval.txt* For Vim version 7.0. Last change: 2006 Sep 22 + + + VIM REFERENCE MANUAL by Bram Moolenaar +*************** +*** 1709,1714 **** +--- 1715,1722 ---- + 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} ++ shellescape( {string}) String escape {string} for use as shell ++ command argument + simplify( {filename}) String simplify filename as much as possible + sort( {list} [, {func}]) List sort {list}, using {func} to compare + soundfold( {word}) String sound-fold {word} +*************** +*** 4434,4439 **** +--- 4457,4477 ---- + :call setwinvar(1, "&list", 0) + :call setwinvar(2, "myvar", "foobar") + ++ shellescape({string}) *shellescape()* ++ Escape {string} for use as shell command argument. ++ On MS-Windows and MS-DOS, when 'shellslash' is not set, it ++ will enclose {string} double quotes and double all double ++ quotes within {string}. ++ For other systems, it will enclose {string} in single quotes ++ and replace all "'" with "'\''". ++ Example: > ++ :echo shellescape('c:\program files\vim') ++ < results in: ++ "c:\program files\vim" ~ ++ Example usage: > ++ :call system("chmod +x -- " . shellescape(expand("%"))) ++ ++ + simplify({filename}) *simplify()* + Simplify the file name as much as possible without changing + the meaning. Shortcuts (on MS-Windows) or symbolic links (on +*** ../vim-7.0.110/src/eval.c Sat Sep 9 12:05:39 2006 +--- src/eval.c Thu Sep 14 17:44:41 2006 +*************** +*** 622,627 **** +--- 622,628 ---- + static void f_setreg __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)); ++ static void f_shellescape __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_simplify __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_sort __ARGS((typval_T *argvars, typval_T *rettv)); + static void f_soundfold __ARGS((typval_T *argvars, typval_T *rettv)); +*************** +*** 7146,7151 **** +--- 7147,7153 ---- + {"setreg", 2, 3, f_setreg}, + {"settabwinvar", 4, 4, f_settabwinvar}, + {"setwinvar", 3, 3, f_setwinvar}, ++ {"shellescape", 1, 1, f_shellescape}, + {"simplify", 1, 1, f_simplify}, + {"sort", 1, 2, f_sort}, + {"soundfold", 1, 1, f_soundfold}, +*************** +*** 14602,14607 **** +--- 14604,14621 ---- + } + #endif + } ++ } ++ ++ /* ++ * "shellescape({string})" function ++ */ ++ static void ++ f_shellescape(argvars, rettv) ++ typval_T *argvars; ++ typval_T *rettv; ++ { ++ rettv->vval.v_string = vim_strsave_shellescape(get_tv_string(&argvars[0])); ++ rettv->v_type = VAR_STRING; + } + + /* +*** ../vim-7.0.110/src/misc2.c Thu May 4 23:50:56 2006 +--- src/misc2.c Tue Sep 26 23:13:57 2006 +*************** +*** 1229,1234 **** +--- 1229,1322 ---- + return escaped_string; + } + ++ #if defined(FEAT_EVAL) || defined(PROTO) ++ /* ++ * Escape "string" for use as a shell argument with system(). ++ * This uses single quotes, except when we know we need to use double qoutes ++ * (MS-DOS and MS-Windows without 'shellslash' set). ++ * Returns the result in allocated memory, NULL if we have run out. ++ */ ++ char_u * ++ vim_strsave_shellescape(string) ++ char_u *string; ++ { ++ unsigned length; ++ char_u *p; ++ char_u *d; ++ char_u *escaped_string; ++ ++ /* First count the number of extra bytes required. */ ++ length = STRLEN(string) + 3; /* two quotes and the trailing NUL */ ++ for (p = string; *p != NUL; mb_ptr_adv(p)) ++ { ++ # if defined(WIN32) || defined(WIN16) || defined(DOS) ++ if (!p_ssl) ++ { ++ if (*p == '"') ++ ++length; /* " -> "" */ ++ } ++ else ++ # endif ++ if (*p == '\'') ++ length += 3; /* ' => '\'' */ ++ } ++ ++ /* Allocate memory for the result and fill it. */ ++ escaped_string = alloc(length); ++ if (escaped_string != NULL) ++ { ++ d = escaped_string; ++ ++ /* add opening quote */ ++ # if defined(WIN32) || defined(WIN16) || defined(DOS) ++ if (!p_ssl) ++ *d++ = '"'; ++ else ++ # endif ++ *d++ = '\''; ++ ++ for (p = string; *p != NUL; ) ++ { ++ # if defined(WIN32) || defined(WIN16) || defined(DOS) ++ if (!p_ssl) ++ { ++ if (*p == '"') ++ { ++ *d++ = '"'; ++ *d++ = '"'; ++ ++p; ++ continue; ++ } ++ } ++ else ++ # endif ++ if (*p == '\'') ++ { ++ *d++='\''; ++ *d++='\\'; ++ *d++='\''; ++ *d++='\''; ++ ++p; ++ continue; ++ } ++ ++ MB_COPY_CHAR(p, d); ++ } ++ ++ /* add terminating quote and finish with a NUL */ ++ # if defined(WIN32) || defined(WIN16) || defined(DOS) ++ if (!p_ssl) ++ *d++ = '"'; ++ else ++ # endif ++ *d++ = '\''; ++ *d = NUL; ++ } ++ ++ return escaped_string; ++ } ++ #endif ++ + /* + * Like vim_strsave(), but make all characters uppercase. + * This uses ASCII lower-to-upper case translation, language independent. +*** ../vim-7.0.110/src/proto/misc2.pro Fri Mar 24 23:42:55 2006 +--- src/proto/misc2.pro Thu Sep 14 18:28:43 2006 +*************** +*** 29,34 **** +--- 29,35 ---- + extern char_u *vim_strnsave __ARGS((char_u *string, int len)); + extern char_u *vim_strsave_escaped __ARGS((char_u *string, char_u *esc_chars)); + extern char_u *vim_strsave_escaped_ext __ARGS((char_u *string, char_u *esc_chars, int cc, int bsl)); ++ extern char_u *vim_strsave_shellescape __ARGS((char_u *string)); + extern char_u *vim_strsave_up __ARGS((char_u *string)); + extern char_u *vim_strnsave_up __ARGS((char_u *string, int len)); + extern void vim_strup __ARGS((char_u *p)); +*** ../vim-7.0.110/src/version.c Tue Sep 26 13:49:41 2006 +--- src/version.c Tue Oct 3 14:36:40 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 111, + /**/ + +-- +The only way the average employee can speak to an executive is by taking a +second job as a golf caddie. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.0.112 b/7.0.112 new file mode 100644 index 0000000..3b6ce3b --- /dev/null +++ b/7.0.112 @@ -0,0 +1,108 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.112 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.112 +Problem: Python interface does not work with Python 2.5. +Solution: Change PyMem_DEL() to Py_DECREF(). (Sumner Hayes) +Files: src/if_python.c + + +*** ../vim-7.0.111/src/if_python.c Sun Apr 30 20:48:37 2006 +--- src/if_python.c Fri Sep 22 15:08:33 2006 +*************** +*** 1463,1469 **** + if (this->buf && this->buf != INVALID_BUFFER_VALUE) + this->buf->b_python_ref = NULL; + +! PyMem_DEL(self); + } + + static PyObject * +--- 1463,1469 ---- + if (this->buf && this->buf != INVALID_BUFFER_VALUE) + this->buf->b_python_ref = NULL; + +! Py_DECREF(self); + } + + static PyObject * +*************** +*** 1674,1680 **** + bufr = (BufferObject *)BufferNew(buf); + if (bufr == NULL) + { +! PyMem_DEL(self); + return NULL; + } + Py_INCREF(bufr); +--- 1674,1680 ---- + bufr = (BufferObject *)BufferNew(buf); + if (bufr == NULL) + { +! Py_DECREF(self); + return NULL; + } + Py_INCREF(bufr); +*************** +*** 1690,1696 **** + RangeDestructor(PyObject *self) + { + Py_DECREF(((RangeObject *)(self))->buf); +! PyMem_DEL(self); + } + + static PyObject * +--- 1690,1696 ---- + RangeDestructor(PyObject *self) + { + Py_DECREF(((RangeObject *)(self))->buf); +! Py_DECREF(self); + } + + static PyObject * +*************** +*** 1944,1950 **** + if (this->win && this->win != INVALID_WINDOW_VALUE) + this->win->w_python_ref = NULL; + +! PyMem_DEL(self); + } + + static int +--- 1944,1950 ---- + if (this->win && this->win != INVALID_WINDOW_VALUE) + this->win->w_python_ref = NULL; + +! Py_DECREF(self); + } + + static int +*** ../vim-7.0.111/src/version.c Tue Oct 3 14:43:31 2006 +--- src/version.c Tue Oct 3 14:46:10 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 112, + /**/ + +-- +A salesperson says: Translation: +"backward compatible" Old technology +"Premium" Overpriced +"Can't keep it on the shelf" Unavailable +"Stands alone" Piece of shit +"Proprietary" Incompatible + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.0.113 b/7.0.113 new file mode 100644 index 0000000..7a783c6 --- /dev/null +++ b/7.0.113 @@ -0,0 +1,57 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.113 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.113 +Problem: Using CTRL-L in Insert completion when there is no current match + may cause a crash. (Yukihiro Nakadaira) +Solution: Check for compl_leader to be NULL +Files: src/edit.c + + +*** ../vim-7.0.112/src/edit.c Thu Sep 14 11:07:08 2006 +--- src/edit.c Tue Oct 3 14:57:47 2006 +*************** +*** 3206,3212 **** + for (cp = compl_shown_match->cp_next; cp != NULL + && cp != compl_first_match; cp = cp->cp_next) + { +! if (ins_compl_equal(cp, compl_leader, + (int)STRLEN(compl_leader))) + { + p = cp->cp_str; +--- 3206,3213 ---- + for (cp = compl_shown_match->cp_next; cp != NULL + && cp != compl_first_match; cp = cp->cp_next) + { +! if (compl_leader == NULL +! || ins_compl_equal(cp, compl_leader, + (int)STRLEN(compl_leader))) + { + p = cp->cp_str; +*** ../vim-7.0.112/src/version.c Tue Oct 3 15:02:11 2006 +--- src/version.c Tue Oct 3 15:20:13 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 113, + /**/ + +-- +I recommend ordering large cargo containers of paper towels to make up +whatever budget underruns you have. Paper products are always useful and they +have the advantage of being completely flushable if you need to make room in +the storage area later. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.0.114 b/7.0.114 new file mode 100644 index 0000000..7784832 --- /dev/null +++ b/7.0.114 @@ -0,0 +1,64 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.114 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.114 +Problem: When aborting an insert with CTRL-C an extra undo point is + created in the GUI. (Yukihiro Nakadaira) +Solution: Call gotchars() only when advancing. +Files: src/getchar.c + + +*** ../vim-7.0.113/src/getchar.c Tue Sep 5 12:57:14 2006 +--- src/getchar.c Tue Sep 26 17:44:45 2006 +*************** +*** 1960,1969 **** + c = Ctrl_C; + flush_buffers(TRUE); /* flush all typeahead */ + +! /* Also record this character, it might be needed to +! * get out of Insert mode. */ +! *typebuf.tb_buf = c; +! gotchars(typebuf.tb_buf, 1); + cmd_silent = FALSE; + + break; +--- 1962,1974 ---- + c = Ctrl_C; + flush_buffers(TRUE); /* flush all typeahead */ + +! if (advance) +! { +! /* Also record this character, it might be needed to +! * get out of Insert mode. */ +! *typebuf.tb_buf = c; +! gotchars(typebuf.tb_buf, 1); +! } + cmd_silent = FALSE; + + break; +*** ../vim-7.0.113/src/version.c Tue Oct 3 15:22:00 2006 +--- src/version.c Tue Oct 3 15:34:14 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 114, + /**/ + +-- +Sometimes you can protect millions of dollars in your budget simply by buying +a bag of cookies, dropping it on the budget anylyst's desk, and saying +something deeply personal such as "How was your weekend, big guy?" + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.0.115 b/7.0.115 new file mode 100644 index 0000000..1b1b17e --- /dev/null +++ b/7.0.115 @@ -0,0 +1,75 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.115 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.115 +Problem: When 'ignorecase' is set, Insert mode completion only adds "foo" + and not "Foo" when both are found. + A found match isn't displayed right away when 'completeopt' does + not have "menu" or "menuone". +Solution: Do not ignore case when checking if a completion match already + exists. call ins_compl_check_keys() also when not using a popup + menu. (Yukihiro Nakadaira) +Files: src/edit.c + + +*** ../vim-7.0.114/src/edit.c Tue Oct 3 15:22:00 2006 +--- src/edit.c Tue Oct 3 14:57:47 2006 +*************** +*** 2157,2163 **** + do + { + if ( !(match->cp_flags & ORIGINAL_TEXT) +! && ins_compl_equal(match, str, len) + && match->cp_str[len] == NUL) + return NOTDONE; + match = match->cp_next; +--- 2157,2163 ---- + do + { + if ( !(match->cp_flags & ORIGINAL_TEXT) +! && STRNCMP(match->cp_str, str, len) == 0 + && match->cp_str[len] == NUL) + return NOTDONE; + match = match->cp_next; +*************** +*** 4042,4048 **** + if (got_int) + break; + /* Fill the popup menu as soon as possible. */ +! if (pum_wanted() && type != -1) + ins_compl_check_keys(0); + + if ((ctrl_x_mode != 0 && ctrl_x_mode != CTRL_X_WHOLE_LINE) +--- 4042,4048 ---- + if (got_int) + break; + /* Fill the popup menu as soon as possible. */ +! if (type != -1) + ins_compl_check_keys(0); + + if ((ctrl_x_mode != 0 && ctrl_x_mode != CTRL_X_WHOLE_LINE) +*** ../vim-7.0.114/src/version.c Tue Oct 3 15:36:09 2006 +--- src/version.c Tue Oct 3 15:46:15 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 115, + /**/ + +-- +The budget process was invented by an alien race of sadistic beings who +resemble large cats. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.0.116 b/7.0.116 new file mode 100644 index 0000000..ad1de26 --- /dev/null +++ b/7.0.116 @@ -0,0 +1,49 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.116 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.116 +Problem: 64 bit Windows version reports "32 bit" in the ":version" output. + (M. Veerman) +Solution: Change the text for Win64. +Files: src/version.c + + +*** ../vim-7.0.115/src/version.c Tue Oct 3 15:49:20 2006 +--- src/version.c Tue Oct 3 16:29:31 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 116, + /**/ +*************** +*** 962,966 **** +--- 964,972 ---- + MSG_PUTS(_("\nMS-Windows 16/32 bit GUI version")); + # else ++ # ifdef _WIN64 ++ MSG_PUTS(_("\nMS-Windows 64 bit GUI version")); ++ # else + MSG_PUTS(_("\nMS-Windows 32 bit GUI version")); ++ # endif + # endif + if (gui_is_win32s()) + +-- +Article in the first Free Software Magazine: "Bram Moolenaar studied electrical +engineering at the Technical University of Delft and graduated in 1985 on a +multi-processor Unix architecture." +Response by "dimator": Could the school not afford a proper stage for the +ceremony? + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.0.117 b/7.0.117 new file mode 100644 index 0000000..c025534 --- /dev/null +++ b/7.0.117 @@ -0,0 +1,166 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.117 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.117 +Problem: Using "extend" on a syntax item inside a region with "keepend", an + intermediate item may be truncated. + When applying the "keepend" and there is an offset to the end + pattern the highlighting of a contained item isn't adjusted. +Solution: Use the seen_keepend flag to remember when to apply the "keepend" + flag. Adjust the keepend highlighting properly. (Ilya Bobir) +Files: src/syntax.c + + +*** ../vim-7.0.116/src/syntax.c Thu Apr 27 01:58:59 2006 +--- src/syntax.c Tue Oct 3 17:00:44 2006 +*************** +*** 977,982 **** +--- 977,983 ---- + { + stateitem_T *cur_si; + int i; ++ int seen_keepend; + + if (startofline) + { +*************** +*** 1002,1008 **** + /* + * Need to update the end of a start/skip/end that continues from the + * previous line. And regions that have "keepend", because they may +! * influence contained items. + * Then check for items ending in column 0. + */ + i = current_state.ga_len - 1; +--- 1003,1012 ---- + /* + * Need to update the end of a start/skip/end that continues from the + * previous line. And regions that have "keepend", because they may +! * influence contained items. If we've just removed "extend" +! * (startofline == 0) then we should update ends of normal regions +! * contained inside "keepend" because "extend" could have extended +! * these "keepend" regions as well as contained normal regions. + * Then check for items ending in column 0. + */ + i = current_state.ga_len - 1; +*************** +*** 1010,1019 **** +--- 1014,1026 ---- + for ( ; i > keepend_level; --i) + if (CUR_STATE(i).si_flags & HL_EXTEND) + break; ++ ++ seen_keepend = FALSE; + for ( ; i < current_state.ga_len; ++i) + { + cur_si = &CUR_STATE(i); + if ((cur_si->si_flags & HL_KEEPEND) ++ || (seen_keepend && !startofline) + || (i == current_state.ga_len - 1 && startofline)) + { + cur_si->si_h_startpos.col = 0; /* start highl. in col 0 */ +*************** +*** 1021,1026 **** +--- 1028,1036 ---- + + if (!(cur_si->si_flags & HL_MATCHCONT)) + update_si_end(cur_si, (int)current_col, !startofline); ++ ++ if (!startofline && (cur_si->si_flags & HL_KEEPEND)) ++ seen_keepend = TRUE; + } + } + check_keepend(); +*************** +*** 2564,2569 **** +--- 2574,2580 ---- + { + int i; + lpos_T maxpos; ++ lpos_T maxpos_h; + stateitem_T *sip; + + /* +*************** +*** 2583,2605 **** + break; + + maxpos.lnum = 0; + for ( ; i < current_state.ga_len; ++i) + { + sip = &CUR_STATE(i); + if (maxpos.lnum != 0) + { + limit_pos_zero(&sip->si_m_endpos, &maxpos); +! limit_pos_zero(&sip->si_h_endpos, &maxpos); + limit_pos_zero(&sip->si_eoe_pos, &maxpos); + sip->si_ends = TRUE; + } +! if (sip->si_ends +! && (sip->si_flags & HL_KEEPEND) +! && (maxpos.lnum == 0 + || maxpos.lnum > sip->si_m_endpos.lnum + || (maxpos.lnum == sip->si_m_endpos.lnum +! && maxpos.col > sip->si_m_endpos.col))) +! maxpos = sip->si_m_endpos; + } + } + +--- 2594,2623 ---- + break; + + maxpos.lnum = 0; ++ maxpos_h.lnum = 0; + for ( ; i < current_state.ga_len; ++i) + { + sip = &CUR_STATE(i); + if (maxpos.lnum != 0) + { + limit_pos_zero(&sip->si_m_endpos, &maxpos); +! limit_pos_zero(&sip->si_h_endpos, &maxpos_h); + limit_pos_zero(&sip->si_eoe_pos, &maxpos); + sip->si_ends = TRUE; + } +! if (sip->si_ends && (sip->si_flags & HL_KEEPEND)) +! { +! if (maxpos.lnum == 0 + || maxpos.lnum > sip->si_m_endpos.lnum + || (maxpos.lnum == sip->si_m_endpos.lnum +! && maxpos.col > sip->si_m_endpos.col)) +! maxpos = sip->si_m_endpos; +! if (maxpos_h.lnum == 0 +! || maxpos_h.lnum > sip->si_h_endpos.lnum +! || (maxpos_h.lnum == sip->si_h_endpos.lnum +! && maxpos_h.col > sip->si_h_endpos.col)) +! maxpos_h = sip->si_h_endpos; +! } + } + } + +*** ../vim-7.0.116/src/version.c Tue Oct 3 16:30:40 2006 +--- src/version.c Tue Oct 3 16:59:50 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 117, + /**/ + +-- +For humans, honesty is a matter of degree. Engineers are always honest in +matters of technology and human relationships. That's why it's a good idea +to keep engineers away from customers, romantic interests, and other people +who can't handle the truth. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.0.118 b/7.0.118 new file mode 100644 index 0000000..01c8bca --- /dev/null +++ b/7.0.118 @@ -0,0 +1,49 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.118 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.118 +Problem: printf() does not do zero padding for strings. +Solution: Do allow zero padding for strings. +Files: src/message.c + + +*** ../vim-7.0.117/src/message.c Sun Sep 3 16:39:51 2006 +--- src/message.c Tue Oct 3 15:41:44 2006 +*************** +*** 4124,4131 **** + case 'c': + case 's': + length_modifier = '\0'; +- zero_padding = 0; /* turn zero padding off for string +- conversions */ + str_arg_l = 1; + switch (fmt_spec) + { +--- 4124,4129 ---- +*** ../vim-7.0.117/src/version.c Tue Oct 3 17:04:21 2006 +--- src/version.c Tue Oct 3 17:20:11 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 118, + /**/ + +-- +While it's true that many normal people whould prefer not to _date_ an +engineer, most normal people harbor an intense desire to _mate_ with them, +thus producing engineerlike children who will have high-paying jobs long +before losing their virginity. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.0.119 b/7.0.119 new file mode 100644 index 0000000..e0c19db --- /dev/null +++ b/7.0.119 @@ -0,0 +1,48 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.119 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.119 +Problem: When going back from Insert to Normal mode the CursorHold event + doesn't trigger. (Yakov Lerner) +Solution: Reset "did_cursorhold" when leaving Insert mode. +Files: src/edit.c + + +*** ../vim-7.0.118/src/edit.c Tue Oct 3 15:49:20 2006 +--- src/edit.c Thu Oct 5 22:26:27 2006 +*************** +*** 923,928 **** +--- 923,929 ---- + if (cmdchar != 'r' && cmdchar != 'v') + apply_autocmds(EVENT_INSERTLEAVE, NULL, NULL, + FALSE, curbuf); ++ did_cursorhold = FALSE; + #endif + return (c == Ctrl_O); + } +*** ../vim-7.0.118/src/version.c Tue Oct 3 17:21:04 2006 +--- src/version.c Fri Oct 6 20:35:45 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 119, + /**/ + +-- +The Feynman problem solving Algorithm: + 1) Write down the problem + 2) Think real hard + 3) Write down the answer + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.0.120 b/7.0.120 new file mode 100644 index 0000000..58cb1ef --- /dev/null +++ b/7.0.120 @@ -0,0 +1,64 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.120 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.120 +Problem: Crash when using CTRL-R = at the command line and entering + "getreg('=')". (James Vega) +Solution: Avoid recursiveness of evaluating the = register. +Files: src/ops.c + + +*** ../vim-7.0.119/src/ops.c Sun Jul 23 22:37:29 2006 +--- src/ops.c Fri Oct 6 21:27:40 2006 +*************** +*** 770,775 **** +--- 770,776 ---- + { + char_u *expr_copy; + char_u *rv; ++ static int nested = 0; + + if (expr_line == NULL) + return NULL; +*************** +*** 780,786 **** +--- 781,794 ---- + if (expr_copy == NULL) + return NULL; + ++ /* When we are invoked recursively limit the evaluation to 10 levels. ++ * Then return the string as-is. */ ++ if (nested >= 10) ++ return expr_copy; ++ ++ ++nested; + rv = eval_to_string(expr_copy, NULL, TRUE); ++ --nested; + vim_free(expr_copy); + return rv; + } +*** ../vim-7.0.119/src/version.c Fri Oct 6 20:39:58 2006 +--- src/version.c Fri Oct 6 21:31:56 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 120, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +16. You step out of your room and realize that your parents have moved and + you don't have a clue when it happened. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.0.121 b/7.0.121 new file mode 100644 index 0000000..42ec088 --- /dev/null +++ b/7.0.121 @@ -0,0 +1,50 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.121 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.121 +Problem: GUI: Dragging the last status line doesn't work when there is a + text tabline. (Markus Wolf) +Solution: Take the text tabline into account when deciding to start modeless + selection. +Files: src/gui.c + + +*** ../vim-7.0.120/src/gui.c Sun Sep 10 21:38:48 2006 +--- src/gui.c Sun Oct 8 12:47:04 2006 +*************** +*** 2873,2878 **** +--- 2873,2881 ---- + */ + if ((State == NORMAL || State == NORMAL_BUSY || (State & INSERT)) + && Y_2_ROW(y) >= topframe->fr_height ++ # ifdef FEAT_WINDOWS ++ + firstwin->w_winrow ++ # endif + && button != MOUSE_DRAG + # ifdef FEAT_MOUSESHAPE + && !drag_status_line +*** ../vim-7.0.120/src/version.c Fri Oct 6 23:33:22 2006 +--- src/version.c Sun Oct 8 13:55:58 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 121, + /**/ + +-- +If they don't keep on exercising their lips, he thought, their brains +start working. + -- Douglas Adams, "The Hitchhiker's Guide to the Galaxy" + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.0.122 b/7.0.122 new file mode 100644 index 0000000..ba3b35c --- /dev/null +++ b/7.0.122 @@ -0,0 +1,92 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.122 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.122 +Problem: GUI: When clearing after a bold, double-wide character half a + character may be drawn. +Solution: Check for double-wide character and redraw it. (Yukihiro Nakadaira) +Files: src/screen.c + + +*** ../vim-7.0.121/src/screen.c Thu Sep 14 21:04:09 2006 +--- src/screen.c Sat Oct 7 15:13:43 2006 +*************** +*** 5079,5093 **** + * character too. If we didn't skip any blanks above, then we + * only redraw if the character wasn't already redrawn anyway. + */ +! if (gui.in_use && (col > startCol || !redraw_this) +! # ifdef FEAT_MBYTE +! && enc_dbcs == 0 +! # endif +! ) + { + hl = ScreenAttrs[off_to]; + if (hl > HL_ALL || (hl & HL_BOLD)) +! screen_char(off_to - 1, row, col + coloff - 1); + } + #endif + screen_fill(row, row + 1, col + coloff, clear_width + coloff, +--- 5079,5116 ---- + * character too. If we didn't skip any blanks above, then we + * only redraw if the character wasn't already redrawn anyway. + */ +! if (gui.in_use && (col > startCol || !redraw_this)) + { + hl = ScreenAttrs[off_to]; + if (hl > HL_ALL || (hl & HL_BOLD)) +! { +! int prev_cells = 1; +! # ifdef FEAT_MBYTE +! if (enc_utf8) +! /* for utf-8, ScreenLines[char_offset + 1] == 0 means +! * that its width is 2. */ +! prev_cells = ScreenLines[off_to - 1] == 0 ? 2 : 1; +! else if (enc_dbcs != 0) +! { +! /* find previous character by counting from first +! * column and get its width. */ +! unsigned off = LineOffset[row]; +! +! while (off < off_to) +! { +! prev_cells = (*mb_off2cells)(off); +! off += prev_cells; +! } +! } +! +! if (enc_dbcs != 0 && prev_cells > 1) +! screen_char_2(off_to - prev_cells, row, +! col + coloff - prev_cells); +! else +! # endif +! screen_char(off_to - prev_cells, row, +! col + coloff - prev_cells); +! } + } + #endif + screen_fill(row, row + 1, col + coloff, clear_width + coloff, +*** ../vim-7.0.121/src/version.c Sun Oct 8 13:56:53 2006 +--- src/version.c Mon Oct 9 22:10:17 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 122, + /**/ + +-- +How To Keep A Healthy Level Of Insanity: +7. Finish all your sentences with "in accordance with the prophecy". + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.0.123 b/7.0.123 new file mode 100644 index 0000000..fa3a69d --- /dev/null +++ b/7.0.123 @@ -0,0 +1,112 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.123 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.123 +Problem: On SCO Openserver configure selects the wrong terminal library. +Solution: Put terminfo before the other libraries. (Roger Cornelius) + Also fix a small problem compiling on Mac without Darwin. +Files: src/configure.in, src/auto/configure + + +*** ../vim-7.0.122/src/configure.in Tue Sep 5 17:30:25 2006 +--- src/configure.in Thu Oct 5 22:01:13 2006 +*************** +*** 681,687 **** + AC_MSG_CHECKING([if -pthread should be used]) + threadsafe_flag= + thread_lib= +! if test "x$MACOSX" != "xyes"; then + test "$GCC" = yes && threadsafe_flag="-pthread" + if test "`(uname) 2>/dev/null`" = FreeBSD; then + threadsafe_flag="-D_THREAD_SAFE" +--- 681,688 ---- + AC_MSG_CHECKING([if -pthread should be used]) + threadsafe_flag= + thread_lib= +! dnl if test "x$MACOSX" != "xyes"; then +! if test "`(uname) 2>/dev/null`" != Darwin; then + test "$GCC" = yes && threadsafe_flag="-pthread" + if test "`(uname) 2>/dev/null`" = FreeBSD; then + threadsafe_flag="-D_THREAD_SAFE" +*************** +*** 2151,2158 **** + dnl Newer versions of ncurses are preferred over anything. + dnl Older versions of ncurses have bugs, get a new one! + dnl Digital Unix (OSF1) should use curses (Ronald Schild). + case "`uname -s 2>/dev/null`" in +! OSF1) tlibs="ncurses curses termlib termcap";; + *) tlibs="ncurses termlib termcap curses";; + esac + for libname in $tlibs; do +--- 2152,2160 ---- + dnl Newer versions of ncurses are preferred over anything. + dnl Older versions of ncurses have bugs, get a new one! + dnl Digital Unix (OSF1) should use curses (Ronald Schild). ++ dnl On SCO Openserver should prefer termlib (Roger Cornelius). + case "`uname -s 2>/dev/null`" in +! OSF1|SCO_SV) tlibs="ncurses curses termlib termcap";; + *) tlibs="ncurses termlib termcap curses";; + esac + for libname in $tlibs; do +*** ../vim-7.0.122/src/auto/configure Tue Sep 5 17:30:25 2006 +--- src/auto/configure Thu Oct 5 22:02:45 2006 +*************** +*** 4256,4262 **** + echo $ECHO_N "checking if -pthread should be used... $ECHO_C" >&6 + threadsafe_flag= + thread_lib= +! if test "x$MACOSX" != "xyes"; then + test "$GCC" = yes && threadsafe_flag="-pthread" + if test "`(uname) 2>/dev/null`" = FreeBSD; then + threadsafe_flag="-D_THREAD_SAFE" +--- 4256,4262 ---- + echo $ECHO_N "checking if -pthread should be used... $ECHO_C" >&6 + threadsafe_flag= + thread_lib= +! if test "`(uname) 2>/dev/null`" != Darwin; then + test "$GCC" = yes && threadsafe_flag="-pthread" + if test "`(uname) 2>/dev/null`" = FreeBSD; then + threadsafe_flag="-D_THREAD_SAFE" +*************** +*** 11555,11562 **** + else + echo "$as_me:$LINENO: result: empty: automatic terminal library selection" >&5 + echo "${ECHO_T}empty: automatic terminal library selection" >&6 +! case "`uname -s 2>/dev/null`" in +! OSF1) tlibs="ncurses curses termlib termcap";; + *) tlibs="ncurses termlib termcap curses";; + esac + for libname in $tlibs; do +--- 11555,11562 ---- + else + echo "$as_me:$LINENO: result: empty: automatic terminal library selection" >&5 + echo "${ECHO_T}empty: automatic terminal library selection" >&6 +! case "`uname -s 2>/dev/null`" in +! OSF1|SCO_SV) tlibs="ncurses curses termlib termcap";; + *) tlibs="ncurses termlib termcap curses";; + esac + for libname in $tlibs; do +*** ../vim-7.0.122/src/version.c Mon Oct 9 22:11:52 2006 +--- src/version.c Tue Oct 10 11:37:26 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 123, + /**/ + +-- +How To Keep A Healthy Level Of Insanity: +12. Sing along at the opera. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.0.124 b/7.0.124 new file mode 100644 index 0000000..418d6b9 --- /dev/null +++ b/7.0.124 @@ -0,0 +1,87 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.124 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.124 +Problem: getwinvar() obtains a dictionary with window-local variables, but + it's always for the current window. +Solution: Get the variables of the specified window. (Geoff Reedy) +Files: src/eval.c + + +*** ../vim-7.0.123/src/eval.c Tue Oct 3 14:43:31 2006 +--- src/eval.c Fri Oct 6 21:08:57 2006 +*************** +*** 10432,10451 **** + + if (win != NULL && varname != NULL) + { +! if (*varname == '&') /* window-local-option */ +! { +! /* Set curwin to be our win, temporarily. Also set curbuf, so +! * that we can get buffer-local options. */ +! oldcurwin = curwin; +! curwin = win; +! curbuf = win->w_buffer; + + get_option_tv(&varname, rettv, 1); +- +- /* restore previous notion of curwin */ +- curwin = oldcurwin; +- curbuf = curwin->w_buffer; +- } + else + { + if (*varname == NUL) +--- 10432,10445 ---- + + if (win != NULL && varname != NULL) + { +! /* Set curwin to be our win, temporarily. Also set curbuf, so +! * that we can get buffer-local options. */ +! oldcurwin = curwin; +! curwin = win; +! curbuf = win->w_buffer; + ++ if (*varname == '&') /* window-local-option */ + get_option_tv(&varname, rettv, 1); + else + { + if (*varname == NUL) +*************** +*** 10458,10463 **** +--- 10452,10461 ---- + if (v != NULL) + copy_tv(&v->di_tv, rettv); + } ++ ++ /* restore previous notion of curwin */ ++ curwin = oldcurwin; ++ curbuf = curwin->w_buffer; + } + + --emsg_off; +*** ../vim-7.0.123/src/version.c Tue Oct 10 11:41:44 2006 +--- src/version.c Tue Oct 10 12:53:15 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 124, + /**/ + +-- +How To Keep A Healthy Level Of Insanity: +14. Put mosquito netting around your work area. Play a tape of jungle + sounds all day. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.0.125 b/7.0.125 new file mode 100644 index 0000000..19441ab --- /dev/null +++ b/7.0.125 @@ -0,0 +1,72 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.125 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.125 +Problem: When "autoselect" is in the 'clipboard' option then the '< and '> + marks are set while Visual mode is still active. +Solution: Don't set the '< and '> marks when yanking the selected area for + the clipboard. +Files: src/normal.c + + +*** ../vim-7.0.124/src/normal.c Tue Aug 29 17:28:56 2006 +--- src/normal.c Sat Oct 7 14:11:26 2006 +*************** +*** 1477,1490 **** + } + else if (VIsual_active) + { +! /* Save the current VIsual area for '< and '> marks, and "gv" */ +! curbuf->b_visual.vi_start = VIsual; +! curbuf->b_visual.vi_end = curwin->w_cursor; +! curbuf->b_visual.vi_mode = VIsual_mode; +! curbuf->b_visual.vi_curswant = curwin->w_curswant; + # ifdef FEAT_EVAL +! curbuf->b_visual_mode_eval = VIsual_mode; + # endif + + /* In Select mode, a linewise selection is operated upon like a + * characterwise selection. */ +--- 1477,1493 ---- + } + else if (VIsual_active) + { +! if (!gui_yank) +! { +! /* Save the current VIsual area for '< and '> marks, and "gv" */ +! curbuf->b_visual.vi_start = VIsual; +! curbuf->b_visual.vi_end = curwin->w_cursor; +! curbuf->b_visual.vi_mode = VIsual_mode; +! curbuf->b_visual.vi_curswant = curwin->w_curswant; + # ifdef FEAT_EVAL +! curbuf->b_visual_mode_eval = VIsual_mode; + # endif ++ } + + /* In Select mode, a linewise selection is operated upon like a + * characterwise selection. */ +*** ../vim-7.0.124/src/version.c Tue Oct 10 12:56:09 2006 +--- src/version.c Tue Oct 10 13:25:27 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 125, + /**/ + +-- +How To Keep A Healthy Level Of Insanity: +15. Five days in advance, tell your friends you can't attend their + party because you're not in the mood. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.0.126 b/7.0.126 new file mode 100644 index 0000000..b6dba70 --- /dev/null +++ b/7.0.126 @@ -0,0 +1,63 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.126 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.126 +Problem: When 'formatexpr' uses setline() and later internal formatting is + used undo information is not correct. (Jiri Cerny, Benji Fisher) +Solution: Set ins_need_undo after using 'formatexpr'. +Files: src/edit.c + + +*** ../vim-7.0.125/src/edit.c Fri Oct 6 20:39:58 2006 +--- src/edit.c Tue Oct 10 12:46:04 2006 +*************** +*** 5333,5340 **** + /* Format with 'formatexpr' when it's set. Use internal formatting + * when 'formatexpr' isn't set or it returns non-zero. */ + #if defined(FEAT_EVAL) +! if (*curbuf->b_p_fex == NUL +! || fex_format(curwin->w_cursor.lnum, 1L, c) != 0) + #endif + internal_format(textwidth, second_indent, flags, c == NUL); + } +--- 5333,5348 ---- + /* Format with 'formatexpr' when it's set. Use internal formatting + * when 'formatexpr' isn't set or it returns non-zero. */ + #if defined(FEAT_EVAL) +! int do_internal = TRUE; +! +! if (*curbuf->b_p_fex != NUL) +! { +! do_internal = (fex_format(curwin->w_cursor.lnum, 1L, c) != 0); +! /* It may be required to save for undo again, e.g. when setline() +! * was called. */ +! ins_need_undo = TRUE; +! } +! if (do_internal) + #endif + internal_format(textwidth, second_indent, flags, c == NUL); + } +*** ../vim-7.0.125/src/version.c Tue Oct 10 13:27:30 2006 +--- src/version.c Tue Oct 10 15:47:20 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 126, + /**/ + +-- +How To Keep A Healthy Level Of Insanity: +16. Have your coworkers address you by your wrestling name, Rock Hard Kim. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.0.127 b/7.0.127 new file mode 100644 index 0000000..46857d7 --- /dev/null +++ b/7.0.127 @@ -0,0 +1,99 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.127 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.127 +Problem: Crash when swap files has invalid timestamp. +Solution: Check return value of ctime() for being NULL. +Files: src/memline.c + + +*** ../vim-7.0.126/src/memline.c Tue Aug 29 17:28:56 2006 +--- src/memline.c Tue Oct 10 16:19:56 2006 +*************** +*** 1633,1638 **** +--- 1633,1639 ---- + int fd; + struct block0 b0; + time_t x = (time_t)0; ++ char *p; + #ifdef UNIX + char_u uname[B0_UNAME_SIZE]; + #endif +*************** +*** 1652,1659 **** + #endif + MSG_PUTS(_(" dated: ")); + x = st.st_mtime; /* Manx C can't do &st.st_mtime */ +! MSG_PUTS(ctime(&x)); /* includes '\n' */ +! + } + + /* +--- 1653,1663 ---- + #endif + MSG_PUTS(_(" dated: ")); + x = st.st_mtime; /* Manx C can't do &st.st_mtime */ +! p = ctime(&x); /* includes '\n' */ +! if (p == NULL) +! MSG_PUTS("(invalid)\n"); +! else +! MSG_PUTS(p); + } + + /* +*************** +*** 3652,3657 **** +--- 3656,3662 ---- + { + struct stat st; + time_t x, sx; ++ char *p; + + ++no_wait_return; + (void)EMSG(_("E325: ATTENTION")); +*************** +*** 3666,3672 **** + { + MSG_PUTS(_(" dated: ")); + x = st.st_mtime; /* Manx C can't do &st.st_mtime */ +! MSG_PUTS(ctime(&x)); + if (sx != 0 && x > sx) + MSG_PUTS(_(" NEWER than swap file!\n")); + } +--- 3671,3681 ---- + { + MSG_PUTS(_(" dated: ")); + x = st.st_mtime; /* Manx C can't do &st.st_mtime */ +! p = ctime(&x); /* includes '\n' */ +! if (p == NULL) +! MSG_PUTS("(invalid)\n"); +! else +! MSG_PUTS(p); + if (sx != 0 && x > sx) + MSG_PUTS(_(" NEWER than swap file!\n")); + } +*** ../vim-7.0.126/src/version.c Tue Oct 10 15:49:41 2006 +--- src/version.c Tue Oct 10 16:18:51 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 127, + /**/ + +-- +How To Keep A Healthy Level Of Insanity: +17. When the money comes out the ATM, scream "I won!, I won! 3rd + time this week!!!!!" + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.0.128 b/7.0.128 new file mode 100644 index 0000000..72356f8 --- /dev/null +++ b/7.0.128 @@ -0,0 +1,76 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.128 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.128 +Problem: GUI: when closing gvim is cancelled because there is a changed + buffer the screen isn't updated to show the changed buffer in the + current window. (Krzysztof Kacprzak) +Solution: Redraw when closing gvim is cancelled. +Files: src/gui.c + + +*** ../vim-7.0.127/src/gui.c Sun Oct 8 13:56:53 2006 +--- src/gui.c Tue Oct 10 13:45:13 2006 +*************** +*** 637,642 **** +--- 637,643 ---- + + #if defined(FEAT_GUI_GTK) || defined(FEAT_GUI_X11) || defined(FEAT_GUI_MSWIN) \ + || defined(FEAT_GUI_PHOTON) || defined(FEAT_GUI_MAC) || defined(PROTO) ++ # define NEED_GUI_UPDATE_SCREEN 1 + /* + * Called when the GUI shell is closed by the user. If there are no changed + * files Vim exits, otherwise there will be a dialog to ask the user what to +*************** +*** 665,672 **** + + exiting = FALSE; + cmdmod = save_cmdmod; +! setcursor(); /* position cursor */ +! out_flush(); + } + #endif + +--- 666,672 ---- + + exiting = FALSE; + cmdmod = save_cmdmod; +! gui_update_screen(); /* redraw, window may show changed buffer */ + } + #endif + +*************** +*** 4823,4828 **** +--- 4823,4829 ---- + #endif + + #if defined(FIND_REPLACE_DIALOG) || defined(FEAT_SUN_WORKSHOP) \ ++ || defined(NEED_GUI_UPDATE_SCREEN) \ + || defined(PROTO) + /* + * Update the current window and the screen. +*** ../vim-7.0.127/src/version.c Tue Oct 10 16:20:51 2006 +--- src/version.c Tue Oct 10 17:35:42 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 128, + /**/ + +-- +How To Keep A Healthy Level Of Insanity: +18. When leaving the zoo, start running towards the parking lot, + yelling "run for your lives, they're loose!!" + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.0.129 b/7.0.129 new file mode 100644 index 0000000..0659bde --- /dev/null +++ b/7.0.129 @@ -0,0 +1,86 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.129 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.129 +Problem: GTK GUI: the GTK file dialog can't handle a relative path. +Solution: Make the initial directory a full path before passing it to GTK. + (James Vega) Also postpone adding the default file name until + after setting the directory. +Files: src/gui_gtk.c + + +*** ../vim-7.0.128/src/gui_gtk.c Tue Aug 29 17:28:56 2006 +--- src/gui_gtk.c Tue Oct 10 18:16:00 2006 +*************** +*** 1275,1292 **** + title = CONVERT_TO_UTF8(title); + # endif + +! /* Concatenate "initdir" and "dflt". */ + if (initdir == NULL || *initdir == NUL) + mch_dirname(dirbuf, MAXPATHL); +! else if (STRLEN(initdir) + 2 < MAXPATHL) +! STRCPY(dirbuf, initdir); +! else + dirbuf[0] = NUL; + /* Always need a trailing slash for a directory. */ + add_pathsep(dirbuf); +- if (dflt != NULL && *dflt != NUL +- && STRLEN(dirbuf) + 2 + STRLEN(dflt) < MAXPATHL) +- STRCAT(dirbuf, dflt); + + /* If our pointer is currently hidden, then we should show it. */ + gui_mch_mousehide(FALSE); +--- 1275,1287 ---- + title = CONVERT_TO_UTF8(title); + # endif + +! /* GTK has a bug, it only works with an absolute path. */ + if (initdir == NULL || *initdir == NUL) + mch_dirname(dirbuf, MAXPATHL); +! else if (vim_FullName(initdir, dirbuf, MAXPATHL - 2, FALSE) == FAIL) + dirbuf[0] = NUL; + /* Always need a trailing slash for a directory. */ + add_pathsep(dirbuf); + + /* If our pointer is currently hidden, then we should show it. */ + gui_mch_mousehide(FALSE); +*************** +*** 1340,1345 **** +--- 1335,1345 ---- + } + else + gtk_window_set_title(GTK_WINDOW(gui.filedlg), (const gchar *)title); ++ ++ /* Concatenate "initdir" and "dflt". */ ++ if (dflt != NULL && *dflt != NUL ++ && STRLEN(dirbuf) + 2 + STRLEN(dflt) < MAXPATHL) ++ STRCAT(dirbuf, dflt); + + gtk_file_selection_set_filename(GTK_FILE_SELECTION(gui.filedlg), + (const gchar *)dirbuf); +*** ../vim-7.0.128/src/version.c Tue Oct 10 17:36:50 2006 +--- src/version.c Tue Oct 10 18:25:11 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 129, + /**/ + +-- +I'm not familiar with this proof, but I'm aware of a significant +following of toddlers who believe that peanut butter is the solution +to all of life's problems... -- Tim Hammerquist + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.0.131 b/7.0.131 new file mode 100644 index 0000000..d43989f --- /dev/null +++ b/7.0.131 @@ -0,0 +1,77 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.131 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.131 +Problem: Win32: "vim -r" does not list all the swap files. +Solution: Also check for swap files starting with a dot. +Files: src/memline.c + + +*** ../vim-7.0.130/src/memline.c Tue Oct 10 16:20:51 2006 +--- src/memline.c Tue Oct 10 21:54:21 2006 +*************** +*** 1400,1407 **** + names[0] = vim_strsave((char_u *)"*.sw?"); + # endif + #endif +! #ifdef UNIX +! /* for Unix names starting with a dot are special */ + names[1] = vim_strsave((char_u *)".*.sw?"); + names[2] = vim_strsave((char_u *)".sw?"); + num_names = 3; +--- 1400,1408 ---- + names[0] = vim_strsave((char_u *)"*.sw?"); + # endif + #endif +! #if defined(UNIX) || defined(WIN3264) +! /* For Unix names starting with a dot are special. MS-Windows +! * supports this too, on some file systems. */ + names[1] = vim_strsave((char_u *)".*.sw?"); + names[2] = vim_strsave((char_u *)".sw?"); + num_names = 3; +*************** +*** 1430,1437 **** + names[0] = concat_fnames(dir_name, (char_u *)"*.sw?", TRUE); + # endif + #endif +! #ifdef UNIX +! /* for Unix names starting with a dot are special */ + names[1] = concat_fnames(dir_name, (char_u *)".*.sw?", TRUE); + names[2] = concat_fnames(dir_name, (char_u *)".sw?", TRUE); + num_names = 3; +--- 1431,1439 ---- + names[0] = concat_fnames(dir_name, (char_u *)"*.sw?", TRUE); + # endif + #endif +! #if defined(UNIX) || defined(WIN3264) +! /* For Unix names starting with a dot are special. MS-Windows +! * supports this too, on some file systems. */ + names[1] = concat_fnames(dir_name, (char_u *)".*.sw?", TRUE); + names[2] = concat_fnames(dir_name, (char_u *)".sw?", TRUE); + num_names = 3; +*** ../vim-7.0.130/src/version.c Tue Oct 10 18:43:50 2006 +--- src/version.c Tue Oct 10 21:55:02 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 131, + /**/ + +-- +Apparently, 1 in 5 people in the world are Chinese. And there are 5 +people in my family, so it must be one of them. It's either my mum +or my dad. Or my older brother Colin. Or my younger brother +Ho-Cha-Chu. But I think it's Colin. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.0.133 b/7.0.133 new file mode 100644 index 0000000..cd15433 --- /dev/null +++ b/7.0.133 @@ -0,0 +1,93 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.133 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.133 +Problem: When searching included files messages are added to the history. +Solution: Set msg_hist_off for messages about scanning included files. + Set msg_silent to avoid message about wrapping around. +Files: src/edit.c, src/globals.h, src/message.c, src/search.c + + +*** ../vim-7.0.132/src/edit.c Tue Oct 10 15:49:41 2006 +--- src/edit.c Sat Oct 14 14:22:09 2006 +*************** +*** 3909,3914 **** +--- 3909,3916 ---- + { + int flags = 0; + ++ ++msg_silent; /* Don't want messages for wrapscan. */ ++ + /* ctrl_x_mode == CTRL_X_WHOLE_LINE || word-wise search that + * has added a word that was at the beginning of the line */ + if ( ctrl_x_mode == CTRL_X_WHOLE_LINE +*************** +*** 3920,3925 **** +--- 3922,3928 ---- + compl_direction, + compl_pattern, 1L, SEARCH_KEEP + SEARCH_NFMSG, + RE_LAST, (linenr_T)0); ++ --msg_silent; + if (!compl_started) + { + /* set "compl_started" even on fail */ +*** ../vim-7.0.132/src/globals.h Tue Sep 5 12:57:14 2006 +--- src/globals.h Sat Oct 14 14:05:02 2006 +*************** +*** 166,171 **** +--- 166,172 ---- + EXTERN int emsg_off INIT(= 0); /* don't display errors for now, + unless 'debug' is set. */ + EXTERN int info_message INIT(= FALSE); /* printing informative message */ ++ EXTERN int msg_hist_off INIT(= FALSE); /* don't add messages to history */ + #ifdef FEAT_EVAL + EXTERN int emsg_skip INIT(= 0); /* don't display errors for + expression that is skipped */ +*** ../vim-7.0.132/src/message.c Tue Oct 3 17:21:04 2006 +--- src/message.c Sat Oct 14 14:03:58 2006 +*************** +*** 53,59 **** + static struct msg_hist *first_msg_hist = NULL; + static struct msg_hist *last_msg_hist = NULL; + static int msg_hist_len = 0; +- static int msg_hist_off = FALSE; /* don't add messages to history */ + + /* + * When writing messages to the screen, there are many different situations. +--- 53,58 ---- +*** ../vim-7.0.132/src/search.c Tue Aug 29 18:01:39 2006 +--- src/search.c Sat Oct 14 14:15:26 2006 +*************** +*** 4688,4693 **** +--- 4688,4694 ---- + #ifdef FEAT_INS_EXPAND + if (action == ACTION_EXPAND) + { ++ msg_hist_off = TRUE; /* reset in msg_trunc_attr() */ + vim_snprintf((char*)IObuff, IOSIZE, + _("Scanning included file: %s"), + (char *)new_fname); +*** ../vim-7.0.132/src/version.c Thu Oct 12 21:15:04 2006 +--- src/version.c Sat Oct 14 14:32:31 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 133, + /**/ + +-- +You have the right to remain silent. Anything you say will be +misquoted, then used against you. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.0.134 b/7.0.134 new file mode 100644 index 0000000..8eed9c5 --- /dev/null +++ b/7.0.134 @@ -0,0 +1,83 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.134 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.134 +Problem: Crash when comparing a recursively looped List or Dictionary. +Solution: Limit recursiveness for comparing to 1000. +Files: src/eval.c + + +*** ../vim-7.0.133/src/eval.c Tue Oct 10 12:56:09 2006 +--- src/eval.c Sun Oct 15 15:08:13 2006 +*************** +*** 5520,5538 **** + { + char_u buf1[NUMBUFLEN], buf2[NUMBUFLEN]; + char_u *s1, *s2; + +! if (tv1->v_type != tv2->v_type) + return FALSE; + + switch (tv1->v_type) + { + case VAR_LIST: +! /* recursive! */ +! return list_equal(tv1->vval.v_list, tv2->vval.v_list, ic); + + case VAR_DICT: +! /* recursive! */ +! return dict_equal(tv1->vval.v_dict, tv2->vval.v_dict, ic); + + case VAR_FUNC: + return (tv1->vval.v_string != NULL +--- 5520,5546 ---- + { + char_u buf1[NUMBUFLEN], buf2[NUMBUFLEN]; + char_u *s1, *s2; ++ static int recursive = 0; /* cach recursive loops */ ++ int r; + +! /* Catch lists and dicts that have an endless loop by limiting +! * recursiveness to 1000. */ +! if (tv1->v_type != tv2->v_type || recursive >= 1000) + return FALSE; + + switch (tv1->v_type) + { + case VAR_LIST: +! ++recursive; +! r = list_equal(tv1->vval.v_list, tv2->vval.v_list, ic); +! --recursive; +! return r; + + case VAR_DICT: +! ++recursive; +! r = dict_equal(tv1->vval.v_dict, tv2->vval.v_dict, ic); +! --recursive; +! return r; + + case VAR_FUNC: + return (tv1->vval.v_string != NULL +*** ../vim-7.0.133/src/version.c Sat Oct 14 14:33:21 2006 +--- src/version.c Sun Oct 15 15:03:30 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 134, + /**/ + +-- +It was recently discovered that research causes cancer in rats. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.0.135 b/7.0.135 new file mode 100644 index 0000000..3663d67 --- /dev/null +++ b/7.0.135 @@ -0,0 +1,362 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.135 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.135 +Problem: Crash when garbage collecting list or dict with loop. +Solution: Don't use DEL_REFCOUNT but don't recurse into Lists and + Dictionaries when freeing them in the garbage collector. + Also add allocated Dictionaries to the list of Dictionaries to + avoid leaking memory. +Files: src/eval.c, src/proto/eval.pro, src/tag.c + + +*** ../vim-7.0.134/src/eval.c Sun Oct 15 15:10:08 2006 +--- src/eval.c Sun Oct 15 22:30:09 2006 +*************** +*** 191,198 **** + #define FC_RANGE 2 /* function accepts range */ + #define FC_DICT 4 /* Dict function, uses "self" */ + +- #define DEL_REFCOUNT 999999 /* list/dict is being deleted */ +- + /* + * All user-defined functions are found in this hashtable. + */ +--- 191,196 ---- +*************** +*** 435,441 **** + static void set_ref_in_list __ARGS((list_T *l, int copyID)); + static void set_ref_in_item __ARGS((typval_T *tv, int copyID)); + static void dict_unref __ARGS((dict_T *d)); +! static void dict_free __ARGS((dict_T *d)); + static dictitem_T *dictitem_alloc __ARGS((char_u *key)); + static dictitem_T *dictitem_copy __ARGS((dictitem_T *org)); + static void dictitem_remove __ARGS((dict_T *dict, dictitem_T *item)); +--- 433,439 ---- + static void set_ref_in_list __ARGS((list_T *l, int copyID)); + static void set_ref_in_item __ARGS((typval_T *tv, int copyID)); + static void dict_unref __ARGS((dict_T *d)); +! static void dict_free __ARGS((dict_T *d, int recurse)); + static dictitem_T *dictitem_alloc __ARGS((char_u *key)); + static dictitem_T *dictitem_copy __ARGS((dictitem_T *org)); + static void dictitem_remove __ARGS((dict_T *dict, dictitem_T *item)); +*************** +*** 4899,4905 **** + { + if (list_append_tv(l, &item->li_tv) == FAIL) + { +! list_free(l); + return FAIL; + } + item = item->li_next; +--- 4897,4903 ---- + { + if (list_append_tv(l, &item->li_tv) == FAIL) + { +! list_free(l, TRUE); + return FAIL; + } + item = item->li_next; +*************** +*** 5299,5305 **** + EMSG2(_("E697: Missing end of List ']': %s"), *arg); + failret: + if (evaluate) +! list_free(l); + return FAIL; + } + +--- 5297,5303 ---- + EMSG2(_("E697: Missing end of List ']': %s"), *arg); + failret: + if (evaluate) +! list_free(l, TRUE); + return FAIL; + } + +*************** +*** 5363,5370 **** + list_unref(l) + list_T *l; + { +! if (l != NULL && l->lv_refcount != DEL_REFCOUNT && --l->lv_refcount <= 0) +! list_free(l); + } + + /* +--- 5361,5368 ---- + list_unref(l) + list_T *l; + { +! if (l != NULL && --l->lv_refcount <= 0) +! list_free(l, TRUE); + } + + /* +*************** +*** 5372,5385 **** + * Ignores the reference count. + */ + void +! list_free(l) +! list_T *l; + { + listitem_T *item; + +- /* Avoid that recursive reference to the list frees us again. */ +- l->lv_refcount = DEL_REFCOUNT; +- + /* Remove the list from the list of lists for garbage collection. */ + if (l->lv_used_prev == NULL) + first_list = l->lv_used_next; +--- 5370,5381 ---- + * Ignores the reference count. + */ + void +! list_free(l, recurse) +! list_T *l; +! int recurse; /* Free Lists and Dictionaries recursively. */ + { + listitem_T *item; + + /* Remove the list from the list of lists for garbage collection. */ + if (l->lv_used_prev == NULL) + first_list = l->lv_used_next; +*************** +*** 5392,5398 **** + { + /* Remove the item before deleting it. */ + l->lv_first = item->li_next; +! listitem_free(item); + } + vim_free(l); + } +--- 5388,5397 ---- + { + /* Remove the item before deleting it. */ + l->lv_first = item->li_next; +! if (recurse || (item->li_tv.v_type != VAR_LIST +! && item->li_tv.v_type != VAR_DICT)) +! clear_tv(&item->li_tv); +! vim_free(item); + } + vim_free(l); + } +*************** +*** 6113,6119 **** + for (dd = first_dict; dd != NULL; ) + if (dd->dv_copyID != copyID) + { +! dict_free(dd); + did_free = TRUE; + + /* restart, next dict may also have been freed */ +--- 6118,6127 ---- + for (dd = first_dict; dd != NULL; ) + if (dd->dv_copyID != copyID) + { +! /* Free the Dictionary and ordinary items it contains, but don't +! * recurse into Lists and Dictionaries, they will be in the list +! * of dicts or list of lists. */ +! dict_free(dd, FALSE); + did_free = TRUE; + + /* restart, next dict may also have been freed */ +*************** +*** 6130,6136 **** + for (ll = first_list; ll != NULL; ) + if (ll->lv_copyID != copyID && ll->lv_watch == NULL) + { +! list_free(ll); + did_free = TRUE; + + /* restart, next list may also have been freed */ +--- 6138,6147 ---- + for (ll = first_list; ll != NULL; ) + if (ll->lv_copyID != copyID && ll->lv_watch == NULL) + { +! /* Free the List and ordinary items it contains, but don't recurse +! * into Lists and Dictionaries, they will be in the list of dicts +! * or list of lists. */ +! list_free(ll, FALSE); + did_free = TRUE; + + /* restart, next list may also have been freed */ +*************** +*** 6223,6233 **** + d = (dict_T *)alloc(sizeof(dict_T)); + if (d != NULL) + { +! /* Add the list to the hashtable for garbage collection. */ + if (first_dict != NULL) + first_dict->dv_used_prev = d; + d->dv_used_next = first_dict; + d->dv_used_prev = NULL; + + hash_init(&d->dv_hashtab); + d->dv_lock = 0; +--- 6234,6245 ---- + d = (dict_T *)alloc(sizeof(dict_T)); + if (d != NULL) + { +! /* Add the list to the list of dicts for garbage collection. */ + if (first_dict != NULL) + first_dict->dv_used_prev = d; + d->dv_used_next = first_dict; + d->dv_used_prev = NULL; ++ first_dict = d; + + hash_init(&d->dv_hashtab); + d->dv_lock = 0; +*************** +*** 6245,6252 **** + dict_unref(d) + dict_T *d; + { +! if (d != NULL && d->dv_refcount != DEL_REFCOUNT && --d->dv_refcount <= 0) +! dict_free(d); + } + + /* +--- 6257,6264 ---- + dict_unref(d) + dict_T *d; + { +! if (d != NULL && --d->dv_refcount <= 0) +! dict_free(d, TRUE); + } + + /* +*************** +*** 6254,6269 **** + * Ignores the reference count. + */ + static void +! dict_free(d) +! dict_T *d; + { + int todo; + hashitem_T *hi; + dictitem_T *di; + +- /* Avoid that recursive reference to the dict frees us again. */ +- d->dv_refcount = DEL_REFCOUNT; +- + /* Remove the dict from the list of dicts for garbage collection. */ + if (d->dv_used_prev == NULL) + first_dict = d->dv_used_next; +--- 6266,6279 ---- + * Ignores the reference count. + */ + static void +! dict_free(d, recurse) +! dict_T *d; +! int recurse; /* Free Lists and Dictionaries recursively. */ + { + int todo; + hashitem_T *hi; + dictitem_T *di; + + /* Remove the dict from the list of dicts for garbage collection. */ + if (d->dv_used_prev == NULL) + first_dict = d->dv_used_next; +*************** +*** 6283,6289 **** + * something recursive causing trouble. */ + di = HI2DI(hi); + hash_remove(&d->dv_hashtab, hi); +! dictitem_free(di); + --todo; + } + } +--- 6293,6302 ---- + * something recursive causing trouble. */ + di = HI2DI(hi); + hash_remove(&d->dv_hashtab, hi); +! if (recurse || (di->di_tv.v_type != VAR_LIST +! && di->di_tv.v_type != VAR_DICT)) +! clear_tv(&di->di_tv); +! vim_free(di); + --todo; + } + } +*************** +*** 6734,6740 **** + EMSG2(_("E723: Missing end of Dictionary '}': %s"), *arg); + failret: + if (evaluate) +! dict_free(d); + return FAIL; + } + +--- 6747,6753 ---- + EMSG2(_("E723: Missing end of Dictionary '}': %s"), *arg); + failret: + if (evaluate) +! dict_free(d, TRUE); + return FAIL; + } + +*** ../vim-7.0.134/src/proto/eval.pro Fri Mar 24 23:16:28 2006 +--- src/proto/eval.pro Sun Oct 15 22:08:11 2006 +*************** +*** 44,50 **** + extern char_u *get_user_var_name __ARGS((expand_T *xp, int idx)); + extern list_T *list_alloc __ARGS((void)); + extern void list_unref __ARGS((list_T *l)); +! extern void list_free __ARGS((list_T *l)); + extern dictitem_T *dict_lookup __ARGS((hashitem_T *hi)); + extern int list_append_dict __ARGS((list_T *list, dict_T *dict)); + extern int garbage_collect __ARGS((void)); +--- 44,50 ---- + extern char_u *get_user_var_name __ARGS((expand_T *xp, int idx)); + extern list_T *list_alloc __ARGS((void)); + extern void list_unref __ARGS((list_T *l)); +! extern void list_free __ARGS((list_T *l, int recurse)); + extern dictitem_T *dict_lookup __ARGS((hashitem_T *hi)); + extern int list_append_dict __ARGS((list_T *list, dict_T *dict)); + extern int garbage_collect __ARGS((void)); +*** ../vim-7.0.134/src/tag.c Sun Sep 10 13:56:06 2006 +--- src/tag.c Sun Oct 15 21:44:56 2006 +*************** +*** 911,917 **** + + set_errorlist(curwin, list, ' '); + +! list_free(list); + + cur_match = 0; /* Jump to the first tag */ + } +--- 911,917 ---- + + set_errorlist(curwin, list, ' '); + +! list_free(list, TRUE); + + cur_match = 0; /* Jump to the first tag */ + } +*** ../vim-7.0.134/src/version.c Sun Oct 15 15:10:08 2006 +--- src/version.c Sun Oct 15 22:01:53 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 135, + /**/ + +-- +Well, you come from nothing, you go back to nothing... What have you +lost? Nothing! + -- Monty Python: The life of Brian + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.0.136 b/7.0.136 new file mode 100644 index 0000000..75842f4 --- /dev/null +++ b/7.0.136 @@ -0,0 +1,54 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.136 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.136 +Problem: Using "O" while matching parens are highlighted may not remove the + highlighting. (Ilya Bobir) +Solution: Also trigger CursorMoved when a line is inserted under the cursor. +Files: src/misc1.c + + +*** ../vim-7.0.135/src/misc1.c Fri Sep 15 20:17:49 2006 +--- src/misc1.c Tue Oct 17 11:11:42 2006 +*************** +*** 2842,2848 **** + + #ifdef FEAT_AUTOCMD + /* when the cursor line is changed always trigger CursorMoved */ +! if (lnum <= curwin->w_cursor.lnum && lnume > curwin->w_cursor.lnum) + last_cursormoved.lnum = 0; + #endif + } +--- 2842,2849 ---- + + #ifdef FEAT_AUTOCMD + /* when the cursor line is changed always trigger CursorMoved */ +! if (lnum <= curwin->w_cursor.lnum +! && lnume + (xtra < 0 ? -xtra : xtra) > curwin->w_cursor.lnum) + last_cursormoved.lnum = 0; + #endif + } +*** ../vim-7.0.135/src/version.c Sun Oct 15 22:38:41 2006 +--- src/version.c Tue Oct 17 11:10:21 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 136, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +46. Your wife makes a new rule: "The computer cannot come to bed." + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.0.137 b/7.0.137 new file mode 100644 index 0000000..83296ae --- /dev/null +++ b/7.0.137 @@ -0,0 +1,70 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.137 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.137 +Problem: Configure check for big features is wrong. +Solution: Change "==" to "=". (Martti Kuparinen) +Files: src/auto/configure, src/configure.in + + +*** ../vim-7.0.136/src/auto/configure Tue Oct 10 11:40:53 2006 +--- src/auto/configure Tue Oct 17 11:41:59 2006 +*************** +*** 15302,15308 **** + && test "x$GUITYPE" != "xCARBONGUI"; then + echo "$as_me:$LINENO: checking whether we need -framework Carbon" >&5 + echo $ECHO_N "checking whether we need -framework Carbon... $ECHO_C" >&6 +! if test "x$enable_multibyte" = "xyes" || test "x$features" == "xbig" \ + || test "x$features" = "xhuge"; then + LIBS="$LIBS -framework Carbon" + echo "$as_me:$LINENO: result: yes" >&5 +--- 15302,15308 ---- + && test "x$GUITYPE" != "xCARBONGUI"; then + echo "$as_me:$LINENO: checking whether we need -framework Carbon" >&5 + echo $ECHO_N "checking whether we need -framework Carbon... $ECHO_C" >&6 +! if test "x$enable_multibyte" = "xyes" || test "x$features" = "xbig" \ + || test "x$features" = "xhuge"; then + LIBS="$LIBS -framework Carbon" + echo "$as_me:$LINENO: result: yes" >&5 +*** ../vim-7.0.136/src/configure.in Tue Oct 10 11:40:53 2006 +--- src/configure.in Tue Oct 17 11:40:59 2006 +*************** +*** 2838,2844 **** + && test "x$GUITYPE" != "xCARBONGUI"; then + AC_MSG_CHECKING(whether we need -framework Carbon) + dnl check for MACOSX without Carbon GUI, but with FEAT_MBYTE +! if test "x$enable_multibyte" = "xyes" || test "x$features" == "xbig" \ + || test "x$features" = "xhuge"; then + LIBS="$LIBS -framework Carbon" + AC_MSG_RESULT(yes) +--- 2838,2844 ---- + && test "x$GUITYPE" != "xCARBONGUI"; then + AC_MSG_CHECKING(whether we need -framework Carbon) + dnl check for MACOSX without Carbon GUI, but with FEAT_MBYTE +! if test "x$enable_multibyte" = "xyes" || test "x$features" = "xbig" \ + || test "x$features" = "xhuge"; then + LIBS="$LIBS -framework Carbon" + AC_MSG_RESULT(yes) +*** ../vim-7.0.136/src/version.c Tue Oct 17 11:12:28 2006 +--- src/version.c Tue Oct 17 11:49:14 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 137, + /**/ + +-- +CVS sux, men don't like commitment + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.0.139 b/7.0.139 new file mode 100644 index 0000000..89a91f5 --- /dev/null +++ b/7.0.139 @@ -0,0 +1,79 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.139 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.139 +Problem: Using CTRL-PageUp or CTRL-PageDown in Insert mode to go to another + tab page does not prepare for undo properly. (Stefano Zacchiroli) +Solution: Call start_arrow() before switching tab page. +Files: src/edit.c + + +*** ../vim-7.0.138/src/edit.c Sat Oct 14 14:33:21 2006 +--- src/edit.c Mon Oct 16 21:28:05 2006 +*************** +*** 8822,8828 **** + if (mod_mask & MOD_MASK_CTRL) + { + /* : tab page back */ +! goto_tabpage(-1); + return; + } + #endif +--- 8822,8832 ---- + if (mod_mask & MOD_MASK_CTRL) + { + /* : tab page back */ +! if (first_tabpage->tp_next != NULL) +! { +! start_arrow(&curwin->w_cursor); +! goto_tabpage(-1); +! } + return; + } + #endif +*************** +*** 8881,8887 **** + if (mod_mask & MOD_MASK_CTRL) + { + /* : tab page forward */ +! goto_tabpage(0); + return; + } + #endif +--- 8885,8895 ---- + if (mod_mask & MOD_MASK_CTRL) + { + /* : tab page forward */ +! if (first_tabpage->tp_next != NULL) +! { +! start_arrow(&curwin->w_cursor); +! goto_tabpage(0); +! } + return; + } + #endif +*** ../vim-7.0.138/src/version.c Tue Oct 17 12:53:31 2006 +--- src/version.c Tue Oct 17 13:38:27 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 139, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +53. To find out what time it is, you send yourself an e-mail and check the + "Date:" field. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.0.140 b/7.0.140 new file mode 100644 index 0000000..39b629e --- /dev/null +++ b/7.0.140 @@ -0,0 +1,82 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.140 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.140 (after 7.0.134) +Problem: Comparing recursively looped List or Dictionary doesn't work well. +Solution: Detect comparing a List or Dictionary with itself. +Files: src/eval.c + + +*** ../vim-7.0.139/src/eval.c Sun Oct 15 22:38:41 2006 +--- src/eval.c Sun Oct 15 22:30:09 2006 +*************** +*** 5451,5456 **** +--- 5451,5458 ---- + { + listitem_T *item1, *item2; + ++ if (l1 == l2) ++ return TRUE; + if (list_len(l1) != list_len(l2)) + return FALSE; + +*************** +*** 5487,5492 **** +--- 5489,5496 ---- + dictitem_T *item2; + int todo; + ++ if (d1 == d2) ++ return TRUE; + if (dict_len(d1) != dict_len(d2)) + return FALSE; + +*************** +*** 5522,5531 **** + static int recursive = 0; /* cach recursive loops */ + int r; + +! /* Catch lists and dicts that have an endless loop by limiting +! * recursiveness to 1000. */ +! if (tv1->v_type != tv2->v_type || recursive >= 1000) + return FALSE; + + switch (tv1->v_type) + { +--- 5526,5537 ---- + static int recursive = 0; /* cach recursive loops */ + int r; + +! if (tv1->v_type != tv2->v_type) + return FALSE; ++ /* Catch lists and dicts that have an endless loop by limiting ++ * recursiveness to 1000. We guess they are equal then. */ ++ if (recursive >= 1000) ++ return TRUE; + + switch (tv1->v_type) + { +*** ../vim-7.0.139/src/version.c Tue Oct 17 13:39:36 2006 +--- src/version.c Tue Oct 17 15:15:04 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 140, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +54. You start tilting your head sideways to smile. :-) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.0.141 b/7.0.141 new file mode 100644 index 0000000..a8b4f0b --- /dev/null +++ b/7.0.141 @@ -0,0 +1,210 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.141 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.141 +Problem: When pasting a while line on the command line an extra CR is added + literally. +Solution: Don't add the trailing CR when pasting with the mouse. +Files: src/ex_getln.c, src/proto/ops.pro, src/ops.c + + +*** ../vim-7.0.140/src/ex_getln.c Thu Sep 14 11:27:12 2006 +--- src/ex_getln.c Sun Oct 15 16:17:20 2006 +*************** +*** 86,92 **** + static void draw_cmdline __ARGS((int start, int len)); + static void save_cmdline __ARGS((struct cmdline_info *ccp)); + static void restore_cmdline __ARGS((struct cmdline_info *ccp)); +! static int cmdline_paste __ARGS((int regname, int literally)); + #if defined(FEAT_XIM) && defined(FEAT_GUI_GTK) + static void redrawcmd_preedit __ARGS((void)); + #endif +--- 86,92 ---- + static void draw_cmdline __ARGS((int start, int len)); + static void save_cmdline __ARGS((struct cmdline_info *ccp)); + static void restore_cmdline __ARGS((struct cmdline_info *ccp)); +! static int cmdline_paste __ARGS((int regname, int literally, int remcr)); + #if defined(FEAT_XIM) && defined(FEAT_GUI_GTK) + static void redrawcmd_preedit __ARGS((void)); + #endif +*************** +*** 1116,1122 **** + #endif + if (c != ESC) /* use ESC to cancel inserting register */ + { +! cmdline_paste(c, i == Ctrl_R); + + #ifdef FEAT_EVAL + /* When there was a serious error abort getting the +--- 1116,1122 ---- + #endif + if (c != ESC) /* use ESC to cancel inserting register */ + { +! cmdline_paste(c, i == Ctrl_R, FALSE); + + #ifdef FEAT_EVAL + /* When there was a serious error abort getting the +*************** +*** 1231,1246 **** + goto cmdline_not_changed; /* Ignore mouse */ + # ifdef FEAT_CLIPBOARD + if (clip_star.available) +! cmdline_paste('*', TRUE); + else + # endif +! cmdline_paste(0, TRUE); + redrawcmd(); + goto cmdline_changed; + + # ifdef FEAT_DND + case K_DROP: +! cmdline_paste('~', TRUE); + redrawcmd(); + goto cmdline_changed; + # endif +--- 1231,1246 ---- + goto cmdline_not_changed; /* Ignore mouse */ + # ifdef FEAT_CLIPBOARD + if (clip_star.available) +! cmdline_paste('*', TRUE, TRUE); + else + # endif +! cmdline_paste(0, TRUE, TRUE); + redrawcmd(); + goto cmdline_changed; + + # ifdef FEAT_DND + case K_DROP: +! cmdline_paste('~', TRUE, FALSE); + redrawcmd(); + goto cmdline_changed; + # endif +*************** +*** 2890,2898 **** + * return FAIL for failure, OK otherwise + */ + static int +! cmdline_paste(regname, literally) + int regname; + int literally; /* Insert text literally instead of "as typed" */ + { + long i; + char_u *arg; +--- 2890,2899 ---- + * return FAIL for failure, OK otherwise + */ + static int +! cmdline_paste(regname, literally, remcr) + int regname; + int literally; /* Insert text literally instead of "as typed" */ ++ int remcr; /* remove trailing CR */ + { + long i; + char_u *arg; +*************** +*** 2968,2974 **** + return OK; + } + +! return cmdline_paste_reg(regname, literally); + } + + /* +--- 2969,2975 ---- + return OK; + } + +! return cmdline_paste_reg(regname, literally, remcr); + } + + /* +*** ../vim-7.0.140/src/proto/ops.pro Sun Apr 30 20:25:07 2006 +--- src/proto/ops.pro Tue Oct 17 16:24:08 2006 +*************** +*** 20,26 **** + extern int do_execreg __ARGS((int regname, int colon, int addcr)); + extern int insert_reg __ARGS((int regname, int literally)); + extern int get_spec_reg __ARGS((int regname, char_u **argp, int *allocated, int errmsg)); +! extern int cmdline_paste_reg __ARGS((int regname, int literally)); + extern void adjust_clip_reg __ARGS((int *rp)); + extern int op_delete __ARGS((oparg_T *oap)); + extern int op_replace __ARGS((oparg_T *oap, int c)); +--- 20,26 ---- + extern int do_execreg __ARGS((int regname, int colon, int addcr)); + extern int insert_reg __ARGS((int regname, int literally)); + extern int get_spec_reg __ARGS((int regname, char_u **argp, int *allocated, int errmsg)); +! extern int cmdline_paste_reg __ARGS((int regname, int literally, int remcr)); + extern void adjust_clip_reg __ARGS((int *rp)); + extern int op_delete __ARGS((oparg_T *oap)); + extern int op_replace __ARGS((oparg_T *oap, int c)); +*** ../vim-7.0.140/src/ops.c Fri Oct 6 23:33:22 2006 +--- src/ops.c Sun Oct 15 16:43:54 2006 +*************** +*** 1480,1488 **** + * return FAIL for failure, OK otherwise + */ + int +! cmdline_paste_reg(regname, literally) + int regname; + int literally; /* Insert text literally instead of "as typed" */ + { + long i; + +--- 1481,1490 ---- + * return FAIL for failure, OK otherwise + */ + int +! cmdline_paste_reg(regname, literally, remcr) + int regname; + int literally; /* Insert text literally instead of "as typed" */ ++ int remcr; /* don't add trailing CR */ + { + long i; + +*************** +*** 1494,1501 **** + { + cmdline_paste_str(y_current->y_array[i], literally); + +! /* insert ^M between lines and after last line if type is MLINE */ +! if (y_current->y_type == MLINE || i < y_current->y_size - 1) + cmdline_paste_str((char_u *)"\r", literally); + + /* Check for CTRL-C, in case someone tries to paste a few thousand +--- 1496,1508 ---- + { + cmdline_paste_str(y_current->y_array[i], literally); + +! /* Insert ^M between lines and after last line if type is MLINE. +! * Don't do this when "remcr" is TRUE and the next line is empty. */ +! if (y_current->y_type == MLINE +! || (i < y_current->y_size - 1 +! && !(remcr +! && i == y_current->y_size - 2 +! && *y_current->y_array[i + 1] == NUL))) + cmdline_paste_str((char_u *)"\r", literally); + + /* Check for CTRL-C, in case someone tries to paste a few thousand +*** ../vim-7.0.140/src/version.c Tue Oct 17 15:17:41 2006 +--- src/version.c Tue Oct 17 16:22:55 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 141, + /**/ + +-- +ERROR 047: Keyboard not found. Press RETURN to continue. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.0.142 b/7.0.142 new file mode 100644 index 0000000..0f82a31 --- /dev/null +++ b/7.0.142 @@ -0,0 +1,70 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.142 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.142 +Problem: Using the middle mouse button in Select mode to paste text results + in an extra "y". (Kriton Kyrimis) +Solution: Let the middle mouse button replace the selected text with the + contents of the clipboard. +Files: src/normal.c + + +*** ../vim-7.0.141/src/normal.c Tue Oct 10 13:27:30 2006 +--- src/normal.c Tue Oct 17 16:54:57 2006 +*************** +*** 2380,2390 **** + /* + * If visual was active, yank the highlighted text and put it + * before the mouse pointer position. + */ + if (VIsual_active) + { +! stuffcharReadbuff('y'); +! stuffcharReadbuff(K_MIDDLEMOUSE); + do_always = TRUE; /* ignore 'mouse' setting next time */ + return FALSE; + } +--- 2380,2399 ---- + /* + * If visual was active, yank the highlighted text and put it + * before the mouse pointer position. ++ * In Select mode replace the highlighted text with the clipboard. + */ + if (VIsual_active) + { +! if (VIsual_select) +! { +! stuffcharReadbuff(Ctrl_G); +! stuffReadbuff("\"+p"); +! } +! else +! { +! stuffcharReadbuff('y'); +! stuffcharReadbuff(K_MIDDLEMOUSE); +! } + do_always = TRUE; /* ignore 'mouse' setting next time */ + return FALSE; + } +*** ../vim-7.0.141/src/version.c Tue Oct 17 16:26:52 2006 +--- src/version.c Tue Oct 17 16:51:23 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 142, + /**/ + +-- +Keyboard not found. Think ENTER to continue. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.0.143 b/7.0.143 new file mode 100644 index 0000000..e94130b --- /dev/null +++ b/7.0.143 @@ -0,0 +1,53 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.143 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.143 +Problem: Setting 'scroll' to its default value was not handled correctly. +Solution: Compare the right field to PV_SCROLL. +Files: src/option.c + + +*** ../vim-7.0.142/src/option.c Tue Oct 10 18:43:50 2006 +--- src/option.c Tue Oct 17 17:29:09 2006 +*************** +*** 3405,3411 **** + } + else if (flags & P_NUM) + { +! if (varp == (char_u *)PV_SCROLL) + win_comp_scroll(curwin); + else + { +--- 3405,3411 ---- + } + else if (flags & P_NUM) + { +! if (options[opt_idx].indir == PV_SCROLL) + win_comp_scroll(curwin); + else + { +*** ../vim-7.0.142/src/version.c Tue Oct 17 16:55:47 2006 +--- src/version.c Tue Oct 17 18:34:53 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 143, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +56. You leave the modem speaker on after connecting because you think it + sounds like the ocean wind...the perfect soundtrack for "surfing the net". + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.0.144 b/7.0.144 new file mode 100644 index 0000000..4f5176a --- /dev/null +++ b/7.0.144 @@ -0,0 +1,219 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.144 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.144 +Problem: May compare two unrelated pointers when matching a pattern against + a string. (Dominique Pelle) +Solution: Avoid calling reg_getline() when REG_MULTI is false. +Files: src/regexp.c + + +*** ../vim-7.0.143/src/regexp.c Tue Aug 29 17:28:56 2006 +--- src/regexp.c Tue Oct 17 18:30:18 2006 +*************** +*** 3777,3784 **** + + op = OP(scan); + /* Check for character class with NL added. */ +! if (!reg_line_lbr && WITH_NL(op) && *reginput == NUL +! && reglnum <= reg_maxline) + { + reg_nextline(); + } +--- 3777,3784 ---- + + op = OP(scan); + /* Check for character class with NL added. */ +! if (!reg_line_lbr && WITH_NL(op) && REG_MULTI +! && *reginput == NUL && reglnum <= reg_maxline) + { + reg_nextline(); + } +*************** +*** 4855,4862 **** + break; + + case NEWL: +! if ((c != NUL || reglnum > reg_maxline || reg_line_lbr) +! && (c != '\n' || !reg_line_lbr)) + status = RA_NOMATCH; + else if (reg_line_lbr) + ADVANCE_REGINPUT(); +--- 4855,4862 ---- + break; + + case NEWL: +! if ((c != NUL || !REG_MULTI || reglnum > reg_maxline +! || reg_line_lbr) && (c != '\n' || !reg_line_lbr)) + status = RA_NOMATCH; + else if (reg_line_lbr) + ADVANCE_REGINPUT(); +*************** +*** 5316,5323 **** + ++count; + mb_ptr_adv(scan); + } +! if (!WITH_NL(OP(p)) || reglnum > reg_maxline || reg_line_lbr +! || count == maxcount) + break; + ++count; /* count the line-break */ + reg_nextline(); +--- 5316,5323 ---- + ++count; + mb_ptr_adv(scan); + } +! if (!REG_MULTI || !WITH_NL(OP(p)) || reglnum > reg_maxline +! || reg_line_lbr || count == maxcount) + break; + ++count; /* count the line-break */ + reg_nextline(); +*************** +*** 5341,5347 **** + } + else if (*scan == NUL) + { +! if (!WITH_NL(OP(p)) || reglnum > reg_maxline || reg_line_lbr) + break; + reg_nextline(); + scan = reginput; +--- 5341,5348 ---- + } + else if (*scan == NUL) + { +! if (!REG_MULTI || !WITH_NL(OP(p)) || reglnum > reg_maxline +! || reg_line_lbr) + break; + reg_nextline(); + scan = reginput; +*************** +*** 5370,5376 **** + } + else if (*scan == NUL) + { +! if (!WITH_NL(OP(p)) || reglnum > reg_maxline || reg_line_lbr) + break; + reg_nextline(); + scan = reginput; +--- 5371,5378 ---- + } + else if (*scan == NUL) + { +! if (!REG_MULTI || !WITH_NL(OP(p)) || reglnum > reg_maxline +! || reg_line_lbr) + break; + reg_nextline(); + scan = reginput; +*************** +*** 5399,5405 **** + } + else if (*scan == NUL) + { +! if (!WITH_NL(OP(p)) || reglnum > reg_maxline || reg_line_lbr) + break; + reg_nextline(); + scan = reginput; +--- 5401,5408 ---- + } + else if (*scan == NUL) + { +! if (!REG_MULTI || !WITH_NL(OP(p)) || reglnum > reg_maxline +! || reg_line_lbr) + break; + reg_nextline(); + scan = reginput; +*************** +*** 5424,5430 **** + { + if (*scan == NUL) + { +! if (!WITH_NL(OP(p)) || reglnum > reg_maxline || reg_line_lbr) + break; + reg_nextline(); + scan = reginput; +--- 5427,5434 ---- + { + if (*scan == NUL) + { +! if (!REG_MULTI || !WITH_NL(OP(p)) || reglnum > reg_maxline +! || reg_line_lbr) + break; + reg_nextline(); + scan = reginput; +*************** +*** 5454,5460 **** + #endif + if (*scan == NUL) + { +! if (!WITH_NL(OP(p)) || reglnum > reg_maxline || reg_line_lbr) + break; + reg_nextline(); + scan = reginput; +--- 5458,5465 ---- + #endif + if (*scan == NUL) + { +! if (!REG_MULTI || !WITH_NL(OP(p)) || reglnum > reg_maxline +! || reg_line_lbr) + break; + reg_nextline(); + scan = reginput; +*************** +*** 5617,5623 **** + #endif + if (*scan == NUL) + { +! if (!WITH_NL(OP(p)) || reglnum > reg_maxline || reg_line_lbr) + break; + reg_nextline(); + scan = reginput; +--- 5622,5629 ---- + #endif + if (*scan == NUL) + { +! if (!REG_MULTI || !WITH_NL(OP(p)) || reglnum > reg_maxline +! || reg_line_lbr) + break; + reg_nextline(); + scan = reginput; +*************** +*** 5646,5653 **** + + case NEWL: + while (count < maxcount +! && ((*scan == NUL && reglnum <= reg_maxline && !reg_line_lbr) +! || (*scan == '\n' && reg_line_lbr))) + { + count++; + if (reg_line_lbr) +--- 5652,5659 ---- + + case NEWL: + while (count < maxcount +! && ((*scan == NUL && reglnum <= reg_maxline && !reg_line_lbr +! && REG_MULTI) || (*scan == '\n' && reg_line_lbr))) + { + count++; + if (reg_line_lbr) +*** ../vim-7.0.143/src/version.c Tue Oct 17 18:36:03 2006 +--- src/version.c Tue Oct 17 18:48:51 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 144, + /**/ + +-- +Be thankful to be in a traffic jam, because it means you own a car. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.0.145 b/7.0.145 new file mode 100644 index 0000000..1859368 --- /dev/null +++ b/7.0.145 @@ -0,0 +1,54 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.145 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.145 (after 7.0.142) +Problem: Compiler warning. +Solution: Add type cast. +Files: src/normal.c + + +*** ../vim-7.0.144/src/normal.c Tue Oct 17 16:55:47 2006 +--- src/normal.c Tue Oct 17 22:37:42 2006 +*************** +*** 2387,2393 **** + if (VIsual_select) + { + stuffcharReadbuff(Ctrl_G); +! stuffReadbuff("\"+p"); + } + else + { +--- 2387,2393 ---- + if (VIsual_select) + { + stuffcharReadbuff(Ctrl_G); +! stuffReadbuff((char_u *)"\"+p"); + } + else + { +*** ../vim-7.0.144/src/version.c Tue Oct 17 18:50:15 2006 +--- src/version.c Tue Oct 17 22:38:21 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 145, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +59. Your wife says communication is important in a marriage...so you buy + another computer and install a second phone line so the two of you can + chat. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.0.146 b/7.0.146 new file mode 100644 index 0000000..050f852 --- /dev/null +++ b/7.0.146 @@ -0,0 +1,137 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.146 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.146 +Problem: When 'switchbuf' is set to "usetab" and the current tab has only a + quickfix window, jumping to an error always opens a new window. + Also, when the buffer is open in another tab page it's not found. +Solution: Check for the "split" value of 'switchbuf' properly. Search in + other tab pages for the desired buffer. (Yegappan Lakshmanan) +Files: src/buffer.c, src/quickfix.c + + +*** ../vim-7.0.145/src/buffer.c Sat Sep 9 14:51:43 2006 +--- src/buffer.c Fri Oct 20 20:08:49 2006 +*************** +*** 1208,1218 **** + { + # ifdef FEAT_WINDOWS + /* jump to first window containing buf if one exists ("useopen") */ +! if (vim_strchr(p_swb, 'o') && buf_jump_open_win(buf)) + return OK; + /* jump to first window in any tab page containing buf if one exists + * ("usetab") */ +! if (vim_strchr(p_swb, 'a') && buf_jump_open_tab(buf)) + return OK; + if (win_split(0, 0) == FAIL) + # endif +--- 1208,1218 ---- + { + # ifdef FEAT_WINDOWS + /* jump to first window containing buf if one exists ("useopen") */ +! if (vim_strchr(p_swb, 'o') != NULL && buf_jump_open_win(buf)) + return OK; + /* jump to first window in any tab page containing buf if one exists + * ("usetab") */ +! if (vim_strchr(p_swb, 'a') != NULL && buf_jump_open_tab(buf)) + return OK; + if (win_split(0, 0) == FAIL) + # endif +*************** +*** 1842,1854 **** + if (options & GETF_SWITCH) + { + /* use existing open window for buffer if wanted */ +! if (vim_strchr(p_swb, 'o')) /* useopen */ + wp = buf_jump_open_win(buf); + /* use existing open window in any tab page for buffer if wanted */ +! if (vim_strchr(p_swb, 'a')) /* usetab */ + wp = buf_jump_open_tab(buf); + /* split window if wanted ("split") */ +! if (wp == NULL && vim_strchr(p_swb, 't') && !bufempty()) + { + if (win_split(0, 0) == FAIL) + return FAIL; +--- 1842,1854 ---- + if (options & GETF_SWITCH) + { + /* use existing open window for buffer if wanted */ +! if (vim_strchr(p_swb, 'o') != NULL) /* useopen */ + wp = buf_jump_open_win(buf); + /* use existing open window in any tab page for buffer if wanted */ +! if (vim_strchr(p_swb, 'a') != NULL) /* usetab */ + wp = buf_jump_open_tab(buf); + /* split window if wanted ("split") */ +! if (wp == NULL && vim_strchr(p_swb, 'l') != NULL && !bufempty()) + { + if (win_split(0, 0) == FAIL) + return FAIL; +*** ../vim-7.0.145/src/quickfix.c Tue Sep 5 15:36:30 2006 +--- src/quickfix.c Fri Oct 20 20:05:00 2006 +*************** +*** 1586,1595 **** + } + + /* +! * If there is only one window, create a new one above the quickfix +! * window. + */ +! if (firstwin == lastwin || !usable_win) + { + ll_ref = curwin->w_llist_ref; + +--- 1586,1615 ---- + } + + /* +! * If no usable window is found and 'switchbuf' is set to 'usetab' +! * then search in other tabs. + */ +! if (!usable_win && vim_strchr(p_swb, 'a') != NULL) +! { +! tabpage_T *tp; +! win_T *wp; +! +! FOR_ALL_TAB_WINDOWS(tp, wp) +! { +! if (wp->w_buffer->b_fnum == qf_ptr->qf_fnum) +! { +! goto_tabpage_win(tp, wp); +! usable_win = 1; +! break; +! } +! } +! } +! +! /* +! * If there is only one window and is the quickfix window, create a new +! * one above the quickfix window. +! */ +! if (((firstwin == lastwin) && bt_quickfix(curbuf)) || !usable_win) + { + ll_ref = curwin->w_llist_ref; + +*** ../vim-7.0.145/src/version.c Tue Oct 17 22:40:14 2006 +--- src/version.c Fri Oct 20 20:11:58 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 146, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +80. At parties, you introduce your spouse as your "service provider." + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.0.147 b/7.0.147 new file mode 100644 index 0000000..7480d50 --- /dev/null +++ b/7.0.147 @@ -0,0 +1,297 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.147 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.147 +Problem: When creating a session file and there are several tab pages and + some windows have a local directory a short file name may be used + when it's not valid. (Marius Roets) + A session with multiple tab pages may result in "No Name" buffers. + (Bill McCarthy) +Solution: Don't enter tab pages when going through the list, only use a + pointer to the first window in each tab page. + Use "tabedit" instead of "tabnew | edit" when possible. +Files: src/ex_docmd.c + + +*** ../vim-7.0.146/src/ex_docmd.c Sun Sep 10 21:05:39 2006 +--- src/ex_docmd.c Tue Oct 24 12:55:11 2006 +*************** +*** 9643,9649 **** + #endif + + #ifdef FEAT_SESSION +! static int ses_winsizes __ARGS((FILE *fd, int restore_size)); + static int ses_win_rec __ARGS((FILE *fd, frame_T *fr)); + static frame_T *ses_skipframe __ARGS((frame_T *fr)); + static int ses_do_frame __ARGS((frame_T *fr)); +--- 9643,9650 ---- + #endif + + #ifdef FEAT_SESSION +! static int ses_winsizes __ARGS((FILE *fd, int restore_size, +! win_T *tab_firstwin)); + static int ses_win_rec __ARGS((FILE *fd, frame_T *fr)); + static frame_T *ses_skipframe __ARGS((frame_T *fr)); + static int ses_do_frame __ARGS((frame_T *fr)); +*************** +*** 9669,9676 **** + win_T *wp; + char_u *sname; + win_T *edited_win = NULL; +- tabpage_T *old_curtab = curtab; + int tabnr; + + if (ssop_flags & SSOP_BUFFERS) + only_save_windows = FALSE; /* Save ALL buffers */ +--- 9670,9677 ---- + win_T *wp; + char_u *sname; + win_T *edited_win = NULL; + int tabnr; ++ win_T *tab_firstwin; + + if (ssop_flags & SSOP_BUFFERS) + only_save_windows = FALSE; /* Save ALL buffers */ +*************** +*** 9778,9791 **** + /* + * May repeat putting Windows for each tab, when "tabpages" is in + * 'sessionoptions'. + */ + for (tabnr = 1; ; ++tabnr) + { + if ((ssop_flags & SSOP_TABPAGES)) + { +! goto_tabpage(tabnr); +! if (tabnr > 1 && put_line(fd, "tabnew") == FAIL) +! return FAIL; + } + + /* +--- 9779,9804 ---- + /* + * May repeat putting Windows for each tab, when "tabpages" is in + * 'sessionoptions'. ++ * Don't use goto_tabpage(), it may change directory and trigger ++ * autocommands. + */ ++ tab_firstwin = firstwin; /* first window in tab page "tabnr" */ + for (tabnr = 1; ; ++tabnr) + { ++ int need_tabnew = FALSE; ++ + if ((ssop_flags & SSOP_TABPAGES)) + { +! tabpage_T *tp = find_tabpage(tabnr); +! +! if (tp == NULL) +! break; /* done all tab pages */ +! if (tp == curtab) +! tab_firstwin = firstwin; +! else +! tab_firstwin = tp->tp_firstwin; +! if (tabnr > 1) +! need_tabnew = TRUE; + } + + /* +*************** +*** 9793,9799 **** + * is aborted we don't end up with a number of useless windows. + * This may have side effects! (e.g., compressed or network file). + */ +! for (wp = firstwin; wp != NULL; wp = wp->w_next) + { + if (ses_do_win(wp) + && wp->w_buffer->b_ffname != NULL +--- 9806,9812 ---- + * is aborted we don't end up with a number of useless windows. + * This may have side effects! (e.g., compressed or network file). + */ +! for (wp = tab_firstwin; wp != NULL; wp = wp->w_next) + { + if (ses_do_win(wp) + && wp->w_buffer->b_ffname != NULL +*************** +*** 9803,9817 **** + #endif + ) + { +! if (fputs("edit ", fd) < 0 + || ses_fname(fd, wp->w_buffer, &ssop_flags) == FAIL) + return FAIL; + if (!wp->w_arg_idx_invalid) + edited_win = wp; + break; + } + } + + /* + * Save current window layout. + */ +--- 9816,9835 ---- + #endif + ) + { +! if (fputs(need_tabnew ? "tabedit " : "edit ", fd) < 0 + || ses_fname(fd, wp->w_buffer, &ssop_flags) == FAIL) + return FAIL; ++ need_tabnew = FALSE; + if (!wp->w_arg_idx_invalid) + edited_win = wp; + break; + } + } + ++ /* If no file got edited create an empty tab page. */ ++ if (need_tabnew && put_line(fd, "tabnew") == FAIL) ++ return FAIL; ++ + /* + * Save current window layout. + */ +*************** +*** 9829,9835 **** + * Remember the window number of the current window after restoring. + */ + nr = 0; +! for (wp = firstwin; wp != NULL; wp = W_NEXT(wp)) + { + if (ses_do_win(wp)) + ++nr; +--- 9847,9853 ---- + * Remember the window number of the current window after restoring. + */ + nr = 0; +! for (wp = tab_firstwin; wp != NULL; wp = W_NEXT(wp)) + { + if (ses_do_win(wp)) + ++nr; +*************** +*** 9852,9864 **** + */ + if (put_line(fd, "set winheight=1 winwidth=1") == FAIL) + return FAIL; +! if (nr > 1 && ses_winsizes(fd, restore_size) == FAIL) + return FAIL; + + /* + * Restore the view of the window (options, file, cursor, etc.). + */ +! for (wp = firstwin; wp != NULL; wp = wp->w_next) + { + if (!ses_do_win(wp)) + continue; +--- 9870,9882 ---- + */ + if (put_line(fd, "set winheight=1 winwidth=1") == FAIL) + return FAIL; +! if (nr > 1 && ses_winsizes(fd, restore_size, tab_firstwin) == FAIL) + return FAIL; + + /* + * Restore the view of the window (options, file, cursor, etc.). + */ +! for (wp = tab_firstwin; wp != NULL; wp = wp->w_next) + { + if (!ses_do_win(wp)) + continue; +*************** +*** 9879,9897 **** + * Restore window sizes again after jumping around in windows, because + * the current window has a minimum size while others may not. + */ +! if (nr > 1 && ses_winsizes(fd, restore_size) == FAIL) + return FAIL; + + /* Don't continue in another tab page when doing only the current one + * or when at the last tab page. */ +! if (!(ssop_flags & SSOP_TABPAGES) || curtab->tp_next == NULL) + break; + } + + if (ssop_flags & SSOP_TABPAGES) + { +- if (valid_tabpage(old_curtab)) +- goto_tabpage_tp(old_curtab); + if (fprintf(fd, "tabnext %d", tabpage_index(curtab)) < 0 + || put_eol(fd) == FAIL) + return FAIL; +--- 9897,9913 ---- + * Restore window sizes again after jumping around in windows, because + * the current window has a minimum size while others may not. + */ +! if (nr > 1 && ses_winsizes(fd, restore_size, tab_firstwin) == FAIL) + return FAIL; + + /* Don't continue in another tab page when doing only the current one + * or when at the last tab page. */ +! if (!(ssop_flags & SSOP_TABPAGES)) + break; + } + + if (ssop_flags & SSOP_TABPAGES) + { + if (fprintf(fd, "tabnext %d", tabpage_index(curtab)) < 0 + || put_eol(fd) == FAIL) + return FAIL; +*************** +*** 9927,9942 **** + } + + static int +! ses_winsizes(fd, restore_size) + FILE *fd; + int restore_size; + { + int n = 0; + win_T *wp; + + if (restore_size && (ssop_flags & SSOP_WINSIZE)) + { +! for (wp = firstwin; wp != NULL; wp = wp->w_next) + { + if (!ses_do_win(wp)) + continue; +--- 9943,9959 ---- + } + + static int +! ses_winsizes(fd, restore_size, tab_firstwin) + FILE *fd; + int restore_size; ++ win_T *tab_firstwin; + { + int n = 0; + win_T *wp; + + if (restore_size && (ssop_flags & SSOP_WINSIZE)) + { +! for (wp = tab_firstwin; wp != NULL; wp = wp->w_next) + { + if (!ses_do_win(wp)) + continue; +*** ../vim-7.0.146/src/version.c Fri Oct 20 20:15:05 2006 +--- src/version.c Tue Oct 24 12:57:04 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 147, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +95. Only communication in your household is through email. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.0.148 b/7.0.148 new file mode 100644 index 0000000..4a3b467 --- /dev/null +++ b/7.0.148 @@ -0,0 +1,58 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.148 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.148 +Problem: When doing "call a.xyz()" and "xyz" does not exist in dictionary + "a" there is no error message. (Yegappan Lakshmanan) +Solution: Add the error message. +Files: src/eval.c + + +*** ../vim-7.0.147/src/eval.c Tue Oct 17 15:17:41 2006 +--- src/eval.c Tue Oct 24 11:01:25 2006 +*************** +*** 3125,3131 **** + funcdict_T fudi; + + tofree = trans_function_name(&arg, eap->skip, TFN_INT, &fudi); +! vim_free(fudi.fd_newkey); + if (tofree == NULL) + return; + +--- 3125,3136 ---- + funcdict_T fudi; + + tofree = trans_function_name(&arg, eap->skip, TFN_INT, &fudi); +! if (fudi.fd_newkey != NULL) +! { +! /* Still need to give an error message for missing key. */ +! EMSG2(_(e_dictkey), fudi.fd_newkey); +! vim_free(fudi.fd_newkey); +! } + if (tofree == NULL) + return; + +*** ../vim-7.0.147/src/version.c Tue Oct 24 13:02:27 2006 +--- src/version.c Tue Oct 24 13:50:39 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 148, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +99. The hum of a cooling fan and the click of keys is comforting to you. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.0.149 b/7.0.149 new file mode 100644 index 0000000..102ed43 --- /dev/null +++ b/7.0.149 @@ -0,0 +1,186 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.149 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.149 +Problem: When resizing a window that shows "~" lines the text sometimes + jumps down. +Solution: Remove code that uses "~" lines in some situations. Fix the + computation of the screen line of the cursor. Also set w_skipcol + to handle very long lines. +Files: src/misc1.c, src/window.c + + +*** ../vim-7.0.148/src/misc1.c Tue Oct 17 11:12:28 2006 +--- src/misc1.c Tue Oct 24 17:33:39 2006 +*************** +*** 1761,1775 **** + * Add column offset for 'number', 'foldcolumn', etc. + */ + width = W_WIDTH(wp) - win_col_off(wp); +! if (width > 0) +! { +! lines += 1; +! if (col >= width) +! lines += (col - width) / (width + win_col_off2(wp)); +! if (lines <= wp->w_height) +! return lines; +! } +! return (int)(wp->w_height); /* maximum length */ + } + + int +--- 1761,1773 ---- + * Add column offset for 'number', 'foldcolumn', etc. + */ + width = W_WIDTH(wp) - win_col_off(wp); +! if (width <= 0) +! return 9999; +! +! lines += 1; +! if (col > width) +! lines += (col - width) / (width + win_col_off2(wp)) + 1; +! return lines; + } + + int +*** ../vim-7.0.148/src/window.c Tue Sep 5 16:29:38 2006 +--- src/window.c Tue Oct 24 20:39:56 2006 +*************** +*** 5189,5199 **** + int height; + { + linenr_T lnum; +- linenr_T bot; + int sline, line_size; +- int space; +- int did_below = FALSE; +- int old_height = wp->w_height; + #define FRACTION_MULT 16384L + + /* Don't want a negative height. Happens when splitting a tiny window. +--- 5189,5195 ---- +*************** +*** 5228,5281 **** + wp->w_wrow = ((long)wp->w_fraction * (long)height - 1L) / FRACTION_MULT; + line_size = plines_win_col(wp, lnum, (long)(wp->w_cursor.col)) - 1; + sline = wp->w_wrow - line_size; + if (sline < 0) + { + /* + * Cursor line would go off top of screen if w_wrow was this high. + */ + wp->w_wrow = line_size; + } + else + { +! space = height - 1; +! +! while (lnum > 1) + { +- /* When using "~" lines stop when at the old topline, don't +- * scroll down. */ +- if (did_below && height < old_height && lnum <= wp->w_topline) +- sline = 0; +- +- space -= line_size; +- if (space > 0 && sline <= 0 && !did_below) +- { +- /* Try to use "~" lines below the text to avoid that text +- * is above the window while there are empty lines. +- * Subtract the rows below the cursor from "space" and +- * give the rest to "sline". */ +- did_below = TRUE; +- bot = wp->w_cursor.lnum; +- while (space > 0) +- { +- if (wp->w_buffer->b_ml.ml_line_count - bot >= space) +- space = 0; +- else +- { +- #ifdef FEAT_FOLDING +- hasFoldingWin(wp, bot, NULL, &bot, TRUE, NULL); +- #endif +- if (bot >= wp->w_buffer->b_ml.ml_line_count) +- break; +- ++bot; +- space -= plines_win(wp, bot, TRUE); +- } +- } +- if (bot == wp->w_buffer->b_ml.ml_line_count && space > 0) +- sline += space; +- } +- if (sline <= 0) +- break; +- + #ifdef FEAT_FOLDING + hasFoldingWin(wp, lnum, &lnum, NULL, TRUE, NULL); + if (lnum == 1) +--- 5224,5267 ---- + wp->w_wrow = ((long)wp->w_fraction * (long)height - 1L) / FRACTION_MULT; + line_size = plines_win_col(wp, lnum, (long)(wp->w_cursor.col)) - 1; + sline = wp->w_wrow - line_size; ++ ++ if (sline >= 0) ++ { ++ /* Make sure the whole cursor line is visible, if possible. */ ++ int rows = plines_win(wp, lnum, FALSE); ++ ++ if (sline > wp->w_height - rows) ++ { ++ sline = wp->w_height - rows; ++ wp->w_wrow -= rows - line_size; ++ } ++ } ++ + if (sline < 0) + { + /* + * Cursor line would go off top of screen if w_wrow was this high. ++ * Make cursor line the first line in the window. If not enough ++ * room use w_skipcol; + */ + wp->w_wrow = line_size; ++ if (wp->w_wrow >= wp->w_height ++ && (W_WIDTH(wp) - win_col_off(wp)) > 0) ++ { ++ wp->w_skipcol += W_WIDTH(wp) - win_col_off(wp); ++ --wp->w_wrow; ++ while (wp->w_wrow >= wp->w_height) ++ { ++ wp->w_skipcol += W_WIDTH(wp) - win_col_off(wp) ++ + win_col_off2(wp); ++ --wp->w_wrow; ++ } ++ } + } + else + { +! while (sline > 0 && lnum > 1) + { + #ifdef FEAT_FOLDING + hasFoldingWin(wp, lnum, &lnum, NULL, TRUE, NULL); + if (lnum == 1) +*** ../vim-7.0.148/src/version.c Tue Oct 24 13:51:47 2006 +--- src/version.c Tue Oct 24 21:13:31 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 149, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +104. When people ask about the Presidential Election you ask "Which country?" + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.0.150 b/7.0.150 new file mode 100644 index 0000000..a395c49 --- /dev/null +++ b/7.0.150 @@ -0,0 +1,97 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.150 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.150 +Problem: When resizing the Vim window scrollbinding doesn't work. (Yakov + Lerner) +Solution: Do scrollbinding in set_shellsize(). +Files: src/term.c + + +*** ../vim-7.0.149/src/term.c Wed Aug 16 21:42:34 2006 +--- src/term.c Tue Oct 24 11:26:33 2006 +*************** +*** 3137,3161 **** + screenalloc(FALSE); + repeat_message(); + } +- else if (State & CMDLINE) +- { +- update_screen(NOT_VALID); +- redrawcmdline(); +- } + else + { +! update_topline(); +! #if defined(FEAT_INS_EXPAND) +! if (pum_visible()) + { +! redraw_later(NOT_VALID); +! ins_compl_show_pum(); /* This includes the redraw. */ + } + else + #endif +! update_screen(NOT_VALID); +! if (redrawing()) +! setcursor(); + } + cursor_on(); /* redrawing may have switched it off */ + } +--- 3138,3169 ---- + screenalloc(FALSE); + repeat_message(); + } + else + { +! #ifdef FEAT_SCROLLBIND +! if (curwin->w_p_scb) +! do_check_scrollbind(TRUE); +! #endif +! if (State & CMDLINE) + { +! update_screen(NOT_VALID); +! redrawcmdline(); + } + else ++ { ++ update_topline(); ++ #if defined(FEAT_INS_EXPAND) ++ if (pum_visible()) ++ { ++ redraw_later(NOT_VALID); ++ ins_compl_show_pum(); /* This includes the redraw. */ ++ } ++ else + #endif +! update_screen(NOT_VALID); +! if (redrawing()) +! setcursor(); +! } + } + cursor_on(); /* redrawing may have switched it off */ + } +*** ../vim-7.0.149/src/version.c Tue Oct 24 21:15:09 2006 +--- src/version.c Tue Oct 24 21:33:39 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 150, + /**/ + +-- +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/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.0.151 b/7.0.151 new file mode 100644 index 0000000..d448c96 --- /dev/null +++ b/7.0.151 @@ -0,0 +1,55 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.151 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.151 +Problem: Buttons in file dialog are not according to Gnome guidelines. +Solution: Swap Cancel and Open buttons. (Stefano Zacchiroli) +Files: src/gui_gtk.c + + +*** ../vim-7.0.150/src/gui_gtk.c Tue Oct 10 18:29:21 2006 +--- src/gui_gtk.c Sun Oct 22 15:33:40 2006 +*************** +*** 1293,1300 **** + GTK_WINDOW(gui.mainwin), + saving ? GTK_FILE_CHOOSER_ACTION_SAVE + : GTK_FILE_CHOOSER_ACTION_OPEN, +- saving ? GTK_STOCK_SAVE : GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, + GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, + NULL); + gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(fc), + (const gchar *)dirbuf); +--- 1293,1300 ---- + GTK_WINDOW(gui.mainwin), + saving ? GTK_FILE_CHOOSER_ACTION_SAVE + : GTK_FILE_CHOOSER_ACTION_OPEN, + GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, ++ saving ? GTK_STOCK_SAVE : GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, + NULL); + gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(fc), + (const gchar *)dirbuf); +*** ../vim-7.0.150/src/version.c Tue Oct 24 21:38:16 2006 +--- src/version.c Tue Oct 24 22:01:07 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 151, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +108. While reading a magazine, you look for the Zoom icon for a better + look at a photograph. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.0.152 b/7.0.152 new file mode 100644 index 0000000..6f38833 --- /dev/null +++ b/7.0.152 @@ -0,0 +1,74 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.152 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.152 +Problem: Crash when using lesstif 2. +Solution: Fill in the extension field. (Ben Hutchings) +Files: src/gui_xmebw.c + + +*** ../vim-7.0.151/src/gui_xmebw.c Sat May 13 17:26:10 2006 +--- src/gui_xmebw.c Tue Oct 24 22:27:53 2006 +*************** +*** 138,143 **** +--- 138,156 ---- + } + }; + ++ /* This is needed to work around a bug in Lesstif 2, leaving the extension ++ * NULL somehow results in getting it set to an invalid pointer. */ ++ XmPrimitiveClassExtRec xmEnhancedButtonPrimClassExtRec = ++ { ++ /* next_extension */ NULL, ++ /* record_type */ NULLQUARK, ++ /* version */ XmPrimitiveClassExtVersion, ++ /* record_size */ sizeof(XmPrimitiveClassExtRec), ++ /* widget_baseline */ XmInheritBaselineProc, ++ /* widget_display_rect */ XmInheritDisplayRectProc, ++ /* widget_margins */ NULL ++ }; ++ + XmEnhancedButtonClassRec xmEnhancedButtonClassRec = + { + { +*************** +*** 184,190 **** + /* arm and activate */ XmInheritArmAndActivate, + /* synthetic resources */ NULL, + /* number of syn res */ 0, +! /* extension */ NULL, + }, + + /* label_class fields */ +--- 197,203 ---- + /* arm and activate */ XmInheritArmAndActivate, + /* synthetic resources */ NULL, + /* number of syn res */ 0, +! /* extension */ (XtPointer)&xmEnhancedButtonPrimClassExtRec, + }, + + /* label_class fields */ +*** ../vim-7.0.151/src/version.c Tue Oct 24 22:01:55 2006 +--- src/version.c Tue Oct 24 22:30:40 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 152, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +110. You actually volunteer to become your employer's webmaster. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.0.153 b/7.0.153 new file mode 100644 index 0000000..7e4ec6c --- /dev/null +++ b/7.0.153 @@ -0,0 +1,154 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.153 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.153 +Problem: When using cscope and opening the temp file fails Vim crashes. + (Kaya Bekiroglu) +Solution: Check for NULL pointer returned from mch_open(). +Files: src/if_cscope.c + + +*** ../vim-7.0.152/src/if_cscope.c Tue Aug 29 17:28:56 2006 +--- src/if_cscope.c Mon Oct 30 22:26:01 2006 +*************** +*** 1100,1137 **** + if (qfpos != NULL && *qfpos != '0' && totmatches > 0) + { + /* fill error list */ +! FILE *f; +! char_u *tmp = vim_tempname('c'); + qf_info_T *qi = NULL; + win_T *wp = NULL; + + f = mch_fopen((char *)tmp, "w"); +! cs_file_results(f, nummatches); +! fclose(f); +! if (use_ll) /* Use location list */ +! wp = curwin; +! /* '-' starts a new error list */ +! if (qf_init(wp, tmp, (char_u *)"%f%*\\t%l%*\\t%m", *qfpos == '-') > 0) + { +! # ifdef FEAT_WINDOWS +! if (postponed_split != 0) + { +! win_split(postponed_split > 0 ? postponed_split : 0, + postponed_split_flags); + # ifdef FEAT_SCROLLBIND +! curwin->w_p_scb = FALSE; + # endif +! postponed_split = 0; +! } + # endif +! if (use_ll) +! /* +! * In the location list window, use the displayed location +! * list. Otherwise, use the location list for the window. +! */ +! qi = (bt_quickfix(wp->w_buffer) && wp->w_llist_ref != NULL) ? +! wp->w_llist_ref : wp->w_llist; +! qf_jump(qi, 0, 0, forceit); + } + mch_remove(tmp); + vim_free(tmp); +--- 1100,1143 ---- + if (qfpos != NULL && *qfpos != '0' && totmatches > 0) + { + /* fill error list */ +! FILE *f; +! char_u *tmp = vim_tempname('c'); + qf_info_T *qi = NULL; + win_T *wp = NULL; + + f = mch_fopen((char *)tmp, "w"); +! if (f == NULL) +! EMSG2(_(e_notopen), tmp); +! else + { +! cs_file_results(f, nummatches); +! fclose(f); +! if (use_ll) /* Use location list */ +! wp = curwin; +! /* '-' starts a new error list */ +! if (qf_init(wp, tmp, (char_u *)"%f%*\\t%l%*\\t%m", +! *qfpos == '-') > 0) + { +! # ifdef FEAT_WINDOWS +! if (postponed_split != 0) +! { +! win_split(postponed_split > 0 ? postponed_split : 0, + postponed_split_flags); + # ifdef FEAT_SCROLLBIND +! curwin->w_p_scb = FALSE; + # endif +! postponed_split = 0; +! } + # endif +! if (use_ll) +! /* +! * In the location list window, use the displayed location +! * list. Otherwise, use the location list for the window. +! */ +! qi = (bt_quickfix(wp->w_buffer) && wp->w_llist_ref != NULL) +! ? wp->w_llist_ref : wp->w_llist; +! qf_jump(qi, 0, 0, forceit); +! } + } + mch_remove(tmp); + vim_free(tmp); +*************** +*** 1723,1729 **** + continue; + + context = (char *)alloc((unsigned)strlen(cntx)+5); +! if (context==NULL) + continue; + + if (strcmp(cntx, "")==0) +--- 1729,1735 ---- + continue; + + context = (char *)alloc((unsigned)strlen(cntx)+5); +! if (context == NULL) + continue; + + if (strcmp(cntx, "")==0) +*************** +*** 1731,1737 **** + else + sprintf(context, "<<%s>>", cntx); + +! if (search==NULL) + fprintf(f, "%s\t%s\t%s\n", fullname, slno, context); + else + fprintf(f, "%s\t%s\t%s %s\n", fullname, slno, context, search); +--- 1737,1743 ---- + else + sprintf(context, "<<%s>>", cntx); + +! if (search == NULL) + fprintf(f, "%s\t%s\t%s\n", fullname, slno, context); + else + fprintf(f, "%s\t%s\t%s %s\n", fullname, slno, context, search); +*** ../vim-7.0.152/src/version.c Tue Oct 24 22:31:51 2006 +--- src/version.c Mon Oct 30 22:29:45 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 153, + /**/ + +-- +You cannot have a baby in one month by getting nine women pregnant. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.0.154 b/7.0.154 new file mode 100644 index 0000000..4822d91 --- /dev/null +++ b/7.0.154 @@ -0,0 +1,65 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.154 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.154 +Problem: When 'foldnextmax' is negative Vim can hang. (James Vega) +Solution: Avoid the fold level becoming negative. +Files: src/fold.c, src/syntax.c + + +*** ../vim-7.0.153/src/fold.c Sun Apr 23 00:31:04 2006 +--- src/fold.c Sun Oct 29 20:23:21 2006 +*************** +*** 2971,2977 **** +--- 2971,2981 ---- + else + flp->lvl = get_indent_buf(buf, lnum) / buf->b_p_sw; + if (flp->lvl > flp->wp->w_p_fdn) ++ { + flp->lvl = flp->wp->w_p_fdn; ++ if (flp->lvl < 0) ++ flp->lvl = 0; ++ } + } + + /* foldlevelDiff() {{{2 */ +*** ../vim-7.0.153/src/syntax.c Tue Oct 3 17:04:21 2006 +--- src/syntax.c Sun Oct 29 20:21:27 2006 +*************** +*** 6072,6078 **** +--- 6072,6082 ---- + ++level; + } + if (level > wp->w_p_fdn) ++ { + level = wp->w_p_fdn; ++ if (level < 0) ++ level = 0; ++ } + return level; + } + #endif +*** ../vim-7.0.153/src/version.c Mon Oct 30 22:31:30 2006 +--- src/version.c Wed Nov 1 12:41:14 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 154, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +134. You consider bandwidth to be more important than carats. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.0.155 b/7.0.155 new file mode 100644 index 0000000..265fa64 --- /dev/null +++ b/7.0.155 @@ -0,0 +1,196 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.155 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.155 +Problem: When getchar() returns a mouse button click there is no way to get + the mouse coordinates. +Solution: Add v:mouse_win, v:mouse_lnum and v:mouse_col. +Files: runtime/doc/eval.txt, src/eval.c, src/vim.h + + +*** ../vim-7.0.154/runtime/doc/eval.txt Tue Oct 3 14:43:31 2006 +--- runtime/doc/eval.txt Wed Nov 1 15:20:42 2006 +*************** +*** 1,4 **** +! *eval.txt* For Vim version 7.0. Last change: 2006 Sep 22 + + + VIM REFERENCE MANUAL by Bram Moolenaar +--- 1,4 ---- +! *eval.txt* For Vim version 7.0. Last change: 2006 Nov 01 + + + VIM REFERENCE MANUAL by Bram Moolenaar +*************** +*** 1374,1379 **** +--- 1380,1400 ---- + 'guitabtooltip'. Only valid while one of these expressions is + being evaluated. Read-only when in the |sandbox|. + ++ *v:mouse_win* *mouse_win-variable* ++ v:mouse_win Window number for a mouse click obtained with |getchar()|. ++ First window has number 1, like with |winnr()|. The value is ++ zero when there was no mouse button click. ++ ++ *v:mouse_lnum* *mouse_lnum-variable* ++ v:mouse_lnum Line number for a mouse click obtained with |getchar()|. ++ This is the text line number, not the screen line number. The ++ value is zero when there was no mouse button click. ++ ++ *v:mouse_col* *mouse_col-variable* ++ v:mouse_col Column number for a mouse click obtained with |getchar()|. ++ This is the screen column number, like with |virtcol()|. The ++ value is zero when there was no mouse button click. ++ + *v:prevcount* *prevcount-variable* + v:prevcount The count given for the last but one Normal mode command. + This is the v:count value of the previous command. Useful if +*************** +*** 2702,2707 **** +--- 2728,2744 ---- + one-byte character it is the character itself as a number. + Use nr2char() to convert it to a String. + ++ When the user clicks a mouse button, the mouse event will be ++ returned. The position can then be found in |v:mouse_col|, ++ |v:mouse_lnum| and |v:mouse_win|. This example positions the ++ mouse as it would normally happen: > ++ let c = getchar() ++ if c == "\" && v:mouse_win > 0 ++ exe v:mouse_win . "wincmd w" ++ exe v:mouse_lnum ++ exe "normal " . v:mouse_col . "|" ++ endif ++ < + There is no prompt, you will somehow have to make clear to the + user that a character has to be typed. + There is no mapping for the character. +*** ../vim-7.0.154/src/eval.c Tue Oct 24 13:51:47 2006 +--- src/eval.c Wed Nov 1 13:39:52 2006 +*************** +*** 343,348 **** +--- 342,350 ---- + {VV_NAME("swapchoice", VAR_STRING), 0}, + {VV_NAME("swapcommand", VAR_STRING), VV_RO}, + {VV_NAME("char", VAR_STRING), VV_RO}, ++ {VV_NAME("mouse_win", VAR_NUMBER), 0}, ++ {VV_NAME("mouse_lnum", VAR_NUMBER), 0}, ++ {VV_NAME("mouse_col", VAR_NUMBER), 0}, + }; + + /* shorthand */ +*************** +*** 9855,9860 **** +--- 9857,9866 ---- + --no_mapping; + --allow_keys; + ++ vimvars[VV_MOUSE_WIN].vv_nr = 0; ++ vimvars[VV_MOUSE_LNUM].vv_nr = 0; ++ vimvars[VV_MOUSE_COL].vv_nr = 0; ++ + rettv->vval.v_number = n; + if (IS_SPECIAL(n) || mod_mask != 0) + { +*************** +*** 9883,9888 **** +--- 9889,9941 ---- + temp[i++] = NUL; + rettv->v_type = VAR_STRING; + 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_MOUSEDOWN ++ || n == K_MOUSEUP) ++ { ++ int row = mouse_row; ++ int col = mouse_col; ++ win_T *win; ++ linenr_T lnum; ++ # ifdef FEAT_WINDOWS ++ win_T *wp; ++ # endif ++ int n = 1; ++ ++ if (row >= 0 && col >= 0) ++ { ++ /* Find the window at the mouse coordinates and compute the ++ * text position. */ ++ win = mouse_find_win(&row, &col); ++ (void)mouse_comp_pos(win, &row, &col, &lnum); ++ # ifdef FEAT_WINDOWS ++ for (wp = firstwin; wp != win; wp = wp->w_next) ++ ++n; ++ # endif ++ vimvars[VV_MOUSE_WIN].vv_nr = n; ++ vimvars[VV_MOUSE_LNUM].vv_nr = lnum; ++ vimvars[VV_MOUSE_COL].vv_nr = col + 1; ++ } ++ } ++ #endif + } + } + +*** ../vim-7.0.154/src/vim.h Tue Aug 29 18:16:37 2006 +--- src/vim.h Wed Nov 1 13:11:16 2006 +*************** +*** 1669,1675 **** + #define VV_SWAPCHOICE 46 + #define VV_SWAPCOMMAND 47 + #define VV_CHAR 48 +! #define VV_LEN 49 /* number of v: vars */ + + #ifdef FEAT_CLIPBOARD + +--- 1669,1678 ---- + #define VV_SWAPCHOICE 46 + #define VV_SWAPCOMMAND 47 + #define VV_CHAR 48 +! #define VV_MOUSE_WIN 49 +! #define VV_MOUSE_LNUM 50 +! #define VV_MOUSE_COL 51 +! #define VV_LEN 52 /* number of v: vars */ + + #ifdef FEAT_CLIPBOARD + +*** ../vim-7.0.154/src/version.c Wed Nov 1 12:43:07 2006 +--- src/version.c Wed Nov 1 15:22:33 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 155, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +138. You develop a liking for cold coffee. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.0.157 b/7.0.157 new file mode 100644 index 0000000..bcdf62e --- /dev/null +++ b/7.0.157 @@ -0,0 +1,105 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.157 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.157 +Problem: When a function is used recursively the profiling information is + invalid. (Mikolaj Machowski) +Solution: Put the start time on the stack instead of in the function. +Files: src/eval.c + + +*** ../vim-7.0.156/src/eval.c Wed Nov 1 15:31:02 2006 +--- src/eval.c Wed Nov 1 13:39:52 2006 +*************** +*** 166,172 **** + int uf_tm_count; /* nr of calls */ + proftime_T uf_tm_total; /* time spend in function + children */ + proftime_T uf_tm_self; /* time spend in function itself */ +- proftime_T uf_tm_start; /* time at function call */ + proftime_T uf_tm_children; /* time spent in children this call */ + /* profiling the function per line */ + int *uf_tml_count; /* nr of times line was executed */ +--- 166,171 ---- +*************** +*** 19764,19769 **** +--- 19763,19769 ---- + char_u *name; + #ifdef FEAT_PROFILE + proftime_T wait_start; ++ proftime_T call_start; + #endif + + /* If depth of calling is getting too high, don't execute the function */ +*************** +*** 19943,19949 **** + || (fc.caller != NULL && &fc.caller->func->uf_profiling)) + { + ++fp->uf_tm_count; +! profile_start(&fp->uf_tm_start); + profile_zero(&fp->uf_tm_children); + } + script_prof_save(&wait_start); +--- 19943,19949 ---- + || (fc.caller != NULL && &fc.caller->func->uf_profiling)) + { + ++fp->uf_tm_count; +! profile_start(&call_start); + profile_zero(&fp->uf_tm_children); + } + script_prof_save(&wait_start); +*************** +*** 19973,19986 **** + if (do_profiling == PROF_YES && (fp->uf_profiling + || (fc.caller != NULL && &fc.caller->func->uf_profiling))) + { +! profile_end(&fp->uf_tm_start); +! profile_sub_wait(&wait_start, &fp->uf_tm_start); +! profile_add(&fp->uf_tm_total, &fp->uf_tm_start); +! profile_self(&fp->uf_tm_self, &fp->uf_tm_start, &fp->uf_tm_children); + if (fc.caller != NULL && &fc.caller->func->uf_profiling) + { +! profile_add(&fc.caller->func->uf_tm_children, &fp->uf_tm_start); +! profile_add(&fc.caller->func->uf_tml_children, &fp->uf_tm_start); + } + } + #endif +--- 19973,19986 ---- + if (do_profiling == PROF_YES && (fp->uf_profiling + || (fc.caller != NULL && &fc.caller->func->uf_profiling))) + { +! profile_end(&call_start); +! profile_sub_wait(&wait_start, &call_start); +! profile_add(&fp->uf_tm_total, &call_start); +! profile_self(&fp->uf_tm_self, &call_start, &fp->uf_tm_children); + if (fc.caller != NULL && &fc.caller->func->uf_profiling) + { +! profile_add(&fc.caller->func->uf_tm_children, &call_start); +! profile_add(&fc.caller->func->uf_tml_children, &call_start); + } + } + #endif +*** ../vim-7.0.156/src/version.c Wed Nov 1 18:10:36 2006 +--- src/version.c Wed Nov 1 18:32:42 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 157, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +140. You'd rather catch a score on the web than watch the game as + it is being played on tv. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/7.0.158 b/7.0.158 new file mode 100644 index 0000000..68c8382 --- /dev/null +++ b/7.0.158 @@ -0,0 +1,50 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.158 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.158 +Problem: In a C file with ":set foldmethod=syntax", typing { on the + last line results in the cursor being in a closed fold. (Gautam + Iyer) +Solution: Open fold after inserting a new line. +Files: src/edit.c + + +*** ../vim-7.0.157/src/edit.c Tue Oct 17 13:39:36 2006 +--- src/edit.c Wed Nov 1 21:17:19 2006 +*************** +*** 9204,9209 **** +--- 9204,9213 ---- + #ifdef FEAT_CINDENT + can_cindent = TRUE; + #endif ++ #ifdef FEAT_FOLDING ++ /* When inserting a line the cursor line must never be in a closed fold. */ ++ foldOpenCursor(); ++ #endif + + return (!i); + } +*** ../vim-7.0.157/src/version.c Wed Nov 1 18:33:43 2006 +--- src/version.c Wed Nov 1 21:21:22 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 158, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +142. You dream about creating the world's greatest web site. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/vim-autopaste.patch b/vim-autopaste.patch new file mode 100644 index 0000000..4336a94 --- /dev/null +++ b/vim-autopaste.patch @@ -0,0 +1,69 @@ +diff -cr vim70.orig/src/getchar.c vim70/src/getchar.c +*** vim70.orig/src/getchar.c 2006-09-12 21:47:30.000000000 -0400 +--- vim70/src/getchar.c 2006-09-12 21:53:35.000000000 -0400 +*************** +*** 1495,1500 **** +--- 1495,1507 ---- + int + vgetc() + { ++ static time_t last_call = 0; ++ static int cps = 0; ++ char_u sPaste[] = "paste"; ++ time_t now; ++ if (p_apa) ++ now = time(NULL); ++ + int c, c2; + #ifdef FEAT_MBYTE + int n; +*************** +*** 1502,1507 **** +--- 1509,1527 ---- + int i; + #endif + ++ if (p_apa && !p_paste) { ++ if (last_call == now) ++ ++cps; ++ else ++ cps = 0; ++ if (cps >= 30) { ++ cps = 0; ++ do_set(&sPaste, 0); ++ showmode(); ++ } ++ last_call = now; ++ } ++ + /* + * If a character was put back with vungetc, it was already processed. + * Return it directly. +diff -cr vim70.orig/src/option.c vim70/src/option.c +*** vim70.orig/src/option.c 2006-09-12 21:47:30.000000000 -0400 +--- vim70/src/option.c 2006-09-12 21:54:07.000000000 -0400 +*************** +*** 529,534 **** +--- 529,537 ---- + {"autoindent", "ai", P_BOOL|P_VI_DEF, + (char_u *)&p_ai, PV_AI, + {(char_u *)FALSE, (char_u *)0L}}, ++ {"autopaste", "apa", P_BOOL|P_VI_DEF, ++ (char_u *)&p_apa, PV_NONE, ++ {(char_u *)FALSE, (char_u *)0L}}, + {"autoprint", "ap", P_BOOL|P_VI_DEF, + (char_u *)NULL, PV_NONE, + {(char_u *)FALSE, (char_u *)0L}}, +diff -cr vim70.orig/src/option.h vim70/src/option.h +*** vim70.orig/src/option.h 2006-09-12 21:47:30.000000000 -0400 +--- vim70/src/option.h 2006-09-12 21:54:23.000000000 -0400 +*************** +*** 312,317 **** +--- 312,318 ---- + #if defined(FEAT_GUI) && defined(MACOS_X) + EXTERN int *p_antialias; /* 'antialias' */ + #endif ++ EXTERN int p_apa; /* 'autopaste' */ + EXTERN int p_ar; /* 'autoread' */ + EXTERN int p_aw; /* 'autowrite' */ + EXTERN int p_awa; /* 'autowriteall' */ -- 2.44.0