]> git.pld-linux.org Git - packages/vim.git/commitdiff
- new
authorAdam Gołębiowski <adamg@pld-linux.org>
Fri, 3 Nov 2006 21:20:09 +0000 (21:20 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
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

73 files changed:
7.0.082 [new file with mode: 0644]
7.0.083 [new file with mode: 0644]
7.0.084 [new file with mode: 0644]
7.0.085 [new file with mode: 0644]
7.0.086 [new file with mode: 0644]
7.0.087 [new file with mode: 0644]
7.0.088 [new file with mode: 0644]
7.0.089 [new file with mode: 0644]
7.0.090 [new file with mode: 0644]
7.0.091 [new file with mode: 0644]
7.0.092 [new file with mode: 0644]
7.0.093 [new file with mode: 0644]
7.0.094 [new file with mode: 0644]
7.0.095 [new file with mode: 0644]
7.0.096 [new file with mode: 0644]
7.0.097 [new file with mode: 0644]
7.0.098 [new file with mode: 0644]
7.0.099 [new file with mode: 0644]
7.0.100 [new file with mode: 0644]
7.0.101 [new file with mode: 0644]
7.0.102 [new file with mode: 0644]
7.0.103 [new file with mode: 0644]
7.0.104 [new file with mode: 0644]
7.0.105 [new file with mode: 0644]
7.0.106 [new file with mode: 0644]
7.0.107 [new file with mode: 0644]
7.0.109 [new file with mode: 0644]
7.0.110 [new file with mode: 0644]
7.0.111 [new file with mode: 0644]
7.0.112 [new file with mode: 0644]
7.0.113 [new file with mode: 0644]
7.0.114 [new file with mode: 0644]
7.0.115 [new file with mode: 0644]
7.0.116 [new file with mode: 0644]
7.0.117 [new file with mode: 0644]
7.0.118 [new file with mode: 0644]
7.0.119 [new file with mode: 0644]
7.0.120 [new file with mode: 0644]
7.0.121 [new file with mode: 0644]
7.0.122 [new file with mode: 0644]
7.0.123 [new file with mode: 0644]
7.0.124 [new file with mode: 0644]
7.0.125 [new file with mode: 0644]
7.0.126 [new file with mode: 0644]
7.0.127 [new file with mode: 0644]
7.0.128 [new file with mode: 0644]
7.0.129 [new file with mode: 0644]
7.0.131 [new file with mode: 0644]
7.0.133 [new file with mode: 0644]
7.0.134 [new file with mode: 0644]
7.0.135 [new file with mode: 0644]
7.0.136 [new file with mode: 0644]
7.0.137 [new file with mode: 0644]
7.0.139 [new file with mode: 0644]
7.0.140 [new file with mode: 0644]
7.0.141 [new file with mode: 0644]
7.0.142 [new file with mode: 0644]
7.0.143 [new file with mode: 0644]
7.0.144 [new file with mode: 0644]
7.0.145 [new file with mode: 0644]
7.0.146 [new file with mode: 0644]
7.0.147 [new file with mode: 0644]
7.0.148 [new file with mode: 0644]
7.0.149 [new file with mode: 0644]
7.0.150 [new file with mode: 0644]
7.0.151 [new file with mode: 0644]
7.0.152 [new file with mode: 0644]
7.0.153 [new file with mode: 0644]
7.0.154 [new file with mode: 0644]
7.0.155 [new file with mode: 0644]
7.0.157 [new file with mode: 0644]
7.0.158 [new file with mode: 0644]
vim-autopaste.patch [new file with mode: 0644]

diff --git a/7.0.082 b/7.0.082
new file mode 100644 (file)
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 <Bram@moolenaar.net>
+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 (file)
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 <Bram@moolenaar.net>
+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 (<Enter> 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 (<Enter> 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 (file)
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 <Bram@moolenaar.net>
+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 (file)
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 <Bram@moolenaar.net>
+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 (file)
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 <Bram@moolenaar.net>
+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 (file)
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 <Bram@moolenaar.net>
+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 (file)
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 <Bram@moolenaar.net>
+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 (file)
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 <Bram@moolenaar.net>
+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 (file)
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 <Bram@moolenaar.net>
+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 (file)
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 <Bram@moolenaar.net>
+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 (file)
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 <Bram@moolenaar.net>
+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 (file)
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 <Bram@moolenaar.net>
+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 <Bram@vim.org>
+! " 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 <Bram@vim.org>
+! " 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 (file)
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 <Bram@moolenaar.net>
+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 (file)
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 <Bram@moolenaar.net>
+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.
++ 
++ Σημείωση: Αν αμφιβάλλετε για κάτι που πατήσατε, πατήστε <ESC> για να βρεθείτε
++        στην Κανονική Κατάσταση. Μετά πατήστε ξανά την εντολή που θέλατε.
++ 
++ Σημείωση: Τα πλήκτρα του δρομέα θα πρέπει επίσης να δουλεύουν. Αλλά με τα hjkl
++        θα μπορείτε να κινηθείτε πολύ γρηγορότερα, μόλις τα συνηθίσετε.
++ 
++ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++              Μάθημα 1.2:  ΜΠΑΙΝΟΝΤΑΣ ΚΑΙ ΒΓΑΙΝΟΝΤΑΣ ΣΤΟΝ VIM
++ 
++   !! ΣΗΜΕΙΩΣΗ: Πριν εκτελέσετε κάποιο από τα βήματα, διαβάστε όλο το μάθημα!!
++ 
++   1. Πατήστε το πλήκτρο <ESC> (για να είστε σίγουρα στην Κανονική Κατάσταση).
++ 
++   2. Πληκτρολογήστε:           :q! <ENTER>.
++ 
++ ---> Αυτό εξέρχεται από τον συντάκτη ΧΩΡΙΣ να σώσει όποιες αλλαγές έχετε κάνει.
++      Αν θέλετε να σώσετε τις αλλαγές και να εξέρθετε πληκτρολογήστε:
++            :wq <ENTER>
++ 
++   3. Όταν δείτε την προτροπή του φλοιού, πληκτρολογήστε την εντολή με την οποία
++      μπήκατε σε αυτήν την περιήγηση. Μπορεί να είναι: vimtutor <ENTER>
++      Κανονικά θα χρησιμοποιούσατε:                 vim tutor <ENTER>
++ 
++ ---> '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. Καθώς διορθώνετε κάθε λάθος πατήστε <ESC> για να επιστρέψετε στην
++      Κανονική Κατάσταση. Επαναλάβετε τα βήματα 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 ΑΡΧΕΙΟ <ENTER>
++ 
++   3. Για να βγείτε γράψτε:  <ESC>   :q!   <ENTER>   για απόρριψη των αλλαγών.
++               Ή γράψτε:  <ESC>   :wq   <ENTER>   για αποθήκευση των αλλαγών.
++ 
++   4. Για να διαγράψετε έναν χαρακτήρα κάτω από τον δρομέα σε
++      Κανονική Κατάσταση πατήστε:  x
++ 
++   5. Για να εισάγετε κείμενο στον δρομέα όσο είστε σε Κανονική Κατάσταση γράψτε:
++       i     πληκτρολογήστε το κείμενο <ESC>
++ 
++ ΣΗΜΕΙΩΣΗ: Πατώντας <ESC> θα τοποθετηθείτε στην Κανονική Κατάσταση ή θα
++        ακυρώσετε μία ανεπιθύμητη και μερικώς ολοκληρωμένη εντολή.
++ 
++ Τώρα συνεχίστε με το Μάθημα 2.
++ 
++ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                       Μάθημα 2.1: ΕΝΤΟΛΕΣ ΔΙΑΓΡΑΦΗΣ
++ 
++       ** Γράψτε  dw  για να διαγράψετε μέχρι το τέλος μίας λέξης. **
++ 
++   1. Πατήστε  <ESC>  για να βεβαιωθείτε ότι είστε στην Κανονική Κατάσταση.
++ 
++   2. Μετακινείστε τον δρομέα στην παρακάτω γραμμή σημειωμένη με --->.
++ 
++   3. Πηγαίνετε τον δρομέα στην αρχή της λέξης που πρέπει να διαγραφεί.
++ 
++   4. Γράψτε  dw  για να κάνετε την λέξη να εξαφανιστεί.
++ 
++ ΣΗΜΕΙΩΣΗ: Τα γράμματα dw θα εμφανιστούν στην τελευταία γραμμή της οθόνης όσο
++        τα πληκτρολογείτε. Αν γράψατε κάτι λάθος, πατήστε  <ESC>  και
++        ξεκινήστε από την αρχή.
++ 
++ ---> There are a some words fun that don't belong paper in this sentence.
++ 
++   5. Επαναλάβετε τα βήματα 3 και 4 μέχρι η πρόταση να είναι σωστή και
++      πηγαίνετε στο Μάθημα 2.2.
++ 
++ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                 Μάθημα 2.2: ΠΕΡΙΣΣΟΤΕΡΕΣ ΕΝΤΟΛΕΣ ΔΙΑΓΡΑΦΗΣ
++ 
++     ** Πληκτρολογήστε  d$  για να διαγράψετε μέχρι το τέλος της γραμμής. **
++ 
++   1. Πατήστε  <ESC>  για να βεβαιωθείτε ότι είστε στην Κανονική Κατάσταση.
++ 
++   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. Πατήστε <ESC> και πηγαίνετε στο επόμενο λάθος (στον πρώτο
++      χαρακτήρα προς αλλαγή).
++ 
++   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$  για να κάνετε το υπόλοιπο της γραμμής ίδιο με τη δεύτερη
++      και πατήστε <ESC>.
++ 
++ ---> 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' <ENTER>. Αυτή είναι η λέξη που θέλετε να ψάξετε.
++ 
++   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 <ENTER> . Σημειώστε ότι αυτή η εντολή αλλάζει μόνο
++      την πρώτη εμφάνιση στη γραμμή.
++ 
++   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  μετά από το ! και πατήστε <ENTER>. Αυτό θα
++      σας εμφανίσει μία λίστα του καταλόγου σας, ακριβώς σαν να ήσασταν στην
++      προτροπή του φλοιού. Ή χρησιμοποιήστε  :!dir  αν το ls δεν δουλεύει.
++ 
++ ---> Σημείωση: Είναι δυνατόν να εκτελέσετε οποιαδήποτε εξωτερική εντολή
++      με αυτόν τον τρόπο.
++ 
++ ---> Σημείωση: Όλες οι εντολές  :  πρέπει να τερματίζονται πατώντας το <ENTER>.
++ 
++ 
++ 
++ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++               Μάθημα 5.2: ΠΕΡΙΣΣΟΤΕΡΑ ΠΕΡΙ ΕΓΓΡΑΦΗΣ ΑΡΧΕΙΩΝ
++ 
++ 
++    ** Για να σώσετε τις αλλάγες που κάνατε στο αρχείο, γράψτε  :w ΑΡΧΕΙΟ.  **
++ 
++   1. Γράψτε  :!dir  ή  :!ls  για να πάρετε μία λίστα του καταλόγου σας.
++      Ήδη ξέρετε ότι πρέπει να πατήσετε <ENTER> μετά από αυτό.
++ 
++   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. Τώρα αντιγράψτε τη σημειωμένη με ---> γραμμή  και πατήστε <ESC> για να
++      βγείτε από την Κατάσταση Κειμένου.
++ 
++ ---> 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 , τον τελευταίο χαρακτήρα, το
++        κείμενο της εισαγωγής, <ESC>, δρομέα-δεξιά, και τέλος, 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. Σημειώστε ότι όταν πατάτε <ESC> για να βγείτε, παραμένει οποιοδήποτε
++      αναλλοίωτο κείμενο.
++ 
++ 
++ 
++ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                        Μάθημα 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  εισέρχεται στην Κατάσταη Αντικατάστασης μέχρι να
++      πατηθεί το <ESC> και να εξέλθει.
++ 
++   4. Γράφοντας ":set xxx" ρυθμίζει την επιλογή "xxx".
++ 
++ 
++ 
++ 
++ 
++ 
++ 
++ 
++ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                     ΜΑΘΗΜΑ 7: ON-LINE ΕΝΤΟΛΕΣ ΒΟΗΘΕΙΑΣ
++ 
++ 
++              ** Χρησιμοποιήστε το on-line σύστημα βοήθειας **
++ 
++   Ο Vim έχει ένα περιεκτικό on-line σύστημα βοήθειας. Για να ξεκινήσει,
++   δοκιμάστε κάποιο από τα τρία:
++      - πατήστε το πλήκτρο <HELP> (αν έχετε κάποιο)
++      - πατήστε το πλήκτρο <F1> (αν έχετε κάποιο)
++      - γράψτε   :help <ENTER>
++ 
++   Γράψτε  :q <ENTER>   για να κλείσετε το παράθυρο της βοήθειας.
++ 
++   Μπορείτε να βρείτε βοήθεια πάνω σε κάθε αντικείμενο, δίνοντας μία παράμετρο
++   στην εντολή ":help".  Δοκιμάστε αυτά (μην ξεχνάτε να πατάτε <ENTER>):
++ 
++      :help w
++      :help c_<T
++      :help insert-index
++      :help user-manual
++ 
++ 
++ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                ΜΑΘΗΜΑ 8: ΔΗΜΙΟΥΡΓΗΣΤΕ ΕΝΑ SCRIPT ΕΚΚΙΝΗΣΗΣ
++ 
++                 ** Ενεργοποιήστε χαρακτηριστικά του Vim **
++ 
++   Ο Vim έχει πολλά περισσότερα χαρακτηριστικά απ' ό,τι ο Vi, αλλά τα
++   περισσότερα είναι αρχικά απενεργοποιημένα. Για να αρχίσετε να χρησιμοποιείτε
++   περισσότερα χαρακτηριστικά πρέπει να φτιάξετε ένα αρχείο "vimrc".
++ 
++   1. Αρχίστε διορθώνοντας το αρχείο "vimrc", αυτό εξαρτάται από το σύστημά σας:
++      :edit ~/.vimrc               για Unix
++      :edit $VIM/_vimrc            για MS-Windows
++ 
++   2. Τώρα εισάγετε το κείμενο παραδείγματος για αρχείο "vimrc":
++      :read $VIMRUNTIME/vimrc_example.vim
++ 
++   3. Γράψτε το αρχείο με την:
++      :write
++ 
++   Την επόμενη φορά που θα ξεκινήσετε τον Vim θα χρησιμοποιήσει φωτισμό
++   σύνταξης.  Μπορείτε να προσθέσετε όλες τις προτιμώμενες επιλογές σ' αυτό
++   το αρχείο "vimrc".
++ 
++ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++ 
++   Εδώ ολοκληρώνεται το Vim Tutor. Σκοπός του ήταν να δώσει μία σύντομη
++   περίληψη του συντάκτη Vim, τουλάχιστον τόση ώστε να σας επιτρέψει να
++   χρησιμοποιήσετε τον συντάκτη αρκετά εύκολα. Απέχει πολύ από μία
++   ολοκληρωμένη παρουσίαση καθώς ο Vim έχει πάρα πολλές εντολές. Διαβάστε
++   κατόπιν το εγχειρίδιο χρήσης:
++      ":help user-manual".
++ 
++   Για περαιτέρω διάβασμα και μελέτη, συστήνεται αυτό το βιβλίο:
++      Vim - Vi Improved - by Steve Oualline
++      Publisher: New Riders
++      Το πρώτο βιβλίο πλήρως αφιερωμένο στον Vim.
++      Ιδιαίτερα χρήσιμο για αρχάριους.
++      Υπάρχουν πολλά παραδείγματα και εικόνες.
++      Δείτε την http://iccf-holland.org/click5.html
++ 
++   Αυτό το βιβλίο είναι παλιότερο και περισσότερο για τον Vi παρά για τον Vim,
++   αλλά επίσης συνιστώμενο:
++      Learning the Vi Editor - by Linda Lamb
++      Publisher: O'Reilly & Associates Inc.
++      Είναι ένα καλό βιβλίο για να μάθετε σχεδόν τα πάντα που θέλετε
++      να κάνετε με τον Vi.
++      Η έκτη έκδοση περιέχει ακόμα πληροφορίες για τον Vim.
++ 
++   Αυτή η περιήγηση γράφτηκε από τους Michael C. Pierce και Robert K. Ware,
++   Colorado School of Mines χρησιμοποιώντας ιδέες από τον Charles Smith,
++   Colorado State University.  E-mail: bware@mines.colorado.edu.
++ 
++   Προσαρμογή για τον Vim από τον Bram Moolenaar.
++ 
++ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+*** ../vim-7.0.094/runtime/tutor/tutor.vim     Sat Sep  2 14:54:17 2006
+--- runtime/tutor/tutor.vim    Sat Sep  9 16:46:36 2006
+***************
+*** 1,6 ****
+  " Vim tutor support file
+  " Author: Eduardo F. Amatria <eferna1@platea.pntic.mec.es>
+! " 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 <eferna1@platea.pntic.mec.es>
+! " 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 (file)
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 <Bram@moolenaar.net>
+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 (file)
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 <Bram@moolenaar.net>
+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 (file)
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 <Bram@moolenaar.net>
+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 (file)
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 <Bram@moolenaar.net>
+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 (file)
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 <Bram@moolenaar.net>
+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 (file)
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 <Bram@moolenaar.net>
+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 (file)
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 <Bram@moolenaar.net>
+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 (file)
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 <Bram@moolenaar.net>
+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 (file)
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 <Bram@moolenaar.net>
+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 (file)
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 <Bram@moolenaar.net>
+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 (file)
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 <Bram@moolenaar.net>
+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 <Bram@vim.org>
+! " 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 <Bram@vim.org>
+! " 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 <SID>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 <SID>SpellReplace(' . pri . ')<CR>'
+         let pri += 1
+       endfor
+  
+       let s:additem = 'add\ "' . escape(w, ' .') . '"\ to\ word\ list'
+!      exe 'amenu 1.6 PopUp.' . s:additem . ' :spellgood ' . w . '<CR>'
+  
+       let s:ignoreitem = 'ignore\ "' . escape(w, ' .') . '"'
+!      exe 'amenu 1.7 PopUp.' . s:ignoreitem . ' :spellgood! ' . w . '<CR>'
+  
+!      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 <SID>SpellReplace(' . pri . ')<CR>'
+         let pri += 1
+       endfor
+  
+       let s:additem = 'add\ "' . escape(w, ' .') . '"\ to\ word\ list'
+!      exe 'anoremenu 1.6 PopUp.' . s:additem . ' :spellgood ' . w . '<CR>'
+  
+       let s:ignoreitem = 'ignore\ "' . escape(w, ' .') . '"'
+!      exe 'anoremenu 1.7 PopUp.' . s:ignoreitem . ' :spellgood! ' . w . '<CR>'
+  
+!      anoremenu 1.8 PopUp.-SpellSep- :
+        endif
+      endif
+    endfunc
+***************
+*** 938,944 ****
+      let s:changeitem = ''
+    endfun
+  
+!   au! MenuPopup * call <SID>SpellPopup()
+  endif
+  
+  " The GUI toolbar (for MS-Windows and GTK)
+--- 940,948 ----
+      let s:changeitem = ''
+    endfun
+  
+!   augroup SpellPopupMenu
+!     au! MenuPopup * call <SID>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 (file)
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 <Bram@moolenaar.net>
+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 (file)
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 <Bram@moolenaar.net>
+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 (file)
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 <Bram@moolenaar.net>
+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 (file)
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 <Bram@moolenaar.net>
+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 <Bram@vim.org>
+! " 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 <Bram@vim.org>
+! " Last Change: 2006 Oct 03
+  
+  " These functions are used by the gzip plugin.
+  
+***************
+*** 68,76 ****
+    let tmp = tempname()
+    let tmpe = tmp . "." . expand("<afile>: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("<afile>: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("<afile>: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("<afile>: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 (file)
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 <Bram@moolenaar.net>
+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 (file)
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 <Bram@moolenaar.net>
+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 (file)
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 <Bram@moolenaar.net>
+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 (file)
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 <Bram@moolenaar.net>
+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 (file)
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 <Bram@moolenaar.net>
+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 (file)
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 <Bram@moolenaar.net>
+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 (file)
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 <Bram@moolenaar.net>
+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 (file)
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 <Bram@moolenaar.net>
+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 (file)
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 <Bram@moolenaar.net>
+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 (file)
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 <Bram@moolenaar.net>
+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 (file)
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 <Bram@moolenaar.net>
+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 (file)
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 <Bram@moolenaar.net>
+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 (file)
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 <Bram@moolenaar.net>
+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 (file)
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 <Bram@moolenaar.net>
+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 (file)
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 <Bram@moolenaar.net>
+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 (file)
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 <Bram@moolenaar.net>
+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 (file)
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 <Bram@moolenaar.net>
+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 (file)
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 <Bram@moolenaar.net>
+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 (file)
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 <Bram@moolenaar.net>
+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 (file)
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 <Bram@moolenaar.net>
+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 (file)
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 <Bram@moolenaar.net>
+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 (file)
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 <Bram@moolenaar.net>
+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 (file)
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 <Bram@moolenaar.net>
+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 (file)
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 <Bram@moolenaar.net>
+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 (file)
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 <Bram@moolenaar.net>
+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)
+      {
+       /* <C-PageUp>: tab page back */
+!      goto_tabpage(-1);
+       return;
+      }
+  #endif
+--- 8822,8832 ----
+      if (mod_mask & MOD_MASK_CTRL)
+      {
+       /* <C-PageUp>: 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)
+      {
+       /* <C-PageDown>: tab page forward */
+!      goto_tabpage(0);
+       return;
+      }
+  #endif
+--- 8885,8895 ----
+      if (mod_mask & MOD_MASK_CTRL)
+      {
+       /* <C-PageDown>: 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 (file)
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 <Bram@moolenaar.net>
+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 (file)
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 <Bram@moolenaar.net>
+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 (file)
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 <Bram@moolenaar.net>
+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 (file)
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 <Bram@moolenaar.net>
+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 (file)
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 <Bram@moolenaar.net>
+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 (file)
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 <Bram@moolenaar.net>
+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 (file)
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 <Bram@moolenaar.net>
+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 (file)
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 <Bram@moolenaar.net>
+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 (file)
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 <Bram@moolenaar.net>
+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 (file)
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 <Bram@moolenaar.net>
+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 (file)
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 <Bram@moolenaar.net>
+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 (file)
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 <Bram@moolenaar.net>
+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 (file)
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 <Bram@moolenaar.net>
+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 (file)
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 <Bram@moolenaar.net>
+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, "<global>")==0)
+--- 1729,1735 ----
+              continue;
+  
+          context = (char *)alloc((unsigned)strlen(cntx)+5);
+!         if (context == NULL)
+              continue;
+  
+          if (strcmp(cntx, "<global>")==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 (file)
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 <Bram@moolenaar.net>
+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 (file)
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 <Bram@moolenaar.net>
+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 == "\<LeftMouse>" && 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 (file)
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 <Bram@moolenaar.net>
+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 (file)
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 <Bram@moolenaar.net>
+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 {<CR> 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 (file)
index 0000000..4336a94
--- /dev/null
@@ -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' */
This page took 0.333918 seconds and 4 git commands to generate.