]> git.pld-linux.org Git - packages/vim.git/commitdiff
- new
authorAdam Gołębiowski <adamg@pld-linux.org>
Sun, 3 Apr 2011 08:52:41 +0000 (08:52 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
Changed files:
    7.3.147 -> 1.1
    7.3.148 -> 1.1
    7.3.149 -> 1.1
    7.3.150 -> 1.1
    7.3.151 -> 1.1
    7.3.152 -> 1.1
    7.3.153 -> 1.1
    7.3.154 -> 1.1

7.3.147 [new file with mode: 0644]
7.3.148 [new file with mode: 0644]
7.3.149 [new file with mode: 0644]
7.3.150 [new file with mode: 0644]
7.3.151 [new file with mode: 0644]
7.3.152 [new file with mode: 0644]
7.3.153 [new file with mode: 0644]
7.3.154 [new file with mode: 0644]

diff --git a/7.3.147 b/7.3.147
new file mode 100644 (file)
index 0000000..b6fd756
--- /dev/null
+++ b/7.3.147
@@ -0,0 +1,53 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.147
+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.147 (after 7.3.143)
+Problem:    Can't build on HP-UX.
+Solution:   Remove an unnecessary backslash. (John Marriott)
+Files:     src/Makefile
+
+
+*** ../vim-7.3.146/src/Makefile        2011-03-22 18:10:34.000000000 +0100
+--- src/Makefile       2011-04-01 13:00:58.000000000 +0200
+***************
+*** 1565,1571 ****
+  
+  OBJ = $(OBJ_COMMON) \
+       objects/main.o \
+!      objects/memfile.o \
+  
+  MEMFILE_TEST_OBJ = $(OBJ_COMMON) \
+          objects/memfile_test.o
+--- 1565,1571 ----
+  
+  OBJ = $(OBJ_COMMON) \
+       objects/main.o \
+!      objects/memfile.o
+  
+  MEMFILE_TEST_OBJ = $(OBJ_COMMON) \
+          objects/memfile_test.o
+*** ../vim-7.3.146/src/version.c       2011-03-27 16:03:09.000000000 +0200
+--- src/version.c      2011-04-01 13:05:18.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     147,
+  /**/
+
+-- 
+DENNIS: You can't expect to wield supreme executive power just 'cause some
+        watery tart threw a sword at you!
+                 "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.148 b/7.3.148
new file mode 100644 (file)
index 0000000..30492c0
--- /dev/null
+++ b/7.3.148
@@ -0,0 +1,252 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.148
+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.148
+Problem:    A syntax file with a huge number of items or clusters causes weird
+           behavior, a hang or a crash. (Yukihiro Nakadaira)
+Solution:   Check running out of IDs. (partly by Ben Schmidt)
+Files:     src/syntax.c
+
+
+*** ../vim-7.3.147/src/syntax.c        2011-01-22 00:58:15.000000000 +0100
+--- src/syntax.c       2011-04-01 14:25:39.000000000 +0200
+***************
+*** 219,234 ****
+  
+  /*
+   * Syntax group IDs have different types:
+!  *     0 -  9999  normal syntax groups
+!  * 10000 - 14999  ALLBUT indicator (current_syn_inc_tag added)
+!  * 15000 - 19999  TOP indicator (current_syn_inc_tag added)
+!  * 20000 - 24999  CONTAINED indicator (current_syn_inc_tag added)
+!  * >= 25000    cluster IDs (subtract SYNID_CLUSTER for the cluster ID)
+!  */
+! #define SYNID_ALLBUT 10000       /* syntax group ID for contains=ALLBUT */
+! #define SYNID_TOP    15000       /* syntax group ID for contains=TOP */
+! #define SYNID_CONTAINED      20000       /* syntax group ID for contains=CONTAINED */
+! #define SYNID_CLUSTER        25000       /* first syntax group ID for clusters */
+  
+  /*
+   * Annoying Hack(TM):  ":syn include" needs this pointer to pass to
+--- 219,238 ----
+  
+  /*
+   * Syntax group IDs have different types:
+!  *     0 - 19999  normal syntax groups
+!  * 20000 - 20999  ALLBUT indicator (current_syn_inc_tag added)
+!  * 21000 - 21999  TOP indicator (current_syn_inc_tag added)
+!  * 22000 - 22999  CONTAINED indicator (current_syn_inc_tag added)
+!  * 23000 - 32767  cluster IDs (subtract SYNID_CLUSTER for the cluster ID)
+!  */
+! #define SYNID_ALLBUT 20000       /* syntax group ID for contains=ALLBUT */
+! #define SYNID_TOP    21000       /* syntax group ID for contains=TOP */
+! #define SYNID_CONTAINED      22000       /* syntax group ID for contains=CONTAINED */
+! #define SYNID_CLUSTER        23000       /* first syntax group ID for clusters */
+! 
+! #define MAX_SYNID       SYNID_ALLBUT
+! #define MAX_SYN_INC_TAG      999         /* maximum before the above overflow */
+! #define MAX_CLUSTER_ID  (32767 - SYNID_CLUSTER)
+  
+  /*
+   * Annoying Hack(TM):  ":syn include" needs this pointer to pass to
+***************
+*** 3442,3447 ****
+--- 3446,3454 ----
+      /* free the stored states */
+      syn_stack_free_all(block);
+      invalidate_current_state();
++ 
++     /* Reset the counter for ":syn include" */
++     running_syn_inc_tag = 0;
+  }
+  
+  /*
+***************
+*** 4661,4666 ****
+--- 4668,4675 ----
+           return;
+       }
+       sgl_id = syn_check_cluster(arg, (int)(group_name_end - arg));
++      if (sgl_id == 0)
++          return;
+       /* separate_nextcmd() and expand_filename() depend on this */
+       eap->arg = rest;
+      }
+***************
+*** 4689,4694 ****
+--- 4698,4708 ----
+       * Save and restore the existing top-level grouplist id and ":syn
+       * include" tag around the actual inclusion.
+       */
++     if (running_syn_inc_tag >= MAX_SYN_INC_TAG)
++     {
++      EMSG((char_u *)_("E847: Too many syntax includes"));
++      return;
++     }
+      prev_syn_inc_tag = current_syn_inc_tag;
+      current_syn_inc_tag = ++running_syn_inc_tag;
+      prev_toplvl_grp = curwin->w_s->b_syn_topgrp;
+***************
+*** 4712,4718 ****
+      char_u   *group_name_end;
+      int              syn_id;
+      char_u   *rest;
+!     char_u   *keyword_copy;
+      char_u   *p;
+      char_u   *kw;
+      syn_opt_arg_T syn_opt_arg;
+--- 4726,4732 ----
+      char_u   *group_name_end;
+      int              syn_id;
+      char_u   *rest;
+!     char_u   *keyword_copy = NULL;
+      char_u   *p;
+      char_u   *kw;
+      syn_opt_arg_T syn_opt_arg;
+***************
+*** 4724,4732 ****
+      if (rest != NULL)
+      {
+       syn_id = syn_check_group(arg, (int)(group_name_end - arg));
+! 
+!      /* allocate a buffer, for removing the backslashes in the keyword */
+!      keyword_copy = alloc((unsigned)STRLEN(rest) + 1);
+       if (keyword_copy != NULL)
+       {
+           syn_opt_arg.flags = 0;
+--- 4738,4746 ----
+      if (rest != NULL)
+      {
+       syn_id = syn_check_group(arg, (int)(group_name_end - arg));
+!      if (syn_id != 0)
+!          /* allocate a buffer, for removing backslashes in the keyword */
+!          keyword_copy = alloc((unsigned)STRLEN(rest) + 1);
+       if (keyword_copy != NULL)
+       {
+           syn_opt_arg.flags = 0;
+***************
+*** 5133,5139 ****
+                           (item == ITEM_SKIP) ? SPTYPE_SKIP : SPTYPE_END;
+                   SYN_ITEMS(curwin->w_s)[idx].sp_flags |= syn_opt_arg.flags;
+                   SYN_ITEMS(curwin->w_s)[idx].sp_syn.id = syn_id;
+!                  SYN_ITEMS(curwin->w_s)[idx].sp_syn.inc_tag = current_syn_inc_tag;
+                   SYN_ITEMS(curwin->w_s)[idx].sp_syn_match_id =
+                                                       ppp->pp_matchgroup_id;
+  #ifdef FEAT_CONCEAL
+--- 5147,5154 ----
+                           (item == ITEM_SKIP) ? SPTYPE_SKIP : SPTYPE_END;
+                   SYN_ITEMS(curwin->w_s)[idx].sp_flags |= syn_opt_arg.flags;
+                   SYN_ITEMS(curwin->w_s)[idx].sp_syn.id = syn_id;
+!                  SYN_ITEMS(curwin->w_s)[idx].sp_syn.inc_tag =
+!                                                        current_syn_inc_tag;
+                   SYN_ITEMS(curwin->w_s)[idx].sp_syn_match_id =
+                                                       ppp->pp_matchgroup_id;
+  #ifdef FEAT_CONCEAL
+***************
+*** 5426,5431 ****
+--- 5441,5454 ----
+       curwin->w_s->b_syn_clusters.ga_growsize = 10;
+      }
+  
++     len = curwin->w_s->b_syn_clusters.ga_len;
++     if (len >= MAX_CLUSTER_ID)
++     {
++      EMSG((char_u *)_("E848: Too many syntax clusters"));
++      vim_free(name);
++      return 0;
++     }
++ 
+      /*
+       * Make room for at least one other cluster entry.
+       */
+***************
+*** 5434,5440 ****
+       vim_free(name);
+       return 0;
+      }
+-     len = curwin->w_s->b_syn_clusters.ga_len;
+  
+      vim_memset(&(SYN_CLSTR(curwin->w_s)[len]), 0, sizeof(syn_cluster_T));
+      SYN_CLSTR(curwin->w_s)[len].scl_name = name;
+--- 5457,5462 ----
+***************
+*** 5476,5483 ****
+  
+      if (rest != NULL)
+      {
+!      scl_id = syn_check_cluster(arg, (int)(group_name_end - arg))
+!                                                            - SYNID_CLUSTER;
+  
+       for (;;)
+       {
+--- 5498,5507 ----
+  
+      if (rest != NULL)
+      {
+!      scl_id = syn_check_cluster(arg, (int)(group_name_end - arg));
+!      if (scl_id == 0)
+!          return;
+!      scl_id -= SYNID_CLUSTER;
+  
+       for (;;)
+       {
+***************
+*** 5516,5522 ****
+       if (got_clstr)
+       {
+           redraw_curbuf_later(SOME_VALID);
+!          syn_stack_free_all(curwin->w_s);    /* Need to recompute all syntax. */
+       }
+      }
+  
+--- 5540,5546 ----
+       if (got_clstr)
+       {
+           redraw_curbuf_later(SOME_VALID);
+!          syn_stack_free_all(curwin->w_s);    /* Need to recompute all. */
+       }
+      }
+  
+***************
+*** 8972,8977 ****
+--- 8996,9008 ----
+       highlight_ga.ga_growsize = 10;
+      }
+  
++     if (highlight_ga.ga_len >= MAX_SYNID)
++     {
++      EMSG(_("E849: Too many syntax groups"));
++      vim_free(name);
++      return 0;
++     }
++ 
+      /*
+       * Make room for at least one other syntax_highlight entry.
+       */
+*** ../vim-7.3.147/src/version.c       2011-04-01 13:05:37.000000000 +0200
+--- src/version.c      2011-04-01 14:26:44.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     148,
+  /**/
+
+-- 
+BLACK KNIGHT: None shall pass.
+ARTHUR:       I have no quarrel with you, brave Sir knight, but I must cross
+              this bridge.
+BLACK KNIGHT: Then you shall die.
+                 "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.149 b/7.3.149
new file mode 100644 (file)
index 0000000..1901a74
--- /dev/null
+++ b/7.3.149
@@ -0,0 +1,78 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.149
+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.149
+Problem:    The cursor disappears after the processing of the 'setDot'
+           netbeans command when vim runs in a terminal.
+Solution:   Show the cursor after a screen update. (Xavier de Gaye, 2011
+Files:     src/netbeans.c
+
+
+*** ../vim-7.3.148/src/netbeans.c      2011-01-04 18:11:39.000000000 +0100
+--- src/netbeans.c     2011-04-01 15:33:49.000000000 +0200
+***************
+*** 191,196 ****
+--- 191,197 ----
+      changed_window_setting();
+      update_screen(CLEAR);
+      setcursor();
++     cursor_on();
+      out_flush();
+  #ifdef FEAT_GUI
+      if (gui.in_use)
+***************
+*** 2248,2253 ****
+--- 2249,2255 ----
+           update_topline();           /* scroll to show the line */
+           update_screen(VALID);
+           setcursor();
++          cursor_on();
+           out_flush();
+  #ifdef FEAT_GUI
+           if (gui.in_use)
+***************
+*** 2642,2647 ****
+--- 2644,2650 ----
+      {
+       update_screen(NOT_VALID);
+       setcursor();
++      cursor_on();
+       out_flush();
+  #ifdef FEAT_GUI
+       if (gui.in_use)
+***************
+*** 3008,3013 ****
+--- 3011,3017 ----
+      changed_window_setting();
+      update_screen(CLEAR);
+      setcursor();
++     cursor_on();
+      out_flush();
+  #ifdef FEAT_GUI
+      if (gui.in_use)
+*** ../vim-7.3.148/src/version.c       2011-04-01 14:44:54.000000000 +0200
+--- src/version.c      2011-04-01 15:33:21.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     149,
+  /**/
+
+-- 
+ARTHUR:       You are indeed brave Sir knight, but the fight is mine.
+BLACK KNIGHT: Had enough?
+ARTHUR:       You stupid bastard.  You havn't got any arms left.
+                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.3.150 b/7.3.150
new file mode 100644 (file)
index 0000000..83a8bf2
--- /dev/null
+++ b/7.3.150
@@ -0,0 +1,113 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.150
+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.150
+Problem:    readline() does not return the last line when the NL is missing.
+           (Hong Xu)
+Solution:   When at the end of the file Also check for a previous line.
+Files:     src/eval.c
+
+
+*** ../vim-7.3.149/src/eval.c  2011-03-27 16:03:09.000000000 +0200
+--- src/eval.c 2011-04-01 16:06:04.000000000 +0200
+***************
+*** 14305,14313 ****
+       {
+           if (buf[filtd] == '\n' || readlen <= 0)
+           {
+!              /* Only when in binary mode add an empty list item when the
+!               * last line ends in a '\n'. */
+!              if (!binary && readlen == 0 && filtd == 0)
+                   break;
+  
+               /* Found end-of-line or end-of-file: add a text line to the
+--- 14305,14313 ----
+       {
+           if (buf[filtd] == '\n' || readlen <= 0)
+           {
+!              /* In binary mode add an empty list item when the last
+!               * non-empty line ends in a '\n'. */
+!              if (!binary && readlen == 0 && filtd == 0 && prev == NULL)
+                   break;
+  
+               /* Found end-of-line or end-of-file: add a text line to the
+***************
+*** 14372,14396 ****
+  
+       if (tolist == 0)
+       {
+!          /* "buf" is full, need to move text to an allocated buffer */
+!          if (prev == NULL)
+           {
+!              prev = vim_strnsave(buf, buflen);
+!              prevlen = buflen;
+!          }
+!          else
+!          {
+!              s = alloc((unsigned)(prevlen + buflen));
+!              if (s != NULL)
+               {
+!                  mch_memmove(s, prev, prevlen);
+!                  mch_memmove(s + prevlen, buf, buflen);
+!                  vim_free(prev);
+!                  prev = s;
+!                  prevlen += buflen;
+               }
+           }
+-          filtd = 0;
+       }
+       else
+       {
+--- 14372,14399 ----
+  
+       if (tolist == 0)
+       {
+!          if (buflen >= FREAD_SIZE / 2)
+           {
+!              /* "buf" is full, need to move text to an allocated buffer */
+!              if (prev == NULL)
+!              {
+!                  prev = vim_strnsave(buf, buflen);
+!                  prevlen = buflen;
+!              }
+!              else
+               {
+!                  s = alloc((unsigned)(prevlen + buflen));
+!                  if (s != NULL)
+!                  {
+!                      mch_memmove(s, prev, prevlen);
+!                      mch_memmove(s + prevlen, buf, buflen);
+!                      vim_free(prev);
+!                      prev = s;
+!                      prevlen += buflen;
+!                  }
+               }
++              filtd = 0;
+           }
+       }
+       else
+       {
+*** ../vim-7.3.149/src/version.c       2011-04-01 15:33:54.000000000 +0200
+--- src/version.c      2011-04-01 16:04:42.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     150,
+  /**/
+
+-- 
+ARTHUR: What are you going to do. bleed on me?
+                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.3.151 b/7.3.151
new file mode 100644 (file)
index 0000000..20f5105
--- /dev/null
+++ b/7.3.151
@@ -0,0 +1,59 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.151
+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.151 (after 7.3.074)
+Problem:    When "unnamedplus" is in 'clipboard' the selection is sometimes
+           also copied to the star register.
+Solution:   Avoid copy to the star register when undesired. (James Vega)
+Files:     src/ops.c
+
+
+*** ../vim-7.3.150/src/ops.c   2010-12-08 14:23:08.000000000 +0100
+--- src/ops.c  2011-04-01 16:23:10.000000000 +0200
+***************
+*** 3148,3157 ****
+           /* Copy the text from register 0 to the clipboard register. */
+           copy_yank_reg(&(y_regs[PLUS_REGISTER]));
+  
+-      /* No need to copy to * register upon 'unnamed' now - see below */
+       clip_own_selection(&clip_plus);
+       clip_gen_set_selection(&clip_plus);
+!      if (!clip_isautosel() && !did_star)
+       {
+           copy_yank_reg(&(y_regs[STAR_REGISTER]));
+           clip_own_selection(&clip_star);
+--- 3148,3156 ----
+           /* Copy the text from register 0 to the clipboard register. */
+           copy_yank_reg(&(y_regs[PLUS_REGISTER]));
+  
+       clip_own_selection(&clip_plus);
+       clip_gen_set_selection(&clip_plus);
+!      if (!clip_isautosel() && !did_star && curr == &(y_regs[PLUS_REGISTER]))
+       {
+           copy_yank_reg(&(y_regs[STAR_REGISTER]));
+           clip_own_selection(&clip_star);
+*** ../vim-7.3.150/src/version.c       2011-04-01 16:07:41.000000000 +0200
+--- src/version.c      2011-04-01 16:25:40.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     151,
+  /**/
+
+-- 
+BLACK KNIGHT: I'm invincible!
+ARTHUR:       You're a looney.
+                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.3.152 b/7.3.152
new file mode 100644 (file)
index 0000000..fdc58a0
--- /dev/null
+++ b/7.3.152
@@ -0,0 +1,643 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.152
+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.152
+Problem:    Xxd does not check for errors from library functions.
+Solution:   Add error checks. (Florian Zumbiehl)
+Files:     src/xxd/xxd.c
+
+
+*** ../vim-7.3.151/src/xxd/xxd.c       2010-08-15 21:57:25.000000000 +0200
+--- src/xxd/xxd.c      2011-04-01 18:56:11.000000000 +0200
+***************
+*** 49,54 ****
+--- 49,56 ----
+   *       option -b added: 01000101 binary output in normal format.
+   * 16.05.00 Added VAXC changes by Stephen P. Wall
+   * 16.05.00 Improved MMS file and merge for VMS by Zoltan Arpadffy
++  * 2011 March  Better error handling by Florian Zumbiehl.
++  * 2011 April  Formatting by Bram Moolenaar
+   *
+   * (c) 1990-1998 by Juergen Weigert (jnweiger@informatik.uni-erlangen.de)
+   *
+***************
+*** 207,214 ****
+  
+  /* Let's collect some prototypes */
+  /* CodeWarrior is really picky about missing prototypes */
+! static void exit_with_usage __P((char *));
+! static int huntype __P((FILE *, FILE *, FILE *, char *, int, int, long));
+  static void xxdline __P((FILE *, char *, int));
+  
+  #define TRY_SEEK     /* attempt to use lseek, or skip forward by reading */
+--- 209,216 ----
+  
+  /* Let's collect some prototypes */
+  /* CodeWarrior is really picky about missing prototypes */
+! static void exit_with_usage __P((void));
+! static int huntype __P((FILE *, FILE *, FILE *, int, int, long));
+  static void xxdline __P((FILE *, char *, int));
+  
+  #define TRY_SEEK     /* attempt to use lseek, or skip forward by reading */
+***************
+*** 223,231 ****
+  #define HEX_CINCLUDE 2
+  #define HEX_BITS 3           /* not hex a dump, but bits: 01111001 */
+  
+! static void
+! exit_with_usage(pname)
+! char *pname;
+  {
+    fprintf(stderr, "Usage:\n       %s [options] [infile [outfile]]\n", pname);
+    fprintf(stderr, "    or\n       %s -r [-s [-]offset] [-c cols] [-ps] [infile [outfile]]\n", pname);
+--- 225,234 ----
+  #define HEX_CINCLUDE 2
+  #define HEX_BITS 3           /* not hex a dump, but bits: 01111001 */
+  
+! static char *pname;
+! 
+!   static void
+! exit_with_usage()
+  {
+    fprintf(stderr, "Usage:\n       %s [options] [infile [outfile]]\n", pname);
+    fprintf(stderr, "    or\n       %s -r [-s [-]offset] [-c cols] [-ps] [infile [outfile]]\n", pname);
+***************
+*** 252,257 ****
+--- 255,269 ----
+    exit(1);
+  }
+  
++   static void
++ die(ret)
++   int ret;
++ {
++   fprintf(stderr, "%s: ", pname);
++   perror(NULL);
++   exit(ret);
++ }
++ 
+  /*
+   * Max. cols binary characters are decoded from the input stream per line.
+   * Two adjacent garbage characters after evaluated data delimit valid data.
+***************
+*** 259,270 ****
+   *
+   * The name is historic and came from 'undo type opt h'.
+   */
+! static int
+! huntype(fpi, fpo, fperr, pname, cols, hextype, base_off)
+! FILE *fpi, *fpo, *fperr;
+! char *pname;
+! int cols, hextype;
+! long base_off;
+  {
+    int c, ign_garb = 1, n1 = -1, n2 = 0, n3, p = cols;
+    long have_off = 0, want_off = 0;
+--- 271,281 ----
+   *
+   * The name is historic and came from 'undo type opt h'.
+   */
+!   static int
+! huntype(fpi, fpo, fperr, cols, hextype, base_off)
+!   FILE *fpi, *fpo, *fperr;
+!   int cols, hextype;
+!   long base_off;
+  {
+    int c, ign_garb = 1, n1 = -1, n2 = 0, n3, p = cols;
+    long have_off = 0, want_off = 0;
+***************
+*** 318,324 ****
+  
+        if (base_off + want_off != have_off)
+       {
+!        fflush(fpo);
+  #ifdef TRY_SEEK
+         c = fseek(fpo, base_off + want_off - have_off, 1);
+         if (c >= 0)
+--- 329,336 ----
+  
+        if (base_off + want_off != have_off)
+       {
+!        if (fflush(fpo) != 0)
+!          die(3);
+  #ifdef TRY_SEEK
+         c = fseek(fpo, base_off + want_off - have_off, 1);
+         if (c >= 0)
+***************
+*** 330,341 ****
+             return 5;
+           }
+         for (; have_off < base_off + want_off; have_off++)
+!          putc(0, fpo);
+       }
+  
+        if (n2 >= 0 && n1 >= 0)
+       {
+!        putc((n2 << 4) | n1, fpo);
+         have_off++;
+         want_off++;
+         n1 = -1;
+--- 342,355 ----
+             return 5;
+           }
+         for (; have_off < base_off + want_off; have_off++)
+!          if (putc(0, fpo) == EOF)
+!            die(3);
+       }
+  
+        if (n2 >= 0 && n1 >= 0)
+       {
+!        if (putc((n2 << 4) | n1, fpo) == EOF)
+!          die(3);
+         have_off++;
+         want_off++;
+         n1 = -1;
+***************
+*** 345,350 ****
+--- 359,366 ----
+             want_off = 0;
+             while ((c = getc(fpi)) != '\n' && c != EOF)
+               ;
++            if (c == EOF && ferror(fpi))
++              die(2);
+             ign_garb = 1;
+           }
+       }
+***************
+*** 355,369 ****
+           want_off = 0;
+         while ((c = getc(fpi)) != '\n' && c != EOF)
+           ;
+         ign_garb = 1;
+       }
+      }
+!   fflush(fpo);
+  #ifdef TRY_SEEK
+    fseek(fpo, 0L, 2);
+  #endif
+!   fclose(fpo);
+!   fclose(fpi);
+    return 0;
+  }
+  
+--- 371,390 ----
+           want_off = 0;
+         while ((c = getc(fpi)) != '\n' && c != EOF)
+           ;
++        if (c == EOF && ferror(fpi))
++          die(2);
+         ign_garb = 1;
+       }
+      }
+!   if (fflush(fpo) != 0)
+!     die(3);
+  #ifdef TRY_SEEK
+    fseek(fpo, 0L, 2);
+  #endif
+!   if (fclose(fpo) != 0)
+!     die(3);
+!   if (fclose(fpi) != 0)
+!     die(2);
+    return 0;
+  }
+  
+***************
+*** 379,389 ****
+   *
+   * If nz is always positive, lines are never suppressed.
+   */
+! static void
+  xxdline(fp, l, nz)
+! FILE *fp;
+! char *l;
+! int nz;
+  {
+    static char z[LLEN+1];
+    static int zero_seen = 0;
+--- 400,410 ----
+   *
+   * If nz is always positive, lines are never suppressed.
+   */
+!   static void
+  xxdline(fp, l, nz)
+!   FILE *fp;
+!   char *l;
+!   int nz;
+  {
+    static char z[LLEN+1];
+    static int zero_seen = 0;
+***************
+*** 398,409 ****
+         if (nz < 0)
+           zero_seen--;
+         if (zero_seen == 2)
+!          fputs(z, fp);
+         if (zero_seen > 2)
+!          fputs("*\n", fp);
+       }
+        if (nz >= 0 || zero_seen > 0)
+!      fputs(l, fp);
+        if (nz)
+       zero_seen = 0;
+      }
+--- 419,433 ----
+         if (nz < 0)
+           zero_seen--;
+         if (zero_seen == 2)
+!          if (fputs(z, fp) == EOF)
+!            die(3);
+         if (zero_seen > 2)
+!          if (fputs("*\n", fp) == EOF)
+!            die(3);
+       }
+        if (nz >= 0 || zero_seen > 0)
+!      if (fputs(l, fp) == EOF)
+!        die(3);
+        if (nz)
+       zero_seen = 0;
+      }
+***************
+*** 439,448 ****
+      0070,0071,0372,0373,0374,0375,0376,0377
+  };
+  
+! int
+  main(argc, argv)
+! int argc;
+! char *argv[];
+  {
+    FILE *fp, *fpo;
+    int c, e, p = 0, relseek = 1, negseek = 0, revert = 0;
+--- 463,472 ----
+      0070,0071,0372,0373,0374,0375,0376,0377
+  };
+  
+!   int
+  main(argc, argv)
+!   int argc;
+!   char *argv[];
+  {
+    FILE *fp, *fpo;
+    int c, e, p = 0, relseek = 1, negseek = 0, revert = 0;
+***************
+*** 452,458 ****
+    int grplen;                /* total chars per octet group */
+    long length = -1, n = 0, seekoff = 0;
+    char l[LLEN+1];
+!   char *pname, *pp;
+  
+  #ifdef AMIGA
+    /* This program doesn't work when started from the Workbench */
+--- 476,482 ----
+    int grplen;                /* total chars per octet group */
+    long length = -1, n = 0, seekoff = 0;
+    char l[LLEN+1];
+!   char *pp;
+  
+  #ifdef AMIGA
+    /* This program doesn't work when started from the Workbench */
+***************
+*** 495,501 ****
+         else
+           {
+             if (!argv[2])
+!              exit_with_usage(pname);
+             cols = (int)strtol(argv[2], NULL, 0);
+             argv++;
+             argc--;
+--- 519,525 ----
+         else
+           {
+             if (!argv[2])
+!              exit_with_usage();
+             cols = (int)strtol(argv[2], NULL, 0);
+             argv++;
+             argc--;
+***************
+*** 508,514 ****
+         else
+           {
+             if (!argv[2])
+!              exit_with_usage(pname);
+             octspergrp = (int)strtol(argv[2], NULL, 0);
+             argv++;
+             argc--;
+--- 532,538 ----
+         else
+           {
+             if (!argv[2])
+!              exit_with_usage();
+             octspergrp = (int)strtol(argv[2], NULL, 0);
+             argv++;
+             argc--;
+***************
+*** 531,537 ****
+         else
+           {
+             if (!argv[2])
+!              exit_with_usage(pname);
+  #ifdef TRY_SEEK
+             if (argv[2][0] == '+')
+               relseek++;
+--- 555,561 ----
+         else
+           {
+             if (!argv[2])
+!              exit_with_usage();
+  #ifdef TRY_SEEK
+             if (argv[2][0] == '+')
+               relseek++;
+***************
+*** 550,556 ****
+         else
+           {
+             if (!argv[2])
+!              exit_with_usage(pname);
+             length = strtol(argv[2], (char **)NULL, 0);
+             argv++;
+             argc--;
+--- 574,580 ----
+         else
+           {
+             if (!argv[2])
+!              exit_with_usage();
+             length = strtol(argv[2], (char **)NULL, 0);
+             argv++;
+             argc--;
+***************
+*** 563,569 ****
+         break;
+       }
+        else if (pp[0] == '-' && pp[1])        /* unknown option */
+!      exit_with_usage(pname);
+        else
+       break;                          /* not an option */
+  
+--- 587,593 ----
+         break;
+       }
+        else if (pp[0] == '-' && pp[1])        /* unknown option */
+!      exit_with_usage();
+        else
+       break;                          /* not an option */
+  
+***************
+*** 602,608 ****
+      octspergrp = cols;
+  
+    if (argc > 3)
+!     exit_with_usage(pname);
+  
+    if (argc == 1 || (argv[1][0] == '-' && !argv[1][1]))
+      BIN_ASSIGN(fp = stdin, !revert);
+--- 626,632 ----
+      octspergrp = cols;
+  
+    if (argc > 3)
+!     exit_with_usage();
+  
+    if (argc == 1 || (argv[1][0] == '-' && !argv[1][1]))
+      BIN_ASSIGN(fp = stdin, !revert);
+***************
+*** 640,646 ****
+         fprintf(stderr, "%s: sorry, cannot revert this type of hexdump\n", pname);
+         return -1;
+       }
+!       return huntype(fp, fpo, stderr, pname, cols, hextype,
+               negseek ? -seekoff : seekoff);
+      }
+  
+--- 664,670 ----
+         fprintf(stderr, "%s: sorry, cannot revert this type of hexdump\n", pname);
+         return -1;
+       }
+!       return huntype(fp, fpo, stderr, cols, hextype,
+               negseek ? -seekoff : seekoff);
+      }
+  
+***************
+*** 664,670 ****
+         long s = seekoff;
+  
+         while (s--)
+!          (void)getc(fp);
+       }
+      }
+  
+--- 688,703 ----
+         long s = seekoff;
+  
+         while (s--)
+!          if (getc(fp) == EOF)
+!            if (ferror(fp))
+!              {
+!                die(2);
+!              }
+!            else
+!              {
+!                fprintf(stderr, "%s: sorry cannot seek.\n", pname);
+!                return 4;
+!              }
+       }
+      }
+  
+***************
+*** 672,725 ****
+      {
+        if (fp != stdin)
+       {
+!        fprintf(fpo, "unsigned char %s", isdigit((int)argv[1][0]) ? "__" : "");
+         for (e = 0; (c = argv[1][e]) != 0; e++)
+!          putc(isalnum(c) ? c : '_', fpo);
+!        fputs("[] = {\n", fpo);
+       }
+  
+        p = 0;
+        while ((length < 0 || p < length) && (c = getc(fp)) != EOF)
+       {
+!        fprintf(fpo, (hexx == hexxa) ? "%s0x%02x" : "%s0X%02X",
+!          (p % cols) ? ", " : ",\n  "+2*!p,  c);
+         p++;
+       }
+  
+        if (p)
+!      fputs("\n};\n"+3*(fp == stdin), fpo);
+  
+        if (fp != stdin)
+       {
+!        fprintf(fpo, "unsigned int %s", isdigit((int)argv[1][0]) ? "__" : "");
+         for (e = 0; (c = argv[1][e]) != 0; e++)
+!          putc(isalnum(c) ? c : '_', fpo);
+!        fprintf(fpo, "_len = %d;\n", p);
+       }
+  
+!       fclose(fp);
+!       fclose(fpo);
+        return 0;
+      }
+  
+    if (hextype == HEX_POSTSCRIPT)
+      {
+        p = cols;
+        while ((length < 0 || n < length) && (e = getc(fp)) != EOF)
+       {
+!        putchar(hexx[(e >> 4) & 0xf]);
+!        putchar(hexx[(e     ) & 0xf]);
+         n++;
+         if (!--p)
+           {
+!            putchar('\n');
+             p = cols;
+           }
+       }
+        if (p < cols)
+!      putchar('\n');
+!       fclose(fp);
+!       fclose(fpo);
+        return 0;
+      }
+  
+--- 705,779 ----
+      {
+        if (fp != stdin)
+       {
+!        if (fprintf(fpo, "unsigned char %s", isdigit((int)argv[1][0]) ? "__" : "") < 0)
+!          die(3);
+         for (e = 0; (c = argv[1][e]) != 0; e++)
+!          if (putc(isalnum(c) ? c : '_', fpo) == EOF)
+!            die(3);
+!        if (fputs("[] = {\n", fpo) == EOF)
+!          die(3);
+       }
+  
+        p = 0;
++       c = 0;
+        while ((length < 0 || p < length) && (c = getc(fp)) != EOF)
+       {
+!        if (fprintf(fpo, (hexx == hexxa) ? "%s0x%02x" : "%s0X%02X",
+!              (p % cols) ? ", " : ",\n  "+2*!p,  c) < 0)
+!          die(3);
+         p++;
+       }
++       if (c == EOF && ferror(fp))
++      die(2);
+  
+        if (p)
+!      if (fputs("\n};\n" + 3 * (fp == stdin), fpo) == EOF)
+!        die(3);
+  
+        if (fp != stdin)
+       {
+!        if (fprintf(fpo, "unsigned int %s", isdigit((int)argv[1][0]) ? "__" : "") < 0)
+!          die(3);
+         for (e = 0; (c = argv[1][e]) != 0; e++)
+!          if (putc(isalnum(c) ? c : '_', fpo) == EOF)
+!            die(3);
+!        if (fprintf(fpo, "_len = %d;\n", p) < 0)
+!          die(3);
+       }
+  
+!       if (fclose(fp))
+!      die(2);
+!       if (fclose(fpo))
+!      die(3);
+        return 0;
+      }
+  
+    if (hextype == HEX_POSTSCRIPT)
+      {
+        p = cols;
++       e = 0;
+        while ((length < 0 || n < length) && (e = getc(fp)) != EOF)
+       {
+!        if (putc(hexx[(e >> 4) & 0xf], fpo) == EOF
+!                || putc(hexx[e & 0xf], fpo) == EOF)
+!          die(3);
+         n++;
+         if (!--p)
+           {
+!            if (putc('\n', fpo) == EOF)
+!              die(3);
+             p = cols;
+           }
+       }
++       if (e == EOF && ferror(fp))
++      die(2);
+        if (p < cols)
+!      if (putc('\n', fpo) == EOF)
+!        die(3);
+!       if (fclose(fp))
+!      die(2);
+!       if (fclose(fpo))
+!      die(3);
+        return 0;
+      }
+  
+***************
+*** 730,735 ****
+--- 784,790 ----
+    else       /* hextype == HEX_BITS */
+      grplen = 8 * octspergrp + 1;
+  
++   e = 0;
+    while ((length < 0 || n < length) && (e = getc(fp)) != EOF)
+      {
+        if (p == 0)
+***************
+*** 771,776 ****
+--- 826,833 ----
+         p = 0;
+       }
+      }
++   if (e == EOF && ferror(fp))
++     die(2);
+    if (p)
+      {
+        l[c = (11 + (grplen * cols - 1)/octspergrp + p)] = '\n'; l[++c] = '\0';
+***************
+*** 779,785 ****
+    else if (autoskip)
+      xxdline(fpo, l, -1);     /* last chance to flush out suppressed lines */
+  
+!   fclose(fp);
+!   fclose(fpo);
+    return 0;
+  }
+--- 836,846 ----
+    else if (autoskip)
+      xxdline(fpo, l, -1);     /* last chance to flush out suppressed lines */
+  
+!   if (fclose(fp))
+!     die(2);
+!   if (fclose(fpo))
+!     die(3);
+    return 0;
+  }
++ 
++ /* vi:set ts=8 sw=4 sts=2 cino+={2 cino+=n-2 : */
+*** ../vim-7.3.151/src/version.c       2011-04-01 16:28:33.000000000 +0200
+--- src/version.c      2011-04-01 19:00:26.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     152,
+  /**/
+
+-- 
+Eye have a spelling checker, it came with my PC;
+It plainly marks four my revue mistakes I cannot sea.
+I've run this poem threw it, I'm sure your please to no,
+It's letter perfect in it's weigh, my checker tolled me sew!
+
+ /// 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.153 b/7.3.153
new file mode 100644 (file)
index 0000000..9f76b51
--- /dev/null
+++ b/7.3.153
@@ -0,0 +1,66 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.153
+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.153 (after 7.3.152)
+Problem:    Compiler warning for ambiguous else, missing prototype.
+Solution:   Add braces. (Dominique Pelle)  Add prototype for die().
+Files:     src/xxd/xxd.c
+
+
+*** ../vim-7.3.152/src/xxd/xxd.c       2011-04-01 19:14:35.000000000 +0200
+--- src/xxd/xxd.c      2011-04-02 14:42:54.000000000 +0200
+***************
+*** 210,215 ****
+--- 210,216 ----
+  /* Let's collect some prototypes */
+  /* CodeWarrior is really picky about missing prototypes */
+  static void exit_with_usage __P((void));
++ static void die __P((int));
+  static int huntype __P((FILE *, FILE *, FILE *, int, int, long));
+  static void xxdline __P((FILE *, char *, int));
+  
+***************
+*** 689,694 ****
+--- 690,696 ----
+  
+         while (s--)
+           if (getc(fp) == EOF)
++          {
+             if (ferror(fp))
+               {
+                 die(2);
+***************
+*** 698,703 ****
+--- 700,706 ----
+                 fprintf(stderr, "%s: sorry cannot seek.\n", pname);
+                 return 4;
+               }
++          }
+       }
+      }
+  
+*** ../vim-7.3.152/src/version.c       2011-04-01 19:14:35.000000000 +0200
+--- src/version.c      2011-04-02 14:41:12.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     153,
+  /**/
+
+-- 
+            |
+
+Ceci n'est pas une pipe.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.3.154 b/7.3.154
new file mode 100644 (file)
index 0000000..e7c8862
--- /dev/null
+++ b/7.3.154
@@ -0,0 +1,106 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.154
+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.154 (after 7.3.148)
+Problem:    Can't compile with tiny features. (Tony Mechelynck)
+Solution:   Move #define outside of #ifdef.
+Files:     src/syntax.c
+
+
+*** ../vim-7.3.153/src/syntax.c        2011-04-01 14:44:54.000000000 +0200
+--- src/syntax.c       2011-04-02 15:11:47.000000000 +0200
+***************
+*** 68,73 ****
+--- 68,75 ----
+  
+  #define HL_TABLE() ((struct hl_group *)((highlight_ga.ga_data)))
+  
++ #define MAX_HL_ID       20000        /* maximum value for a highlight ID. */
++ 
+  #ifdef FEAT_CMDL_COMPL
+  /* Flags to indicate an additional string for highlight name completion. */
+  static int include_none = 0; /* when 1 include "None" */
+***************
+*** 225,236 ****
+   * 22000 - 22999  CONTAINED indicator (current_syn_inc_tag added)
+   * 23000 - 32767  cluster IDs (subtract SYNID_CLUSTER for the cluster ID)
+   */
+! #define SYNID_ALLBUT 20000       /* syntax group ID for contains=ALLBUT */
+  #define SYNID_TOP    21000       /* syntax group ID for contains=TOP */
+  #define SYNID_CONTAINED      22000       /* syntax group ID for contains=CONTAINED */
+  #define SYNID_CLUSTER        23000       /* first syntax group ID for clusters */
+  
+- #define MAX_SYNID       SYNID_ALLBUT
+  #define MAX_SYN_INC_TAG      999         /* maximum before the above overflow */
+  #define MAX_CLUSTER_ID  (32767 - SYNID_CLUSTER)
+  
+--- 227,237 ----
+   * 22000 - 22999  CONTAINED indicator (current_syn_inc_tag added)
+   * 23000 - 32767  cluster IDs (subtract SYNID_CLUSTER for the cluster ID)
+   */
+! #define SYNID_ALLBUT MAX_HL_ID   /* syntax group ID for contains=ALLBUT */
+  #define SYNID_TOP    21000       /* syntax group ID for contains=TOP */
+  #define SYNID_CONTAINED      22000       /* syntax group ID for contains=CONTAINED */
+  #define SYNID_CLUSTER        23000       /* first syntax group ID for clusters */
+  
+  #define MAX_SYN_INC_TAG      999         /* maximum before the above overflow */
+  #define MAX_CLUSTER_ID  (32767 - SYNID_CLUSTER)
+  
+***************
+*** 6462,6468 ****
+  
+  #endif /* FEAT_SYN_HL */
+  
+- 
+  /**************************************
+   *  Highlighting stuff                     *
+   **************************************/
+--- 6463,6468 ----
+***************
+*** 8996,9004 ****
+       highlight_ga.ga_growsize = 10;
+      }
+  
+!     if (highlight_ga.ga_len >= MAX_SYNID)
+      {
+!      EMSG(_("E849: Too many syntax groups"));
+       vim_free(name);
+       return 0;
+      }
+--- 8996,9004 ----
+       highlight_ga.ga_growsize = 10;
+      }
+  
+!     if (highlight_ga.ga_len >= MAX_HL_ID)
+      {
+!      EMSG(_("E849: Too many highlight and syntax groups"));
+       vim_free(name);
+       return 0;
+      }
+*** ../vim-7.3.153/src/version.c       2011-04-02 14:44:50.000000000 +0200
+--- src/version.c      2011-04-02 14:52:33.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     154,
+  /**/
+
+-- 
+BEDEVERE:        Why do you think she is a witch?
+SECOND VILLAGER: She turned me into a newt.
+BEDEVERE:        A newt?
+SECOND VILLAGER: (After looking at himself for some time) I got better.
+                 "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    ///
This page took 0.961837 seconds and 4 git commands to generate.