]> git.pld-linux.org Git - packages/vim.git/commitdiff
- up to 7.3.143 auto/th/vim-7_3_143-1
authorElan Ruusamäe <glen@pld-linux.org>
Wed, 23 Mar 2011 14:54:21 +0000 (14:54 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
Changed files:
    7.3.126 -> 1.1
    7.3.127 -> 1.1
    7.3.128 -> 1.1
    7.3.129 -> 1.1
    7.3.130 -> 1.1
    7.3.131 -> 1.1
    7.3.132 -> 1.1
    7.3.133 -> 1.1
    7.3.134 -> 1.1
    7.3.135 -> 1.1
    7.3.136 -> 1.1
    7.3.137 -> 1.1
    7.3.138 -> 1.1
    7.3.139 -> 1.1
    7.3.140 -> 1.1
    7.3.141 -> 1.1
    7.3.142 -> 1.1
    7.3.143 -> 1.1
    vim.spec -> 1.550

19 files changed:
7.3.126 [new file with mode: 0644]
7.3.127 [new file with mode: 0644]
7.3.128 [new file with mode: 0644]
7.3.129 [new file with mode: 0644]
7.3.130 [new file with mode: 0644]
7.3.131 [new file with mode: 0644]
7.3.132 [new file with mode: 0644]
7.3.133 [new file with mode: 0644]
7.3.134 [new file with mode: 0644]
7.3.135 [new file with mode: 0644]
7.3.136 [new file with mode: 0644]
7.3.137 [new file with mode: 0644]
7.3.138 [new file with mode: 0644]
7.3.139 [new file with mode: 0644]
7.3.140 [new file with mode: 0644]
7.3.141 [new file with mode: 0644]
7.3.142 [new file with mode: 0644]
7.3.143 [new file with mode: 0644]
vim.spec

diff --git a/7.3.126 b/7.3.126
new file mode 100644 (file)
index 0000000..89d9684
--- /dev/null
+++ b/7.3.126
@@ -0,0 +1,63 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.126
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.126
+Problem:    Compiler warning for signed pointer.
+Solution:   Use unsigned int argument for sscanf().
+Files:     src/blowfish.c
+
+
+*** ../vim-7.3.125/src/blowfish.c      2010-08-15 21:57:28.000000000 +0200
+--- src/blowfish.c     2010-12-17 19:58:18.000000000 +0100
+***************
+*** 413,418 ****
+--- 413,419 ----
+      int    salt_len;
+  {
+      int      i, j, keypos = 0;
++     unsigned u;
+      UINT32_T val, data_l, data_r;
+      char_u   *key;
+      int      keylen;
+***************
+*** 432,439 ****
+      }
+      for (i = 0; i < keylen; i++)
+      {
+!      sscanf((char *)&key[i * 2], "%2x", &j);
+!      key[i] = j;
+      }
+  
+      mch_memmove(sbx, sbi, 4 * 4 * 256);
+--- 433,440 ----
+      }
+      for (i = 0; i < keylen; i++)
+      {
+!      sscanf((char *)&key[i * 2], "%2x", &u);
+!      key[i] = u;
+      }
+  
+      mch_memmove(sbx, sbi, 4 * 4 * 256);
+*** ../vim-7.3.125/src/version.c       2011-02-15 18:06:11.000000000 +0100
+--- src/version.c      2011-02-25 14:40:22.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     126,
+  /**/
+
+-- 
+Why doesn't Tarzan have a beard?
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.3.127 b/7.3.127
new file mode 100644 (file)
index 0000000..518d2f7
--- /dev/null
+++ b/7.3.127
@@ -0,0 +1,55 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.127
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.127
+Problem:    Compiler complains about comma.
+Solution:   Remove comma after last enum element.
+Files:     src/ex_cmds2.c
+
+
+*** ../vim-7.3.126/src/ex_cmds2.c      2010-12-17 18:06:00.000000000 +0100
+--- src/ex_cmds2.c     2010-12-17 19:58:37.000000000 +0100
+***************
+*** 1115,1121 ****
+  static enum
+  {
+      PEXP_SUBCMD,     /* expand :profile sub-commands */
+!     PEXP_FUNC,               /* expand :profile func {funcname} */
+  } pexpand_what;
+  
+  static char *pexpand_cmds[] = {
+--- 1115,1121 ----
+  static enum
+  {
+      PEXP_SUBCMD,     /* expand :profile sub-commands */
+!     PEXP_FUNC                /* expand :profile func {funcname} */
+  } pexpand_what;
+  
+  static char *pexpand_cmds[] = {
+*** ../vim-7.3.126/src/version.c       2011-02-25 14:40:51.000000000 +0100
+--- src/version.c      2011-02-25 14:45:19.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     127,
+  /**/
+
+-- 
+   LAUNCELOT leaps into SHOT with a mighty cry and runs the GUARD through and
+   hacks him to the floor.  Blood.  Swashbuckling music (perhaps).
+   LAUNCELOT races through into the castle screaming.
+SECOND SENTRY: Hey!
+                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.3.128 b/7.3.128
new file mode 100644 (file)
index 0000000..d443868
--- /dev/null
+++ b/7.3.128
@@ -0,0 +1,58 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.128
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.128
+Problem:    Another compiler warning for signed pointer.
+Solution:   Use unsigned int argument for sscanf().
+Files:     src/mark.c
+
+
+*** ../vim-7.3.127/src/mark.c  2010-08-15 21:57:25.000000000 +0200
+--- src/mark.c 2010-12-17 20:00:05.000000000 +0100
+***************
+*** 1750,1756 ****
+           {
+               if (line[1] != NUL)
+               {
+!                  sscanf((char *)line + 2, "%ld %u", &pos.lnum, &pos.col);
+                   switch (line[1])
+                   {
+                       case '"': curbuf->b_last_cursor = pos; break;
+--- 1750,1759 ----
+           {
+               if (line[1] != NUL)
+               {
+!                  unsigned u;
+! 
+!                  sscanf((char *)line + 2, "%ld %u", &pos.lnum, &u);
+!                  pos.col = u;
+                   switch (line[1])
+                   {
+                       case '"': curbuf->b_last_cursor = pos; break;
+*** ../vim-7.3.127/src/version.c       2011-02-25 14:46:06.000000000 +0100
+--- src/version.c      2011-02-25 15:10:34.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     128,
+  /**/
+
+-- 
+FATHER:    Who are you?
+PRINCE:    I'm ... your son ...
+FATHER:    Not you.
+LAUNCELOT: I'm ... er ... Sir Launcelot, sir.
+                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.3.129 b/7.3.129
new file mode 100644 (file)
index 0000000..10f11d6
--- /dev/null
+++ b/7.3.129
@@ -0,0 +1,241 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.129
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.129
+Problem:    Using integer like a boolean.
+Solution:   Nicer check for integer being non-zero.
+Files:     src/tag.c
+
+
+*** ../vim-7.3.128/src/tag.c   2010-12-17 18:06:00.000000000 +0100
+--- src/tag.c  2010-12-17 17:49:35.000000000 +0100
+***************
+*** 204,210 ****
+      else
+      {
+  #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
+!      if (g_do_tagpreview)
+           use_tagstack = FALSE;
+       else
+  #endif
+--- 204,210 ----
+      else
+      {
+  #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
+!      if (g_do_tagpreview != 0)
+           use_tagstack = FALSE;
+       else
+  #endif
+***************
+*** 222,228 ****
+                   ))
+       {
+  #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
+!          if (g_do_tagpreview)
+           {
+               if (ptag_entry.tagname != NULL
+                       && STRCMP(ptag_entry.tagname, tag) == 0)
+--- 222,228 ----
+                   ))
+       {
+  #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
+!          if (g_do_tagpreview != 0)
+           {
+               if (ptag_entry.tagname != NULL
+                       && STRCMP(ptag_entry.tagname, tag) == 0)
+***************
+*** 278,284 ****
+       {
+           if (
+  #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
+!                  g_do_tagpreview ? ptag_entry.tagname == NULL :
+  #endif
+                   tagstacklen == 0)
+           {
+--- 278,284 ----
+       {
+           if (
+  #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
+!                  g_do_tagpreview != 0 ? ptag_entry.tagname == NULL :
+  #endif
+                   tagstacklen == 0)
+           {
+***************
+*** 361,367 ****
+              )
+           {
+  #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
+!              if (g_do_tagpreview)
+               {
+                   cur_match = ptag_entry.cur_match;
+                   cur_fnum = ptag_entry.cur_fnum;
+--- 361,367 ----
+              )
+           {
+  #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
+!              if (g_do_tagpreview != 0)
+               {
+                   cur_match = ptag_entry.cur_match;
+                   cur_fnum = ptag_entry.cur_fnum;
+***************
+*** 399,405 ****
+               prevtagstackidx = tagstackidx;
+  
+  #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
+!              if (g_do_tagpreview)
+               {
+                   cur_match = ptag_entry.cur_match;
+                   cur_fnum = ptag_entry.cur_fnum;
+--- 399,405 ----
+               prevtagstackidx = tagstackidx;
+  
+  #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
+!              if (g_do_tagpreview != 0)
+               {
+                   cur_match = ptag_entry.cur_match;
+                   cur_fnum = ptag_entry.cur_fnum;
+***************
+*** 437,443 ****
+       }
+  
+  #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
+!      if (g_do_tagpreview)
+       {
+           if (type != DT_SELECT && type != DT_JUMP)
+           {
+--- 437,443 ----
+       }
+  
+  #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
+!      if (g_do_tagpreview != 0)
+       {
+           if (type != DT_SELECT && type != DT_JUMP)
+           {
+***************
+*** 492,498 ****
+       if (use_tagstack)
+           name = tagstack[tagstackidx].tagname;
+  #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
+!      else if (g_do_tagpreview)
+           name = ptag_entry.tagname;
+  #endif
+       else
+--- 492,498 ----
+       if (use_tagstack)
+           name = tagstack[tagstackidx].tagname;
+  #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
+!      else if (g_do_tagpreview != 0)
+           name = ptag_entry.tagname;
+  #endif
+       else
+***************
+*** 620,626 ****
+                   parse_match(matches[i], &tagp);
+                   if (!new_tag && (
+  #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
+!                              (g_do_tagpreview
+                                && i == ptag_entry.cur_match) ||
+  #endif
+                               (use_tagstack
+--- 620,626 ----
+                   parse_match(matches[i], &tagp);
+                   if (!new_tag && (
+  #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
+!                              (g_do_tagpreview != 0
+                                && i == ptag_entry.cur_match) ||
+  #endif
+                               (use_tagstack
+***************
+*** 962,968 ****
+               ++tagstackidx;
+           }
+  #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
+!          else if (g_do_tagpreview)
+           {
+               ptag_entry.cur_match = cur_match;
+               ptag_entry.cur_fnum = cur_fnum;
+--- 962,968 ----
+               ++tagstackidx;
+           }
+  #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
+!          else if (g_do_tagpreview != 0)
+           {
+               ptag_entry.cur_match = cur_match;
+               ptag_entry.cur_fnum = cur_fnum;
+***************
+*** 3110,3116 ****
+  #endif
+  
+  #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
+!     if (g_do_tagpreview)
+      {
+       postponed_split = 0;    /* don't split again below */
+       curwin_save = curwin;   /* Save current window */
+--- 3110,3116 ----
+  #endif
+  
+  #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
+!     if (g_do_tagpreview != 0)
+      {
+       postponed_split = 0;    /* don't split again below */
+       curwin_save = curwin;   /* Save current window */
+***************
+*** 3148,3154 ****
+       /* A :ta from a help file will keep the b_help flag set.  For ":ptag"
+        * we need to use the flag from the window where we came from. */
+  #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
+!      if (g_do_tagpreview)
+           keep_help_flag = curwin_save->w_buffer->b_help;
+       else
+  #endif
+--- 3148,3154 ----
+       /* A :ta from a help file will keep the b_help flag set.  For ":ptag"
+        * we need to use the flag from the window where we came from. */
+  #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
+!      if (g_do_tagpreview != 0)
+           keep_help_flag = curwin_save->w_buffer->b_help;
+       else
+  #endif
+***************
+*** 3322,3328 ****
+       }
+  
+  #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
+!      if (g_do_tagpreview && curwin != curwin_save && win_valid(curwin_save))
+       {
+           /* Return cursor to where we were */
+           validate_cursor();
+--- 3322,3329 ----
+       }
+  
+  #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
+!      if (g_do_tagpreview != 0
+!                         && curwin != curwin_save && win_valid(curwin_save))
+       {
+           /* Return cursor to where we were */
+           validate_cursor();
+*** ../vim-7.3.128/src/version.c       2011-02-25 15:11:17.000000000 +0100
+--- src/version.c      2011-02-25 15:12:25.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     129,
+  /**/
+
+-- 
+PRINCE:    He's come to rescue me, father.
+LAUNCELOT: (embarrassed) Well, let's not jump to conclusions ...
+                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.3.130 b/7.3.130
new file mode 100644 (file)
index 0000000..3f7db76
--- /dev/null
+++ b/7.3.130
@@ -0,0 +1,74 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.130
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.130
+Problem:    Variable misplaced in #ifdef.
+Solution:   Move clipboard_event_time outside of #ifdef.
+Files:     src/gui_gtk_x11.c
+
+
+*** ../vim-7.3.129/src/gui_gtk_x11.c   2010-08-15 21:57:31.000000000 +0200
+--- src/gui_gtk_x11.c  2010-12-04 15:26:41.000000000 +0100
+***************
+*** 86,94 ****
+  
+  #ifdef HAVE_X11_SUNKEYSYM_H
+  # include <X11/Sunkeysym.h>
+- static guint32 clipboard_event_time = CurrentTime;
+  #endif
+  
+  /*
+   * Easy-to-use macro for multihead support.
+   */
+--- 86,95 ----
+  
+  #ifdef HAVE_X11_SUNKEYSYM_H
+  # include <X11/Sunkeysym.h>
+  #endif
+  
++ static guint32 clipboard_event_time = CurrentTime;
++ 
+  /*
+   * Easy-to-use macro for multihead support.
+   */
+***************
+*** 5419,5425 ****
+       }
+  
+  #if defined(FEAT_NETBEANS_INTG)
+!      /* Process the queued netbeans messages. */
+       netbeans_parse_messages();
+  #endif
+  
+--- 5420,5426 ----
+       }
+  
+  #if defined(FEAT_NETBEANS_INTG)
+!      /* Process any queued netbeans messages. */
+       netbeans_parse_messages();
+  #endif
+  
+*** ../vim-7.3.129/src/version.c       2011-02-25 15:13:43.000000000 +0100
+--- src/version.c      2011-02-25 15:15:02.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     130,
+  /**/
+
+-- 
+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/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.3.131 b/7.3.131
new file mode 100644 (file)
index 0000000..e142059
--- /dev/null
+++ b/7.3.131
@@ -0,0 +1,47 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.131
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.131
+Problem:    Including errno.h too often.
+Solution:   Don't include errno.h in Unix header file.
+Files:     src/os_unix.h
+
+
+*** ../vim-7.3.130/src/os_unix.h       2010-08-15 21:57:28.000000000 +0200
+--- src/os_unix.h      2010-12-17 20:05:34.000000000 +0100
+***************
+*** 184,193 ****
+  
+  #define BASENAMELEN  (MAXNAMLEN - 5)
+  
+- #ifdef HAVE_ERRNO_H
+- # include <errno.h>
+- #endif
+- 
+  #ifdef HAVE_PWD_H
+  # include <pwd.h>
+  #endif
+--- 184,189 ----
+*** ../vim-7.3.130/src/version.c       2011-02-25 15:15:43.000000000 +0100
+--- src/version.c      2011-02-25 15:16:49.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     131,
+  /**/
+
+-- 
+Overflow on /dev/null, please empty the bit bucket.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.3.132 b/7.3.132
new file mode 100644 (file)
index 0000000..2f0753d
--- /dev/null
+++ b/7.3.132
@@ -0,0 +1,82 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.132
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.132
+Problem:    C++ style comments.
+Solution:   Change to C comments.
+Files:     src/if_python3.c
+
+
+*** ../vim-7.3.131/src/if_python3.c    2010-11-16 19:25:56.000000000 +0100
+--- src/if_python3.c   2011-01-16 01:28:35.000000000 +0100
+***************
+*** 22,29 ****
+   * Adaptations to support both python3.x and python2.x
+   */
+  
+! // uncomment this if used with the debug version of python
+! // #define Py_DEBUG
+  
+  #include "vim.h"
+  
+--- 22,29 ----
+   * Adaptations to support both python3.x and python2.x
+   */
+  
+! /* uncomment this if used with the debug version of python */
+! /* #define Py_DEBUG */
+  
+  #include "vim.h"
+  
+***************
+*** 74,80 ****
+  #define PyString_Size(obj) PyUnicode_GET_SIZE(obj)
+  #define PyString_FromString(repr) PyUnicode_FromString(repr)
+  
+! #if defined(DYNAMIC_PYTHON3)
+  
+  # ifndef WIN3264
+  #  include <dlfcn.h>
+--- 74,80 ----
+  #define PyString_Size(obj) PyUnicode_GET_SIZE(obj)
+  #define PyString_FromString(repr) PyUnicode_FromString(repr)
+  
+! #if defined(DYNAMIC_PYTHON3) || defined(PROTO)
+  
+  # ifndef WIN3264
+  #  include <dlfcn.h>
+*** ../vim-7.3.131/src/version.c       2011-02-25 15:17:14.000000000 +0100
+--- src/version.c      2011-02-25 15:18:18.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     132,
+  /**/
+
+-- 
+        **  Hello and Welcome to the Psychiatric Hotline **
+If you are obsessive-compulsive, please press 1 repeatedly.
+If you are co-dependent, please ask someone to press 2.
+If you have multiple personalities, please press 3, 4, 5 and 6.
+If you are paranoid-delusional, we know who you are and what you want
+       - just stay on the line so we can trace the call.
+If you are schizophrenic, listen carefully and a little voice will
+       tell you which number to press next.
+If you are manic-depressive, it doesn't matter which number you press
+       - no one will answer.
+If you suffer from panic attacks, push every button you can find.
+If you are sane, please hold on - we have the rest of humanity on the
+        other line and they desparately want to ask you a few questions.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.3.133 b/7.3.133
new file mode 100644 (file)
index 0000000..d7d9951
--- /dev/null
+++ b/7.3.133
@@ -0,0 +1,122 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.133
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.133
+Problem:    When using encryption it's not clear what method was used.
+Solution:   In the file message show "blowfish" when using blowfish.
+Files:     src/fileio.c
+
+
+*** ../vim-7.3.132/src/fileio.c        2011-02-15 17:39:14.000000000 +0100
+--- src/fileio.c       2011-02-25 16:30:19.000000000 +0100
+***************
+*** 250,255 ****
+--- 250,256 ----
+  #ifdef FEAT_CRYPT
+      char_u   *cryptkey = NULL;
+      int              did_ask_for_key = FALSE;
++     int              crypt_method_used;
+  #endif
+  #ifdef FEAT_PERSISTENT_UNDO
+      context_sha256_T sha_ctx;
+***************
+*** 2289,2294 ****
+--- 2290,2296 ----
+       save_file_ff(curbuf);           /* remember the current file format */
+  
+  #ifdef FEAT_CRYPT
++     crypt_method_used = use_crypt_method;
+      if (cryptkey != NULL)
+      {
+       crypt_pop_state();
+***************
+*** 2483,2489 ****
+  #ifdef FEAT_CRYPT
+           if (cryptkey != NULL)
+           {
+!              STRCAT(IObuff, _("[crypted]"));
+               c = TRUE;
+           }
+  #endif
+--- 2485,2494 ----
+  #ifdef FEAT_CRYPT
+           if (cryptkey != NULL)
+           {
+!              if (crypt_method_used == 1)
+!                  STRCAT(IObuff, _("[blowfish]"));
+!              else
+!                  STRCAT(IObuff, _("[crypted]"));
+               c = TRUE;
+           }
+  #endif
+***************
+*** 3199,3204 ****
+--- 3204,3212 ----
+      int                  write_undo_file = FALSE;
+      context_sha256_T sha_ctx;
+  #endif
++ #ifdef FEAT_CRYPT
++     int                  crypt_method_used;
++ #endif
+  
+      if (fname == NULL || *fname == NUL)      /* safety check */
+       return FAIL;
+***************
+*** 4728,4733 ****
+--- 4736,4742 ----
+       mch_set_acl(wfname, acl);
+  #endif
+  #ifdef FEAT_CRYPT
++     crypt_method_used = use_crypt_method;
+      if (wb_flags & FIO_ENCRYPTED)
+       crypt_pop_state();
+  #endif
+***************
+*** 4882,4888 ****
+  #ifdef FEAT_CRYPT
+       if (wb_flags & FIO_ENCRYPTED)
+       {
+!          STRCAT(IObuff, _("[crypted]"));
+           c = TRUE;
+       }
+  #endif
+--- 4891,4900 ----
+  #ifdef FEAT_CRYPT
+       if (wb_flags & FIO_ENCRYPTED)
+       {
+!          if (crypt_method_used == 1)
+!              STRCAT(IObuff, _("[blowfish]"));
+!          else
+!              STRCAT(IObuff, _("[crypted]"));
+           c = TRUE;
+       }
+  #endif
+*** ../vim-7.3.132/src/version.c       2011-02-25 15:18:46.000000000 +0100
+--- src/version.c      2011-02-25 16:42:58.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     133,
+  /**/
+
+-- 
+    [clop clop]
+GUARD #1:  Halt!  Who goes there?
+ARTHUR:    It is I, Arthur, son of Uther Pendragon, from the castle of
+           Camelot.  King of the Britons, defeator of the Saxons, sovereign of
+           all England!
+GUARD #1:  Pull the other one!
+                                  The Quest for the Holy Grail (Monty Python)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.3.134 b/7.3.134
new file mode 100644 (file)
index 0000000..cb20ce4
--- /dev/null
+++ b/7.3.134
@@ -0,0 +1,51 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.134
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.134
+Problem:    Drag-n-drop doesn't work in KDE Dolphin.
+Solution:   Add GDK_ACTION_MOVE flag. (Florian Degner)
+Files:     src/gui_gtk_x11.c
+
+
+*** ../vim-7.3.133/src/gui_gtk_x11.c   2011-02-25 15:15:43.000000000 +0100
+--- src/gui_gtk_x11.c  2011-02-25 17:07:36.000000000 +0100
+***************
+*** 3094,3100 ****
+      gtk_drag_dest_set(gui.drawarea,
+                     GTK_DEST_DEFAULT_ALL,
+                     targets, n_targets,
+!                    GDK_ACTION_COPY);
+  }
+  
+  /*
+--- 3094,3100 ----
+      gtk_drag_dest_set(gui.drawarea,
+                     GTK_DEST_DEFAULT_ALL,
+                     targets, n_targets,
+!                    GDK_ACTION_COPY | GDK_ACTION_MOVE);
+  }
+  
+  /*
+*** ../vim-7.3.133/src/version.c       2011-02-25 16:52:13.000000000 +0100
+--- src/version.c      2011-02-25 17:08:35.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     134,
+  /**/
+
+-- 
+Proverb: A nightingale that forgets the lyrics is a hummingbird.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.3.135 b/7.3.135
new file mode 100644 (file)
index 0000000..ca1ebd6
--- /dev/null
+++ b/7.3.135
@@ -0,0 +1,90 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.135
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.135
+Problem:    When there is no previous substitute pattern, the previous search
+           pattern is used.  The other way around doesn't work.
+Solution:   When there is no previous search pattern, use the previous
+           substitute pattern if possible. (Christian Brabandt)
+Files:     src/search.c
+
+
+*** ../vim-7.3.134/src/search.c        2010-09-21 16:56:29.000000000 +0200
+--- src/search.c       2011-02-25 18:36:56.000000000 +0100
+***************
+*** 1161,1172 ****
+       {
+           if (spats[RE_SEARCH].pat == NULL)       /* no previous pattern */
+           {
+!              EMSG(_(e_noprevre));
+!              retval = 0;
+!              goto end_do_search;
+           }
+-          /* make search_regcomp() use spats[RE_SEARCH].pat */
+-          searchstr = (char_u *)"";
+       }
+  
+       if (pat != NULL && *pat != NUL) /* look for (new) offset */
+--- 1161,1180 ----
+       {
+           if (spats[RE_SEARCH].pat == NULL)       /* no previous pattern */
+           {
+!              pat = spats[RE_SUBST].pat;
+!              if (pat == NULL)
+!              {
+!                  EMSG(_(e_noprevre));
+!                  retval = 0;
+!                  goto end_do_search;
+!              }
+!              searchstr = pat;
+!          }
+!          else
+!          {
+!              /* make search_regcomp() use spats[RE_SEARCH].pat */
+!              searchstr = (char_u *)"";
+           }
+       }
+  
+       if (pat != NULL && *pat != NUL) /* look for (new) offset */
+***************
+*** 4527,4533 ****
+  #if defined(FEAT_FIND_ID) || defined(PROTO)
+  /*
+   * Find identifiers or defines in included files.
+!  * if p_ic && (compl_cont_status & CONT_SOL) then ptr must be in lowercase.
+   */
+      void
+  find_pattern_in_path(ptr, dir, len, whole, skip_comments,
+--- 4535,4541 ----
+  #if defined(FEAT_FIND_ID) || defined(PROTO)
+  /*
+   * Find identifiers or defines in included files.
+!  * If p_ic && (compl_cont_status & CONT_SOL) then ptr must be in lowercase.
+   */
+      void
+  find_pattern_in_path(ptr, dir, len, whole, skip_comments,
+*** ../vim-7.3.134/src/version.c       2011-02-25 17:10:22.000000000 +0100
+--- src/version.c      2011-02-25 18:35:30.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     135,
+  /**/
+
+-- 
+A real patriot is the fellow who gets a parking ticket and rejoices
+that the system works.
+
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.3.136 b/7.3.136
new file mode 100644 (file)
index 0000000..87acecb
--- /dev/null
+++ b/7.3.136
@@ -0,0 +1,51 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.136
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.136
+Problem:    Duplicate include of assert.h.
+Solution:   Remove it.
+Files:     src/if_cscope.c
+
+
+*** ../vim-7.3.135/src/if_cscope.c     2010-12-30 11:41:05.000000000 +0100
+--- src/if_cscope.c    2011-03-03 15:01:15.000000000 +0100
+***************
+*** 13,19 ****
+  
+  #if defined(FEAT_CSCOPE) || defined(PROTO)
+  
+- #include <assert.h>
+  #include <sys/types.h>
+  #include <sys/stat.h>
+  #if defined(UNIX)
+--- 13,18 ----
+*** ../vim-7.3.135/src/version.c       2011-02-25 18:38:29.000000000 +0100
+--- src/version.c      2011-03-03 14:59:32.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     136,
+  /**/
+
+-- 
+ARTHUR:  You fight with the strength of many men, Sir knight.
+         I am Arthur, King of the Britons.  [pause]
+         I seek the finest and the bravest knights in the land to join me
+         in my Court of Camelot.  [pause]
+         You have proved yourself worthy; will you join me?  [pause]
+         You make me sad.  So be it.  Come, Patsy.
+BLACK KNIGHT:  None shall pass.
+                                  The Quest for the Holy Grail (Monty Python)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.3.137 b/7.3.137
new file mode 100644 (file)
index 0000000..91f68ed
--- /dev/null
+++ b/7.3.137
@@ -0,0 +1,81 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.137
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.137 (after 7.3.091)
+Problem:    When 'lazyredraw' is set the screen may not be updated. (Ivan
+           Krasilnikov)
+Solution:   Call update_screen() before waiting for input.
+Files:     src/misc1.c, src/getchar.c
+
+
+*** ../vim-7.3.136/src/misc1.c 2011-01-22 00:11:42.000000000 +0100
+--- src/misc1.c        2011-03-03 14:02:02.000000000 +0100
+***************
+*** 3115,3121 ****
+--- 3115,3129 ----
+           continue;
+  
+       if (n == KEYLEN_REMOVED)  /* key code removed */
++      {
++          if (must_redraw)
++          {
++              /* Redrawing was postponed, do it now. */
++              update_screen(0);
++              setcursor(); /* put cursor back where it belongs */
++          }
+           continue;
++      }
+       if (n > 0)              /* found a termcode: adjust length */
+           len = n;
+       if (len == 0)           /* nothing typed yet */
+*** ../vim-7.3.136/src/getchar.c       2010-12-30 12:30:26.000000000 +0100
+--- src/getchar.c      2011-03-03 14:01:26.000000000 +0100
+***************
+*** 2710,2717 ****
+                * are still available.  But when those available characters
+                * are part of a mapping, and we are going to do a blocking
+                * wait here.  Need to update the screen to display the
+!               * changed text so far. */
+!              if ((State & INSERT) && advance && must_redraw != 0)
+               {
+                   update_screen(0);
+                   setcursor(); /* put cursor back where it belongs */
+--- 2710,2719 ----
+                * are still available.  But when those available characters
+                * are part of a mapping, and we are going to do a blocking
+                * wait here.  Need to update the screen to display the
+!               * changed text so far. Also for when 'lazyredraw' is set and
+!               * redrawing was postponed because there was something in the
+!               * input buffer (e.g., termresponse). */
+!              if (((State & INSERT) || p_lz) && advance && must_redraw != 0)
+               {
+                   update_screen(0);
+                   setcursor(); /* put cursor back where it belongs */
+*** ../vim-7.3.136/src/version.c       2011-03-03 15:01:25.000000000 +0100
+--- src/version.c      2011-03-03 15:02:45.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     137,
+  /**/
+
+-- 
+ARTHUR:        What?
+BLACK KNIGHT:  None shall pass.
+ARTHUR:        I have no quarrel with you, good Sir knight, but I must cross
+               this bridge.
+BLACK KNIGHT:  Then you shall die.
+                                  The Quest for the Holy Grail (Monty Python)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.3.138 b/7.3.138
new file mode 100644 (file)
index 0000000..e045e79
--- /dev/null
+++ b/7.3.138
@@ -0,0 +1,69 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.138
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.138
+Problem:    ":com" changes the multi-byte text of :echo. (Dimitar Dimitrov)
+Solution:   Search for K_SPECIAL as a byte, not a character. (Ben Schmidt)
+Files:     src/ex_docmd.c
+
+
+*** ../vim-7.3.137/src/ex_docmd.c      2011-01-17 19:50:01.000000000 +0100
+--- src/ex_docmd.c     2011-03-03 15:47:00.000000000 +0100
+***************
+*** 6054,6068 ****
+               end = vim_strchr(start + 1, '>');
+           if (buf != NULL)
+           {
+!              ksp = vim_strchr(p, K_SPECIAL);
+!              if (ksp != NULL && (start == NULL || ksp < start || end == NULL)
+                       && ((ksp[1] == KS_SPECIAL && ksp[2] == KE_FILLER)
+  # ifdef FEAT_GUI
+                           || (ksp[1] == KS_EXTRA && ksp[2] == (int)KE_CSI)
+  # endif
+                           ))
+               {
+!                  /* K_SPECIAL han been put in the buffer as K_SPECIAL
+                    * KS_SPECIAL KE_FILLER, like for mappings, but
+                    * do_cmdline() doesn't handle that, so convert it back.
+                    * Also change K_SPECIAL KS_EXTRA KE_CSI into CSI. */
+--- 6054,6070 ----
+               end = vim_strchr(start + 1, '>');
+           if (buf != NULL)
+           {
+!              for (ksp = p; *ksp != NUL && *ksp != K_SPECIAL; ++ksp)
+!                  ;
+!              if (*ksp == K_SPECIAL
+!                      && (start == NULL || ksp < start || end == NULL)
+                       && ((ksp[1] == KS_SPECIAL && ksp[2] == KE_FILLER)
+  # ifdef FEAT_GUI
+                           || (ksp[1] == KS_EXTRA && ksp[2] == (int)KE_CSI)
+  # endif
+                           ))
+               {
+!                  /* K_SPECIAL has been put in the buffer as K_SPECIAL
+                    * KS_SPECIAL KE_FILLER, like for mappings, but
+                    * do_cmdline() doesn't handle that, so convert it back.
+                    * Also change K_SPECIAL KS_EXTRA KE_CSI into CSI. */
+*** ../vim-7.3.137/src/version.c       2011-03-03 15:04:01.000000000 +0100
+--- src/version.c      2011-03-03 15:53:41.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     138,
+  /**/
+
+-- 
+    f y cn rd ths thn y cn hv grt jb n cmptr prgrmmng
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.3.139 b/7.3.139
new file mode 100644 (file)
index 0000000..057bf65
--- /dev/null
+++ b/7.3.139
@@ -0,0 +1,111 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.139
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.139 (after 7.3.137)
+Problem:    When 'lazyredraw' is set ":ver" output can't be read.
+Solution:   Don't redraw the screen when at a prompt or command line.
+Files:      src/getchar.c, src/message.c, src/misc1.c
+
+
+*** ../vim-7.3.138/src/getchar.c       2011-03-03 15:04:01.000000000 +0100
+--- src/getchar.c      2011-03-22 12:16:23.000000000 +0100
+***************
+*** 2713,2719 ****
+                * changed text so far. Also for when 'lazyredraw' is set and
+                * redrawing was postponed because there was something in the
+                * input buffer (e.g., termresponse). */
+!              if (((State & INSERT) || p_lz) && advance && must_redraw != 0)
+               {
+                   update_screen(0);
+                   setcursor(); /* put cursor back where it belongs */
+--- 2713,2720 ----
+                * changed text so far. Also for when 'lazyredraw' is set and
+                * redrawing was postponed because there was something in the
+                * input buffer (e.g., termresponse). */
+!              if (((State & INSERT) != 0 || p_lz) && (State & CMDLINE) == 0
+!                        && advance && must_redraw != 0 && !need_wait_return)
+               {
+                   update_screen(0);
+                   setcursor(); /* put cursor back where it belongs */
+*** ../vim-7.3.138/src/message.c       2011-02-01 17:12:20.000000000 +0100
+--- src/message.c      2011-03-22 13:06:24.000000000 +0100
+***************
+*** 879,894 ****
+      if (msg_silent != 0)
+       return;
+  
+! /*
+!  * With the global command (and some others) we only need one return at the
+!  * end. Adjust cmdline_row to avoid the next message overwriting the last one.
+!  * When inside vgetc(), we can't wait for a typed character at all.
+!  */
+      if (vgetc_busy > 0)
+       return;
+      if (no_wait_return)
+      {
+-      need_wait_return = TRUE;
+       if (!exmode_active)
+           cmdline_row = msg_row;
+       return;
+--- 879,895 ----
+      if (msg_silent != 0)
+       return;
+  
+!     /*
+!      * When inside vgetc(), we can't wait for a typed character at all.
+!      * With the global command (and some others) we only need one return at
+!      * the end. Adjust cmdline_row to avoid the next message overwriting the
+!      * last one.
+!      */
+      if (vgetc_busy > 0)
+       return;
++     need_wait_return = TRUE;
+      if (no_wait_return)
+      {
+       if (!exmode_active)
+           cmdline_row = msg_row;
+       return;
+*** ../vim-7.3.138/src/misc1.c 2011-03-03 15:04:01.000000000 +0100
+--- src/misc1.c        2011-03-22 12:15:26.000000000 +0100
+***************
+*** 3116,3122 ****
+  
+       if (n == KEYLEN_REMOVED)  /* key code removed */
+       {
+!          if (must_redraw)
+           {
+               /* Redrawing was postponed, do it now. */
+               update_screen(0);
+--- 3116,3122 ----
+  
+       if (n == KEYLEN_REMOVED)  /* key code removed */
+       {
+!          if (must_redraw != 0 && !need_wait_return && (State & CMDLINE) == 0)
+           {
+               /* Redrawing was postponed, do it now. */
+               update_screen(0);
+*** ../vim-7.3.138/src/version.c       2011-03-03 15:54:45.000000000 +0100
+--- src/version.c      2011-03-22 13:06:33.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     139,
+  /**/
+
+-- 
+"Software is like sex... it's better when it's free."
+               -- Linus Torvalds, initiator of the free Linux OS
+Makes me wonder what FSF stands for...?
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.3.140 b/7.3.140
new file mode 100644 (file)
index 0000000..53c3aaf
--- /dev/null
+++ b/7.3.140
@@ -0,0 +1,58 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.140
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.140
+Problem:    Crash when drawing the "$" at end-of-line for list mode just after
+           the window border and 'cursorline' is set.
+Solution:   Don't check for 'cursorline'. (Quentin Carbonneaux)
+Files:     src/screen.c
+
+
+*** ../vim-7.3.139/src/screen.c        2011-02-09 17:09:26.000000000 +0100
+--- src/screen.c       2011-03-22 13:29:04.000000000 +0100
+***************
+*** 5099,5109 ****
+  #ifdef FEAT_DIFF
+                   || filler_todo > 0
+  #endif
+!                  || (wp->w_p_list && lcs_eol != NUL && p_extra != at_end_str
+! #ifdef FEAT_SYN_HL
+!                         && !wp->w_p_cul
+! #endif
+!                      )
+                   || (n_extra != 0 && (c_extra != NUL || *p_extra != NUL)))
+               )
+       {
+--- 5099,5105 ----
+  #ifdef FEAT_DIFF
+                   || filler_todo > 0
+  #endif
+!                  || (wp->w_p_list && lcs_eol != NUL && p_extra != at_end_str)
+                   || (n_extra != 0 && (c_extra != NUL || *p_extra != NUL)))
+               )
+       {
+*** ../vim-7.3.139/src/version.c       2011-03-22 13:07:19.000000000 +0100
+--- src/version.c      2011-03-22 13:27:26.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     140,
+  /**/
+
+-- 
+Lawmakers made it obligatory for everybody to take at least one bath
+each week -- on Saturday night.
+               [real standing law in Vermont, United States of America]
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.3.141 b/7.3.141
new file mode 100644 (file)
index 0000000..deb001b
--- /dev/null
+++ b/7.3.141
@@ -0,0 +1,94 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.141
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.141
+Problem:    When a key code is not set get a confusing error message.
+Solution:   Change the error message to say the key code is not set.
+Files:     src/option.c, runtime/doc/options.txt
+
+
+*** ../vim-7.3.140/src/option.c        2011-01-22 00:11:42.000000000 +0100
+--- src/option.c       2011-03-22 14:25:52.000000000 +0100
+***************
+*** 4352,4358 ****
+                   p = find_termcode(key_name);
+                   if (p == NULL)
+                   {
+!                      errmsg = (char_u *)N_("E518: Unknown option");
+                       goto skip;
+                   }
+                   else
+--- 4352,4358 ----
+                   p = find_termcode(key_name);
+                   if (p == NULL)
+                   {
+!                      errmsg = (char_u *)N_("E846: Key code not set");
+                       goto skip;
+                   }
+                   else
+***************
+*** 4700,4707 ****
+                                               || s[i] == ','
+                                               || s[i] == NUL))
+                                       break;
+!                                  /* Count backspaces.  Only a comma with an
+!                                   * even number of backspaces before it is
+                                    * recognized as a separator */
+                                   if (s > origval && s[-1] == '\\')
+                                       ++bs;
+--- 4700,4707 ----
+                                               || s[i] == ','
+                                               || s[i] == NUL))
+                                       break;
+!                                  /* Count backslashes.  Only a comma with an
+!                                   * even number of backslashes before it is
+                                    * recognized as a separator */
+                                   if (s > origval && s[-1] == '\\')
+                                       ++bs;
+*** ../vim-7.3.140/runtime/doc/options.txt     2010-12-02 21:43:10.000000000 +0100
+--- runtime/doc/options.txt    2011-03-22 14:32:14.000000000 +0100
+***************
+*** 150,155 ****
+--- 150,167 ----
+  (the ^[ is a real <Esc> here, use CTRL-V <Esc> to enter it)
+  The advantage over a mapping is that it works in all situations.
+  
++ You can define any key codes, e.g.: >
++      :set t_xy=^[foo;
++ There is no warning for using a name that isn't recognized.  You can map these
++ codes as you like: >
++      :map <t_xy> something
++ <                                                            *E846*
++ When a key code is not set, it's like it does not exist.  Trying to get its
++ value will result in an error: >
++      :set t_kb=
++      :set t_kb
++      E846: Key code not set: t_kb
++ 
+  The t_xx options cannot be set from a |modeline| or in the |sandbox|, for
+  security reasons.
+  
+*** ../vim-7.3.140/src/version.c       2011-03-22 13:29:20.000000000 +0100
+--- src/version.c      2011-03-22 14:32:59.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     141,
+  /**/
+
+-- 
+"I know that there are people who don't love their fellow man,
+and I hate those people!" - Tom Lehrer
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.3.142 b/7.3.142
new file mode 100644 (file)
index 0000000..6574f71
--- /dev/null
+++ b/7.3.142
@@ -0,0 +1,85 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.142
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.142
+Problem:    Python stdout doesn't have a flush() method, causing an import to
+           fail.
+Solution:   Add a dummy flush() method. (Tobias Columbus)
+Files:     src/if_py_both.h
+
+
+*** ../vim-7.3.141/src/if_py_both.h    2010-10-27 12:17:54.000000000 +0200
+--- src/if_py_both.h   2011-03-22 15:37:43.000000000 +0100
+***************
+*** 33,38 ****
+--- 33,39 ----
+  
+  static PyObject *OutputWrite(PyObject *, PyObject *);
+  static PyObject *OutputWritelines(PyObject *, PyObject *);
++ static PyObject *OutputFlush(PyObject *, PyObject *);
+  
+  /* Function to write a line, points to either msg() or emsg(). */
+  typedef void (*writefn)(char_u *);
+***************
+*** 47,55 ****
+  
+  static struct PyMethodDef OutputMethods[] = {
+      /* name,     function,           calling,    documentation */
+!     {"write",            OutputWrite,        1,          "" },
+!     {"writelines",  OutputWritelines,        1,          "" },
+!     { NULL,      NULL,               0,          NULL }
+  };
+  
+  #define PyErr_SetVim(str) PyErr_SetString(VimError, str)
+--- 48,57 ----
+  
+  static struct PyMethodDef OutputMethods[] = {
+      /* name,     function,           calling,    documentation */
+!     {"write",            OutputWrite,        1,          ""},
+!     {"writelines",  OutputWritelines,        1,          ""},
+!     {"flush",       OutputFlush,        1,          ""},
+!     { NULL,      NULL,               0,          NULL}
+  };
+  
+  #define PyErr_SetVim(str) PyErr_SetString(VimError, str)
+***************
+*** 123,128 ****
+--- 125,139 ----
+      return Py_None;
+  }
+  
++     static PyObject *
++ OutputFlush(PyObject *self UNUSED, PyObject *args UNUSED)
++ {
++     /* do nothing */
++     Py_INCREF(Py_None);
++     return Py_None;
++ }
++ 
++ 
+  /* Buffer IO, we write one whole line at a time. */
+  static garray_T io_ga = {0, 0, 1, 80, NULL};
+  static writefn old_fn = NULL;
+*** ../vim-7.3.141/src/version.c       2011-03-22 14:35:01.000000000 +0100
+--- src/version.c      2011-03-22 15:45:38.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     142,
+  /**/
+
+-- 
+Living on Earth includes an annual free trip around the Sun.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.3.143 b/7.3.143
new file mode 100644 (file)
index 0000000..82585b0
--- /dev/null
+++ b/7.3.143
@@ -0,0 +1,1520 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.143
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.143
+Problem:    Memfile is not tested sufficiently.  Looking up blocks in a
+           memfile is slow when there are many blocks.
+Solution:   Add high level test and unittest.  Adjust the number of hash
+           buckets to the number of blocks.  (Ivan Krasilnikov)
+Files:     Filelist, src/Makefile, src/main.c, src/memfile.c,
+           src/memfile_test.c src/structs.h src/testdir/Make_amiga.mak,
+           src/testdir/Make_dos.mak, src/testdir/Make_ming.mak,
+           src/testdir/Make_os2.mak, src/testdir/Make_vms.mak,
+           src/testdir/Makefile, src/testdir/test77.in, src/testdir/test77.ok
+
+
+*** ../vim-7.3.142/Filelist    2010-08-15 21:57:20.000000000 +0200
+--- Filelist   2011-03-22 17:39:22.000000000 +0100
+***************
+*** 39,44 ****
+--- 39,45 ----
+               src/mark.c \
+               src/mbyte.c \
+               src/memfile.c \
++              src/memfile_test.c \
+               src/memline.c \
+               src/menu.c \
+               src/message.c \
+***************
+*** 686,691 ****
+--- 687,694 ----
+               runtime/tutor/tutor.utf-8 \
+               runtime/tutor/tutor.?? \
+               runtime/tutor/tutor.??.* \
++              runtime/tutor/tutor.bar \
++              runtime/tutor/tutor.bar.* \
+               runtime/spell/README.txt \
+               runtime/spell/??/*.diff \
+               runtime/spell/??/main.aap \
+*** ../vim-7.3.142/src/Makefile        2011-02-15 15:27:00.000000000 +0100
+--- src/Makefile       2011-03-22 18:07:25.000000000 +0100
+***************
+*** 561,567 ****
+  #CFLAGS = -g -O2 '-DSTARTUPTIME="vimstartup"' -fno-strength-reduce -Wall -Wmissing-prototypes
+  
+  # Use this with GCC to check for mistakes, unused arguments, etc.
+! #CFLAGS = -g -Wall -Wextra -Wmissing-prototypes -Wunreachable-code -D_FORTIFY_SOURCE=1 -DU_DEBUG
+  #CFLAGS = -g -O2 -Wall -Wextra -Wmissing-prototypes -D_FORTIFY_SOURCE=1 -DU_DEBUG
+  #PYTHON_CFLAGS_EXTRA = -Wno-missing-field-initializers
+  #MZSCHEME_CFLAGS_EXTRA = -Wno-unreachable-code -Wno-unused-parameter
+--- 561,567 ----
+  #CFLAGS = -g -O2 '-DSTARTUPTIME="vimstartup"' -fno-strength-reduce -Wall -Wmissing-prototypes
+  
+  # Use this with GCC to check for mistakes, unused arguments, etc.
+! #CFLAGS = -g -Wall -Wextra -Wmissing-prototypes -Wunreachable-code -D_FORTIFY_SOURCE=1
+  #CFLAGS = -g -O2 -Wall -Wextra -Wmissing-prototypes -D_FORTIFY_SOURCE=1 -DU_DEBUG
+  #PYTHON_CFLAGS_EXTRA = -Wno-missing-field-initializers
+  #MZSCHEME_CFLAGS_EXTRA = -Wno-unreachable-code -Wno-unused-parameter
+***************
+*** 594,601 ****
+  
+  # PROFILING - Uncomment the next two lines to do profiling with gcc and gprof.
+  # Might not work with GUI or Perl.
+! # For unknown reasons adding "-lc" fixes a linking problem with GCC.  That's
+! # probably a bug in the "-pg" implementation.
+  # Need to recompile everything after changing this: "make clean" "make".
+  #PROFILE_CFLAGS = -pg -g -DWE_ARE_PROFILING
+  #PROFILE_LIBS = -pg
+--- 594,602 ----
+  
+  # PROFILING - Uncomment the next two lines to do profiling with gcc and gprof.
+  # Might not work with GUI or Perl.
+! # For unknown reasons adding "-lc" fixes a linking problem with some versions
+! # of GCC.  That's probably a bug in the "-pg" implementation.
+! # After running Vim see the profile result with: gmon vim gmon.out | vim -
+  # Need to recompile everything after changing this: "make clean" "make".
+  #PROFILE_CFLAGS = -pg -g -DWE_ARE_PROFILING
+  #PROFILE_LIBS = -pg
+***************
+*** 606,613 ****
+  # Configuration is in the .ccmalloc or ~/.ccmalloc file.
+  # Doesn't work very well, since memory linked to from global variables
+  # (in libraries) is also marked as leaked memory.
+! #PROFILE_CFLAGS = -DEXITFREE
+! #PROFILE_LIBS = -lccmalloc
+  
+  #####################################################
+  ###  Specific systems, check if yours is listed!  ### {{{
+--- 607,614 ----
+  # Configuration is in the .ccmalloc or ~/.ccmalloc file.
+  # Doesn't work very well, since memory linked to from global variables
+  # (in libraries) is also marked as leaked memory.
+! #LEAK_CFLAGS = -DEXITFREE
+! #LEAK_LIBS = -lccmalloc
+  
+  #####################################################
+  ###  Specific systems, check if yours is listed!  ### {{{
+***************
+*** 1329,1335 ****
+  PRE_DEFS = -Iproto $(DEFS) $(GUI_DEFS) $(GUI_IPATH) $(CPPFLAGS) $(EXTRA_IPATHS)
+  POST_DEFS = $(X_CFLAGS) $(MZSCHEME_CFLAGS) $(TCL_CFLAGS) $(EXTRA_DEFS)
+  
+! ALL_CFLAGS = $(PRE_DEFS) $(CFLAGS) $(PROFILE_CFLAGS) $(POST_DEFS)
+  
+  # Exclude $CFLAGS for osdef.sh, for Mac 10.4 some flags don't work together
+  # with "-E".
+--- 1330,1336 ----
+  PRE_DEFS = -Iproto $(DEFS) $(GUI_DEFS) $(GUI_IPATH) $(CPPFLAGS) $(EXTRA_IPATHS)
+  POST_DEFS = $(X_CFLAGS) $(MZSCHEME_CFLAGS) $(TCL_CFLAGS) $(EXTRA_DEFS)
+  
+! ALL_CFLAGS = $(PRE_DEFS) $(CFLAGS) $(PROFILE_CFLAGS) $(LEAK_CFLAGS) $(POST_DEFS)
+  
+  # Exclude $CFLAGS for osdef.sh, for Mac 10.4 some flags don't work together
+  # with "-E".
+***************
+*** 1358,1364 ****
+          $(PYTHON3_LIBS) \
+          $(TCL_LIBS) \
+          $(RUBY_LIBS) \
+!         $(PROFILE_LIBS)
+  
+  # abbreviations
+  DEST_BIN = $(DESTDIR)$(BINDIR)
+--- 1359,1366 ----
+          $(PYTHON3_LIBS) \
+          $(TCL_LIBS) \
+          $(RUBY_LIBS) \
+!         $(PROFILE_LIBS) \
+!         $(LEAK_LIBS)
+  
+  # abbreviations
+  DEST_BIN = $(DESTDIR)$(BINDIR)
+***************
+*** 1480,1487 ****
+           if_python.c if_python3.c if_tcl.c if_ruby.c if_sniff.c \
+           gui_beval.c workshop.c wsdebug.c integration.c netbeans.c
+  
+  # All sources, also the ones that are not configured
+! ALL_SRC = $(BASIC_SRC) $(ALL_GUI_SRC) $(EXTRA_SRC)
+  
+  # Which files to check with lint.  Select one of these three lines.  ALL_SRC
+  # checks more, but may not work well for checking a GUI that wasn't configured.
+--- 1482,1496 ----
+           if_python.c if_python3.c if_tcl.c if_ruby.c if_sniff.c \
+           gui_beval.c workshop.c wsdebug.c integration.c netbeans.c
+  
++ # Unittest files
++ MEMFILE_TEST_SRC = memfile_test.c
++ MEMFILE_TEST_TARGET = memfile_test$(EXEEXT)
++ 
++ UNITTEST_SRC = $(MEMFILE_TEST_SRC)
++ UNITTEST_TARGETS = $(MEMFILE_TEST_TARGET)
++ 
+  # All sources, also the ones that are not configured
+! ALL_SRC = $(BASIC_SRC) $(ALL_GUI_SRC) $(UNITTEST_SRC) $(EXTRA_SRC)
+  
+  # Which files to check with lint.  Select one of these three lines.  ALL_SRC
+  # checks more, but may not work well for checking a GUI that wasn't configured.
+***************
+*** 1492,1498 ****
+  #LINT_SRC = $(ALL_SRC)
+  #LINT_SRC = $(BASIC_SRC)
+  
+! OBJ = \
+       objects/buffer.o \
+       objects/blowfish.o \
+       objects/charset.o \
+--- 1501,1507 ----
+  #LINT_SRC = $(ALL_SRC)
+  #LINT_SRC = $(BASIC_SRC)
+  
+! OBJ_COMMON = \
+       objects/buffer.o \
+       objects/blowfish.o \
+       objects/charset.o \
+***************
+*** 1513,1522 ****
+       $(HANGULIN_OBJ) \
+       objects/if_cscope.o \
+       objects/if_xcmdsrv.o \
+-      objects/main.o \
+       objects/mark.o \
+!      objects/memfile.o \
+!      objects/memline.o \
+       objects/menu.o \
+       objects/message.o \
+       objects/misc1.o \
+--- 1522,1529 ----
+       $(HANGULIN_OBJ) \
+       objects/if_cscope.o \
+       objects/if_xcmdsrv.o \
+       objects/mark.o \
+!         objects/memline.o \
+       objects/menu.o \
+       objects/message.o \
+       objects/misc1.o \
+***************
+*** 1541,1546 ****
+--- 1548,1554 ----
+       objects/term.o \
+       objects/ui.o \
+       objects/undo.o \
++      objects/version.o \
+       objects/window.o \
+       $(GUI_OBJ) \
+       $(LUA_OBJ) \
+***************
+*** 1555,1560 ****
+--- 1563,1575 ----
+       $(NETBEANS_OBJ) \
+       $(WSDEBUG_OBJ)
+  
++ OBJ = $(OBJ_COMMON) \
++      objects/main.o \
++      objects/memfile.o \
++ 
++ MEMFILE_TEST_OBJ = $(OBJ_COMMON) \
++         objects/memfile_test.o
++ 
+  PRO_AUTO = \
+       blowfish.pro \
+       buffer.pro \
+***************
+*** 1700,1706 ****
+  $(VIMTARGET): auto/config.mk objects $(OBJ) version.c version.h
+       $(CCC) version.c -o objects/version.o
+       @LINK="$(PURIFY) $(SHRPENV) $(CClink) $(ALL_LIB_DIRS) $(LDFLAGS) \
+!              -o $(VIMTARGET) $(OBJ) objects/version.o $(ALL_LIBS)" \
+               MAKE="$(MAKE)" LINK_AS_NEEDED=$(LINK_AS_NEEDED) \
+               sh $(srcdir)/link.sh
+  
+--- 1715,1721 ----
+  $(VIMTARGET): auto/config.mk objects $(OBJ) version.c version.h
+       $(CCC) version.c -o objects/version.o
+       @LINK="$(PURIFY) $(SHRPENV) $(CClink) $(ALL_LIB_DIRS) $(LDFLAGS) \
+!              -o $(VIMTARGET) $(OBJ) $(ALL_LIBS)" \
+               MAKE="$(MAKE)" LINK_AS_NEEDED=$(LINK_AS_NEEDED) \
+               sh $(srcdir)/link.sh
+  
+***************
+*** 1825,1830 ****
+--- 1840,1854 ----
+               ln -s $(VIMTARGET) vim; \
+       fi
+       cd testdir; $(MAKE) -f Makefile $(GUI_TESTTARGET) VIMPROG=../$(VIMTARGET) $(GUI_TESTARG)
++      $(MAKE) -f Makefile unittest
++ 
++ unittesttargets:
++      $(MAKE) -f Makefile $(UNITTEST_TARGETS)
++ 
++ unittest unittests: $(UNITTEST_TARGETS)
++      @for t in $(UNITTEST_TARGETS); do \
++              ./$$t || exit 1; echo $$t passed; \
++      done
+  
+  testclean:
+       cd testdir; $(MAKE) -f Makefile clean
+***************
+*** 1832,1837 ****
+--- 1856,1872 ----
+               cd $(PODIR); $(MAKE) checkclean; \
+       fi
+  
++ # Unittests
++ # It's build just like Vim to satisfy all dependencies.
++ $(MEMFILE_TEST_TARGET): auto/config.mk objects $(MEMFILE_TEST_OBJ)
++      $(CCC) version.c -o objects/version.o
++      @LINK="$(PURIFY) $(SHRPENV) $(CClink) $(ALL_LIB_DIRS) $(LDFLAGS) \
++              -o $(MEMFILE_TEST_TARGET) $(MEMFILE_TEST_OBJ) $(ALL_LIBS)" \
++              MAKE="$(MAKE)" LINK_AS_NEEDED=$(LINK_AS_NEEDED) \
++              sh $(srcdir)/link.sh
++ 
++ # install targets
++ 
+  install: $(GUI_INSTALL)
+  
+  install_normal: installvim installtools $(INSTALL_LANGS) install-icons
+***************
+*** 2265,2270 ****
+--- 2300,2306 ----
+       -rm -f *.o objects/* core $(VIMTARGET).core $(VIMTARGET) vim xxd/*.o
+       -rm -f $(TOOLS) auto/osdef.h auto/pathdef.c auto/if_perl.c
+       -rm -f conftest* *~ auto/link.sed
++      -rm -f $(UNITTEST_TARGETS)
+       -rm -f runtime pixmaps
+       -rm -rf $(APPDIR)
+       -rm -rf mzscheme_base.c
+***************
+*** 2559,2564 ****
+--- 2595,2603 ----
+  objects/memfile.o: memfile.c
+       $(CCC) -o $@ memfile.c
+  
++ objects/memfile_test.o: memfile_test.c
++      $(CCC) -o $@ memfile_test.c
++ 
+  objects/memline.o: memline.c
+       $(CCC) -o $@ memline.c
+  
+***************
+*** 2877,2883 ****
+  objects/os_unix.o: os_unix.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
+   ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
+   gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h globals.h farsi.h \
+!  arabic.h if_mzsch.h os_unixx.h
+  objects/pathdef.o: auto/pathdef.c vim.h auto/config.h feature.h os_unix.h \
+   auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
+   regexp.h gui.h gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h \
+--- 2916,2922 ----
+  objects/os_unix.o: os_unix.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
+   ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
+   gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h globals.h farsi.h \
+!  arabic.h os_unixx.h
+  objects/pathdef.o: auto/pathdef.c vim.h auto/config.h feature.h os_unix.h \
+   auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
+   regexp.h gui.h gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h \
+***************
+*** 3016,3021 ****
+--- 3055,3064 ----
+  objects/pty.o: pty.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h ascii.h \
+   keymap.h term.h macros.h option.h structs.h regexp.h gui.h gui_beval.h \
+   proto/gui_beval.pro ex_cmds.h proto.h globals.h farsi.h arabic.h
++ objects/memfile_test.o: memfile_test.c main.c vim.h auto/config.h feature.h \
++  os_unix.h auto/osdef.h ascii.h keymap.h term.h macros.h option.h \
++  structs.h regexp.h gui.h gui_beval.h proto/gui_beval.pro ex_cmds.h \
++  proto.h globals.h farsi.h arabic.h farsi.c arabic.c memfile.c
+  objects/hangulin.o: hangulin.c vim.h auto/config.h feature.h os_unix.h \
+   auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
+   regexp.h gui.h gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h \
+***************
+*** 3027,3033 ****
+  objects/if_mzsch.o: if_mzsch.c vim.h auto/config.h feature.h os_unix.h \
+   auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
+   regexp.h gui.h gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h \
+!  globals.h farsi.h arabic.h if_mzsch.h mzscheme_base.c
+  objects/if_perl.o: auto/if_perl.c vim.h auto/config.h feature.h os_unix.h \
+   auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
+   regexp.h gui.h gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h \
+--- 3070,3076 ----
+  objects/if_mzsch.o: if_mzsch.c vim.h auto/config.h feature.h os_unix.h \
+   auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
+   regexp.h gui.h gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h \
+!  globals.h farsi.h arabic.h if_mzsch.h
+  objects/if_perl.o: auto/if_perl.c vim.h auto/config.h feature.h os_unix.h \
+   auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
+   regexp.h gui.h gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h \
+***************
+*** 3048,3054 ****
+   ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
+   gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h globals.h farsi.h \
+   arabic.h
+! objects/if_ruby.o: if_ruby.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
+   ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
+   gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h globals.h farsi.h \
+   arabic.h version.h
+--- 3091,3097 ----
+   ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
+   gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h globals.h farsi.h \
+   arabic.h
+! objects/if_ruby.o: if_ruby.c auto/config.h vim.h feature.h os_unix.h auto/osdef.h \
+   ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
+   gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h globals.h farsi.h \
+   arabic.h version.h
+*** ../vim-7.3.142/src/main.c  2011-02-15 16:29:54.000000000 +0100
+--- src/main.c 2011-03-18 13:19:48.000000000 +0100
+***************
+*** 92,128 ****
+  #define EDIT_TAG    3            /* tag name argument given, use tagname */
+  #define EDIT_QF          4       /* start in quickfix mode */
+  
+! #if defined(UNIX) || defined(VMS)
+  static int file_owned __ARGS((char *fname));
+  #endif
+  static void mainerr __ARGS((int, char_u *));
+  static void main_msg __ARGS((char *s));
+  static void usage __ARGS((void));
+  static int get_number_arg __ARGS((char_u *p, int *idx, int def));
+! #if defined(HAVE_LOCALE_H) || defined(X_LOCALE)
+  static void init_locale __ARGS((void));
+! #endif
+  static void parse_command_name __ARGS((mparm_T *parmp));
+  static void early_arg_scan __ARGS((mparm_T *parmp));
+  static void command_line_scan __ARGS((mparm_T *parmp));
+  static void check_tty __ARGS((mparm_T *parmp));
+  static void read_stdin __ARGS((void));
+  static void create_windows __ARGS((mparm_T *parmp));
+! #ifdef FEAT_WINDOWS
+  static void edit_buffers __ARGS((mparm_T *parmp));
+! #endif
+  static void exe_pre_commands __ARGS((mparm_T *parmp));
+  static void exe_commands __ARGS((mparm_T *parmp));
+  static void source_startup_scripts __ARGS((mparm_T *parmp));
+  static void main_start_gui __ARGS((void));
+! #if defined(HAS_SWAP_EXISTS_ACTION)
+  static void check_swap_exists_action __ARGS((void));
+! #endif
+! #ifdef FEAT_CLIENTSERVER
+  static void exec_on_server __ARGS((mparm_T *parmp));
+  static void prepare_server __ARGS((mparm_T *parmp));
+  static void cmdsrv_main __ARGS((int *argc, char **argv, char_u *serverName_arg, char_u **serverStr));
+  static char_u *serverMakeName __ARGS((char_u *arg, char *cmd));
+  #endif
+  
+  
+--- 92,130 ----
+  #define EDIT_TAG    3            /* tag name argument given, use tagname */
+  #define EDIT_QF          4       /* start in quickfix mode */
+  
+! #if (defined(UNIX) || defined(VMS)) && !defined(NO_VIM_MAIN)
+  static int file_owned __ARGS((char *fname));
+  #endif
+  static void mainerr __ARGS((int, char_u *));
++ #ifndef NO_VIM_MAIN
+  static void main_msg __ARGS((char *s));
+  static void usage __ARGS((void));
+  static int get_number_arg __ARGS((char_u *p, int *idx, int def));
+! # if defined(HAVE_LOCALE_H) || defined(X_LOCALE)
+  static void init_locale __ARGS((void));
+! # endif
+  static void parse_command_name __ARGS((mparm_T *parmp));
+  static void early_arg_scan __ARGS((mparm_T *parmp));
+  static void command_line_scan __ARGS((mparm_T *parmp));
+  static void check_tty __ARGS((mparm_T *parmp));
+  static void read_stdin __ARGS((void));
+  static void create_windows __ARGS((mparm_T *parmp));
+! # ifdef FEAT_WINDOWS
+  static void edit_buffers __ARGS((mparm_T *parmp));
+! # endif
+  static void exe_pre_commands __ARGS((mparm_T *parmp));
+  static void exe_commands __ARGS((mparm_T *parmp));
+  static void source_startup_scripts __ARGS((mparm_T *parmp));
+  static void main_start_gui __ARGS((void));
+! # if defined(HAS_SWAP_EXISTS_ACTION)
+  static void check_swap_exists_action __ARGS((void));
+! # endif
+! # if defined(FEAT_CLIENTSERVER) || defined(PROTO)
+  static void exec_on_server __ARGS((mparm_T *parmp));
+  static void prepare_server __ARGS((mparm_T *parmp));
+  static void cmdsrv_main __ARGS((int *argc, char **argv, char_u *serverName_arg, char_u **serverStr));
+  static char_u *serverMakeName __ARGS((char_u *arg, char *cmd));
++ # endif
+  #endif
+  
+  
+***************
+*** 145,151 ****
+  #define ME_INVALID_ARG               5
+  };
+  
+! #ifndef PROTO            /* don't want a prototype for main() */
+      int
+  # ifdef VIMDLL
+  _export
+--- 147,154 ----
+  #define ME_INVALID_ARG               5
+  };
+  
+! #ifndef NO_VIM_MAIN  /* skip this for unittests */
+! #ifndef PROTO                /* don't want a prototype for main() */
+      int
+  # ifdef VIMDLL
+  _export
+***************
+*** 966,971 ****
+--- 969,975 ----
+      return 0;
+  }
+  #endif /* PROTO */
++ #endif /* NO_VIM_MAIN */
+  
+  /*
+   * Main loop: Execute Normal mode commands until exiting Vim.
+***************
+*** 1430,1435 ****
+--- 1434,1440 ----
+      mch_exit(exitval);
+  }
+  
++ #ifndef NO_VIM_MAIN
+  /*
+   * Get a (optional) count for a Vim argument.
+   */
+***************
+*** 2994,2999 ****
+--- 2999,3006 ----
+  #endif
+  }
+  
++ #endif  /* NO_VIM_MAIN */
++ 
+  /*
+   * Get an environment variable, and execute it as Ex commands.
+   * Returns FAIL if the environment variable was not executed, OK otherwise.
+***************
+*** 3033,3039 ****
+      return FAIL;
+  }
+  
+! #if defined(UNIX) || defined(VMS)
+  /*
+   * Return TRUE if we are certain the user owns the file "fname".
+   * Used for ".vimrc" and ".exrc".
+--- 3040,3046 ----
+      return FAIL;
+  }
+  
+! #if (defined(UNIX) || defined(VMS)) && !defined(NO_VIM_MAIN)
+  /*
+   * Return TRUE if we are certain the user owns the file "fname".
+   * Used for ".vimrc" and ".exrc".
+***************
+*** 3091,3096 ****
+--- 3098,3104 ----
+      mainerr(ME_ARG_MISSING, str);
+  }
+  
++ #ifndef NO_VIM_MAIN
+  /*
+   * print a message with three spaces prepended and '\n' appended.
+   */
+***************
+*** 3311,3316 ****
+--- 3319,3326 ----
+  }
+  #endif
+  
++ #endif
++ 
+  #if defined(STARTUPTIME) || defined(PROTO)
+  static void time_diff __ARGS((struct timeval *then, struct timeval *now));
+  
+***************
+*** 3420,3426 ****
+  
+  #endif
+  
+! #if defined(FEAT_CLIENTSERVER) || defined(PROTO)
+  
+  /*
+   * Common code for the X command server and the Win32 command server.
+--- 3430,3436 ----
+  
+  #endif
+  
+! #if (defined(FEAT_CLIENTSERVER) && !defined(NO_VIM_MAIN)) || defined(PROTO)
+  
+  /*
+   * Common code for the X command server and the Win32 command server.
+***************
+*** 3888,3893 ****
+--- 3898,3929 ----
+  }
+  
+  /*
++  * Make our basic server name: use the specified "arg" if given, otherwise use
++  * the tail of the command "cmd" we were started with.
++  * Return the name in allocated memory.  This doesn't include a serial number.
++  */
++     static char_u *
++ serverMakeName(arg, cmd)
++     char_u   *arg;
++     char     *cmd;
++ {
++     char_u *p;
++ 
++     if (arg != NULL && *arg != NUL)
++      p = vim_strsave_up(arg);
++     else
++     {
++      p = vim_strsave_up(gettail((char_u *)cmd));
++      /* Remove .exe or .bat from the name. */
++      if (p != NULL && vim_strchr(p, '.') != NULL)
++          *vim_strchr(p, '.') = NUL;
++     }
++     return p;
++ }
++ #endif /* FEAT_CLIENTSERVER */
++ 
++ #if defined(FEAT_CLIENTSERVER) || defined(PROTO)
++ /*
+   * Replace termcodes such as <CR> and insert as key presses if there is room.
+   */
+      void
+***************
+*** 3998,4029 ****
+  # endif
+      return res;
+  }
+! 
+! 
+! /*
+!  * Make our basic server name: use the specified "arg" if given, otherwise use
+!  * the tail of the command "cmd" we were started with.
+!  * Return the name in allocated memory.  This doesn't include a serial number.
+!  */
+!     static char_u *
+! serverMakeName(arg, cmd)
+!     char_u   *arg;
+!     char     *cmd;
+! {
+!     char_u *p;
+! 
+!     if (arg != NULL && *arg != NUL)
+!      p = vim_strsave_up(arg);
+!     else
+!     {
+!      p = vim_strsave_up(gettail((char_u *)cmd));
+!      /* Remove .exe or .bat from the name. */
+!      if (p != NULL && vim_strchr(p, '.') != NULL)
+!          *vim_strchr(p, '.') = NUL;
+!     }
+!     return p;
+! }
+! #endif /* FEAT_CLIENTSERVER */
+  
+  /*
+   * When FEAT_FKMAP is defined, also compile the Farsi source code.
+--- 4034,4040 ----
+  # endif
+      return res;
+  }
+! #endif
+  
+  /*
+   * When FEAT_FKMAP is defined, also compile the Farsi source code.
+*** ../vim-7.3.142/src/memfile.c       2010-12-17 18:06:00.000000000 +0100
+--- src/memfile.c      2011-03-03 18:47:39.000000000 +0100
+***************
+*** 84,89 ****
+--- 84,96 ----
+  static int  mf_write_block __ARGS((memfile_T *mfp, bhdr_T *hp, off_t offset, unsigned size));
+  static int  mf_trans_add __ARGS((memfile_T *, bhdr_T *));
+  static void mf_do_open __ARGS((memfile_T *, char_u *, int));
++ static void mf_hash_init __ARGS((mf_hashtab_T *));
++ static void mf_hash_free __ARGS((mf_hashtab_T *));
++ static void mf_hash_free_all __ARGS((mf_hashtab_T *));
++ static mf_hashitem_T *mf_hash_find __ARGS((mf_hashtab_T *, blocknr_T));
++ static void mf_hash_add_item __ARGS((mf_hashtab_T *, mf_hashitem_T *));
++ static void mf_hash_rem_item __ARGS((mf_hashtab_T *, mf_hashitem_T *));
++ static int mf_hash_grow __ARGS((mf_hashtab_T *));
+  
+  /*
+   * The functions for using a memfile:
+***************
+*** 119,125 ****
+      int              flags;
+  {
+      memfile_T                *mfp;
+-     int                      i;
+      off_t            size;
+  #if defined(STATFS) && defined(UNIX) && !defined(__QNX__)
+  # define USE_FSTATFS
+--- 126,131 ----
+***************
+*** 152,162 ****
+      mfp->mf_used_last = NULL;
+      mfp->mf_dirty = FALSE;
+      mfp->mf_used_count = 0;
+!     for (i = 0; i < MEMHASHSIZE; ++i)
+!     {
+!      mfp->mf_hash[i] = NULL;         /* hash lists are empty */
+!      mfp->mf_trans[i] = NULL;        /* trans lists are empty */
+!     }
+      mfp->mf_page_size = MEMFILE_PAGE_SIZE;
+  #ifdef FEAT_CRYPT
+      mfp->mf_old_key = NULL;
+--- 158,165 ----
+      mfp->mf_used_last = NULL;
+      mfp->mf_dirty = FALSE;
+      mfp->mf_used_count = 0;
+!     mf_hash_init(&mfp->mf_hash);
+!     mf_hash_init(&mfp->mf_trans);
+      mfp->mf_page_size = MEMFILE_PAGE_SIZE;
+  #ifdef FEAT_CRYPT
+      mfp->mf_old_key = NULL;
+***************
+*** 242,249 ****
+      int              del_file;
+  {
+      bhdr_T   *hp, *nextp;
+-     NR_TRANS *tp, *tpnext;
+-     int              i;
+  
+      if (mfp == NULL)             /* safety check */
+       return;
+--- 245,250 ----
+***************
+*** 263,274 ****
+      }
+      while (mfp->mf_free_first != NULL)           /* free entries in free list */
+       vim_free(mf_rem_free(mfp));
+!     for (i = 0; i < MEMHASHSIZE; ++i)            /* free entries in trans lists */
+!      for (tp = mfp->mf_trans[i]; tp != NULL; tp = tpnext)
+!      {
+!          tpnext = tp->nt_next;
+!          vim_free(tp);
+!      }
+      vim_free(mfp->mf_fname);
+      vim_free(mfp->mf_ffname);
+      vim_free(mfp);
+--- 264,271 ----
+      }
+      while (mfp->mf_free_first != NULL)           /* free entries in free list */
+       vim_free(mf_rem_free(mfp));
+!     mf_hash_free(&mfp->mf_hash);
+!     mf_hash_free_all(&mfp->mf_trans);            /* free hashtable and its items */
+      vim_free(mfp->mf_fname);
+      vim_free(mfp->mf_ffname);
+      vim_free(mfp);
+***************
+*** 743,758 ****
+      memfile_T        *mfp;
+      bhdr_T   *hp;
+  {
+!     bhdr_T   *hhp;
+!     int              hash;
+! 
+!     hash = MEMHASH(hp->bh_bnum);
+!     hhp = mfp->mf_hash[hash];
+!     hp->bh_hash_next = hhp;
+!     hp->bh_hash_prev = NULL;
+!     if (hhp != NULL)
+!      hhp->bh_hash_prev = hp;
+!     mfp->mf_hash[hash] = hp;
+  }
+  
+  /*
+--- 740,746 ----
+      memfile_T        *mfp;
+      bhdr_T   *hp;
+  {
+!     mf_hash_add_item(&mfp->mf_hash, (mf_hashitem_T *)hp);
+  }
+  
+  /*
+***************
+*** 763,775 ****
+      memfile_T        *mfp;
+      bhdr_T   *hp;
+  {
+!     if (hp->bh_hash_prev == NULL)
+!      mfp->mf_hash[MEMHASH(hp->bh_bnum)] = hp->bh_hash_next;
+!     else
+!      hp->bh_hash_prev->bh_hash_next = hp->bh_hash_next;
+! 
+!     if (hp->bh_hash_next)
+!      hp->bh_hash_next->bh_hash_prev = hp->bh_hash_prev;
+  }
+  
+  /*
+--- 751,757 ----
+      memfile_T        *mfp;
+      bhdr_T   *hp;
+  {
+!     mf_hash_rem_item(&mfp->mf_hash, (mf_hashitem_T *)hp);
+  }
+  
+  /*
+***************
+*** 780,791 ****
+      memfile_T        *mfp;
+      blocknr_T        nr;
+  {
+!     bhdr_T   *hp;
+! 
+!     for (hp = mfp->mf_hash[MEMHASH(nr)]; hp != NULL; hp = hp->bh_hash_next)
+!      if (hp->bh_bnum == nr)
+!          break;
+!     return hp;
+  }
+  
+  /*
+--- 762,768 ----
+      memfile_T        *mfp;
+      blocknr_T        nr;
+  {
+!     return (bhdr_T *)mf_hash_find(&mfp->mf_hash, nr);
+  }
+  
+  /*
+***************
+*** 1187,1193 ****
+  {
+      bhdr_T   *freep;
+      blocknr_T        new_bnum;
+-     int              hash;
+      NR_TRANS *np;
+      int              page_count;
+  
+--- 1164,1169 ----
+***************
+*** 1235,1246 ****
+      hp->bh_bnum = new_bnum;
+      mf_ins_hash(mfp, hp);                /* insert in new hash list */
+  
+!     hash = MEMHASH(np->nt_old_bnum);     /* insert in trans list */
+!     np->nt_next = mfp->mf_trans[hash];
+!     mfp->mf_trans[hash] = np;
+!     if (np->nt_next != NULL)
+!      np->nt_next->nt_prev = np;
+!     np->nt_prev = NULL;
+  
+      return OK;
+  }
+--- 1211,1218 ----
+      hp->bh_bnum = new_bnum;
+      mf_ins_hash(mfp, hp);                /* insert in new hash list */
+  
+!     /* Insert "np" into "mf_trans" hashtable with key "np->nt_old_bnum" */
+!     mf_hash_add_item(&mfp->mf_trans, (mf_hashitem_T *)np);
+  
+      return OK;
+  }
+***************
+*** 1255,1279 ****
+      memfile_T        *mfp;
+      blocknr_T        old_nr;
+  {
+-     int              hash;
+      NR_TRANS *np;
+      blocknr_T        new_bnum;
+  
+!     hash = MEMHASH(old_nr);
+!     for (np = mfp->mf_trans[hash]; np != NULL; np = np->nt_next)
+!      if (np->nt_old_bnum == old_nr)
+!          break;
+      if (np == NULL)          /* not found */
+       return old_nr;
+  
+      mfp->mf_neg_count--;
+      new_bnum = np->nt_new_bnum;
+!     if (np->nt_prev != NULL)         /* remove entry from the trans list */
+!      np->nt_prev->nt_next = np->nt_next;
+!     else
+!      mfp->mf_trans[hash] = np->nt_next;
+!     if (np->nt_next != NULL)
+!      np->nt_next->nt_prev = np->nt_prev;
+      vim_free(np);
+  
+      return new_bnum;
+--- 1227,1246 ----
+      memfile_T        *mfp;
+      blocknr_T        old_nr;
+  {
+      NR_TRANS *np;
+      blocknr_T        new_bnum;
+  
+!     np = (NR_TRANS *)mf_hash_find(&mfp->mf_trans, old_nr);
+! 
+      if (np == NULL)          /* not found */
+       return old_nr;
+  
+      mfp->mf_neg_count--;
+      new_bnum = np->nt_new_bnum;
+! 
+!     /* remove entry from the trans list */
+!     mf_hash_rem_item(&mfp->mf_trans, (mf_hashitem_T *)np);
+! 
+      vim_free(np);
+  
+      return new_bnum;
+***************
+*** 1397,1399 ****
+--- 1364,1570 ----
+       mch_hide(mfp->mf_fname);    /* try setting the 'hidden' flag */
+      }
+  }
++ 
++ /*
++  * Implementation of mf_hashtab_T follows.
++  */
++ 
++ /*
++  * The number of buckets in the hashtable is increased by a factor of
++  * MHT_GROWTH_FACTOR when the average number of items per bucket
++  * exceeds 2 ^ MHT_LOG_LOAD_FACTOR.
++  */
++ #define MHT_LOG_LOAD_FACTOR 6
++ #define MHT_GROWTH_FACTOR   2   /* must be a power of two */
++ 
++ /*
++  * Initialize an empty hash table.
++  */
++     static void
++ mf_hash_init(mht)
++     mf_hashtab_T *mht;
++ {
++     vim_memset(mht, 0, sizeof(mf_hashtab_T));
++     mht->mht_buckets = mht->mht_small_buckets;
++     mht->mht_mask = MHT_INIT_SIZE - 1;
++ }
++ 
++ /*
++  * Free the array of a hash table.  Does not free the items it contains!
++  * The hash table must not be used again without another mf_hash_init() call.
++  */
++     static void
++ mf_hash_free(mht)
++     mf_hashtab_T *mht;
++ {
++     if (mht->mht_buckets != mht->mht_small_buckets)
++      vim_free(mht->mht_buckets);
++ }
++ 
++ /*
++  * Free the array of a hash table and all the items it contains.
++  */
++     static void
++ mf_hash_free_all(mht)
++     mf_hashtab_T    *mht;
++ {
++     long_u       idx;
++     mf_hashitem_T   *mhi;
++     mf_hashitem_T   *next;
++ 
++     for (idx = 0; idx <= mht->mht_mask; idx++)
++      for (mhi = mht->mht_buckets[idx]; mhi != NULL; mhi = next)
++      {
++          next = mhi->mhi_next;
++          vim_free(mhi);
++      }
++ 
++     mf_hash_free(mht);
++ }
++ 
++ /*
++  * Find "key" in hashtable "mht".
++  * Returns a pointer to a mf_hashitem_T or NULL if the item was not found.
++  */
++     static mf_hashitem_T *
++ mf_hash_find(mht, key)
++     mf_hashtab_T    *mht;
++     blocknr_T            key;
++ {
++     mf_hashitem_T   *mhi;
++ 
++     mhi = mht->mht_buckets[key & mht->mht_mask];
++     while (mhi != NULL && mhi->mhi_key != key)
++      mhi = mhi->mhi_next;
++ 
++     return mhi;
++ }
++ 
++ /*
++  * Add item "mhi" to hashtable "mht".
++  * "mhi" must not be NULL.
++  */
++     static void
++ mf_hash_add_item(mht, mhi)
++     mf_hashtab_T    *mht;
++     mf_hashitem_T   *mhi;
++ {
++     long_u       idx;
++ 
++     idx = mhi->mhi_key & mht->mht_mask;
++     mhi->mhi_next = mht->mht_buckets[idx];
++     mhi->mhi_prev = NULL;
++     if (mhi->mhi_next != NULL)
++      mhi->mhi_next->mhi_prev = mhi;
++     mht->mht_buckets[idx] = mhi;
++ 
++     mht->mht_count++;
++ 
++     /*
++      * Grow hashtable when we have more thank 2^MHT_LOG_LOAD_FACTOR
++      * items per bucket on average
++      */
++     if (mht->mht_fixed == 0
++      && (mht->mht_count >> MHT_LOG_LOAD_FACTOR) > mht->mht_mask)
++     {
++      if (mf_hash_grow(mht) == FAIL)
++      {
++          /* stop trying to grow after first failure to allocate memory */
++          mht->mht_fixed = 1;
++      }
++     }
++ }
++ 
++ /*
++  * Remove item "mhi" from hashtable "mht".
++  * "mhi" must not be NULL and must have been inserted into "mht".
++  */
++     static void
++ mf_hash_rem_item(mht, mhi)
++     mf_hashtab_T    *mht;
++     mf_hashitem_T   *mhi;
++ {
++     if (mhi->mhi_prev == NULL)
++      mht->mht_buckets[mhi->mhi_key & mht->mht_mask] = mhi->mhi_next;
++     else
++      mhi->mhi_prev->mhi_next = mhi->mhi_next;
++ 
++     if (mhi->mhi_next != NULL)
++      mhi->mhi_next->mhi_prev = mhi->mhi_prev;
++ 
++     mht->mht_count--;
++ 
++     /* We could shrink the table here, but it typically takes little memory,
++      * so why bother?  */
++ }
++ 
++ /*
++  * Increase number of buckets in the hashtable by MHT_GROWTH_FACTOR and
++  * rehash items.
++  * Returns FAIL when out of memory.
++  */
++     static int
++ mf_hash_grow(mht)
++     mf_hashtab_T    *mht;
++ {
++     long_u       i, j;
++     int                  shift;
++     mf_hashitem_T   *mhi;
++     mf_hashitem_T   *tails[MHT_GROWTH_FACTOR];
++     mf_hashitem_T   **buckets;
++     size_t       size;
++ 
++     size = (mht->mht_mask + 1) * MHT_GROWTH_FACTOR * sizeof(void *);
++     buckets = (mf_hashitem_T **)lalloc_clear(size, FALSE);
++     if (buckets == NULL)
++      return FAIL;
++ 
++     shift = 0;
++     while ((mht->mht_mask >> shift) != 0)
++      shift++;
++ 
++     for (i = 0; i <= mht->mht_mask; i++)
++     {
++      /*
++       * Traverse the items in the i-th original bucket and move them into
++       * MHT_GROWTH_FACTOR new buckets, preserving their relative order
++       * within each new bucket.  Preserving the order is important because
++       * mf_get() tries to keep most recently used items at the front of
++       * each bucket.
++       *
++       * Here we strongly rely on the fact the hashes are computed modulo
++       * a power of two.
++       */
++ 
++      vim_memset(tails, 0, sizeof(tails));
++ 
++      for (mhi = mht->mht_buckets[i]; mhi != NULL; mhi = mhi->mhi_next)
++      {
++          j = (mhi->mhi_key >> shift) & (MHT_GROWTH_FACTOR - 1);
++          if (tails[j] == NULL)
++          {
++              buckets[i + (j << shift)] = mhi;
++              tails[j] = mhi;
++              mhi->mhi_prev = NULL;
++          }
++          else
++          {
++              tails[j]->mhi_next = mhi;
++              mhi->mhi_prev = tails[j];
++              tails[j] = mhi;
++          }
++      }
++ 
++      for (j = 0; j < MHT_GROWTH_FACTOR; j++)
++          if (tails[j] != NULL)
++              tails[j]->mhi_next = NULL;
++     }
++ 
++     if (mht->mht_buckets != mht->mht_small_buckets)
++      vim_free(mht->mht_buckets);
++ 
++     mht->mht_buckets = buckets;
++     mht->mht_mask = (mht->mht_mask + 1) * MHT_GROWTH_FACTOR - 1;
++ 
++     return OK;
++ }
+*** ../vim-7.3.142/src/memfile_test.c  2011-03-03 21:58:14.000000000 +0100
+--- src/memfile_test.c 2011-03-03 20:40:29.000000000 +0100
+***************
+*** 0 ****
+--- 1,145 ----
++ /* vi:set ts=8 sts=4 sw=4:
++  *
++  * VIM - Vi IMproved by Bram Moolenaar
++  *
++  * Do ":help uganda"  in Vim to read copying and usage conditions.
++  * Do ":help credits" in Vim to see a list of people who contributed.
++  * See README.txt for an overview of the Vim source code.
++  */
++ 
++ /*
++  * memfile_test.c: Unittests for memfile.c
++  * Mostly by Ivan Krasilnikov.
++  */
++ 
++ #undef NDEBUG
++ #include <assert.h>
++ 
++ /* Must include main.c because it contains much more than just main() */
++ #define NO_VIM_MAIN
++ #include "main.c"
++ 
++ /* This file has to be included because the tested functions are static */
++ #include "memfile.c"
++ 
++ #define index_to_key(i) ((i) ^ 15167)
++ #define TEST_COUNT 50000
++ 
++ static void test_mf_hash __ARGS((void));
++ 
++ /*
++  * Test mf_hash_*() functions.
++  */
++     static void
++ test_mf_hash()
++ {
++     mf_hashtab_T   ht;
++     mf_hashitem_T  *item;
++     blocknr_T      key;
++     long_u      i;
++     long_u      num_buckets;
++ 
++     mf_hash_init(&ht);
++ 
++     /* insert some items and check invariants */
++     for (i = 0; i < TEST_COUNT; i++)
++     {
++      assert(ht.mht_count == i);
++ 
++      /* check that number of buckets is a power of 2 */
++      num_buckets = ht.mht_mask + 1;
++      assert(num_buckets > 0 && (num_buckets & (num_buckets - 1)) == 0);
++ 
++      /* check load factor */
++      assert(ht.mht_count <= (num_buckets << MHT_LOG_LOAD_FACTOR));
++ 
++      if (i < (MHT_INIT_SIZE << MHT_LOG_LOAD_FACTOR))
++      {
++          /* first expansion shouldn't have occurred yet */
++          assert(num_buckets == MHT_INIT_SIZE);
++          assert(ht.mht_buckets == ht.mht_small_buckets);
++      }
++      else
++      {
++          assert(num_buckets > MHT_INIT_SIZE);
++          assert(ht.mht_buckets != ht.mht_small_buckets);
++      }
++ 
++      key = index_to_key(i);
++      assert(mf_hash_find(&ht, key) == NULL);
++ 
++      /* allocate and add new item */
++      item = (mf_hashitem_T *)lalloc_clear(sizeof(mf_hashtab_T), FALSE);
++      assert(item != NULL);
++      item->mhi_key = key;
++      mf_hash_add_item(&ht, item);
++ 
++      assert(mf_hash_find(&ht, key) == item);
++ 
++      if (ht.mht_mask + 1 != num_buckets)
++      {
++          /* hash table was expanded */
++          assert(ht.mht_mask + 1 == num_buckets * MHT_GROWTH_FACTOR);
++          assert(i + 1 == (num_buckets << MHT_LOG_LOAD_FACTOR));
++      }
++     }
++ 
++     /* check presence of inserted items */
++     for (i = 0; i < TEST_COUNT; i++)
++     {
++      key = index_to_key(i);
++      item = mf_hash_find(&ht, key);
++      assert(item != NULL);
++      assert(item->mhi_key == key);
++     }
++ 
++     /* delete some items */
++     for (i = 0; i < TEST_COUNT; i++)
++     {
++      if (i % 100 < 70)
++      {
++          key = index_to_key(i);
++          item = mf_hash_find(&ht, key);
++          assert(item != NULL);
++          assert(item->mhi_key == key);
++ 
++          mf_hash_rem_item(&ht, item);
++          assert(mf_hash_find(&ht, key) == NULL);
++ 
++          mf_hash_add_item(&ht, item);
++          assert(mf_hash_find(&ht, key) == item);
++ 
++          mf_hash_rem_item(&ht, item);
++          assert(mf_hash_find(&ht, key) == NULL);
++ 
++          vim_free(item);
++      }
++     }
++ 
++     /* check again */
++     for (i = 0; i < TEST_COUNT; i++)
++     {
++      key = index_to_key(i);
++      item = mf_hash_find(&ht, key);
++ 
++      if (i % 100 < 70)
++      {
++          assert(item == NULL);
++      }
++      else
++      {
++          assert(item != NULL);
++          assert(item->mhi_key == key);
++      }
++     }
++ 
++     /* free hash table and all remaining items */
++     mf_hash_free_all(&ht);
++ }
++ 
++     int
++ main()
++ {
++     test_mf_hash();
++     return 0;
++ }
+*** ../vim-7.3.142/src/structs.h       2011-02-15 17:39:14.000000000 +0100
+--- src/structs.h      2011-03-03 18:49:01.000000000 +0100
+***************
+*** 378,383 ****
+--- 378,412 ----
+  typedef long             blocknr_T;
+  
+  /*
++  * mf_hashtab_T is a chained hashtable with blocknr_T key and arbitrary
++  * structures as items.  This is an intrusive data structure: we require
++  * that items begin with mf_hashitem_T which contains the key and linked
++  * list pointers.  List of items in each bucket is doubly-linked.
++  */
++ 
++ typedef struct mf_hashitem_S mf_hashitem_T;
++ 
++ struct mf_hashitem_S
++ {
++     mf_hashitem_T   *mhi_next;
++     mf_hashitem_T   *mhi_prev;
++     blocknr_T            mhi_key;
++ };
++ 
++ #define MHT_INIT_SIZE   64
++ 
++ typedef struct mf_hashtab_S
++ {
++     long_u       mht_mask;       /* mask used for hash value (nr of items
++                                   * in array is "mht_mask" + 1) */
++     long_u       mht_count;      /* nr of items inserted into hashtable */
++     mf_hashitem_T   **mht_buckets;  /* points to mht_small_buckets or
++                                   *dynamically allocated array */
++     mf_hashitem_T   *mht_small_buckets[MHT_INIT_SIZE];   /* initial buckets */
++     char         mht_fixed;      /* non-zero value forbids growth */
++ } mf_hashtab_T;
++ 
++ /*
+   * for each (previously) used block in the memfile there is one block header.
+   *
+   * The block may be linked in the used list OR in the free list.
+***************
+*** 394,404 ****
+  
+  struct block_hdr
+  {
+      bhdr_T   *bh_next;           /* next block_hdr in free or used list */
+      bhdr_T   *bh_prev;           /* previous block_hdr in used list */
+-     bhdr_T   *bh_hash_next;      /* next block_hdr in hash list */
+-     bhdr_T   *bh_hash_prev;      /* previous block_hdr in hash list */
+-     blocknr_T        bh_bnum;            /* block number */
+      char_u   *bh_data;           /* pointer to memory (for used block) */
+      int              bh_page_count;      /* number of pages in this block */
+  
+--- 423,433 ----
+  
+  struct block_hdr
+  {
++     mf_hashitem_T bh_hashitem;      /* header for hash table and key */
++ #define bh_bnum bh_hashitem.mhi_key /* block number, part of bh_hashitem */
++ 
+      bhdr_T   *bh_next;           /* next block_hdr in free or used list */
+      bhdr_T   *bh_prev;           /* previous block_hdr in used list */
+      char_u   *bh_data;           /* pointer to memory (for used block) */
+      int              bh_page_count;      /* number of pages in this block */
+  
+***************
+*** 417,425 ****
+  
+  struct nr_trans
+  {
+!     NR_TRANS *nt_next;               /* next nr_trans in hash list */
+!     NR_TRANS *nt_prev;               /* previous nr_trans in hash list */
+!     blocknr_T        nt_old_bnum;            /* old, negative, number */
+      blocknr_T        nt_new_bnum;            /* new, positive, number */
+  };
+  
+--- 446,454 ----
+  
+  struct nr_trans
+  {
+!     mf_hashitem_T nt_hashitem;               /* header for hash table and key */
+! #define nt_old_bnum nt_hashitem.mhi_key      /* old, negative, number */
+! 
+      blocknr_T        nt_new_bnum;            /* new, positive, number */
+  };
+  
+***************
+*** 499,510 ****
+  
+  typedef struct file_buffer buf_T;  /* forward declaration */
+  
+- /*
+-  * Simplistic hashing scheme to quickly locate the blocks in the used list.
+-  * 64 blocks are found directly (64 * 4K = 256K, most files are smaller).
+-  */
+- #define MEMHASHSIZE  64
+- #define MEMHASH(nr)  ((nr) & (MEMHASHSIZE - 1))
+  #define MF_SEED_LEN  8
+  
+  struct memfile
+--- 528,533 ----
+***************
+*** 517,524 ****
+      bhdr_T   *mf_used_last;          /* lru block_hdr in used list */
+      unsigned mf_used_count;          /* number of pages in used list */
+      unsigned mf_used_count_max;      /* maximum number of pages in memory */
+!     bhdr_T   *mf_hash[MEMHASHSIZE];  /* array of hash lists */
+!     NR_TRANS *mf_trans[MEMHASHSIZE]; /* array of trans lists */
+      blocknr_T        mf_blocknr_max;         /* highest positive block number + 1*/
+      blocknr_T        mf_blocknr_min;         /* lowest negative block number - 1 */
+      blocknr_T        mf_neg_count;           /* number of negative blocks numbers */
+--- 540,547 ----
+      bhdr_T   *mf_used_last;          /* lru block_hdr in used list */
+      unsigned mf_used_count;          /* number of pages in used list */
+      unsigned mf_used_count_max;      /* maximum number of pages in memory */
+!     mf_hashtab_T mf_hash;            /* hash lists */
+!     mf_hashtab_T mf_trans;           /* trans lists */
+      blocknr_T        mf_blocknr_max;         /* highest positive block number + 1*/
+      blocknr_T        mf_blocknr_min;         /* lowest negative block number - 1 */
+      blocknr_T        mf_neg_count;           /* number of negative blocks numbers */
+*** ../vim-7.3.142/src/testdir/Make_amiga.mak  2010-11-10 16:54:16.000000000 +0100
+--- src/testdir/Make_amiga.mak 2011-03-03 17:04:14.000000000 +0100
+***************
+*** 28,34 ****
+               test61.out test62.out test63.out test64.out test65.out \
+               test66.out test67.out test68.out test69.out test70.out \
+               test71.out test72.out test73.out test74.out test75.out \
+!              test76.out
+  
+  .SUFFIXES: .in .out
+  
+--- 28,34 ----
+               test61.out test62.out test63.out test64.out test65.out \
+               test66.out test67.out test68.out test69.out test70.out \
+               test71.out test72.out test73.out test74.out test75.out \
+!              test76.out test77.out
+  
+  .SUFFIXES: .in .out
+  
+***************
+*** 124,126 ****
+--- 124,127 ----
+  test74.out: test74.in
+  test75.out: test75.in
+  test76.out: test76.in
++ test77.out: test77.in
+*** ../vim-7.3.142/src/testdir/Make_dos.mak    2010-11-10 16:54:16.000000000 +0100
+--- src/testdir/Make_dos.mak   2011-03-03 17:04:20.000000000 +0100
+***************
+*** 28,34 ****
+               test37.out test38.out test39.out test40.out test41.out \
+               test42.out test52.out test65.out test66.out test67.out \
+               test68.out test69.out test71.out test72.out test73.out \
+!              test74.out test75.out test76.out
+  
+  SCRIPTS32 =  test50.out test70.out
+  
+--- 28,34 ----
+               test37.out test38.out test39.out test40.out test41.out \
+               test42.out test52.out test65.out test66.out test67.out \
+               test68.out test69.out test71.out test72.out test73.out \
+!              test74.out test75.out test76.out test77.out
+  
+  SCRIPTS32 =  test50.out test70.out
+  
+*** ../vim-7.3.142/src/testdir/Make_ming.mak   2010-11-10 16:54:16.000000000 +0100
+--- src/testdir/Make_ming.mak  2011-03-03 17:04:32.000000000 +0100
+***************
+*** 48,54 ****
+               test37.out test38.out test39.out test40.out test41.out \
+               test42.out test52.out test65.out test66.out test67.out \
+               test68.out test69.out test71.out test72.out test73.out \
+!              test74.out test75.out test76.out
+  
+  SCRIPTS32 =  test50.out test70.out
+  
+--- 48,54 ----
+               test37.out test38.out test39.out test40.out test41.out \
+               test42.out test52.out test65.out test66.out test67.out \
+               test68.out test69.out test71.out test72.out test73.out \
+!              test74.out test75.out test76.out test77.out
+  
+  SCRIPTS32 =  test50.out test70.out
+  
+*** ../vim-7.3.142/src/testdir/Make_os2.mak    2010-11-10 16:54:16.000000000 +0100
+--- src/testdir/Make_os2.mak   2011-03-03 17:04:48.000000000 +0100
+***************
+*** 28,34 ****
+               test61.out test62.out test63.out test64.out test65.out \
+               test66.out test67.out test68.out test69.out test70.out \
+               test71.out test72.out test73.out test74.out test75.out \
+!              test76.out
+  
+  .SUFFIXES: .in .out
+  
+--- 28,34 ----
+               test61.out test62.out test63.out test64.out test65.out \
+               test66.out test67.out test68.out test69.out test70.out \
+               test71.out test72.out test73.out test74.out test75.out \
+!              test76.out test77.out
+  
+  .SUFFIXES: .in .out
+  
+*** ../vim-7.3.142/src/testdir/Makefile        2010-11-10 16:54:16.000000000 +0100
+--- src/testdir/Makefile       2011-03-22 17:03:25.000000000 +0100
+***************
+*** 25,31 ****
+               test59.out test60.out test61.out test62.out test63.out \
+               test64.out test65.out test66.out test67.out test68.out \
+               test69.out test70.out test71.out test72.out test73.out \
+!              test74.out test75.out test76.out
+  
+  SCRIPTS_GUI = test16.out
+  
+--- 25,31 ----
+               test59.out test60.out test61.out test62.out test63.out \
+               test64.out test65.out test66.out test67.out test68.out \
+               test69.out test70.out test71.out test72.out test73.out \
+!              test74.out test75.out test76.out test77.out
+  
+  SCRIPTS_GUI = test16.out
+  
+***************
+*** 71,77 ****
+                 fi \
+               else echo $* NO OUTPUT >>test.log; \
+               fi"
+!      -rm -rf X* test.ok viminfo
+  
+  test49.out: test49.vim
+  
+--- 71,77 ----
+                 fi \
+               else echo $* NO OUTPUT >>test.log; \
+               fi"
+! #    -rm -rf X* test.ok viminfo
+  
+  test49.out: test49.vim
+  
+*** ../vim-7.3.142/src/testdir/test77.in       2011-03-03 21:59:10.000000000 +0100
+--- src/testdir/test77.in      2011-03-22 17:12:38.000000000 +0100
+***************
+*** 0 ****
+--- 1,27 ----
++ Inserts 2 million lines with consecutive integers starting from 1
++ (essentially, the output of GNU's seq 1 2000000), writes them to Xtest
++ and writes its cksum to test.out.
++ 
++ We need 2 million lines to trigger a call to mf_hash_grow().  If it would mess
++ up the lines the checksum would differ.
++ 
++ cksum is part of POSIX and so should be available on most Unixes.
++ If it isn't available then the test will be skipped.
++ 
++ STARTTEST
++ :so small.vim
++ :if !executable("cksum")
++ : e! test.ok
++ : w! test.out
++ : qa!
++ :endif
++ :set fileformat=unix undolevels=-1
++ ggdG
++ :let i = 1
++ :while i <= 2000000 | call append(i, range(i, i + 99)) | let i += 100 | endwhile
++ ggdd
++ :w! Xtest
++ :!cksum Xtest > test.out
++ :qa!
++ ENDTEST
++ 
+*** ../vim-7.3.142/src/testdir/test77.ok       2011-03-03 21:59:10.000000000 +0100
+--- src/testdir/test77.ok      2011-03-22 17:10:14.000000000 +0100
+***************
+*** 0 ****
+--- 1 ----
++ 3678979763 14888896 Xtest
+*** ../vim-7.3.142/src/version.c       2011-03-22 15:47:18.000000000 +0100
+--- src/version.c      2011-03-22 18:01:48.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     143,
+  /**/
+
+-- 
+SIGIRO -- irony detected (iron core dumped)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
index e4f6be5b8d63dc57fc2a4043bedcfc9a0fedec7b..44a3c7111ce9a029647c2e183527f3e357088d8f 100644 (file)
--- a/vim.spec
+++ b/vim.spec
@@ -25,8 +25,8 @@
 # curl -s ftp://ftp.vim.org/pub/editors/vim/patches/7.3/MD5SUMS | grep -vF .gz | tail -n1 | awk '{print $2}'
 
 %define                ver             7.3
-%define                patchlevel      125
-%define                rel                     2
+%define                patchlevel      143
+%define                rel                     1
 Summary:       Vi IMproved - a Vi clone
 Summary(de.UTF-8):     VIsual editor iMproved
 Summary(es.UTF-8):     Editor visual incrementado
This page took 0.133507 seconds and 4 git commands to generate.