]> git.pld-linux.org Git - packages/vim.git/commitdiff
- initial import
authorAdam Gołębiowski <adamg@pld-linux.org>
Mon, 26 Jan 2004 14:05:20 +0000 (14:05 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
Changed files:
    6.2.155 -> 1.1
    6.2.156 -> 1.1
    6.2.157 -> 1.1
    6.2.158 -> 1.1
    6.2.159 -> 1.1
    6.2.160 -> 1.1
    6.2.161 -> 1.1
    6.2.162 -> 1.1
    6.2.163 -> 1.1
    6.2.164 -> 1.1
    6.2.165 -> 1.1
    6.2.166 -> 1.1
    6.2.167 -> 1.1
    6.2.168 -> 1.1
    6.2.169 -> 1.1
    6.2.170 -> 1.1
    6.2.171 -> 1.1
    6.2.172 -> 1.1
    6.2.173 -> 1.1
    6.2.174 -> 1.1
    6.2.175 -> 1.1
    6.2.176 -> 1.1
    6.2.177 -> 1.1
    6.2.178 -> 1.1
    6.2.179 -> 1.1
    6.2.180 -> 1.1
    6.2.181 -> 1.1
    6.2.182 -> 1.1
    6.2.183 -> 1.1
    6.2.184 -> 1.1
    6.2.185 -> 1.1
    6.2.186 -> 1.1
    6.2.187 -> 1.1
    6.2.188 -> 1.1
    6.2.189 -> 1.1
    6.2.190 -> 1.1
    6.2.191 -> 1.1
    6.2.192 -> 1.1
    6.2.193 -> 1.1
    6.2.194 -> 1.1
    6.2.195 -> 1.1
    6.2.196 -> 1.1
    6.2.197 -> 1.1
    6.2.198 -> 1.1
    6.2.199 -> 1.1
    6.2.200 -> 1.1
    6.2.201 -> 1.1
    6.2.202 -> 1.1
    6.2.203 -> 1.1
    6.2.204 -> 1.1
    6.2.205 -> 1.1
    6.2.206 -> 1.1
    6.2.207 -> 1.1
    6.2.208 -> 1.1
    6.2.209 -> 1.1
    6.2.210 -> 1.1
    6.2.211 -> 1.1

57 files changed:
6.2.155 [new file with mode: 0644]
6.2.156 [new file with mode: 0644]
6.2.157 [new file with mode: 0644]
6.2.158 [new file with mode: 0644]
6.2.159 [new file with mode: 0644]
6.2.160 [new file with mode: 0644]
6.2.161 [new file with mode: 0644]
6.2.162 [new file with mode: 0644]
6.2.163 [new file with mode: 0644]
6.2.164 [new file with mode: 0644]
6.2.165 [new file with mode: 0644]
6.2.166 [new file with mode: 0644]
6.2.167 [new file with mode: 0644]
6.2.168 [new file with mode: 0644]
6.2.169 [new file with mode: 0644]
6.2.170 [new file with mode: 0644]
6.2.171 [new file with mode: 0644]
6.2.172 [new file with mode: 0644]
6.2.173 [new file with mode: 0644]
6.2.174 [new file with mode: 0644]
6.2.175 [new file with mode: 0644]
6.2.176 [new file with mode: 0644]
6.2.177 [new file with mode: 0644]
6.2.178 [new file with mode: 0644]
6.2.179 [new file with mode: 0644]
6.2.180 [new file with mode: 0644]
6.2.181 [new file with mode: 0644]
6.2.182 [new file with mode: 0644]
6.2.183 [new file with mode: 0644]
6.2.184 [new file with mode: 0644]
6.2.185 [new file with mode: 0644]
6.2.186 [new file with mode: 0644]
6.2.187 [new file with mode: 0644]
6.2.188 [new file with mode: 0644]
6.2.189 [new file with mode: 0644]
6.2.190 [new file with mode: 0644]
6.2.191 [new file with mode: 0644]
6.2.192 [new file with mode: 0644]
6.2.193 [new file with mode: 0644]
6.2.194 [new file with mode: 0644]
6.2.195 [new file with mode: 0644]
6.2.196 [new file with mode: 0644]
6.2.197 [new file with mode: 0644]
6.2.198 [new file with mode: 0644]
6.2.199 [new file with mode: 0644]
6.2.200 [new file with mode: 0644]
6.2.201 [new file with mode: 0644]
6.2.202 [new file with mode: 0644]
6.2.203 [new file with mode: 0644]
6.2.204 [new file with mode: 0644]
6.2.205 [new file with mode: 0644]
6.2.206 [new file with mode: 0644]
6.2.207 [new file with mode: 0644]
6.2.208 [new file with mode: 0644]
6.2.209 [new file with mode: 0644]
6.2.210 [new file with mode: 0644]
6.2.211 [new file with mode: 0644]

diff --git a/6.2.155 b/6.2.155
new file mode 100644 (file)
index 0000000..b23fd06
--- /dev/null
+++ b/6.2.155
@@ -0,0 +1,52 @@
+To: vim-dev@vim.org
+Subject: Patch 6.2.155
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 6.2.155
+Problem:    Win32: Using ":tjump www" in a help file gives two results.
+           (Dave Roberts)
+Solution:   Ignore differences between slashes and backslashes when checking
+           for identical tag matches.
+Files:     src/tag.c
+
+
+*** ../vim-6.2.154/src/tag.c   Sun Oct 12 16:52:45 2003
+--- src/tag.c  Mon Dec 15 20:36:00 2003
+***************
+*** 1861,1866 ****
+--- 1861,1871 ----
+                       {
+                           p[0] = mtt;
+                           STRCPY(p + 1, tag_fname);
++ #ifdef BACKSLASH_IN_FILENAME
++                          /* Ignore differences in slashes, avoid adding
++                           * both path/file and path\file. */
++                          slash_adjust(p + 1);
++ #endif
+                           s = p + 1 + STRLEN(tag_fname) + 1;
+  #ifdef FEAT_EMACS_TAGS
+                           if (is_etag)
+*** ../vim-6.2.154/src/version.c       Wed Nov 12 20:56:23 2003
+--- src/version.c      Mon Dec 29 19:47:28 2003
+***************
+*** 639,640 ****
+--- 639,642 ----
+  {   /* Add new patch number below this line */
++ /**/
++     155,
+  /**/
+
+-- 
+I AM THANKFUL...
+...for the mess to clean after a party because it means I have
+been surrounded by friends.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///          Creator of Vim - Vi IMproved -- http://www.Vim.org          \\\
+\\\              Project leader for A-A-P -- http://www.A-A-P.org        ///
+ \\\  Help AIDS victims, buy here: http://ICCF-Holland.org/click1.html  ///
diff --git a/6.2.156 b/6.2.156
new file mode 100644 (file)
index 0000000..3621695
--- /dev/null
+++ b/6.2.156
@@ -0,0 +1,52 @@
+To: vim-dev@vim.org
+Subject: Patch 6.2.156
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 6.2.156 (after 6.2.125)
+Problem:    Win32: Netbeans fails to build, EINTR is not defined.
+Solution:   Redefine EINTR to WSAEINTR. (Mike Williams)
+Files:     src/netbeans.c
+
+
+*** ../vim-6.2.155/src/netbeans.c      Fri Oct 17 12:13:28 2003
+--- src/netbeans.c     Wed Dec 24 12:42:27 2003
+***************
+*** 32,37 ****
+--- 32,41 ----
+   * errno... */
+  # define sock_errno WSAGetLastError()
+  # define ECONNREFUSED WSAECONNREFUSED
++ # ifdef EINTR
++ #  undef EINTR
++ # endif
++ # define EINTR WSAEINTR
+  # define sock_write(sd, buf, len) send(sd, buf, len, 0)
+  # define sock_read(sd, buf, len) recv(sd, buf, len, 0)
+  # define sock_close(sd) closesocket(sd)
+*** ../vim-6.2.155/src/version.c       Mon Dec 29 19:48:35 2003
+--- src/version.c      Mon Dec 29 19:57:43 2003
+***************
+*** 639,640 ****
+--- 639,642 ----
+  {   /* Add new patch number below this line */
++ /**/
++     156,
+  /**/
+
+-- 
+The primary purpose of the DATA statement is to give names to constants;
+instead of referring to pi as 3.141592653589793 at every appearance, the
+variable PI can be given that value with a DATA statement and used instead
+of the longer form of the constant.  This also simplifies modifying the
+program, should the value of pi change.
+       -- FORTRAN manual for Xerox Computers
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///          Creator of Vim - Vi IMproved -- http://www.Vim.org          \\\
+\\\              Project leader for A-A-P -- http://www.A-A-P.org        ///
+ \\\  Help AIDS victims, buy here: http://ICCF-Holland.org/click1.html  ///
diff --git a/6.2.157 b/6.2.157
new file mode 100644 (file)
index 0000000..1843104
--- /dev/null
+++ b/6.2.157
@@ -0,0 +1,52 @@
+To: vim-dev@vim.org
+Subject: Patch 6.2.157
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 6.2.157
+Problem:    Using "%p" in 'errorformat' gives a column number that is too
+           high.
+Solution:   Set the flag to use the number as a virtual column.  (Lefteris
+           Koutsoloukas)
+Files:     src/quickfix.c
+
+
+*** ../vim-6.2.156/src/quickfix.c      Thu Sep 11 21:15:02 2003
+--- src/quickfix.c     Wed Dec 24 13:39:46 2003
+***************
+*** 476,482 ****
+--- 476,486 ----
+               if ((i = (int)fmt_ptr->addr[6]) > 0)            /* %r */
+                   tail = regmatch.startp[i];
+               if ((i = (int)fmt_ptr->addr[7]) > 0)            /* %p */
++              {
+                   col = (int)(regmatch.endp[i] - regmatch.startp[i] + 1);
++                  if (*((char_u *)regmatch.startp[i]) != TAB)
++                      use_virt_col = TRUE;
++              }
+               if ((i = (int)fmt_ptr->addr[8]) > 0)            /* %v */
+               {
+                   col = (int)atol((char *)regmatch.startp[i]);
+*** ../vim-6.2.156/src/version.c       Mon Dec 29 20:14:44 2003
+--- src/version.c      Mon Dec 29 20:20:46 2003
+***************
+*** 639,640 ****
+--- 639,642 ----
+  {   /* Add new patch number below this line */
++ /**/
++     157,
+  /**/
+
+-- 
+I AM THANKFUL...
+...for a lawn that needs mowing, windows that need cleaning
+and gutters that need fixing because it means I have a home.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///          Creator of Vim - Vi IMproved -- http://www.Vim.org          \\\
+\\\              Project leader for A-A-P -- http://www.A-A-P.org        ///
+ \\\  Help AIDS victims, buy here: http://ICCF-Holland.org/click1.html  ///
diff --git a/6.2.158 b/6.2.158
new file mode 100644 (file)
index 0000000..e60434c
--- /dev/null
+++ b/6.2.158
@@ -0,0 +1,71 @@
+To: vim-dev@vim.org
+Subject: Patch 6.2.158
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 6.2.158
+Problem:    The sed command on Solaris and HPUX doesn't work for a line that
+           doesn't end in a newline.
+Solution:   Add a newline when feeding text to sed. (Mark Waggoner)
+Files:     src/configure.in, src/auto/configure
+
+
+*** ../vim-6.2.157/src/auto/configure  Sun Nov  2 15:37:11 2003
+--- src/auto/configure Wed Dec 24 14:10:23 2003
+***************
+*** 1572,1578 ****
+        vi_cv_perllib=`$vi_cv_path_perl -MConfig -e 'print $Config{privlibexp}'`
+        
+              perlcppflags=`$vi_cv_path_perl -Mlib=$srcdir -MExtUtils::Embed \
+!            -e 'ccflags;perl_inc' | sed -e 's/-fno[^ ]*//'`
+        if test "X$perlcppflags" != "X"; then
+       PERL_CFLAGS="$perlcppflags"
+        fi
+--- 1582,1588 ----
+        vi_cv_perllib=`$vi_cv_path_perl -MConfig -e 'print $Config{privlibexp}'`
+        
+              perlcppflags=`$vi_cv_path_perl -Mlib=$srcdir -MExtUtils::Embed \
+!            -e 'ccflags;perl_inc;print"\n"' | sed -e 's/-fno[^ ]*//'`
+        if test "X$perlcppflags" != "X"; then
+       PERL_CFLAGS="$perlcppflags"
+        fi
+*** ../vim-6.2.157/src/configure.in    Sun Nov  2 15:37:11 2003
+--- src/configure.in   Wed Dec 24 14:09:32 2003
+***************
+*** 313,319 ****
+        AC_SUBST(vi_cv_perllib)
+        dnl Remove "-fno-something", it breaks using cproto.
+        perlcppflags=`$vi_cv_path_perl -Mlib=$srcdir -MExtUtils::Embed \
+!            -e 'ccflags;perl_inc' | sed -e 's/-fno[[^ ]]*//'`
+        if test "X$perlcppflags" != "X"; then
+       PERL_CFLAGS="$perlcppflags"
+        fi
+--- 314,320 ----
+        AC_SUBST(vi_cv_perllib)
+        dnl Remove "-fno-something", it breaks using cproto.
+        perlcppflags=`$vi_cv_path_perl -Mlib=$srcdir -MExtUtils::Embed \
+!            -e 'ccflags;perl_inc;print"\n"' | sed -e 's/-fno[[^ ]]*//'`
+        if test "X$perlcppflags" != "X"; then
+       PERL_CFLAGS="$perlcppflags"
+        fi
+*** ../vim-6.2.157/src/version.c       Mon Dec 29 20:21:49 2003
+--- src/version.c      Mon Dec 29 20:25:14 2003
+***************
+*** 639,640 ****
+--- 639,642 ----
+  {   /* Add new patch number below this line */
++ /**/
++     158,
+  /**/
+
+-- 
+A fool learns from his mistakes, a wise man from someone elses.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///          Creator of Vim - Vi IMproved -- http://www.Vim.org          \\\
+\\\              Project leader for A-A-P -- http://www.A-A-P.org        ///
+ \\\  Help AIDS victims, buy here: http://ICCF-Holland.org/click1.html  ///
diff --git a/6.2.159 b/6.2.159
new file mode 100644 (file)
index 0000000..61c66cd
--- /dev/null
+++ b/6.2.159
@@ -0,0 +1,63 @@
+To: vim-dev@vim.org
+Subject: Patch 6.2.159
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 6.2.159
+Problem:    When using expression folding and 'foldopen' is "undo" an undo
+           command doesn't always open the fold.
+Solution:   Save and restore the KeyTyped variable when evaluating 'foldexpr'.
+           (Taro Muraoka)
+Files:     src/fold.c
+
+
+*** ../vim-6.2.158/src/fold.c  Tue Sep  2 22:25:25 2003
+--- src/fold.c Tue Dec 16 09:47:43 2003
+***************
+*** 2842,2847 ****
+--- 2842,2848 ----
+      int              n;
+      int              c;
+      linenr_T lnum = flp->lnum + flp->off;
++     int              save_keytyped;
+  
+      win = curwin;
+      curwin = flp->wp;
+***************
+*** 2854,2860 ****
+--- 2855,2866 ----
+      if (lnum <= 1)
+       flp->lvl = 0;
+  
++     /* KeyTyped may be reset to 0 when calling a function which invokes
++      * do_cmdline().  To make 'foldopen' work correctly restore KeyTyped. */
++     save_keytyped = KeyTyped;
+      n = eval_foldexpr(flp->wp->w_p_fde, &c);
++     KeyTyped = save_keytyped;
++ 
+      switch (c)
+      {
+       /* "a1", "a2", .. : add to the fold level */
+*** ../vim-6.2.158/src/version.c       Mon Dec 29 20:27:03 2003
+--- src/version.c      Mon Dec 29 20:29:37 2003
+***************
+*** 639,640 ****
+--- 639,642 ----
+  {   /* Add new patch number below this line */
++ /**/
++     159,
+  /**/
+
+-- 
+I AM THANKFUL...
+...for all the complaining I hear about the government
+because it means we have freedom of speech.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///          Creator of Vim - Vi IMproved -- http://www.Vim.org          \\\
+\\\              Project leader for A-A-P -- http://www.A-A-P.org        ///
+ \\\  Help AIDS victims, buy here: http://ICCF-Holland.org/click1.html  ///
diff --git a/6.2.160 b/6.2.160
new file mode 100644 (file)
index 0000000..0f1f07f
--- /dev/null
+++ b/6.2.160
@@ -0,0 +1,56 @@
+To: vim-dev@vim.org
+Subject: Patch 6.2.160
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 6.2.160
+Problem:    When 'virtualedit' is "all" and 'selection is "exclusive",
+           selecting a double-width character below a single-width character
+           may cause a crash.
+Solution:   Avoid overflow on unsigned integer decrement. (Taro Muraoka)
+Files:     src/normal.c
+
+
+*** ../vim-6.2.159/src/normal.c        Sun Nov  9 20:35:08 2003
+--- src/normal.c       Tue Dec 16 10:06:16 2003
+***************
+*** 1510,1516 ****
+                       oap->start_vcol = start;
+                   if (end > oap->end_vcol)
+                   {
+!                      if (*p_sel == 'e' && start - 1 >= oap->end_vcol)
+                           oap->end_vcol = start - 1;
+                       else
+                           oap->end_vcol = end;
+--- 1510,1517 ----
+                       oap->start_vcol = start;
+                   if (end > oap->end_vcol)
+                   {
+!                      if (*p_sel == 'e' && start >= 1
+!                                              && start - 1 >= oap->end_vcol)
+                           oap->end_vcol = start - 1;
+                       else
+                           oap->end_vcol = end;
+*** ../vim-6.2.159/src/version.c       Mon Dec 29 20:30:12 2003
+--- src/version.c      Mon Dec 29 20:32:24 2003
+***************
+*** 639,640 ****
+--- 639,642 ----
+  {   /* Add new patch number below this line */
++ /**/
++     160,
+  /**/
+
+-- 
+I AM THANKFUL...
+...for the piles of laundry and ironing because it means I
+have plenty of clothes to wear.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///          Creator of Vim - Vi IMproved -- http://www.Vim.org          \\\
+\\\              Project leader for A-A-P -- http://www.A-A-P.org        ///
+ \\\  Help AIDS victims, buy here: http://ICCF-Holland.org/click1.html  ///
diff --git a/6.2.161 b/6.2.161
new file mode 100644 (file)
index 0000000..95a5b79
--- /dev/null
+++ b/6.2.161
@@ -0,0 +1,170 @@
+To: vim-dev@vim.org
+Subject: Patch 6.2.161 (extra)
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 6.2.161 (extra)
+Problem:    VMS: Missing header file.  Reading input busy loops.
+Solution:   Include termdef.h.  Avoid the use of a wait function in
+           vms_read().  (Frank Ries)
+Files:     src/os_unix.h, src/os_vms.c
+
+
+*** ../vim-6.2.160/src/os_unix.h       Mon Jan 20 21:14:13 2003
+--- src/os_unix.h      Mon Nov 10 10:53:44 2003
+***************
+*** 218,223 ****
+--- 218,224 ----
+  #include <tt2def.h>
+  #include <jpidef.h>
+  #include <rms.h>
++ #include <trmdef.h>
+  #include <string.h>
+  #include <starlet.h>
+  #include <socket.h>
+*** ../vim-6.2.160/src/os_vms.c        Wed Oct 29 14:40:27 2003
+--- src/os_vms.c       Tue Dec 23 14:30:31 2003
+***************
+*** 53,62 ****
+  static short iochan;                 /* TTY I/O channel */
+  static short iosb[4];                /* IO status block */
+  
+! int vms_match_num = 0;
+! int vms_match_alloced = 0;
+! int vms_match_free = 0;
+! char_u **vms_fmatch = NULL;
+  static char *Fspec_Rms;                     /* rms file spec, passed implicitly between routines */
+  
+  
+--- 53,61 ----
+  static short iochan;                 /* TTY I/O channel */
+  static short iosb[4];                /* IO status block */
+  
+! static int vms_match_num = 0;
+! static int vms_match_free = 0;
+! static char_u **vms_fmatch = NULL;
+  static char *Fspec_Rms;                     /* rms file spec, passed implicitly between routines */
+  
+  
+***************
+*** 145,151 ****
+       return;
+  }
+  
+! static TT_MODE
+  get_tty(void)
+  {
+  
+--- 144,150 ----
+       return;
+  }
+  
+!     static TT_MODE
+  get_tty(void)
+  {
+  
+***************
+*** 299,322 ****
+      int
+  vms_read(char *inbuf, size_t nbytes)
+  {
+!     int     status, function, len;
+!     float   wait = 0.05;
+!     TT_MODE tt_mode;
+  
+      /* whatever happened earlier we need an iochan here */
+      if (!iochan)
+!        tt_mode = get_tty();
+  
+!     function = (IO$_READLBLK | IO$M_NOECHO | IO$M_TIMED | IO$M_ESCAPE);
+      memset(inbuf, 0, nbytes);
+  
+      while (1)
+      {
+!      status = sys$qiow(0,iochan,function,&iosb,0,0,inbuf,nbytes-1,0,0,0,0);
+       len = strlen(inbuf);
+       if (len > 0)
+           break;
+-      lib$wait(&wait);
+      }
+      return len;
+  }
+--- 298,327 ----
+      int
+  vms_read(char *inbuf, size_t nbytes)
+  {
+!     int              status, function, len;
+!     TT_MODE  tt_mode;
+!     ITEM     itmlst[2];
+!     static long trm_mask[8] = {-1, -1, -1, -1, -1, -1, -1, -1};
+  
+      /* whatever happened earlier we need an iochan here */
+      if (!iochan)
+!      tt_mode = get_tty();
+! 
+!     vul_item(&itmlst[0], 0, TRM$_MODIFIERS,
+!          (char *)(TRM$M_TM_ESCAPE | TRM$M_TM_NOECHO | TRM$M_TM_NOEDIT |
+!             TRM$M_TM_NOFILTR | TRM$M_TM_NORECALL | TRM$M_TM_TRMNOECHO), 0);
+!     vul_item(&itmlst[1], sizeof(trm_mask), TRM$_TERM, (char *)&trm_mask, 0);
+  
+!     function = (IO$_READLBLK | IO$M_EXTEND);
+      memset(inbuf, 0, nbytes);
+  
+      while (1)
+      {
+!      status = sys$qiow(0, iochan, function, &iosb, 0, 0, inbuf, nbytes - 1,
+!                                             0, 0, &itmlst, sizeof(itmlst));
+       len = strlen(inbuf);
+       if (len > 0)
+           break;
+      }
+      return len;
+  }
+***************
+*** 328,338 ****
+   * Returns:  1 - continue finding matches
+   *        0 - stop trying to find any further mathces
+   */
+! static int
+  vms_wproc(char *name, int val)
+  {
+      int i;
+      int nlen;
+  
+      if (val != DECC$K_FILE) /* Directories and foreing non VMS files are not counting  */
+       return 1;
+--- 333,344 ----
+   * Returns:  1 - continue finding matches
+   *        0 - stop trying to find any further mathces
+   */
+!     static int
+  vms_wproc(char *name, int val)
+  {
+      int i;
+      int nlen;
++     static int vms_match_alloced = 0;
+  
+      if (val != DECC$K_FILE) /* Directories and foreing non VMS files are not counting  */
+       return 1;
+*** ../vim-6.2.160/src/version.c       Mon Dec 29 20:32:43 2003
+--- src/version.c      Mon Dec 29 20:34:56 2003
+***************
+*** 639,640 ****
+--- 639,642 ----
+  {   /* Add new patch number below this line */
++ /**/
++     161,
+  /**/
+
+-- 
+From "know your smileys":
+ [:-)  Frankenstein's monster
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///          Creator of Vim - Vi IMproved -- http://www.Vim.org          \\\
+\\\              Project leader for A-A-P -- http://www.A-A-P.org        ///
+ \\\  Help AIDS victims, buy here: http://ICCF-Holland.org/click1.html  ///
diff --git a/6.2.162 b/6.2.162
new file mode 100644 (file)
index 0000000..ba10a34
--- /dev/null
+++ b/6.2.162
@@ -0,0 +1,46 @@
+To: vim-dev@vim.org
+Subject: Patch 6.2.162
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 6.2.162
+Problem:    ":redraw" doesn't always display the text that includes the cursor
+           position, e.g. after ":call cursor(1, 0)". (Eugene Minkovskii)
+Solution:   Call update_topline() before redrawing.
+Files:     src/ex_docmd.c
+
+
+*** ../vim-6.2.161/src/ex_docmd.c      Wed Oct 29 14:37:09 2003
+--- src/ex_docmd.c     Tue Dec 16 13:51:40 2003
+***************
+*** 7116,7121 ****
+--- 7116,7122 ----
+  
+      RedrawingDisabled = 0;
+      p_lz = FALSE;
++     update_topline();
+      update_screen(eap->forceit ? CLEAR :
+  #ifdef FEAT_VISUAL
+           VIsual_active ? INVERTED :
+*** ../vim-6.2.161/src/version.c       Mon Dec 29 20:36:56 2003
+--- src/version.c      Mon Dec 29 20:38:47 2003
+***************
+*** 639,640 ****
+--- 639,642 ----
+  {   /* Add new patch number below this line */
++ /**/
++     162,
+  /**/
+
+-- 
+From "know your smileys":
+ :-E   Has major dental problems
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///          Creator of Vim - Vi IMproved -- http://www.Vim.org          \\\
+\\\              Project leader for A-A-P -- http://www.A-A-P.org        ///
+ \\\  Help AIDS victims, buy here: http://ICCF-Holland.org/click1.html  ///
diff --git a/6.2.163 b/6.2.163
new file mode 100644 (file)
index 0000000..3ac25c2
--- /dev/null
+++ b/6.2.163
@@ -0,0 +1,69 @@
+To: vim-dev@vim.org
+Subject: Patch 6.2.163
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 6.2.163
+Problem:    "make install" may also copy AAPDIR directories.
+Solution:   Delete AAPDIR directories, just like CVS directories.
+Files:     src/Makefile
+
+
+*** ../vim-6.2.162/src/Makefile        Sun Nov  2 15:37:11 2003
+--- src/Makefile       Wed Dec 24 14:28:14 2003
+***************
+*** 1724,1730 ****
+       chmod $(FILEMOD) `find $(DEST_MACRO) -type f -print`
+       chmod $(SCRIPTMOD) $(DEST_MACRO)/less.sh
+  # When using CVS some CVS directories might have been copied.
+!      cvs=`find $(DEST_MACRO) -name CVS -print`; \
+             if test -n "$$cvs"; then \
+                rm -rf $$cvs; \
+             fi
+--- 1727,1733 ----
+       chmod $(FILEMOD) `find $(DEST_MACRO) -type f -print`
+       chmod $(SCRIPTMOD) $(DEST_MACRO)/less.sh
+  # When using CVS some CVS directories might have been copied.
+!      cvs=`find $(DEST_MACRO) -name CVS -or -name AAPDIR -print`; \
+             if test -n "$$cvs"; then \
+                rm -rf $$cvs; \
+             fi
+***************
+*** 1751,1757 ****
+  # install the runtime tools
+       $(INSTALL_DATA_R) $(TOOLSSOURCE)/* $(DEST_TOOLS)
+  # When using CVS some CVS directories might have been copied.
+!      cvs=`find $(DEST_TOOLS) -name CVS -print`; \
+             if test -n "$$cvs"; then \
+                rm -rf $$cvs; \
+             fi
+--- 1754,1760 ----
+  # install the runtime tools
+       $(INSTALL_DATA_R) $(TOOLSSOURCE)/* $(DEST_TOOLS)
+  # When using CVS some CVS directories might have been copied.
+!      cvs=`find $(DEST_TOOLS) -name CVS -or -name AAPDIR -print`; \
+             if test -n "$$cvs"; then \
+                rm -rf $$cvs; \
+             fi
+*** ../vim-6.2.162/src/version.c       Mon Dec 29 20:39:18 2003
+--- src/version.c      Mon Dec 29 20:41:33 2003
+***************
+*** 639,640 ****
+--- 639,642 ----
+  {   /* Add new patch number below this line */
++ /**/
++     163,
+  /**/
+
+-- 
+From "know your smileys":
+ :-| :-|   Deja' vu!
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///          Creator of Vim - Vi IMproved -- http://www.Vim.org          \\\
+\\\              Project leader for A-A-P -- http://www.A-A-P.org        ///
+ \\\  Help AIDS victims, buy here: http://ICCF-Holland.org/click1.html  ///
diff --git a/6.2.164 b/6.2.164
new file mode 100644 (file)
index 0000000..2865682
--- /dev/null
+++ b/6.2.164
@@ -0,0 +1,106 @@
+To: vim-dev@vim.org
+Subject: Patch 6.2.164
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 6.2.164 (after 6.2.144)
+Problem:    When "g:html_use_css" is set the HTML header generated by the
+           2html script is still wrong.
+Solution:   Search for a string instead of jumping to a fixed line number.
+           Go to the start of the line before inserting the header.
+           (Jess Thrysoee)
+Files:     runtime/syntax/2html.vim
+
+
+*** ../vim-6.2.163/runtime/syntax/2html.vim    Sun Nov  2 17:50:31 2003
+--- runtime/syntax/2html.vim   Thu Nov 13 17:01:05 2003
+***************
+*** 1,6 ****
+  " Vim syntax support file
+  " Maintainer: Bram Moolenaar <Bram@vim.org>
+! " Last Change: 2003 Nov 02
+  "           (modified by David Ne\v{c}as (Yeti) <yeti@physics.muni.cz>)
+  
+  " Transform a file into HTML, using the current syntax highlighting.
+--- 1,6 ----
+  " Vim syntax support file
+  " Maintainer: Bram Moolenaar <Bram@vim.org>
+! " Last Change: 2003 Nov 13
+  "           (modified by David Ne\v{c}as (Yeti) <yeti@physics.muni.cz>)
+  
+  " Transform a file into HTML, using the current syntax highlighting.
+***************
+*** 290,296 ****
+  
+  " Now, when we finally know which, we define the colors and styles
+  if exists("html_use_css")
+!   8
+  endif
+  
+  " Find out the background and foreground color.
+--- 290,296 ----
+  
+  " Now, when we finally know which, we define the colors and styles
+  if exists("html_use_css")
+!   1;/<style type="text/+1
+  endif
+  
+  " Find out the background and foreground color.
+***************
+*** 351,357 ****
+      endif
+    else
+      execute '%s+<span class="' . s:id_name . '">\([^<]*\)</span>+\1+g'
+!     8
+    endif
+  endwhile
+  
+--- 351,359 ----
+      endif
+    else
+      execute '%s+<span class="' . s:id_name . '">\([^<]*\)</span>+\1+g'
+!     if exists("html_use_css")
+!       1;/<style type="text/+1
+!     endif
+    endif
+  endwhile
+  
+***************
+*** 360,366 ****
+  
+  " The DTD
+  if exists("html_use_css")
+!   exe "normal! ggi<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n\e"
+  endif
+  
+  " Cleanup
+--- 362,368 ----
+  
+  " The DTD
+  if exists("html_use_css")
+!   exe "normal! gg0i<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n\e"
+  endif
+  
+  " Cleanup
+*** ../vim-6.2.163/src/version.c       Mon Dec 29 20:42:51 2003
+--- src/version.c      Mon Dec 29 20:46:55 2003
+***************
+*** 639,640 ****
+--- 639,642 ----
+  {   /* Add new patch number below this line */
++ /**/
++     164,
+  /**/
+
+-- 
+From "know your smileys":
+ :-| :-|   Deja' vu!
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///          Creator of Vim - Vi IMproved -- http://www.Vim.org          \\\
+\\\              Project leader for A-A-P -- http://www.A-A-P.org        ///
+ \\\  Help AIDS victims, buy here: http://ICCF-Holland.org/click1.html  ///
diff --git a/6.2.165 b/6.2.165
new file mode 100644 (file)
index 0000000..875cd67
--- /dev/null
+++ b/6.2.165
@@ -0,0 +1,76 @@
+To: vim-dev@vim.org
+Subject: Patch 6.2.165
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 6.2.165
+Problem:    The configure checks hang when using autoconf 2.57.
+Solution:   Invoke AC_PROGRAM_EGREP to set $EGREP. (Aron Griffis)
+Files:     src/auto/configure, src/configure.in
+
+
+*** ../vim-6.2.164/src/auto/configure  Mon Dec 29 20:27:03 2003
+--- src/auto/configure Wed Dec 24 14:10:23 2003
+***************
+*** 943,950 ****
+    ac_cv_prog_CPP="$CPP"
+  fi
+  echo "$ac_t""$CPP" 1>&6
+!      echo $ac_n "checking for POSIXized ISC""... $ac_c" 1>&6
+! echo "configure:944: checking for POSIXized ISC" >&5
+  if test -d /etc/conf/kconfig.d &&
+    grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1
+  then
+--- 943,960 ----
+    ac_cv_prog_CPP="$CPP"
+  fi
+  echo "$ac_t""$CPP" 1>&6
+!      cat > conftest.$ac_ext <<EOF
+! #line 948 "configure"
+! #include "confdefs.h"
+! 
+! EOF
+! if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+!   egrep "" >/dev/null 2>&1; then
+!   :
+! fi
+! rm -f conftest*
+!  echo $ac_n "checking for POSIXized ISC""... $ac_c" 1>&6
+! echo "configure:958: checking for POSIXized ISC" >&5
+  if test -d /etc/conf/kconfig.d &&
+    grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1
+  then
+*** ../vim-6.2.164/src/configure.in    Mon Dec 29 20:27:03 2003
+--- src/configure.in   Wed Dec 24 14:09:32 2003
+***************
+*** 13,18 ****
+--- 13,19 ----
+  dnl Checks for programs.
+  AC_PROG_CC   dnl required by almost everything
+  AC_PROG_CPP  dnl required by header file checks
++ AC_PROGRAM_EGREP dnl required by AC_EGREP_CPP
+  AC_ISC_POSIX dnl required by AC_C_CROSS
+  AC_PROG_AWK  dnl required for "make html" in ../doc
+  
+*** ../vim-6.2.164/src/version.c       Mon Dec 29 20:49:00 2003
+--- src/version.c      Mon Dec 29 20:51:56 2003
+***************
+*** 639,640 ****
+--- 639,642 ----
+  {   /* Add new patch number below this line */
++ /**/
++     165,
+  /**/
+
+-- 
+From "know your smileys":
+ :.-(  Crying
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///          Creator of Vim - Vi IMproved -- http://www.Vim.org          \\\
+\\\              Project leader for A-A-P -- http://www.A-A-P.org        ///
+ \\\  Help AIDS victims, buy here: http://ICCF-Holland.org/click1.html  ///
diff --git a/6.2.166 b/6.2.166
new file mode 100644 (file)
index 0000000..a1708b3
--- /dev/null
+++ b/6.2.166
@@ -0,0 +1,99 @@
+To: vim-dev@vim.org
+Subject: Patch 6.2.166
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 6.2.166
+Problem:    When $GZIP contains "-N" editing compressed files doesn't work
+           properly.
+Solution:   Add "-n" to "gzip -d" to avoid restoring the file name. (Oyvind
+           Holm)
+Files:     runtime/plugin/gzip.vim
+
+
+*** ../vim-6.2.165/runtime/plugin/gzip.vim     Sun Apr  6 17:30:34 2003
+--- runtime/plugin/gzip.vim    Mon Dec 22 16:14:42 2003
+***************
+*** 1,6 ****
+  " Vim plugin for editing compressed files.
+  " Maintainer: Bram Moolenaar <Bram@vim.org>
+! " Last Change: 2003 Apr 06
+  
+  " Exit quickly when:
+  " - this plugin was already loaded
+--- 1,6 ----
+  " Vim plugin for editing compressed files.
+  " Maintainer: Bram Moolenaar <Bram@vim.org>
+! " Last Change: 2003 Dec 22
+  
+  " Exit quickly when:
+  " - this plugin was already loaded
+***************
+*** 19,31 ****
+    " set binary mode before reading the file
+    " use "gzip -d", gunzip isn't always available
+    autocmd BufReadPre,FileReadPre     *.gz,*.bz2,*.Z setlocal bin
+!   autocmd BufReadPost,FileReadPost   *.gz  call s:read("gzip -d")
+    autocmd BufReadPost,FileReadPost   *.bz2 call s:read("bzip2 -d")
+    autocmd BufReadPost,FileReadPost   *.Z   call s:read("uncompress")
+    autocmd BufWritePost,FileWritePost *.gz  call s:write("gzip")
+    autocmd BufWritePost,FileWritePost *.bz2 call s:write("bzip2")
+    autocmd BufWritePost,FileWritePost *.Z   call s:write("compress -f")
+!   autocmd FileAppendPre                      *.gz  call s:appre("gzip -d")
+    autocmd FileAppendPre                      *.bz2 call s:appre("bzip2 -d")
+    autocmd FileAppendPre                      *.Z   call s:appre("uncompress")
+    autocmd FileAppendPost             *.gz  call s:write("gzip")
+--- 19,31 ----
+    " set binary mode before reading the file
+    " use "gzip -d", gunzip isn't always available
+    autocmd BufReadPre,FileReadPre     *.gz,*.bz2,*.Z setlocal bin
+!   autocmd BufReadPost,FileReadPost   *.gz  call s:read("gzip -dn")
+    autocmd BufReadPost,FileReadPost   *.bz2 call s:read("bzip2 -d")
+    autocmd BufReadPost,FileReadPost   *.Z   call s:read("uncompress")
+    autocmd BufWritePost,FileWritePost *.gz  call s:write("gzip")
+    autocmd BufWritePost,FileWritePost *.bz2 call s:write("bzip2")
+    autocmd BufWritePost,FileWritePost *.Z   call s:write("compress -f")
+!   autocmd FileAppendPre                      *.gz  call s:appre("gzip -dn")
+    autocmd FileAppendPre                      *.bz2 call s:appre("bzip2 -d")
+    autocmd FileAppendPre                      *.Z   call s:appre("uncompress")
+    autocmd FileAppendPost             *.gz  call s:write("gzip")
+***************
+*** 69,75 ****
+    let tmpe = tmp . "." . expand("<afile>:e")
+    " write the just read lines to a temp file "'[,']w tmp.gz"
+    execute "silent '[,']w " . tmpe
+!   " uncompress the temp file: call system("gzip -d tmp.gz")
+    call system(a:cmd . " " . tmpe)
+    " delete the compressed lines; remember the line number
+    let l = line("'[") - 1
+--- 69,75 ----
+    let tmpe = tmp . "." . expand("<afile>:e")
+    " write the just read lines to a temp file "'[,']w tmp.gz"
+    execute "silent '[,']w " . tmpe
+!   " uncompress the temp file: call system("gzip -dn tmp.gz")
+    call system(a:cmd . " " . tmpe)
+    " delete the compressed lines; remember the line number
+    let l = line("'[") - 1
+*** ../vim-6.2.165/src/version.c       Mon Dec 29 21:00:25 2003
+--- src/version.c      Mon Dec 29 21:04:18 2003
+***************
+*** 639,640 ****
+--- 639,642 ----
+  {   /* Add new patch number below this line */
++ /**/
++     166,
+  /**/
+
+-- 
+From "know your smileys":
+ C=}>;*{)) Drunk, devilish chef with a toupee in an updraft,
+          a mustache, and a double chin
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///          Creator of Vim - Vi IMproved -- http://www.Vim.org          \\\
+\\\              Project leader for A-A-P -- http://www.A-A-P.org        ///
+ \\\  Help AIDS victims, buy here: http://ICCF-Holland.org/click1.html  ///
diff --git a/6.2.167 b/6.2.167
new file mode 100644 (file)
index 0000000..717700f
--- /dev/null
+++ b/6.2.167
@@ -0,0 +1,106 @@
+To: vim-dev@vim.org
+Subject: Patch 6.2.167
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 6.2.167
+Problem:    The Python interface leaks memory when assigning lines to a
+           buffer. (Sergey Khorev)
+Solution:   Do not copy the line when calling ml_replace().
+Files:     src/if_python.c
+
+
+*** ../vim-6.2.166/src/if_python.c     Wed Nov 12 20:56:23 2003
+--- src/if_python.c    Tue Dec 23 10:26:13 2003
+***************
+*** 2241,2256 ****
+       if (save == NULL)
+           return FAIL;
+  
+!      /* We do not need to free save, as we pass responsibility for
+!       * it to vim, via the final parameter of ml_replace().
+!       */
+       PyErr_Clear();
+       curbuf = buf;
+  
+       if (u_savesub((linenr_T)n) == FAIL)
+           PyErr_SetVim(_("cannot save undo information"));
+!      else if (ml_replace((linenr_T)n, (char_u *)save, TRUE) == FAIL)
+           PyErr_SetVim(_("cannot replace line"));
+       else
+           changed_bytes((linenr_T)n, 0);
+  
+--- 2246,2265 ----
+       if (save == NULL)
+           return FAIL;
+  
+!      /* We do not need to free "save" if ml_replace() consumes it. */
+       PyErr_Clear();
+       curbuf = buf;
+  
+       if (u_savesub((linenr_T)n) == FAIL)
++      {
+           PyErr_SetVim(_("cannot save undo information"));
+!          vim_free(save);
+!      }
+!      else if (ml_replace((linenr_T)n, (char_u *)save, FALSE) == FAIL)
+!      {
+           PyErr_SetVim(_("cannot replace line"));
++          vim_free(save);
++      }
+       else
+           changed_bytes((linenr_T)n, 0);
+  
+***************
+*** 2390,2402 ****
+       if (!PyErr_Occurred())
+       {
+           for (i = 0; i < old_len && i < new_len; ++i)
+!              if (ml_replace((linenr_T)(lo+i), (char_u *)array[i], TRUE)
+                                                                     == FAIL)
+               {
+                   PyErr_SetVim(_("cannot replace line"));
+                   break;
+               }
+       }
+  
+       /* Now we may need to insert the remaining new old_len. If we do, we
+        * must free the strings as we finish with them (we can't pass the
+--- 2399,2413 ----
+       if (!PyErr_Occurred())
+       {
+           for (i = 0; i < old_len && i < new_len; ++i)
+!              if (ml_replace((linenr_T)(lo+i), (char_u *)array[i], FALSE)
+                                                                     == FAIL)
+               {
+                   PyErr_SetVim(_("cannot replace line"));
+                   break;
+               }
+       }
++      else
++          i = 0;
+  
+       /* Now we may need to insert the remaining new old_len. If we do, we
+        * must free the strings as we finish with them (we can't pass the
+*** ../vim-6.2.166/src/version.c       Mon Dec 29 21:04:38 2003
+--- src/version.c      Mon Dec 29 21:06:33 2003
+***************
+*** 639,640 ****
+--- 639,642 ----
+  {   /* Add new patch number below this line */
++ /**/
++     167,
+  /**/
+
+-- 
+From "know your smileys":
+ |-(   Contact lenses, but has lost them
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///          Creator of Vim - Vi IMproved -- http://www.Vim.org          \\\
+\\\              Project leader for A-A-P -- http://www.A-A-P.org        ///
+ \\\  Help AIDS victims, buy here: http://ICCF-Holland.org/click1.html  ///
diff --git a/6.2.168 b/6.2.168
new file mode 100644 (file)
index 0000000..bf9a3d0
--- /dev/null
+++ b/6.2.168
@@ -0,0 +1,104 @@
+To: vim-dev@vim.org
+Subject: Patch 6.2.168
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 6.2.168
+Problem:    Python interface: There is no way to get the indices from a range
+           object.
+Solution:   Add the "start" and "end" attributes. (Maurice S. Barnum)
+Files:     src/if_python.c, runtime/doc/if_pyth.txt
+
+
+*** ../vim-6.2.167/src/if_python.c     Mon Dec 29 21:07:26 2003
+--- src/if_python.c    Tue Dec 23 10:26:13 2003
+***************
+*** 1476,1482 ****
+      static PyObject *
+  RangeGetattr(PyObject *self, char *name)
+  {
+!     return Py_FindMethod(RangeMethods, self, name);
+  }
+  
+      static PyObject *
+--- 1476,1487 ----
+      static PyObject *
+  RangeGetattr(PyObject *self, char *name)
+  {
+!     if (strcmp(name, "start") == 0)
+!      return Py_BuildValue("i",((RangeObject *)(self))->start - 1);
+!     else if (strcmp(name, "end") == 0)
+!      return Py_BuildValue("i",((RangeObject *)(self))->end - 1);
+!     else
+!      return Py_FindMethod(RangeMethods, self, name);
+  }
+  
+      static PyObject *
+*** ../vim-6.2.167/runtime/doc/if_pyth.txt     Sun Jun  1 12:20:33 2003
+--- runtime/doc/if_pyth.txt    Mon Dec 29 10:03:38 2003
+***************
+*** 1,4 ****
+! *if_pyth.txt*   For Vim version 6.2.  Last change: 2002 Mar 11
+  
+  
+                 VIM REFERENCE MANUAL    by Paul Moore
+--- 1,4 ----
+! *if_pyth.txt*   For Vim version 6.2.  Last change: 2003 Dec 29
+  
+  
+                 VIM REFERENCE MANUAL    by Paul Moore
+***************
+*** 242,250 ****
+  can, of course, change as a result of slice assignments, line deletions, or
+  the range.append() method).
+  
+! Unlike buffers, ranges do not have a "name" attribute, nor do they have mark()
+! or range() methods. They do have an append() method, however, which adds
+! line(s) to the end of the range.
+  
+  ==============================================================================
+  5. Window objects                                    *python-window*
+--- 252,271 ----
+  can, of course, change as a result of slice assignments, line deletions, or
+  the range.append() method).
+  
+! The range object attributes are:
+!      r.start         Index of first line into the buffer
+!      r.end           Index of last line into the buffer
+! 
+! The range object methods are:
+!      r.append(str)   Append a line to the range
+!      r.append(list)  Append a list of lines to the range
+!                      Note that the option of supplying a list of strings to
+!                      the append method differs from the equivalent method
+!                      for Python's built-in list objects.
+! 
+! Example (assume r is the current range):
+!      # Send all lines in a range to the default printer
+!      vim.command("%d,%dhardcopy!" % (r.start+1,r.end+1))
+  
+  ==============================================================================
+  5. Window objects                                    *python-window*
+*** ../vim-6.2.167/src/version.c       Mon Dec 29 21:07:26 2003
+--- src/version.c      Mon Dec 29 21:10:20 2003
+***************
+*** 639,640 ****
+--- 639,642 ----
+  {   /* Add new patch number below this line */
++ /**/
++     168,
+  /**/
+
+-- 
+From "know your smileys":
+ <|-) Chinese
+ <|-( Chinese and doesn't like these kind of jokes
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///          Creator of Vim - Vi IMproved -- http://www.Vim.org          \\\
+\\\              Project leader for A-A-P -- http://www.A-A-P.org        ///
+ \\\  Help AIDS victims, buy here: http://ICCF-Holland.org/click1.html  ///
diff --git a/6.2.169 b/6.2.169
new file mode 100644 (file)
index 0000000..3b3b229
--- /dev/null
+++ b/6.2.169
@@ -0,0 +1,60 @@
+To: vim-dev@vim.org
+Subject: Patch 6.2.169
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 6.2.169
+Problem:    The prototype for _Xmblen() appears in a recent XFree86 header
+           file, causing a warning for our prototype. (Hisashi T Fujinaka)
+Solution:   Move the prototype to an osdef file, so that it's filtered out.
+Files:     src/mbyte.c, src/osdef2.h.in
+
+
+*** ../vim-6.2.168/src/mbyte.c Sun Nov  9 20:20:26 2003
+--- src/mbyte.c        Tue Dec 23 16:03:30 2003
+***************
+*** 543,549 ****
+  # else
+           char buf[MB_MAXBYTES];
+  # ifdef X_LOCALE
+-          extern int _Xmblen __ARGS((char *, size_t));
+  #  ifndef mblen
+  #   define mblen _Xmblen
+  #  endif
+--- 547,552 ----
+*** ../vim-6.2.168/src/osdef2.h.in     Sat Dec 15 22:24:12 2001
+--- src/osdef2.h.in    Wed Dec 24 10:26:00 2003
+***************
+*** 79,81 ****
+--- 79,87 ----
+  #else
+  extern char  *mktemp __ARGS((char *));
+  #endif
++ 
++ #ifdef ISC
++ extern int   _Xmblen __ARGS((char const *, size_t));
++ #else
++ extern int   _Xmblen __ARGS((char *, size_t));
++ #endif
+*** ../vim-6.2.168/src/version.c       Mon Dec 29 21:14:00 2003
+--- src/version.c      Mon Dec 29 21:16:30 2003
+***************
+*** 639,640 ****
+--- 639,642 ----
+  {   /* Add new patch number below this line */
++ /**/
++     169,
+  /**/
+
+-- 
+From "know your smileys":
+ :-*   A big kiss!
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///          Creator of Vim - Vi IMproved -- http://www.Vim.org          \\\
+\\\              Project leader for A-A-P -- http://www.A-A-P.org        ///
+ \\\  Help AIDS victims, buy here: http://ICCF-Holland.org/click1.html  ///
diff --git a/6.2.170 b/6.2.170
new file mode 100644 (file)
index 0000000..714d7dc
--- /dev/null
+++ b/6.2.170
@@ -0,0 +1,84 @@
+To: vim-dev@vim.org
+Subject: Patch 6.2.170
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 6.2.170
+Problem:    When using Sun WorkShop the current directory isn't changed to
+           where the file is.
+Solution:   Set the 'autochdir' option when using WorkShop.  And avoid using
+           the basename when 'autochdir' is not set.
+Files:     src/gui_x11.c, src/ex_cmds.c
+
+
+*** ../vim-6.2.169/src/gui_x11.c       Sun Jul 27 14:16:53 2003
+--- src/gui_x11.c      Wed Dec 24 14:25:10 2003
+***************
+*** 1223,1228 ****
+--- 1223,1229 ----
+           if (strcmp("-ws", argv[arg]) == 0)
+       {
+           usingSunWorkShop++;
++          p_acd = TRUE;
+           gui.dofork = FALSE; /* don't fork() when starting GUI */
+           mch_memmove(&argv[arg], &argv[arg + 1],
+                                           (--*argc - arg) * sizeof(char *));
+*** ../vim-6.2.169/src/ex_cmds.c       Sun Nov  9 20:23:26 2003
+--- src/ex_cmds.c      Wed Dec 24 14:31:16 2003
+***************
+*** 2615,2621 ****
+               ffname = free_fname;
+           other_file = otherfile(ffname);
+  #ifdef FEAT_SUN_WORKSHOP
+!          if (usingSunWorkShop && (cp = vim_strrchr(sfname, '/')) != NULL)
+               sfname = ++cp;
+  #endif
+       }
+--- 2615,2622 ----
+               ffname = free_fname;
+           other_file = otherfile(ffname);
+  #ifdef FEAT_SUN_WORKSHOP
+!          if (usingSunWorkShop && p_acd
+!                                 && (cp = vim_strrchr(sfname, '/')) != NULL)
+               sfname = ++cp;
+  #endif
+       }
+***************
+*** 3122,3128 ****
+                                    && vim_chdirfile(curbuf->b_ffname) == OK)
+       shorten_fnames(TRUE);
+  
+!     if (gui.in_use && curbuf->b_fname != NULL)
+      {
+  # ifdef FEAT_SUN_WORKSHOP
+       if (usingSunWorkShop)
+--- 3123,3129 ----
+                                    && vim_chdirfile(curbuf->b_ffname) == OK)
+       shorten_fnames(TRUE);
+  
+!     if (gui.in_use && curbuf->b_ffname != NULL)
+      {
+  # ifdef FEAT_SUN_WORKSHOP
+       if (usingSunWorkShop)
+*** ../vim-6.2.169/src/version.c       Mon Dec 29 21:17:44 2003
+--- src/version.c      Mon Dec 29 21:20:47 2003
+***************
+*** 639,640 ****
+--- 639,642 ----
+  {   /* Add new patch number below this line */
++ /**/
++     170,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+92. It takes you two hours to check all 14 of your mailboxes.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///          Creator of Vim - Vi IMproved -- http://www.Vim.org          \\\
+\\\              Project leader for A-A-P -- http://www.A-A-P.org        ///
+ \\\  Help AIDS victims, buy here: http://ICCF-Holland.org/click1.html  ///
diff --git a/6.2.171 b/6.2.171
new file mode 100644 (file)
index 0000000..c7ad1ff
--- /dev/null
+++ b/6.2.171
@@ -0,0 +1,69 @@
+To: vim-dev@vim.org
+Subject: Patch 6.2.171
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 6.2.171 (after 6.2.163)
+Problem:    The "-or" argument of "find" doesn't work for SysV systems.
+Solution:   Use "-o" instead. (Gordon Prieur)
+Files:     src/Makefile
+
+
+*** ../vim-6.2.170/src/Makefile        Mon Dec 29 20:42:51 2003
+--- src/Makefile       Tue Jan  6 16:18:26 2004
+***************
+*** 1724,1730 ****
+       chmod $(FILEMOD) `find $(DEST_MACRO) -type f -print`
+       chmod $(SCRIPTMOD) $(DEST_MACRO)/less.sh
+  # When using CVS some CVS directories might have been copied.
+!      cvs=`find $(DEST_MACRO) -name CVS -or -name AAPDIR -print`; \
+             if test -n "$$cvs"; then \
+                rm -rf $$cvs; \
+             fi
+--- 1727,1733 ----
+       chmod $(FILEMOD) `find $(DEST_MACRO) -type f -print`
+       chmod $(SCRIPTMOD) $(DEST_MACRO)/less.sh
+  # When using CVS some CVS directories might have been copied.
+!      cvs=`find $(DEST_MACRO) -name CVS -o -name AAPDIR -print`; \
+             if test -n "$$cvs"; then \
+                rm -rf $$cvs; \
+             fi
+***************
+*** 1751,1757 ****
+  # install the runtime tools
+       $(INSTALL_DATA_R) $(TOOLSSOURCE)/* $(DEST_TOOLS)
+  # When using CVS some CVS directories might have been copied.
+!      cvs=`find $(DEST_TOOLS) -name CVS -or -name AAPDIR -print`; \
+             if test -n "$$cvs"; then \
+                rm -rf $$cvs; \
+             fi
+--- 1754,1760 ----
+  # install the runtime tools
+       $(INSTALL_DATA_R) $(TOOLSSOURCE)/* $(DEST_TOOLS)
+  # When using CVS some CVS directories might have been copied.
+!      cvs=`find $(DEST_TOOLS) -name CVS -o -name AAPDIR -print`; \
+             if test -n "$$cvs"; then \
+                rm -rf $$cvs; \
+             fi
+*** ../vim-6.2.170/src/version.c       Mon Dec 29 21:21:52 2003
+--- src/version.c      Tue Jan  6 16:19:37 2004
+***************
+*** 639,640 ****
+--- 639,642 ----
+  {   /* Add new patch number below this line */
++ /**/
++     171,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+1 49. You find your computer sexier than your girlfriend
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        Sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\              Project leader for A-A-P -- http://www.A-A-P.org        ///
+ \\\  Help AIDS victims, buy here: http://ICCF-Holland.org/click1.html  ///
diff --git a/6.2.172 b/6.2.172
new file mode 100644 (file)
index 0000000..26b96e2
--- /dev/null
+++ b/6.2.172
@@ -0,0 +1,59 @@
+To: vim-dev@vim.org
+Subject: Patch 6.2.172
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 6.2.172 (after 6.2.169)
+Problem:    The prototype for _Xmblen() still causes trouble.
+Solution:   Include the X11 header file that defines the prototype.
+Files:     src/osdef2.h.in, src/osdef.sh
+
+
+*** ../vim-6.2.171/src/osdef2.h.in     Mon Dec 29 21:17:44 2003
+--- src/osdef2.h.in    Mon Jan  5 10:03:41 2004
+***************
+*** 83,87 ****
+--- 83,88 ----
+  #ifdef ISC
+  extern int   _Xmblen __ARGS((char const *, size_t));
+  #else
++              /* This is different from the header but matches mblen() */
+  extern int   _Xmblen __ARGS((char *, size_t));
+  #endif
+*** ../vim-6.2.171/src/osdef.sh        Thu Jul 24 22:09:03 2003
+--- src/osdef.sh       Mon Jan  5 10:05:41 2004
+***************
+*** 41,46 ****
+--- 41,50 ----
+  # include <sys/types.h>
+  # include <sys/statfs.h>     /* only for memfile.c */
+  #endif
++ 
++ #ifdef HAVE_X11
++ # include <X11/Intrinsic.h>
++ #endif
+  EOF
+  
+  # Mac uses precompiled headers, but we need real headers here.
+*** ../vim-6.2.171/src/version.c       Tue Jan  6 16:20:37 2004
+--- src/version.c      Tue Jan  6 16:24:51 2004
+***************
+*** 639,640 ****
+--- 639,642 ----
+  {   /* Add new patch number below this line */
++ /**/
++     172,
+  /**/
+
+-- 
+You are not really successful until someone claims he sat
+beside you in school.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        Sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\              Project leader for A-A-P -- http://www.A-A-P.org        ///
+ \\\  Help AIDS victims, buy here: http://ICCF-Holland.org/click1.html  ///
diff --git a/6.2.173 b/6.2.173
new file mode 100644 (file)
index 0000000..732d0aa
--- /dev/null
+++ b/6.2.173
@@ -0,0 +1,253 @@
+To: vim-dev@vim.org
+Subject: Patch 6.2.173 (extra)
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 6.2.173 (extra)
+Problem:    Win32: Ruby interface doesn't work with Ruby 1.8.0 for other
+           compilers than MSVC.
+Solution:   Fix the BC5, Cygwin and Mingw makefiles. (Dan Sharp)
+Files:     src/Make_bc5.mak, src/Make_cyg.mak, src/Make_ming.mak
+
+
+*** ../vim-6.2.172/src/Make_bc5.mak    Sun Oct 12 16:42:14 2003
+--- src/Make_bc5.mak   Sun Jan  4 12:41:29 2004
+***************
+*** 45,50 ****
+--- 45,52 ----
+  #   TCL_VER  define to version of TCL being used (83)
+  #   DYNAMIC_TCL no or yes: use yes to load the TCL DLL dynamically (no)
+  # RUBY               define to path to Ruby dir to get Ruby support (not defined)
++ #            NOTE: You may have to remove the defines for uid_t and gid_t
++ #            from the Ruby config.h header file.
+  #   RUBY_VER define to version of Ruby being used (16)
+  #            NOTE: compilation on WinNT/2K/XP requires
+  #            at least version 1.6.5 of Ruby.  Earlier versions
+***************
+*** 320,334 ****
+  !ifndef RUBY_VER_LONG
+  RUBY_VER_LONG = 1.6
+  !endif
+  !ifndef RUBY_PLATFORM
+  RUBY_PLATFORM = i586-mswin32
+  !endif
+  INTERP_DEFINES = $(INTERP_DEFINES) -DFEAT_RUBY
+  INCLUDE = $(RUBY)\lib\ruby\$(RUBY_VER_LONG)\$(RUBY_PLATFORM);$(INCLUDE)
+- RUBY_INSTALL_NAME = mswin32-ruby$(RUBY_VER)
+  
+  !if "$(DYNAMIC_RUBY)" == "yes"
+  INTERP_DEFINES = $(INTERP_DEFINES) -DDYNAMIC_RUBY -DDYNAMIC_RUBY_DLL=\"$(RUBY_INSTALL_NAME).dll\"
+  RUBY_LIB_FLAG = /nodefaultlib:
+  !endif
+  !endif
+--- 322,350 ----
+  !ifndef RUBY_VER_LONG
+  RUBY_VER_LONG = 1.6
+  !endif
++ 
++ !if "$(RUBY_VER)" == "16"
+  !ifndef RUBY_PLATFORM
+  RUBY_PLATFORM = i586-mswin32
+  !endif
++ !ifndef RUBY_INSTALL_NAME
++ RUBY_INSTALL_NAME = mswin32-ruby$(RUBY_VER)
++ !endif
++ !else
++ !ifndef RUBY_PLATFORM
++ RUBY_PLATFORM = i386-mswin32
++ !endif
++ !ifndef RUBY_INSTALL_NAME
++ RUBY_INSTALL_NAME = msvcrt-ruby$(RUBY_VER)
++ !endif
++ !endif
++ 
+  INTERP_DEFINES = $(INTERP_DEFINES) -DFEAT_RUBY
+  INCLUDE = $(RUBY)\lib\ruby\$(RUBY_VER_LONG)\$(RUBY_PLATFORM);$(INCLUDE)
+  
+  !if "$(DYNAMIC_RUBY)" == "yes"
+  INTERP_DEFINES = $(INTERP_DEFINES) -DDYNAMIC_RUBY -DDYNAMIC_RUBY_DLL=\"$(RUBY_INSTALL_NAME).dll\"
++ INTERP_DEFINES = $(INTERP_DEFINES) -DDYNAMIC_RUBY_VER=$(RUBY_VER)
+  RUBY_LIB_FLAG = /nodefaultlib:
+  !endif
+  !endif
+*** ../vim-6.2.172/src/Make_cyg.mak    Sun Oct 12 16:42:14 2003
+--- src/Make_cyg.mak   Sun Jan  4 12:37:06 2004
+***************
+*** 1,11 ****
+  #
+  # Makefile for VIM on Win32, using Cygnus gcc
+  #
+  # This compiles Vim as a Windows application.  If you want Vim to run as a
+  # Cygwin application use the Makefile (just like on Unix).
+  #
+- # Last updated by Dan Sharp.  Last Change: 2003 Sep 12
+- #
+  # GUI                no or yes: set to yes if you want the GUI version (yes)
+  # PERL               define to path to Perl dir to get Perl support (not defined)
+  #   PERL_VER   define to version of Perl being used (56)
+--- 1,10 ----
+  #
+  # Makefile for VIM on Win32, using Cygnus gcc
++ # Last updated by Dan Sharp.  Last Change: 2004 Jan 03
+  #
+  # This compiles Vim as a Windows application.  If you want Vim to run as a
+  # Cygwin application use the Makefile (just like on Unix).
+  #
+  # GUI                no or yes: set to yes if you want the GUI version (yes)
+  # PERL               define to path to Perl dir to get Perl support (not defined)
+  #   PERL_VER   define to version of Perl being used (56)
+***************
+*** 152,176 ****
+  # DYNAMIC_RUBY=no does not (process exits).
+  ##############################
+  ifdef RUBY
+  ifndef RUBY_VER_LONG
+  RUBY_VER_LONG=1.6
+  endif
+- DEFINES += -DFEAT_RUBY
+- INCLUDES += -I$(RUBY)/lib/ruby/$(RUBY_VER_LONG)/i586-mswin32
+- EXTRA_OBJS += $(OUTDIR)/if_ruby.o
+  
+  ifndef DYNAMIC_RUBY
+  DYNAMIC_RUBY = yes
+  endif
+  
+! ifndef RUBY_VER
+! RUBY_VER=16
+  endif
+  
+  ifeq (yes, $(DYNAMIC_RUBY))
+! DEFINES += -DDYNAMIC_RUBY -DDYNAMIC_RUBY_DLL=\"mswin32-ruby$(RUBY_VER).dll\"
+  else
+! EXTRA_LIBS += $(RUBY)/lib/mswin32-ruby$(RUBY_VER).lib
+  endif
+  endif
+  
+--- 151,194 ----
+  # DYNAMIC_RUBY=no does not (process exits).
+  ##############################
+  ifdef RUBY
++ 
++ ifndef RUBY_VER
++ RUBY_VER=16
++ endif
++ 
+  ifndef RUBY_VER_LONG
+  RUBY_VER_LONG=1.6
+  endif
+  
+  ifndef DYNAMIC_RUBY
+  DYNAMIC_RUBY = yes
+  endif
+  
+! ifeq ($(RUBY_VER), 16)
+! ifndef RUBY_PLATFORM
+! RUBY_PLATFORM = i586-mswin32
+! endif
+! ifndef RUBY_INSTALL_NAME
+! RUBY_INSTALL_NAME = mswin32-ruby$(RUBY_VER)
+! endif
+! else
+! ifndef RUBY_PLATFORM
+! RUBY_PLATFORM = i386-mswin32
+! endif
+! ifndef RUBY_INSTALL_NAME
+! RUBY_INSTALL_NAME = msvcrt-ruby$(RUBY_VER)
+! endif
+  endif
+  
++ DEFINES += -DFEAT_RUBY
++ INCLUDES += -I$(RUBY)/lib/ruby/$(RUBY_VER_LONG)/$(RUBY_PLATFORM)
++ EXTRA_OBJS += $(OUTDIR)/if_ruby.o
++ 
+  ifeq (yes, $(DYNAMIC_RUBY))
+! DEFINES += -DDYNAMIC_RUBY -DDYNAMIC_RUBY_DLL=\"$(RUBY_INSTALL_NAME).dll\"
+! DEFINES += -DDYNAMIC_RUBY_VER=$(RUBY_VER)
+  else
+! EXTRA_LIBS += $(RUBY)/lib/$(RUBY_INSTALL_NAME).lib
+  endif
+  endif
+  
+***************
+*** 446,452 ****
+--- 464,472 ----
+  endif
+  
+  $(OUTDIR)/if_ruby.o: if_ruby.c $(INCL)
++ ifeq (16, $(RUBY_VER))
+       $(CC) -c $(CFLAGS) -U_WIN32 if_ruby.c -o $(OUTDIR)/if_ruby.o
++ endif
+  
+  $(OUTDIR)/netbeans.o:        netbeans.c $(INCL) $(NBDEBUG_DEP)
+       $(CC) -c $(CFLAGS) netbeans.c -o $(OUTDIR)/netbeans.o
+*** ../vim-6.2.172/src/Make_ming.mak   Sun Oct 12 16:42:14 2003
+--- src/Make_ming.mak  Sun Jan  4 12:37:06 2004
+***************
+*** 177,186 ****
+--- 177,198 ----
+  ifndef RUBY_VER_LONG
+  RUBY_VER_LONG = 1.6
+  endif
++ 
++ ifeq ($(RUBY_VER), 16)
+  ifndef RUBY_PLATFORM
+  RUBY_PLATFORM = i586-mswin32
+  endif
++ ifndef RUBY_INSTALL_NAME
+  RUBY_INSTALL_NAME = mswin32-ruby$(RUBY_VER)
++ endif
++ else
++ ifndef RUBY_PLATFORM
++ RUBY_PLATFORM = i386-mswin32
++ endif
++ ifndef RUBY_INSTALL_NAME
++ RUBY_INSTALL_NAME = msvcrt-ruby$(RUBY_VER)
++ endif
++ endif
+  
+  RUBYINC =-I $(RUBY)/lib/ruby/$(RUBY_VER_LONG)/$(RUBY_PLATFORM)
+  ifeq (no, $(DYNAMIC_RUBY))
+***************
+*** 244,249 ****
+--- 256,262 ----
+  CFLAGS += -DFEAT_RUBY $(RUBYINC)
+  ifeq (yes, $(DYNAMIC_RUBY))
+  CFLAGS += -DDYNAMIC_RUBY -DDYNAMIC_RUBY_DLL=\"$(RUBY_INSTALL_NAME).dll\"
++ CFLAGS += -DDYNAMIC_RUBY_VER=$(RUBY_VER)
+  endif
+  endif
+  
+***************
+*** 507,513 ****
+--- 520,528 ----
+       $(CC) $(CFLAGS) -D__IID_DEFINED__ -c -o $(OUTDIR)/if_ole.o if_ole.cpp
+  
+  $(OUTDIR)/if_ruby.o: if_ruby.c $(INCL)
++ ifeq (16, $(RUBY))
+       $(CC) $(CFLAGS) -U_WIN32 -c -o $(OUTDIR)/if_ruby.o if_ruby.c
++ endif
+  
+  if_perl.c: if_perl.xs typemap
+       perl $(PERLLIB)/ExtUtils/xsubpp -prototypes -typemap \
+*** ../vim-6.2.172/src/version.c       Tue Jan  6 16:27:05 2004
+--- src/version.c      Tue Jan  6 16:32:04 2004
+***************
+*** 639,640 ****
+--- 639,642 ----
+  {   /* Add new patch number below this line */
++ /**/
++     173,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+150. You find yourself counting emoticons to get to sleep.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        Sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\              Project leader for A-A-P -- http://www.A-A-P.org        ///
+ \\\  Help AIDS victims, buy here: http://ICCF-Holland.org/click1.html  ///
diff --git a/6.2.174 b/6.2.174
new file mode 100644 (file)
index 0000000..b39ddc2
--- /dev/null
+++ b/6.2.174
@@ -0,0 +1,92 @@
+To: vim-dev@vim.org
+Subject: Patch 6.2.174
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 6.2.174
+Problem:    After the ":intro" message only a mouse click in the last line
+           gets past the hit-return prompt.
+Solution:   Accept a click at or below the hit-return prompt.
+Files:     src/gui.c, src/message.c
+
+
+*** ../vim-6.2.173/src/gui.c   Sun Oct 26 20:19:23 2003
+--- src/gui.c  Tue Jan  6 18:00:47 2004
+***************
+*** 2751,2758 ****
+       case INSERT+LANGMAP:    checkfor = MOUSE_INSERT;        break;
+       case ASKMORE:
+       case HITRETURN:         /* At the more- and hit-enter prompt pass the
+!                                 mouse event for a click on the last line. */
+!                              if (Y_2_ROW(y) == Rows - 1)
+                                   checkfor = MOUSE_NORMAL;
+                               else
+                                   checkfor = MOUSE_RETURN;
+--- 2751,2759 ----
+       case INSERT+LANGMAP:    checkfor = MOUSE_INSERT;        break;
+       case ASKMORE:
+       case HITRETURN:         /* At the more- and hit-enter prompt pass the
+!                                 mouse event for a click on or below the
+!                                 message line. */
+!                              if (Y_2_ROW(y) >= msg_row)
+                                   checkfor = MOUSE_NORMAL;
+                               else
+                                   checkfor = MOUSE_RETURN;
+***************
+*** 4117,4123 ****
+  # ifdef FEAT_MOUSESHAPE
+      if (State == HITRETURN || State == ASKMORE)
+      {
+!      if (Y_2_ROW(y) == Rows - 1)
+           update_mouseshape(SHAPE_IDX_MOREL);
+       else
+           update_mouseshape(SHAPE_IDX_MORE);
+--- 4118,4124 ----
+  # ifdef FEAT_MOUSESHAPE
+      if (State == HITRETURN || State == ASKMORE)
+      {
+!      if (Y_2_ROW(y) >= msg_row)
+           update_mouseshape(SHAPE_IDX_MOREL);
+       else
+           update_mouseshape(SHAPE_IDX_MORE);
+*** ../vim-6.2.173/src/message.c       Sat Sep 27 19:36:47 2003
+--- src/message.c      Tue Jan  6 18:02:31 2004
+***************
+*** 848,854 ****
+                               || c == K_RIGHTDRAG  || c == K_RIGHTRELEASE
+                               || c == K_MOUSEDOWN  || c == K_MOUSEUP
+                               || (!mouse_has(MOUSE_RETURN)
+!                                  && mouse_row != Rows - 1
+                                   && (c == K_LEFTMOUSE
+                                       || c == K_MIDDLEMOUSE
+                                       || c == K_RIGHTMOUSE
+--- 848,854 ----
+                               || c == K_RIGHTDRAG  || c == K_RIGHTRELEASE
+                               || c == K_MOUSEDOWN  || c == K_MOUSEUP
+                               || (!mouse_has(MOUSE_RETURN)
+!                                  && mouse_row < msg_row
+                                   && (c == K_LEFTMOUSE
+                                       || c == K_MIDDLEMOUSE
+                                       || c == K_RIGHTMOUSE
+*** ../vim-6.2.173/src/version.c       Tue Jan  6 16:33:35 2004
+--- src/version.c      Thu Jan  8 20:51:27 2004
+***************
+*** 639,640 ****
+--- 639,642 ----
+  {   /* Add new patch number below this line */
++ /**/
++     174,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+197. Your desk collapses under the weight of your computer peripherals.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        Sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\              Project leader for A-A-P -- http://www.A-A-P.org        ///
+ \\\  Help AIDS victims, buy here: http://ICCF-Holland.org/click1.html  ///
diff --git a/6.2.175 b/6.2.175
new file mode 100644 (file)
index 0000000..3fd9164
--- /dev/null
+++ b/6.2.175
@@ -0,0 +1,77 @@
+To: vim-dev@vim.org
+Subject: Patch 6.2.175
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 6.2.175
+Problem:    Changing 'backupext' in a *WritePre autocommand doesn't work.
+           (William Natter)
+Solution:   Move the use of p_bex to after executing the *WritePre
+           autocommands.  Also avoids reading allocated memory after freeing.
+Files:     src/fileio.c
+
+
+*** ../vim-6.2.174/src/fileio.c        Wed Nov 12 20:41:45 2003
+--- src/fileio.c       Thu Jan  8 20:22:41 2004
+***************
+*** 2502,2517 ****
+      fname = sfname;
+  #endif
+  
+-     /* make sure we have a valid backup extension to use */
+-     if (*p_bex == NUL)
+- #ifdef RISCOS
+-      backup_ext = (char_u *)"/bak";
+- #else
+-      backup_ext = (char_u *)".bak";
+- #endif
+-     else
+-      backup_ext = p_bex;
+- 
+      if (buf->b_ffname != NULL && fnamecmp(ffname, buf->b_ffname) == 0)
+       overwriting = TRUE;
+      else
+--- 2502,2507 ----
+***************
+*** 2896,2901 ****
+--- 2886,2903 ----
+       }
+  #endif
+  
++      /* make sure we have a valid backup extension to use */
++      if (*p_bex == NUL)
++      {
++ #ifdef RISCOS
++          backup_ext = (char_u *)"/bak";
++ #else
++          backup_ext = (char_u *)".bak";
++ #endif
++      }
++      else
++          backup_ext = p_bex;
++ 
+       if (backup_copy
+               && (fd = mch_open((char *)fname, O_RDONLY | O_EXTRA, 0)) >= 0)
+       {
+*** ../vim-6.2.174/src/version.c       Thu Jan  8 20:54:45 2004
+--- src/version.c      Fri Jan  9 14:32:03 2004
+***************
+*** 639,640 ****
+--- 639,642 ----
+  {   /* Add new patch number below this line */
++ /**/
++     175,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+203. You're an active member of more than 20 newsgroups.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        Sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\              Project leader for A-A-P -- http://www.A-A-P.org        ///
+ \\\  Help AIDS victims, buy here: http://ICCF-Holland.org/click1.html  ///
diff --git a/6.2.176 b/6.2.176
new file mode 100644 (file)
index 0000000..07b258a
--- /dev/null
+++ b/6.2.176
@@ -0,0 +1,68 @@
+To: vim-dev@vim.org
+Subject: Patch 6.2.176
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 6.2.176
+Problem:    Accented characters in translated help files are not handled
+           correctly. (Fabien Vayssiere)
+Solution:   Include "192-255" in 'iskeyword' for the help window.
+Files:     src/ex_cmds.c
+
+
+*** ../vim-6.2.175/src/ex_cmds.c       Mon Dec 29 21:21:52 2003
+--- src/ex_cmds.c      Fri Jan  9 14:30:45 2004
+***************
+*** 4634,4647 ****
+      /*
+       * Always set these options after jumping to a help tag, because the user
+       * may have an autocommand that gets in the way.
+!      * accept all chars for keywords, except ' ', '*', '"', '|'.
+       * Only set it when needed, buf_init_chartab() is some work.
+       */
+      p =
+  #ifdef EBCDIC
+           (char_u *)"65-255,^*,^|,^\"";
+  #else
+!          (char_u *)"!-~,^*,^|,^\"";
+  #endif
+      if (STRCMP(curbuf->b_p_isk, p) != 0)
+      {
+--- 4634,4648 ----
+      /*
+       * Always set these options after jumping to a help tag, because the user
+       * may have an autocommand that gets in the way.
+!      * Accept all ASCII chars for keywords, except ' ', '*', '"', '|', and
+!      * latin1 word characters (for translated help files).
+       * Only set it when needed, buf_init_chartab() is some work.
+       */
+      p =
+  #ifdef EBCDIC
+           (char_u *)"65-255,^*,^|,^\"";
+  #else
+!          (char_u *)"!-~,^*,^|,^\",192-255";
+  #endif
+      if (STRCMP(curbuf->b_p_isk, p) != 0)
+      {
+*** ../vim-6.2.175/src/version.c       Fri Jan  9 14:33:14 2004
+--- src/version.c      Fri Jan  9 15:00:11 2004
+***************
+*** 639,640 ****
+--- 639,642 ----
+  {   /* Add new patch number below this line */
++ /**/
++     176,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+207. You're given one phone call in prison and you ask them for a laptop.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        Sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\              Project leader for A-A-P -- http://www.A-A-P.org        ///
+ \\\  Help AIDS victims, buy here: http://ICCF-Holland.org/click1.html  ///
diff --git a/6.2.177 b/6.2.177
new file mode 100644 (file)
index 0000000..b521a0e
--- /dev/null
+++ b/6.2.177
@@ -0,0 +1,190 @@
+To: vim-dev@vim.org
+Subject: Patch 6.2.177 (extra)
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 6.2.177 (extra)
+Problem:    VisVim: Opening a file with a space in the name doesn't work. (Rob
+            Retter)  Arbitrary commands are being executed. (Neil Bird)
+Solution:   Put a backslash in front of every space in the file name.
+            (Gerard Blais)  Terminate the CTRL-\ CTRL-N command with a NUL.
+Files:      src/VisVim/Commands.cpp, src/VisVim/VisVim.rc
+
+
+*** ../vim-6.2.176/src/VisVim/Commands.cpp     Sat Sep  7 17:03:06 2002
+--- src/VisVim/Commands.cpp    Fri Jan  9 11:04:58 2004
+***************
+*** 512,529 ****
+               goto OleError;
+  
+       OLECHAR Buf[MAX_OLE_STR];
+       char VimCmd[MAX_OLE_STR];
+!      char* VimCmdStart;
+!      char* s;
+  
+       // Prepend CTRL-\ CTRL-N to exit insert mode
+       VimCmd[0] = 0x1c;
+       VimCmd[1] = 0x0e;
+!      VimCmdStart = VimCmd + 2;
+  
+  #ifdef SINGLE_WINDOW
+!      // Update the current file in Vim if it has been modified
+!      sprintf (VimCmdStart, ":up\n");
+  #endif
+       if (! VimOle.Method (DispatchId, "s", TO_OLE_STR_BUF (VimCmd, Buf)))
+               goto OleError;
+--- 512,530 ----
+               goto OleError;
+  
+       OLECHAR Buf[MAX_OLE_STR];
++      char FileNameTmp[MAX_OLE_STR];
+       char VimCmd[MAX_OLE_STR];
+!      char *s, *p;
+  
+       // Prepend CTRL-\ CTRL-N to exit insert mode
+       VimCmd[0] = 0x1c;
+       VimCmd[1] = 0x0e;
+!      VimCmd[2] = 0;
+  
+  #ifdef SINGLE_WINDOW
+!      // Update the current file in Vim if it has been modified.
+!      // Disabled, because it could write the file when you don't want to.
+!      sprintf (VimCmd + 2, ":up\n");
+  #endif
+       if (! VimOle.Method (DispatchId, "s", TO_OLE_STR_BUF (VimCmd, Buf)))
+               goto OleError;
+***************
+*** 532,543 ****
+       if (g_ChangeDir != CD_NONE)
+               VimChangeDir (VimOle, DispatchId, FileName);
+  
+!      // Make Vim open the file
+!      sprintf (VimCmd, ":drop %S\n", (char*) FileName);
+!      // Convert all \ to /
+!      for (s = VimCmd; *s; ++s)
+!              if (*s == '\\')
+!                      *s = '/';
+       if (! VimOle.Method (DispatchId, "s", TO_OLE_STR_BUF (VimCmd, Buf)))
+               goto OleError;
+  
+--- 533,556 ----
+       if (g_ChangeDir != CD_NONE)
+               VimChangeDir (VimOle, DispatchId, FileName);
+  
+!      // Make Vim open the file.
+!      // In the filename convert all \ to /, put a \ before a space.
+!      sprintf(VimCmd, ":drop ");
+!      sprintf(FileNameTmp, "%S", (char *)FileName);
+!      s = VimCmd + 6;
+!      for (p = FileNameTmp; *p != '\0' && s < FileNameTmp + MAX_OLE_STR - 4;
+!                                                                        ++p)
+!              if (*p == '\\')
+!                      *s++ = '/';
+!              else
+!              {
+!                      if (*p == ' ')
+!                              *s++ = '\\';
+!                      *s++ = *p;
+!              }
+!      *s++ = '\n';
+!      *s = '\0';
+! 
+       if (! VimOle.Method (DispatchId, "s", TO_OLE_STR_BUF (VimCmd, Buf)))
+               goto OleError;
+  
+***************
+*** 638,656 ****
+       CString StrFileName = FileName;
+       char Drive[_MAX_DRIVE];
+       char Dir[_MAX_DIR];
+       _splitpath (StrFileName, Drive, Dir, NULL, NULL);
+!      // Convert to unix path name format
+!      for (char* s = Dir; *s; ++s)
+               if (*s == '\\')
+!                      *s = '/';
+  
+       // Construct the cd command; append /.. if cd to parent
+       // directory and not in root directory
+       OLECHAR Buf[MAX_OLE_STR];
+       char VimCmd[MAX_OLE_STR];
+  
+!      sprintf (VimCmd, ":cd %s%s%s\n", Drive, Dir,
+!               g_ChangeDir == CD_SOURCE_PARENT && Dir[1] ? ".." : "");
+       VimOle.Method (DispatchId, "s", TO_OLE_STR_BUF (VimCmd, Buf));
+  }
+  
+--- 651,682 ----
+       CString StrFileName = FileName;
+       char Drive[_MAX_DRIVE];
+       char Dir[_MAX_DIR];
++      char DirUnix[_MAX_DIR * 2];
++      char *s, *t;
++ 
+       _splitpath (StrFileName, Drive, Dir, NULL, NULL);
+! 
+!      // Convert to Unix path name format, escape spaces.
+!      t = DirUnix;
+!      for (s = Dir; *s; ++s)
+               if (*s == '\\')
+!                      *t++ = '/';
+!              else
+!              {
+!                      if (*s == ' ')
+!                              *t++ = '\\';
+!                      *t++ = *s;
+!              }
+!      *t = '\0';
+! 
+  
+       // Construct the cd command; append /.. if cd to parent
+       // directory and not in root directory
+       OLECHAR Buf[MAX_OLE_STR];
+       char VimCmd[MAX_OLE_STR];
+  
+!      sprintf (VimCmd, ":cd %s%s%s\n", Drive, DirUnix,
+!               g_ChangeDir == CD_SOURCE_PARENT && DirUnix[1] ? ".." : "");
+       VimOle.Method (DispatchId, "s", TO_OLE_STR_BUF (VimCmd, Buf));
+  }
+  
+*** ../vim-6.2.176/src/VisVim/VisVim.rc        Sat Mar  9 19:45:58 2002
+--- src/VisVim/VisVim.rc       Thu Jan  8 21:40:29 2004
+***************
+*** 116,122 ****
+  
+  IDD_ADDINMAIN DIALOG DISCARDABLE  0, 0, 178, 124
+  STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+! CAPTION "Vim Add-In 1.3a"
+  FONT 8, "MS Sans Serif"
+  BEGIN
+      CONTROL         "&Open file in DevStudio editor simultaneously",
+--- 116,122 ----
+  
+  IDD_ADDINMAIN DIALOG DISCARDABLE  0, 0, 178, 124
+  STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+! CAPTION "Vim Add-In 1.4"
+  FONT 8, "MS Sans Serif"
+  BEGIN
+      CONTROL         "&Open file in DevStudio editor simultaneously",
+*** ../vim-6.2.176/src/version.c       Fri Jan  9 15:02:40 2004
+--- src/version.c      Fri Jan  9 15:06:32 2004
+***************
+*** 639,640 ****
+--- 639,642 ----
+  {   /* Add new patch number below this line */
++ /**/
++     177,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+208. Your goals for the future are obtaining an T1 connection and
+     a 130 gig hard drive.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        Sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\              Project leader for A-A-P -- http://www.A-A-P.org        ///
+ \\\  Help AIDS victims, buy here: http://ICCF-Holland.org/click1.html  ///
diff --git a/6.2.178 b/6.2.178
new file mode 100644 (file)
index 0000000..9071670
--- /dev/null
+++ b/6.2.178
@@ -0,0 +1,88 @@
+To: vim-dev@vim.org
+Subject: Patch 6.2.178
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 6.2.178
+Problem:    People who don't know how to exit Vim try pressing CTRL-C.
+Solution:   Give a message how to exit Vim when CTRL-C is pressed and it
+           doesn't cancel anything.
+Files:     src/normal.c
+
+
+*** ../vim-6.2.177/src/normal.c        Mon Dec 29 20:32:43 2003
+--- src/normal.c       Thu Jan  8 21:19:53 2004
+***************
+*** 7760,7767 ****
+--- 7760,7785 ----
+  nv_esc(cap)
+      cmdarg_T *cap;
+  {
++     int              no_reason;
++ 
++     no_reason = (cap->oap->op_type == OP_NOP
++              && cap->opcount == 0
++              && cap->count0 == 0
++              && cap->oap->regname == 0
++              && !p_im);
++ 
+      if (cap->arg)            /* TRUE for CTRL-C */
+      {
++      if (restart_edit == 0
++ #ifdef FEAT_CMDWIN
++              && cmdwin_type == 0
++ #endif
++ #ifdef FEAT_VISUAL
++              && !VIsual_active
++ #endif
++              && no_reason)
++          msg(_("Type  :quit<Enter>  to exit Vim"));
++ 
+       restart_edit = 0;
+  #ifdef FEAT_CMDWIN
+       if (cmdwin_type != 0)
+***************
+*** 7783,7794 ****
+      }
+      else
+  #endif
+!      if (cap->oap->op_type == OP_NOP
+!          && cap->opcount == 0
+!          && cap->count0 == 0
+!          && cap->oap->regname == 0
+!          && !p_im)
+!      vim_beep();
+      clearop(cap->oap);
+  
+      /* A CTRL-C is often used at the start of a menu.  When 'insertmode' is
+--- 7801,7808 ----
+      }
+      else
+  #endif
+!      if (no_reason)
+!          vim_beep();
+      clearop(cap->oap);
+  
+      /* A CTRL-C is often used at the start of a menu.  When 'insertmode' is
+*** ../vim-6.2.177/src/version.c       Fri Jan  9 15:10:05 2004
+--- src/version.c      Fri Jan  9 19:16:24 2004
+***************
+*** 639,640 ****
+--- 639,642 ----
+  {   /* Add new patch number below this line */
++ /**/
++     178,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+214. Your MCI "Circle of Friends" are all Hayes-compatible.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        Sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\              Project leader for A-A-P -- http://www.A-A-P.org        ///
+ \\\  Help AIDS victims, buy here: http://ICCF-Holland.org/click1.html  ///
diff --git a/6.2.179 b/6.2.179
new file mode 100644 (file)
index 0000000..9ed75ec
--- /dev/null
+++ b/6.2.179
@@ -0,0 +1,229 @@
+To: vim-dev@vim.org
+Subject: Patch 6.2.179 (extra)
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 6.2.179 (extra)
+Problem:    The en_gb messages file isn't found on case sensitive systems.
+Solution:   Rename en_gb to en_GB. (Mike Williams)
+Files:     src/po/en_gb.po, src/po/en_GB.po, src/po/Make_ming.mak,
+           src/po/Make_mvc.mak, src/po/Makefile, src/po/README_mvc.txt
+
+
+*** ../vim-6.2.178/src/po/en_gb.po     Tue Feb 25 21:06:40 2003
+--- src/po/en_gb.po    Sun Jan 11 12:14:46 2004
+***************
+*** 1,48 ****
+- # UK English Translation for Vim             vim:set foldmethod=marker:
+- #
+- # Do ":help uganda"  in Vim to read copying and usage conditions.
+- # Do ":help credits" in Vim to see a list of people who contributed.
+- #
+- # FIRST AUTHOR Mike Williams <mrw@eandem.co.uk>, 2003.
+- #
+- msgid ""
+- msgstr ""
+- "Project-Id-Version: Vim(UK English)\n"
+- "POT-Creation-Date: 2003-02-23 10:27+0000\n"
+- "PO-Revision-Date: 2003-02-25 11:05+0000\n"
+- "Last-Translator: Mike Williams <mrw@eandem.co.uk>\n"
+- "Language-Team: Mike Williams <mrw@eandem.co.uk>\n"
+- "MIME-Version: 1.0\n"
+- "Content-Type: text/plain; charset=ISO_8859-1\n"
+- "Content-Transfer-Encoding: 7bit\n"
+- 
+- #, c-format
+- msgid "E185: Cannot find color scheme %s"
+- msgstr "E185: Cannot find colour scheme %s"
+- 
+- #, c-format
+- msgid "E254: Cannot allocate color %s"
+- msgstr "E254: Cannot allocate colour %s"
+- 
+- msgid "Vim E458: Cannot allocate colormap entry, some colors may be incorrect"
+- msgstr ""
+- "Vim E458: Cannot allocate colourmap entry, some colours may be incorrect"
+- 
+- msgid "-background <color>\tUse <color> for the background (also: -bg)"
+- msgstr "-background <colour>\tUse <colour> for the background (also: -bg)"
+- 
+- msgid "-foreground <color>\tUse <color> for normal text (also: -fg)"
+- msgstr "-foreground <colour>\tUse <colour> for normal text (also: -fg)"
+- 
+- msgid "Messages maintainer: Bram Moolenaar <Bram@vim.org>"
+- msgstr "Messages maintainer: Mike Williams <mrw@eandem.co.uk>"
+- 
+- msgid "E419: FG color unknown"
+- msgstr "E419: FG colour unknown"
+- 
+- msgid "E420: BG color unknown"
+- msgstr "E420: BG colour unknown"
+- 
+- #, c-format
+- msgid "E421: Color name or number not recognized: %s"
+- msgstr "E421: Colour name or number not recognised: %s"
+--- 0 ----
+*** ../vim-6.2.178/src/po/en_GB.po     Sun Jan 11 12:14:37 2004
+--- src/po/en_GB.po    Tue Feb 25 21:06:40 2003
+***************
+*** 0 ****
+--- 1,48 ----
++ # UK English Translation for Vim             vim:set foldmethod=marker:
++ #
++ # Do ":help uganda"  in Vim to read copying and usage conditions.
++ # Do ":help credits" in Vim to see a list of people who contributed.
++ #
++ # FIRST AUTHOR Mike Williams <mrw@eandem.co.uk>, 2003.
++ #
++ msgid ""
++ msgstr ""
++ "Project-Id-Version: Vim(UK English)\n"
++ "POT-Creation-Date: 2003-02-23 10:27+0000\n"
++ "PO-Revision-Date: 2003-02-25 11:05+0000\n"
++ "Last-Translator: Mike Williams <mrw@eandem.co.uk>\n"
++ "Language-Team: Mike Williams <mrw@eandem.co.uk>\n"
++ "MIME-Version: 1.0\n"
++ "Content-Type: text/plain; charset=ISO_8859-1\n"
++ "Content-Transfer-Encoding: 7bit\n"
++ 
++ #, c-format
++ msgid "E185: Cannot find color scheme %s"
++ msgstr "E185: Cannot find colour scheme %s"
++ 
++ #, c-format
++ msgid "E254: Cannot allocate color %s"
++ msgstr "E254: Cannot allocate colour %s"
++ 
++ msgid "Vim E458: Cannot allocate colormap entry, some colors may be incorrect"
++ msgstr ""
++ "Vim E458: Cannot allocate colourmap entry, some colours may be incorrect"
++ 
++ msgid "-background <color>\tUse <color> for the background (also: -bg)"
++ msgstr "-background <colour>\tUse <colour> for the background (also: -bg)"
++ 
++ msgid "-foreground <color>\tUse <color> for normal text (also: -fg)"
++ msgstr "-foreground <colour>\tUse <colour> for normal text (also: -fg)"
++ 
++ msgid "Messages maintainer: Bram Moolenaar <Bram@vim.org>"
++ msgstr "Messages maintainer: Mike Williams <mrw@eandem.co.uk>"
++ 
++ msgid "E419: FG color unknown"
++ msgstr "E419: FG colour unknown"
++ 
++ msgid "E420: BG color unknown"
++ msgstr "E420: BG colour unknown"
++ 
++ #, c-format
++ msgid "E421: Color name or number not recognized: %s"
++ msgstr "E421: Colour name or number not recognised: %s"
+*** ../vim-6.2.178/src/po/Make_ming.mak        Sat May 31 22:29:00 2003
+--- src/po/Make_ming.mak       Sun Jan 11 12:30:55 2004
+***************
+*** 10,18 ****
+  # language (xx) and add it to the next three lines.
+  #
+  
+! LANGUAGES =  af cs de en_gb es fr it ja ko no pl sk uk zh_TW \
+               zh_TW.UTF-8 zh_CN zh_CN.UTF-8
+! MOFILES =    af.mo cs.mo de.mo en_gb.mo es.mo fr.mo it.mo ja.mo \
+               ko.mo no.mo pl.mo sk.mo uk.mo zh_TW.mo zh_TW.UTF-8.mo \
+               zh_CN.mo zh_CN.UTF-8.mo
+  
+--- 10,18 ----
+  # language (xx) and add it to the next three lines.
+  #
+  
+! LANGUAGES =  af cs de en_GB es fr it ja ko no pl sk uk zh_TW \
+               zh_TW.UTF-8 zh_CN zh_CN.UTF-8
+! MOFILES =    af.mo cs.mo de.mo en_GB.mo es.mo fr.mo it.mo ja.mo \
+               ko.mo no.mo pl.mo sk.mo uk.mo zh_TW.mo zh_TW.UTF-8.mo \
+               zh_CN.mo zh_CN.UTF-8.mo
+  
+*** ../vim-6.2.178/src/po/Make_mvc.mak Sat May 31 22:29:05 2003
+--- src/po/Make_mvc.mak        Sun Jan 11 12:31:26 2004
+***************
+*** 6,14 ****
+  # Please read README_mvc.txt before using this file.
+  #
+  
+! LANGUAGES =  af cs de en_gb es fr it ja ko no pl sk uk zh_TW \
+               zh_TW.UTF-8 zh_CN zh_CN.UTF-8
+! MOFILES =    af.mo cs.mo de.mo en_gb.mo es.mo fr.mo it.mo ja.mo \
+               ko.mo no.mo pl.mo sk.mo uk.mo zh_TW.mo zh_TW.UTF-8.mo \
+               zh_CN.mo zh_CN.UTF-8.mo
+  
+--- 6,14 ----
+  # Please read README_mvc.txt before using this file.
+  #
+  
+! LANGUAGES =  af cs de en_GB es fr it ja ko no pl sk uk zh_TW \
+               zh_TW.UTF-8 zh_CN zh_CN.UTF-8
+! MOFILES =    af.mo cs.mo de.mo en_GB.mo es.mo fr.mo it.mo ja.mo \
+               ko.mo no.mo pl.mo sk.mo uk.mo zh_TW.mo zh_TW.UTF-8.mo \
+               zh_CN.mo zh_CN.UTF-8.mo
+  
+*** ../vim-6.2.178/src/po/Makefile     Sat May 31 22:28:56 2003
+--- src/po/Makefile    Sun Jan 11 12:30:21 2004
+***************
+*** 4,12 ****
+  # Note: ja.sjis, *.cp1250 and zh_CN.cp936 are only for MS-Windows, they are
+  # not installed on Unix
+  
+! LANGUAGES =  af cs de en_gb es fr it ja ko no pl sk uk zh_TW \
+               zh_TW.UTF-8 zh_CN zh_CN.UTF-8
+! MOFILES =    af.mo cs.mo de.mo en_gb.mo es.mo fr.mo it.mo ja.mo \
+               ko.mo no.mo pl.mo sk.mo uk.mo zh_TW.mo zh_TW.UTF-8.mo \
+               zh_CN.mo zh_CN.UTF-8.mo
+  
+--- 4,12 ----
+  # Note: ja.sjis, *.cp1250 and zh_CN.cp936 are only for MS-Windows, they are
+  # not installed on Unix
+  
+! LANGUAGES =  af cs de en_GB es fr it ja ko no pl sk uk zh_TW \
+               zh_TW.UTF-8 zh_CN zh_CN.UTF-8
+! MOFILES =    af.mo cs.mo de.mo en_GB.mo es.mo fr.mo it.mo ja.mo \
+               ko.mo no.mo pl.mo sk.mo uk.mo zh_TW.mo zh_TW.UTF-8.mo \
+               zh_CN.mo zh_CN.UTF-8.mo
+  
+*** ../vim-6.2.178/src/po/README_mvc.txt       Fri Apr 25 22:30:02 2003
+--- src/po/README_mvc.txt      Sun Jan 11 12:32:18 2004
+***************
+*** 55,61 ****
+  first thing to do is merge them into the existing translations.  This is done
+  with the following command:
+  
+!      make xx.po
+  
+  where xx is the langauge code for the language needing translations.  The
+  original .po file is copied to xx.po.orig.
+--- 55,61 ----
+  first thing to do is merge them into the existing translations.  This is done
+  with the following command:
+  
+!      nmake -f Make_mvc.mak xx.po
+  
+  where xx is the langauge code for the language needing translations.  The
+  original .po file is copied to xx.po.orig.
+*** ../vim-6.2.178/src/version.c       Fri Jan  9 19:18:01 2004
+--- src/version.c      Sun Jan 11 12:13:53 2004
+***************
+*** 639,640 ****
+--- 639,642 ----
+  {   /* Add new patch number below this line */
++ /**/
++     179,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+226. You sit down at the computer right after dinner and your spouse
+     says "See you in the morning."
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        Sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\              Project leader for A-A-P -- http://www.A-A-P.org        ///
+ \\\  Help AIDS victims, buy here: http://ICCF-Holland.org/click1.html  ///
diff --git a/6.2.180 b/6.2.180
new file mode 100644 (file)
index 0000000..b239216
--- /dev/null
+++ b/6.2.180
@@ -0,0 +1,146 @@
+To: vim-dev@vim.org
+Subject: Patch 6.2.180
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 6.2.180
+Problem:    Compiling with GTK2 on Win32 doesn't work.
+Solution:   Include gdkwin32.h instead of gdkx.h. (Srinath Avadhanula)
+Files:     src/gui_gtk.c, src/gui_gtk_f.c, src/gui_gtk_x11.c, src/mbyte.c
+
+
+*** ../vim-6.2.179/src/gui_gtk.c       Mon Jun  2 22:22:50 2003
+--- src/gui_gtk.c      Tue Dec 23 11:41:29 2003
+***************
+*** 109,115 ****
+  #ifdef FEAT_GUI_GTK
+  # include <gdk/gdkkeysyms.h>
+  # include <gdk/gdk.h>
+! # include <gdk/gdkx.h>
+  
+  # include <gtk/gtk.h>
+  #else
+--- 109,119 ----
+  #ifdef FEAT_GUI_GTK
+  # include <gdk/gdkkeysyms.h>
+  # include <gdk/gdk.h>
+! # ifdef WIN3264
+! #  include <gdk/gdkwin32.h>
+! # else
+! #  include <gdk/gdkx.h>
+! # endif
+  
+  # include <gtk/gtk.h>
+  #else
+*** ../vim-6.2.179/src/gui_gtk_f.c     Fri Apr 25 19:49:56 2003
+--- src/gui_gtk_f.c    Tue Dec 23 11:41:48 2003
+***************
+*** 32,38 ****
+                          runtime! */
+  #include "gui_gtk_f.h"
+  #include <gtk/gtksignal.h>
+! #include <gdk/gdkx.h>
+  
+  typedef struct _GtkFormChild GtkFormChild;
+  
+--- 32,42 ----
+                          runtime! */
+  #include "gui_gtk_f.h"
+  #include <gtk/gtksignal.h>
+! #ifdef WIN3264
+! # include <gdk/gdkwin32.h>
+! #else
+! # include <gdk/gdkx.h>
+! #endif
+  
+  typedef struct _GtkFormChild GtkFormChild;
+  
+*** ../vim-6.2.179/src/gui_gtk_x11.c   Sat Sep 27 19:36:47 2003
+--- src/gui_gtk_x11.c  Tue Dec 23 11:41:57 2003
+***************
+*** 68,74 ****
+  #else
+  # include <gdk/gdkkeysyms.h>
+  # include <gdk/gdk.h>
+! # include <gdk/gdkx.h>
+  
+  # include <gtk/gtk.h>
+  # include "gui_gtk_f.h"
+--- 68,78 ----
+  #else
+  # include <gdk/gdkkeysyms.h>
+  # include <gdk/gdk.h>
+! # ifdef WIN3264
+! #  include <gdk/gdkwin32.h>
+! # else
+! #  include <gdk/gdkx.h>
+! # endif
+  
+  # include <gtk/gtk.h>
+  # include "gui_gtk_f.h"
+*** ../vim-6.2.179/src/mbyte.c Mon Dec 29 21:17:44 2003
+--- src/mbyte.c        Tue Dec 23 16:03:30 2003
+***************
+*** 102,108 ****
+  
+  #if defined(FEAT_XIM) && defined(HAVE_GTK2)
+  # include <gdk/gdkkeysyms.h>
+! # include <gdk/gdkx.h>
+  #endif
+  
+  #if defined(FEAT_MBYTE) || defined(PROTO)
+--- 102,112 ----
+  
+  #if defined(FEAT_XIM) && defined(HAVE_GTK2)
+  # include <gdk/gdkkeysyms.h>
+! # ifdef WIN3264
+! #  include <gdk/gdkwin32.h>
+! # else
+! #  include <gdk/gdkx.h>
+! # endif
+  #endif
+  
+  #if defined(FEAT_MBYTE) || defined(PROTO)
+***************
+*** 3620,3626 ****
+  #endif
+  
+  #ifdef FEAT_GUI_GTK
+! # include <gdk/gdkx.h>
+  #else
+  # ifdef PROTO
+  /* Define a few things to be able to generate prototypes while not configured
+--- 3624,3634 ----
+  #endif
+  
+  #ifdef FEAT_GUI_GTK
+! # ifdef WIN3264
+! #  include <gdk/gdkwin32.h>
+! # else
+! #  include <gdk/gdkx.h>
+! # endif
+  #else
+  # ifdef PROTO
+  /* Define a few things to be able to generate prototypes while not configured
+*** ../vim-6.2.179/src/version.c       Sun Jan 11 12:32:47 2004
+--- src/version.c      Sun Jan 11 12:43:44 2004
+***************
+*** 639,640 ****
+--- 639,642 ----
+  {   /* Add new patch number below this line */
++ /**/
++     180,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+227. You sleep next to your monitor.  Or on top of it.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        Sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\              Project leader for A-A-P -- http://www.A-A-P.org        ///
+ \\\  Help AIDS victims, buy here: http://ICCF-Holland.org/click1.html  ///
diff --git a/6.2.181 b/6.2.181
new file mode 100644 (file)
index 0000000..70188cd
--- /dev/null
+++ b/6.2.181
@@ -0,0 +1,70 @@
+To: vim-dev@vim.org
+Subject: Patch 6.2.181
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 6.2.181 (after 6.2.171)
+Problem:    The "-o" argument of "find" has lower priority than the implied
+           "and" with "-print".
+Solution:   Add parenthesis around the "-o" expression. (Gordon Prieur)
+Files:     src/Makefile
+
+
+*** ../vim-6.2.180/src/Makefile        Tue Jan  6 16:20:37 2004
+--- src/Makefile       Mon Jan 12 19:55:19 2004
+***************
+*** 1724,1730 ****
+       chmod $(FILEMOD) `find $(DEST_MACRO) -type f -print`
+       chmod $(SCRIPTMOD) $(DEST_MACRO)/less.sh
+  # When using CVS some CVS directories might have been copied.
+!      cvs=`find $(DEST_MACRO) -name CVS -o -name AAPDIR -print`; \
+             if test -n "$$cvs"; then \
+                rm -rf $$cvs; \
+             fi
+--- 1730,1736 ----
+       chmod $(FILEMOD) `find $(DEST_MACRO) -type f -print`
+       chmod $(SCRIPTMOD) $(DEST_MACRO)/less.sh
+  # When using CVS some CVS directories might have been copied.
+!      cvs=`find $(DEST_MACRO) \( -name CVS -o -name AAPDIR \) -print`; \
+             if test -n "$$cvs"; then \
+                rm -rf $$cvs; \
+             fi
+***************
+*** 1751,1757 ****
+  # install the runtime tools
+       $(INSTALL_DATA_R) $(TOOLSSOURCE)/* $(DEST_TOOLS)
+  # When using CVS some CVS directories might have been copied.
+!      cvs=`find $(DEST_TOOLS) -name CVS -o -name AAPDIR -print`; \
+             if test -n "$$cvs"; then \
+                rm -rf $$cvs; \
+             fi
+--- 1757,1763 ----
+  # install the runtime tools
+       $(INSTALL_DATA_R) $(TOOLSSOURCE)/* $(DEST_TOOLS)
+  # When using CVS some CVS directories might have been copied.
+!      cvs=`find $(DEST_TOOLS) \( -name CVS -o -name AAPDIR \) -print`; \
+             if test -n "$$cvs"; then \
+                rm -rf $$cvs; \
+             fi
+*** ../vim-6.2.180/src/version.c       Sun Jan 11 12:45:02 2004
+--- src/version.c      Mon Jan 12 19:52:07 2004
+***************
+*** 639,640 ****
+--- 639,642 ----
+  {   /* Add new patch number below this line */
++ /**/
++     181,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+251. You've never seen your closest friends who usually live WAY too far away.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        Sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\              Project leader for A-A-P -- http://www.A-A-P.org        ///
+ \\\  Help AIDS victims, buy here: http://ICCF-Holland.org/click1.html  ///
diff --git a/6.2.182 b/6.2.182
new file mode 100644 (file)
index 0000000..d56fc4f
--- /dev/null
+++ b/6.2.182
@@ -0,0 +1,62 @@
+To: vim-dev@vim.org
+Subject: Patch 6.2.182
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 6.2.182 (after 6.2.094)
+Problem:    Compilation with tiny features fails because of missing
+           get_past_head() function.
+Solution:   Adjust the #ifdef for get_past_head().
+Files:     src/misc1.c
+
+
+*** ../vim-6.2.181/src/misc1.c Fri Oct 17 12:18:17 2003
+--- src/misc1.c        Sun Jan 18 16:07:34 2004
+***************
+*** 3874,3881 ****
+  
+  #if defined(FEAT_MODIFY_FNAME) || defined(FEAT_EVAL) \
+       || defined(FEAT_SESSION) || defined(MSWIN) \
+!      || (defined(FEAT_GUI_GTK) && defined(FEAT_WINDOWS)) \
+!      || defined(FEAT_SUN_WORKSHOP) || defined(PROTO)
+  /*
+   * Get a pointer to one character past the head of a path name.
+   * Unix: after "/"; DOS: after "c:\"; Amiga: after "disk:/"; Mac: no head.
+--- 3875,3884 ----
+  
+  #if defined(FEAT_MODIFY_FNAME) || defined(FEAT_EVAL) \
+       || defined(FEAT_SESSION) || defined(MSWIN) \
+!      || (defined(FEAT_GUI_GTK) \
+!                          && (defined(FEAT_WINDOWS) || defined(FEAT_DND))) \
+!      || defined(FEAT_SUN_WORKSHOP) || defined(FEAT_NETBEANS_INTG) \
+!      || defined(PROTO)
+  /*
+   * Get a pointer to one character past the head of a path name.
+   * Unix: after "/"; DOS: after "c:\"; Amiga: after "disk:/"; Mac: no head.
+*** ../vim-6.2.181/src/version.c       Mon Jan 12 19:56:01 2004
+--- src/version.c      Sun Jan 18 20:14:02 2004
+***************
+*** 639,640 ****
+--- 639,642 ----
+  {   /* Add new patch number below this line */
++ /**/
++     182,
+  /**/
+
+-- 
+CUSTOMER:     Well, can you hang around a couple of minutes?  He won't be
+              long.
+MORTICIAN:    Naaah, I got to go on to Robinson's -- they've lost nine today.
+CUSTOMER:     Well, when is your next round?
+MORTICIAN:    Thursday.
+DEAD PERSON:  I think I'll go for a walk.
+                                  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/ \\\
+\\\              Project leader for A-A-P -- http://www.A-A-P.org        ///
+ \\\  Help AIDS victims, buy here: http://ICCF-Holland.org/click1.html  ///
diff --git a/6.2.183 b/6.2.183
new file mode 100644 (file)
index 0000000..f1480da
--- /dev/null
+++ b/6.2.183
@@ -0,0 +1,58 @@
+To: vim-dev@vim.org
+Subject: Patch 6.2.183
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 6.2.183 (after 6.2.178)
+Problem:    Warning for char/unsigned char mixup.
+Solution:   Use MSG() instead of msg(). (Tony Leneis)
+Files:     src/normal.c
+
+
+*** ../vim-6.2.182/src/normal.c        Fri Jan  9 19:18:01 2004
+--- src/normal.c       Sun Jan 18 18:49:04 2004
+***************
+*** 7778,7784 ****
+               && !VIsual_active
+  #endif
+               && no_reason)
+!          msg(_("Type  :quit<Enter>  to exit Vim"));
+  
+       restart_edit = 0;
+  #ifdef FEAT_CMDWIN
+--- 7790,7796 ----
+               && !VIsual_active
+  #endif
+               && no_reason)
+!          MSG(_("Type  :quit<Enter>  to exit Vim"));
+  
+       restart_edit = 0;
+  #ifdef FEAT_CMDWIN
+*** ../vim-6.2.182/src/version.c       Sun Jan 18 20:15:02 2004
+--- src/version.c      Sun Jan 18 20:16:41 2004
+***************
+*** 639,640 ****
+--- 639,642 ----
+  {   /* Add new patch number below this line */
++ /**/
++     183,
+  /**/
+
+-- 
+CUSTOMER:     You're not fooling anyone y'know.  Look, isn't there something
+              you can do?
+DEAD PERSON:  I feel happy... I feel happy.
+    [whop]
+CUSTOMER:     Ah, thanks very much.
+MORTICIAN:    Not at all.  See you on Thursday.
+CUSTOMER:     Right.
+                                  The Quest for the Holy Grail (Monty Python)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        Sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\              Project leader for A-A-P -- http://www.A-A-P.org        ///
+ \\\  Help AIDS victims, buy here: http://ICCF-Holland.org/click1.html  ///
diff --git a/6.2.184 b/6.2.184
new file mode 100644 (file)
index 0000000..d200921
--- /dev/null
+++ b/6.2.184
@@ -0,0 +1,668 @@
+To: vim-dev@vim.org
+Subject: Patch 6.2.184
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 6.2.184
+Problem:    With 'formatoptions' set to "1aw" inserting text may cause the
+           paragraph to be ended. (Alan Schmitt)
+Solution:   Temporarily add an extra space to make the paragraph continue
+           after moving the word after the cursor to the next line.
+           Also format when pressing Esc.
+Files:     src/edit.c, src/normal.c, src/proto/edit.pro
+
+
+*** ../vim-6.2.183/src/edit.c  Sun Nov  9 20:26:53 2003
+--- src/edit.c Sun Jan 18 20:23:49 2004
+***************
+*** 121,132 ****
+  static void ins_ctrl_v __ARGS((void));
+  static void undisplay_dollar __ARGS((void));
+  static void insert_special __ARGS((int, int, int));
+  #ifdef FEAT_COMMENTS
+  static int  cmplen __ARGS((char_u *s1, char_u *s2));
+  #endif
+  static void redo_literal __ARGS((int c));
+  static void start_arrow __ARGS((pos_T *end_insert_pos));
+! static void stop_insert __ARGS((pos_T *end_insert_pos));
+  static int  echeck_abbr __ARGS((int));
+  static void replace_push_off __ARGS((int c));
+  static int  replace_pop __ARGS((void));
+--- 121,133 ----
+  static void ins_ctrl_v __ARGS((void));
+  static void undisplay_dollar __ARGS((void));
+  static void insert_special __ARGS((int, int, int));
++ static void check_auto_format __ARGS((int));
+  #ifdef FEAT_COMMENTS
+  static int  cmplen __ARGS((char_u *s1, char_u *s2));
+  #endif
+  static void redo_literal __ARGS((int c));
+  static void start_arrow __ARGS((pos_T *end_insert_pos));
+! static void stop_insert __ARGS((pos_T *end_insert_pos, int esc));
+  static int  echeck_abbr __ARGS((int));
+  static void replace_push_off __ARGS((int c));
+  static int  replace_pop __ARGS((void));
+***************
+*** 195,204 ****
+  static int   old_indent = 0;         /* for ^^D command in insert mode */
+  
+  #ifdef FEAT_RIGHTLEFT
+! int      revins_on;                  /* reverse insert mode on */
+! int      revins_chars;               /* how much to skip after edit */
+! int      revins_legal;               /* was the last char 'legal'? */
+! int      revins_scol;                /* start column of revins session */
+  #endif
+  
+  #if defined(FEAT_MBYTE) && defined(MACOS_CLASSIC)
+--- 196,205 ----
+  static int   old_indent = 0;         /* for ^^D command in insert mode */
+  
+  #ifdef FEAT_RIGHTLEFT
+! int          revins_on;              /* reverse insert mode on */
+! int          revins_chars;           /* how much to skip after edit */
+! int          revins_legal;           /* was the last char 'legal'? */
+! int          revins_scol;            /* start column of revins session */
+  #endif
+  
+  #if defined(FEAT_MBYTE) && defined(MACOS_CLASSIC)
+***************
+*** 209,214 ****
+--- 210,218 ----
+                                          char.  Set when edit() is called.
+                                          after that arrow_used is used. */
+  
++ static int   did_add_space = FALSE;  /* auto_format() added an extra space
++                                         under the cursor */
++ 
+  /*
+   * edit(): Start inserting text.
+   *
+***************
+*** 866,872 ****
+       /* insert the contents of a register */
+       case Ctrl_R:
+           ins_reg();
+!          auto_format();
+           inserted_space = FALSE;
+           break;
+  
+--- 870,876 ----
+       /* insert the contents of a register */
+       case Ctrl_R:
+           ins_reg();
+!          auto_format(FALSE);
+           inserted_space = FALSE;
+           break;
+  
+***************
+*** 961,967 ****
+           }
+  # endif
+           ins_shift(c, lastc);
+!          auto_format();
+           inserted_space = FALSE;
+           break;
+  
+--- 965,971 ----
+           }
+  # endif
+           ins_shift(c, lastc);
+!          auto_format(FALSE);
+           inserted_space = FALSE;
+           break;
+  
+***************
+*** 969,994 ****
+       case K_DEL:
+       case K_KDEL:
+           ins_del();
+!          auto_format();
+           break;
+  
+       /* delete character before the cursor */
+       case K_BS:
+       case Ctrl_H:
+           did_backspace = ins_bs(c, BACKSPACE_CHAR, &inserted_space);
+!          auto_format();
+           break;
+  
+       /* delete word before the cursor */
+       case Ctrl_W:
+           did_backspace = ins_bs(c, BACKSPACE_WORD, &inserted_space);
+!          auto_format();
+           break;
+  
+       /* delete all inserted text in current line */
+       case Ctrl_U:
+           did_backspace = ins_bs(c, BACKSPACE_LINE, &inserted_space);
+!          auto_format();
+           inserted_space = FALSE;
+           break;
+  
+--- 973,998 ----
+       case K_DEL:
+       case K_KDEL:
+           ins_del();
+!          auto_format(FALSE);
+           break;
+  
+       /* delete character before the cursor */
+       case K_BS:
+       case Ctrl_H:
+           did_backspace = ins_bs(c, BACKSPACE_CHAR, &inserted_space);
+!          auto_format(FALSE);
+           break;
+  
+       /* delete word before the cursor */
+       case Ctrl_W:
+           did_backspace = ins_bs(c, BACKSPACE_WORD, &inserted_space);
+!          auto_format(FALSE);
+           break;
+  
+       /* delete all inserted text in current line */
+       case Ctrl_U:
+           did_backspace = ins_bs(c, BACKSPACE_LINE, &inserted_space);
+!          auto_format(FALSE);
+           inserted_space = FALSE;
+           break;
+  
+***************
+*** 1111,1117 ****
+           inserted_space = FALSE;
+           if (ins_tab())
+               goto normalchar;        /* insert TAB as a normal char */
+!          auto_format();
+           break;
+  
+       case K_KENTER:
+--- 1115,1121 ----
+           inserted_space = FALSE;
+           if (ins_tab())
+               goto normalchar;        /* insert TAB as a normal char */
+!          auto_format(FALSE);
+           break;
+  
+       case K_KENTER:
+***************
+*** 1138,1144 ****
+  #endif
+           if (ins_eol(c) && !p_im)
+               goto doESCkey;      /* out of memory */
+!          auto_format();
+           inserted_space = FALSE;
+           break;
+  
+--- 1142,1148 ----
+  #endif
+           if (ins_eol(c) && !p_im)
+               goto doESCkey;      /* out of memory */
+!          auto_format(FALSE);
+           inserted_space = FALSE;
+           break;
+  
+***************
+*** 1252,1258 ****
+                   revins_legal++;
+  #endif
+                   c = Ctrl_V; /* pretend CTRL-V is last character */
+!                  auto_format();
+               }
+           }
+           break;
+--- 1256,1262 ----
+                   revins_legal++;
+  #endif
+                   c = Ctrl_V; /* pretend CTRL-V is last character */
+!                  auto_format(FALSE);
+               }
+           }
+           break;
+***************
+*** 1299,1305 ****
+  #endif
+           }
+  
+!          auto_format();
+  
+  #ifdef FEAT_FOLDING
+           /* When inserting a character the cursor line must never be in a
+--- 1303,1309 ----
+  #endif
+           }
+  
+!          auto_format(FALSE);
+  
+  #ifdef FEAT_FOLDING
+           /* When inserting a character the cursor line must never be in a
+***************
+*** 2489,2495 ****
+               curwin->w_cursor.col++;
+           }
+  
+!          auto_format();
+  
+           ins_compl_free();
+           started_completion = FALSE;
+--- 2504,2510 ----
+               curwin->w_cursor.col++;
+           }
+  
+!          auto_format(FALSE);
+  
+           ins_compl_free();
+           started_completion = FALSE;
+***************
+*** 4346,4357 ****
+   * saved here.
+   */
+      void
+! auto_format()
+  {
+      pos_T    pos;
+      colnr_T  len;
+      char_u   *old, *pold;
+      char_u   *new, *pnew;
+  
+      if (!has_format_option(FO_AUTO))
+       return;
+--- 4361,4374 ----
+   * saved here.
+   */
+      void
+! auto_format(trailblank)
+!     int              trailblank;     /* when TRUE also format with trailing blank */
+  {
+      pos_T    pos;
+      colnr_T  len;
+      char_u   *old, *pold;
+      char_u   *new, *pnew;
++     int              wasatend;
+  
+      if (!has_format_option(FO_AUTO))
+       return;
+***************
+*** 4359,4370 ****
+      pos = curwin->w_cursor;
+      old = ml_get_curline();
+  
+      /* Don't format in Insert mode when the cursor is on a trailing blank, the
+       * user might insert normal text next.  Also skip formatting when "1" is
+       * in 'formatoptions' and there is a single character before the cursor.
+       * Otherwise the line would be broken and when typing another non-white
+       * next they are not joined back together. */
+!     if (*old != NUL && pos.col == STRLEN(old))
+      {
+       dec_cursor();
+       if (!WHITECHAR(gchar_cursor())
+--- 4376,4391 ----
+      pos = curwin->w_cursor;
+      old = ml_get_curline();
+  
++     /* may remove added space */
++     check_auto_format(FALSE);
++ 
+      /* Don't format in Insert mode when the cursor is on a trailing blank, the
+       * user might insert normal text next.  Also skip formatting when "1" is
+       * in 'formatoptions' and there is a single character before the cursor.
+       * Otherwise the line would be broken and when typing another non-white
+       * next they are not joined back together. */
+!     wasatend = (pos.col == STRLEN(old));
+!     if (*old != NUL && !trailblank && wasatend)
+      {
+       dec_cursor();
+       if (!WHITECHAR(gchar_cursor())
+***************
+*** 4426,4432 ****
+       len = (colnr_T)STRLEN(pnew);
+       if ((pold - old) + len >= pos.col)
+       {
+!          curwin->w_cursor.col = pos.col - (pold - old) + (pnew - new);
+           break;
+       }
+       /* Cursor wraps to next line */
+--- 4447,4477 ----
+       len = (colnr_T)STRLEN(pnew);
+       if ((pold - old) + len >= pos.col)
+       {
+!          if (pos.col <= (colnr_T)(pold - old))
+!              curwin->w_cursor.col = (pnew - new);
+!          else
+!              curwin->w_cursor.col = pos.col - (pold - old) + (pnew - new);
+! 
+!          /* Insert mode: If the cursor is now after the end of the line
+!           * while it previously wasn't, the line was broken.  Because of
+!           * the rule above we need to add a space when 'w' is in
+!           * 'formatoptions' to keep a paragraph formatted. */
+!          if (!wasatend && has_format_option(FO_WHITE_PAR))
+!          {
+!              len = STRLEN(new);
+!              if (curwin->w_cursor.col == len)
+!              {
+!                  pnew = vim_strnsave(new, len + 2);
+!                  pnew[len] = ' ';
+!                  pnew[len + 1] = NUL;
+!                  ml_replace(curwin->w_cursor.lnum, pnew, FALSE);
+!                  /* remove the space later */
+!                  did_add_space = TRUE;
+!              }
+!              else
+!                  /* may remove added space */
+!                  check_auto_format(FALSE);
+!          }
+           break;
+       }
+       /* Cursor wraps to next line */
+***************
+*** 4437,4442 ****
+--- 4482,4521 ----
+      vim_free(old);
+  }
+  
++ /*
++  * When an extra space was added to continue a paragraph for auto-formatting,
++  * delete it now.  The space must be under the cursor, just after the insert
++  * position.
++  */
++     static void
++ check_auto_format(end_insert)
++     int              end_insert;         /* TRUE when ending Insert mode */
++ {
++     int              c = ' ';
++ 
++     if (did_add_space)
++     {
++      if (!WHITECHAR(gchar_cursor()))
++          /* Somehow the space was removed already. */
++          did_add_space = FALSE;
++      else
++      {
++          if (!end_insert)
++          {
++              inc_cursor();
++              c = gchar_cursor();
++              dec_cursor();
++          }
++          if (c != NUL)
++          {
++              /* The space is no longer at the end of the line, delete it. */
++              del_char(FALSE);
++              did_add_space = FALSE;
++          }
++      }
++     }
++ }
++ 
+  #ifdef FEAT_COMMENTS
+  /*
+   * Return the number of bytes for which strings "s1" and "s2" are equal.
+***************
+*** 4536,4543 ****
+      if (!arrow_used)     /* something has been inserted */
+      {
+       AppendToRedobuff(ESC_STR);
+       arrow_used = TRUE;      /* this means we stopped the current insert */
+-      stop_insert(end_insert_pos);
+      }
+  }
+  
+--- 4615,4622 ----
+      if (!arrow_used)     /* something has been inserted */
+      {
+       AppendToRedobuff(ESC_STR);
++      stop_insert(end_insert_pos, FALSE);
+       arrow_used = TRUE;      /* this means we stopped the current insert */
+      }
+  }
+  
+***************
+*** 4587,4594 ****
+   * do a few things to stop inserting
+   */
+      static void
+! stop_insert(end_insert_pos)
+      pos_T    *end_insert_pos;        /* where insert ended */
+  {
+      int          cc;
+  
+--- 4666,4674 ----
+   * do a few things to stop inserting
+   */
+      static void
+! stop_insert(end_insert_pos, esc)
+      pos_T    *end_insert_pos;        /* where insert ended */
++     int          esc;                /* called by ins_esc() */
+  {
+      int          cc;
+  
+***************
+*** 4602,4635 ****
+      last_insert = get_inserted();
+      last_insert_skip = new_insert_skip;
+  
+!     /*
+!      * If we just did an auto-indent, remove the white space from the end of
+!      * the line, and put the cursor back.
+!      */
+!     if (did_ai && !arrow_used)
+      {
+!      if (gchar_cursor() == NUL && curwin->w_cursor.col > 0)
+!          --curwin->w_cursor.col;
+!      while (cc = gchar_cursor(), vim_iswhite(cc))
+!          (void)del_char(TRUE);
+!      if (cc != NUL)
+!          ++curwin->w_cursor.col;     /* put cursor back on the NUL */
+  
+  #ifdef FEAT_VISUAL
+!      /* <C-S-Right> may have started Visual mode, adjust the position for
+!       * deleted characters. */
+!      if (VIsual_active && VIsual.lnum == curwin->w_cursor.lnum)
+!      {
+!          cc = STRLEN(ml_get_curline());
+!          if (VIsual.col > (colnr_T)cc)
+           {
+!              VIsual.col = cc;
+  # ifdef FEAT_VIRTUALEDIT
+!              VIsual.coladd = 0;
+  # endif
+           }
+-      }
+  #endif
+      }
+      did_ai = FALSE;
+  #ifdef FEAT_SMARTINDENT
+--- 4682,4726 ----
+      last_insert = get_inserted();
+      last_insert_skip = new_insert_skip;
+  
+!     if (!arrow_used)
+      {
+!      /* Auto-format now.  It may seem strange to do this when stopping an
+!       * insertion (or moving the cursor), but it's required when appending
+!       * a line and having it end in a space.  But only do it when something
+!       * was actually inserted, otherwise undo won't work. */
+!      if (!ins_need_undo)
+!          auto_format(TRUE);
+! 
+!      /* If a space was inserted for auto-formatting, remove it now. */
+!      check_auto_format(TRUE);
+! 
+!      /* If we just did an auto-indent, remove the white space from the end
+!       * of the line, and put the cursor back.  */
+!      if (did_ai && esc)
+!      {
+!          if (gchar_cursor() == NUL && curwin->w_cursor.col > 0)
+!              --curwin->w_cursor.col;
+!          while (cc = gchar_cursor(), vim_iswhite(cc))
+!              (void)del_char(TRUE);
+!          if (cc != NUL)
+!              ++curwin->w_cursor.col; /* put cursor back on the NUL */
+  
+  #ifdef FEAT_VISUAL
+!          /* <C-S-Right> may have started Visual mode, adjust the position for
+!           * deleted characters. */
+!          if (VIsual_active && VIsual.lnum == curwin->w_cursor.lnum)
+           {
+!              cc = STRLEN(ml_get_curline());
+!              if (VIsual.col > (colnr_T)cc)
+!              {
+!                  VIsual.col = cc;
+  # ifdef FEAT_VIRTUALEDIT
+!                  VIsual.coladd = 0;
+  # endif
++              }
+           }
+  #endif
++      }
+      }
+      did_ai = FALSE;
+  #ifdef FEAT_SMARTINDENT
+***************
+*** 5988,5994 ****
+           disabled_redraw = TRUE;
+           return FALSE;       /* repeat the insert */
+       }
+!      stop_insert(&curwin->w_cursor);
+       undisplay_dollar();
+      }
+  
+--- 6079,6085 ----
+           disabled_redraw = TRUE;
+           return FALSE;       /* repeat the insert */
+       }
+!      stop_insert(&curwin->w_cursor, TRUE);
+       undisplay_dollar();
+      }
+  
+*** ../vim-6.2.183/src/normal.c        Sun Jan 18 20:17:41 2004
+--- src/normal.c       Sun Jan 18 18:49:04 2004
+***************
+*** 1753,1759 ****
+                   oap->is_VIsual ? (int)cap->count1 :
+  #endif
+                   1);
+!          auto_format();
+           break;
+  
+       case OP_JOIN_NS:
+--- 1753,1759 ----
+                   oap->is_VIsual ? (int)cap->count1 :
+  #endif
+                   1);
+!          auto_format(FALSE);
+           break;
+  
+       case OP_JOIN_NS:
+***************
+*** 1766,1772 ****
+           else
+           {
+               do_do_join(oap->line_count, oap->op_type == OP_JOIN);
+!              auto_format();
+           }
+           break;
+  
+--- 1766,1772 ----
+           else
+           {
+               do_do_join(oap->line_count, oap->op_type == OP_JOIN);
+!              auto_format(FALSE);
+           }
+           break;
+  
+***************
+*** 1781,1787 ****
+               (void)op_delete(oap);
+               if (oap->motion_type == MLINE && has_format_option(FO_AUTO))
+                   u_save_cursor();        /* cursor line wasn't saved yet */
+!              auto_format();
+           }
+           break;
+  
+--- 1781,1787 ----
+               (void)op_delete(oap);
+               if (oap->motion_type == MLINE && has_format_option(FO_AUTO))
+                   u_save_cursor();        /* cursor line wasn't saved yet */
+!              auto_format(FALSE);
+           }
+           break;
+  
+***************
+*** 1896,1902 ****
+  
+               /* TODO: when inserting in several lines, should format all
+                * the lines. */
+!              auto_format();
+  
+               if (restart_edit == 0)
+                   restart_edit = restart_edit_save;
+--- 1896,1902 ----
+  
+               /* TODO: when inserting in several lines, should format all
+                * the lines. */
+!              auto_format(FALSE);
+  
+               if (restart_edit == 0)
+                   restart_edit = restart_edit_save;
+***************
+*** 8193,8199 ****
+       if (reg2 != NULL)
+           put_register(regname, reg2);
+  #endif
+!      auto_format();
+      }
+  }
+  
+--- 8205,8211 ----
+       if (reg2 != NULL)
+           put_register(regname, reg2);
+  #endif
+!      auto_format(FALSE);
+      }
+  }
+  
+*** ../vim-6.2.183/src/proto/edit.pro  Sun Jun  1 12:26:07 2003
+--- src/proto/edit.pro Thu Jan 15 20:57:54 2004
+***************
+*** 13,19 ****
+  void ins_compl_check_keys __ARGS((void));
+  int get_literal __ARGS((void));
+  void insertchar __ARGS((int c, int flags, int second_indent));
+! void auto_format __ARGS((void));
+  int comp_textwidth __ARGS((int ff));
+  int stop_arrow __ARGS((void));
+  void set_last_insert __ARGS((int c));
+--- 13,19 ----
+  void ins_compl_check_keys __ARGS((void));
+  int get_literal __ARGS((void));
+  void insertchar __ARGS((int c, int flags, int second_indent));
+! void auto_format __ARGS((int trailblank));
+  int comp_textwidth __ARGS((int ff));
+  int stop_arrow __ARGS((void));
+  void set_last_insert __ARGS((int c));
+*** ../vim-6.2.183/src/version.c       Sun Jan 18 20:17:41 2004
+--- src/version.c      Sun Jan 18 20:19:10 2004
+***************
+*** 639,640 ****
+--- 639,642 ----
+  {   /* Add new patch number below this line */
++ /**/
++     184,
+  /**/
+
+-- 
+    [clop clop]
+MORTICIAN:  Who's that then?
+CUSTOMER:   I don't know.
+MORTICIAN:  Must be a king.
+CUSTOMER:   Why?
+MORTICIAN:  He hasn't got shit all over him.
+                                  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/ \\\
+\\\              Project leader for A-A-P -- http://www.A-A-P.org        ///
+ \\\  Help AIDS victims, buy here: http://ICCF-Holland.org/click1.html  ///
diff --git a/6.2.185 b/6.2.185
new file mode 100644 (file)
index 0000000..55f2a18
--- /dev/null
+++ b/6.2.185
@@ -0,0 +1,563 @@
+To: vim-dev@vim.org
+Subject: Patch 6.2.185
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 6.2.185
+Problem:    Restoring a session with zero-height windows does not work
+           properly. (Charles Campbell)
+Solution:   Accept a zero argument to ":resize" as intended.  Add a window
+           number argument to ":resize" to be able to set the size of other
+           windows, because the current window cannot be zero-height.
+           Fix the explorer plugin to avoid changing the window sizes.  Add
+           the winrestcmd() function for this.
+Files:     runtime/doc/eval.txt, runtime/plugin/explorer.vim, src/eval.c,
+           src/ex_cmds.h, src/ex_docmd.c, src/proto/window.pro, src/window.c
+
+
+*** ../vim-6.2.184/runtime/doc/eval.txt        Sun Aug 10 22:31:29 2003
+--- runtime/doc/eval.txt       Sun Jan 18 20:38:41 2004
+***************
+*** 1,4 ****
+! *eval.txt*      For Vim version 6.2.  Last change: 2003 Aug 07
+  
+  
+                 VIM REFERENCE MANUAL    by Bram Moolenaar
+--- 1,4 ----
+! *eval.txt*      For Vim version 6.2.  Last change: 2004 Jan 18
+  
+  
+                 VIM REFERENCE MANUAL    by Bram Moolenaar
+***************
+*** 912,917 ****
+--- 919,925 ----
+  winheight( {nr})             Number  height of window {nr}
+  winline()                    Number  window line of the cursor
+  winnr()                              Number  number of current window
++ winrestcmd()                 String  returns command to restore window sizes
+  winwidth( {nr})                      Number  width of window {nr}
+  
+  append({lnum}, {string})                             *append()*
+***************
+*** 2594,2600 ****
+  
+                                                       *winnr()*
+  winnr()              The result is a Number, which is the number of the current
+!              window.  The top window has number 1.
+  
+  winwidth({nr})                                               *winwidth()*
+               The result is a Number, which is the width of window {nr}.
+--- 2618,2634 ----
+  
+                                                       *winnr()*
+  winnr()              The result is a Number, which is the number of the current
+!              window.  The top window has number 1.  The number can be used
+!              with |CTRL-W_w| and ":wincmd w" |:wincmd|.
+! 
+!                                                      *winrestcmd()*
+! winrestcmd() Returns a sequence of |resize| commands that should restore
+!              the current window sizes.  Only works properly when no windows
+!              are opened or closed and the current window is unchanged.
+!              Example: >
+!                      cmd = winrestcmd()
+!                      call MessWithWindowSizes()
+!                      exe cmd
+  
+  winwidth({nr})                                               *winwidth()*
+               The result is a Number, which is the width of window {nr}.
+*** ../vim-6.2.184/runtime/plugin/explorer.vim Fri May 16 19:25:21 2003
+--- runtime/plugin/explorer.vim        Fri Jan 16 20:23:31 2004
+***************
+*** 1,14 ****
+  "=============================================================================
+  " File: explorer.vim
+! " Author: M A Aziz Ahmed (aziz@acorn-networks.com)
+! " Last Change:       2003 May 16
+  " Version: 2.5 + changes
+  " Additions by Mark Waggoner (waggoner@aracnet.com) et al.
+  "-----------------------------------------------------------------------------
+! " This file implements a file explorer. Latest version available at:
+! " http://www.freespeech.org/aziz/vim/
+! " Updated version available at:
+! " http://www.aracnet.com/~waggoner
+  "-----------------------------------------------------------------------------
+  " Normally, this file will reside in the plugins directory and be
+  " automatically sourced.  If not, you must manually source this file
+--- 1,11 ----
+  "=============================================================================
+  " File: explorer.vim
+! " Author: M A Aziz Ahmed (aziz@acorn-networks.com - doesn't work)
+! " Last Change:       2004 Jan 16
+  " Version: 2.5 + changes
+  " Additions by Mark Waggoner (waggoner@aracnet.com) et al.
+  "-----------------------------------------------------------------------------
+! " This file implements a file explorer.
+  "-----------------------------------------------------------------------------
+  " Normally, this file will reside in the plugins directory and be
+  " automatically sourced.  If not, you must manually source this file
+***************
+*** 1302,1315 ****
+    if winbufnr(2) == -1
+      return
+    endif
+!   let t = winnr()
+    while 1
+      wincmd w
+!     if winnr() == t
+        break
+      endif
+      call s:EditDir()
+    endwhile
+  endfunction
+  
+  "---
+--- 1299,1314 ----
+    if winbufnr(2) == -1
+      return
+    endif
+!   let cmd = winrestcmd()
+!   let curwin = winnr()
+    while 1
+      wincmd w
+!     if winnr() == curwin
+        break
+      endif
+      call s:EditDir()
+    endwhile
++   exe cmd
+  endfunction
+  
+  "---
+*** ../vim-6.2.184/src/eval.c  Wed Nov 12 20:47:29 2003
+--- src/eval.c Sun Jan 18 16:51:58 2004
+***************
+*** 373,378 ****
+--- 373,379 ----
+  static void f_winheight __ARGS((VAR argvars, VAR retvar));
+  static void f_winline __ARGS((VAR argvars, VAR retvar));
+  static void f_winnr __ARGS((VAR argvars, VAR retvar));
++ static void f_winrestcmd __ARGS((VAR argvars, VAR retvar));
+  static void f_winwidth __ARGS((VAR argvars, VAR retvar));
+  static win_T *find_win_by_nr __ARGS((VAR vp));
+  static pos_T *var2fpos __ARGS((VAR varp, int lnum));
+***************
+*** 2869,2874 ****
+--- 2870,2876 ----
+      {"winheight",    1, 1, f_winheight},
+      {"winline",              0, 0, f_winline},
+      {"winnr",                0, 0, f_winnr},
++     {"winrestcmd",   0, 0, f_winrestcmd},
+      {"winwidth",     1, 1, f_winwidth},
+  };
+  
+***************
+*** 7418,7423 ****
+--- 7420,7459 ----
+       ++nr;
+  #endif
+      retvar->var_val.var_number = nr;
++ }
++ 
++ /*
++  * "winrestcmd()" function
++  */
++ /* ARGSUSED */
++     static void
++ f_winrestcmd(argvars, retvar)
++     VAR              argvars;
++     VAR              retvar;
++ {
++ #ifdef FEAT_WINDOWS
++     win_T    *wp;
++     int              winnr = 1;
++     garray_T ga;
++     char_u   buf[50];
++ 
++     ga_init2(&ga, (int)sizeof(char), 70);
++     for (wp = firstwin; wp != NULL; wp = wp->w_next)
++     {
++      sprintf((char *)buf, "%dresize %d|", winnr, wp->w_height);
++      ga_concat(&ga, buf);
++ # ifdef FEAT_VERTSPLIT
++      sprintf((char *)buf, "vert %dresize %d|", winnr, wp->w_width);
++      ga_concat(&ga, buf);
++ # endif
++      ++winnr;
++     }
++ 
++     retvar->var_val.var_string = ga.ga_data;
++ #else
++     retvar->var_val.var_string = NULL;
++ #endif
++     retvar->var_type = VAR_STRING;
+  }
+  
+  /*
+*** ../vim-6.2.184/src/ex_cmds.h       Fri May 23 19:13:14 2003
+--- src/ex_cmds.h      Fri Jan 16 16:52:25 2004
+***************
+*** 621,627 ****
+  EX(CMD_registers,    "registers",    ex_display,
+                       EXTRA|NOTRLCOM|TRLBAR|CMDWIN),
+  EX(CMD_resize,               "resize",       ex_resize,
+!                      TRLBAR|WORD1),
+  EX(CMD_retab,                "retab",        ex_retab,
+                       TRLBAR|RANGE|WHOLEFOLD|DFLALL|BANG|WORD1|CMDWIN|MODIFY),
+  EX(CMD_return,               "return",       ex_return,
+--- 621,627 ----
+  EX(CMD_registers,    "registers",    ex_display,
+                       EXTRA|NOTRLCOM|TRLBAR|CMDWIN),
+  EX(CMD_resize,               "resize",       ex_resize,
+!                      RANGE|NOTADR|TRLBAR|WORD1),
+  EX(CMD_retab,                "retab",        ex_retab,
+                       TRLBAR|RANGE|WHOLEFOLD|DFLALL|BANG|WORD1|CMDWIN|MODIFY),
+  EX(CMD_return,               "return",       ex_return,
+*** ../vim-6.2.184/src/ex_docmd.c      Mon Dec 29 20:39:18 2003
+--- src/ex_docmd.c     Fri Jan 16 17:20:17 2004
+***************
+*** 6143,6148 ****
+--- 6188,6201 ----
+      exarg_T  *eap;
+  {
+      int              n;
++     win_T    *wp = curwin;
++ 
++     if (eap->addr_count > 0)
++     {
++      n = eap->line2;
++      for (wp = firstwin; wp->w_next != NULL && --n > 0; wp = wp->w_next)
++          ;
++     }
+  
+  #ifdef FEAT_GUI
+      need_mouse_correct = TRUE;
+***************
+*** 6153,6170 ****
+      {
+       if (*eap->arg == '-' || *eap->arg == '+')
+           n += W_WIDTH(curwin);
+!      else if (n == 0)            /* default is very wide */
+           n = 9999;
+!      win_setwidth((int)n);
+      }
+      else
+  #endif
+      {
+       if (*eap->arg == '-' || *eap->arg == '+')
+           n += curwin->w_height;
+!      else if (n == 0)            /* default is very high */
+           n = 9999;
+!      win_setheight((int)n);
+      }
+  }
+  #endif
+--- 6206,6223 ----
+      {
+       if (*eap->arg == '-' || *eap->arg == '+')
+           n += W_WIDTH(curwin);
+!      else if (n == 0 && eap->arg[0] == NUL)  /* default is very wide */
+           n = 9999;
+!      win_setwidth_win((int)n, wp);
+      }
+      else
+  #endif
+      {
+       if (*eap->arg == '-' || *eap->arg == '+')
+           n += curwin->w_height;
+!      else if (n == 0 && eap->arg[0] == NUL)  /* default is very wide */
+           n = 9999;
+!      win_setheight_win((int)n, wp);
+      }
+  }
+  #endif
+***************
+*** 8340,8371 ****
+       */
+      if (put_line(fd, "set winheight=1 winwidth=1") == FAIL)
+       return FAIL;
+      if (nr > 1)
+      {
+       if (restore_size && (ssop_flags & SSOP_WINSIZE))
+       {
+           for (wp = firstwin; wp != NULL; wp = wp->w_next)
+           {
+               if (!ses_do_win(wp))
+                   continue;
+  
+               /* restore height when not full height */
+               if (wp->w_height + wp->w_status_height < topframe->fr_height
+                       && (fprintf(fd,
+!                              "exe 'resize ' . ((&lines * %ld + %ld) / %ld)",
+!                              (long)wp->w_height, Rows / 2, Rows) < 0
+                                                     || put_eol(fd) == FAIL))
+                   return FAIL;
+  
+               /* restore width when not full width */
+               if (wp->w_width < Columns && (fprintf(fd,
+!                      "exe 'vert resize ' . ((&columns * %ld + %ld) / %ld)",
+!                              (long)wp->w_width, Columns / 2, Columns) < 0
+                                                     || put_eol(fd) == FAIL))
+                   return FAIL;
+-              if (put_line(fd, "wincmd w") == FAIL)
+-                  return FAIL;
+- 
+           }
+       }
+       else
+--- 8393,8448 ----
+       */
+      if (put_line(fd, "set winheight=1 winwidth=1") == FAIL)
+       return FAIL;
++ 
++     /*
++      * Restore the view of the window (options, file, cursor, etc.).
++      */
++     for (wp = firstwin; wp != NULL; wp = wp->w_next)
++     {
++      if (!ses_do_win(wp))
++          continue;
++      if (put_view(fd, wp, TRUE, &ssop_flags) == FAIL)
++          return FAIL;
++      if (nr > 1 && put_line(fd, "wincmd w") == FAIL)
++          return FAIL;
++     }
++ 
++     /*
++      * Restore cursor to the current window if it's not the first one.
++      */
++     if (cnr > 1 && (fprintf(fd, "%dwincmd w", cnr) < 0 || put_eol(fd) == FAIL))
++      return FAIL;
++ 
++     /*
++      * Restore window sizes.  Do this after jumping around in windows, because
++      * the current window has a minimum size while others may not.
++      */
+      if (nr > 1)
+      {
+       if (restore_size && (ssop_flags & SSOP_WINSIZE))
+       {
++          int     n = 0;
++ 
+           for (wp = firstwin; wp != NULL; wp = wp->w_next)
+           {
+               if (!ses_do_win(wp))
+                   continue;
++              ++n;
+  
+               /* restore height when not full height */
+               if (wp->w_height + wp->w_status_height < topframe->fr_height
+                       && (fprintf(fd,
+!                            "exe '%dresize ' . ((&lines * %ld + %ld) / %ld)",
+!                              n, (long)wp->w_height, Rows / 2, Rows) < 0
+                                                     || put_eol(fd) == FAIL))
+                   return FAIL;
+  
+               /* restore width when not full width */
+               if (wp->w_width < Columns && (fprintf(fd,
+!                     "exe 'vert %dresize ' . ((&columns * %ld + %ld) / %ld)",
+!                              n, (long)wp->w_width, Columns / 2, Columns) < 0
+                                                     || put_eol(fd) == FAIL))
+                   return FAIL;
+           }
+       }
+       else
+***************
+*** 8375,8400 ****
+               return FAIL;
+       }
+      }
+- 
+-     /*
+-      * Restore the view of the window (options, file, cursor, etc.).
+-      */
+-     for (wp = firstwin; wp != NULL; wp = wp->w_next)
+-     {
+-      if (!ses_do_win(wp))
+-          continue;
+-      if (put_view(fd, wp, TRUE, &ssop_flags) == FAIL)
+-          return FAIL;
+-      if (nr > 1 && put_line(fd, "wincmd w") == FAIL)
+-          return FAIL;
+-     }
+- 
+-     /*
+-      * Restore cursor to the current window if it's not the first one.
+-      */
+-     if (cnr > 1 && (fprintf(fd, "%dwincmd w", cnr) < 0
+-                                                    || put_eol(fd) == FAIL))
+-      return FAIL;
+  
+      /* Re-apply 'winheight', 'winwidth' and 'shortmess'. */
+      if (fprintf(fd, "set winheight=%ld winwidth=%ld shortmess=%s",
+--- 8452,8457 ----
+*** ../vim-6.2.184/src/proto/window.pro        Sun Jun  1 12:26:22 2003
+--- src/proto/window.pro       Fri Jan 16 17:06:35 2004
+***************
+*** 22,28 ****
+--- 22,30 ----
+  void win_size_save __ARGS((garray_T *gap));
+  void win_size_restore __ARGS((garray_T *gap));
+  void win_setheight __ARGS((int height));
++ void win_setheight_win __ARGS((int height, win_T *win));
+  void win_setwidth __ARGS((int width));
++ void win_setwidth_win __ARGS((int width, win_T *wp));
+  void win_setminheight __ARGS((void));
+  void win_drag_status_line __ARGS((win_T *dragwin, int offset));
+  void win_drag_vsep_line __ARGS((win_T *dragwin, int offset));
+*** ../vim-6.2.184/src/window.c        Sat May 31 21:08:43 2003
+--- src/window.c       Fri Jan 16 17:06:31 2004
+***************
+*** 66,72 ****
+  static win_T *restore_snapshot_rec __ARGS((frame_T *sn, frame_T *fr));
+  
+  #endif /* FEAT_WINDOWS */
+- static void win_setheight_win __ARGS((int height, win_T *win));
+  static win_T *win_alloc __ARGS((win_T *after));
+  static void win_new_height __ARGS((win_T *, int));
+  
+--- 66,71 ----
+***************
+*** 2875,2881 ****
+      /* Change directories when the acd option is set on and after
+       * switching windows. */
+      if (p_acd && curbuf->b_ffname != NULL
+!          && vim_chdirfile(curbuf->b_ffname) == OK)
+       shorten_fnames(TRUE);
+  #endif
+  }
+--- 2874,2880 ----
+      /* Change directories when the acd option is set on and after
+       * switching windows. */
+      if (p_acd && curbuf->b_ffname != NULL
+!                                   && vim_chdirfile(curbuf->b_ffname) == OK)
+       shorten_fnames(TRUE);
+  #endif
+  }
+***************
+*** 3454,3467 ****
+  win_setheight(height)
+      int              height;
+  {
+-     /* Always keep current window at least one line high, even when
+-      * 'winminheight' is zero. */
+- #ifdef FEAT_WINDOWS
+-     if (height < p_wmh)
+-      height = p_wmh;
+- #endif
+-     if (height == 0)
+-      height = 1;
+      win_setheight_win(height, curwin);
+  }
+  
+--- 3453,3458 ----
+***************
+*** 3469,3481 ****
+   * Set the window height of window "win" and take care of repositioning other
+   * windows to fit around it.
+   */
+!     static void
+  win_setheight_win(height, win)
+      int              height;
+      win_T    *win;
+  {
+      int              row;
+  
+  #ifdef FEAT_WINDOWS
+      frame_setheight(win->w_frame, height + win->w_status_height);
+  
+--- 3460,3484 ----
+   * Set the window height of window "win" and take care of repositioning other
+   * windows to fit around it.
+   */
+!     void
+  win_setheight_win(height, win)
+      int              height;
+      win_T    *win;
+  {
+      int              row;
+  
++     if (win == curwin)
++     {
++      /* Always keep current window at least one line high, even when
++       * 'winminheight' is zero. */
++ #ifdef FEAT_WINDOWS
++      if (height < p_wmh)
++          height = p_wmh;
++ #endif
++      if (height == 0)
++          height = 1;
++     }
++ 
+  #ifdef FEAT_WINDOWS
+      frame_setheight(win->w_frame, height + win->w_status_height);
+  
+***************
+*** 3700,3713 ****
+  win_setwidth(width)
+      int              width;
+  {
+      /* Always keep current window at least one column wide, even when
+       * 'winminwidth' is zero. */
+!     if (width < p_wmw)
+!      width = p_wmw;
+!     if (width == 0)
+!      width = 1;
+  
+!     frame_setwidth(curwin->w_frame, width + curwin->w_vsep_width);
+  
+      /* recompute the window positions */
+      (void)win_comp_pos();
+--- 3703,3727 ----
+  win_setwidth(width)
+      int              width;
+  {
++     win_setwidth_win(width, curwin);
++ }
++ 
++     void
++ win_setwidth_win(width, wp)
++     int              width;
++     win_T    *wp;
++ {
+      /* Always keep current window at least one column wide, even when
+       * 'winminwidth' is zero. */
+!     if (wp == curwin)
+!     {
+!      if (width < p_wmw)
+!          width = p_wmw;
+!      if (width == 0)
+!          width = 1;
+!     }
+  
+!     frame_setwidth(wp->w_frame, width + wp->w_vsep_width);
+  
+      /* recompute the window positions */
+      (void)win_comp_pos();
+*** ../vim-6.2.184/src/version.c       Sun Jan 18 20:28:27 2004
+--- src/version.c      Sun Jan 18 20:33:05 2004
+***************
+*** 639,640 ****
+--- 639,642 ----
+  {   /* Add new patch number below this line */
++ /**/
++     185,
+  /**/
+
+-- 
+    [clop clop]
+ARTHUR:  Old woman!
+DENNIS:  Man!
+ARTHUR:  Man, sorry.  What knight lives in that castle over there?
+DENNIS:  I'm thirty seven.
+ARTHUR:  What?
+DENNIS:  I'm thirty seven -- I'm not old!
+                                  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/ \\\
+\\\              Project leader for A-A-P -- http://www.A-A-P.org        ///
+ \\\  Help AIDS victims, buy here: http://ICCF-Holland.org/click1.html  ///
diff --git a/6.2.186 b/6.2.186
new file mode 100644 (file)
index 0000000..63ab4c8
--- /dev/null
+++ b/6.2.186
@@ -0,0 +1,729 @@
+To: vim-dev@vim.org
+Subject: Patch 6.2.186
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 6.2.186 (after 6.2.185)
+Problem:    Documentation file eval.txt contains examples without indent.
+Solution:   Insert the indent.  Also fix other mistakes.
+Files:     runtime/doc/eval.txt
+
+
+*** ../vim-6.2.185/runtime/doc/eval.txt        Sun Jan 18 20:46:13 2004
+--- runtime/doc/eval.txt       Sun Jan 18 20:38:41 2004
+***************
+*** 50,55 ****
+--- 50,57 ----
+       String "foo"    -->     Number 0
+       String "0xf1"   -->     Number 241
+       String "0100"   -->     Number 64
++      String "-8"     -->     Number -8
++      String "+8"     -->     Number 0
+  
+  To force conversion from String to Number, add zero to it: >
+       :echo "0100" + 0
+***************
+*** 135,141 ****
+  
+  ".." indicates that the operations in this level can be concatenated.
+  Example: >
+! &nu || &list && &shell == "csh"
+  
+  All expressions within one level are parsed from left to right.
+  
+--- 137,143 ----
+  
+  ".." indicates that the operations in this level can be concatenated.
+  Example: >
+!      &nu || &list && &shell == "csh"
+  
+  All expressions within one level are parsed from left to right.
+  
+***************
+*** 149,167 ****
+  non-zero, the result is the value of the expression between the '?' and ':',
+  otherwise the result is the value of the expression after the ':'.
+  Example: >
+! :echo lnum == 1 ? "top" : lnum
+  
+  Since the first expression is an "expr2", it cannot contain another ?:.  The
+  other two expressions can, thus allow for recursive use of ?:.
+  Example: >
+! :echo lnum == 1 ? "top" : lnum == 1000 ? "last" : lnum
+  
+  To keep this readable, using |line-continuation| is suggested: >
+! :echo lnum == 1
+! :\   ? "top"
+! :\   : lnum == 1000
+! :\           ? "last"
+! :\           : lnum
+  
+  
+  expr2 and expr3                                              *expr2* *expr3*
+--- 151,169 ----
+  non-zero, the result is the value of the expression between the '?' and ':',
+  otherwise the result is the value of the expression after the ':'.
+  Example: >
+!      :echo lnum == 1 ? "top" : lnum
+  
+  Since the first expression is an "expr2", it cannot contain another ?:.  The
+  other two expressions can, thus allow for recursive use of ?:.
+  Example: >
+!      :echo lnum == 1 ? "top" : lnum == 1000 ? "last" : lnum
+  
+  To keep this readable, using |line-continuation| is suggested: >
+!      :echo lnum == 1
+!      :\      ? "top"
+!      :\      : lnum == 1000
+!      :\              ? "last"
+!      :\              : lnum
+  
+  
+  expr2 and expr3                                              *expr2* *expr3*
+***************
+*** 180,201 ****
+  
+  The operators can be concatenated, for example: >
+  
+! &nu || &list && &shell == "csh"
+  
+  Note that "&&" takes precedence over "||", so this has the meaning of: >
+  
+! &nu || (&list && &shell == "csh")
+  
+  Once the result is known, the expression "short-circuits", that is, further
+  arguments are not evaluated.  This is like what happens in C.  For example: >
+  
+! let a = 1
+! echo a || b
+  
+  This is valid even if there is no variable called "b" because "a" is non-zero,
+  so the result must be non-zero.  Similarly below: >
+  
+! echo exists("b") && b == "yes"
+  
+  This is valid whether "b" has been defined or not.  The second clause will
+  only be evaluated if "b" has been defined.
+--- 182,203 ----
+  
+  The operators can be concatenated, for example: >
+  
+!      &nu || &list && &shell == "csh"
+  
+  Note that "&&" takes precedence over "||", so this has the meaning of: >
+  
+!      &nu || (&list && &shell == "csh")
+  
+  Once the result is known, the expression "short-circuits", that is, further
+  arguments are not evaluated.  This is like what happens in C.  For example: >
+  
+!      let a = 1
+!      echo a || b
+  
+  This is valid even if there is no variable called "b" because "a" is non-zero,
+  so the result must be non-zero.  Similarly below: >
+  
+!      echo exists("b") && b == "yes"
+  
+  This is valid whether "b" has been defined or not.  The second clause will
+  only be evaluated if "b" has been defined.
+***************
+*** 299,311 ****
+  -----
+  expr9[expr1]         index in String         *expr-[]* *E111*
+  
+! This results in a String that contains the expr1'th single character from
+! expr9.  expr9 is used as a String, expr1 as a Number.
+  
+  Note that index zero gives the first character.  This is like it works in C.
+  Careful: text column numbers start with one!  Example, to get the character
+  under the cursor: >
+! :let c = getline(line("."))[col(".") - 1]
+  
+  If the length of the String is less than the index, the result is an empty
+  String.
+--- 301,314 ----
+  -----
+  expr9[expr1]         index in String         *expr-[]* *E111*
+  
+! This results in a String that contains the expr1'th single byte from expr9.
+! expr9 is used as a String, expr1 as a Number.  Note that this doesn't work for
+! multi-byte encodings.
+  
+  Note that index zero gives the first character.  This is like it works in C.
+  Careful: text column numbers start with one!  Example, to get the character
+  under the cursor: >
+!      :let c = getline(line("."))[col(".") - 1]
+  
+  If the length of the String is less than the index, the result is an empty
+  String.
+***************
+*** 380,387 ****
+  
+  The result is the contents of the named register, as a single string.
+  Newlines are inserted where required.  To get the contents of the unnamed
+! register use @@.  The '=' register can not be used here.  See |registers| for
+! an explanation of the available registers.
+  
+  
+  nesting                                                      *expr-nesting* *E110*
+--- 383,390 ----
+  
+  The result is the contents of the named register, as a single string.
+  Newlines are inserted where required.  To get the contents of the unnamed
+! register use @" or @@.  The '=' register can not be used here.  See
+! |registers| for an explanation of the available registers.
+  
+  
+  nesting                                                      *expr-nesting* *E110*
+***************
+*** 402,409 ****
+  the environment variables known inside the current Vim session.  If that
+  fails, a shell will be used to expand the variable.  This can be slow, but it
+  does expand all variables that the shell knows about.  Example: >
+! :echo $version
+! :echo expand("$version")
+  The first one probably doesn't echo anything, the second echoes the $version
+  variable (if your shell supports it).
+  
+--- 405,412 ----
+  the environment variables known inside the current Vim session.  If that
+  fails, a shell will be used to expand the variable.  This can be slow, but it
+  does expand all variables that the shell knows about.  Example: >
+!      :echo $version
+!      :echo expand("$version")
+  The first one probably doesn't echo anything, the second echoes the $version
+  variable (if your shell supports it).
+  
+***************
+*** 492,498 ****
+  - etc.
+  
+  script variables can be used to avoid conflicts with global variable names.
+! An example that works: >
+  
+       let s:counter = 0
+       function MyCounter()
+--- 495,501 ----
+  - etc.
+  
+  script variables can be used to avoid conflicts with global variable names.
+! Take this example:
+  
+       let s:counter = 0
+       function MyCounter()
+***************
+*** 501,515 ****
+       endfunction
+       command Tick call MyCounter()
+  
+! And an example that does NOT work: >
+  
+       let s:counter = 0
+       command Tick let s:counter = s:counter + 1 | echo s:counter
+  
+! When the ":Tick" command is executed outside the script, the s:counter
+! variable will not be available.  In the previous example, calling the
+! MyCounter() function sets the context for script variables to where the
+! function was defined, then s:counter can be used.
+  The script variables are also available when a function is defined inside a
+  function that is defined in a script.  Example: >
+  
+--- 504,522 ----
+       endfunction
+       command Tick call MyCounter()
+  
+! You can now invoke "Tick" from any script, and the "s:counter" variable in
+! that script will not be changed, only the "s:counter" in the script where
+! "Tick" was defined is used.
+! 
+! Another example that does the same: >
+  
+       let s:counter = 0
+       command Tick let s:counter = s:counter + 1 | echo s:counter
+  
+! When calling a function and invoking a user-defined command, the context for
+! script varialbes is set to the script where the function or command was
+! defined.
+! 
+  The script variables are also available when a function is defined inside a
+  function that is defined in a script.  Example: >
+  
+***************
+*** 619,625 ****
+       :catch /.*/
+       :  echo "caught" v:exception
+       :endtry
+! <            Output: "caught oops"
+  
+                                       *v:fname_in* *fname_in-variable*
+  v:fname_in   The name of the input file.  Only valid while evaluating:
+--- 626,632 ----
+       :catch /.*/
+       :  echo "caught" v:exception
+       :endtry
+! <            Output: "caught oops".
+  
+                                       *v:fname_in* *fname_in-variable*
+  v:fname_in   The name of the input file.  Only valid while evaluating:
+***************
+*** 806,812 ****
+  escape( {string}, {chars})   String  escape {chars} in {string} with '\'
+  eventhandler( )                      Number  TRUE if inside an event handler
+  executable( {expr})          Number  1 if executable {expr} exists
+! exists( {var})                       Number  TRUE if {var} exists
+  expand( {expr})                      String  expand special keywords in {expr}
+  filereadable( {file})                Number  TRUE if {file} is a readable file
+  filewritable( {file})                Number  TRUE if {file} is a writable file
+--- 813,819 ----
+  escape( {string}, {chars})   String  escape {chars} in {string} with '\'
+  eventhandler( )                      Number  TRUE if inside an event handler
+  executable( {expr})          Number  1 if executable {expr} exists
+! exists( {expr})                      Number  TRUE if {expr} exists
+  expand( {expr})                      String  expand special keywords in {expr}
+  filereadable( {file})                Number  TRUE if {file} is a readable file
+  filewritable( {file})                Number  TRUE if {file} is a writable file
+***************
+*** 982,988 ****
+               ":ls" command.
+               If {expr} is a Number, that buffer number's name is given.
+               Number zero is the alternate buffer for the current window.
+!              If {expr} is a String, it is used as a regexp pattern to match
+               with the buffer names.  This is always done like 'magic' is
+               set and 'cpoptions' is empty.  When there is more than one
+               match an empty string is returned.
+--- 989,995 ----
+               ":ls" command.
+               If {expr} is a Number, that buffer number's name is given.
+               Number zero is the alternate buffer for the current window.
+!              If {expr} is a String, it is used as a |file-pattern| to match
+               with the buffer names.  This is always done like 'magic' is
+               set and 'cpoptions' is empty.  When there is more than one
+               match an empty string is returned.
+***************
+*** 1025,1032 ****
+               window associated with buffer {expr}.  For the use of {expr},
+               see |bufname()| above.  If buffer {expr} doesn't exist or
+               there is no such window, -1 is returned.  Example: >
+       echo "A window containing buffer 1 is " . (bufwinnr(1))
+! <
+  byte2line({byte})                                    *byte2line()*
+               Return the line number that contains the character at byte
+               count {byte} in the current buffer.  This includes the
+--- 1032,1044 ----
+               window associated with buffer {expr}.  For the use of {expr},
+               see |bufname()| above.  If buffer {expr} doesn't exist or
+               there is no such window, -1 is returned.  Example: >
++ 
+       echo "A window containing buffer 1 is " . (bufwinnr(1))
+! 
+! <            The number can be used with |CTRL-W_w| and ":wincmd w"
+!              |:wincmd|.
+! 
+! 
+  byte2line({byte})                                    *byte2line()*
+               Return the line number that contains the character at byte
+               count {byte} in the current buffer.  This includes the
+***************
+*** 1061,1066 ****
+--- 1073,1079 ----
+                           number of characters in the cursor line plus one)
+                   'x      position of mark x (if the mark is not set, 0 is
+                           returned)
++              For the screen column position use |virtcol()|.
+               Note that only marks in the current file can be used.
+               Examples: >
+                       col(".")                column of cursor
+***************
+*** 1092,1098 ****
+               by '\n', e.g. >
+                       confirm("Save changes?", "&Yes\n&No\n&Cancel")
+  <            The letter after the '&' is the shortcut key for that choice.
+!              Thus you can type 'c' to select "Cancel".  The shorcut does
+               not need to be the first letter: >
+                       confirm("file has been modified", "&Save\nSave &All")
+  <            For the console, the first letter of each choice is used as
+--- 1105,1111 ----
+               by '\n', e.g. >
+                       confirm("Save changes?", "&Yes\n&No\n&Cancel")
+  <            The letter after the '&' is the shortcut key for that choice.
+!              Thus you can type 'c' to select "Cancel".  The shortcut does
+               not need to be the first letter: >
+                       confirm("file has been modified", "&Save\nSave &All")
+  <            For the console, the first letter of each choice is used as
+***************
+*** 1155,1161 ****
+    # pid    database name                     prepend path
+    0 27664  cscope.out                                /usr/local
+  <
+!              Invokation                                      Return Val ~
+               ----------                                      ---------- >
+               cscope_connection()                                     1
+               cscope_connection(1, "out")                             1
+--- 1168,1174 ----
+    # pid    database name                     prepend path
+    0 27664  cscope.out                                /usr/local
+  <
+!              Invocation                                      Return Val ~
+               ----------                                      ---------- >
+               cscope_connection()                                     1
+               cscope_connection(1, "out")                             1
+***************
+*** 1190,1196 ****
+               When editing another file, the counter is reset, thus this
+               really checks if the FileType event has been triggered for the
+               current buffer.  This allows an autocommand that starts
+!              editing another buffer to set 'filetype' and load a sytnax
+               file.
+  
+  escape({string}, {chars})                            *escape()*
+--- 1203,1209 ----
+               When editing another file, the counter is reset, thus this
+               really checks if the FileType event has been triggered for the
+               current buffer.  This allows an autocommand that starts
+!              editing another buffer to set 'filetype' and load a syntax
+               file.
+  
+  escape({string}, {chars})                            *escape()*
+***************
+*** 1215,1223 ****
+                       -1      not implemented on this system
+  
+                                                       *exists()*
+! exists({expr})       The result is a Number, which is non-zero if {var} is defined,
+!              zero otherwise.  The {expr} argument is a string, which
+!              contains one of these:
+                       &option-name    Vim option (only checks if it exists,
+                                       not if it really works)
+                       +option-name    Vim option that works.
+--- 1228,1236 ----
+                       -1      not implemented on this system
+  
+                                                       *exists()*
+! exists({expr})       The result is a Number, which is non-zero if {expr} is
+!              defined, zero otherwise.  The {expr} argument is a string,
+!              which contains one of these:
+                       &option-name    Vim option (only checks if it exists,
+                                       not if it really works)
+                       +option-name    Vim option that works.
+***************
+*** 1230,1238 ****
+                       varname         internal variable (see
+                                       |internal-variables|).  Does not work
+                                       for |curly-braces-names|.
+!                      :cmdname        Ex command, both built-in and user
+!                                      commands |:command|
+!                                      returns:
+                                       1  for match with start of a command
+                                       2  full match with a command
+                                       3  matches several user commands
+--- 1243,1251 ----
+                       varname         internal variable (see
+                                       |internal-variables|).  Does not work
+                                       for |curly-braces-names|.
+!                      :cmdname        Ex command: built-in command, user
+!                                      command or command modifier |:command|.
+!                                      Returns:
+                                       1  for match with start of a command
+                                       2  full match with a command
+                                       3  matches several user commands
+***************
+*** 1242,1247 ****
+--- 1255,1261 ----
+                                       literally and compared to the
+                                       autocommand patterns character by
+                                       character)
++              For checking for a supported feature use |has()|.
+  
+               Examples: >
+                       exists("&shortname")
+***************
+*** 1327,1333 ****
+               variables that are only known in a shell.  But this can be
+               slow, because a shell must be started.  See |expr-env-expand|.
+               The expanded variable is still handled like a list of file
+!              names.
+  
+               See |glob()| for finding existing files.  See |system()| for
+               getting the raw output of an external command.
+--- 1341,1349 ----
+               variables that are only known in a shell.  But this can be
+               slow, because a shell must be started.  See |expr-env-expand|.
+               The expanded variable is still handled like a list of file
+!              names.  When an environment variable cannot be expanded, it is
+!              left unchanged.  Thus ":echo expand('$FOOBAR')" results in
+!              "$FOOBAR".
+  
+               See |glob()| for finding existing files.  See |system()| for
+               getting the raw output of an external command.
+***************
+*** 1374,1380 ****
+               returned.  It doesn't matter if the folds are open or closed.
+               When used while updating folds (from 'foldexpr') -1 is
+               returned for lines where folds are still to be updated and the
+!              foldlevel is unknown.
+  
+                                                       *foldtext()*
+  foldtext()   Returns a String, to be displayed for a closed fold.  This is
+--- 1390,1397 ----
+               returned.  It doesn't matter if the folds are open or closed.
+               When used while updating folds (from 'foldexpr') -1 is
+               returned for lines where folds are still to be updated and the
+!              foldlevel is unknown.  As a special case the level of the
+!              previous line is usually available.
+  
+                                                       *foldtext()*
+  foldtext()   Returns a String, to be displayed for a closed fold.  This is
+***************
+*** 1567,1572 ****
+--- 1584,1590 ----
+  has({feature})       The result is a Number, which is 1 if the feature {feature} is
+               supported, zero otherwise.  The {feature} argument is a
+               string.  See |feature-list| below.
++              Also see |exists()|.
+  
+  hasmapto({what} [, {mode}])                          *hasmapto()*
+               The result is a Number, which is 1 if there is a mapping that
+***************
+*** 1833,1839 ****
+               without the ".DLL" suffix.  A full path is only required if
+               the DLL is not in the usual places.
+               For Unix: When compiling your own plugins, remember that the
+!              object code must be compiled as position-independant ('PIC').
+               {only in Win32 on some Unix versions, when the |+libcall|
+               feature is present}
+               Examples: >
+--- 1851,1857 ----
+               without the ".DLL" suffix.  A full path is only required if
+               the DLL is not in the usual places.
+               For Unix: When compiling your own plugins, remember that the
+!              object code must be compiled as position-independent ('PIC').
+               {only in Win32 on some Unix versions, when the |+libcall|
+               feature is present}
+               Examples: >
+***************
+*** 2016,2021 ****
+--- 2034,2043 ----
+                       nr2char(32)             returns " "
+  <            The current 'encoding' is used.  Example for "utf-8": >
+                       nr2char(300)            returns I with bow character
++ <            Note that a NUL character in the file is specified with
++              nr2char(10), because NULs are represented with newline
++              characters.  nr2char(0) is a real NUL and terminates the
++              string, thus isn't very useful.
+  
+  prevnonblank({lnum})                                 *prevnonblank()*
+               Return the line number of the first line at or above {lnum}
+***************
+*** 2400,2406 ****
+               Example: >
+                       :s/\d\+/\=submatch(0) + 1/
+  <            This finds the first number in the line and adds one to it.
+!              Line breaks are included as a newline character.
+  
+  substitute({expr}, {pat}, {sub}, {flags})            *substitute()*
+               The result is a String, which is a copy of {expr}, in which
+--- 2422,2428 ----
+               Example: >
+                       :s/\d\+/\=submatch(0) + 1/
+  <            This finds the first number in the line and adds one to it.
+!              A line break is included as a newline character.
+  
+  substitute({expr}, {pat}, {sub}, {flags})            *substitute()*
+               The result is a String, which is a copy of {expr}, in which
+***************
+*** 2534,2539 ****
+--- 2556,2562 ----
+               position, the returned Number will be the column at the end of
+               the <Tab>.  For example, for a <Tab> in column 1, with 'ts'
+               set to 8, it returns 8.
++              For the byte position use |col()|.
+               When Virtual editing is active in the current mode, a position
+               beyond the end of the line can be returned. |'virtualedit'|
+               The accepted positions are:
+***************
+*** 2906,2912 ****
+    :  echohl None
+    :  let idx = 1
+    :  while idx <= a:0
+!   :    exe "echo a:" . idx
+    :    let idx = idx + 1
+    :  endwhile
+    :  return idx
+--- 2929,2935 ----
+    :  echohl None
+    :  let idx = 1
+    :  while idx <= a:0
+!   :    echo a:{idx} . ' '
+    :    let idx = idx + 1
+    :  endwhile
+    :  return idx
+***************
+*** 2921,2927 ****
+    :  if a:n2 == 0
+    :    return "fail"
+    :  endif
+!   :  exe "let g:" . a:divname . " = ". a:n1 / a:n2
+    :  return "ok"
+    :endfunction
+  
+--- 2944,2950 ----
+    :  if a:n2 == 0
+    :    return "fail"
+    :  endif
+!   :  let g:{a:divname} = a:n1 / a:n2
+    :  return "ok"
+    :endfunction
+  
+***************
+*** 2986,2992 ****
+  
+                                                       *autoload-functions*
+  When using many or large functions, it's possible to automatically define them
+! only when they are used.  Example: >
+  
+       :au FuncUndefined BufNet* source ~/vim/bufnetfuncs.vim
+  
+--- 3009,3016 ----
+  
+                                                       *autoload-functions*
+  When using many or large functions, it's possible to automatically define them
+! only when they are used.  Use the FuncUndefined autocommand event with a
+! pattern that matches the function(s) to be defined.  Example: >
+  
+       :au FuncUndefined BufNet* source ~/vim/bufnetfuncs.vim
+  
+***************
+*** 3248,3255 ****
+  <
+  
+                                                       *:ec* *:echo*
+! :ec[ho] {expr1} ..   Echoes each {expr1}, with a space in between and a
+!                      terminating <EOL>.  Also see |:comment|.
+                       Use "\n" to start a new line.  Use "\r" to move the
+                       cursor to the first column.
+                       Uses the highlighting set by the |:echohl| command.
+--- 3272,3280 ----
+  <
+  
+                                                       *:ec* *:echo*
+! :ec[ho] {expr1} ..   Echoes each {expr1}, with a space in between.  The
+!                      first {expr1} starts on a new line.
+!                      Also see |:comment|.
+                       Use "\n" to start a new line.  Use "\r" to move the
+                       cursor to the first column.
+                       Uses the highlighting set by the |:echohl| command.
+***************
+*** 3372,3378 ****
+  Exceptions can be caught or can cause cleanup code to be executed.  You can
+  use a try conditional to specify catch clauses (that catch exceptions) and/or
+  a finally clause (to be executed for cleanup).
+!     A try conditional begins with a |:try| command and ends at the matching
+  |:endtry| command.  In between, you can use a |:catch| command to start
+  a catch clause, or a |:finally| command to start a finally clause.  There may
+  be none or multiple catch clauses, but there is at most one finally clause,
+--- 3397,3403 ----
+  Exceptions can be caught or can cause cleanup code to be executed.  You can
+  use a try conditional to specify catch clauses (that catch exceptions) and/or
+  a finally clause (to be executed for cleanup).
+!    A try conditional begins with a |:try| command and ends at the matching
+  |:endtry| command.  In between, you can use a |:catch| command to start
+  a catch clause, or a |:finally| command to start a finally clause.  There may
+  be none or multiple catch clauses, but there is at most one finally clause,
+***************
+*** 3475,3481 ****
+  For examples see |throw-catch|.
+  
+  
+! EXAMINIG EXCEPTION HANDLING CODE                     *except-examine*
+  
+  Exception handling code can get tricky.  If you are in doubt what happens, set
+  'verbose' to 13 or use the ":13verbose" command modifier when sourcing your
+--- 3500,3506 ----
+  For examples see |throw-catch|.
+  
+  
+! EXAMINING EXCEPTION HANDLING CODE                    *except-examine*
+  
+  Exception handling code can get tricky.  If you are in doubt what happens, set
+  'verbose' to 13 or use the ":13verbose" command modifier when sourcing your
+***************
+*** 3698,3706 ****
+       :  echo v:exception
+       :endtry
+  
+! This code displays >
+  
+!      Vim(echoerr):Vim:E492: Not an editor command:   asdf
+  
+  
+  CLEANUP CODE                                         *try-finally*
+--- 3723,3731 ----
+       :  echo v:exception
+       :endtry
+  
+! This code displays
+  
+!      Vim(echoerr):Vim:E492: Not an editor command:   asdf ~
+  
+  
+  CLEANUP CODE                                         *try-finally*
+***************
+*** 4244,4250 ****
+  failed, if known.  See |catch-errors|.
+  
+  
+! PECULARITIES
+                                                       *except-compat*
+  The exception handling concept requires that the command sequence causing the
+  exception is aborted immediately and control is transferred to finally clauses
+--- 4269,4275 ----
+  failed, if known.  See |catch-errors|.
+  
+  
+! PECULIARITIES
+                                                       *except-compat*
+  The exception handling concept requires that the command sequence causing the
+  exception is aborted immediately and control is transferred to finally clauses
+***************
+*** 4489,4495 ****
+       :else
+       :  echo "You will _never_ see this message"
+       :endif
+! <
+  ==============================================================================
+  11. The sandbox                                      *eval-sandbox* *sandbox* *E48*
+  
+--- 4514,4520 ----
+       :else
+       :  echo "You will _never_ see this message"
+       :endif
+! 
+  ==============================================================================
+  11. The sandbox                                      *eval-sandbox* *sandbox* *E48*
+  
+*** ../vim-6.2.185/src/version.c       Sun Jan 18 20:46:13 2004
+--- src/version.c      Sun Jan 18 20:47:55 2004
+***************
+*** 639,640 ****
+--- 639,642 ----
+  {   /* Add new patch number below this line */
++ /**/
++     186,
+  /**/
+
+-- 
+ARTHUR:  Well, I can't just call you `Man'.
+DENNIS:  Well, you could say `Dennis'.
+ARTHUR:  Well, I didn't know you were called `Dennis.'
+DENNIS:  Well, you didn't bother to find out, did you?
+                                  The Quest for the Holy Grail (Monty Python)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        Sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\              Project leader for A-A-P -- http://www.A-A-P.org        ///
+ \\\  Help AIDS victims, buy here: http://ICCF-Holland.org/click1.html  ///
diff --git a/6.2.187 b/6.2.187
new file mode 100644 (file)
index 0000000..a125489
--- /dev/null
+++ b/6.2.187
@@ -0,0 +1,548 @@
+To: vim-dev@vim.org
+Subject: Patch 6.2.187
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 6.2.187
+Problem:    Using Insure++ reveals a number of bugs.  (Dominuque Pelle)
+Solution:   Initialize variables where needed.  Free allocated memory to avoid
+           leaks.  Fix comparing tags to avoid reading past allocated memory.
+Files:     src/buffer.c, src/diff.c, src/fileio.c, src/mark.c, src/misc1.c,
+           src/misc2.c, src/ops.c, src/option.c, src/tag.c, src/ui.c
+
+
+*** ../vim-6.2.186/src/buffer.c        Sun Nov  9 20:35:08 2003
+--- src/buffer.c       Thu Jan 15 22:10:02 2004
+***************
+*** 4085,4090 ****
+--- 4085,4091 ----
+  #ifdef FEAT_AUTOCMD
+      --autocmd_no_leave;
+  #endif
++     vim_free(opened);
+  }
+  
+  # if defined(FEAT_LISTCMDS) || defined(PROTO)
+*** ../vim-6.2.186/src/diff.c  Sun Oct 27 19:28:04 2002
+--- src/diff.c Fri Jan 16 11:52:11 2004
+***************
+*** 952,958 ****
+       curwin = wp;
+       curbuf = curwin->w_buffer;
+       set_string_option_direct((char_u *)"fdm", -1, (char_u *)"diff",
+!                                                                 OPT_LOCAL);
+       curwin = old_curwin;
+       curbuf = curwin->w_buffer;
+       wp->w_p_fdc = 2;
+--- 952,958 ----
+       curwin = wp;
+       curbuf = curwin->w_buffer;
+       set_string_option_direct((char_u *)"fdm", -1, (char_u *)"diff",
+!                                                        OPT_LOCAL|OPT_FREE);
+       curwin = old_curwin;
+       curbuf = curwin->w_buffer;
+       wp->w_p_fdc = 2;
+*** ../vim-6.2.186/src/fileio.c        Fri Jan  9 14:33:14 2004
+--- src/fileio.c       Thu Jan 15 22:07:40 2004
+***************
+*** 3233,3239 ****
+  
+  #if defined(UNIX) && !defined(ARCHIE)
+      /* When using ":w!" and the file was read-only: make it writable */
+!     if (forceit && st_old.st_uid == getuid() && perm >= 0 && !(perm & 0200)
+                                    && vim_strchr(p_cpo, CPO_FWRITE) == NULL)
+      {
+       perm |= 0200;
+--- 3262,3268 ----
+  
+  #if defined(UNIX) && !defined(ARCHIE)
+      /* When using ":w!" and the file was read-only: make it writable */
+!     if (forceit && perm >= 0 && !(perm & 0200) && st_old.st_uid == getuid()
+                                    && vim_strchr(p_cpo, CPO_FWRITE) == NULL)
+      {
+       perm |= 0200;
+*** ../vim-6.2.186/src/mark.c  Sat Sep 27 19:36:47 2003
+--- src/mark.c Fri Jan 16 11:56:14 2004
+***************
+*** 1140,1151 ****
+       name = buflist_nr2name(fm->fmark.fnum, TRUE, FALSE);
+      else
+       name = fm->fname;               /* use name from .viminfo */
+!     if (name == NULL || *name == NUL)
+!      return;
+! 
+!     fprintf(fp, "%c%c  %ld  %ld  ", c1, c2, (long)fm->fmark.mark.lnum,
+                                                   (long)fm->fmark.mark.col);
+!     viminfo_writestring(fp, name);
+      if (fm->fmark.fnum != 0)
+       vim_free(name);
+  }
+--- 1145,1157 ----
+       name = buflist_nr2name(fm->fmark.fnum, TRUE, FALSE);
+      else
+       name = fm->fname;               /* use name from .viminfo */
+!     if (name != NULL && *name != NUL)
+!     {
+!      fprintf(fp, "%c%c  %ld  %ld  ", c1, c2, (long)fm->fmark.mark.lnum,
+                                                   (long)fm->fmark.mark.col);
+!      viminfo_writestring(fp, name);
+!     }
+! 
+      if (fm->fmark.fnum != 0)
+       vim_free(name);
+  }
+*** ../vim-6.2.186/src/misc1.c Sun Jan 18 20:15:02 2004
+--- src/misc1.c        Sun Jan 18 16:07:34 2004
+***************
+*** 1368,1373 ****
+--- 1368,1374 ----
+       curwin->w_cursor.coladd = 0;
+  #endif
+       ins_bytes(p_extra);     /* will call changed_bytes() */
++      vim_free(p_extra);
+       next_line = NULL;
+      }
+  #endif
+*** ../vim-6.2.186/src/misc2.c Sat Sep 27 19:36:47 2003
+--- src/misc2.c        Fri Jan 16 15:19:08 2004
+***************
+*** 2129,2135 ****
+      char_u   *dst;
+      int              keycode; /* prefer key code, e.g. K_DEL instead of DEL */
+  {
+!     int              modifiers;
+      int              key;
+      int              dlen = 0;
+  
+--- 2129,2135 ----
+      char_u   *dst;
+      int              keycode; /* prefer key code, e.g. K_DEL instead of DEL */
+  {
+!     int              modifiers = 0;
+      int              key;
+      int              dlen = 0;
+  
+***************
+*** 4368,4373 ****
+--- 4368,4376 ----
+      while (vl != NULL)
+      {
+       vp = vl->ffv_next;
++ #ifdef FEAT_PATH_EXTRA
++      vim_free(vl->ffv_wc_path);
++ #endif
+       vim_free(vl);
+       vl = vp;
+      }
+*** ../vim-6.2.186/src/ops.c   Sun Oct 12 16:56:43 2003
+--- src/ops.c  Thu Jan 15 22:30:37 2004
+***************
+*** 5610,5619 ****
+       if (s == NULL)
+           break;
+       if (extra)
+-      {
+           mch_memmove(s, y_ptr->y_array[lnum], (size_t)extra);
+           vim_free(y_ptr->y_array[lnum]);
+-      }
+       if (i)
+           mch_memmove(s + extra, str + start, (size_t)i);
+       extra += i;
+--- 5610,5618 ----
+       if (s == NULL)
+           break;
+       if (extra)
+           mch_memmove(s, y_ptr->y_array[lnum], (size_t)extra);
++      if (append)
+           vim_free(y_ptr->y_array[lnum]);
+       if (i)
+           mch_memmove(s + extra, str + start, (size_t)i);
+       extra += i;
+*** ../vim-6.2.186/src/option.c        Sun Oct 26 20:19:23 2003
+--- src/option.c       Thu Jan 15 22:03:06 2004
+***************
+*** 7008,7013 ****
+--- 7008,7014 ----
+      else
+      {
+       --arg;                      /* put arg at the '<' */
++      modifiers = 0;
+       key = find_special_key(&arg, &modifiers, TRUE);
+       if (modifiers)              /* can't handle modifiers here */
+           key = 0;
+*** ../vim-6.2.186/src/tag.c   Mon Dec 29 19:48:35 2003
+--- src/tag.c  Sun Jan 18 13:05:42 2004
+***************
+*** 1066,1071 ****
+--- 1066,1076 ----
+      int              is_etag;                /* current file is emaces style */
+  #endif
+  
++     struct match_found
++     {
++      int     len;            /* nr of chars of match[] to be compared */
++      char_u  match[1];       /* actually longer */
++     } *mfp, *mfp2;
+      garray_T ga_match[MT_COUNT];
+      int              match_count = 0;                /* number of matches found */
+      char_u   **matches;
+***************
+*** 1110,1116 ****
+      ebuf = alloc(LSIZE);
+  #endif
+      for (mtt = 0; mtt < MT_COUNT; ++mtt)
+!      ga_init2(&ga_match[mtt], (int)sizeof(char_u *), 100);
+  
+      /* check for out of memory situation */
+      if (lbuf == NULL || tag_fname == NULL
+--- 1115,1121 ----
+      ebuf = alloc(LSIZE);
+  #endif
+      for (mtt = 0; mtt < MT_COUNT; ++mtt)
+!      ga_init2(&ga_match[mtt], (int)sizeof(struct match_found *), 100);
+  
+      /* check for out of memory situation */
+      if (lbuf == NULL || tag_fname == NULL
+***************
+*** 1726,1738 ****
+               cc = *tagp.tagname_end;
+               *tagp.tagname_end = NUL;
+               match = vim_regexec(&regmatch, tagp.tagname, (colnr_T)0);
+!              matchoff = (int)(regmatch.startp[0] - tagp.tagname);
+!              if (match && regmatch.rm_ic)
+               {
+!                  regmatch.rm_ic = FALSE;
+!                  match_no_ic = vim_regexec(&regmatch, tagp.tagname,
+                                                                 (colnr_T)0);
+!                  regmatch.rm_ic = TRUE;
+               }
+               *tagp.tagname_end = cc;
+               match_re = TRUE;
+--- 1731,1746 ----
+               cc = *tagp.tagname_end;
+               *tagp.tagname_end = NUL;
+               match = vim_regexec(&regmatch, tagp.tagname, (colnr_T)0);
+!              if (match)
+               {
+!                  matchoff = (int)(regmatch.startp[0] - tagp.tagname);
+!                  if (regmatch.rm_ic)
+!                  {
+!                      regmatch.rm_ic = FALSE;
+!                      match_no_ic = vim_regexec(&regmatch, tagp.tagname,
+                                                                 (colnr_T)0);
+!                      regmatch.rm_ic = TRUE;
+!                  }
+               }
+               *tagp.tagname_end = cc;
+               match_re = TRUE;
+***************
+*** 1793,1798 ****
+--- 1801,1811 ----
+                       mtt += MT_RE_OFF;
+               }
+  
++              /*
++               * Add the found match in ga_match[mtt], avoiding duplicates.
++               * Store the info we need later, which depends on the kind of
++               * tags we are dealing with.
++               */
+               if (ga_grow(&ga_match[mtt], 1) == OK)
+               {
+                   if (help_only)
+***************
+*** 1803,1846 ****
+                        */
+                       *tagp.tagname_end = NUL;
+                       len = (int)(tagp.tagname_end - tagp.tagname);
+!                      p = vim_strnsave(tagp.tagname, len + 10);
+!                      if (p != NULL)
+                           sprintf((char *)p + len + 1, "%06d",
+                                   help_heuristic(tagp.tagname,
+                                   match_re ? matchoff : 0, !match_no_ic));
+                       *tagp.tagname_end = TAB;
+-                      ++len;  /* compare one more char */
+                   }
+                   else if (name_only)
+                   {
+-                      p = NULL;
+-                      len = 0;
+                       if (get_it_again)
+                       {
+                           char_u *temp_end = tagp.command;
+  
+!                          if ((*temp_end) == '/')
+!                              while ( *temp_end && (*temp_end != '\r')
+!                                      && (*temp_end != '\n')
+!                                      && (*temp_end != '$'))
+                                   temp_end++;
+  
+!                          if ((tagp.command + 2) < temp_end)
+                           {
+                               len = (int)(temp_end - tagp.command - 2);
+!                              p = vim_strnsave(tagp.command + 2, len);
+                           }
+                           get_it_again = FALSE;
+                       }
+                       else
+                       {
+                           len = (int)(tagp.tagname_end - tagp.tagname);
+!                          p = vim_strnsave(tagp.tagname, len);
+!                          /* if wanted, re-read line to get long form too*/
+                           if (State & INSERT)
+                               get_it_again = p_sft;
+                       }
+-                      ++len;  /* compare one more char */
+                   }
+                   else
+                   {
+--- 1816,1880 ----
+                        */
+                       *tagp.tagname_end = NUL;
+                       len = (int)(tagp.tagname_end - tagp.tagname);
+!                      mfp = (struct match_found *)
+!                               alloc(sizeof(struct match_found) + len + 10);
+!                      if (mfp != NULL)
+!                      {
+!                          mfp->len = len + 1; /* also compare the NUL */
+!                          p = mfp->match;
+!                          STRCPY(p, tagp.tagname);
+                           sprintf((char *)p + len + 1, "%06d",
+                                   help_heuristic(tagp.tagname,
+                                   match_re ? matchoff : 0, !match_no_ic));
++                      }
+                       *tagp.tagname_end = TAB;
+                   }
+                   else if (name_only)
+                   {
+                       if (get_it_again)
+                       {
+                           char_u *temp_end = tagp.command;
+  
+!                          if (*temp_end == '/')
+!                              while (*temp_end && *temp_end != '\r'
+!                                      && *temp_end != '\n'
+!                                      && *temp_end != '$')
+                                   temp_end++;
+  
+!                          if (tagp.command + 2 < temp_end)
+                           {
+                               len = (int)(temp_end - tagp.command - 2);
+!                              mfp = (struct match_found *)
+!                                    alloc(sizeof(struct match_found) + len);
+!                              if (mfp != NULL)
+!                              {
+!                                  mfp->len = len + 1; /* include the NUL */
+!                                  p = mfp->match;
+!                                  STRNCPY(p, tagp.command + 2, len);
+!                                  p[len] = NUL;
+!                              }
+                           }
++                          else
++                              mfp = NULL;
+                           get_it_again = FALSE;
+                       }
+                       else
+                       {
+                           len = (int)(tagp.tagname_end - tagp.tagname);
+!                          mfp = (struct match_found *)
+!                                    alloc(sizeof(struct match_found) + len);
+!                          if (mfp != NULL)
+!                          {
+!                              mfp->len = len + 1; /* include the NUL */
+!                              p = mfp->match;
+!                              STRNCPY(p, tagp.tagname, len);
+!                              p[len] = NUL;
+!                          }
+! 
+!                          /* if wanted, re-read line to get long form too */
+                           if (State & INSERT)
+                               get_it_again = p_sft;
+                       }
+                   }
+                   else
+                   {
+***************
+*** 1856,1864 ****
+                       else
+                           ++len;
+  #endif
+!                      p = alloc(len);
+!                      if (p != NULL)
+                       {
+                           p[0] = mtt;
+                           STRCPY(p + 1, tag_fname);
+  #ifdef BACKSLASH_IN_FILENAME
+--- 1890,1901 ----
+                       else
+                           ++len;
+  #endif
+!                      mfp = (struct match_found *)
+!                                    alloc(sizeof(struct match_found) + len);
+!                      if (mfp != NULL)
+                       {
++                          mfp->len = len;
++                          p = mfp->match;
+                           p[0] = mtt;
+                           STRCPY(p + 1, tag_fname);
+  #ifdef BACKSLASH_IN_FILENAME
+***************
+*** 1880,1886 ****
+                       }
+                   }
+  
+!                  if (p != NULL)
+                   {
+                       /*
+                        * Don't add identical matches.
+--- 1917,1923 ----
+                       }
+                   }
+  
+!                  if (mfp != NULL)
+                   {
+                       /*
+                        * Don't add identical matches.
+***************
+*** 1895,1915 ****
+  #endif
+                         for (i = ga_match[mtt].ga_len; --i >= 0 && !got_int; )
+                         {
+!                          if (vim_memcmp(
+!                                    ((char_u **)(ga_match[mtt].ga_data))[i],
+!                                                       p, (size_t)len) == 0)
+!                              break;
+!                          line_breakcheck();
+                         }
+                       if (i < 0)
+                       {
+!                          ((char_u **)(ga_match[mtt].ga_data))
+!                                               [ga_match[mtt].ga_len++] = p;
+                           ga_match[mtt].ga_room--;
+                           ++match_count;
+                       }
+                       else
+!                          vim_free(p);
+                   }
+               }
+               else    /* Out of memory! Just forget about the rest. */
+--- 1932,1954 ----
+  #endif
+                         for (i = ga_match[mtt].ga_len; --i >= 0 && !got_int; )
+                         {
+!                            mfp2 = ((struct match_found **)
+!                                                (ga_match[mtt].ga_data))[i];
+!                            if (mfp2->len == mfp->len
+!                                    && vim_memcmp(mfp2->match, mfp->match,
+!                                                     (size_t)mfp->len) == 0)
+!                                break;
+!                            line_breakcheck();
+                         }
+                       if (i < 0)
+                       {
+!                          ((struct match_found **)(ga_match[mtt].ga_data))
+!                                             [ga_match[mtt].ga_len++] = mfp;
+                           ga_match[mtt].ga_room--;
+                           ++match_count;
+                       }
+                       else
+!                          vim_free(mfp);
+                   }
+               }
+               else    /* Out of memory! Just forget about the rest. */
+***************
+*** 2021,2031 ****
+      {
+       for (i = 0; i < ga_match[mtt].ga_len; ++i)
+       {
+!          p = ((char_u **)(ga_match[mtt].ga_data))[i];
+           if (matches == NULL)
+!              vim_free(p);
+           else
+!              matches[match_count++] = p;
+       }
+       ga_clear(&ga_match[mtt]);
+      }
+--- 2060,2077 ----
+      {
+       for (i = 0; i < ga_match[mtt].ga_len; ++i)
+       {
+!          mfp = ((struct match_found **)(ga_match[mtt].ga_data))[i];
+           if (matches == NULL)
+!              vim_free(mfp);
+           else
+!          {
+!              /* To avoid allocating memory again we turn the struct
+!               * match_found into a string.  For help the priority was not
+!               * included in the length. */
+!              mch_memmove(mfp, mfp->match,
+!                                 (size_t)(mfp->len + (help_only ? 9 : 0)));
+!              matches[match_count++] = (char_u *)mfp;
+!          }
+       }
+       ga_clear(&ga_match[mtt]);
+      }
+*** ../vim-6.2.186/src/ui.c    Sat Sep 27 19:36:47 2003
+--- src/ui.c   Thu Jan 15 22:16:00 2004
+***************
+*** 1539,1544 ****
+--- 1539,1545 ----
+  
+  /*
+   * Restore the input buffer with a pointer returned from get_input_buf().
++  * The allocated memory is freed, this only works once!
+   */
+      void
+  set_input_buf(p)
+***************
+*** 1546,1555 ****
+  {
+      garray_T *gap = (garray_T *)p;
+  
+!     if (gap != NULL && gap->ga_data != NULL)
+      {
+!      mch_memmove(inbuf, gap->ga_data, gap->ga_len);
+!      inbufcount = gap->ga_len;
+      }
+  }
+  #endif
+--- 1547,1561 ----
+  {
+      garray_T *gap = (garray_T *)p;
+  
+!     if (gap != NULL)
+      {
+!      if (gap->ga_data != NULL)
+!      {
+!          mch_memmove(inbuf, gap->ga_data, gap->ga_len);
+!          inbufcount = gap->ga_len;
+!          vim_free(gap->ga_data);
+!      }
+!      vim_free(gap);
+      }
+  }
+  #endif
+*** ../vim-6.2.186/src/version.c       Sun Jan 18 20:50:42 2004
+--- src/version.c      Sun Jan 18 20:52:09 2004
+***************
+*** 639,640 ****
+--- 639,642 ----
+  {   /* Add new patch number below this line */
++ /**/
++     187,
+  /**/
+
+-- 
+ARTHUR:  I did say sorry about the `old woman,' but from the behind you
+         looked--
+DENNIS:  What I object to is you automatically treat me like an inferior!
+ARTHUR:  Well, I AM king...
+                                  The Quest for the Holy Grail (Monty Python)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        Sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\              Project leader for A-A-P -- http://www.A-A-P.org        ///
+ \\\  Help AIDS victims, buy here: http://ICCF-Holland.org/click1.html  ///
diff --git a/6.2.188 b/6.2.188
new file mode 100644 (file)
index 0000000..8642bf4
--- /dev/null
+++ b/6.2.188
@@ -0,0 +1,48 @@
+To: vim-dev@vim.org
+Subject: Patch 6.2.188 (extra)
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 6.2.188 (extra)
+Problem:    MS-Windows: Multi-byte characters in a filename cause trouble for
+           the window title.
+Solution:   Return when the wide function for setting the title did its work.
+Files:     src/gui_w48.c
+
+
+*** ../vim-6.2.187/src/gui_w48.c       Sun Oct 26 21:00:14 2003
+--- src/gui_w48.c      Tue Jan 13 11:50:17 2004
+***************
+*** 2633,2638 ****
+--- 2633,2639 ----
+       {
+           SetWindowTextW(s_hwnd, wbuf);
+           vim_free(wbuf);
++          return;
+       }
+      }
+  #endif
+*** ../vim-6.2.187/src/version.c       Sun Jan 18 20:58:01 2004
+--- src/version.c      Sun Jan 18 21:00:23 2004
+***************
+*** 639,640 ****
+--- 639,642 ----
+  {   /* Add new patch number below this line */
++ /**/
++     188,
+  /**/
+
+-- 
+A mathematician is a device for turning coffee into theorems.
+                                       Paul Erdos
+A computer programmer is a device for turning coffee into bugs.
+                                       Bram Moolenaar
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        Sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\              Project leader for A-A-P -- http://www.A-A-P.org        ///
+ \\\  Help AIDS victims, buy here: http://ICCF-Holland.org/click1.html  ///
diff --git a/6.2.189 b/6.2.189
new file mode 100644 (file)
index 0000000..858a14e
--- /dev/null
+++ b/6.2.189
@@ -0,0 +1,62 @@
+To: vim-dev@vim.org
+Subject: Patch 6.2.189
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 6.2.189
+Problem:    When setting 'viminfo' after editing a new buffer its marks are
+           not stored. (Keith Roberts)
+Solution:   Set the "b_marks_read" flag when skipping to read marks from the
+           viminfo file.
+Files:     src/fileio.c
+
+
+*** ../vim-6.2.188/src/fileio.c        Sun Jan 18 20:58:01 2004
+--- src/fileio.c       Thu Jan 15 22:07:40 2004
+***************
+*** 2251,2260 ****
+  check_marks_read()
+  {
+      if (!curbuf->b_marks_read && get_viminfo_parameter('\'') > 0)
+-     {
+       read_viminfo(NULL, FALSE, TRUE, FALSE);
+!      curbuf->b_marks_read = TRUE;
+!     }
+  }
+  #endif
+  
+--- 2251,2261 ----
+  check_marks_read()
+  {
+      if (!curbuf->b_marks_read && get_viminfo_parameter('\'') > 0)
+       read_viminfo(NULL, FALSE, TRUE, FALSE);
+! 
+!     /* Always set b_marks_read; needed when 'viminfo' is changed to include
+!      * the ' parameter after opening a buffer. */
+!     curbuf->b_marks_read = TRUE;
+  }
+  #endif
+  
+*** ../vim-6.2.188/src/version.c       Sun Jan 18 21:01:53 2004
+--- src/version.c      Sun Jan 18 21:04:06 2004
+***************
+*** 639,640 ****
+--- 639,642 ----
+  {   /* Add new patch number below this line */
++ /**/
++     189,
+  /**/
+
+-- 
+A computer programmer is a device for turning requirements into
+undocumented features.  It runs on cola, pizza and Dilbert cartoons.
+                                       Bram Moolenaar
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        Sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\              Project leader for A-A-P -- http://www.A-A-P.org        ///
+ \\\  Help AIDS victims, buy here: http://ICCF-Holland.org/click1.html  ///
diff --git a/6.2.190 b/6.2.190
new file mode 100644 (file)
index 0000000..2925b00
--- /dev/null
+++ b/6.2.190
@@ -0,0 +1,477 @@
+To: vim-dev@vim.org
+Subject: Patch 6.2.190
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 6.2.190
+Problem:    When editing a compressed files, marks are lost.
+Solution:   Add the ":lockmarks" modifier and use it in the gzip plugin.
+           Make exists() also check for command modifiers, so that the
+           existence of ":lockmarks" can be checked for.
+           Also add ":keepmarks" to avoid that marks are deleted when
+           filtering text.
+           When deleting lines put marks 'A - 'Z and '0 - '9 at the first
+           deleted line instead of clearing the mark.  They were kept in the
+           viminfo file anyway.
+           Avoid that the gzip plugin puts deleted text in registers.
+Files:     runtime/doc/motion.txt, runtime/plugin/gzip.vim, src/ex_cmds.c,
+           src/ex_docmd.c, src/mark.c, src/structs.h
+
+
+*** ../vim-6.2.189/runtime/doc/motion.txt      Sun Jun  1 12:20:33 2003
+--- runtime/doc/motion.txt     Sat Jan 17 16:37:22 2004
+***************
+*** 1,4 ****
+! *motion.txt*    For Vim version 6.2.  Last change: 2003 May 27
+  
+  
+                 VIM REFERENCE MANUAL    by Bram Moolenaar
+--- 1,4 ----
+! *motion.txt*    For Vim version 6.2.  Last change: 2004 Jan 17
+  
+  
+                 VIM REFERENCE MANUAL    by Bram Moolenaar
+***************
+*** 700,705 ****
+--- 706,716 ----
+  Lowercase marks 'a to 'z are remembered as long as the file remains in the
+  buffer list.  If you remove the file from the buffer list, all its marks are
+  lost.  If you delete a line that contains a mark, that mark is erased.
++ 
++ To delete a mark: Create a new line, position the mark there, delete the line.
++ E.g.: "o<Esc>mxdd".  This does change the file though.  Using "u" won't work,
++ it also restores marks.
++ 
+  Lowercase marks can be used in combination with operators.  For example: "d't"
+  deletes the lines from the cursor position to mark 't'.  Hint: Use mark 't' for
+  Top, 'b' for Bottom, etc..  Lowercase marks are restored when using undo and
+***************
+*** 811,816 ****
+--- 822,868 ----
+  [`                   [count] times to lowercase mark before the cursor.
+                       {not in Vi}
+  
++ 
++ :loc[kmarks] {command}                                       *:loc* *:lockmarks*
++                      Execute {command} without adjusting marks.  This is
++                      useful when changing text in a way that the line count
++                      will be the same when the change has completed.
++                      WARNING: When the line count does change, marks below
++                      the change will keep their line number, thus move to
++                      another text line.
++                      These items will not be adjusted for deleted/inserted
++                      lines:
++                      - lower case letter marks 'a - 'z
++                      - upper case letter marks 'A - 'Z
++                      - numbered marks '0 - '9
++                      - last insert position '^
++                      - last change position '.
++                      - the Visual area '< and '>
++                      - line numbers in placed signs
++                      - line numbers in quickfix positions
++                      - positions in the |jumplist|
++                      - positions in the |tagstack|
++                      These items will still be adjusted:
++                      - previous context mark ''
++                      - the cursor position
++                      - the view of a window on a buffer
++                      - folds
++                      - diffs
++ 
++ :kee[pmarks] {command}                                       *:kee* *:keepmarks*
++                      Currently only has effect for the filter command
++                      |:range!|:
++                      - When the number of lines after filtering is equal to
++                        or larger than before, all marks are kept at the
++                        same line number.
++                      - When the number of lines decreases, the marks in the
++                        ilnes that disappeared are deleted.
++                      In any case the marks below the filtered text have
++                      their line numbers adjusted, thus stick to the text,
++                      as usual.
++                      When the 'R' flag is missing from 'cpoptions' this has
++                      the same effect as using ":keepmarks".
++ 
+  ==============================================================================
+  8. Jumps                                     *jump-motions*
+  
+*** ../vim-6.2.189/runtime/plugin/gzip.vim     Mon Dec 29 21:04:38 2003
+--- runtime/plugin/gzip.vim    Mon Jan 12 17:39:39 2004
+***************
+*** 1,6 ****
+  " Vim plugin for editing compressed files.
+  " Maintainer: Bram Moolenaar <Bram@vim.org>
+! " Last Change: 2003 Dec 22
+  
+  " Exit quickly when:
+  " - this plugin was already loaded
+--- 1,6 ----
+  " Vim plugin for editing compressed files.
+  " Maintainer: Bram Moolenaar <Bram@vim.org>
+! " Last Change: 2004 Jan 12
+  
+  " Exit quickly when:
+  " - this plugin was already loaded
+***************
+*** 73,85 ****
+    call system(a:cmd . " " . tmpe)
+    " delete the compressed lines; remember the line number
+    let l = line("'[") - 1
+!   '[,']d
+    " read in the uncompressed lines "'[-1r tmp"
+    setlocal nobin
+!   execute "silent " . l . "r " . tmp
+    " if buffer became empty, delete trailing blank line
+    if empty
+!     silent $delete
+      1
+    endif
+    " delete the temp file and the used buffers
+--- 73,94 ----
+    call system(a:cmd . " " . tmpe)
+    " delete the compressed lines; remember the line number
+    let l = line("'[") - 1
+!   if exists(":lockmarks")
+!     lockmarks '[,']d _
+!   else
+!     '[,']d _
+!   endif
+    " read in the uncompressed lines "'[-1r tmp"
+    setlocal nobin
+!   if exists(":lockmarks")
+!     execute "silent lockmarks " . l . "r " . tmp
+!   else
+!     execute "silent " . l . "r " . tmp
+!   endif
+! 
+    " if buffer became empty, delete trailing blank line
+    if empty
+!     silent $delete _
+      1
+    endif
+    " delete the temp file and the used buffers
+*** ../vim-6.2.189/src/ex_cmds.c       Fri Jan  9 15:02:40 2004
+--- src/ex_cmds.c      Sun Jan 18 16:18:17 2004
+***************
+*** 746,751 ****
+--- 746,752 ----
+      char_u   *itmp = NULL;
+      char_u   *otmp = NULL;
+      linenr_T linecount;
++     linenr_T read_linecount;
+      pos_T    cursor_save;
+      char_u   *cmd_buf;
+  #ifdef FEAT_AUTOCMD
+***************
+*** 858,863 ****
+--- 859,865 ----
+       if (u_save((linenr_T)(line2), (linenr_T)(line2 + 1)) == FAIL)
+           goto error;
+       redraw_curbuf_later(VALID);
++      read_linecount = curbuf->b_ml.ml_line_count;
+       if (readfile(otmp, NULL, line2, (linenr_T)0, (linenr_T)MAXLNUM, eap,
+                                                        READ_FILTER) == FAIL)
+       {
+***************
+*** 877,882 ****
+--- 879,900 ----
+  
+       if (do_in)
+       {
++          if (cmdmod.keepmarks || vim_strchr(p_cpo, CPO_REMMARK) == NULL)
++          {
++              read_linecount = curbuf->b_ml.ml_line_count - read_linecount;
++              if (read_linecount >= linecount)
++                  /* move all marks from old lines to new lines */
++                  mark_adjust(line1, line2, linecount, 0L);
++              else
++              {
++                  /* move marks from old lines to new lines, delete marks
++                   * that are in deleted lines */
++                  mark_adjust(line1, line1 + read_linecount - 1,
++                                                              linecount, 0L);
++                  mark_adjust(line1 + read_linecount, line2, MAXLNUM, 0L);
++              }
++          }
++ 
+           /*
+            * Put cursor on first filtered line for ":range!cmd".
+            * Adjust '[ and '] (set by buf_write()).
+*** ../vim-6.2.189/src/ex_docmd.c      Sun Jan 18 20:46:13 2004
+--- src/ex_docmd.c     Fri Jan 16 17:20:17 2004
+***************
+*** 1432,1437 ****
+--- 1432,1438 ----
+           p = skipwhite(skipdigits(ea.cmd));
+       switch (*p)
+       {
++          /* When adding an entry, also modify cmd_exists(). */
+           case 'a':   if (!checkforcmd(&ea.cmd, "aboveleft", 3))
+                           break;
+  #ifdef FEAT_WINDOWS
+***************
+*** 1467,1472 ****
+--- 1468,1478 ----
+  #endif
+                       continue;
+  
++          case 'k':   if (!checkforcmd(&ea.cmd, "keepmarks", 3))
++                          break;
++                      cmdmod.keepmarks = TRUE;
++                      continue;
++ 
+                       /* ":hide" and ":hide | cmd" are not modifiers */
+           case 'h':   if (p != ea.cmd || !checkforcmd(&p, "hide", 3)
+                                              || *p == NUL || ends_excmd(*p))
+***************
+*** 1475,1481 ****
+                       cmdmod.hide = TRUE;
+                       continue;
+  
+!          case 'l':   if (!checkforcmd(&ea.cmd, "leftabove", 5))
+                           break;
+  #ifdef FEAT_WINDOWS
+                       cmdmod.split |= WSP_ABOVE;
+--- 1481,1493 ----
+                       cmdmod.hide = TRUE;
+                       continue;
+  
+!          case 'l':   if (checkforcmd(&ea.cmd, "lockmarks", 3))
+!                      {
+!                          cmdmod.lockmarks = TRUE;
+!                          continue;
+!                      }
+! 
+!                      if (!checkforcmd(&ea.cmd, "leftabove", 5))
+                           break;
+  #ifdef FEAT_WINDOWS
+                       cmdmod.split |= WSP_ABOVE;
+***************
+*** 2530,2536 ****
+--- 2542,2581 ----
+  {
+      exarg_T  ea;
+      int              full = FALSE;
++     int              i;
++     int              j;
++     static struct cmdmod
++     {
++      char    *name;
++      int     minlen;
++     } cmdmods[] = {
++      {"aboveleft", 3},
++      {"belowright", 3},
++      {"botright", 2},
++      {"browse", 3},
++      {"confirm", 4},
++      {"hide", 3},
++      {"keepmarks", 3},
++      {"leftabove", 5},
++      {"lockmarks", 3},
++      {"rightbelow", 6},
++      {"silent", 3},
++      {"topleft", 2},
++      {"verbose", 4},
++      {"vertical", 4},
++     };
++ 
++     /* Check command modifiers. */
++     for (i = 0; i < sizeof(cmdmods) / sizeof(struct cmdmod); ++i)
++     {
++      for (j = 0; name[j] != NUL; ++j)
++          if (name[j] != cmdmods[i].name[j])
++              break;
++      if (name[j] == NUL && j >= cmdmods[i].minlen)
++          return (cmdmods[i].name[j] == NUL ? 2 : 1);
++     }
+  
++     /* Check built-in commands and user defined commands. */
+      ea.cmd = name;
+      ea.cmdidx = (cmdidx_T)0;
+      if (find_command(&ea, &full) == NULL)
+*** ../vim-6.2.189/src/mark.c  Sun Jan 18 20:58:01 2004
+--- src/mark.c Fri Jan 16 11:56:14 2004
+***************
+*** 800,859 ****
+       return;
+  
+      /* named marks, lower case and upper case */
+!     for (i = 0; i < NMARKS; i++)
+      {
+!      one_adjust(&(curbuf->b_namedm[i].lnum));
+!      if (namedfm[i].fmark.fnum == fnum)
+!          one_adjust(&(namedfm[i].fmark.mark.lnum));
+!     }
+!     for (i = NMARKS; i < NMARKS + EXTRA_MARKS; i++)
+!     {
+!      if (namedfm[i].fmark.fnum == fnum)
+!          one_adjust(&(namedfm[i].fmark.mark.lnum));
+!     }
+! 
+!     /* previous context mark */
+!     one_adjust(&(curwin->w_pcmark.lnum));
+! 
+!     /* previous pcmark */
+!     one_adjust(&(curwin->w_prev_pcmark.lnum));
+  
+!     /* last Insert position */
+!     one_adjust(&(curbuf->b_last_insert.lnum));
+  
+!     /* last change position */
+!     one_adjust(&(curbuf->b_last_change.lnum));
+  
+  #ifdef FEAT_VISUAL
+!     /* Visual area */
+!     one_adjust_nodel(&(curbuf->b_visual_start.lnum));
+!     one_adjust_nodel(&(curbuf->b_visual_end.lnum));
+  #endif
+  
+  #ifdef FEAT_QUICKFIX
+!     /* quickfix marks */
+!     qf_mark_adjust(line1, line2, amount, amount_after);
+  #endif
+  
+      /*
+       * Adjust items in all windows related to the current buffer.
+       */
+      FOR_ALL_WINDOWS(win)
+      {
+  #ifdef FEAT_JUMPLIST
+!      /* Marks in the jumplist.  When deleting lines, this may create
+!       * duplicate marks in the jumplist, they will be removed later. */
+!      for (i = 0; i < win->w_jumplistlen; ++i)
+!          if (win->w_jumplist[i].fmark.fnum == fnum)
+!              one_adjust_nodel(&(win->w_jumplist[i].fmark.mark.lnum));
+  #endif
+  
+       if (win->w_buffer == curbuf)
+       {
+!          /* marks in the tag stack */
+!          for (i = 0; i < win->w_tagstacklen; i++)
+!              if (win->w_tagstack[i].fmark.fnum == fnum)
+!                  one_adjust_nodel(&(win->w_tagstack[i].fmark.mark.lnum));
+  
+  #ifdef FEAT_VISUAL
+           /* the displayed Visual area */
+--- 800,868 ----
+       return;
+  
+      /* named marks, lower case and upper case */
+!     if (!cmdmod.lockmarks)
+      {
+!      for (i = 0; i < NMARKS; i++)
+!      {
+!          one_adjust(&(curbuf->b_namedm[i].lnum));
+!          if (namedfm[i].fmark.fnum == fnum)
+!              one_adjust_nodel(&(namedfm[i].fmark.mark.lnum));
+!      }
+!      for (i = NMARKS; i < NMARKS + EXTRA_MARKS; i++)
+!      {
+!          if (namedfm[i].fmark.fnum == fnum)
+!              one_adjust_nodel(&(namedfm[i].fmark.mark.lnum));
+!      }
+  
+!      /* last Insert position */
+!      one_adjust(&(curbuf->b_last_insert.lnum));
+  
+!      /* last change position */
+!      one_adjust(&(curbuf->b_last_change.lnum));
+  
+  #ifdef FEAT_VISUAL
+!      /* Visual area */
+!      one_adjust_nodel(&(curbuf->b_visual_start.lnum));
+!      one_adjust_nodel(&(curbuf->b_visual_end.lnum));
+  #endif
+  
+  #ifdef FEAT_QUICKFIX
+!      /* quickfix marks */
+!      qf_mark_adjust(line1, line2, amount, amount_after);
+  #endif
+  
++ #ifdef FEAT_SIGNS
++      sign_mark_adjust(line1, line2, amount, amount_after);
++ #endif
++     }
++ 
++     /* previous context mark */
++     one_adjust(&(curwin->w_pcmark.lnum));
++ 
++     /* previous pcmark */
++     one_adjust(&(curwin->w_prev_pcmark.lnum));
++ 
+      /*
+       * Adjust items in all windows related to the current buffer.
+       */
+      FOR_ALL_WINDOWS(win)
+      {
+  #ifdef FEAT_JUMPLIST
+!      if (!cmdmod.lockmarks)
+!          /* Marks in the jumplist.  When deleting lines, this may create
+!           * duplicate marks in the jumplist, they will be removed later. */
+!          for (i = 0; i < win->w_jumplistlen; ++i)
+!              if (win->w_jumplist[i].fmark.fnum == fnum)
+!                  one_adjust_nodel(&(win->w_jumplist[i].fmark.mark.lnum));
+  #endif
+  
+       if (win->w_buffer == curbuf)
+       {
+!          if (!cmdmod.lockmarks)
+!              /* marks in the tag stack */
+!              for (i = 0; i < win->w_tagstacklen; i++)
+!                  if (win->w_tagstack[i].fmark.fnum == fnum)
+!                      one_adjust_nodel(&(win->w_tagstack[i].fmark.mark.lnum));
+  
+  #ifdef FEAT_VISUAL
+           /* the displayed Visual area */
+***************
+*** 917,926 ****
+  #ifdef FEAT_DIFF
+      /* adjust diffs */
+      diff_mark_adjust(line1, line2, amount, amount_after);
+- #endif
+- 
+- #ifdef FEAT_SIGNS
+-     sign_mark_adjust(line1, line2, amount, amount_after);
+  #endif
+  }
+  
+--- 926,931 ----
+*** ../vim-6.2.189/src/structs.h       Sun Nov  2 15:27:38 2003
+--- src/structs.h      Tue Jan 13 12:57:23 2004
+***************
+*** 403,408 ****
+--- 403,410 ----
+  # if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG)
+      int              confirm;                /* TRUE to invoke yes/no dialog */
+  # endif
++     int              keepmarks;              /* TRUE when ":keepmarks" was used */
++     int              lockmarks;              /* TRUE when ":lockmarks" was used */
+  } cmdmod_T;
+  
+  /*
+*** ../vim-6.2.189/src/version.c       Sun Jan 18 21:04:53 2004
+--- src/version.c      Sun Jan 18 21:07:07 2004
+***************
+*** 639,640 ****
+--- 639,642 ----
+  {   /* Add new patch number below this line */
++ /**/
++     190,
+  /**/
+
+-- 
+ARTHUR:  Well, I AM king...
+DENNIS:  Oh king, eh, very nice.  An' how'd you get that, eh?  By exploitin'
+         the workers -- by 'angin' on to outdated imperialist dogma which
+         perpetuates the economic an' social differences in our society!  If
+         there's ever going to be any progress--
+                                  The Quest for the Holy Grail (Monty Python)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        Sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\              Project leader for A-A-P -- http://www.A-A-P.org        ///
+ \\\  Help AIDS victims, buy here: http://ICCF-Holland.org/click1.html  ///
diff --git a/6.2.191 b/6.2.191
new file mode 100644 (file)
index 0000000..f9a60b9
--- /dev/null
+++ b/6.2.191
@@ -0,0 +1,446 @@
+To: vim-dev@vim.org
+Subject: Patch 6.2.191
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 6.2.191
+Problem:    The intro message is outdated.  Information about sponsoring and
+           registering is missing.
+Solution:   Show info about sponsoring and registering Vim in the intro
+           message now and then.  Add help file about sponsoring.
+Files:     runtime/doc/help.txt, runtime/doc/sponsor.txt, runtime/doc/tags,
+           runtime/menu.vim, src/version.c
+
+
+*** ../vim-6.2.190/runtime/doc/help.txt        Sun Jun  1 12:20:32 2003
+--- runtime/doc/help.txt       Sun Jan 18 21:16:07 2004
+***************
+*** 1,4 ****
+! *help.txt*   For Vim version 6.2.  Last change: 2003 May 11
+  
+                       VIM - main help file
+                                                                        k
+--- 1,4 ----
+! *help.txt*   For Vim version 6.2.  Last change: 2004 Jan 08
+  
+                       VIM - main help file
+                                                                        k
+***************
+*** 36,41 ****
+--- 36,42 ----
+  |tutor|              30 minutes training course for beginners
+  |copying|    About copyrights
+  |iccf|               Helping poor children in Uganda
++ |sponsor|    Sponsor Vim development, become a registered Vim user
+  |www|                Vim on the World Wide Web
+  |bugs|               Where to send bug reports
+  
+*** ../vim-6.2.190/runtime/doc/sponsor.txt     Sun Jan 18 21:14:50 2004
+--- runtime/doc/sponsor.txt    Thu Jan 15 10:03:22 2004
+***************
+*** 0 ****
+--- 1,228 ----
++ *sponsor.txt*   For Vim version 6.2.  Last change: 2004 Jan 15
++ 
++ 
++                VIM REFERENCE MANUAL    by Bram Moolenaar
++ 
++ 
++ 
++ SPONSOR VIM DEVELOPMENT                                              *sponsor*
++ 
++ Fixing bugs and adding new features takes a lot of effort.  For a few years
++ Bram has attempted to do this next to a full-time job.  During that time the
++ todo list kept getting longer and longer.
++ 
++ In order for Bram to support Vim properly he needs your support.  Through your
++ donations Bram will be able to have a part-time job and spend more time on
++ fixing bugs and adding new features.
++ 
++ For the most recent information about sponsoring look on the Vim web site:
++ 
++      http://www.vim.org/sponsor/
++ 
++ More explanations can be found in the |sponsor-faq|.
++ 
++ 
++ REGISTERED VIM USER                                          *register*
++ 
++ You can become a registered Vim user by sending at least 10 euro.  This works
++ similar to sponsoring Vim, see |sponsor| above.  Registration was made
++ possible for the situation where your boss or bookkeeper may be willing to
++ register software, but does not like the terms "sponsoring" and "donation".
++ 
++ More explanations can be found in the |register-faq|.
++ 
++ 
++ VOTE FOR FEATURES                                    *vote-for-features*
++ 
++ To give registered Vim users and sponsors an advantage over lurkers they can
++ vote for the items Bram should work on.  How does this voting work?
++ 
++ 1.  You send at least 10 euro.  See below for ways to transfer money
++     |send-money|.
++ 
++ 2.  You will be e-mailed a registration key.  Enter this key on your account
++     page on the Vim website.  You can easily create an account if you don't
++     have one yet.
++ 
++ 3.  You can enter your votes on the voting page.  There is a link to that page
++     on your account page after entering a registration key.  Your votes will
++     be counted for two years.
++ 
++ 4.  The voting results appear on the results page, which is visible for
++     everybody:  http://www.vim.org/sponsor/vote_results.php
++ 
++ Additionally, once you have send 100 euro or more in total, your name appears
++ in the "Vim hall of honour":   http://www.vim.org/sponsor/hall_of_honour.php
++ But only if you enable this on your account page.
++ 
++ 
++ HOW TO SEND MONEY                                            *send-money*
++ 
++ Creditcard           Through PayPal, see the PayPal site for information:
++                      https://www.paypal.com
++              The e-mail address for sending sponsorship money is:
++                      donate@vim.org
++              The e-mail address for Vim registration is:
++                      register@vim.org
++              Using Euro is preferred, other currencies are also accepted.
++              In Europe a bank transfer is preferred, this has lower costs.
++ 
++ Bank transfer        Transfer to Bram's account at the Postbank: 1644503.  For
++              international transfers you can use these numbers:
++                              IBAN:       NL79 PSTB 0001 6445 03
++                      SWIFT/BIC:  PSTBNL21
++              This is the address of the bank:        
++                      ING Bank Amsterdam, Foreign Operations
++                      PO Box 1800
++                      1000 BV Amsterdam
++                      The Netherlands
++              Include your e-mail address in the comment of your money
++              transfer if you want to vote for features and show others you
++              are a registered Vim user or sponsor.
++ 
++ Cash         Small amounts can be send with ordinary mail.  Put something
++              around the money, so that it's not noticable from the outside.
++              Mention your e-mail address if you want to vote for features
++              and show others you are a registered Vim user or sponsor.
++ 
++ This is Bram's address:      
++      Bram Moolenaar
++      Clematisstraat 30
++      5925 BE Venlo
++      The Netherlands
++ 
++ 
++ ALTERNATIVE
++ 
++ If you don't care about sponsoring Vim Development or becoming a registered
++ Vim user, but do care about helping needy children, consider giving to the
++ ICCF Holland foundation.  This is the charity recommended by Vim's author.
++ The money is used for a children centre in the south of Uganda, where AIDS has
++ caused many victims.  See |uganda|.
++ 
++ 
++ QUESTIONS AND ANSWERS                                *sponsor-faq* *register-faq*
++ 
++ Why should I give money?
++ 
++ Bram has tried to work on Vim next to a full-time job.  The list of known bugs
++ and ideas for new features has constantly been growing during this time.  Bram
++ simply can't spend enough time on Vim development when he has a full-time job.
++ Your contribution will make it possible for Bram to have a part-time job and
++ spend much more time on Vim development.  Bugs will be fixed quicker and new
++ Vim releases will become available more often.
++ 
++ 
++ How much money should I send?
++ 
++ That is up to you.  The more you give, the more time Bram can work on Vim.  An
++ indication for individuals that use Vim at home: 10 Euro per year.  For
++ professional use: 30 Euro per year per person.  Send at least 10 euro to be
++ able to vote for features.
++ 
++ 
++ What do I get in return?
++ 
++ Each registered Vim user and sponsor who donates at least 10 euro will be able
++ to vote for new features.  These votes will give priority to the work on Vim.
++ The votes are valid for two years.  The more money you send the more your
++ votes count |votes-counted|.
++ 
++ If you send 100 Euro or more in total you will be mentioned on the "Vim hall
++ of honour" page on the Vim web site.  But only if you enable this on your
++ account page.  You can also select whether the amount will be visible.
++ 
++ 
++ How do I become a Vim sponsor or registered Vim user?
++ 
++ Send money, as explained above |send-money| and include your e-mail address.
++ When the money has been received you will receive a unique registration key.
++ This key can be used on the Vim website to activate voting on your Vim
++ account.  You will then get an extra page where you can vote for features and
++ choose whether others will be able to see that you donated.  There is a link
++ to this page on your "My Account" page.
++ 
++ 
++ What is the difference between sponsoring and registering?
++ 
++ It has a different name.  Use the term "registration" if your boss doesn't
++ like "sponsoring" or "donation".  The benefits are the same.
++ 
++ 
++ How can I send money?
++ 
++ See |send-money|.  Check the web site for the most recent information:
++ http://www.vim.org/sponsor/
++ 
++ 
++ Why don't you use the SourceForge donation system?
++ 
++ SourceForge takes 5% of the donations for themselves.  If you want to support
++ SourceForge you can send money to them directly.
++ 
++ 
++ I cannot afford to send money, may I still use Vim?
++ 
++ Yes.
++ 
++ 
++ I did not register Vim, can I use all available features?
++ 
++ Yes.
++ 
++ 
++ I noticed a bug, do I need to register before I can report it?
++ 
++ No, suggestions for improving Vim can always be given.  For improvements use
++ the developer |maillist|, for reporting bugs see |bugs|.
++ 
++ 
++ How are my votes counted?                            *votes-counted*
++ 
++ You may vote when you send 10 euro or more.  You can enter up to ten votes.
++ You can select the same item several times to give it more points.  You can
++ also enter three counter votes, these count as negative points.
++ 
++ When you send 30 euro or more the points are doubled.  Above 100 euro they
++ count four times, above 300 euro they count six times, above 1000 euro ten
++ times.
++ 
++ 
++ Can I change my votes?
++ 
++ You can change your votes any time you like, up to two years after you
++ sent money.  The points will be counted right away.
++ 
++ 
++ How about Charityware?
++ 
++ You have to decide yourself whether you want to sponsor Vim development, help
++ the poor children in Uganda (see |uganda|) or both.  Bram will certainly keep
++ on supporting the project in Uganda.  In the (unlikely) situation that Bram
++ gets more donations for Vim development than he needs, he will send the money
++ to Uganda.
++ 
++ 
++ I donated $$$, now please add feature XYZ!
++ 
++ There is no direct relation between your donation and the work Bram does.
++ Otherwise you would be paying for work and Bram has to pay income tax over the
++ donation.  If you want to hire Bram for specific work, contact him directly,
++ don't use the donation system.
++ 
++ 
++ Are the donations tax deductable?
++ 
++ No.  Setting up a system for this is complex and imposes too many restrictions.
++ The donations to help the children in |Uganda| are tax deductable in Holland,
++ Germany, Canada and probably also in the USA.
++ 
++ 
++ Can you send me a bill?
++ 
++ Sending a bill would mean Bram does something in return for your contribution.
++ That is work and would mean Bram has to pay income tax over the amount.  It is
++ possible, but the net amount will be lower.
++ 
++ 
++  vim:tw=78:ts=8:ft=help:norl:
+*** ../vim-6.2.190/runtime/doc/tags    Mon Jun  2 21:31:14 2003
+--- runtime/doc/tags   Fri Jan 16 15:26:10 2004
+***************
+*** 1924,1929 ****
+--- 1949,1956 ----
+  :ju  motion.txt      /*:ju*
+  :jumps       motion.txt      /*:jumps*
+  :k   motion.txt      /*:k*
++ :kee motion.txt      /*:kee*
++ :keepmarks   motion.txt      /*:keepmarks*
+  :l   various.txt     /*:l*
+  :la  editing.txt     /*:la*
+  :lan mlang.txt       /*:lan*
+***************
+*** 1956,1961 ****
+--- 1984,1991 ----
+  :loadk       mbyte.txt       /*:loadk*
+  :loadkeymap  mbyte.txt       /*:loadkeymap*
+  :loadview    starting.txt    /*:loadview*
++ :loc motion.txt      /*:loc*
++ :lockmarks   motion.txt      /*:lockmarks*
+  :ls  windows.txt     /*:ls*
+  :lu  map.txt /*:lu*
+  :lunmap      map.txt /*:lunmap*
+***************
+*** 5508,5513 ****
+--- 5559,5566 ----
+  reference    intro.txt       /*reference*
+  regexp       pattern.txt     /*regexp*
+  regexp-changes-5.4   version5.txt    /*regexp-changes-5.4*
++ register     sponsor.txt     /*register*
++ register-faq sponsor.txt     /*register-faq*
+  register-variable    eval.txt        /*register-variable*
+  registers    change.txt      /*registers*
+  regular-expression   pattern.txt     /*regular-expression*
+***************
+*** 5619,5624 ****
+--- 5673,5679 ----
+  section      motion.txt      /*section*
+  sed-syntax   syntax.txt      /*sed-syntax*
+  sed.vim      syntax.txt      /*sed.vim*
++ send-money   sponsor.txt     /*send-money*
+  send-to-menu gui_w32.txt     /*send-to-menu*
+  sendto       gui_w32.txt     /*sendto*
+  sentence     motion.txt      /*sentence*
+***************
+*** 5667,5672 ****
+--- 5723,5731 ----
+  speed-up     tips.txt        /*speed-up*
+  splitfind    windows.txt     /*splitfind*
+  splitview    windows.txt     /*splitview*
++ sponsor      sponsor.txt     /*sponsor*
++ sponsor-faq  sponsor.txt     /*sponsor-faq*
++ sponsor.txt  sponsor.txt     /*sponsor.txt*
+  spoon        os_unix.txt     /*spoon*
+  spup-syntax  syntax.txt      /*spup-syntax*
+  spup.vim     syntax.txt      /*spup.vim*
+***************
+*** 6271,6276 ****
+--- 6331,6338 ----
+  vms-problems os_vms.txt      /*vms-problems*
+  vms-started  os_vms.txt      /*vms-started*
+  vms-usage    os_vms.txt      /*vms-usage*
++ vote-for-features    sponsor.txt     /*vote-for-features*
++ votes-counted        sponsor.txt     /*votes-counted*
+  votes-for-changes    todo.txt        /*votes-for-changes*
+  vreplace-mode        insert.txt      /*vreplace-mode*
+  vt100-cursor-keys    term.txt        /*vt100-cursor-keys*
+***************
+*** 6460,6465 ****
+--- 6522,6528 ----
+  {motion}     intro.txt       /*{motion}*
+  {move-around}        visual.txt      /*{move-around}*
+  {offset}     pattern.txt     /*{offset}*
++ {pat}        autocmd.txt     /*{pat}*
+  {rhs}        map.txt /*{rhs}*
+  {subject}    various.txt     /*{subject}*
+  {}   intro.txt       /*{}*
+*** ../vim-6.2.190/runtime/menu.vim    Sun Oct 12 17:00:32 2003
+--- runtime/menu.vim   Thu Jan  8 21:38:19 2004
+***************
+*** 2,8 ****
+  " You can also use this as a start for your own set of menus.
+  "
+  " Maintainer:        Bram Moolenaar <Bram@vim.org>
+! " Last Change:       2003 Set 20
+  
+  " Note that ":an" (short for ":anoremenu") is often used to make a menu work
+  " in all modes and avoid side effects from mappings defined by the user.
+--- 2,8 ----
+  " You can also use this as a start for your own set of menus.
+  "
+  " Maintainer:        Bram Moolenaar <Bram@vim.org>
+! " Last Change:       2004 Jan 08
+  
+  " Note that ":an" (short for ":anoremenu") is often used to make a menu work
+  " in all modes and avoid side effects from mappings defined by the user.
+***************
+*** 66,71 ****
+--- 66,72 ----
+  an 9999.45 &Help.-sep1-                      <Nop>
+  an 9999.50 &Help.&Credits            :help credits<CR>
+  an 9999.60 &Help.Co&pying            :help copying<CR>
++ an 9999.70 &Help.&Sponsor/Register   :help sponsor<CR>
+  an 9999.70 &Help.O&rphans            :help kcc<CR>
+  an 9999.75 &Help.-sep2-                      <Nop>
+  an 9999.80 &Help.&Version            :version<CR>
+*** ../vim-6.2.190/src/version.c       Sun Jan 18 21:12:26 2004
+--- src/version.c      Sun Jan 18 21:13:45 2004
+***************
+*** 1377,1382 ****
+--- 1379,1385 ----
+      int              i;
+      int              row;
+      int              blanklines;
++     int              sponsor;
+      char     *p;
+      static char      *(lines[]) =
+      {
+***************
+*** 1444,1449 ****
+--- 1447,1457 ----
+      if (blanklines < 0)
+       blanklines = 0;
+  
++     /* Show the sponsor and register message one out of four times, the Uganda
++      * message two out of four times. */
++     sponsor = time(NULL);
++     sponsor = ((sponsor & 2) == 0) - ((sponsor & 4) == 0);
++ 
+      /* start displaying the message lines after half of the blank lines */
+      row = blanklines / 2;
+      if ((row >= 2 && Columns >= 50) || colon)
+***************
+*** 1460,1465 ****
+--- 1468,1486 ----
+               if (!p_cp)
+                   break;
+               continue;
++          }
++          if (sponsor != 0)
++          {
++              if (strstr(p, "children") != NULL)
++                  p = sponsor < 0
++                      ? N_("Sponsor Vim development!")
++                      : N_("Become a registered Vim user!");
++              else if (strstr(p, "iccf") != NULL)
++                  p = sponsor < 0
++                      ? N_("type  :help sponsor<Enter>    for information ")
++                      : N_("type  :help register<Enter>   for information ");
++              else if (strstr(p, "Orphans") != NULL)
++                  p = N_("menu  Help->Sponsor/Register  for information    ");
+           }
+           if (*p != NUL)
+               do_intro_line(row, (char_u *)_(p), i == 2, 0);
+*** ../vim-6.2.190/src/version.c       Sun Jan 18 21:12:26 2004
+--- src/version.c      Sun Jan 18 21:13:45 2004
+***************
+*** 639,640 ****
+--- 639,642 ----
+  {   /* Add new patch number below this line */
++ /**/
++     191,
+  /**/
+
+-- 
+Vim is like Emacs without all the typing.  (John "Johann" Spetz)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        Sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\              Project leader for A-A-P -- http://www.A-A-P.org        ///
+ \\\  Help AIDS victims, buy here: http://ICCF-Holland.org/click1.html  ///
diff --git a/6.2.192 b/6.2.192
new file mode 100644 (file)
index 0000000..dc47a67
--- /dev/null
+++ b/6.2.192
@@ -0,0 +1,58 @@
+To: vim-dev@vim.org
+Subject: Patch 6.2.192
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 6.2.192
+Problem:    Using CTRL-T and CTRL-D with "gR" messes up the text.  (Jonahtan
+           Hankins)
+Solution:   Avoid calling change_indent() recursively.
+Files:     src/edit.c
+
+
+*** ../vim-6.2.191/src/edit.c  Sun Jan 18 20:28:26 2004
+--- src/edit.c Sun Jan 18 20:23:49 2004
+***************
+*** 1611,1617 ****
+--- 1611,1629 ----
+      if (type == INDENT_SET)
+       (void)set_indent(amount, SIN_CHANGED);
+      else
++     {
++ #ifdef FEAT_VREPLACE
++      int     save_State = State;
++ 
++      /* Avoid being called recursively. */
++      if (State & VREPLACE_FLAG)
++          State = INSERT;
++ #endif
+       shift_line(type == INDENT_DEC, round, 1);
++ #ifdef FEAT_VREPLACE
++      State = save_State;
++ #endif
++     }
+      insstart_less -= curwin->w_cursor.col;
+  
+      /*
+*** ../vim-6.2.191/src/version.c       Sun Jan 18 21:19:56 2004
+--- src/version.c      Sun Jan 18 21:21:12 2004
+***************
+*** 639,640 ****
+--- 639,642 ----
+  {   /* Add new patch number below this line */
++ /**/
++     192,
+  /**/
+
+-- 
+Q: Is selling software the same as selling hardware?
+A: No, good hardware is sold new, good software has already been used by many.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        Sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\              Project leader for A-A-P -- http://www.A-A-P.org        ///
+ \\\  Help AIDS victims, buy here: http://ICCF-Holland.org/click1.html  ///
diff --git a/6.2.193 b/6.2.193
new file mode 100644 (file)
index 0000000..e4675ea
--- /dev/null
+++ b/6.2.193
@@ -0,0 +1,425 @@
+To: vim-dev@vim.org
+Subject: Patch 6.2.193
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 6.2.193
+Problem:    When recalling a search pattern from the history from a ":s,a/c,"
+           command the '/' ends the search string. (JC van Winkel)
+Solution:   Store the separator character with the history entries.  Escape
+           characters when needed, replace the old separator with the new one.
+           Also fixes that recalling a "/" search for a "?" command messes up 
+           trailing flags.
+Files:     src/eval.c, src/ex_getln.c, src/normal.c, src/proto/ex_getln.pro,
+           src/search.c, src/tag.c
+
+
+*** ../vim-6.2.192/src/eval.c  Sun Jan 18 20:46:13 2004
+--- src/eval.c Sun Jan 18 16:51:58 2004
+***************
+*** 5140,5146 ****
+       str = get_var_string_buf(&argvars[1], buf);
+       if (*str != NUL)
+       {
+!          add_to_history(histype, str, FALSE);
+           retvar->var_val.var_number = TRUE;
+           return;
+       }
+--- 5140,5146 ----
+       str = get_var_string_buf(&argvars[1], buf);
+       if (*str != NUL)
+       {
+!          add_to_history(histype, str, FALSE, NUL);
+           retvar->var_val.var_number = TRUE;
+           return;
+       }
+*** ../vim-6.2.192/src/ex_getln.c      Sat Sep 27 19:36:46 2003
+--- src/ex_getln.c     Sun Jan 18 14:43:53 2004
+***************
+*** 42,48 ****
+  typedef struct hist_entry
+  {
+      int              hisnum;         /* identifying number */
+!     char_u   *hisstr;        /* actual entry */
+  } histentry_T;
+  
+  static histentry_T *(history[HIST_COUNT]) = {NULL, NULL, NULL, NULL, NULL};
+--- 42,48 ----
+  typedef struct hist_entry
+  {
+      int              hisnum;         /* identifying number */
+!     char_u   *hisstr;        /* actual entry, separator char after the NUL */
+  } histentry_T;
+  
+  static histentry_T *(history[HIST_COUNT]) = {NULL, NULL, NULL, NULL, NULL};
+***************
+*** 1286,1291 ****
+--- 1286,1293 ----
+               if (hiscnt != i)        /* jumped to other entry */
+               {
+                   char_u      *p;
++                  int         len;
++                  int         old_firstc;
+  
+                   vim_free(ccline.cmdbuff);
+                   if (hiscnt == hislen)
+***************
+*** 1293,1302 ****
+                   else
+                       p = history[histype][hiscnt].hisstr;
+  
+!                  alloc_cmdbuff((int)STRLEN(p));
+!                  if (ccline.cmdbuff == NULL)
+!                      goto returncmd;
+!                  STRCPY(ccline.cmdbuff, p);
+  
+                   ccline.cmdpos = ccline.cmdlen = (int)STRLEN(ccline.cmdbuff);
+                   redrawcmd();
+--- 1295,1353 ----
+                   else
+                       p = history[histype][hiscnt].hisstr;
+  
+!                  if (histype == HIST_SEARCH
+!                          && p != lookfor
+!                          && (old_firstc = p[STRLEN(p) + 1]) != firstc)
+!                  {
+!                      /* Correct for the separator character used when
+!                       * adding the history entry vs the one used now.
+!                       * First loop: count length.
+!                       * Second loop: copy the characters. */
+!                      for (i = 0; i <= 1; ++i)
+!                      {
+!                          len = 0;
+!                          for (j = 0; p[j] != NUL; ++j)
+!                          {
+!                              /* Replace old sep with new sep, unless it is
+!                               * escaped. */
+!                              if (p[j] == old_firstc
+!                                            && (j == 0 || p[j - 1] != '\\'))
+!                              {
+!                                  if (i > 0)
+!                                      ccline.cmdbuff[len] = firstc;
+!                              }
+!                              else
+!                              {
+!                                  /* Escape new sep, unless it is already
+!                                   * escaped. */
+!                                  if (p[j] == firstc
+!                                            && (j == 0 || p[j - 1] != '\\'))
+!                                  {
+!                                      if (i > 0)
+!                                          ccline.cmdbuff[len] = '\\';
+!                                      ++len;
+!                                  }
+!                                  if (i > 0)
+!                                      ccline.cmdbuff[len] = p[j];
+!                              }
+!                              ++len;
+!                          }
+!                          if (i == 0)
+!                          {
+!                              alloc_cmdbuff(len);
+!                              if (ccline.cmdbuff == NULL)
+!                                  goto returncmd;
+!                          }
+!                      }
+!                      ccline.cmdbuff[len] = NUL;
+!                  }
+!                  else
+!                  {
+!                      alloc_cmdbuff((int)STRLEN(p));
+!                      if (ccline.cmdbuff == NULL)
+!                          goto returncmd;
+!                      STRCPY(ccline.cmdbuff, p);
+!                  }
+  
+                   ccline.cmdpos = ccline.cmdlen = (int)STRLEN(ccline.cmdbuff);
+                   redrawcmd();
+***************
+*** 1556,1562 ****
+       if (ccline.cmdlen && firstc != NUL
+               && (some_key_typed || histype == HIST_SEARCH))
+       {
+!          add_to_history(histype, ccline.cmdbuff, TRUE);
+           if (firstc == ':')
+           {
+               vim_free(new_last_cmdline);
+--- 1607,1614 ----
+       if (ccline.cmdlen && firstc != NUL
+               && (some_key_typed || histype == HIST_SEARCH))
+       {
+!          add_to_history(histype, ccline.cmdbuff, TRUE,
+!                                     histype == HIST_SEARCH ? firstc : NUL);
+           if (firstc == ':')
+           {
+               vim_free(new_last_cmdline);
+***************
+*** 4185,4196 ****
+   * values.
+   */
+      void
+! add_to_history(histype, new_entry, in_map)
+      int              histype;
+      char_u   *new_entry;
+      int              in_map;         /* consider maptick when inside a mapping */
+  {
+      histentry_T      *hisptr;
+  
+      if (hislen == 0)         /* no history */
+       return;
+--- 4239,4252 ----
+   * values.
+   */
+      void
+! add_to_history(histype, new_entry, in_map, sep)
+      int              histype;
+      char_u   *new_entry;
+      int              in_map;         /* consider maptick when inside a mapping */
++     int              sep;            /* separator character used (search hist) */
+  {
+      histentry_T      *hisptr;
++     int              len;
+  
+      if (hislen == 0)         /* no history */
+       return;
+***************
+*** 4221,4227 ****
+           hisidx[histype] = 0;
+       hisptr = &history[histype][hisidx[histype]];
+       vim_free(hisptr->hisstr);
+!      hisptr->hisstr = vim_strsave(new_entry);
+       hisptr->hisnum = ++hisnum[histype];
+       if (histype == HIST_SEARCH && in_map)
+           last_maptick = maptick;
+--- 4277,4289 ----
+           hisidx[histype] = 0;
+       hisptr = &history[histype][hisidx[histype]];
+       vim_free(hisptr->hisstr);
+! 
+!      /* Store the separator after the NUL of the string. */
+!      len = STRLEN(new_entry);
+!      hisptr->hisstr = vim_strnsave(new_entry, len + 2);
+!      if (hisptr->hisstr != NULL)
+!          hisptr->hisstr[len + 1] = sep;
+! 
+       hisptr->hisnum = ++hisnum[histype];
+       if (histype == HIST_SEARCH && in_map)
+           last_maptick = maptick;
+***************
+*** 4586,4592 ****
+               if (i == hislen)
+                   i = 0;
+               if (hist[i].hisstr != NULL
+!                  && hist[i].hisnum >= j && hist[i].hisnum <= k)
+               {
+                   msg_putchar('\n');
+                   sprintf((char *)IObuff, "%c%6d  %s", i == idx ? '>' : ' ',
+--- 4648,4654 ----
+               if (i == hislen)
+                   i = 0;
+               if (hist[i].hisstr != NULL
+!                      && hist[i].hisnum >= j && hist[i].hisnum <= k)
+               {
+                   msg_putchar('\n');
+                   sprintf((char *)IObuff, "%c%6d  %s", i == idx ? '>' : ' ',
+***************
+*** 4682,4697 ****
+      vir_T    *virp;
+  {
+      int              type;
+      char_u   *val;
+  
+      type = hist_char2type(virp->vir_line[0]);
+      if (viminfo_hisidx[type] < viminfo_hislen[type])
+      {
+!      val = viminfo_readstring(virp, 1, TRUE);
+       if (val != NULL)
+       {
+           if (!in_history(type, val, viminfo_add_at_front))
+               viminfo_history[type][viminfo_hisidx[type]++] = val;
+           else
+               vim_free(val);
+       }
+--- 4744,4782 ----
+      vir_T    *virp;
+  {
+      int              type;
++     int              sep;
++     int              len;
+      char_u   *val;
+  
+      type = hist_char2type(virp->vir_line[0]);
+      if (viminfo_hisidx[type] < viminfo_hislen[type])
+      {
+!      /* Use a zero offset, so that we have some extra space in the
+!       * allocated memory for the separator. */
+!      val = viminfo_readstring(virp, 0, TRUE);
+       if (val != NULL)
+       {
+           if (!in_history(type, val, viminfo_add_at_front))
++          {
++              len = STRLEN(val);
++              if (type == HIST_SEARCH)
++              {
++                  /* Search entry: Move the separator from the second column
++                   * to after the NUL. */
++                  sep = val[1];
++                  --len;
++                  mch_memmove(val, val + 2, (size_t)len);
++                  val[len + 1] = (sep == ' ' ? NUL : sep);
++              }
++              else
++              {
++                  /* Not a search entry: No separator in the viminfo file,
++                   * add a NUL separator. */
++                  mch_memmove(val, val + 1, (size_t)len);
++                  val[len + 1] = NUL;
++              }
+               viminfo_history[type][viminfo_hisidx[type]++] = val;
++          }
+           else
+               vim_free(val);
+       }
+***************
+*** 4757,4762 ****
+--- 4842,4849 ----
+      int          i;
+      int          type;
+      int          num_saved;
++     char_u  *p;
++     int          c;
+  
+      init_history();
+      if (hislen == 0)
+***************
+*** 4779,4788 ****
+       if (i >= 0)
+           while (num_saved--)
+           {
+!              if (history[type][i].hisstr != NULL)
+               {
+                   putc(hist_type2char(type, TRUE), fp);
+!                  viminfo_writestring(fp, history[type][i].hisstr);
+               }
+               if (--i < 0)
+                   i = hislen - 1;
+--- 4866,4883 ----
+       if (i >= 0)
+           while (num_saved--)
+           {
+!              p = history[type][i].hisstr;
+!              if (p != NULL)
+               {
+                   putc(hist_type2char(type, TRUE), fp);
+!                  /* For the search history: put the separator in the second
+!                   * column; use a space if there isn't one. */
+!                  if (type == HIST_SEARCH)
+!                  {
+!                      c = p[STRLEN(p) + 1];
+!                      putc(c == NUL ? ' ' : c, fp);
+!                  }
+!                  viminfo_writestring(fp, p);
+               }
+               if (--i < 0)
+                   i = hislen - 1;
+*** ../vim-6.2.192/src/normal.c        Sun Jan 18 20:28:26 2004
+--- src/normal.c       Sun Jan 18 18:49:04 2004
+***************
+*** 4920,4926 ****
+           STRCAT(buf, "\\>");
+  #ifdef FEAT_CMDHIST
+       /* put pattern in search history */
+!      add_to_history(HIST_SEARCH, buf, TRUE);
+  #endif
+       normal_search(cap, cmdchar == '*' ? '/' : '?', buf, 0);
+      }
+--- 4932,4938 ----
+           STRCAT(buf, "\\>");
+  #ifdef FEAT_CMDHIST
+       /* put pattern in search history */
+!      add_to_history(HIST_SEARCH, buf, TRUE, NUL);
+  #endif
+       normal_search(cap, cmdchar == '*' ? '/' : '?', buf, 0);
+      }
+*** ../vim-6.2.192/src/proto/ex_getln.pro      Sun Aug 10 22:24:37 2003
+--- src/proto/ex_getln.pro     Sun Jan 18 13:36:26 2004
+***************
+*** 25,31 ****
+  int ExpandGeneric __ARGS((expand_T *xp, regmatch_T *regmatch, int *num_file, char_u ***file, char_u *((*func)(expand_T *, int))));
+  char_u *globpath __ARGS((char_u *path, char_u *file));
+  int get_histtype __ARGS((char_u *name));
+! void add_to_history __ARGS((int histype, char_u *new_entry, int in_map));
+  int get_history_idx __ARGS((int histype));
+  char_u *get_history_entry __ARGS((int histype, int idx));
+  int clr_history __ARGS((int histype));
+--- 25,31 ----
+  int ExpandGeneric __ARGS((expand_T *xp, regmatch_T *regmatch, int *num_file, char_u ***file, char_u *((*func)(expand_T *, int))));
+  char_u *globpath __ARGS((char_u *path, char_u *file));
+  int get_histtype __ARGS((char_u *name));
+! void add_to_history __ARGS((int histype, char_u *new_entry, int in_map, int sep));
+  int get_history_idx __ARGS((int histype));
+  char_u *get_history_entry __ARGS((int histype, int idx));
+  int clr_history __ARGS((int histype));
+*** ../vim-6.2.192/src/search.c        Sat Sep 27 19:36:47 2003
+--- src/search.c       Sun Jan 18 13:05:15 2004
+***************
+*** 172,178 ****
+      }
+  #ifdef FEAT_CMDHIST
+      else if (options & SEARCH_HIS)   /* put new pattern in history */
+!      add_to_history(HIST_SEARCH, pat, TRUE);
+  #endif
+  
+  #ifdef FEAT_RIGHTLEFT
+--- 172,178 ----
+      }
+  #ifdef FEAT_CMDHIST
+      else if (options & SEARCH_HIS)   /* put new pattern in history */
+!      add_to_history(HIST_SEARCH, pat, TRUE, NUL);
+  #endif
+  
+  #ifdef FEAT_RIGHTLEFT
+*** ../vim-6.2.192/src/tag.c   Sun Jan 18 20:58:01 2004
+--- src/tag.c  Sun Jan 18 13:05:42 2004
+***************
+*** 2699,2705 ****
+  #if 0        /* disabled for now */
+  #ifdef FEAT_CMDHIST
+           /* put pattern in search history */
+!          add_to_history(HIST_SEARCH, pbuf + 1, TRUE);
+  #endif
+  #endif
+           save_lnum = curwin->w_cursor.lnum;
+--- 2699,2705 ----
+  #if 0        /* disabled for now */
+  #ifdef FEAT_CMDHIST
+           /* put pattern in search history */
+!          add_to_history(HIST_SEARCH, pbuf + 1, TRUE, pbuf[0]);
+  #endif
+  #endif
+           save_lnum = curwin->w_cursor.lnum;
+*** ../vim-6.2.192/src/version.c       Sun Jan 18 21:22:26 2004
+--- src/version.c      Sun Jan 18 21:24:10 2004
+***************
+*** 639,640 ****
+--- 639,642 ----
+  {   /* Add new patch number below this line */
++ /**/
++     193,
+  /**/
+
+-- 
+WOMAN:   Dennis, there's some lovely filth down here.  Oh -- how d'you do?
+ARTHUR:  How do you do, good lady.  I am Arthur, King of the Britons.
+         Who's castle is that?
+WOMAN:   King of the who?
+                                  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/ \\\
+\\\              Project leader for A-A-P -- http://www.A-A-P.org        ///
+ \\\  Help AIDS victims, buy here: http://ICCF-Holland.org/click1.html  ///
diff --git a/6.2.194 b/6.2.194
new file mode 100644 (file)
index 0000000..35fbfe3
--- /dev/null
+++ b/6.2.194
@@ -0,0 +1,840 @@
+To: vim-dev@vim.org
+Subject: Patch 6.2.194
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 6.2.194 (after 6.2.068)
+Problem:    For NetBeans, instead of writing the file and sending an event
+           about it, tell NetBeans to write the file.
+Solution:   Add the "save" command, "netbeansBuffer" command and
+           "buttonRelease" event to the netbeans protocol.  Updated the
+           interface to version 2.2.  (Gordon Prieur)
+           Also: open a fold when the cursor has been positioned.
+           Also: fix memory leak, free result of nb_quote().
+Files:     runtime/doc/netbeans.txt, src/fileio.c, src/netbeans.c,
+           src/normal.c, src/proto/netbeans.pro, src/structs.h
+
+
+*** ../vim-6.2.193/runtime/doc/netbeans.txt    Sun Oct 12 16:42:14 2003
+--- runtime/doc/netbeans.txt   Sat Jan 17 16:38:31 2004
+***************
+*** 1,4 ****
+! *netbeans.txt*  For Vim version 6.2.  Last change: 2003 Sep 12
+  
+  
+                 VIM REFERENCE MANUAL    by Gordon Prieur
+--- 1,4 ----
+! *netbeans.txt*  For Vim version 6.2.  Last change: 2004 Jan 17
+  
+  
+                 VIM REFERENCE MANUAL    by Gordon Prieur
+***************
+*** 14,21 ****
+  6.  Obtaining the External Editor Module     |obtaining-exted|
+  7.  Setting up NetBeans to run with Vim              |netbeans-setup|
+  8.  Messages                                 |netbeans-messages|
+! 9.  Running Vim from Netbeans                        |netbeans-run|
+! 10. Netbeans protocol                                |netbeans-protocol|
+  11. Known problems                           |netbeans-problems|
+  
+  {Vi does not have any of these features}
+--- 14,21 ----
+  6.  Obtaining the External Editor Module     |obtaining-exted|
+  7.  Setting up NetBeans to run with Vim              |netbeans-setup|
+  8.  Messages                                 |netbeans-messages|
+! 9.  Running Vim from NetBeans                        |netbeans-run|
+! 10. NetBeans protocol                                |netbeans-protocol|
+  11. Known problems                           |netbeans-problems|
+  
+  {Vi does not have any of these features}
+***************
+*** 26,32 ****
+  
+  NetBeans is an open source Integrated Development Environment developed
+  jointly by Sun Microsystems, Inc. and the netbeans.org developer community.
+! Initialy just a Java IDE, NetBeans has had C, C++, and Fortran support added
+  in recent releases.
+  
+  For more information visit the main NetBeans web site http://www.netbeans.org
+--- 26,32 ----
+  
+  NetBeans is an open source Integrated Development Environment developed
+  jointly by Sun Microsystems, Inc. and the netbeans.org developer community.
+! Initially just a Java IDE, NetBeans has had C, C++, and Fortran support added
+  in recent releases.
+  
+  For more information visit the main NetBeans web site http://www.netbeans.org
+***************
+*** 91,97 ****
+  
+  The Win32 support is now in beta stage.
+  
+! To use XPM signs on Win32 (e.g. when using with Netbeans) you can compile
+  XPM by yourself or use precompiled libraries from http://iamphet.nm.ru/xpm
+  (for MS Visual C++) or http://gnuwin32.sourceforge.net (for MinGW).
+  
+--- 91,97 ----
+  
+  The Win32 support is now in beta stage.
+  
+! To use XPM signs on Win32 (e.g. when using with NetBeans) you can compile
+  XPM by yourself or use precompiled libraries from http://iamphet.nm.ru/xpm
+  (for MS Visual C++) or http://gnuwin32.sourceforge.net (for MinGW).
+  
+***************
+*** 137,143 ****
+  Unfortunately, some versions do not have this module in their update
+  center. If you cannot download via the update center you will need to
+  download sources and build the module. I will try and get the module
+! available from the NetBeans Update Center so building will be unnecesary.
+  Also check http://externaleditor.netbeans.org for other availability options.
+  
+  To download the External Editor sources via CVS and build your own module,
+--- 137,143 ----
+  Unfortunately, some versions do not have this module in their update
+  center. If you cannot download via the update center you will need to
+  download sources and build the module. I will try and get the module
+! available from the NetBeans Update Center so building will be unnecessary.
+  Also check http://externaleditor.netbeans.org for other availability options.
+  
+  To download the External Editor sources via CVS and build your own module,
+***************
+*** 156,162 ****
+  an Expert tab. In the Properties tab make sure the "Editor Type" is set
+  to "Vim". In the Expert tab make sure the "Vim Command" is correct.
+  
+! You should be carefull if you change the "Vim Command". There are command
+  line options there which must be there for the connection to be properly
+  set up. You can change the command name but thats about it. If your gvim
+  can be found by your $PATH then the VIM Command can start with "gvim". If
+--- 156,162 ----
+  an Expert tab. In the Properties tab make sure the "Editor Type" is set
+  to "Vim". In the Expert tab make sure the "Vim Command" is correct.
+  
+! You should be careful if you change the "Vim Command". There are command
+  line options there which must be there for the connection to be properly
+  set up. You can change the command name but thats about it. If your gvim
+  can be found by your $PATH then the VIM Command can start with "gvim". If
+***************
+*** 172,208 ****
+  ==============================================================================
+  8. Messages                                          *netbeans-messages*
+  
+! These messages are specific for Netbeans:
+  
+                                                       *E463*
+  Region is guarded, cannot modify
+!              Netbeans defines guarded areas in the text, which you cannot
+               change.
+  
+  ==============================================================================
+! 9. Running Vim from Netbeans                         *netbeans-run*
+  
+! Netbeans starts Vim with the |-nb| argument.  The full form is: >
+       -nb:{hostname}:{addr}:{password}
+  
+! {hostname} is the name of the machine where Netbeans is running.  When omitted
+  the environment variable "__NETBEANS_HOST" is used or the default "localhost".
+  
+! {addr} is the port number for Netbeans.  When omitted the environment variable
+  "__NETBEANS_SOCKET" is used or the default 3219.
+  
+! {password} is the password for connecting to Netbeans.  When omitted the
+  environment variable "__NETBEANS_VIM_PASSWORD" is used or "changeme".
+  
+  ==============================================================================
+! 10. Netbeans protocol                                        *netbeans-protocol*
+  
+! The communication between Netbeans and Vim uses plain text messages.  This
+  protocol was first designed to work with the external editor module of
+! Netbeans (see http://externaleditor.netbeans.org).  Later it was extended to
+  work with Agide (A-A-P GUI IDE, see http://www.a-a-p.org).  The extensions are
+  marked with "version 2.1".
+  
+  The messages are currently sent over a socket.  Since the messages are in
+  plain UTF-8 text this protocol could also be used with any other communication
+  mechanism.
+--- 172,228 ----
+  ==============================================================================
+  8. Messages                                          *netbeans-messages*
+  
+! These messages are specific for NetBeans:
+  
+                                                       *E463*
+  Region is guarded, cannot modify
+!              NetBeans defines guarded areas in the text, which you cannot
+               change.
+  
++                                                      *E656*
++ NetBeans dissallows writes of unmodified buffers
++              NetBeans does not support writes of unmodified buffers that
++              were opened from NetBeans.
++ 
++                                                      *E657*
++ Partial writes disallowed for NetBeans buffers
++              NetBeans does not support partial writes for buffers that were
++              opened from NetBeans.
++ 
+  ==============================================================================
+! 9. Running Vim from NetBeans                         *netbeans-run*
+  
+! NetBeans starts Vim with the |-nb| argument.  The full form is: >
+       -nb:{hostname}:{addr}:{password}
+  
+! {hostname} is the name of the machine where NetBeans is running.  When omitted
+  the environment variable "__NETBEANS_HOST" is used or the default "localhost".
+  
+! {addr} is the port number for NetBeans.  When omitted the environment variable
+  "__NETBEANS_SOCKET" is used or the default 3219.
+  
+! {password} is the password for connecting to NetBeans.  When omitted the
+  environment variable "__NETBEANS_VIM_PASSWORD" is used or "changeme".
+  
+  ==============================================================================
+! 10. NetBeans protocol                                        *netbeans-protocol*
+  
+! The communication between NetBeans and Vim uses plain text messages.  This
+  protocol was first designed to work with the external editor module of
+! NetBeans (see http://externaleditor.netbeans.org).  Later it was extended to
+  work with Agide (A-A-P GUI IDE, see http://www.a-a-p.org).  The extensions are
+  marked with "version 2.1".
+  
++ Version 2.2 of the protocol has several minor changes which should only
++ affect NetBeans users (ie, not Agide users). However, a bug was fixed which
++ could cause confusion. The netbeans_saved() function sent a "save" protocol
++ command. In protocol version 2.1 and earlier this was incorrectly interpreted
++ as a notification that a write had taken place. In reality, it told NetBeans
++ to save the file so multiple writes were being done. This caused various
++ problems and has been fixed in 2.2. To decrease the likelyhood of this
++ confusion happening again, netbeans_saved() has been renamed to
++ netbeans_save_buffer().
++ 
+  The messages are currently sent over a socket.  Since the messages are in
+  plain UTF-8 text this protocol could also be used with any other communication
+  mechanism.
+***************
+*** 304,310 ****
+                  typeNum      number  sequence number of the annotation
+                                       defined with defineAnnoType for this
+                                       buffer
+!                 off          number  offset where annotion is to be placed
+                  len          number  not used
+               In version 2.1 "lnum/col" can be used instead of "off".
+  
+--- 324,330 ----
+                  typeNum      number  sequence number of the annotation
+                                       defined with defineAnnoType for this
+                                       buffer
+!                 off          number  offset where annotation is to be placed
+                  len          number  not used
+               In version 2.1 "lnum/col" can be used instead of "off".
+  
+***************
+*** 316,322 ****
+  
+  create               Creates a buffer without a name.  Replaces the current buffer
+               (it's hidden when it was changed).
+!              Netbeans uses this as the first command for a file that is
+               being opened.  The sequence of commands could be:
+                       create
+                       setCaretListener        (ignored)
+--- 336,342 ----
+  
+  create               Creates a buffer without a name.  Replaces the current buffer
+               (it's hidden when it was changed).
+!              NetBeans uses this as the first command for a file that is
+               being opened.  The sequence of commands could be:
+                       create
+                       setCaretListener        (ignored)
+***************
+*** 374,383 ****
+  moveAnnoToFront serNum
+               Not implemented.
+  
+  putBufferNumber pathname
+               Associate a buffer number with the Vim buffer by the name
+               "pathname", a string argument.  To be used when the editor
+!              repored editing another file to the IDE and the IDE needs to
+               tell the editor what buffer number it will use for this file.
+               Also marks the buffer as initialized.
+               New in version 2.1.
+--- 394,408 ----
+  moveAnnoToFront serNum
+               Not implemented.
+  
++ netbeansBuffer isNetbeansBuffer
++              If "isNetbeansBuffer" is "T" then this buffer is ``owned'' by
++              NetBeans.
++              New in version 2.2.
++ 
+  putBufferNumber pathname
+               Associate a buffer number with the Vim buffer by the name
+               "pathname", a string argument.  To be used when the editor
+!              reported editing another file to the IDE and the IDE needs to
+               tell the editor what buffer number it will use for this file.
+               Also marks the buffer as initialized.
+               New in version 2.1.
+***************
+*** 389,394 ****
+--- 414,429 ----
+               Remove a previously place annotation for this buffer.
+               "serNum" is the same number used in addAnno.
+  
++ save         Save the buffer when it was modified.  The other side of the
++              interface is expected to write the buffer and invoke
++              "setModified" to reset the "changed" flag of the buffer.
++              The writing is skipped when one of these conditions is true:
++              - 'write' is not set
++              - the buffer is read-only
++              - the buffer does not have a file name
++              - 'buftype' disallows writing
++              New in version 2.2.
++ 
+  setAsUser    Not implemented.
+  
+  setBufferNumber pathname
+***************
+*** 435,441 ****
+  
+  setTitle name
+               Set the title for the buffer to "name", a string argument.
+!              The title is only used for Netbeans functions, not by Vim.
+  
+  setVisible visible
+               When the boolean argument "visible" is "T", goto the buffer.
+--- 470,476 ----
+  
+  setTitle name
+               Set the title for the buffer to "name", a string argument.
+!              The title is only used for NetBeans functions, not by Vim.
+  
+  setVisible visible
+               When the boolean argument "visible" is "T", goto the buffer.
+***************
+*** 550,555 ****
+--- 585,599 ----
+               the mouse pointer.
+               New in version 2.1.
+  
++ buttonRelease button lnum col
++              Report which button was pressed and the location of the cursor
++              at the time of the release.  Only for buffers that are owned
++              by NetBeans.  This event is not sent if the button was
++              released while the mouse was in the status line or in a
++              separator line. If col is less than 1 the button release was
++              in the sign area.
++              New in version 2.2.
++ 
+  fileClosed   Not implemented.
+  
+  fileModified Not implemented.
+***************
+*** 558,564 ****
+               A file was opened by the user.
+               Arguments:
+                  pathname     string    name of the file
+!                 open         boolean   always "F"
+                  modified     boolean   always "F"
+  
+  geometry cols rows x y
+--- 602,608 ----
+               A file was opened by the user.
+               Arguments:
+                  pathname     string    name of the file
+!                 open         boolean   always "T"
+                  modified     boolean   always "F"
+  
+  geometry cols rows x y
+***************
+*** 630,636 ****
+               Only fired when enabled, see "startDocumentListen".
+  
+  version vers Report the version of the interface implementation.  Vim
+!              reports "2.1" (including the quotes).
+  
+  
+  10.6 Special messages                                        *nb-special*
+--- 674,680 ----
+               Only fired when enabled, see "startDocumentListen".
+  
+  version vers Report the version of the interface implementation.  Vim
+!              reports "2.2" (including the quotes).
+  
+  
+  10.6 Special messages                                        *nb-special*
+*** ../vim-6.2.193/src/fileio.c        Sun Jan 18 21:04:53 2004
+--- src/fileio.c       Thu Jan 15 22:07:40 2004
+***************
+*** 2658,2663 ****
+--- 2658,2691 ----
+      }
+  #endif
+  
++ #ifdef FEAT_NETBEANS_INTG
++     if (usingNetbeans && isNetbeansBuffer(buf))
++     {
++      if (whole)
++      {
++          if (buf->b_changed)
++          {
++              netbeans_save_buffer(buf);
++              return retval;
++          }
++          else
++          {
++              errnum = (char_u *)"E656: ";
++              errmsg = (char_u *)_("NetBeans dissallows writes of unmodified buffers");
++              buffer = NULL;
++              goto fail;
++          }
++      }
++      else
++      {
++          errnum = (char_u *)"E657: ";
++          errmsg = (char_u *)_("Partial writes disallowed for NetBeans buffers");
++          buffer = NULL;
++          goto fail;
++      }
++     }
++ #endif
++ 
+      if (shortmess(SHM_OVER) && !exiting)
+       msg_scroll = FALSE;         /* overwrite previous file message */
+      else
+***************
+*** 3900,3908 ****
+      {
+       unchanged(buf, TRUE);
+       u_unchanged(buf);
+- #ifdef FEAT_NETBEANS_INTG
+-      netbeans_saved(buf);
+- #endif
+      }
+  
+      /*
+--- 3928,3933 ----
+*** ../vim-6.2.193/src/netbeans.c      Mon Dec 29 20:14:44 2003
+--- src/netbeans.c     Tue Jan 13 13:55:27 2004
+***************
+*** 62,68 ****
+  
+  /* The first implementation (working only with Netbeans) returned "1.1".  The
+   * protocol implemented here also supports A-A-P. */
+! static char *ExtEdProtocolVersion = "2.1";
+  
+  static long pos2off __ARGS((buf_T *, pos_T *));
+  static pos_T *off2pos __ARGS((buf_T *, long));
+--- 62,68 ----
+  
+  /* The first implementation (working only with Netbeans) returned "1.1".  The
+   * protocol implemented here also supports A-A-P. */
+! static char *ExtEdProtocolVersion = "2.2";
+  
+  static long pos2off __ARGS((buf_T *, pos_T *));
+  static pos_T *off2pos __ARGS((buf_T *, long));
+***************
+*** 719,724 ****
+--- 719,726 ----
+  
+      cmdno = strtol((char *)q, (char **)&q, 10);
+  
++     q = skipwhite(q);
++ 
+      if (nb_do_cmd(bufno, verb, isfunc, cmdno, q) == FAIL)
+      {
+       nbdebug(("nb_parse_cmd: Command error for \"%s\"\n", cmd));
+***************
+*** 774,779 ****
+--- 776,790 ----
+  }
+  
+  /*
++  * Is this a NetBeans-owned buffer?
++  */
++     int
++ isNetbeansBuffer(buf_T *bufp)
++ {
++     return bufp->b_netbeans_file;
++ }
++ 
++ /*
+   * Given a Netbeans buffer number, return the netbeans buffer.
+   * Returns NULL for 0 or a negative number. A 0 bufno means a
+   * non-buffer related command has been sent.
+***************
+*** 1010,1016 ****
+  
+      if (*p++ != '"')
+      {
+!      nbdebug(("nb_unquote called with string that doesn't start with a quote!: %s", p));
+       result[0] = NUL;
+       return result;
+      }
+--- 1021,1028 ----
+  
+      if (*p++ != '"')
+      {
+!      nbdebug(("nb_unquote called with string that doesn't start with a quote!: %s\n",
+!                      p));
+       result[0] = NUL;
+       return result;
+      }
+***************
+*** 1311,1317 ****
+           off = strtol((char *)args, (char **)&args, 10);
+  
+           /* get text to be inserted */
+!          ++args; /* skip space */
+           args = to_free = (char_u *)nb_unquote(args, NULL);
+  
+           if (buf == NULL || buf->bufp == NULL)
+--- 1323,1329 ----
+           off = strtol((char *)args, (char **)&args, 10);
+  
+           /* get text to be inserted */
+!          args = skipwhite(args);
+           args = to_free = (char_u *)nb_unquote(args, NULL);
+  
+           if (buf == NULL || buf->bufp == NULL)
+***************
+*** 1494,1500 ****
+               return FAIL;
+           }
+           vim_free(buf->displayname);
+!          buf->displayname = nb_unquote(++args, NULL);
+           nbdebug(("    SETTITLE %d %s\n", bufno, buf->displayname));
+  /* =====================================================================*/
+       }
+--- 1506,1512 ----
+               return FAIL;
+           }
+           vim_free(buf->displayname);
+!          buf->displayname = nb_unquote(args, NULL);
+           nbdebug(("    SETTITLE %d %s\n", bufno, buf->displayname));
+  /* =====================================================================*/
+       }
+***************
+*** 1528,1534 ****
+               EMSG("E641: null buf in setBufferNumber");
+               return FAIL;
+           }
+!          to_free = (char_u *)nb_unquote(++args, NULL);
+           if (to_free == NULL)
+               return FAIL;
+           bufp = buflist_findname(to_free);
+--- 1540,1546 ----
+               EMSG("E641: null buf in setBufferNumber");
+               return FAIL;
+           }
+!          to_free = (char_u *)nb_unquote(args, NULL);
+           if (to_free == NULL)
+               return FAIL;
+           bufp = buflist_findname(to_free);
+***************
+*** 1567,1573 ****
+               return FAIL;
+           }
+           vim_free(buf->displayname);
+!          buf->displayname = nb_unquote(++args, NULL);
+           nbdebug(("    SETFULLNAME %d %s\n", bufno, buf->displayname));
+  
+           netbeansReadFile = 0; /* don't try to open disk file */
+--- 1579,1585 ----
+               return FAIL;
+           }
+           vim_free(buf->displayname);
+!          buf->displayname = nb_unquote(args, NULL);
+           nbdebug(("    SETFULLNAME %d %s\n", bufno, buf->displayname));
+  
+           netbeansReadFile = 0; /* don't try to open disk file */
+***************
+*** 1588,1594 ****
+           }
+           /* Edit a file: like create + setFullName + read the file. */
+           vim_free(buf->displayname);
+!          buf->displayname = nb_unquote(++args, NULL);
+           nbdebug(("    EDITFILE %d %s\n", bufno, buf->displayname));
+           do_ecmd(0, (char_u *)buf->displayname, NULL, NULL, ECMD_ONE,
+                                                    ECMD_HIDE + ECMD_OLDBUF);
+--- 1600,1606 ----
+           }
+           /* Edit a file: like create + setFullName + read the file. */
+           vim_free(buf->displayname);
+!          buf->displayname = nb_unquote(args, NULL);
+           nbdebug(("    EDITFILE %d %s\n", bufno, buf->displayname));
+           do_ecmd(0, (char_u *)buf->displayname, NULL, NULL, ECMD_ONE,
+                                                    ECMD_HIDE + ECMD_OLDBUF);
+***************
+*** 1603,1609 ****
+       }
+       else if (streq((char *)cmd, "setVisible"))
+       {
+-          ++args;
+           if (buf == NULL || buf->bufp == NULL)
+           {
+  /*           EMSG("E645: null bufp in setVisible"); */
+--- 1615,1620 ----
+***************
+*** 1636,1642 ****
+       }
+       else if (streq((char *)cmd, "setModified"))
+       {
+-          ++args;
+           if (buf == NULL || buf->bufp == NULL)
+           {
+  /*           EMSG("E646: null bufp in setModified"); */
+--- 1647,1652 ----
+***************
+*** 1667,1673 ****
+           if (balloonEval != NULL)
+           {
+               vim_free(text);
+!              text = nb_unquote(++args, NULL);
+               if (text != NULL)
+                   gui_mch_post_balloon(balloonEval, (char_u *)text);
+           }
+--- 1677,1683 ----
+           if (balloonEval != NULL)
+           {
+               vim_free(text);
+!              text = nb_unquote(args, NULL);
+               if (text != NULL)
+                   gui_mch_post_balloon(balloonEval, (char_u *)text);
+           }
+***************
+*** 1681,1687 ****
+           char_u *s;
+  #endif
+  
+-          ++args;
+           if (buf == NULL || buf->bufp == NULL)
+           {
+               EMSG("E647: null bufp in setDot");
+--- 1691,1696 ----
+***************
+*** 1997,2002 ****
+--- 2006,2051 ----
+           }
+  /* =====================================================================*/
+       }
++      else if (streq((char *)cmd, "save"))
++      {
++          if (buf == NULL || buf->bufp == NULL)
++          {
++              nbdebug(("    null bufp in %s command", cmd));
++              return FAIL;
++          }
++ 
++          /* the following is taken from ex_cmds.c (do_wqall function) */
++          if (bufIsChanged(buf->bufp))
++          {
++              /* Only write if the buffer can be written. */
++              if (p_write
++                      && !buf->bufp->b_p_ro
++                      && buf->bufp->b_ffname != NULL
++ #ifdef FEAT_QUICKFIX
++                      && !bt_dontwrite(buf->bufp)
++ #endif
++                      )
++              {
++                  buf_write_all(buf->bufp, FALSE);
++ #ifdef FEAT_AUTOCMD
++                  /* an autocommand may have deleted the buffer */
++                  if (!buf_valid(buf->bufp))
++                      buf->bufp = NULL;
++ #endif
++              }
++          }
++ /* =====================================================================*/
++      }
++      else if (streq((char *)cmd, "netbeansBuffer"))
++      {
++          if (buf == NULL || buf->bufp == NULL)
++          {
++              nbdebug(("    null bufp in %s command", cmd));
++              return FAIL;
++          }
++          buf->bufp->b_netbeans_file = *args == 'T' ? TRUE : FALSE;
++ /* =====================================================================*/
++      }
+       else if (streq((char *)cmd, "version"))
+       {
+           nbdebug(("    Version = %s\n", (char *) args));
+***************
+*** 2266,2272 ****
+      sprintf(buffer, "0:fileOpened=%d \"%s\" %s %s\n",
+           0,
+           (char *)q,
+!          "F",  /* open in NetBeans */
+           "F"); /* modified */
+  
+      vim_free(q);
+--- 2315,2321 ----
+      sprintf(buffer, "0:fileOpened=%d \"%s\" %s %s\n",
+           0,
+           (char *)q,
+!          "T",  /* open in NetBeans */
+           "F"); /* modified */
+  
+      vim_free(q);
+***************
+*** 2464,2469 ****
+--- 2513,2542 ----
+  }
+  
+  /*
++  * Send a button release event back to netbeans. Its up to netbeans
++  * to decide what to do (if anything) with this event.
++  */
++     void
++ netbeans_button_release(int button)
++ {
++     char     buf[128];
++     int              bufno;
++ 
++     bufno = nb_getbufno(curbuf);
++ 
++     if (bufno >= 0 && curwin != NULL && curwin->w_buffer == curbuf)
++     {
++      int lnum = curwin->w_cursor.lnum;
++      int col = mouse_col - curwin->w_wincol - (curwin->w_p_nu ? 9 : 1);
++ 
++      sprintf(buf, "%d:buttonRelease=%d %d %d %d\n", bufno, cmdno, button, lnum, col);
++      nbdebug(("EVT: %s", buf));
++      nb_send(buf, "netbeans_button_release");
++     }
++ }
++ 
++ 
++ /*
+   * Send a keypress event back to netbeans. This usualy simulates some
+   * kind of function key press.
+   */
+***************
+*** 2532,2538 ****
+   * Send a save event to netbeans.
+   */
+      void
+! netbeans_saved(buf_T *bufp)
+  {
+      char_u   buf[64];
+      int              bufno;
+--- 2605,2611 ----
+   * Send a save event to netbeans.
+   */
+      void
+! netbeans_save_buffer(buf_T *bufp)
+  {
+      char_u   buf[64];
+      int              bufno;
+***************
+*** 2546,2552 ****
+  
+      sprintf((char *)buf, "%d:save=%d\n", bufno, cmdno);
+      nbdebug(("EVT: %s", buf));
+!     nb_send((char *)buf, "netbeans_saved");
+  }
+  
+  
+--- 2619,2625 ----
+  
+      sprintf((char *)buf, "%d:save=%d\n", bufno, cmdno);
+      nbdebug(("EVT: %s", buf));
+!     nb_send((char *)buf, "netbeans_save_buffer");
+  }
+  
+  
+*** ../vim-6.2.193/src/normal.c        Sun Jan 18 21:27:18 2004
+--- src/normal.c       Sun Jan 18 18:49:04 2004
+***************
+*** 2473,2478 ****
+--- 2473,2490 ----
+      in_sep_line = (jump_flags & IN_SEP_LINE);
+  #endif
+  
++ #ifdef FEAT_NETBEANS_INTG
++     if (usingNetbeans && isNetbeansBuffer(curbuf)
++                          && !(jump_flags & (IN_STATUS_LINE | IN_SEP_LINE)))
++     {
++      int key = KEY2TERMCAP1(c);
++ 
++      if (key == (int)KE_LEFTRELEASE || key == (int)KE_MIDDLERELEASE
++                                             || key == (int)KE_RIGHTRELEASE)
++          netbeans_button_release(which_button);
++     }
++ #endif
++ 
+      /* When jumping to another window, clear a pending operator.  That's a bit
+       * friendlier than beeping and not jumping to that window. */
+      if (curwin != old_curwin && oap != NULL && oap->op_type != OP_NOP)
+*** ../vim-6.2.193/src/proto/netbeans.pro      Sun Oct 12 16:42:14 2003
+--- src/proto/netbeans.pro     Tue Jan 13 13:48:34 2004
+***************
+*** 3,8 ****
+--- 3,9 ----
+  void netbeans_gtk_connect __ARGS((void));
+  void netbeans_w32_connect __ARGS((void));
+  void messageFromNetbeansW32 __ARGS((void));
++ int isNetbeansBuffer __ARGS((buf_T *bufp));
+  void netbeans_end __ARGS((void));
+  void netbeans_startup_done __ARGS((void));
+  void netbeans_frame_moved __ARGS((int new_x, int new_y));
+***************
+*** 11,18 ****
+  void netbeans_inserted __ARGS((buf_T *bufp, linenr_T linenr, colnr_T col, int oldlen, char_u *txt, int newlen));
+  void netbeans_removed __ARGS((buf_T *bufp, linenr_T linenr, colnr_T col, long len));
+  void netbeans_unmodified __ARGS((buf_T *bufp));
+  void netbeans_keycommand __ARGS((int key));
+! void netbeans_saved __ARGS((buf_T *bufp));
+  void netbeans_deleted_all_lines __ARGS((buf_T *bufp));
+  int netbeans_is_guarded __ARGS((linenr_T top, linenr_T bot));
+  void netbeans_draw_multisign_indicator __ARGS((int row));
+--- 12,20 ----
+  void netbeans_inserted __ARGS((buf_T *bufp, linenr_T linenr, colnr_T col, int oldlen, char_u *txt, int newlen));
+  void netbeans_removed __ARGS((buf_T *bufp, linenr_T linenr, colnr_T col, long len));
+  void netbeans_unmodified __ARGS((buf_T *bufp));
++ void netbeans_button_release __ARGS((int button));
+  void netbeans_keycommand __ARGS((int key));
+! void netbeans_save_buffer __ARGS((buf_T *bufp));
+  void netbeans_deleted_all_lines __ARGS((buf_T *bufp));
+  int netbeans_is_guarded __ARGS((linenr_T top, linenr_T bot));
+  void netbeans_draw_multisign_indicator __ARGS((int row));
+*** ../vim-6.2.193/src/structs.h       Sun Jan 18 21:12:26 2004
+--- src/structs.h      Tue Jan 13 12:57:23 2004
+***************
+*** 1233,1238 ****
+--- 1233,1242 ----
+      signlist_T       *b_signlist;    /* list of signs to draw */
+  #endif
+  
++ #ifdef FEAT_NETBEANS_INTG
++     int              b_netbeans_file;    /* TRUE when buffer is owned by NetBeans */
++ #endif
++ 
+  };
+  
+  /*
+*** ../vim-6.2.193/src/version.c       Sun Jan 18 21:27:18 2004
+--- src/version.c      Sun Jan 18 21:29:39 2004
+***************
+*** 639,640 ****
+--- 639,642 ----
+  {   /* Add new patch number below this line */
++ /**/
++     194,
+  /**/
+
+-- 
+`When any government, or any church for that matter, undertakes to say to
+ its subjects, "This you may not read, this you must not see, this you are
+ forbidden to know," the end result is tyranny and oppression no matter how
+ holy the motives' -- Robert A Heinlein, "If this goes on --"
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        Sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\              Project leader for A-A-P -- http://www.A-A-P.org        ///
+ \\\  Help AIDS victims, buy here: http://ICCF-Holland.org/click1.html  ///
diff --git a/6.2.195 b/6.2.195
new file mode 100644 (file)
index 0000000..7a8172d
--- /dev/null
+++ b/6.2.195
@@ -0,0 +1,63 @@
+To: vim-dev@vim.org
+Subject: Patch 6.2.195
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 6.2.195 (after 6.2.190)
+Problem:    Compiling fails for missing CPO_REMMARK symbol.
+Solution:   Add the patch I forgot to include...
+Files:     src/option.h
+
+
+*** ../vim-6.2.194/src/option.h        Sat May 17 21:02:23 2003
+--- src/option.h       Mon Jan 12 20:21:42 2004
+***************
+*** 142,147 ****
+--- 142,148 ----
+  #define CPO_OVERNEW  'O'     /* silently overwrite new file */
+  #define CPO_LISP     'p'     /* 'lisp' indenting */
+  #define CPO_REDO     'r'
++ #define CPO_REMMARK  'R'     /* remove marks when filtering */
+  #define CPO_BUFOPT   's'
+  #define CPO_BUFOPTGLOB       'S'
+  #define CPO_TAGPAT   't'
+***************
+*** 157,163 ****
+  #define CPO_STAR     '*'     /* ":*" means ":@" */
+  #define CPO_SPECI    '<'     /* don't recognize <> in mappings */
+  #define CPO_DEFAULT  "aABceFs"
+! #define CPO_ALL              "aAbBcCdDeEfFgijJkKlLmMnoOprsStuvwWxy$!%*<"
+  
+  /* characters for p_ww option: */
+  #define WW_ALL               "bshl<>[],~"
+--- 158,164 ----
+  #define CPO_STAR     '*'     /* ":*" means ":@" */
+  #define CPO_SPECI    '<'     /* don't recognize <> in mappings */
+  #define CPO_DEFAULT  "aABceFs"
+! #define CPO_ALL              "aAbBcCdDeEfFgijJkKlLmMnoOprRsStuvwWxy$!%*<"
+  
+  /* characters for p_ww option: */
+  #define WW_ALL               "bshl<>[],~"
+*** ../vim-6.2.194/src/version.c       Sun Jan 18 21:31:56 2004
+--- src/version.c      Sun Jan 18 23:21:27 2004
+***************
+*** 639,640 ****
+--- 639,642 ----
+  {   /* Add new patch number below this line */
++ /**/
++     195,
+  /**/
+
+-- 
+The question is:  What do you do with your life?
+The wrong answer is: Become the richest guy in the graveyard.
+                               (billionaire and Oracle founder Larry Ellison)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        Sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\              Project leader for A-A-P -- http://www.A-A-P.org        ///
+ \\\  Help AIDS victims, buy here: http://ICCF-Holland.org/click1.html  ///
diff --git a/6.2.196 b/6.2.196
new file mode 100644 (file)
index 0000000..d9148ce
--- /dev/null
+++ b/6.2.196
@@ -0,0 +1,57 @@
+To: vim-dev@vim.org
+Subject: Patch 6.2.196
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 6.2.196 (after 6.2.191)
+Problem:    Rebuilding the documentation doesn't use the sponsor.txt file.
+Solution:   Add sponsor.txt to the Makefile. (Christian J. Robinson)
+Files:     runtime/doc/Makefile
+
+
+*** ../vim-6.2.195/runtime/doc/Makefile        Sun Jun  1 16:10:00 2003
+--- runtime/doc/Makefile       Tue Jan 20 11:59:49 2004
+***************
+*** 77,82 ****
+--- 77,83 ----
+       rileft.txt \
+       scroll.txt \
+       sign.txt \
++      sponsor.txt \
+       starting.txt \
+       syntax.txt \
+       tagsrch.txt \
+***************
+*** 193,198 ****
+--- 194,200 ----
+       rileft.html \
+       scroll.html \
+       sign.html \
++      sponsor.html \
+       starting.html \
+       syntax.html \
+       tagsrch.html \
+*** ../vim-6.2.195/src/version.c       Sun Jan 18 23:21:49 2004
+--- src/version.c      Sun Jan 25 19:27:58 2004
+***************
+*** 639,640 ****
+--- 639,642 ----
+  {   /* Add new patch number below this line */
++ /**/
++     196,
+  /**/
+
+-- 
+A law to reduce crime states: "It is mandatory for a motorist with criminal
+intentions to stop at the city limits and telephone the chief of police as he
+is entering the town.
+               [real standing law in Washington, United States of America]
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        Sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\              Project leader for A-A-P -- http://www.A-A-P.org        ///
+ \\\  Help AIDS victims, buy here: http://ICCF-Holland.org/click1.html  ///
diff --git a/6.2.197 b/6.2.197
new file mode 100644 (file)
index 0000000..8313aec
--- /dev/null
+++ b/6.2.197
@@ -0,0 +1,167 @@
+To: vim-dev@vim.org
+Subject: Patch 6.2.197
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 6.2.197
+Problem:    It is not possible to force a redraw of status lines. (Gary
+           Johnson)
+Solution:   Add the ":redrawstatus" command.
+Files:     runtime/doc/various.txt, src/ex_cmds.h, src/ex_docmd.c,
+           src/screen.c
+
+
+*** ../vim-6.2.196/runtime/doc/various.txt     Sun Jun  1 12:20:37 2003
+--- runtime/doc/various.txt    Wed Jan 21 13:57:43 2004
+***************
+*** 1,4 ****
+! *various.txt*   For Vim version 6.2.  Last change: 2003 May 11
+  
+  
+                 VIM REFERENCE MANUAL    by Bram Moolenaar
+--- 1,4 ----
+! *various.txt*   For Vim version 6.2.  Last change: 2004 Jan 21
+  
+  
+                 VIM REFERENCE MANUAL    by Bram Moolenaar
+***************
+*** 24,35 ****
+                       or function.  Also when halfway a mapping and
+                       'lazyredraw' is set.
+  
+                                                       *N<Del>*
+  <Del>                        When entering a number: Remove the last digit.
+                       Note: if you like to use <BS> for this, add this
+!                      mapping to your .vimrc:
+                               :map CTRL-V <BS>   CTRL-V <Del>
+!                      See |:fixdel| if your <Del> key does not do what you
+                       want.
+  
+  :as[cii]     or                                      *ga* *:as* *:ascii*
+--- 24,42 ----
+                       or function.  Also when halfway a mapping and
+                       'lazyredraw' is set.
+  
++                                              *:redraws* *:redrawstatus*
++ :redraws[tatus][!]   Redraw the status line of the current window.  When !
++                      is included all status lines are redrawn.
++                      Useful to update the status line(s) when 'statusline'
++                      includes an item that doesn't cause automatic
++                      updating.
++ 
+                                                       *N<Del>*
+  <Del>                        When entering a number: Remove the last digit.
+                       Note: if you like to use <BS> for this, add this
+!                      mapping to your .vimrc: >
+                               :map CTRL-V <BS>   CTRL-V <Del>
+! <                    See |:fixdel| if your <Del> key does not do what you
+                       want.
+  
+  :as[cii]     or                                      *ga* *:as* *:ascii*
+*** ../vim-6.2.196/src/ex_cmds.h       Sun Jan 18 20:46:13 2004
+--- src/ex_cmds.h      Mon Jan 19 12:13:22 2004
+***************
+*** 618,623 ****
+--- 618,625 ----
+                       BANG|FILES|TRLBAR|CMDWIN),
+  EX(CMD_redraw,               "redraw",       ex_redraw,
+                       BANG|TRLBAR|CMDWIN),
++ EX(CMD_redrawstatus, "redrawstatus", ex_redrawstatus,
++                      BANG|TRLBAR|CMDWIN),
+  EX(CMD_registers,    "registers",    ex_display,
+                       EXTRA|NOTRLCOM|TRLBAR|CMDWIN),
+  EX(CMD_resize,               "resize",       ex_resize,
+*** ../vim-6.2.196/src/ex_docmd.c      Sun Jan 18 21:12:26 2004
+--- src/ex_docmd.c     Thu Jan 22 17:22:52 2004
+***************
+*** 269,274 ****
+--- 269,275 ----
+  static void  ex_redo __ARGS((exarg_T *eap));
+  static void  ex_redir __ARGS((exarg_T *eap));
+  static void  ex_redraw __ARGS((exarg_T *eap));
++ static void  ex_redrawstatus __ARGS((exarg_T *eap));
+  static void  close_redir __ARGS((void));
+  static void  ex_mkrc __ARGS((exarg_T *eap));
+  static void  ex_mark __ARGS((exarg_T *eap));
+***************
+*** 7178,7183 ****
+--- 7179,7213 ----
+      RedrawingDisabled = r;
+      p_lz = p;
+      out_flush();
++ }
++ 
++ /*
++  * ":redrawstatus": force redraw of status line(s)
++  */
++ /*ARGSUSED*/
++     static void
++ ex_redrawstatus(eap)
++     exarg_T  *eap;
++ {
++ #if defined(FEAT_WINDOWS)
++     int              r = RedrawingDisabled;
++     int              p = p_lz;
++ 
++     RedrawingDisabled = 0;
++     p_lz = FALSE;
++     if (eap->forceit)
++      status_redraw_all();
++     else
++      status_redraw_curbuf();
++     update_screen(
++ # ifdef FEAT_VISUAL
++          VIsual_active ? INVERTED :
++ # endif
++          0);
++     RedrawingDisabled = r;
++     p_lz = p;
++     out_flush();
++ #endif
+  }
+  
+      static void
+*** ../vim-6.2.196/src/screen.c        Mon Aug  4 20:55:46 2003
+--- src/screen.c       Thu Jan 22 17:22:13 2004
+***************
+*** 4584,4590 ****
+       }
+  }
+  
+- # if defined(FEAT_KEYMAP) || defined(PROTO)
+  /*
+   * mark all status lines of the current buffer for redraw
+   */
+--- 4584,4589 ----
+***************
+*** 4600,4606 ****
+           redraw_later(VALID);
+       }
+  }
+- # endif
+  
+  /*
+   * Redraw all status lines that need to be redrawn.
+--- 4599,4604 ----
+*** ../vim-6.2.196/src/version.c       Sun Jan 25 19:28:46 2004
+--- src/version.c      Sun Jan 25 19:30:35 2004
+***************
+*** 639,640 ****
+--- 639,642 ----
+  {   /* Add new patch number below this line */
++ /**/
++     197,
+  /**/
+
+-- 
+No children may attend school with their breath smelling of "wild onions."
+               [real standing law in West Virginia, United States of America]
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        Sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\              Project leader for A-A-P -- http://www.A-A-P.org        ///
+ \\\  Help AIDS victims, buy here: http://ICCF-Holland.org/click1.html  ///
diff --git a/6.2.198 b/6.2.198
new file mode 100644 (file)
index 0000000..d391d34
--- /dev/null
+++ b/6.2.198
@@ -0,0 +1,55 @@
+To: vim-dev@vim.org
+Subject: Patch 6.2.198
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 6.2.198
+Problem:    A few messages are not translated. (Ernest Adrogue)
+Solution:   Mark the messages to be translated.
+Files:      src/ex_cmds.c
+    
+
+*** ../vim-6.2.197/src/ex_cmds.c       Sun Jan 18 21:12:26 2004
+--- src/ex_cmds.c      Mon Jan 19 14:31:14 2004
+***************
+*** 5712,5720 ****
+       msg_outtrans(sp->sn_icon);
+  #ifdef FEAT_SIGN_ICONS
+       if (sp->sn_image == NULL)
+!          MSG_PUTS(" (NOT FOUND)");
+  #else
+!      MSG_PUTS(" (not supported)");
+  #endif
+      }
+      if (sp->sn_text != NULL)
+--- 5711,5719 ----
+       msg_outtrans(sp->sn_icon);
+  #ifdef FEAT_SIGN_ICONS
+       if (sp->sn_image == NULL)
+!          MSG_PUTS(_(" (NOT FOUND)"));
+  #else
+!      MSG_PUTS(_(" (not supported)"));
+  #endif
+      }
+      if (sp->sn_text != NULL)
+*** ../vim-6.2.197/src/version.c       Sun Jan 25 19:32:46 2004
+--- src/version.c      Sun Jan 25 19:33:59 2004
+***************
+*** 639,640 ****
+--- 639,642 ----
+  {   /* Add new patch number below this line */
++ /**/
++     198,
+  /**/
+
+-- 
+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/ \\\
+\\\              Project leader for A-A-P -- http://www.A-A-P.org        ///
+ \\\  Help AIDS victims, buy here: http://ICCF-Holland.org/click1.html  ///
diff --git a/6.2.199 b/6.2.199
new file mode 100644 (file)
index 0000000..e9a04aa
--- /dev/null
+++ b/6.2.199
@@ -0,0 +1,147 @@
+To: vim-dev@vim.org
+Subject: Patch 6.2.199
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 6.2.199 (after 6.2.194)
+Problem:    Vim doesn't work perfectly well with NetBeans.
+Solution:   When NetBeans saves the file, reset the timestamp to avoid "file
+           changed" warnings.  Close a buffer in a proper way.  Don't try
+           giving a debug message with an invalid pointer.  Send a
+           newDotAndMark message when needed.  Report a change by the "r"
+           command to NetBeans.  (Gordon Prieur)
+Files:     src/netbeans.c, src/normal.c
+
+
+*** ../vim-6.2.198/src/netbeans.c      Sun Jan 18 21:31:56 2004
+--- src/netbeans.c     Wed Jan 21 10:58:28 2004
+***************
+*** 1655,1661 ****
+--- 1655,1670 ----
+           if (streq((char *)args, "T"))
+               buf->bufp->b_changed = 1;
+           else
++          {
++              struct stat     st;
++ 
++              /* Assume NetBeans stored the file.  Reset the timestamp to
++               * avoid "file changed" warnings. */
++              if (buf->bufp->b_ffname != NULL
++                      && mch_stat((char *)buf->bufp->b_ffname, &st) >= 0)
++                  buf_store_time(buf->bufp, &st, buf->bufp->b_ffname);
+               buf->bufp->b_changed = 0;
++          }
+           buf->modified = buf->bufp->b_changed;
+  /* =====================================================================*/
+       }
+***************
+*** 1759,1765 ****
+           nbdebug(("    CLOSE %d: %s\n", bufno, name));
+           need_mouse_correct = TRUE;
+           if (buf->bufp != NULL)
+!              close_buffer(NULL, buf->bufp, 0);
+           doupdate = 1;
+  /* =====================================================================*/
+       }
+--- 1768,1775 ----
+           nbdebug(("    CLOSE %d: %s\n", bufno, name));
+           need_mouse_correct = TRUE;
+           if (buf->bufp != NULL)
+!              do_buffer(DOBUF_WIPE, DOBUF_FIRST, FORWARD,
+!                                                   buf->bufp->b_fnum, TRUE);
+           doupdate = 1;
+  /* =====================================================================*/
+       }
+***************
+*** 2336,2342 ****
+      nbbuf_T  *nbbuf = nb_get_buf(bufno);
+      char     buffer[2*MAXPATHL];
+  
+!     if (!haveConnection)
+       return;
+  
+      if (!netbeansCloseFile)
+--- 2346,2352 ----
+      nbbuf_T  *nbbuf = nb_get_buf(bufno);
+      char     buffer[2*MAXPATHL];
+  
+!     if (!haveConnection || bufno < 0)
+       return;
+  
+      if (!netbeansCloseFile)
+***************
+*** 2526,2535 ****
+  
+      if (bufno >= 0 && curwin != NULL && curwin->w_buffer == curbuf)
+      {
+-      int lnum = curwin->w_cursor.lnum;
+       int col = mouse_col - curwin->w_wincol - (curwin->w_p_nu ? 9 : 1);
+  
+!      sprintf(buf, "%d:buttonRelease=%d %d %d %d\n", bufno, cmdno, button, lnum, col);
+       nbdebug(("EVT: %s", buf));
+       nb_send(buf, "netbeans_button_release");
+      }
+--- 2536,2551 ----
+  
+      if (bufno >= 0 && curwin != NULL && curwin->w_buffer == curbuf)
+      {
+       int col = mouse_col - curwin->w_wincol - (curwin->w_p_nu ? 9 : 1);
++      long off = pos2off(curbuf, &curwin->w_cursor);
++ 
++      /* sync the cursor position */
++      sprintf(buf, "%d:newDotAndMark=%d %ld %ld\n", bufno, cmdno, off, off);
++      nbdebug(("EVT: %s", buf));
++      nb_send(buf, "netbeans_button_release[newDotAndMark]");
+  
+!      sprintf(buf, "%d:buttonRelease=%d %d %ld %d\n", bufno, cmdno,
+!                                  button, (long)curwin->w_cursor.lnum, col);
+       nbdebug(("EVT: %s", buf));
+       nb_send(buf, "netbeans_button_release");
+      }
+*** ../vim-6.2.198/src/normal.c        Sun Jan 18 21:31:56 2004
+--- src/normal.c       Thu Jan 22 16:50:57 2004
+***************
+*** 6134,6139 ****
+--- 6134,6148 ----
+                           || cap->nchar == ']'))
+                   showmatch();
+               ++curwin->w_cursor.col;
++ #ifdef FEAT_NETBEANS_INTG
++              if (usingNetbeans)
++              {
++                  colnr_T start = (colnr_T)(curwin->w_cursor.col
++                                                             - cap->count1);
++                  netbeans_inserted(curbuf, curwin->w_cursor.lnum, start,
++                           (int)cap->count1, &ptr[start], (int)cap->count1);
++              }
++ #endif
+           }
+  
+           /* mark the buffer as changed and prepare for displaying */
+*** ../vim-6.2.198/src/version.c       Sun Jan 25 19:35:19 2004
+--- src/version.c      Sun Jan 25 19:37:44 2004
+***************
+*** 639,640 ****
+--- 639,642 ----
+  {   /* Add new patch number below this line */
++ /**/
++     199,
+  /**/
+
+-- 
+FROG: How you English say:  I one more time, mac, I unclog my nose towards
+      you, sons of a window-dresser,  so, you think you could out-clever us
+      French fellows with your silly knees-bent creeping about advancing
+      behaviour.  (blows a raspberry) I wave my private parts at your aunties,
+      you brightly-coloured, mealy-templed, cranberry-smelling, electric
+      donkey-bottom biters.
+                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        Sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\              Project leader for A-A-P -- http://www.A-A-P.org        ///
+ \\\  Help AIDS victims, buy here: http://ICCF-Holland.org/click1.html  ///
diff --git a/6.2.200 b/6.2.200
new file mode 100644 (file)
index 0000000..2d1a049
--- /dev/null
+++ b/6.2.200
@@ -0,0 +1,57 @@
+To: vim-dev@vim.org
+Subject: Patch 6.2.200
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 6.2.200
+Problem:    When recovering a file, 'fileformat' is always the default, thus
+           writing the file may result in differences. (Penelope Fudd)
+Solution:   Before recovering the file try reading the original file to obtain
+           the values of 'fileformat', 'fileencoding', etc.
+Files:     src/memline.c
+
+
+*** ../vim-6.2.199/src/memline.c       Sun May 25 17:26:29 2003
+--- src/memline.c      Wed Jan 21 10:31:41 2004
+***************
+*** 932,937 ****
+--- 932,949 ----
+      while (!(curbuf->b_ml.ml_flags & ML_EMPTY))
+       ml_delete((linenr_T)1, FALSE);
+  
++     /*
++      * Try reading the original file to obtain the values of 'fileformat',
++      * 'fileencoding', etc.  Ignore errors.  The text itself is not used.
++      */
++     if (curbuf->b_ffname != NULL)
++     {
++      (void)readfile(curbuf->b_ffname, NULL, (linenr_T)0,
++                            (linenr_T)0, (linenr_T)MAXLNUM, NULL, READ_NEW);
++      while (!(curbuf->b_ml.ml_flags & ML_EMPTY))
++          ml_delete((linenr_T)1, FALSE);
++     }
++ 
+      bnum = 1;                /* start with block 1 */
+      page_count = 1;  /* which is 1 page */
+      lnum = 0;                /* append after line 0 in curbuf */
+*** ../vim-6.2.199/src/version.c       Sun Jan 25 19:40:26 2004
+--- src/version.c      Sun Jan 25 19:44:09 2004
+***************
+*** 639,640 ****
+--- 639,642 ----
+  {   /* Add new patch number below this line */
++ /**/
++     200,
+  /**/
+
+-- 
+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/ \\\
+\\\              Project leader for A-A-P -- http://www.A-A-P.org        ///
+ \\\  Help AIDS victims, buy here: http://ICCF-Holland.org/click1.html  ///
diff --git a/6.2.201 b/6.2.201
new file mode 100644 (file)
index 0000000..303955a
--- /dev/null
+++ b/6.2.201
@@ -0,0 +1,78 @@
+To: vim-dev@vim.org
+Subject: Patch 6.2.201
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 6.2.201
+Problem:    When 'autowriteall' is set ":qall" still refuses to exit if there
+           is a modified buffer. (Antoine Mechelynck)
+Solution:   Attempt writing modified buffers as intended.
+Files:     src/ex_cmds2.c
+
+
+*** ../vim-6.2.200/src/ex_cmds2.c      Wed Nov 12 20:50:01 2003
+--- src/ex_cmds2.c     Wed Jan 21 16:57:12 2004
+***************
+*** 876,885 ****
+      win_T    *wp;
+  #endif
+  
+- #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG)
+      for (;;)
+      {
+- #endif
+       /* check curbuf first: if it was changed we can't abandon it */
+       if (!hidden && curbufIsChanged())
+           buf = curbuf;
+--- 876,883 ----
+***************
+*** 892,907 ****
+       if (buf == NULL)    /* No buffers changed */
+           return FALSE;
+  
+! #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG)
+!      if (p_confirm || cmdmod.confirm)
+!      {
+!          if (check_changed(buf, p_awa, TRUE, FALSE, TRUE) && buf_valid(buf))
+!              break;      /* didn't save - still changes */
+!      }
+!      else
+!          break;          /* confirm not active - has changes */
+      }
+- #endif
+  
+      exiting = FALSE;
+  #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG)
+--- 890,898 ----
+       if (buf == NULL)    /* No buffers changed */
+           return FALSE;
+  
+!      if (check_changed(buf, p_awa, TRUE, FALSE, TRUE) && buf_valid(buf))
+!          break;          /* didn't save - still changes */
+      }
+  
+      exiting = FALSE;
+  #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG)
+*** ../vim-6.2.200/src/version.c       Sun Jan 25 19:45:13 2004
+--- src/version.c      Sun Jan 25 19:54:00 2004
+***************
+*** 639,640 ****
+--- 639,642 ----
+  {   /* Add new patch number below this line */
++ /**/
++     201,
+  /**/
+
+-- 
+   Another bucket of what can only be described as human ordure hits ARTHUR.
+ARTHUR: ... Right!  (to the KNIGHTS) That settles it!
+                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        Sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\              Project leader for A-A-P -- http://www.A-A-P.org        ///
+ \\\  Help AIDS victims, buy here: http://ICCF-Holland.org/click1.html  ///
diff --git a/6.2.202 b/6.2.202
new file mode 100644 (file)
index 0000000..bf2585a
--- /dev/null
+++ b/6.2.202
@@ -0,0 +1,710 @@
+To: vim-dev@vim.org
+Subject: Patch 6.2.202
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 6.2.202
+Problem:    Filetype names of CHILL and ch script are confusing.
+Solution:   Rename "ch" to "chill" and "chscript" to "ch".
+Files:     runtime/filetype.vim, runtime/makemenu.vim, runtime/synmenu.vim,
+           runtime/syntax/ch.vim, runtime/syntax/chill.vim
+
+
+*** ../vim-6.2.201/runtime/filetype.vim        Tue Sep  9 22:18:18 2003
+--- runtime/filetype.vim       Sat Jan 24 20:54:12 2004
+***************
+*** 1,7 ****
+  " Vim support file to detect file types
+  "
+  " Maintainer:        Bram Moolenaar <Bram@vim.org>
+! " Last Change:       2003 Aug 17
+  
+  " Listen very carefully, I will say this only once
+  if exists("did_load_filetypes")
+--- 1,7 ----
+  " Vim support file to detect file types
+  "
+  " Maintainer:        Bram Moolenaar <Bram@vim.org>
+! " Last Change:       2004 Jan 24
+  
+  " Listen very carefully, I will say this only once
+  if exists("did_load_filetypes")
+***************
+*** 260,268 ****
+    au BufNewFile,BufRead *.cxx,*.c++,*.hh,*.hxx,*.hpp,*.moc,*.tcc,*.inl setf cpp
+  endif
+  
+! " .h files can be C or C++, set c_syntax_for_h if you want C
+  au BufNewFile,BufRead *.h
+!      \ if exists("c_syntax_for_h") | setf c | else | setf cpp | endif
+  
+  " TLH files are C++ headers generated by Visual C++'s #import from typelibs
+  au BufNewFile,BufRead *.tlh                  setf cpp
+--- 263,277 ----
+    au BufNewFile,BufRead *.cxx,*.c++,*.hh,*.hxx,*.hpp,*.moc,*.tcc,*.inl setf cpp
+  endif
+  
+! " .h files can be C, Ch or C++, set c_syntax_for_h if you want C,
+! " ch_syntax_for_h if you want Ch.
+  au BufNewFile,BufRead *.h
+!      \ if exists("c_syntax_for_h") | setf c |
+!      \ elseif exists("ch_syntax_for_h") | setf ch |
+!      \ else | setf cpp | endif
+! 
+! " Ch (CHscript)
+! au BufNewFile,BufRead *.chf                  setf ch
+  
+  " TLH files are C++ headers generated by Visual C++'s #import from typelibs
+  au BufNewFile,BufRead *.tlh                  setf cpp
+***************
+*** 279,291 ****
+       \| setf debchangelog | else | setf changelog | endif
+  
+  " CHILL
+! au BufNewFile,BufRead *..ch                  setf ch
+  
+  " Changes for WEB and CWEB or CHILL
+  au BufNewFile,BufRead *.ch                   call <SID>FTchange()
+  
+  " This function checks if one of the first ten lines start with a '@'.  In
+! " that case it is probably a change file, otherwise CHILL is assumed.
+  fun! <SID>FTchange()
+    let lnum = 1
+    while lnum <= 10
+--- 288,303 ----
+       \| setf debchangelog | else | setf changelog | endif
+  
+  " CHILL
+! au BufNewFile,BufRead *..ch                  setf chill
+  
+  " Changes for WEB and CWEB or CHILL
+  au BufNewFile,BufRead *.ch                   call <SID>FTchange()
+  
+  " This function checks if one of the first ten lines start with a '@'.  In
+! " that case it is probably a change file.
+! " If the first line starts with # or ! it's probably a ch file.
+! " If a line has "main", "include", "//" ir "/*" it's probably ch.
+! " Otherwise CHILL is assumed.
+  fun! <SID>FTchange()
+    let lnum = 1
+    while lnum <= 10
+***************
+*** 293,301 ****
+        setf change
+        return
+      endif
+      let lnum = lnum + 1
+    endwhile
+!   setf ch
+  endfun
+  
+  " Clean
+--- 305,325 ----
+        setf change
+        return
+      endif
++     if lnum == 1 && (getline(1)[0] == '#' || getline(1)[0] == '!'
++       setf ch
++       return
++     endif
++     if getline(lnum) =~ "MODULE"
++       setf chill
++       return
++     endif
++     if getline(lnum) =~ 'main\s*(\|#\s*include\|//'
++       setf ch
++       return
++     endif
+      let lnum = lnum + 1
+    endwhile
+!   setf chill
+  endfun
+  
+  " Clean
+*** ../vim-6.2.201/runtime/makemenu.vim        Wed May 14 19:49:47 2003
+--- runtime/makemenu.vim       Sun Jan 25 20:03:46 2004
+***************
+*** 1,6 ****
+  " Script to define the syntax menu in synmenu.vim
+  " Maintainer:        Bram Moolenaar <Bram@vim.org>
+! " Last Change:       2003 May 14
+  
+  " This is used by "make menu" in the src directory.
+  edit <sfile>:p:h/synmenu.vim
+--- 1,6 ----
+  " Script to define the syntax menu in synmenu.vim
+  " Maintainer:        Bram Moolenaar <Bram@vim.org>
+! " Last Change:       2004 Jan 25
+  
+  " This is used by "make menu" in the src directory.
+  edit <sfile>:p:h/synmenu.vim
+***************
+*** 99,107 ****
+  SynMenu CD.Cynlib:cynlib
+  SynMenu CD.Cascading\ Style\ Sheets:css
+  SynMenu CD.Century\ Term:cterm
+! SynMenu CD.CHILL:ch
+  SynMenu CD.ChangeLog:changelog
+  SynMenu CD.Cheetah\ template:cheetah
+  SynMenu CD.Clean:clean
+  SynMenu CD.Clever:cl
+  SynMenu CD.Clipper:clipper
+--- 100,109 ----
+  SynMenu CD.Cynlib:cynlib
+  SynMenu CD.Cascading\ Style\ Sheets:css
+  SynMenu CD.Century\ Term:cterm
+! SynMenu CD.CH\ script:ch
+  SynMenu CD.ChangeLog:changelog
+  SynMenu CD.Cheetah\ template:cheetah
++ SynMenu CD.CHILL:chill
+  SynMenu CD.Clean:clean
+  SynMenu CD.Clever:cl
+  SynMenu CD.Clipper:clipper
+*** ../vim-6.2.201/runtime/synmenu.vim Sat Jul  5 19:14:04 2003
+--- runtime/synmenu.vim        Sun Jan 25 20:03:50 2004
+***************
+*** 81,117 ****
+  an 50.20.160 &Syntax.CD.Cynlib :cal SetSyn("cynlib")<CR>
+  an 50.20.170 &Syntax.CD.Cascading\ Style\ Sheets :cal SetSyn("css")<CR>
+  an 50.20.180 &Syntax.CD.Century\ Term :cal SetSyn("cterm")<CR>
+! an 50.20.190 &Syntax.CD.CHILL :cal SetSyn("ch")<CR>
+  an 50.20.200 &Syntax.CD.ChangeLog :cal SetSyn("changelog")<CR>
+  an 50.20.210 &Syntax.CD.Cheetah\ template :cal SetSyn("cheetah")<CR>
+! an 50.20.220 &Syntax.CD.Clean :cal SetSyn("clean")<CR>
+! an 50.20.230 &Syntax.CD.Clever :cal SetSyn("cl")<CR>
+! an 50.20.240 &Syntax.CD.Clipper :cal SetSyn("clipper")<CR>
+! an 50.20.250 &Syntax.CD.Cold\ Fusion :cal SetSyn("cf")<CR>
+! an 50.20.260 &Syntax.CD.Config.Cfg\ Config\ file :cal SetSyn("cfg")<CR>
+! an 50.20.270 &Syntax.CD.Config.Generic\ Config\ file :cal SetSyn("conf")<CR>
+! an 50.20.280 &Syntax.CD.Config.Configure\.in :cal SetSyn("config")<CR>
+! an 50.20.290 &Syntax.CD.Ctrl-H :cal SetSyn("ctrlh")<CR>
+! an 50.20.300 &Syntax.CD.Cobol :cal SetSyn("cobol")<CR>
+! an 50.20.310 &Syntax.CD.CSP :cal SetSyn("csp")<CR>
+! an 50.20.320 &Syntax.CD.CUPL.CUPL :cal SetSyn("cupl")<CR>
+! an 50.20.330 &Syntax.CD.CUPL.Simulation :cal SetSyn("cuplsim")<CR>
+! an 50.20.340 &Syntax.CD.CVS.commit\ file :cal SetSyn("cvs")<CR>
+! an 50.20.350 &Syntax.CD.CVS.cvsrc :cal SetSyn("cvsrc")<CR>
+! an 50.20.370 &Syntax.CD.Debian.Debian\ ChangeLog :cal SetSyn("debchangelog")<CR>
+! an 50.20.380 &Syntax.CD.Debian.Debian\ Control :cal SetSyn("debcontrol")<CR>
+! an 50.20.390 &Syntax.CD.Diff :cal SetSyn("diff")<CR>
+! an 50.20.400 &Syntax.CD.Digital\ Command\ Lang :cal SetSyn("dcl")<CR>
+! an 50.20.410 &Syntax.CD.DNS/BIND\ zone :cal SetSyn("dns")<CR>
+! an 50.20.420 &Syntax.CD.DocBook :cal SetSyn("docbk")<CR>
+! an 50.20.430 &Syntax.CD.Dot :cal SetSyn("dot")<CR>
+! an 50.20.440 &Syntax.CD.Dracula :cal SetSyn("dracula")<CR>
+! an 50.20.450 &Syntax.CD.DSSSL :cal SetSyn("dsl")<CR>
+! an 50.20.460 &Syntax.CD.DTD :cal SetSyn("dtd")<CR>
+! an 50.20.470 &Syntax.CD.DTML\ (Zope) :cal SetSyn("dtml")<CR>
+! an 50.20.480 &Syntax.CD.Dylan.Dylan :cal SetSyn("dylan")<CR>
+! an 50.20.490 &Syntax.CD.Dylan.Dylan\ interface :cal SetSyn("dylanintr")<CR>
+! an 50.20.500 &Syntax.CD.Dylan.Dylan\ lid :cal SetSyn("dylanlid")<CR>
+  an 50.30.100 &Syntax.EFG.EDIF :cal SetSyn("edif")<CR>
+  an 50.30.110 &Syntax.EFG.Eiffel :cal SetSyn("eiffel")<CR>
+  an 50.30.120 &Syntax.EFG.Elm\ filter\ rules :cal SetSyn("elmfilt")<CR>
+--- 82,120 ----
+  an 50.20.160 &Syntax.CD.Cynlib :cal SetSyn("cynlib")<CR>
+  an 50.20.170 &Syntax.CD.Cascading\ Style\ Sheets :cal SetSyn("css")<CR>
+  an 50.20.180 &Syntax.CD.Century\ Term :cal SetSyn("cterm")<CR>
+! an 50.20.190 &Syntax.CD.CH\ script :cal SetSyn("ch")<CR>
+  an 50.20.200 &Syntax.CD.ChangeLog :cal SetSyn("changelog")<CR>
+  an 50.20.210 &Syntax.CD.Cheetah\ template :cal SetSyn("cheetah")<CR>
+! an 50.20.220 &Syntax.CD.CHILL :cal SetSyn("chill")<CR>
+! an 50.20.230 &Syntax.CD.Clean :cal SetSyn("clean")<CR>
+! an 50.20.240 &Syntax.CD.Clever :cal SetSyn("cl")<CR>
+! an 50.20.250 &Syntax.CD.Clipper :cal SetSyn("clipper")<CR>
+! an 50.20.260 &Syntax.CD.Cold\ Fusion :cal SetSyn("cf")<CR>
+! an 50.20.270 &Syntax.CD.Config.Cfg\ Config\ file :cal SetSyn("cfg")<CR>
+! an 50.20.280 &Syntax.CD.Config.Generic\ Config\ file :cal SetSyn("conf")<CR>
+! an 50.20.290 &Syntax.CD.Config.Configure\.in :cal SetSyn("config")<CR>
+! an 50.20.300 &Syntax.CD.Ctrl-H :cal SetSyn("ctrlh")<CR>
+! an 50.20.310 &Syntax.CD.Cobol :cal SetSyn("cobol")<CR>
+! an 50.20.320 &Syntax.CD.CSP :cal SetSyn("csp")<CR>
+! an 50.20.330 &Syntax.CD.CUPL.CUPL :cal SetSyn("cupl")<CR>
+! an 50.20.340 &Syntax.CD.CUPL.Simulation :cal SetSyn("cuplsim")<CR>
+! an 50.20.350 &Syntax.CD.CVS.commit\ file :cal SetSyn("cvs")<CR>
+! an 50.20.360 &Syntax.CD.CVS.cvsrc :cal SetSyn("cvsrc")<CR>
+! an 50.20.380 &Syntax.CD.Debian.Debian\ ChangeLog :cal SetSyn("debchangelog")<CR>
+! an 50.20.390 &Syntax.CD.Debian.Debian\ Control :cal SetSyn("debcontrol")<CR>
+! an 50.20.400 &Syntax.CD.Diff :cal SetSyn("diff")<CR>
+! an 50.20.410 &Syntax.CD.Digital\ Command\ Lang :cal SetSyn("dcl")<CR>
+! an 50.20.420 &Syntax.CD.Dircolors :cal SetSyn("dircolors")<CR>
+! an 50.20.430 &Syntax.CD.DNS/BIND\ zone :cal SetSyn("dns")<CR>
+! an 50.20.440 &Syntax.CD.DocBook :cal SetSyn("docbk")<CR>
+! an 50.20.450 &Syntax.CD.Dot :cal SetSyn("dot")<CR>
+! an 50.20.460 &Syntax.CD.Dracula :cal SetSyn("dracula")<CR>
+! an 50.20.470 &Syntax.CD.DSSSL :cal SetSyn("dsl")<CR>
+! an 50.20.480 &Syntax.CD.DTD :cal SetSyn("dtd")<CR>
+! an 50.20.490 &Syntax.CD.DTML\ (Zope) :cal SetSyn("dtml")<CR>
+! an 50.20.500 &Syntax.CD.Dylan.Dylan :cal SetSyn("dylan")<CR>
+! an 50.20.510 &Syntax.CD.Dylan.Dylan\ interface :cal SetSyn("dylanintr")<CR>
+! an 50.20.520 &Syntax.CD.Dylan.Dylan\ lid :cal SetSyn("dylanlid")<CR>
+  an 50.30.100 &Syntax.EFG.EDIF :cal SetSyn("edif")<CR>
+  an 50.30.110 &Syntax.EFG.Eiffel :cal SetSyn("eiffel")<CR>
+  an 50.30.120 &Syntax.EFG.Elm\ filter\ rules :cal SetSyn("elmfilt")<CR>
+*** ../vim-6.2.201/runtime/syntax/ch.vim       Thu May 10 21:49:39 2001
+--- runtime/syntax/ch.vim      Tue Aug 12 22:56:32 2003
+***************
+*** 1,16 ****
+  " Vim syntax file
+! " Language:  CHILL
+! " Maintainer:        YoungSang Yoon <image@lgic.co.kr>
+! " Last change:       2001 May 10
+  "
+  
+- " first created by image@lgic.co.kr & modified by paris@lgic.co.kr
+- 
+- " CHILL (CCITT High Level Programming Language) is used for
+- " developing software of ATM switch at LGIC (LG Information
+- " & Communications LTd.)
+- 
+- 
+  " For version 5.x: Clear all syntax items
+  " For version 6.x: Quit when a syntax file was already loaded
+  if version < 600
+--- 1,13 ----
+  " Vim syntax file
+! " Language:     Ch
+! " Maintainer:   SoftIntegration, Inc. <info@softintegration.com>
+! " URL:          http://www.softintegration.com/download/vim/syntax/ch.vim
+! " Last change:  2003 Aug 05
+! "               Created based on cpp.vim
+! " 
+! " Ch is a C/C++ interpreter with many high level extensions
+  "
+  
+  " For version 5.x: Clear all syntax items
+  " For version 6.x: Quit when a syntax file was already loaded
+  if version < 600
+***************
+*** 19,131 ****
+    finish
+  endif
+  
+! " A bunch of useful CHILL keywords
+! syn keyword  chStatement     goto GOTO return RETURN returns RETURNS
+! syn keyword  chLabel         CASE case ESAC esac
+! syn keyword  chConditional   if IF else ELSE elsif ELSIF switch SWITCH THEN then FI fi
+! syn keyword  chLogical       NOT not
+! syn keyword  chRepeat        while WHILE for FOR do DO od OD TO to
+! syn keyword  chProcess       START start STACKSIZE stacksize PRIORITY priority THIS this STOP stop
+! syn keyword  chBlock         PROC proc PROCESS process
+! syn keyword  chSignal        RECEIVE receive SEND send NONPERSISTENT nonpersistent PERSISTENT peristent SET set EVER ever
+! 
+! syn keyword  chTodo          contained TODO FIXME XXX
+! 
+! " String and Character constants
+! " Highlight special characters (those which have a backslash) differently
+! syn match    chSpecial       contained "\\x\x\+\|\\\o\{1,3\}\|\\.\|\\$"
+! syn region   chString        start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=chSpecial
+! syn match    chCharacter     "'[^\\]'"
+! syn match    chSpecialCharacter "'\\.'"
+! syn match    chSpecialCharacter "'\\\o\{1,3\}'"
+! 
+! "when wanted, highlight trailing white space
+! if exists("ch_space_errors")
+!   syn match  chSpaceError    "\s*$"
+!   syn match  chSpaceError    " \+\t"me=e-1
+! endif
+! 
+! "catch errors caused by wrong parenthesis
+! syn cluster  chParenGroup    contains=chParenError,chIncluded,chSpecial,chTodo,chUserCont,chUserLabel,chBitField
+! syn region   chParen         transparent start='(' end=')' contains=ALLBUT,@chParenGroup
+! syn match    chParenError    ")"
+! syn match    chInParen       contained "[{}]"
+! 
+! "integer number, or floating point number without a dot and with "f".
+! syn case ignore
+! syn match    chNumber                "\<\d\+\(u\=l\=\|lu\|f\)\>"
+! "floating point number, with dot, optional exponent
+! syn match    chFloat         "\<\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=\>"
+! "floating point number, starting with a dot, optional exponent
+! syn match    chFloat         "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>"
+! "floating point number, without dot, with exponent
+! syn match    chFloat         "\<\d\+e[-+]\=\d\+[fl]\=\>"
+! "hex number
+! syn match    chNumber                "\<0x\x\+\(u\=l\=\|lu\)\>"
+! "syn match chIdentifier      "\<[a-z_][a-z0-9_]*\>"
+! syn case match
+! " flag an octal number with wrong digits
+! syn match    chOctalError    "\<0\o*[89]"
+! 
+! if exists("ch_comment_strings")
+!   " A comment can contain chString, chCharacter and chNumber.
+!   " But a "*/" inside a chString in a chComment DOES end the comment!  So we
+!   " need to use a special type of chString: chCommentString, which also ends on
+!   " "*/", and sees a "*" at the start of the line as comment again.
+!   " Unfortunately this doesn't very well work for // type of comments :-(
+!   syntax match       chCommentSkip   contained "^\s*\*\($\|\s\+\)"
+!   syntax region chCommentString      contained start=+"+ skip=+\\\\\|\\"+ end=+"+ end=+\*/+me=s-1 contains=chSpecial,chCommentSkip
+!   syntax region chComment2String     contained start=+"+ skip=+\\\\\|\\"+ end=+"+ end="$" contains=chSpecial
+!   syntax region chComment    start="/\*" end="\*/" contains=chTodo,chCommentString,chCharacter,chNumber,chFloat,chSpaceError
+!   syntax match  chComment    "//.*" contains=chTodo,chComment2String,chCharacter,chNumber,chSpaceError
+  else
+!   syn region chComment       start="/\*" end="\*/" contains=chTodo,chSpaceError
+!   syn match  chComment       "//.*" contains=chTodo,chSpaceError
+  endif
+- syntax match chCommentError  "\*/"
+- 
+- syn keyword  chOperator      SIZE size
+- syn keyword  chType          dcl DCL int INT char CHAR bool BOOL REF ref LOC loc INSTANCE instance
+- syn keyword  chStructure     struct STRUCT enum ENUM newmode NEWMODE synmode SYNMODE
+- "syn keyword chStorageClass
+- syn keyword  chBlock         PROC proc END end
+- syn keyword  chScope         GRANT grant SEIZE seize
+- syn keyword  chEDML          select SELECT delete DELETE update UPDATE in IN seq SEQ WHERE where INSERT insert include INCLUDE exclude EXCLUDE
+- syn keyword  chBoolConst     true TRUE false FALSE
+- 
+- syn region   chPreCondit     start="^\s*#\s*\(if\>\|ifdef\>\|ifndef\>\|elif\>\|else\>\|endif\>\)" skip="\\$" end="$" contains=chComment,chString,chCharacter,chNumber,chCommentError,chSpaceError
+- syn region   chIncluded      contained start=+"+ skip=+\\\\\|\\"+ end=+"+
+- syn match    chIncluded      contained "<[^>]*>"
+- syn match    chInclude       "^\s*#\s*include\>\s*["<]" contains=chIncluded
+- "syn match chLineSkip        "\\$"
+- syn cluster  chPreProcGroup  contains=chPreCondit,chIncluded,chInclude,chDefine,chInParen,chUserLabel
+- syn region   chDefine                start="^\s*#\s*\(define\>\|undef\>\)" skip="\\$" end="$" contains=ALLBUT,@chPreProcGroup
+- syn region   chPreProc       start="^\s*#\s*\(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" end="$" contains=ALLBUT,@chPreProcGroup
+  
+! " Highlight User Labels
+! syn cluster  chMultiGroup    contains=chIncluded,chSpecial,chTodo,chUserCont,chUserLabel,chBitField
+! syn region   chMulti         transparent start='?' end=':' contains=ALLBUT,@chMultiGroup
+! " Avoid matching foo::bar() in C++ by requiring that the next char is not ':'
+! syn match    chUserCont      "^\s*\I\i*\s*:$" contains=chUserLabel
+! syn match    chUserCont      ";\s*\I\i*\s*:$" contains=chUserLabel
+! syn match    chUserCont      "^\s*\I\i*\s*:[^:]"me=e-1 contains=chUserLabel
+! syn match    chUserCont      ";\s*\I\i*\s*:[^:]"me=e-1 contains=chUserLabel
+  
+! syn match    chUserLabel     "\I\i*" contained
+  
+! " Avoid recognizing most bitfields as labels
+! syn match    chBitField      "^\s*\I\i*\s*:\s*[1-9]"me=e-1
+! syn match    chBitField      ";\s*\I\i*\s*:\s*[1-9]"me=e-1
+! 
+! syn match    chBracket       contained "[<>]"
+! if !exists("ch_minlines")
+!   let ch_minlines = 15
+! endif
+! exec "syn sync ccomment chComment minlines=" . ch_minlines
+! 
+! " Define the default highlighting.
+! " For version 5.7 and earlier: only when not done already
+! " For version 5.8 and later: only when an item doesn't have highlighting yet
+  if version >= 508 || !exists("did_ch_syntax_inits")
+    if version < 508
+      let did_ch_syntax_inits = 1
+--- 16,38 ----
+    finish
+  endif
+  
+! " Read the C syntax to start with
+! if version < 600
+!   so <sfile>:p:h/c.vim
+  else
+!   runtime! syntax/c.vim
+!   unlet b:current_syntax
+  endif
+  
+! " Ch extentions
+  
+! syn keyword  chStatement     new delete this
+! syn keyword     chAccess        public private 
+! syn keyword  chStorageClass  __declspec(global) __declspec(local)
+! syn keyword  chStructure     class
+! syn keyword  chType          string_t array
+  
+! " Default highlighting
+  if version >= 508 || !exists("did_ch_syntax_inits")
+    if version < 508
+      let did_ch_syntax_inits = 1
+***************
+*** 133,188 ****
+    else
+      command -nargs=+ HiLink hi def link <args>
+    endif
+! 
+!   HiLink chLabel     Label
+!   HiLink chUserLabel Label
+!   HiLink chConditional       Conditional
+!   " hi chConditional term=bold ctermfg=red guifg=red gui=bold
+! 
+!   HiLink chRepeat    Repeat
+!   HiLink chProcess   Repeat
+!   HiLink chSignal    Repeat
+!   HiLink chCharacter Character
+!   HiLink chSpecialCharacter chSpecial
+!   HiLink chNumber    Number
+!   HiLink chFloat     Float
+!   HiLink chOctalError        chError
+!   HiLink chParenError        chError
+!   HiLink chInParen   chError
+!   HiLink chCommentError      chError
+!   HiLink chSpaceError        chError
+!   HiLink chOperator  Operator
+!   HiLink chStructure Structure
+!   HiLink chBlock     Operator
+!   HiLink chScope     Operator
+!   "hi chEDML     term=underline ctermfg=DarkRed guifg=Red
+!   HiLink chEDML      PreProc
+!   "hi chBoolConst    term=bold ctermfg=brown guifg=brown
+!   HiLink chBoolConst Constant
+!   "hi chLogical      term=bold ctermfg=brown guifg=brown
+!   HiLink chLogical   Constant
+!   HiLink chStorageClass      StorageClass
+!   HiLink chInclude   Include
+!   HiLink chPreProc   PreProc
+!   HiLink chDefine    Macro
+!   HiLink chIncluded  chString
+!   HiLink chError     Error
+!   HiLink chStatement Statement
+!   HiLink chPreCondit PreCondit
+!   HiLink chType      Type
+!   HiLink chCommentError      chError
+!   HiLink chCommentString chString
+!   HiLink chComment2String chString
+!   HiLink chCommentSkip       chComment
+!   HiLink chString    String
+!   HiLink chComment   Comment
+!   " hi chComment     term=None ctermfg=lightblue guifg=lightblue
+!   HiLink chSpecial   SpecialChar
+!   HiLink chTodo      Todo
+!   HiLink chBlock     Statement
+!   "HiLink chIdentifier       Identifier
+!   HiLink chBracket   Delimiter
+! 
+    delcommand HiLink
+  endif
+  
+--- 40,50 ----
+    else
+      command -nargs=+ HiLink hi def link <args>
+    endif
+!   HiLink chAccess            chStatement
+!   HiLink chExceptions                Exception
+!   HiLink chStatement         Statement
+!   HiLink chType                      Type
+!   HiLink chStructure         Structure
+    delcommand HiLink
+  endif
+  
+*** ../vim-6.2.201/runtime/syntax/chill.vim    Sun Jan 25 20:08:47 2004
+--- runtime/syntax/chill.vim   Wed Jan 21 17:52:15 2004
+***************
+*** 0 ****
+--- 1,191 ----
++ " Vim syntax file
++ " Language:  CHILL
++ " Maintainer:        YoungSang Yoon <image@lgic.co.kr>
++ " Last change:       2004 Jan 21
++ "
++ 
++ " first created by image@lgic.co.kr & modified by paris@lgic.co.kr
++ 
++ " CHILL (CCITT High Level Programming Language) is used for
++ " developing software of ATM switch at LGIC (LG Information
++ " & Communications LTd.)
++ 
++ 
++ " For version 5.x: Clear all syntax items
++ " For version 6.x: Quit when a syntax file was already loaded
++ if version < 600
++   syntax clear
++ elseif exists("b:current_syntax")
++   finish
++ endif
++ 
++ " A bunch of useful CHILL keywords
++ syn keyword  chillStatement  goto GOTO return RETURN returns RETURNS
++ syn keyword  chillLabel              CASE case ESAC esac
++ syn keyword  chillConditional        if IF else ELSE elsif ELSIF switch SWITCH THEN then FI fi
++ syn keyword  chillLogical    NOT not
++ syn keyword  chillRepeat     while WHILE for FOR do DO od OD TO to
++ syn keyword  chillProcess    START start STACKSIZE stacksize PRIORITY priority THIS this STOP stop
++ syn keyword  chillBlock              PROC proc PROCESS process
++ syn keyword  chillSignal     RECEIVE receive SEND send NONPERSISTENT nonpersistent PERSISTENT peristent SET set EVER ever
++ 
++ syn keyword  chillTodo               contained TODO FIXME XXX
++ 
++ " String and Character constants
++ " Highlight special characters (those which have a backslash) differently
++ syn match    chillSpecial    contained "\\x\x\+\|\\\o\{1,3\}\|\\.\|\\$"
++ syn region   chillString     start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=chillSpecial
++ syn match    chillCharacter  "'[^\\]'"
++ syn match    chillSpecialCharacter "'\\.'"
++ syn match    chillSpecialCharacter "'\\\o\{1,3\}'"
++ 
++ "when wanted, highlight trailing white space
++ if exists("chill_space_errors")
++   syn match  chillSpaceError "\s*$"
++   syn match  chillSpaceError " \+\t"me=e-1
++ endif
++ 
++ "catch errors caused by wrong parenthesis
++ syn cluster  chillParenGroup contains=chillParenError,chillIncluded,chillSpecial,chillTodo,chillUserCont,chillUserLabel,chillBitField
++ syn region   chillParen              transparent start='(' end=')' contains=ALLBUT,@chillParenGroup
++ syn match    chillParenError ")"
++ syn match    chillInParen    contained "[{}]"
++ 
++ "integer number, or floating point number without a dot and with "f".
++ syn case ignore
++ syn match    chillNumber             "\<\d\+\(u\=l\=\|lu\|f\)\>"
++ "floating point number, with dot, optional exponent
++ syn match    chillFloat              "\<\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=\>"
++ "floating point number, starting with a dot, optional exponent
++ syn match    chillFloat              "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>"
++ "floating point number, without dot, with exponent
++ syn match    chillFloat              "\<\d\+e[-+]\=\d\+[fl]\=\>"
++ "hex number
++ syn match    chillNumber             "\<0x\x\+\(u\=l\=\|lu\)\>"
++ "syn match chillIdentifier   "\<[a-z_][a-z0-9_]*\>"
++ syn case match
++ " flag an octal number with wrong digits
++ syn match    chillOctalError "\<0\o*[89]"
++ 
++ if exists("chill_comment_strings")
++   " A comment can contain chillString, chillCharacter and chillNumber.
++   " But a "*/" inside a chillString in a chillComment DOES end the comment!  So we
++   " need to use a special type of chillString: chillCommentString, which also ends on
++   " "*/", and sees a "*" at the start of the line as comment again.
++   " Unfortunately this doesn't very well work for // type of comments :-(
++   syntax match       chillCommentSkip        contained "^\s*\*\($\|\s\+\)"
++   syntax region chillCommentString   contained start=+"+ skip=+\\\\\|\\"+ end=+"+ end=+\*/+me=s-1 contains=chillSpecial,chillCommentSkip
++   syntax region chillComment2String  contained start=+"+ skip=+\\\\\|\\"+ end=+"+ end="$" contains=chillSpecial
++   syntax region chillComment start="/\*" end="\*/" contains=chillTodo,chillCommentString,chillCharacter,chillNumber,chillFloat,chillSpaceError
++   syntax match  chillComment "//.*" contains=chillTodo,chillComment2String,chillCharacter,chillNumber,chillSpaceError
++ else
++   syn region chillComment    start="/\*" end="\*/" contains=chillTodo,chillSpaceError
++   syn match  chillComment    "//.*" contains=chillTodo,chillSpaceError
++ endif
++ syntax match chillCommentError       "\*/"
++ 
++ syn keyword  chillOperator   SIZE size
++ syn keyword  chillType               dcl DCL int INT char CHAR bool BOOL REF ref LOC loc INSTANCE instance
++ syn keyword  chillStructure  struct STRUCT enum ENUM newmode NEWMODE synmode SYNMODE
++ "syn keyword chillStorageClass
++ syn keyword  chillBlock              PROC proc END end
++ syn keyword  chillScope              GRANT grant SEIZE seize
++ syn keyword  chillEDML               select SELECT delete DELETE update UPDATE in IN seq SEQ WHERE where INSERT insert include INCLUDE exclude EXCLUDE
++ syn keyword  chillBoolConst  true TRUE false FALSE
++ 
++ syn region   chillPreCondit  start="^\s*#\s*\(if\>\|ifdef\>\|ifndef\>\|elif\>\|else\>\|endif\>\)" skip="\\$" end="$" contains=chillComment,chillString,chillCharacter,chillNumber,chillCommentError,chillSpaceError
++ syn region   chillIncluded   contained start=+"+ skip=+\\\\\|\\"+ end=+"+
++ syn match    chillIncluded   contained "<[^>]*>"
++ syn match    chillInclude    "^\s*#\s*include\>\s*["<]" contains=chillIncluded
++ "syn match chillLineSkip     "\\$"
++ syn cluster  chillPreProcGroup       contains=chillPreCondit,chillIncluded,chillInclude,chillDefine,chillInParen,chillUserLabel
++ syn region   chillDefine             start="^\s*#\s*\(define\>\|undef\>\)" skip="\\$" end="$" contains=ALLBUT,@chillPreProcGroup
++ syn region   chillPreProc    start="^\s*#\s*\(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" end="$" contains=ALLBUT,@chillPreProcGroup
++ 
++ " Highlight User Labels
++ syn cluster  chillMultiGroup contains=chillIncluded,chillSpecial,chillTodo,chillUserCont,chillUserLabel,chillBitField
++ syn region   chillMulti              transparent start='?' end=':' contains=ALLBUT,@chillMultiGroup
++ " Avoid matching foo::bar() in C++ by requiring that the next char is not ':'
++ syn match    chillUserCont   "^\s*\I\i*\s*:$" contains=chillUserLabel
++ syn match    chillUserCont   ";\s*\I\i*\s*:$" contains=chillUserLabel
++ syn match    chillUserCont   "^\s*\I\i*\s*:[^:]"me=e-1 contains=chillUserLabel
++ syn match    chillUserCont   ";\s*\I\i*\s*:[^:]"me=e-1 contains=chillUserLabel
++ 
++ syn match    chillUserLabel  "\I\i*" contained
++ 
++ " Avoid recognizing most bitfields as labels
++ syn match    chillBitField   "^\s*\I\i*\s*:\s*[1-9]"me=e-1
++ syn match    chillBitField   ";\s*\I\i*\s*:\s*[1-9]"me=e-1
++ 
++ syn match    chillBracket    contained "[<>]"
++ if !exists("chill_minlines")
++   let chill_minlines = 15
++ endif
++ exec "syn sync ccomment chillComment minlines=" . chill_minlines
++ 
++ " Define the default highlighting.
++ " For version 5.7 and earlier: only when not done already
++ " For version 5.8 and later: only when an item doesn't have highlighting yet
++ if version >= 508 || !exists("did_ch_syntax_inits")
++   if version < 508
++     let did_ch_syntax_inits = 1
++     command -nargs=+ HiLink hi link <args>
++   else
++     command -nargs=+ HiLink hi def link <args>
++   endif
++ 
++   HiLink chillLabel  Label
++   HiLink chillUserLabel      Label
++   HiLink chillConditional    Conditional
++   " hi chillConditional      term=bold ctermfg=red guifg=red gui=bold
++ 
++   HiLink chillRepeat Repeat
++   HiLink chillProcess        Repeat
++   HiLink chillSignal Repeat
++   HiLink chillCharacter      Character
++   HiLink chillSpecialCharacter chillSpecial
++   HiLink chillNumber Number
++   HiLink chillFloat  Float
++   HiLink chillOctalError     chillError
++   HiLink chillParenError     chillError
++   HiLink chillInParen        chillError
++   HiLink chillCommentError   chillError
++   HiLink chillSpaceError     chillError
++   HiLink chillOperator       Operator
++   HiLink chillStructure      Structure
++   HiLink chillBlock  Operator
++   HiLink chillScope  Operator
++   "hi chillEDML     term=underline ctermfg=DarkRed guifg=Red
++   HiLink chillEDML   PreProc
++   "hi chillBoolConst term=bold ctermfg=brown guifg=brown
++   HiLink chillBoolConst      Constant
++   "hi chillLogical   term=bold ctermfg=brown guifg=brown
++   HiLink chillLogical        Constant
++   HiLink chillStorageClass   StorageClass
++   HiLink chillInclude        Include
++   HiLink chillPreProc        PreProc
++   HiLink chillDefine Macro
++   HiLink chillIncluded       chillString
++   HiLink chillError  Error
++   HiLink chillStatement      Statement
++   HiLink chillPreCondit      PreCondit
++   HiLink chillType   Type
++   HiLink chillCommentError   chillError
++   HiLink chillCommentString chillString
++   HiLink chillComment2String chillString
++   HiLink chillCommentSkip    chillComment
++   HiLink chillString String
++   HiLink chillComment        Comment
++   " hi chillComment  term=None ctermfg=lightblue guifg=lightblue
++   HiLink chillSpecial        SpecialChar
++   HiLink chillTodo   Todo
++   HiLink chillBlock  Statement
++   "HiLink chillIdentifier    Identifier
++   HiLink chillBracket        Delimiter
++ 
++   delcommand HiLink
++ endif
++ 
++ let b:current_syntax = "chill"
++ 
++ " vim: ts=8
+*** ../vim-6.2.201/src/version.c       Sun Jan 25 19:56:12 2004
+--- src/version.c      Sun Jan 25 19:57:47 2004
+***************
+*** 639,640 ****
+--- 639,642 ----
+  {   /* Add new patch number below this line */
++ /**/
++     202,
+  /**/
+
+-- 
+BEDEVERE: Stand by for attack!!
+   [CUT TO enormous army forming up.  Trebuchets, rows of PIKEMEN, siege
+   towers, pennants flying, shouts of "Stand by for attack!"  Traditional
+   army build-up shots.  The shouts echo across the ranks of the army.
+   We see various groups reacting, and stirring themselves in readiness.]
+ARTHUR:   Who are they?
+BEDEVERE: Oh, just some friends!
+                 "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/ \\\
+\\\              Project leader for A-A-P -- http://www.A-A-P.org        ///
+ \\\  Help AIDS victims, buy here: http://ICCF-Holland.org/click1.html  ///
diff --git a/6.2.203 b/6.2.203
new file mode 100644 (file)
index 0000000..0e2df70
--- /dev/null
+++ b/6.2.203
@@ -0,0 +1,56 @@
+To: vim-dev@vim.org
+Subject: Patch 6.2.203
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 6.2.203
+Problem:    With characterwise text that has more than one line, "3P" works
+           wrong.  "3p" has the same problem.  There also is a display
+           problem. (Daniel Goujot)
+Solution:   Perform characterwise puts with a count in the right position.
+Files:     src/ops.c
+
+
+*** ../vim-6.2.202/src/ops.c   Sun Jan 18 20:58:01 2004
+--- src/ops.c  Sat Jan 24 14:17:22 2004
+***************
+*** 3142,3147 ****
+--- 3142,3148 ----
+           curwin->w_cursor.lnum = lnum - 1;
+       else
+           curwin->w_cursor.lnum = lnum;
++      curbuf->b_op_start = curwin->w_cursor;  /* for mark_adjust() */
+  #endif
+      }
+      else if (u_save_cursor() == FAIL)
+***************
+*** 3434,3439 ****
+--- 3435,3441 ----
+                    * First insert y_array[size - 1] in front of second line.
+                    * Then append y_array[0] to first line.
+                    */
++                  lnum = new_cursor.lnum;
+                   ptr = ml_get(lnum) + col;
+                   totlen = (int)STRLEN(y_array[y_size - 1]);
+                   newp = alloc_check((unsigned)(STRLEN(ptr) + totlen + 1));
+*** ../vim-6.2.202/src/version.c       Sun Jan 25 20:16:26 2004
+--- src/version.c      Sun Jan 25 20:18:05 2004
+***************
+*** 639,640 ****
+--- 639,642 ----
+  {   /* Add new patch number below this line */
++ /**/
++     203,
+  /**/
+
+-- 
+Why is "abbreviation" such a long word?
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        Sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\              Project leader for A-A-P -- http://www.A-A-P.org        ///
+ \\\  Help AIDS victims, buy here: http://ICCF-Holland.org/click1.html  ///
diff --git a/6.2.204 b/6.2.204
new file mode 100644 (file)
index 0000000..c88a145
--- /dev/null
+++ b/6.2.204
@@ -0,0 +1,59 @@
+To: vim-dev@vim.org
+Subject: Patch 6.2.204
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 6.2.204 (after 6.2.086)
+Problem:    "]]" in a file with closed folds moves to the end of the file.
+           (Nam SungHyun)
+Solution:   Find one position in each closed fold, then move to after the fold.
+Files:     src/search.c
+
+
+*** ../vim-6.2.203/src/search.c        Sun Jan 18 21:27:18 2004
+--- src/search.c       Mon Jan 19 12:37:55 2004
+***************
+*** 2375,2381 ****
+  #ifdef FEAT_FOLDING
+           /* skip folded lines */
+           fold_skipped = FALSE;
+!          while (hasFolding(curr, &fold_first, &fold_last))
+           {
+               curr = ((dir > 0) ? fold_last : fold_first) + dir;
+               fold_skipped = TRUE;
+--- 2375,2381 ----
+  #ifdef FEAT_FOLDING
+           /* skip folded lines */
+           fold_skipped = FALSE;
+!          if (first && hasFolding(curr, &fold_first, &fold_last))
+           {
+               curr = ((dir > 0) ? fold_last : fold_first) + dir;
+               fold_skipped = TRUE;
+*** ../vim-6.2.203/src/version.c       Sun Jan 25 20:19:00 2004
+--- src/version.c      Sun Jan 25 20:20:41 2004
+***************
+*** 639,640 ****
+--- 639,642 ----
+  {   /* Add new patch number below this line */
++ /**/
++     204,
+  /**/
+
+-- 
+ARTHUR: CHARGE!
+   [The mighty ARMY charges.  Thundering noise of feet.  Clatter of coconuts.
+   Shouts etc.   Suddenly there is a wail of a siren and a couple of police
+   cars roar round in front of the charging ARMY and the POLICE leap out and
+   stop them.  TWO POLICEMAN and the HISTORIAN'S WIFE.  Black Marias skid up
+   behind them.]
+HISTORIAN'S WIFE: They're the ones, I'm sure.
+                 "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/ \\\
+\\\              Project leader for A-A-P -- http://www.A-A-P.org        ///
+ \\\  Help AIDS victims, buy here: http://ICCF-Holland.org/click1.html  ///
diff --git a/6.2.205 b/6.2.205
new file mode 100644 (file)
index 0000000..78b6fc9
--- /dev/null
+++ b/6.2.205
@@ -0,0 +1,75 @@
+To: vim-dev@vim.org
+Subject: Patch 6.2.205
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 6.2.205 (extra)
+Problem:    MS-Windows: When the taskbar is at the left or top of the screen,
+           the Vim window placement is wrong.
+Solution:   Compute the size and position of the window correctly. (Taro
+           Muraoka)
+Files:     src/gui_w32.c, src/gui_w48.c
+
+
+*** ../vim-6.2.204/src/gui_w32.c       Sun Oct 12 16:42:14 2003
+--- src/gui_w32.c      Tue Jan 13 12:05:08 2004
+***************
+*** 1197,1202 ****
+--- 1197,1211 ----
+      if (win_ypos < workarea_rect.top)
+       win_ypos = workarea_rect.top;
+  
++     /* When the taskbar is placed on the left or top of the screen,
++      * SetWindowPlacement() adds its width or height automatically, compensate
++      * for that.  When the offset is over 400 it's probably something else,
++      * skip it then (just in case). */
++     if (workarea_rect.left > 0 && workarea_rect.left < 400)
++      win_xpos -= workarea_rect.left;
++     if (workarea_rect.top > 0 && workarea_rect.top < 400)
++      win_ypos -= workarea_rect.top;
++ 
+      wndpl.rcNormalPosition.left = win_xpos;
+      wndpl.rcNormalPosition.right = win_xpos + win_width;
+      wndpl.rcNormalPosition.top = win_ypos;
+*** ../vim-6.2.204/src/gui_w48.c       Sun Jan 18 21:01:53 2004
+--- src/gui_w48.c      Wed Jan 21 16:11:49 2004
+***************
+*** 2348,2354 ****
+  gui_mch_get_screen_dimensions(int *screen_w, int *screen_h)
+  {
+  
+!     *screen_w = GetSystemMetrics(SM_CXSCREEN)
+             - GetSystemMetrics(SM_CXFRAME) * 2;
+      /* FIXME: dirty trick: Because the gui_get_base_height() doesn't include
+       * the menubar for MSwin, we subtract it from the screen height, so that
+--- 2348,2354 ----
+  gui_mch_get_screen_dimensions(int *screen_w, int *screen_h)
+  {
+  
+!     *screen_w = GetSystemMetrics(SM_CXFULLSCREEN)
+             - GetSystemMetrics(SM_CXFRAME) * 2;
+      /* FIXME: dirty trick: Because the gui_get_base_height() doesn't include
+       * the menubar for MSwin, we subtract it from the screen height, so that
+*** ../vim-6.2.204/src/version.c       Sun Jan 25 20:21:35 2004
+--- src/version.c      Sun Jan 25 20:22:48 2004
+***************
+*** 639,640 ****
+--- 639,642 ----
+  {   /* Add new patch number below this line */
++ /**/
++     205,
+  /**/
+
+-- 
+   [The rest of the ARMY stand around looking at a loss.]
+INSPECTOR END OF FILM: (picks up megaphone) All right!  Clear off!  Go on!
+                 "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/ \\\
+\\\              Project leader for A-A-P -- http://www.A-A-P.org        ///
+ \\\  Help AIDS victims, buy here: http://ICCF-Holland.org/click1.html  ///
diff --git a/6.2.206 b/6.2.206
new file mode 100644 (file)
index 0000000..7215e92
--- /dev/null
+++ b/6.2.206
@@ -0,0 +1,468 @@
+To: vim-dev@vim.org
+Subject: Patch 6.2.206
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 6.2.206
+Problem:    Multi-byte characters cannot be used as hotkeys in a console
+           dialog.  (Mattias Erkisson)
+Solution:   Handle multi-byte characters properly.  Also put () or [] around
+           default hotkeys.
+Files:     src/message.c, src/macros.h
+
+
+*** ../vim-6.2.205/src/message.c       Thu Jan  8 20:54:45 2004
+--- src/message.c      Thu Jan 22 14:35:02 2004
+***************
+*** 2536,2541 ****
+--- 2536,2542 ----
+      int              retval = 0;
+      char_u   *hotkeys;
+      int              c;
++     int              i;
+  
+  #ifndef NO_CONSOLE
+      /* Don't output anything in silent mode ("ex -s") */
+***************
+*** 2579,2601 ****
+           case NL:
+               retval = dfltbutton;
+               break;
+!          case Ctrl_C:                /* User aborts/cancels */
+           case ESC:
+               retval = 0;
+               break;
+           default:            /* Could be a hotkey? */
+!              if (c > 255)    /* special keys are ignored here */
+                   continue;
+!              for (retval = 0; hotkeys[retval]; retval++)
+               {
+!                  if (hotkeys[retval] == TOLOWER_LOC(c))
+!                      break;
+               }
+!              if (hotkeys[retval])
+!              {
+!                  retval++;
+                   break;
+-              }
+               /* No hotkey match, so keep waiting */
+               continue;
+           }
+--- 2580,2612 ----
+           case NL:
+               retval = dfltbutton;
+               break;
+!          case Ctrl_C:        /* User aborts/cancels */
+           case ESC:
+               retval = 0;
+               break;
+           default:            /* Could be a hotkey? */
+!              if (c < 0)      /* special keys are ignored here */
+                   continue;
+!              /* Make the character lowercase, as chars in "hotkeys" are. */
+!              c = MB_TOLOWER(c);
+!              retval = 1;
+!              for (i = 0; hotkeys[i]; ++i)
+               {
+! #ifdef FEAT_MBYTE
+!                  if (has_mbyte)
+!                  {
+!                      if ((*mb_ptr2char)(hotkeys + i) == c)
+!                          break;
+!                      i += (*mb_ptr2len_check)(hotkeys + i) - 1;
+!                  }
+!                  else
+! #endif
+!                      if (hotkeys[i] == c)
+!                          break;
+!                  ++retval;
+               }
+!              if (hotkeys[i])
+                   break;
+               /* No hotkey match, so keep waiting */
+               continue;
+           }
+***************
+*** 2615,2628 ****
+      return retval;
+  }
+  
+  /*
+   * Format the dialog string, and display it at the bottom of
+   * the screen. Return a string of hotkey chars (if defined) for
+!  * each 'button'. If a button has no hotkey defined, the string
+!  * has the buttons first letter.
+!  *
+!  * Returns allocated array, or NULL for error.
+   *
+   */
+      static char_u *
+  msg_show_console_dialog(message, buttons, dfltbutton)
+--- 2626,2680 ----
+      return retval;
+  }
+  
++ static int copy_char __ARGS((char_u *from, char_u *to, int lowercase));
++ 
++ /*
++  * Copy one character from "*from" to "*to", taking care of multi-byte
++  * characters.  Return the length of the character in bytes.
++  */
++     static int
++ copy_char(from, to, lowercase)
++     char_u   *from;
++     char_u   *to;
++     int              lowercase;      /* make character lower case */
++ {
++ #ifdef FEAT_MBYTE
++     int              len;
++     int              c;
++ 
++     if (has_mbyte)
++     {
++      if (lowercase)
++      {
++          c = MB_TOLOWER((*mb_ptr2char)(from));
++          return (*mb_char2bytes)(c, to);
++      }
++      else
++      {
++          len = (*mb_ptr2len_check)(from);
++          mch_memmove(to, from, (size_t)len);
++          return len;
++      }
++     }
++     else
++ #endif
++     {
++      if (lowercase)
++          *to = (char_u)TOLOWER_LOC(*from);
++      else
++          *to = *from;
++      return 1;
++     }
++ }
++ 
+  /*
+   * Format the dialog string, and display it at the bottom of
+   * the screen. Return a string of hotkey chars (if defined) for
+!  * each 'button'. If a button has no hotkey defined, the first character of
+!  * the button is used.
+!  * The hotkeys can be multi-byte characters, but without combining chars.
+   *
++  * Returns an allocated string with hotkeys, or NULL for error.
+   */
+      static char_u *
+  msg_show_console_dialog(message, buttons, dfltbutton)
+***************
+*** 2631,2726 ****
+      int              dfltbutton;
+  {
+      int              len = 0;
+!     int              lenhotkey = 1;  /*first button*/
+!     char_u   *hotk;
+!     char_u   *p;
+!     char_u   *q;
+      char_u   *r;
+  
+      /*
+!      * First compute how long a string we need to allocate for the message.
+       */
+!     r = buttons;
+!     while (*r)
+      {
+!      if (*r == DLG_BUTTON_SEP)
+       {
+!          len++;          /* '\n' -> ', ' */
+!          lenhotkey++;    /* each button needs a hotkey */
+!      }
+!      else if (*r == DLG_HOTKEY_CHAR)
+!      {
+!          len++;          /* '&a' -> '[a]' */
+!      }
+!      r++;
+!     }
+! 
+!     len += STRLEN(message)
+!          + 2                 /* for the NL's */
+!          + STRLEN(buttons)
+!          + 3;                /* for the ": " and NUL */
+  
+!     lenhotkey++;             /* for the NUL */
+  
+!     /*
+!      * Now allocate and load the strings
+!      */
+!     vim_free(confirm_msg);
+!     confirm_msg = alloc(len);
+!     if (confirm_msg == NULL)
+!      return NULL;
+!     *confirm_msg = NUL;
+!     hotk = alloc(lenhotkey);
+!     if (hotk == NULL)
+!      return NULL;
+! 
+!     *confirm_msg = '\n';
+!     STRCPY(confirm_msg + 1, message);
+! 
+!     p = confirm_msg + 1 + STRLEN(message);
+!     q = hotk;
+!     r = buttons;
+!     *q = (char_u)TOLOWER_LOC(*r);    /* define lowercase hotkey */
+! 
+!     /* Remember where the choices start, displaying starts here when "q" typed
+!      * at the more prompt. */
+!     confirm_msg_tail = p;
+!     *p++ = '\n';
+  
+!     while (*r)
+!     {
+!      if (*r == DLG_BUTTON_SEP)
+       {
+!          *p++ = ',';
+!          *p++ = ' ';     /* '\n' -> ', ' */
+!          *(++q) = (char_u)TOLOWER_LOC(*(r + 1)); /* next hotkey */
+!          if (dfltbutton)
+!              --dfltbutton;
+!      }
+!      else if (*r == DLG_HOTKEY_CHAR)
+!      {
+!          r++;
+!          if (*r == DLG_HOTKEY_CHAR)          /* '&&a' -> '&a' */
+!              *p++ = *r;
+           else
+!          {
+!              /* '&a' -> '[a]' */
+!              *p++ = (dfltbutton == 1) ? '[' : '(';
+!              *p++ = *r;
+!              *p++ = (dfltbutton == 1) ? ']' : ')';
+!              *q = (char_u)TOLOWER_LOC(*r);   /* define lowercase hotkey */
+!          }
+       }
+       else
+       {
+!          *p++ = *r;      /* everything else copy literally */
+       }
+-      r++;
+      }
+-     *p++ = ':';
+-     *p++ = ' ';
+-     *p = NUL;
+-     *(++q) = NUL;
+  
+      display_confirm_msg();
+      return hotk;
+--- 2683,2841 ----
+      int              dfltbutton;
+  {
+      int              len = 0;
+! #ifdef FEAT_MBYTE
+! # define HOTK_LEN (has_mbyte ? MB_MAXBYTES : 1)
+! #else
+! # define HOTK_LEN 1
+! #endif
+!     int              lenhotkey = HOTK_LEN;   /* count first button */
+!     char_u   *hotk = NULL;
+!     char_u   *msgp = NULL;
+!     char_u   *hotkp = NULL;
+      char_u   *r;
++     int              copy;
++ #define HAS_HOTKEY_LEN 30
++     char_u   has_hotkey[HAS_HOTKEY_LEN];
++     int              first_hotkey = FALSE;   /* first char of button is hotkey */
++     int              idx;
++ 
++     has_hotkey[0] = FALSE;
+  
+      /*
+!      * First loop: compute the size of memory to allocate.
+!      * Second loop: copy to the allocated memory.
+       */
+!     for (copy = 0; copy <= 1; ++copy)
+      {
+!      r = buttons;
+!      idx = 0;
+!      while (*r)
+       {
+!          if (*r == DLG_BUTTON_SEP)
+!          {
+!              if (copy)
+!              {
+!                  *msgp++ = ',';
+!                  *msgp++ = ' ';          /* '\n' -> ', ' */
+  
+!                  /* advance to next hotkey and set default hotkey */
+! #ifdef FEAT_MBYTE
+!                  if (has_mbyte)
+!                      hotkp += (*mb_ptr2len_check)(hotkp);
+!                  else
+! #endif
+!                      ++hotkp;
+!                  (void)copy_char(r + 1, hotkp, TRUE);
+!                  if (dfltbutton)
+!                      --dfltbutton;
+! 
+!                  /* If no hotkey is specified first char is used. */
+!                  if (idx < HAS_HOTKEY_LEN - 1 && !has_hotkey[++idx])
+!                      first_hotkey = TRUE;
+!              }
+!              else
+!              {
+!                  len += 3;               /* '\n' -> ', '; 'x' -> '(x)' */
+!                  lenhotkey += HOTK_LEN;  /* each button needs a hotkey */
+!                  if (idx < HAS_HOTKEY_LEN - 1)
+!                      has_hotkey[++idx] = FALSE;
+!              }
+!          }
+!          else if (*r == DLG_HOTKEY_CHAR || first_hotkey)
+!          {
+!              if (*r == DLG_HOTKEY_CHAR)
+!                  ++r;
+!              first_hotkey = FALSE;
+!              if (copy)
+!              {
+!                  if (*r == DLG_HOTKEY_CHAR)          /* '&&a' -> '&a' */
+!                      *msgp++ = *r;
+!                  else
+!                  {
+!                      /* '&a' -> '[a]' */
+!                      *msgp++ = (dfltbutton == 1) ? '[' : '(';
+!                      msgp += copy_char(r, msgp, FALSE);
+!                      *msgp++ = (dfltbutton == 1) ? ']' : ')';
+! 
+!                      /* redefine hotkey */
+!                      (void)copy_char(r, hotkp, TRUE);
+!                  }
+!              }
+!              else
+!              {
+!                  ++len;          /* '&a' -> '[a]' */
+!                  if (idx < HAS_HOTKEY_LEN - 1)
+!                      has_hotkey[idx] = TRUE;
+!              }
+!          }
+!          else
+!          {
+!              /* everything else copy literally */
+!              if (copy)
+!                  msgp += copy_char(r, msgp, FALSE);
+!          }
+  
+!          /* advance to the next character */
+! #ifdef FEAT_MBYTE
+!          if (has_mbyte)
+!              r += (*mb_ptr2len_check)(r);
+!          else
+! #endif
+!              ++r;
+!      }
+  
+!      if (copy)
+       {
+!          *msgp++ = ':';
+!          *msgp++ = ' ';
+!          *msgp = NUL;
+! #ifdef FEAT_MBYTE
+!          if (has_mbyte)
+!              hotkp += (*mb_ptr2len_check)(hotkp);
+           else
+! #endif
+!              ++hotkp;
+!          *hotkp = NUL;
+       }
+       else
+       {
+!          len += STRLEN(message)
+!                  + 2                 /* for the NL's */
+!                  + STRLEN(buttons)
+!                  + 3;                /* for the ": " and NUL */
+!          lenhotkey++;                /* for the NUL */
+! 
+!          /*
+!           * Now allocate and load the strings
+!           */
+!          vim_free(confirm_msg);
+!          confirm_msg = alloc(len);
+!          if (confirm_msg == NULL)
+!              return NULL;
+!          *confirm_msg = NUL;
+!          hotk = alloc(lenhotkey);
+!          if (hotk == NULL)
+!              return NULL;
+! 
+!          *confirm_msg = '\n';
+!          STRCPY(confirm_msg + 1, message);
+! 
+!          msgp = confirm_msg + 1 + STRLEN(message);
+!          hotkp = hotk;
+! 
+!          /* define first default hotkey */
+!          (void)copy_char(buttons, hotkp, TRUE);
+! 
+!          /* If no hotkey is specified first char is used. */
+!          if (!has_hotkey[0])
+!              first_hotkey = TRUE;
+! 
+!          /* Remember where the choices start, displaying starts here when
+!           * "hotkp" typed at the more prompt. */
+!          confirm_msg_tail = msgp;
+!          *msgp++ = '\n';
+       }
+      }
+  
+      display_confirm_msg();
+      return hotk;
+*** ../vim-6.2.205/src/macros.h        Sat Sep 27 19:36:47 2003
+--- src/macros.h       Thu Jan 22 14:33:13 2004
+***************
+*** 81,93 ****
+  
+  /*
+   * MB_ISLOWER() and MB_ISUPPER() are to be used on multi-byte characters.  But
+!  * don't use them for negative values or values above 0x100 for DBCS.
+   */
+  #ifdef FEAT_MBYTE
+! # define MB_ISLOWER(c)       (enc_utf8 && (c) > 0x80 ? utf_islower(c) : islower(c))
+! # define MB_ISUPPER(c)       (enc_utf8 && (c) > 0x80 ? utf_isupper(c) : isupper(c))
+! # define MB_TOLOWER(c)       (enc_utf8 && (c) > 0x80 ? utf_tolower(c) : TOLOWER_LOC(c))
+! # define MB_TOUPPER(c)       (enc_utf8 && (c) > 0x80 ? utf_toupper(c) : TOUPPER_LOC(c))
+  #else
+  # define MB_ISLOWER(c)       islower(c)
+  # define MB_ISUPPER(c)       isupper(c)
+--- 81,93 ----
+  
+  /*
+   * MB_ISLOWER() and MB_ISUPPER() are to be used on multi-byte characters.  But
+!  * don't use them for negative values.
+   */
+  #ifdef FEAT_MBYTE
+! # define MB_ISLOWER(c)       (enc_utf8 && (c) > 0x80 ? utf_islower(c) : (has_mbyte && c > 255 ? FALSE : islower(c)))
+! # define MB_ISUPPER(c)       (enc_utf8 && (c) > 0x80 ? utf_isupper(c) : (has_mbyte && c > 255 ? FALSE : isupper(c)))
+! # define MB_TOLOWER(c)       (enc_utf8 && (c) > 0x80 ? utf_tolower(c) : (has_mbyte && c > 255 ? c : TOLOWER_LOC(c)))
+! # define MB_TOUPPER(c)       (enc_utf8 && (c) > 0x80 ? utf_toupper(c) : (has_mbyte && c > 255 ? c : TOUPPER_LOC(c)))
+  #else
+  # define MB_ISLOWER(c)       islower(c)
+  # define MB_ISUPPER(c)       isupper(c)
+*** ../vim-6.2.205/src/version.c       Sun Jan 25 20:24:03 2004
+--- src/version.c      Sun Jan 25 20:26:14 2004
+***************
+*** 639,640 ****
+--- 639,642 ----
+  {   /* Add new patch number below this line */
++ /**/
++     206,
+  /**/
+
+-- 
+"I love deadlines.  I especially like the whooshing sound they
+make as they go flying by."
+                         -- Douglas Adams
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        Sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\              Project leader for A-A-P -- http://www.A-A-P.org        ///
+ \\\  Help AIDS victims, buy here: http://ICCF-Holland.org/click1.html  ///
diff --git a/6.2.207 b/6.2.207
new file mode 100644 (file)
index 0000000..d7d701f
--- /dev/null
+++ b/6.2.207
@@ -0,0 +1,68 @@
+To: vim-dev@vim.org
+Subject: Patch 6.2.207
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 6.2.207
+Problem:    When 'encoding' is a multi-byte encoding, expanding an
+           abbreviation that starts where insertion started results in
+           characters before the insertion to be deleted.  (Xiangjiang Ma)
+Solution:   Stop searching leftwards for the start of the word at the position
+           where insertion started.
+Files:     src/getchar.c
+
+
+*** ../vim-6.2.206/src/getchar.c       Sat Sep 27 19:36:46 2003
+--- src/getchar.c      Thu Jan 22 18:11:38 2004
+***************
+*** 1234,1239 ****
+--- 1234,1240 ----
+  
+  /*
+   * Restore the typeahead to what it was before calling save_typeahead().
++  * The allocated memory is freed, can only be called once!
+   */
+      void
+  restore_typeahead(tp)
+***************
+*** 3879,3885 ****
+               is_id = vim_iswordp(mb_prevptr(ptr, p));
+       }
+       clen = 1;
+!      while (p > ptr)
+       {
+           p = mb_prevptr(ptr, p);
+           if (vim_isspace(*p) || (!vim_abbr && is_id != vim_iswordp(p)))
+--- 3880,3886 ----
+               is_id = vim_iswordp(mb_prevptr(ptr, p));
+       }
+       clen = 1;
+!      while (p > ptr + mincol)
+       {
+           p = mb_prevptr(ptr, p);
+           if (vim_isspace(*p) || (!vim_abbr && is_id != vim_iswordp(p)))
+*** ../vim-6.2.206/src/version.c       Sun Jan 25 20:28:03 2004
+--- src/version.c      Sun Jan 25 20:29:20 2004
+***************
+*** 639,640 ****
+--- 639,642 ----
+  {   /* Add new patch number below this line */
++ /**/
++     207,
+  /**/
+
+-- 
+INSPECTOR END OF FILM: Move along.  There's nothing to see!  Keep moving!
+   [Suddenly he notices the cameras.]
+INSPECTOR END OF FILM: (to Camera) All right, put that away sonny.
+   [He walks over to it and puts his hand over the lens.]
+                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        Sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\              Project leader for A-A-P -- http://www.A-A-P.org        ///
+ \\\  Help AIDS victims, buy here: http://ICCF-Holland.org/click1.html  ///
diff --git a/6.2.208 b/6.2.208
new file mode 100644 (file)
index 0000000..070d9a6
--- /dev/null
+++ b/6.2.208
@@ -0,0 +1,148 @@
+To: vim-dev@vim.org
+Subject: Patch 6.2.208
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 6.2.208
+Problem:    When using fold markers, three lines in a row have the start
+           marker and deleting the first one with "dd", a nested fold is not
+           deleted.  (Kamil Burzynski)
+           Using marker folding, a level 1 fold doesn't stop when it is
+           followed by "{{{2", starting a level 2 fold.
+Solution:   Don't stop updating folds at the end of a change when the nesting
+           level of folds is larger than the fold level.
+           Correctly compute the number of folds that start at "{{{2".
+           Also avoid a crash for a NULL pointer.
+Files:     src/fold.c
+
+
+*** ../vim-6.2.207/src/fold.c  Mon Dec 29 20:30:12 2003
+--- src/fold.c Sat Jan 24 17:01:17 2004
+***************
+*** 2262,2270 ****
+                   && getlevel != foldlevelExpr
+                   && getlevel != foldlevelSyntax)
+               break;
+!          if (lvl == level
+!                  && foldFind(&fp->fd_nested, flp->lnum - fp->fd_top, &fp2))
+!              bot = fp2->fd_top + fp2->fd_len - 1 + fp->fd_top;
+           else if (fp->fd_top + fp->fd_len <= flp->lnum && lvl >= level)
+               finish = TRUE;
+           else
+--- 2262,2287 ----
+                   && getlevel != foldlevelExpr
+                   && getlevel != foldlevelSyntax)
+               break;
+!          i = 0;
+!          fp2 = fp;
+!          if (lvl >= level)
+!          {
+!              /* Compute how deep the folds currently are, if it's deeper
+!               * than "lvl" then some must be deleted, need to update
+!               * at least one nested fold. */
+!              ll = flp->lnum - fp->fd_top;
+!              while (foldFind(&fp2->fd_nested, ll, &fp2))
+!              {
+!                  ++i;
+!                  ll -= fp2->fd_top;
+!              }
+!          }
+!          if (lvl < level + i)
+!          {
+!              foldFind(&fp->fd_nested, flp->lnum - fp->fd_top, &fp2);
+!              if (fp2 != NULL)
+!                  bot = fp2->fd_top + fp2->fd_len - 1 + fp->fd_top;
+!          }
+           else if (fp->fd_top + fp->fd_len <= flp->lnum && lvl >= level)
+               finish = TRUE;
+           else
+***************
+*** 2959,2964 ****
+--- 2976,2982 ----
+      char_u   *startmarker;
+      int              cstart;
+      int              cend;
++     int              start_lvl = flp->lvl;
+      char_u   *s;
+      int              n;
+  
+***************
+*** 2987,2993 ****
+               {
+                   flp->lvl = n;
+                   flp->lvl_next = n;
+!                  ++flp->start;
+               }
+           }
+           else
+--- 3005,3014 ----
+               {
+                   flp->lvl = n;
+                   flp->lvl_next = n;
+!                  if (n < start_lvl)
+!                      flp->start = 0;
+!                  else
+!                      flp->start = n - start_lvl;
+               }
+           }
+           else
+***************
+*** 3036,3042 ****
+      fline_T  *flp;
+  {
+  #ifndef FEAT_SYN_HL
+!     flp->start = FALSE;
+      flp->lvl = 0;
+  #else
+      linenr_T lnum = flp->lnum + flp->off;
+--- 3057,3063 ----
+      fline_T  *flp;
+  {
+  #ifndef FEAT_SYN_HL
+!     flp->start = 0;
+      flp->lvl = 0;
+  #else
+      linenr_T lnum = flp->lnum + flp->off;
+***************
+*** 3044,3050 ****
+  
+      /* Use the maximum fold level at the start of this line and the next. */
+      flp->lvl = syn_get_foldlevel(flp->wp, lnum);
+!     flp->start = FALSE;
+      if (lnum < flp->wp->w_buffer->b_ml.ml_line_count)
+      {
+       n = syn_get_foldlevel(flp->wp, lnum + 1);
+--- 3065,3071 ----
+  
+      /* Use the maximum fold level at the start of this line and the next. */
+      flp->lvl = syn_get_foldlevel(flp->wp, lnum);
+!     flp->start = 0;
+      if (lnum < flp->wp->w_buffer->b_ml.ml_line_count)
+      {
+       n = syn_get_foldlevel(flp->wp, lnum + 1);
+*** ../vim-6.2.207/src/version.c       Sun Jan 25 20:30:03 2004
+--- src/version.c      Sun Jan 25 20:32:00 2004
+***************
+*** 639,640 ****
+--- 639,642 ----
+  {   /* Add new patch number below this line */
++ /**/
++     208,
+  /**/
+
+-- 
+JOHN CLEESE PLAYED: SECOND SOLDIER WITH A KEEN INTEREST IN BIRDS, LARGE MAN
+                    WITH DEAD BODY, BLACK KNIGHT, MR NEWT (A VILLAGE
+                    BLACKSMITH INTERESTED IN BURNING WITCHES), A QUITE
+                    EXTRAORDINARILY RUDE FRENCHMAN, TIM THE WIZARD, SIR
+                    LAUNCELOT
+                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        Sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\              Project leader for A-A-P -- http://www.A-A-P.org        ///
+ \\\  Help AIDS victims, buy here: http://ICCF-Holland.org/click1.html  ///
diff --git a/6.2.209 b/6.2.209
new file mode 100644 (file)
index 0000000..2aa15fe
--- /dev/null
+++ b/6.2.209
@@ -0,0 +1,56 @@
+To: vim-dev@vim.org
+Subject: Patch 6.2.209
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 6.2.209
+Problem:    A bogus fold is created when using "P" while the cursor is in the
+           middle of a closed fold. (Kamil Burzynski)
+Solution:   Correct the line number where marks are modified for closed folds.
+Files:     src/ops.c
+
+
+*** ../vim-6.2.208/src/ops.c   Sun Jan 25 20:19:00 2004
+--- src/ops.c  Sat Jan 24 14:17:22 2004
+***************
+*** 3506,3520 ****
+           {
+               curbuf->b_op_start.col = 0;
+               if (dir == FORWARD)
+-              {
+- #ifdef FEAT_FOLDING
+-                  /* a "p" inside a closed fold is like a "p" in the last
+-                   * line of the fold */
+-                  (void)hasFolding(curbuf->b_op_start.lnum, NULL,
+-                                                  &curbuf->b_op_start.lnum);
+- #endif
+                   curbuf->b_op_start.lnum++;
+-              }
+           }
+           mark_adjust(curbuf->b_op_start.lnum + (y_type == MCHAR),
+                                            (linenr_T)MAXLNUM, nr_lines, 0L);
+--- 3506,3512 ----
+*** ../vim-6.2.208/src/version.c       Sun Jan 25 20:33:47 2004
+--- src/version.c      Sun Jan 25 20:36:05 2004
+***************
+*** 639,640 ****
+--- 639,642 ----
+  {   /* Add new patch number below this line */
++ /**/
++     209,
+  /**/
+
+-- 
+TERRY GILLIAM PLAYED: PATSY (ARTHUR'S TRUSTY STEED), THE GREEN KNIGHT
+                      SOOTHSAYER, BRIDGEKEEPER, SIR GAWAIN (THE FIRST TO BE
+                      KILLED BY THE RABBIT)
+                 "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/ \\\
+\\\              Project leader for A-A-P -- http://www.A-A-P.org        ///
+ \\\  Help AIDS victims, buy here: http://ICCF-Holland.org/click1.html  ///
diff --git a/6.2.210 b/6.2.210
new file mode 100644 (file)
index 0000000..373c46a
--- /dev/null
+++ b/6.2.210
@@ -0,0 +1,315 @@
+To: vim-dev@vim.org
+Subject: Patch 6.2.210 (extra)
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 6.2.210 (extra)
+Problem:    Mac OSX: antialiased fonts are not supported.
+Solution:   Add the 'antialias' option to switch on antialiasing on Mac OSX
+            10.2 and later. (Peter Cucka)
+Files:      runtime/doc/options.txt, src/gui_mac.c, src/option.h, src/option.c
+
+
+*** ../vim-6.2.209/runtime/doc/options.txt     Tue Aug 12 20:01:59 2003
+--- runtime/doc/options.txt    Thu Jan 22 10:47:26 2004
+***************
+*** 1,4 ****
+! *options.txt*        For Vim version 6.2.  Last change: 2003 Aug 12
+  
+  
+                 VIM REFERENCE MANUAL    by Bram Moolenaar
+--- 1,4 ----
+! *options.txt*        For Vim version 6.2.  Last change: 2004 Jan 22
+  
+  
+                 VIM REFERENCE MANUAL    by Bram Moolenaar
+***************
+*** 619,644 ****
+       Registered sign, Greek/Cyrillic letters are represented by two octets,
+       therefore those fonts have "wide" glyphs for them. This is also
+       true of some line drawing characters used to make tables in text
+!      file. Therefore, when a CJK font is used for GUI vim or
+!      vim is running inside a terminal (emulators) that uses a CJK font
+!      (or vim is run inside an xterm invoked with "-cjkwidth" option.),
+       this option should be set to "double" to match the width perceived
+       by Vim with the width of glyphs in the font.  Perhaps it also has
+       to be set to "double" under CJK Windows 9x/ME or Windows 2k/XP
+       when the system locale is set to one of CJK locales.  See Unicode
+       Standard Annex #11 (http://www.unicode.org/reports/tr11).
+  
+!                      *'autochdir'* *'acd'* *'noatuochdir'* *'noacd'*
+  'autochdir' 'acd'    boolean (default off)
+                       global
+                       {not in Vi}
+                       {only available when compiled with the
+                       |+netbeans_intg| or |+sun_workshop| feature}
+!      When on, vim will change its value for the current working directory
+       whenever you open a file, switch buffers, delete a buffer or
+       open/close a window. It will change to the directory containing the
+       file which was opened or selected.  This option is provided for
+!      backward compatibility with the vim released with Sun ONE Studio 4
+       Enterprise Edition.
+  
+                               *'arabic'* *'arab'* *'noarabic'* *'noarab'*
+--- 621,658 ----
+       Registered sign, Greek/Cyrillic letters are represented by two octets,
+       therefore those fonts have "wide" glyphs for them. This is also
+       true of some line drawing characters used to make tables in text
+!      file. Therefore, when a CJK font is used for GUI Vim or
+!      Vim is running inside a terminal (emulators) that uses a CJK font
+!      (or Vim is run inside an xterm invoked with "-cjkwidth" option.),
+       this option should be set to "double" to match the width perceived
+       by Vim with the width of glyphs in the font.  Perhaps it also has
+       to be set to "double" under CJK Windows 9x/ME or Windows 2k/XP
+       when the system locale is set to one of CJK locales.  See Unicode
+       Standard Annex #11 (http://www.unicode.org/reports/tr11).
+  
+!                      *'antialias'* *'anti'* *'noantialias'* *'noanti'*
+! 'antialias' 'anti'   boolean (default: off)
+!                      global
+!                      {not in Vi}
+!                      {only available when compiled with GUI enabled
+!                         on Mac OS X}
+!      This option only has an effect in the GUI version of Vim on Mac OS X
+!         v10.2 or later.  When on, Vim will use smooth ("antialiased") fonts,
+!         which can be easier to read at certain sizes on certain displays.
+!      Setting this option can sometimes cause problems if |guifont| is set 
+!      to its default (empty string).
+! 
+!                      *'autochdir'* *'acd'* *'noautochdir'* *'noacd'*
+  'autochdir' 'acd'    boolean (default off)
+                       global
+                       {not in Vi}
+                       {only available when compiled with the
+                       |+netbeans_intg| or |+sun_workshop| feature}
+!      When on, Vim will change its value for the current working directory
+       whenever you open a file, switch buffers, delete a buffer or
+       open/close a window. It will change to the directory containing the
+       file which was opened or selected.  This option is provided for
+!      backward compatibility with the Vim released with Sun ONE Studio 4
+       Enterprise Edition.
+  
+                               *'arabic'* *'arab'* *'noarabic'* *'noarab'*
+*** ../vim-6.2.209/src/gui_mac.c       Sun Nov  2 15:27:37 2003
+--- src/gui_mac.c      Thu Jan 22 10:44:31 2004
+***************
+*** 2794,2799 ****
+--- 2850,2861 ----
+      gui.scrollbar_height = gui.scrollbar_width = 15; /* cheat 1 overlap */
+      gui.border_offset = gui.border_width = 2;
+  
++ #if defined(FEAT_GUI) && defined(MACOS_X)
++     /* If Quartz-style text antialiasing is available (see
++        gui_mch_draw_string() below), enable it for all font sizes. */
++     vim_setenv((char_u *)"QDTEXT_MINSIZE", (char_u *)"1");
++ #endif
++ 
+      /* TODO: Load bitmap if using TOOLBAR */
+      return OK;
+  }
+***************
+*** 3265,3295 ****
+      int              len;
+      int              flags;
+  {
+-     TextMode (srcCopy);
+-     TextFace (normal);
+  
+! /*  SelectFont(hdc, gui.currFont); */
+  
+!     if (flags & DRAW_TRANSP)
+      {
+!      TextMode (srcOr);
+      }
+  
+!     MoveTo (TEXT_X(col), TEXT_Y(row));
+!     DrawText ((char *)s, 0, len);
+  
+  
+!     if (flags & DRAW_BOLD)
+!     {
+!      TextMode (srcOr);
+!      MoveTo (TEXT_X(col) + 1, TEXT_Y(row));
+       DrawText ((char *)s, 0, len);
+-     }
+  
+!     if (flags & DRAW_UNDERL)
+!     {
+!      MoveTo (FILL_X(col), FILL_Y(row + 1) - 1);
+!      LineTo (FILL_X(col + len) - 1, FILL_Y(row + 1) - 1);
+      }
+  }
+  
+--- 3327,3411 ----
+      int              len;
+      int              flags;
+  {
+  
+! #if defined(FEAT_GUI) && defined(MACOS_X)
+!     /*
+!      * On OS X, try using Quartz-style text antialiasing.
+!      */
+!     SInt32 sys_version = 0;
+  
+!     Gestalt(gestaltSystemVersion, &sys_version);
+!     if (sys_version >= 0x1020)
+      {
+!         /* Quartz antialiasing is available only in OS 10.2 and later. */
+!         UInt32 qd_flags = (p_antialias ?
+!                           kQDUseCGTextRendering | kQDUseCGTextMetrics : 0);
+!         (void)SwapQDTextFlags(qd_flags);
+!     }
+! 
+!     if (sys_version >= 0x1020 && p_antialias)
+!     {
+!         StyleParameter face;
+! 
+!         face = normal;
+!         if (flags & DRAW_BOLD)
+!             face |= bold;
+!         if (flags & DRAW_UNDERL)
+!             face |= underline;
+!         TextFace(face);
+! 
+!         /* Quartz antialiasing works only in srcOr transfer mode. */
+!         TextMode(srcOr);
+! 
+!         if (!(flags & DRAW_TRANSP))
+!         {
+!             /*
+!              * Since we're using srcOr mode, we have to clear the block
+!              * before drawing the text.  The following is like calling
+!              * gui_mch_clear_block(row, col, row, col + len - 1),
+!              * but without setting the bg color to gui.back_pixel.
+!              */
+!             Rect rc;
+!             rc.left = FILL_X(col);
+!             rc.top = FILL_Y(row);
+!             rc.right = FILL_X(col + len) + (col + len == Columns);
+!             rc.bottom = FILL_Y(row + 1);
+!             EraseRect(&rc);
+!         }
+! 
+!         MoveTo(TEXT_X(col), TEXT_Y(row));
+!         DrawText((char*)s, 0, len);
+      }
++     else
++ #endif
++     {
++      /* Use old-style, non-antialiased QuickDraw text rendering. */
++      TextMode (srcCopy);
++      TextFace (normal);
+  
+!     /*  SelectFont(hdc, gui.currFont); */
+  
++      if (flags & DRAW_TRANSP)
++      {
++          TextMode (srcOr);
++      }
+  
+!      MoveTo (TEXT_X(col), TEXT_Y(row));
+       DrawText ((char *)s, 0, len);
+  
+! 
+!      if (flags & DRAW_BOLD)
+!      {
+!          TextMode (srcOr);
+!          MoveTo (TEXT_X(col) + 1, TEXT_Y(row));
+!          DrawText ((char *)s, 0, len);
+!      }
+! 
+!      if (flags & DRAW_UNDERL)
+!      {
+!          MoveTo (FILL_X(col), FILL_Y(row + 1) - 1);
+!          LineTo (FILL_X(col + len) - 1, FILL_Y(row + 1) - 1);
+!      }
+      }
+  }
+  
+***************
+*** 4045,4050 ****
+--- 4161,4167 ----
+       int         key = 0;
+       int         modifiers = 0;
+       char_u      *p_actext;
++ 
+       p_actext = menu->actext;
+       key = find_special_key(&p_actext, &modifiers, /*keycode=*/0);
+       if (*p_actext != 0)
+***************
+*** 5110,5116 ****
+  #if defined(FEAT_CW_EDITOR) || defined(PROTO)
+  /* TODO: Is it need for MACOS_X? (Dany) */
+      void
+! mch_post_buffer_write (buf_T *buf)
+  {
+  # ifdef USE_SIOUX
+      printf ("Writing Buf...\n");
+--- 5227,5233 ----
+  #if defined(FEAT_CW_EDITOR) || defined(PROTO)
+  /* TODO: Is it need for MACOS_X? (Dany) */
+      void
+! mch_post_buffer_write(buf_T *buf)
+  {
+  # ifdef USE_SIOUX
+      printf ("Writing Buf...\n");
+*** ../vim-6.2.209/src/option.h        Sun Jan 18 23:21:49 2004
+--- src/option.h       Thu Jan 22 10:37:55 2004
+***************
+*** 290,295 ****
+--- 290,298 ----
+  #ifdef FEAT_MBYTE
+  EXTERN char_u        *p_ambw;        /* 'ambiwidth' */
+  #endif
++ #if defined(FEAT_GUI) && defined(MACOS_X)
++ EXTERN int   *p_antialias;   /* 'antialias' */
++ #endif
+  EXTERN int   p_ar;           /* 'autoread' */
+  EXTERN int   p_aw;           /* 'autowrite' */
+  EXTERN int   p_awa;          /* 'autowriteall' */
+*** ../vim-6.2.209/src/option.c        Sun Jan 18 20:58:01 2004
+--- src/option.c       Thu Jan 22 10:39:02 2004
+***************
+*** 320,325 ****
+--- 320,334 ----
+                           (char_u *)224L,
+  #endif
+                                           (char_u *)0L}},
++     {"antialias",   "anti", P_BOOL|P_VI_DEF|P_VIM|P_RCLR,
++ #if defined(FEAT_GUI) && defined(MACOS_X)
++                          (char_u *)&p_antialias, PV_NONE,
++                          {(char_u *)FALSE, (char_u *)FALSE}
++ #else
++                          (char_u *)NULL, PV_NONE,
++                          {(char_u *)FALSE, (char_u *)FALSE}
++ #endif
++                             },
+      {"arabic",           "arab", P_BOOL|P_VI_DEF|P_VIM,
+  #ifdef FEAT_ARABIC
+                           (char_u *)VAR_WIN, PV_ARAB,
+*** ../vim-6.2.209/src/version.c       Sun Jan 25 20:37:29 2004
+--- src/version.c      Sun Jan 25 20:39:47 2004
+***************
+*** 639,640 ****
+--- 639,642 ----
+  {   /* Add new patch number below this line */
++ /**/
++     210,
+  /**/
+
+-- 
+ERIC IDLE PLAYED: THE DEAD COLLECTOR, MR BINT (A VILLAGE NE'ER-DO -WELL VERY
+                  KEEN ON BURNING WITCHES), SIR ROBIN, THE GUARD WHO DOESN'T
+                  HICOUGH BUT TRIES TO GET THINGS STRAIGHT, CONCORDE (SIR
+                  LAUNCELOT'S TRUSTY STEED), ROGER THE SHRUBBER (A SHRUBBER),
+                  BROTHER MAYNARD
+                 "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/ \\\
+\\\              Project leader for A-A-P -- http://www.A-A-P.org        ///
+ \\\  Help AIDS victims, buy here: http://ICCF-Holland.org/click1.html  ///
diff --git a/6.2.211 b/6.2.211
new file mode 100644 (file)
index 0000000..2cc4585
--- /dev/null
+++ b/6.2.211
@@ -0,0 +1,767 @@
+To: vim-dev@vim.org
+Subject: Patch 6.2.211 (extra)
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 6.2.211 (extra)
+Problem:    Code for handling file dropped on Vim is duplicated.
+Solution:   Move the common code to gui_handle_drop().
+           Add code to drop the files in the window under the cursor.
+           Support drag&drop on the Macintosh.  (Taro Muraoka)
+           When dropping a directory name edit that directory (using the
+           explorer plugin)
+           Fix that changing directory with Shift pressed didn't work for
+           relative path names.
+Files:     src/fileio.c, src/gui.c, src/gui_gtk_x11.c, src/gui_mac.c,
+           src/gui_w48.c, src/proto/fileio.pro, src/proto/gui.pro
+
+
+*** ../vim-6.2.210/src/fileio.c        Sun Jan 18 21:31:56 2004
+--- src/fileio.c       Wed Jan 21 14:49:33 2004
+***************
+*** 4834,4839 ****
+--- 4834,4840 ----
+  }
+  
+  /*
++  * Shorten filenames for all buffers.
+   * When "force" is TRUE: Use full path from now on for files currently being
+   * edited, both for file name and swap file name.  Try to shorten the file
+   * names a bit, if safe to do so.
+***************
+*** 4879,4884 ****
+--- 4880,4919 ----
+  #endif
+  }
+  
++ #if (defined(FEAT_DND) && defined(FEAT_GUI_GTK)) \
++      || defined(FEAT_GUI_MSWIN) \
++      || defined(FEAT_GUI_MAC) \
++      || defined(PROTO)
++ /*
++  * Shorten all filenames in "fnames[count]" by current directory.
++  */
++     void
++ shorten_filenames(fnames, count)
++     char_u   **fnames;
++     int              count;
++ {
++     int              i;
++     char_u   dirname[MAXPATHL];
++     char_u   *p;
++ 
++     if (fnames == NULL || count < 1)
++      return;
++     mch_dirname(dirname, sizeof(dirname));
++     for (i = 0; i < count; ++i)
++     {
++      if ((p = shorten_fname(fnames[i], dirname)) != NULL)
++      {
++          /* shorten_fname() returns pointer in given "fnames[i]".  If free
++           * "fnames[i]" first, "p" becomes invalid.  So we need to copy
++           * "p" first then free fnames[i]. */
++          p = vim_strsave(p);
++          vim_free(fnames[i]);
++          fnames[i] = p;
++      }
++     }
++ }
++ #endif
++ 
+  /*
+   * add extention to file name - change path/fo.o.h to path/fo.o.h.ext or
+   * fo_o_h.ext for MSDOS or when shortname option set.
+*** ../vim-6.2.210/src/gui.c   Thu Jan  8 20:54:45 2004
+--- src/gui.c  Thu Jan 22 16:53:48 2004
+***************
+*** 4481,4483 ****
+--- 4481,4615 ----
+  }
+  
+  #endif
++ 
++ #if (defined(FEAT_DND) && defined(FEAT_GUI_GTK)) \
++      || defined(FEAT_GUI_MSWIN) \
++      || defined(FEAT_GUI_MAC) \
++      || defined(PROTO)
++ 
++ #ifdef FEAT_WINDOWS
++ static void gui_wingoto_xy __ARGS((int x, int y));
++ 
++ /*
++  * Jump to the window at specified point (x, y).
++  */
++     static void
++ gui_wingoto_xy(x, y)
++     int x;
++     int y;
++ {
++     int              row = Y_2_ROW(y);
++     int              col = X_2_COL(x);
++     win_T    *wp;
++ 
++     if (row >= 0 && col >= 0)
++     {
++      wp = mouse_find_win(&row, &col);
++      if (wp != NULL && wp != curwin)
++          win_goto(wp);
++     }
++ }
++ #endif
++ 
++ /*
++  * Process file drop.  Mouse cursor position, key modifiers, name of files
++  * and count of files are given.  Argument "fnames[count]" has full pathnames
++  * of dropped files, they will be freed in this function, and caller can't use
++  * fnames after call this function.
++  */
++ /*ARGSUSED*/
++     void
++ gui_handle_drop(x, y, modifiers, fnames, count)
++     int              x;
++     int              y;
++     int_u    modifiers;
++     char_u   **fnames;
++     int              count;
++ {
++     int              i;
++     char_u   *p;
++ 
++     /*
++      * When the cursor is at the command line, add the file names to the
++      * command line, don't edit the files.
++      */
++     if (State & CMDLINE)
++     {
++      shorten_filenames(fnames, count);
++      for (i = 0; i < count; ++i)
++      {
++          if (fnames[i] != NULL)
++          {
++              if (i > 0)
++                  add_to_input_buf((char_u*)" ", 1);
++ 
++              /* We don't know what command is used thus we can't be sure
++               * about which characters need to be escaped.  Only escape the
++               * most common ones. */
++ # ifdef BACKSLASH_IN_FILENAME
++              p = vim_strsave_escaped(fnames[i], (char_u *)" \t\"|");
++ # else
++              p = vim_strsave_escaped(fnames[i], (char_u *)"\\ \t\"|");
++ # endif
++              if (p != NULL)
++                  add_to_input_buf(p, (int)STRLEN(p));
++              vim_free(p);
++              vim_free(fnames[i]);
++          }
++      }
++      vim_free(fnames);
++     }
++     else
++     {
++      /* Go to the window under mouse cursor, then shorten given "fnames" by
++       * current window, because a window can have local current dir. */
++ # ifdef FEAT_WINDOWS
++      gui_wingoto_xy(x, y);
++ # endif
++      shorten_filenames(fnames, count);
++ 
++      /* If Shift held down, remember the first item. */
++      if ((modifiers & MOUSE_SHIFT) != 0)
++          p = vim_strsave(fnames[0]);
++      else
++          p = NULL;
++ 
++      /* Handle the drop, :edit or :split to get to the file.  This also
++       * frees fnames[].  Skip this if there is only one item it's a
++       * directory and Shift is held down. */
++      if (count == 1 && (modifiers & MOUSE_SHIFT) != 0
++                                                   && mch_isdir(fnames[0]))
++      {
++          vim_free(fnames[0]);
++          vim_free(fnames);
++      }
++      else
++          handle_drop(count, fnames, (modifiers & MOUSE_CTRL) != 0);
++ 
++      /* If Shift held down, change to first file's directory.  If the first
++       * item is a directory, change to that directory (and let the explorer
++       * plugin show the contents). */
++      if (p != NULL)
++      {
++          if (mch_isdir(p))
++          {
++              if (mch_chdir((char *)p) == 0)
++                  shorten_fnames(TRUE);
++          }
++          else if (vim_chdirfile(p) == OK)
++              shorten_fnames(TRUE);
++          vim_free(p);
++      }
++ 
++      /* Update the screen display */
++      update_screen(NOT_VALID);
++ # ifdef FEAT_MENU
++      gui_update_menus(0);
++ # endif
++      setcursor();
++      out_flush();
++      gui_update_cursor(FALSE, FALSE);
++      gui_mch_flush();
++     }
++ }
++ #endif
+*** ../vim-6.2.210/src/gui_gtk_x11.c   Sun Jan 11 12:45:02 2004
+--- src/gui_gtk_x11.c  Wed Jan 21 16:07:00 2004
+***************
+*** 1823,1981 ****
+   * Drag aNd Drop support handlers.
+   */
+  
+!     static void
+! drag_handle_uri_list(GdkDragContext  *context,
+!                   GtkSelectionData   *data,
+!                   guint              time_,
+!                   GdkModifierType    state)
+  {
+!     char_u  **fnames;
+!     int          redo_dirs = FALSE;
+!     int          i;
+!     int          n;
+!     char_u  *start;
+!     char_u  *copy;
+!     char_u  *names;
+!     int          nfiles = 0;
+!     int          url = FALSE;
+  
+!     names = data->data;
+!     copy = alloc((unsigned)(data->length + 1));
+!     if (copy == NULL)
+!      return;
+!     /*
+!      * Count how many items there may be and separate them with a NUL.
+!      * Apparently the items are separated with \r\n.  This is not documented,
+!      * thus be careful not to go past the end.       Also allow separation with NUL
+!      * characters.
+!      */
+!     start = copy;
+!     for (i = 0; i < data->length; ++i)
+      {
+!      if (names[i] == NUL || names[i] == '\n' || names[i] == '\r')
+       {
+!          if (start > copy && start[-1] != NUL)
+           {
+!              ++nfiles;
+!              *start++ = NUL;
+           }
+       }
+!      else if (names[i] == '%' && i + 2 < data->length
+!                                            && hexhex2nr(names + i + 1) > 0)
+       {
+!          *start++ = hexhex2nr(names + i + 1);
+           i += 2;
+       }
+       else
+!          *start++ = names[i];
+      }
+!     if (start > copy && start[-1] != NUL)
+      {
+!      *start = NUL;   /* last item didn't have \r or \n */
+!      ++nfiles;
+      }
+  
+!     fnames = (char_u **)alloc((unsigned)(nfiles * sizeof(char_u *)));
+!     if (fnames == NULL)
+!     {
+!      vim_free(copy);
+!      return;
+!     }
+!     url = FALSE;     /* Set when a non-file URL was found. */
+!     start = copy;
+!     for (n = 0; n < nfiles; ++n)
+      {
+!      if (STRNCMP(start, "file://localhost", 16) == 0)
+!          start += 16;
+!      else
+       {
+!          if (STRNCMP(start, "file:", 5) != 0)
+!              url = TRUE;
+!          else
+!          {
+!              start += 5;
+!              while (start[0] == '/' && start[1] == '/')
+!                  ++start;
+!          }
+       }
+!      fnames[n] = vim_strsave(start);
+!      start += STRLEN(start) + 1;
+      }
+  
+!     /* accept */
+!     gtk_drag_finish(context, TRUE, FALSE, time_);
+  
+!     /* Special handling when all items are real files. */
+!     if (url == FALSE)
+!     {
+!      if (nfiles == 1)
+!      {
+!          if (fnames[0] != NULL && mch_isdir(fnames[0]))
+!          {
+!              /* Handle dropping a directory on Vim. */
+!              if (mch_chdir((char *)fnames[0]) == 0)
+!              {
+!                  vim_free(fnames[0]);
+!                  fnames[0] = NULL;
+!                  redo_dirs = TRUE;
+!              }
+!          }
+!      }
+!      else
+!      {
+!          /* Ignore any directories */
+!          for (i = 0; i < nfiles; ++i)
+!          {
+!              if (fnames[i] != NULL && mch_isdir(fnames[i]))
+!              {
+!                  vim_free(fnames[i]);
+!                  fnames[i] = NULL;
+!              }
+!          }
+!      }
+  
+!      if (state & GDK_SHIFT_MASK)
+!      {
+!          /* Shift held down, change to first file's directory */
+!          if (fnames[0] != NULL && vim_chdirfile(fnames[0]) == OK)
+!              redo_dirs = TRUE;
+!      }
+!      else
+!      {
+!          char_u      dirname[MAXPATHL];
+!          char_u      *s;
+  
+!          /* Shorten dropped file names. */
+!          if (mch_dirname(dirname, MAXPATHL) == OK)
+!              for (i = 0; i < nfiles; ++i)
+!                  if (fnames[i] != NULL)
+!                  {
+!                      s = shorten_fname(fnames[i], dirname);
+!                      if (s != NULL && (s = vim_strsave(s)) != NULL)
+!                      {
+!                          vim_free(fnames[i]);
+!                          fnames[i] = s;
+!                      }
+!                  }
+!      }
+!     }
+!     vim_free(copy);
+  
+!     /* Handle the drop, :edit or :split to get to the file */
+!     handle_drop(nfiles, fnames, (state & GDK_CONTROL_MASK) != 0);
+  
+!     if (redo_dirs)
+!      shorten_fnames(TRUE);
+  
+!     /* Update the screen display */
+!     update_screen(NOT_VALID);
+! # ifdef FEAT_MENU
+!     gui_update_menus(0);
+! # endif
+!     setcursor();
+!     out_flush();
+!     gui_update_cursor(FALSE, FALSE);
+!     gui_mch_flush();
+  }
+  
+      static void
+--- 1823,1940 ----
+   * Drag aNd Drop support handlers.
+   */
+  
+! /*
+!  * Count how many items there may be and separate them with a NUL.
+!  * Apparently the items are separated with \r\n.  This is not documented,
+!  * thus be careful not to go past the end.   Also allow separation with
+!  * NUL characters.
+!  */
+!     static int
+! count_and_decode_uri_list(char_u *out, char_u *raw, int len)
+  {
+!     int              i;
+!     char_u   *p = out;
+!     int              count = 0;
+  
+!     for (i = 0; i < len; ++i)
+      {
+!      if (raw[i] == NUL || raw[i] == '\n' || raw[i] == '\r')
+       {
+!          if (p > out && p[-1] != NUL)
+           {
+!              ++count;
+!              *p++ = NUL;
+           }
+       }
+!      else if (raw[i] == '%' && i + 2 < len && hexhex2nr(raw + i + 1) > 0)
+       {
+!          *p++ = hexhex2nr(raw + i + 1);
+           i += 2;
+       }
+       else
+!          *p++ = raw[i];
+      }
+!     if (p > out && p[-1] != NUL)
+      {
+!      *p = NUL;       /* last item didn't have \r or \n */
+!      ++count;
+      }
++     return count;
++ }
+  
+! /*
+!  * Parse NUL separated "src" strings.  Make it an array "outlist" form.  On
+!  * this process, URI which protocol is not "file:" are removed.  Return
+!  * length of array (less than "max").
+!  */
+!     static int
+! filter_uri_list(char_u **outlist, int max, char_u *src)
+! {
+!     int      i, j;
+! 
+!     for (i = j = 0; i < max; ++i)
+      {
+!      outlist[i] = NULL;
+!      if (STRNCMP(src, "file:", 5) == 0)
+       {
+!          src += 5;
+!          if (STRNCMP(src, "//localhost", 11) == 0)
+!              src += 11;
+!          while (src[0] == '/' && src[1] == '/')
+!              ++src;
+!          outlist[j++] = vim_strsave(src);
+       }
+!      src += STRLEN(src) + 1;
+      }
++     return j;
++ }
+  
+!     static char_u **
+! parse_uri_list(int *count, char_u *data, int len)
+! {
+!     int          n       = 0;
+!     char_u  *tmp    = NULL;
+!     char_u  **array = NULL;;
+! 
+!     if (data != NULL && len > 0 && (tmp = (char_u *)alloc(len + 1)) != NULL)
+!     {
+!      n = count_and_decode_uri_list(tmp, data, len);
+!      if (n > 0 && (array = (char_u **)alloc(n * sizeof(char_u *))) != NULL)
+!          n = filter_uri_list(array, n, tmp);
+!     }
+!     vim_free(tmp);
+!     *count = n;
+!     return array;
+! }
+  
+!     static void
+! drag_handle_uri_list(GdkDragContext  *context,
+!                   GtkSelectionData   *data,
+!                   guint              time_,
+!                   GdkModifierType    state,
+!                   gint               x,
+!                   gint               y)
+! {
+!     char_u  **fnames;
+!     int          nfiles = 0;
+  
+!     fnames = parse_uri_list(&nfiles, data->data, data->length);
+  
+!     if (fnames != NULL && nfiles > 0)
+!     {
+!      int_u   modifiers = 0;
+  
+!      gtk_drag_finish(context, TRUE, FALSE, time_); /* accept */
+  
+!      if (state & GDK_SHIFT_MASK)
+!          modifiers |= MOUSE_SHIFT;
+!      if (state & GDK_CONTROL_MASK)
+!          modifiers |= MOUSE_CTRL;
+!      if (state & GDK_MOD1_MASK)
+!          modifiers |= MOUSE_ALT;
+  
+!      gui_handle_drop(x, y, modifiers, fnames, nfiles);
+!     }
+  }
+  
+      static void
+***************
+*** 2071,2077 ****
+  
+      /* Not sure about the role of "text/plain" here... */
+      if (info == (guint)TARGET_TEXT_URI_LIST)
+!      drag_handle_uri_list(context, data, time_, state);
+      else
+       drag_handle_text(context, data, time_, state);
+  
+--- 2030,2036 ----
+  
+      /* Not sure about the role of "text/plain" here... */
+      if (info == (guint)TARGET_TEXT_URI_LIST)
+!      drag_handle_uri_list(context, data, time_, state, x, y);
+      else
+       drag_handle_text(context, data, time_, state);
+  
+*** ../vim-6.2.210/src/gui_mac.c       Sun Jan 25 20:42:15 2004
+--- src/gui_mac.c      Thu Jan 22 10:44:31 2004
+***************
+*** 2653,2658 ****
+--- 2653,2712 ----
+  }
+  #endif
+  
++     static OSErr
++ receiveHandler(WindowRef theWindow, void* handlerRefCon, DragRef theDrag)
++ {
++     int              x, y;
++     int_u    modifiers;
++     char_u   **fnames = NULL;
++     int              count;
++     int              i, j;
++ 
++     /* Get drop position, modifiers and count of items */
++     {
++      Point   point;
++      SInt16  mouseUpModifiers;
++      UInt16  countItem;
++ 
++      GetDragMouse(theDrag, &point, NULL);
++      GlobalToLocal(&point);
++      x = point.h;
++      y = point.v;
++      GetDragModifiers(theDrag, NULL, NULL, &mouseUpModifiers);
++      modifiers = EventModifiers2VimMouseModifiers(mouseUpModifiers);
++      CountDragItems(theDrag, &countItem);
++      count = countItem;
++     }
++ 
++     fnames = (char_u **)alloc(count * sizeof(char_u *));
++     if (fnames == NULL)
++      return dragNotAcceptedErr;
++ 
++     /* Get file names dropped */
++     for (i = j = 0; i < count; ++i)
++     {
++      DragItemRef     item;
++      OSErr           err;
++      Size            size;
++      FlavorType      type = flavorTypeHFS;
++      HFSFlavor       hfsFlavor;
++ 
++      fnames[i] = NULL;
++      GetDragItemReferenceNumber(theDrag, i + 1, &item);
++      err = GetFlavorDataSize(theDrag, item, type, &size);
++      if (err != noErr || size > sizeof(hfsFlavor))
++          continue;
++      err = GetFlavorData(theDrag, item, type, &hfsFlavor, &size, 0);
++      if (err != noErr)
++          continue;
++      fnames[j++] = FullPathFromFSSpec_save(hfsFlavor.fileSpec);
++     }
++     count = j;
++ 
++     gui_handle_drop(x, y, modifiers, fnames, count);
++     return noErr;
++ }
++ 
+  /*
+   * Initialise the GUI.  Create all the windows, set up all the call-backs
+   * etc.
+***************
+*** 2721,2726 ****
+--- 2775,2782 ----
+  
+      gui.VimWindow = NewCWindow(nil, &windRect, "\pgVim on Macintosh", true, documentProc,
+                       (WindowPtr) -1L, false, 0);
++     InstallReceiveHandler((DragReceiveHandlerUPP)receiveHandler,
++          gui.VimWindow, NULL);
+  #ifdef USE_CARBONIZED
+      SetPortWindowPort ( gui.VimWindow );
+  #else
+*** ../vim-6.2.210/src/gui_w48.c       Sun Jan 25 20:24:03 2004
+--- src/gui_w48.c      Wed Jan 21 16:11:49 2004
+***************
+*** 2841,2924 ****
+      char    szFile[BUFPATHLEN];
+      UINT    cFiles = DragQueryFile(hDrop, DRAGQVAL, szFile, BUFPATHLEN);
+      UINT    i;
+-     char_u  *fname;
+      char_u  **fnames;
+      char_u  redo_dirs = FALSE;
+  
+      /* TRACE("_OnDropFiles: %d files dropped\n", cFiles); */
+  
+  # ifdef FEAT_VISUAL
+      reset_VIsual();
+  # endif
+  
+      fnames = (char_u **)alloc(cFiles * sizeof(char_u *));
+  
+!     for (i = 0; i < cFiles; ++i)
+!     {
+!      DragQueryFile(hDrop, i, szFile, BUFPATHLEN);
+! 
+!      mch_dirname(IObuff, IOSIZE);
+!      fname = shorten_fname(szFile, IObuff);
+!      if (fname == NULL)
+!          fname = szFile;
+!      fnames[i] = vim_strsave(fname);
+!     }
+!     DragFinish(hDrop);
+! 
+!     /*
+!      * When the cursor is at the command line, add the file names to the
+!      * command line, don't edit the files.
+!      */
+!     if (State & CMDLINE)
+!     {
+       for (i = 0; i < cFiles; ++i)
+       {
+!          if (fnames[i] != NULL)
+!          {
+!              if (i > 0)
+!                  add_to_input_buf(" ", 1);
+!              add_to_input_buf(fnames[i], (int)STRLEN(fnames[i]));
+!          }
+!      }
+!     }
+!     else
+!     {
+!      /*
+!       * Handle dropping a directory on Vim.
+!       * Change to that directory and don't open any file.
+!       */
+!      if (cFiles == 1 && mch_isdir(fnames[0]))
+!      {
+!          if (mch_chdir(fnames[0]) == 0)
+!          {
+!              msg_str((char_u *)":cd %s", fnames[0]);
+!              vim_free(fnames[0]);
+!              fnames[0] = NULL;
+!              redo_dirs = TRUE;
+!          }
+       }
+  
+!      if (fnames[0] != NULL)
+!      {
+!          /* If Shift held down, change to first file's directory */
+!          if (GetKeyState(VK_SHIFT) & 0x8000)
+!              if (vim_chdirfile(fnames[0]) == OK)
+!                  redo_dirs = TRUE;
+! 
+!          /* Handle the drop, :edit or :split to get to the file */
+!          handle_drop(cFiles, fnames,
+!                                 ((GetKeyState(VK_CONTROL) & 0x8000) != 0));
+!      }
+  
+!      if (redo_dirs)
+!          shorten_fnames(TRUE);
+  
+!      /* Update the screen display */
+!      update_screen(NOT_VALID);
+!      setcursor();
+!      out_flush();
+      }
+-     s_need_activate = TRUE;
+  #endif
+  }
+  
+--- 2841,2885 ----
+      char    szFile[BUFPATHLEN];
+      UINT    cFiles = DragQueryFile(hDrop, DRAGQVAL, szFile, BUFPATHLEN);
+      UINT    i;
+      char_u  **fnames;
+      char_u  redo_dirs = FALSE;
++     POINT   pt;
++     int_u   modifiers = 0;
+  
+      /* TRACE("_OnDropFiles: %d files dropped\n", cFiles); */
+  
++     /* Obtain dropped position */
++     DragQueryPoint(hDrop, &pt);
++     MapWindowPoints(s_hwnd, s_textArea, &pt, 1);
++ 
+  # ifdef FEAT_VISUAL
+      reset_VIsual();
+  # endif
+  
+      fnames = (char_u **)alloc(cFiles * sizeof(char_u *));
+  
+!     if (fnames != NULL)
+       for (i = 0; i < cFiles; ++i)
+       {
+!          DragQueryFile(hDrop, i, szFile, BUFPATHLEN);
+!          fnames[i] = vim_strsave(szFile);
+       }
+  
+!     DragFinish(hDrop);
+! 
+!     if (fnames != NULL)
+!     {
+!      if ((GetKeyState(VK_SHIFT) & 0x8000) != 0)
+!          modifiers |= MOUSE_SHIFT;
+!      if ((GetKeyState(VK_CONTROL) & 0x8000) != 0)
+!          modifiers |= MOUSE_CTRL;
+!      if ((GetKeyState(VK_MENU) & 0x8000) != 0)
+!          modifiers |= MOUSE_ALT;
+  
+!      gui_handle_drop(pt.x, pt.y, modifiers, fnames, cFiles);
+  
+!      s_need_activate = TRUE;
+      }
+  #endif
+  }
+  
+*** ../vim-6.2.210/src/proto/fileio.pro        Sun Jun  1 12:26:09 2003
+--- src/proto/fileio.pro       Wed Jan 21 15:32:29 2004
+***************
+*** 5,10 ****
+--- 5,11 ----
+  int buf_write __ARGS((buf_T *buf, char_u *fname, char_u *sfname, linenr_T start, linenr_T end, exarg_T *eap, int append, int forceit, int reset_changed, int filtering));
+  char_u *shorten_fname __ARGS((char_u *full_path, char_u *dir_name));
+  void shorten_fnames __ARGS((int force));
++ void shorten_filenames __ARGS((char_u **fnames, int count));
+  char_u *modname __ARGS((char_u *fname, char_u *ext, int prepend_dot));
+  char_u *buf_modname __ARGS((int shortname, char_u *fname, char_u *ext, int prepend_dot));
+  int vim_fgets __ARGS((char_u *buf, int size, FILE *fp));
+*** ../vim-6.2.210/src/proto/gui.pro   Sun Jun  1 12:26:24 2003
+--- src/proto/gui.pro  Wed Jan 21 15:32:24 2004
+***************
+*** 57,60 ****
+--- 57,61 ----
+  void gui_update_screen __ARGS((void));
+  char_u *get_find_dialog_text __ARGS((char_u *arg, int *wwordp, int *mcasep));
+  int gui_do_findrepl __ARGS((int flags, char_u *find_text, char_u *repl_text, int down));
++ void gui_handle_drop __ARGS((int x, int y, int_u modifiers, char_u **fnames, int count));
+  /* vim: set ft=c : */
+*** ../vim-6.2.210/src/version.c       Sun Jan 25 20:42:15 2004
+--- src/version.c      Sun Jan 25 20:44:30 2004
+***************
+*** 639,640 ****
+--- 639,642 ----
+  {   /* Add new patch number below this line */
++ /**/
++     211,
+  /**/
+
+-- 
+NEIL INNES PLAYED: THE FIRST SELF-DESTRUCTIVE MONK, ROBIN'S LEAST FAVORITE
+                   MINSTREL, THE PAGE CRUSHED BY A RABBIT, THE OWNER OF A DUCK
+                 "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/ \\\
+\\\              Project leader for A-A-P -- http://www.A-A-P.org        ///
+ \\\  Help AIDS victims, buy here: http://ICCF-Holland.org/click1.html  ///
This page took 0.383603 seconds and 4 git commands to generate.