]> git.pld-linux.org Git - packages/vim.git/commitdiff
- up to 7.2.344 auto/th/vim-7_2_344-1
authorElan Ruusamäe <glen@pld-linux.org>
Thu, 21 Jan 2010 19:17:28 +0000 (19:17 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
Changed files:
    7.2.331 -> 1.1
    7.2.332 -> 1.1
    7.2.333 -> 1.1
    7.2.334 -> 1.1
    7.2.335 -> 1.1
    7.2.336 -> 1.1
    7.2.337 -> 1.1
    7.2.338 -> 1.1
    7.2.339 -> 1.1
    7.2.340 -> 1.1
    7.2.341 -> 1.1
    7.2.342 -> 1.1
    7.2.343 -> 1.1
    7.2.344 -> 1.1
    vim.spec -> 1.492

15 files changed:
7.2.331 [new file with mode: 0644]
7.2.332 [new file with mode: 0644]
7.2.333 [new file with mode: 0644]
7.2.334 [new file with mode: 0644]
7.2.335 [new file with mode: 0644]
7.2.336 [new file with mode: 0644]
7.2.337 [new file with mode: 0644]
7.2.338 [new file with mode: 0644]
7.2.339 [new file with mode: 0644]
7.2.340 [new file with mode: 0644]
7.2.341 [new file with mode: 0644]
7.2.342 [new file with mode: 0644]
7.2.343 [new file with mode: 0644]
7.2.344 [new file with mode: 0644]
vim.spec

diff --git a/7.2.331 b/7.2.331
new file mode 100644 (file)
index 0000000..82f40a2
--- /dev/null
+++ b/7.2.331
@@ -0,0 +1,47 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.331
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.331
+Problem:    Can't interrupt "echo list" for a very long list.
+Solution:   Call line_breakcheck() in list_join().
+Files:     src/eval.c
+
+
+*** ../vim-7.2.330/src/eval.c  2010-01-12 12:48:40.000000000 +0100
+--- src/eval.c 2010-01-12 15:59:28.000000000 +0100
+***************
+*** 6475,6480 ****
+--- 6475,6481 ----
+       vim_free(tofree);
+       if (s == NULL)
+           return FAIL;
++      line_breakcheck();
+      }
+      return OK;
+  }
+*** ../vim-7.2.330/src/version.c       2010-01-12 19:48:57.000000000 +0100
+--- src/version.c      2010-01-19 12:44:02.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+  {   /* Add new patch number below this line */
++ /**/
++     331,
+  /**/
+
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+116. You are living with your boyfriend who networks your respective
+     computers so you can sit in separate rooms and email each other
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\        download, build and distribute -- http://www.A-A-P.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.2.332 b/7.2.332
new file mode 100644 (file)
index 0000000..7956d1e
--- /dev/null
+++ b/7.2.332
@@ -0,0 +1,101 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.332
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.332
+Problem:    Crash when spell correcting triggers an autocommand that reloads
+           the buffer.
+Solution:   Make a copy of the line to be modified. (Dominique Pelle)
+Files:     src/spell.c
+
+
+*** ../vim-7.2.331/src/spell.c 2009-07-22 11:03:38.000000000 +0200
+--- src/spell.c        2010-01-19 12:44:42.000000000 +0100
+***************
+*** 10306,10312 ****
+      /* Figure out if the word should be capitalised. */
+      need_cap = check_need_cap(curwin->w_cursor.lnum, curwin->w_cursor.col);
+  
+!     line = ml_get_curline();
+  
+      /* Get the list of suggestions.  Limit to 'lines' - 2 or the number in
+       * 'spellsuggest', whatever is smaller. */
+--- 10306,10315 ----
+      /* Figure out if the word should be capitalised. */
+      need_cap = check_need_cap(curwin->w_cursor.lnum, curwin->w_cursor.col);
+  
+!     /* Make a copy of current line since autocommands may free the line. */
+!     line = vim_strsave(ml_get_curline());
+!     if (line == NULL)
+!      goto skip;
+  
+      /* Get the list of suggestions.  Limit to 'lines' - 2 or the number in
+       * 'spellsuggest', whatever is smaller. */
+***************
+*** 10470,10475 ****
+--- 10473,10480 ----
+       curwin->w_cursor = prev_cursor;
+  
+      spell_find_cleanup(&sug);
++ skip:
++     vim_free(line);
+  }
+  
+  /*
+***************
+*** 10931,10937 ****
+           rescore_suggestions(su);
+  
+       /*
+!       * While going throught the soundfold tree "su_maxscore" is the score
+        * for the soundfold word, limits the changes that are being tried,
+        * and "su_sfmaxscore" the rescored score, which is set by
+        * cleanup_suggestions().
+--- 10936,10942 ----
+           rescore_suggestions(su);
+  
+       /*
+!       * While going through the soundfold tree "su_maxscore" is the score
+        * for the soundfold word, limits the changes that are being tried,
+        * and "su_sfmaxscore" the rescored score, which is set by
+        * cleanup_suggestions().
+***************
+*** 11415,11421 ****
+      char_u   tword[MAXWLEN];     /* good word collected so far */
+      trystate_T       stack[MAXWLEN];
+      char_u   preword[MAXWLEN * 3]; /* word found with proper case;
+!                                     * concatanation of prefix compound
+                                      * words and split word.  NUL terminated
+                                      * when going deeper but not when coming
+                                      * back. */
+--- 11420,11426 ----
+      char_u   tword[MAXWLEN];     /* good word collected so far */
+      trystate_T       stack[MAXWLEN];
+      char_u   preword[MAXWLEN * 3]; /* word found with proper case;
+!                                     * concatenation of prefix compound
+                                      * words and split word.  NUL terminated
+                                      * when going deeper but not when coming
+                                      * back. */
+*** ../vim-7.2.331/src/version.c       2010-01-19 12:46:51.000000000 +0100
+--- src/version.c      2010-01-19 13:05:32.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+  {   /* Add new patch number below this line */
++ /**/
++     332,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+117. You are more comfortable typing in html.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\        download, build and distribute -- http://www.A-A-P.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.2.333 b/7.2.333
new file mode 100644 (file)
index 0000000..02273b6
--- /dev/null
+++ b/7.2.333
@@ -0,0 +1,371 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.333
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.333
+Problem:    Warnings from static code analysis.
+Solution:   Small changes to various lines. (Dominique Pelle)
+Files:     src/buffer.c, src/edit.c, src/ex_getln.c, src/fileio.c,
+           src/if_cscope.c, src/netbeans.c, src/ops.c, src/quickfix.c,
+           src/syntax.c, src/ui.c
+
+
+*** ../vim-7.2.332/src/buffer.c        2009-05-17 13:30:58.000000000 +0200
+--- src/buffer.c       2010-01-19 12:50:24.000000000 +0100
+***************
+*** 315,321 ****
+  {
+  #ifdef FEAT_AUTOCMD
+      int              is_curbuf;
+!     int              nwindows = buf->b_nwindows;
+  #endif
+      int              unload_buf = (action != 0);
+      int              del_buf = (action == DOBUF_DEL || action == DOBUF_WIPE);
+--- 315,321 ----
+  {
+  #ifdef FEAT_AUTOCMD
+      int              is_curbuf;
+!     int              nwindows;
+  #endif
+      int              unload_buf = (action != 0);
+      int              del_buf = (action == DOBUF_DEL || action == DOBUF_WIPE);
+*** ../vim-7.2.332/src/edit.c  2009-12-24 15:45:53.000000000 +0100
+--- src/edit.c 2010-01-19 12:53:18.000000000 +0100
+***************
+*** 4048,4054 ****
+           save_p_ic = p_ic;
+           p_ic = ignorecase(compl_pattern);
+  
+!          /* Find up to TAG_MANY matches.  Avoids that an enourmous number
+            * of matches is found when compl_pattern is empty */
+           if (find_tags(compl_pattern, &num_matches, &matches,
+                   TAG_REGEXP | TAG_NAMES | TAG_NOIC |
+--- 4048,4054 ----
+           save_p_ic = p_ic;
+           p_ic = ignorecase(compl_pattern);
+  
+!          /* Find up to TAG_MANY matches.  Avoids that an enormous number
+            * of matches is found when compl_pattern is empty */
+           if (find_tags(compl_pattern, &num_matches, &matches,
+                   TAG_REGEXP | TAG_NAMES | TAG_NOIC |
+***************
+*** 4219,4225 ****
+                                                || IObuff[len - 2] == '!'))))
+                                       IObuff[len++] = ' ';
+                               }
+!                              /* copy as much as posible of the new word */
+                               if (tmp_ptr - ptr >= IOSIZE - len)
+                                   tmp_ptr = ptr + IOSIZE - len - 1;
+                               STRNCPY(IObuff + len, ptr, tmp_ptr - ptr);
+--- 4219,4225 ----
+                                                || IObuff[len - 2] == '!'))))
+                                       IObuff[len++] = ' ';
+                               }
+!                              /* copy as much as possible of the new word */
+                               if (tmp_ptr - ptr >= IOSIZE - len)
+                                   tmp_ptr = ptr + IOSIZE - len - 1;
+                               STRNCPY(IObuff + len, ptr, tmp_ptr - ptr);
+***************
+*** 5827,5836 ****
+  #endif
+               && !has_format_option(FO_WRAP))
+  
+-      {
+-          textwidth = 0;
+           break;
+-      }
+       if ((startcol = curwin->w_cursor.col) == 0)
+           break;
+  
+--- 5827,5833 ----
+*** ../vim-7.2.332/src/ex_getln.c      2009-12-02 17:15:04.000000000 +0100
+--- src/ex_getln.c     2010-01-19 12:54:47.000000000 +0100
+***************
+*** 2193,2199 ****
+      {
+       if (ga_grow(&line_ga, 40) == FAIL)
+           break;
+-      pend = (char_u *)line_ga.ga_data + line_ga.ga_len;
+  
+       /* Get one character at a time.  Don't use inchar(), it can't handle
+        * special characters. */
+--- 2193,2198 ----
+***************
+*** 3314,3320 ****
+                   WILD_HOME_REPLACE|WILD_ADD_SLASH|WILD_SILENT|WILD_ESCAPE
+                                                             |options, type);
+           vim_free(p1);
+!          /* longest match: make sure it is not shorter (happens with :help */
+           if (p2 != NULL && type == WILD_LONGEST)
+           {
+               for (j = 0; j < xp->xp_pattern_len; ++j)
+--- 3313,3319 ----
+                   WILD_HOME_REPLACE|WILD_ADD_SLASH|WILD_SILENT|WILD_ESCAPE
+                                                             |options, type);
+           vim_free(p1);
+!          /* longest match: make sure it is not shorter, happens with :help */
+           if (p2 != NULL && type == WILD_LONGEST)
+           {
+               for (j = 0; j < xp->xp_pattern_len; ++j)
+*** ../vim-7.2.332/src/fileio.c        2009-12-31 14:52:48.000000000 +0100
+--- src/fileio.c       2010-01-19 12:56:59.000000000 +0100
+***************
+*** 7072,7079 ****
+        */
+       for (i = 0; i < (int)(sizeof(tempdirs) / sizeof(char *)); ++i)
+       {
+-          size_t      itmplen;
+  # ifndef HAVE_MKDTEMP
+           long        nr;
+           long        off;
+  # endif
+--- 7072,7079 ----
+        */
+       for (i = 0; i < (int)(sizeof(tempdirs) / sizeof(char *)); ++i)
+       {
+  # ifndef HAVE_MKDTEMP
++          size_t      itmplen;
+           long        nr;
+           long        off;
+  # endif
+***************
+*** 7091,7097 ****
+               else
+  # endif
+                   add_pathsep(itmp);
+-              itmplen = STRLEN(itmp);
+  
+  # ifdef HAVE_MKDTEMP
+               /* Leave room for filename */
+--- 7091,7096 ----
+***************
+*** 7104,7109 ****
+--- 7103,7109 ----
+                * otherwise it doesn't matter.  The use of mkdir() avoids any
+                * security problems because of the predictable number. */
+               nr = (mch_get_pid() + (long)time(NULL)) % 1000000L;
++              itmplen = STRLEN(itmp);
+  
+               /* Try up to 10000 different values until we find a name that
+                * doesn't exist. */
+*** ../vim-7.2.332/src/if_cscope.c     2009-07-09 21:22:36.000000000 +0200
+--- src/if_cscope.c    2010-01-19 12:57:58.000000000 +0100
+***************
+*** 2069,2075 ****
+           continue;
+       (void)strcpy(tbuf, matches[idx]);
+  
+!      if ((fname = strtok(tbuf, (const char *)"\t")) == NULL)
+           continue;
+       if ((fname = strtok(NULL, (const char *)"\t")) == NULL)
+           continue;
+--- 2069,2075 ----
+           continue;
+       (void)strcpy(tbuf, matches[idx]);
+  
+!      if (strtok(tbuf, (const char *)"\t") == NULL)
+           continue;
+       if ((fname = strtok(NULL, (const char *)"\t")) == NULL)
+           continue;
+*** ../vim-7.2.332/src/netbeans.c      2009-09-11 14:19:41.000000000 +0200
+--- src/netbeans.c     2010-01-19 13:57:11.000000000 +0100
+***************
+*** 873,879 ****
+      {
+  #ifdef NBDEBUG
+       /*
+!       * This happens because the ExtEd can send a cammand or 2 after
+        * doing a stopDocumentListen command. It doesn't harm anything
+        * so I'm disabling it except for debugging.
+        */
+--- 883,889 ----
+      {
+  #ifdef NBDEBUG
+       /*
+!       * This happens because the ExtEd can send a command or 2 after
+        * doing a stopDocumentListen command. It doesn't harm anything
+        * so I'm disabling it except for debugging.
+        */
+***************
+*** 1174,1180 ****
+               break;
+       }
+      }
+!     *q++ = '\0';
+  
+      return buf;
+  }
+--- 1184,1190 ----
+               break;
+       }
+      }
+!     *q = '\0';
+  
+      return buf;
+  }
+***************
+*** 3070,3076 ****
+  }
+  
+  /*
+!  * Send netbeans an unmodufied command.
+   */
+      void
+  netbeans_unmodified(buf_T *bufp UNUSED)
+--- 3080,3086 ----
+  }
+  
+  /*
+!  * Send netbeans an unmodified command.
+   */
+      void
+  netbeans_unmodified(buf_T *bufp UNUSED)
+***************
+*** 3366,3372 ****
+  
+  
+  /*
+!  * Add a sign of the reqested type at the requested location.
+   *
+   * Reverse engineering:
+   * Apparently an annotation is defined the first time it is used in a buffer.
+--- 3380,3386 ----
+  
+  
+  /*
+!  * Add a sign of the requested type at the requested location.
+   *
+   * Reverse engineering:
+   * Apparently an annotation is defined the first time it is used in a buffer.
+*** ../vim-7.2.332/src/ops.c   2009-11-25 12:38:49.000000000 +0100
+--- src/ops.c  2010-01-19 13:04:46.000000000 +0100
+***************
+*** 5591,5603 ****
+        */
+       if (has_mbyte)
+       {
+-          char_u      *conv_str = str;
+           vimconv_T   vc;
+  
+           vc.vc_type = CONV_NONE;
+           if (convert_setup(&vc, p_enc, (char_u *)"latin1") == OK)
+           {
+!              int intlen = len;
+  
+               conv_str = string_convert(&vc, str, &intlen);
+               len = intlen;
+--- 5598,5610 ----
+        */
+       if (has_mbyte)
+       {
+           vimconv_T   vc;
+  
+           vc.vc_type = CONV_NONE;
+           if (convert_setup(&vc, p_enc, (char_u *)"latin1") == OK)
+           {
+!              int     intlen = len;
+!              char_u  *conv_str;
+  
+               conv_str = string_convert(&vc, str, &intlen);
+               len = intlen;
+*** ../vim-7.2.332/src/quickfix.c      2009-06-24 17:31:27.000000000 +0200
+--- src/quickfix.c     2010-01-19 13:12:29.000000000 +0100
+***************
+*** 1899,1905 ****
+      int              i;
+      int              idx1 = 1;
+      int              idx2 = -1;
+-     int              need_return = TRUE;
+      char_u   *arg = eap->arg;
+      int              all = eap->forceit;     /* if not :cl!, only show
+                                                  recognised errors */
+--- 1899,1904 ----
+***************
+*** 1939,1951 ****
+      {
+       if ((qfp->qf_valid || all) && idx1 <= i && i <= idx2)
+       {
+!          if (need_return)
+!          {
+!              msg_putchar('\n');
+!              if (got_int)
+!                  break;
+!              need_return = FALSE;
+!          }
+  
+           fname = NULL;
+           if (qfp->qf_fnum != 0
+--- 1938,1946 ----
+      {
+       if ((qfp->qf_valid || all) && idx1 <= i && i <= idx2)
+       {
+!          msg_putchar('\n');
+!          if (got_int)
+!              break;
+  
+           fname = NULL;
+           if (qfp->qf_fnum != 0
+***************
+*** 1988,1994 ****
+                                                             IObuff, IOSIZE);
+           msg_prt_line(IObuff, FALSE);
+           out_flush();                /* show one line at a time */
+-          need_return = TRUE;
+       }
+  
+       qfp = qfp->qf_next;
+--- 1983,1988 ----
+*** ../vim-7.2.332/src/syntax.c        2009-12-16 18:13:04.000000000 +0100
+--- src/syntax.c       2010-01-19 13:12:56.000000000 +0100
+***************
+*** 4167,4173 ****
+       if (!HASHITEM_EMPTY(hi))
+       {
+           --todo;
+-          kp = HI2KE(hi);
+           for (kp = HI2KE(hi); kp != NULL; kp = kp_next)
+           {
+               kp_next = kp->ke_next;
+--- 4167,4172 ----
+*** ../vim-7.2.332/src/ui.c    2009-09-11 16:48:06.000000000 +0200
+--- src/ui.c   2010-01-19 13:14:04.000000000 +0100
+***************
+*** 2383,2389 ****
+        * 'enc' anyway. */
+       if (has_mbyte)
+       {
+!          char_u      *conv_buf = buffer;
+           vimconv_T   vc;
+  
+           vc.vc_type = CONV_NONE;
+--- 2383,2389 ----
+        * 'enc' anyway. */
+       if (has_mbyte)
+       {
+!          char_u      *conv_buf;
+           vimconv_T   vc;
+  
+           vc.vc_type = CONV_NONE;
+*** ../vim-7.2.332/src/version.c       2010-01-19 13:06:42.000000000 +0100
+--- src/version.c      2010-01-19 14:55:50.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+  {   /* Add new patch number below this line */
++ /**/
++     333,
+  /**/
+
+-- 
+An actual excerpt from a classified section of a city newspaper:
+"Illiterate?  Write today for free help!"
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\        download, build and distribute -- http://www.A-A-P.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.2.334 b/7.2.334
new file mode 100644 (file)
index 0000000..1b88bbd
--- /dev/null
+++ b/7.2.334
@@ -0,0 +1,347 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.334
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.334
+Problem:    Postponing keys in Netbeans interface does not work properly.
+Solution:   Store the key string instead of the number.  Avoid an infinite
+           loop. (Mostly by Xavier de Gaye)
+Files:     src/netbeans.c, src/proto/netbeans.pro
+
+
+*** ../vim-7.2.333/src/netbeans.c      2010-01-19 14:59:14.000000000 +0100
+--- src/netbeans.c     2010-01-19 15:12:17.000000000 +0100
+***************
+*** 70,76 ****
+  static pos_T *off2pos __ARGS((buf_T *, long));
+  static pos_T *get_off_or_lnum __ARGS((buf_T *buf, char_u **argp));
+  static long get_buf_size __ARGS((buf_T *));
+! static void netbeans_keystring __ARGS((int key, char *keystr));
+  static void special_keys __ARGS((char_u *args));
+  
+  static void netbeans_connect __ARGS((void));
+--- 70,77 ----
+  static pos_T *off2pos __ARGS((buf_T *, long));
+  static pos_T *get_off_or_lnum __ARGS((buf_T *buf, char_u **argp));
+  static long get_buf_size __ARGS((buf_T *));
+! static int netbeans_keystring __ARGS((char_u *keystr));
+! static void postpone_keycommand __ARGS((char_u *keystr));
+  static void special_keys __ARGS((char_u *args));
+  
+  static void netbeans_connect __ARGS((void));
+***************
+*** 502,508 ****
+  
+  struct keyqueue
+  {
+!     int                   key;
+      struct keyqueue *next;
+      struct keyqueue *prev;
+  };
+--- 503,509 ----
+  
+  struct keyqueue
+  {
+!     char_u       *keystr;
+      struct keyqueue *next;
+      struct keyqueue *prev;
+  };
+***************
+*** 514,526 ****
+  
+  /*
+   * Queue up key commands sent from netbeans.
+   */
+      static void
+! postpone_keycommand(int key)
+  {
+      keyQ_T *node;
+  
+      node = (keyQ_T *)alloc(sizeof(keyQ_T));
+  
+      if (keyHead.next == NULL) /* initialize circular queue */
+      {
+--- 515,531 ----
+  
+  /*
+   * Queue up key commands sent from netbeans.
++  * We store the string, because it may depend on the global mod_mask and
++  * :nbkey doesn't have a key number.
+   */
+      static void
+! postpone_keycommand(char_u *keystr)
+  {
+      keyQ_T *node;
+  
+      node = (keyQ_T *)alloc(sizeof(keyQ_T));
++     if (node == NULL)
++      return;  /* out of memory, drop the key */
+  
+      if (keyHead.next == NULL) /* initialize circular queue */
+      {
+***************
+*** 534,540 ****
+      keyHead.prev->next = node;
+      keyHead.prev = node;
+  
+!     node->key = key;
+  }
+  
+  /*
+--- 539,545 ----
+      keyHead.prev->next = node;
+      keyHead.prev = node;
+  
+!     node->keystr = vim_strsave(keystr);
+  }
+  
+  /*
+***************
+*** 543,557 ****
+      static void
+  handle_key_queue(void)
+  {
+!     while (keyHead.next && keyHead.next != &keyHead)
+      {
+       /* first, unlink the node */
+       keyQ_T *node = keyHead.next;
+       keyHead.next = node->next;
+       node->next->prev = node->prev;
+  
+!      /* now, send the keycommand */
+!      netbeans_keycommand(node->key);
+  
+       /* Finally, dispose of the node */
+       vim_free(node);
+--- 548,567 ----
+      static void
+  handle_key_queue(void)
+  {
+!     int postponed = FALSE;
+! 
+!     while (!postponed && keyHead.next && keyHead.next != &keyHead)
+      {
+       /* first, unlink the node */
+       keyQ_T *node = keyHead.next;
+       keyHead.next = node->next;
+       node->next->prev = node->prev;
+  
+!      /* Now, send the keycommand.  This may cause it to be postponed again
+!       * and change keyHead. */
+!      if (node->keystr != NULL)
+!          postponed = !netbeans_keystring(node->keystr);
+!      vim_free(node->keystr);
+  
+       /* Finally, dispose of the node */
+       vim_free(node);
+***************
+*** 2495,2501 ****
+           }
+           else
+           {
+!              nbdebug(("    Buffer has no changes!\n"));
+           }
+  /* =====================================================================*/
+       }
+--- 2505,2511 ----
+           }
+           else
+           {
+!              nbdebug(("    Buffer has no changes!\n"));
+           }
+  /* =====================================================================*/
+       }
+***************
+*** 2658,2664 ****
+  ex_nbkey(eap)
+      exarg_T  *eap;
+  {
+!     netbeans_keystring(0, (char *)eap->arg);
+  }
+  
+  
+--- 2668,2674 ----
+  ex_nbkey(eap)
+      exarg_T  *eap;
+  {
+!     (void)netbeans_keystring(eap->arg);
+  }
+  
+  
+***************
+*** 2680,2686 ****
+  }
+  
+  /*
+!  * Convert key to netbeans name.
+   */
+      static void
+  netbeans_keyname(int key, char *buf)
+--- 2690,2696 ----
+  }
+  
+  /*
+!  * Convert key to netbeans name.  This uses the global "mod_mask".
+   */
+      static void
+  netbeans_keyname(int key, char *buf)
+***************
+*** 3127,3149 ****
+  /*
+   * Send a keypress event back to netbeans. This usually simulates some
+   * kind of function key press. This function operates on a key code.
+   */
+!     void
+  netbeans_keycommand(int key)
+  {
+      char     keyName[60];
+  
+      netbeans_keyname(key, keyName);
+!     netbeans_keystring(key, keyName);
+  }
+  
+  
+  /*
+   * Send a keypress event back to netbeans. This usually simulates some
+   * kind of function key press. This function operates on a key string.
+   */
+!     static void
+! netbeans_keystring(int key, char *keyName)
+  {
+      char     buf[2*MAXPATHL];
+      int              bufno = nb_getbufno(curbuf);
+--- 3137,3163 ----
+  /*
+   * Send a keypress event back to netbeans. This usually simulates some
+   * kind of function key press. This function operates on a key code.
++  * Return TRUE when the key was sent, FALSE when the command has been
++  * postponed.
+   */
+!     int
+  netbeans_keycommand(int key)
+  {
+      char     keyName[60];
+  
+      netbeans_keyname(key, keyName);
+!     return netbeans_keystring((char_u *)keyName);
+  }
+  
+  
+  /*
+   * Send a keypress event back to netbeans. This usually simulates some
+   * kind of function key press. This function operates on a key string.
++  * Return TRUE when the key was sent, FALSE when the command has been
++  * postponed.
+   */
+!     static int
+! netbeans_keystring(char_u *keyName)
+  {
+      char     buf[2*MAXPATHL];
+      int              bufno = nb_getbufno(curbuf);
+***************
+*** 3151,3157 ****
+      char_u   *q;
+  
+      if (!haveConnection)
+!      return;
+  
+  
+      if (bufno == -1)
+--- 3165,3171 ----
+      char_u   *q;
+  
+      if (!haveConnection)
+!      return TRUE;
+  
+  
+      if (bufno == -1)
+***************
+*** 3160,3166 ****
+       q = curbuf->b_ffname == NULL ? (char_u *)""
+                                                : nb_quote(curbuf->b_ffname);
+       if (q == NULL)
+!          return;
+       vim_snprintf(buf, sizeof(buf), "0:fileOpened=%d \"%s\" %s %s\n", 0,
+               q,
+               "T",  /* open in NetBeans */
+--- 3174,3180 ----
+       q = curbuf->b_ffname == NULL ? (char_u *)""
+                                                : nb_quote(curbuf->b_ffname);
+       if (q == NULL)
+!          return TRUE;
+       vim_snprintf(buf, sizeof(buf), "0:fileOpened=%d \"%s\" %s %s\n", 0,
+               q,
+               "T",  /* open in NetBeans */
+***************
+*** 3170,3178 ****
+       nbdebug(("EVT: %s", buf));
+       nb_send(buf, "netbeans_keycommand");
+  
+!      if (key > 0)
+!          postpone_keycommand(key);
+!      return;
+      }
+  
+      /* sync the cursor position */
+--- 3184,3191 ----
+       nbdebug(("EVT: %s", buf));
+       nb_send(buf, "netbeans_keycommand");
+  
+!      postpone_keycommand(keyName);
+!      return FALSE;
+      }
+  
+      /* sync the cursor position */
+***************
+*** 3198,3203 ****
+--- 3211,3217 ----
+               off, (long)curwin->w_cursor.lnum, (long)curwin->w_cursor.col);
+      nbdebug(("EVT: %s", buf));
+      nb_send(buf, "netbeans_keycommand");
++     return TRUE;
+  }
+  
+  
+*** ../vim-7.2.333/src/proto/netbeans.pro      2009-01-06 16:13:42.000000000 +0100
+--- src/proto/netbeans.pro     2010-01-19 13:31:01.000000000 +0100
+***************
+*** 16,22 ****
+  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));
+--- 16,22 ----
+  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));
+! int 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));
+*** ../vim-7.2.333/src/version.c       2010-01-19 14:59:14.000000000 +0100
+--- src/version.c      2010-01-19 15:08:44.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+  {   /* Add new patch number below this line */
++ /**/
++     334,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+119. You are reading a book and look for the scroll bar to get to
+     the next page.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\        download, build and distribute -- http://www.A-A-P.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.2.335 b/7.2.335
new file mode 100644 (file)
index 0000000..df7f641
--- /dev/null
+++ b/7.2.335
@@ -0,0 +1,103 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.335
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.335
+Problem:    The CTRL-] command escapes too many characters.
+Solution:   Use a different list of characters to be escaped. (Sergey Khorev)
+Files:     src/normal.c
+
+
+*** ../vim-7.2.334/src/normal.c        2010-01-12 15:42:03.000000000 +0100
+--- src/normal.c       2010-01-19 15:20:11.000000000 +0100
+***************
+*** 5406,5411 ****
+--- 5406,5412 ----
+      int              n = 0;          /* init for GCC */
+      int              cmdchar;
+      int              g_cmd;          /* "g" command */
++     int              tag_cmd = FALSE;
+      char_u   *aux_ptr;
+      int              isman;
+      int              isman_s;
+***************
+*** 5515,5520 ****
+--- 5516,5522 ----
+           break;
+  
+       case ']':
++          tag_cmd = TRUE;
+  #ifdef FEAT_CSCOPE
+           if (p_cst)
+               STRCPY(buf, "cstag ");
+***************
+*** 5526,5535 ****
+       default:
+           if (curbuf->b_help)
+               STRCPY(buf, "he! ");
+-          else if (g_cmd)
+-              STRCPY(buf, "tj ");
+           else
+!              sprintf((char *)buf, "%ldta ", cap->count0);
+      }
+  
+      /*
+--- 5528,5541 ----
+       default:
+           if (curbuf->b_help)
+               STRCPY(buf, "he! ");
+           else
+!          {
+!              tag_cmd = TRUE;
+!              if (g_cmd)
+!                  STRCPY(buf, "tj ");
+!              else
+!                  sprintf((char *)buf, "%ldta ", cap->count0);
+!          }
+      }
+  
+      /*
+***************
+*** 5562,5569 ****
+           aux_ptr = (char_u *)(p_magic ? "/.*~[^$\\" : "/^$\\");
+       else if (cmdchar == '#')
+           aux_ptr = (char_u *)(p_magic ? "/?.*~[^$\\" : "/?^$\\");
+!      else
+           /* Don't escape spaces and Tabs in a tag with a backslash */
+           aux_ptr = (char_u *)"\\|\"\n*?[";
+  
+       p = buf + STRLEN(buf);
+--- 5568,5577 ----
+           aux_ptr = (char_u *)(p_magic ? "/.*~[^$\\" : "/^$\\");
+       else if (cmdchar == '#')
+           aux_ptr = (char_u *)(p_magic ? "/?.*~[^$\\" : "/?^$\\");
+!      else if (tag_cmd)
+           /* Don't escape spaces and Tabs in a tag with a backslash */
++          aux_ptr = (char_u *)"\\|\"\n[";
++      else
+           aux_ptr = (char_u *)"\\|\"\n*?[";
+  
+       p = buf + STRLEN(buf);
+*** ../vim-7.2.334/src/version.c       2010-01-19 15:12:33.000000000 +0100
+--- src/version.c      2010-01-19 15:22:44.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+  {   /* Add new patch number below this line */
++ /**/
++     335,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+120. You ask a friend, "What's that big shiny thing?" He says, "It's the sun."
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\        download, build and distribute -- http://www.A-A-P.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.2.336 b/7.2.336
new file mode 100644 (file)
index 0000000..a676592
--- /dev/null
+++ b/7.2.336
@@ -0,0 +1,841 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.336
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.336
+Problem:    MzScheme interface can't evaluate an expression.
+Solution:   Add mzeval(). (Sergey Khorev)
+Files:     runtime/doc/eval.txt, runtime/doc/if_mzsch.txt,
+           runtime/doc/usr_41.txt, src/eval.c, src/if_mzsch.c,
+           src/proto/eval.pro, src/proto/if_mzsch.pro,
+           src/testdir/Make_dos.mak, src/testdir/Make_ming.mak,
+           src/testdir/Makefile, src/testdir/main.aap, src/testdir/test1.in,
+           src/testdir/test70.in, src/testdir/test70.ok
+
+
+*** ../vim-7.2.335/runtime/doc/eval.txt        2009-11-17 12:20:30.000000000 +0100
+--- runtime/doc/eval.txt       2010-01-19 15:30:50.000000000 +0100
+***************
+*** 1815,1825 ****
+                               List    match and submatches of {pat} in {expr}
+  matchstr( {expr}, {pat}[, {start}[, {count}]])
+                               String  {count}'th match of {pat} in {expr}
+! max({list})                  Number  maximum value of items in {list}
+! min({list})                  Number  minimum value of items in {list}
+! mkdir({name} [, {path} [, {prot}]])
+                               Number  create directory {name}
+  mode( [expr])                        String  current editing mode
+  nextnonblank( {lnum})                Number  line nr of non-blank line >= {lnum}
+  nr2char( {expr})             String  single char with ASCII value {expr}
+  pathshorten( {expr})         String  shorten directory names in a path
+--- 1821,1832 ----
+                               List    match and submatches of {pat} in {expr}
+  matchstr( {expr}, {pat}[, {start}[, {count}]])
+                               String  {count}'th match of {pat} in {expr}
+! max( {list})                 Number  maximum value of items in {list}
+! min( {list})                 Number  minimum value of items in {list}
+! mkdir( {name} [, {path} [, {prot}]])
+                               Number  create directory {name}
+  mode( [expr])                        String  current editing mode
++ mzeval( {expr})                      any     evaluate |MzScheme| expression
+  nextnonblank( {lnum})                Number  line nr of non-blank line >= {lnum}
+  nr2char( {expr})             String  single char with ASCII value {expr}
+  pathshorten( {expr})         String  shorten directory names in a path
+***************
+*** 4090,4095 ****
+--- 4103,4125 ----
+               "c" or "n".
+               Also see |visualmode()|.
+  
++ mzeval({expr})                                                       *mzeval()*
++              Evaluate MzScheme expression {expr} and return its result
++              convert to Vim data structures.
++              Numbers and strings are returned as they are.
++              Pairs (including lists and improper lists) and vectors are
++              returned as Vim |Lists|.
++              Hash tables are represented as Vim |Dictionary| type with keys
++              converted to strings.
++              All other types are converted to string with display function.
++              Examples: >
++                  :mz (define l (list 1 2 3))
++                  :mz (define h (make-hash)) (hash-set! h "list" l)
++                  :echo mzeval("l")
++                  :echo mzeval("h")
++ <
++              {only available when compiled with the |+mzscheme| feature}
++ 
+  nextnonblank({lnum})                                 *nextnonblank()*
+               Return the line number of the first line at or below {lnum}
+               that is not blank.  Example: >
+*** ../vim-7.2.335/runtime/doc/if_mzsch.txt    2009-06-24 17:51:01.000000000 +0200
+--- runtime/doc/if_mzsch.txt   2010-01-19 15:33:00.000000000 +0100
+***************
+*** 1,4 ****
+! *if_mzsch.txt*  For Vim version 7.2.  Last change: 2009 Jun 24
+  
+  
+                 VIM REFERENCE MANUAL    by Sergey Khorev
+--- 1,4 ----
+! *if_mzsch.txt*  For Vim version 7.2.  Last change: 2010 Jan 19
+  
+  
+                 VIM REFERENCE MANUAL    by Sergey Khorev
+***************
+*** 9,16 ****
+  1. Commands                          |mzscheme-commands|
+  2. Examples                          |mzscheme-examples|
+  3. Threads                           |mzscheme-threads|
+! 4. The Vim access procedures         |mzscheme-vim|
+! 5. Dynamic loading                   |mzscheme-dynamic|
+  
+  {Vi does not have any of these commands}
+  
+--- 9,17 ----
+  1. Commands                          |mzscheme-commands|
+  2. Examples                          |mzscheme-examples|
+  3. Threads                           |mzscheme-threads|
+! 4. Vim access from MzScheme          |mzscheme-vim|
+! 5. mzeval() Vim function             |mzscheme-mzeval|
+! 6. Dynamic loading                   |mzscheme-dynamic|
+  
+  {Vi does not have any of these commands}
+  
+***************
+*** 142,148 ****
+  GUI version.
+  
+  ==============================================================================
+! 5. VIM Functions                                     *mzscheme-vim*
+  
+                                                       *mzscheme-vimext*
+  The 'vimext' module provides access to procedures defined in the MzScheme
+--- 143,149 ----
+  GUI version.
+  
+  ==============================================================================
+! 4. Vim access from MzScheme                          *mzscheme-vim*
+  
+                                                       *mzscheme-vimext*
+  The 'vimext' module provides access to procedures defined in the MzScheme
+***************
+*** 231,237 ****
+      (set-cursor (line . col) [window])  Set cursor position.
+  
+  ==============================================================================
+! 5. Dynamic loading                               *mzscheme-dynamic* *E815*
+  
+  On MS-Windows the MzScheme libraries can be loaded dynamically. The |:version|
+  output then includes |+mzscheme/dyn|.
+--- 232,244 ----
+      (set-cursor (line . col) [window])  Set cursor position.
+  
+  ==============================================================================
+! 5. mzeval() Vim function                                 *mzscheme-mzeval*
+! 
+! To facilitate bi-directional interface, you can use |mzeval| function to
+! evaluate MzScheme expressions and pass their values to VimL.
+! 
+! ==============================================================================
+! 6. Dynamic loading                               *mzscheme-dynamic* *E815*
+  
+  On MS-Windows the MzScheme libraries can be loaded dynamically. The |:version|
+  output then includes |+mzscheme/dyn|.
+*** ../vim-7.2.335/runtime/doc/usr_41.txt      2008-08-09 19:36:54.000000000 +0200
+--- runtime/doc/usr_41.txt     2010-01-19 15:29:01.000000000 +0100
+***************
+*** 868,873 ****
+--- 868,875 ----
+       taglist()               get list of matching tags
+       tagfiles()              get a list of tags files
+  
++      mzeval()                evaluate |MzScheme| expression
++ 
+  ==============================================================================
+  *41.7*       Defining a function
+  
+*** ../vim-7.2.335/src/eval.c  2010-01-19 12:46:51.000000000 +0100
+--- src/eval.c 2010-01-19 15:48:12.000000000 +0100
+***************
+*** 433,439 ****
+  static long list_find_nr __ARGS((list_T *l, long idx, int *errorp));
+  static long list_idx_of_item __ARGS((list_T *l, listitem_T *item));
+  static void list_append __ARGS((list_T *l, listitem_T *item));
+- static int list_append_tv __ARGS((list_T *l, typval_T *tv));
+  static int list_append_number __ARGS((list_T *l, varnumber_T n));
+  static int list_insert_tv __ARGS((list_T *l, typval_T *tv, listitem_T *item));
+  static int list_extend __ARGS((list_T        *l1, list_T *l2, listitem_T *bef));
+--- 433,438 ----
+***************
+*** 448,459 ****
+  static void set_ref_in_item __ARGS((typval_T *tv, int copyID));
+  static void dict_unref __ARGS((dict_T *d));
+  static void dict_free __ARGS((dict_T *d, int recurse));
+- static dictitem_T *dictitem_alloc __ARGS((char_u *key));
+  static dictitem_T *dictitem_copy __ARGS((dictitem_T *org));
+  static void dictitem_remove __ARGS((dict_T *dict, dictitem_T *item));
+- static void dictitem_free __ARGS((dictitem_T *item));
+  static dict_T *dict_copy __ARGS((dict_T *orig, int deep, int copyID));
+- static int dict_add __ARGS((dict_T *d, dictitem_T *item));
+  static long dict_len __ARGS((dict_T *d));
+  static dictitem_T *dict_find __ARGS((dict_T *d, char_u *key, int len));
+  static char_u *dict2string __ARGS((typval_T *tv, int copyID));
+--- 447,455 ----
+***************
+*** 628,633 ****
+--- 624,632 ----
+  static void f_mkdir __ARGS((typval_T *argvars, typval_T *rettv));
+  #endif
+  static void f_mode __ARGS((typval_T *argvars, typval_T *rettv));
++ #ifdef FEAT_MZSCHEME
++ static void f_mzeval __ARGS((typval_T *argvars, typval_T *rettv));
++ #endif
+  static void f_nextnonblank __ARGS((typval_T *argvars, typval_T *rettv));
+  static void f_nr2char __ARGS((typval_T *argvars, typval_T *rettv));
+  static void f_pathshorten __ARGS((typval_T *argvars, typval_T *rettv));
+***************
+*** 764,770 ****
+  static int var_check_ro __ARGS((int flags, char_u *name));
+  static int var_check_fixed __ARGS((int flags, char_u *name));
+  static int tv_check_lock __ARGS((int lock, char_u *name));
+- static void copy_tv __ARGS((typval_T *from, typval_T *to));
+  static int item_copy __ARGS((typval_T *from, typval_T *to, int deep, int copyID));
+  static char_u *find_option_end __ARGS((char_u **arg, int *opt_flags));
+  static char_u *trans_function_name __ARGS((char_u **pp, int skip, int flags, funcdict_T *fd));
+--- 763,768 ----
+***************
+*** 6155,6161 ****
+   * Append typval_T "tv" to the end of list "l".
+   * Return FAIL when out of memory.
+   */
+!     static int
+  list_append_tv(l, tv)
+      list_T   *l;
+      typval_T *tv;
+--- 6153,6159 ----
+   * Append typval_T "tv" to the end of list "l".
+   * Return FAIL when out of memory.
+   */
+!     int
+  list_append_tv(l, tv)
+      list_T   *l;
+      typval_T *tv;
+***************
+*** 6812,6818 ****
+   * Note that the value of the item "di_tv" still needs to be initialized!
+   * Returns NULL when out of memory.
+   */
+!     static dictitem_T *
+  dictitem_alloc(key)
+      char_u   *key;
+  {
+--- 6810,6816 ----
+   * Note that the value of the item "di_tv" still needs to be initialized!
+   * Returns NULL when out of memory.
+   */
+!     dictitem_T *
+  dictitem_alloc(key)
+      char_u   *key;
+  {
+***************
+*** 6868,6874 ****
+  /*
+   * Free a dict item.  Also clears the value.
+   */
+!     static void
+  dictitem_free(item)
+      dictitem_T *item;
+  {
+--- 6866,6872 ----
+  /*
+   * Free a dict item.  Also clears the value.
+   */
+!     void
+  dictitem_free(item)
+      dictitem_T *item;
+  {
+***************
+*** 6948,6954 ****
+   * Add item "item" to Dictionary "d".
+   * Returns FAIL when out of memory and when key already existed.
+   */
+!     static int
+  dict_add(d, item)
+      dict_T   *d;
+      dictitem_T       *item;
+--- 6946,6952 ----
+   * Add item "item" to Dictionary "d".
+   * Returns FAIL when out of memory and when key already existed.
+   */
+!     int
+  dict_add(d, item)
+      dict_T   *d;
+      dictitem_T       *item;
+***************
+*** 7699,7704 ****
+--- 7697,7705 ----
+      {"mkdir",                1, 3, f_mkdir},
+  #endif
+      {"mode",         0, 1, f_mode},
++ #ifdef FEAT_MZSCHEME
++     {"mzeval",               1, 1, f_mzeval},
++ #endif
+      {"nextnonblank", 1, 1, f_nextnonblank},
+      {"nr2char",              1, 1, f_nr2char},
+      {"pathshorten",  1, 1, f_pathshorten},
+***************
+*** 13591,13596 ****
+--- 13592,13614 ----
+      rettv->v_type = VAR_STRING;
+  }
+  
++ #ifdef FEAT_MZSCHEME
++ /*
++  * "mzeval()" function
++  */
++     static void
++ f_mzeval(argvars, rettv)
++     typval_T *argvars;
++     typval_T *rettv;
++ {
++     char_u   *str;
++     char_u   buf[NUMBUFLEN];
++ 
++     str = get_tv_string_buf(&argvars[0], buf);
++     do_mzeval(str, rettv);
++ }
++ #endif
++ 
+  /*
+   * "nextnonblank()" function
+   */
+***************
+*** 19274,19280 ****
+   * It is OK for "from" and "to" to point to the same item.  This is used to
+   * make a copy later.
+   */
+!     static void
+  copy_tv(from, to)
+      typval_T *from;
+      typval_T *to;
+--- 19292,19298 ----
+   * It is OK for "from" and "to" to point to the same item.  This is used to
+   * make a copy later.
+   */
+!     void
+  copy_tv(from, to)
+      typval_T *from;
+      typval_T *to;
+*** ../vim-7.2.335/src/if_mzsch.c      2009-12-16 19:02:05.000000000 +0100
+--- src/if_mzsch.c     2010-01-19 15:43:05.000000000 +0100
+***************
+*** 170,175 ****
+--- 170,177 ----
+  #ifdef FEAT_EVAL
+  static Scheme_Object *vim_to_mzscheme(typval_T *vim_value, int depth,
+       Scheme_Hash_Table *visited);
++ static int mzscheme_to_vim(Scheme_Object *obj, typval_T *tv, int depth,
++      Scheme_Hash_Table *visited);
+  #endif
+  
+  #ifdef MZ_PRECISE_GC
+***************
+*** 2733,2738 ****
+--- 2735,2959 ----
+      MZ_GC_UNREG();
+      return result;
+  }
++ 
++     static int
++ mzscheme_to_vim(Scheme_Object *obj, typval_T *tv, int depth,
++      Scheme_Hash_Table *visited)
++ {
++     int              status = OK;
++     typval_T *found;
++     MZ_GC_CHECK();
++     if (depth > 100) /* limit the deepest recursion level */
++     {
++      tv->v_type = VAR_NUMBER;
++      tv->vval.v_number = 0;
++      return FAIL;
++     }
++ 
++     found = (typval_T *)scheme_hash_get(visited, obj);
++     if (found != NULL)
++      copy_tv(found, tv);
++     else if (SCHEME_VOIDP(obj))
++     {
++      tv->v_type = VAR_NUMBER;
++      tv->vval.v_number = 0;
++     }
++     else if (SCHEME_INTP(obj))
++     {
++      tv->v_type = VAR_NUMBER;
++      tv->vval.v_number = SCHEME_INT_VAL(obj);
++     }
++     else if (SCHEME_BOOLP(obj))
++     {
++      tv->v_type = VAR_NUMBER;
++      tv->vval.v_number = SCHEME_TRUEP(obj);
++     }
++ # ifdef FEAT_FLOAT
++     else if (SCHEME_DBLP(obj))
++     {
++      tv->v_type = VAR_FLOAT;
++      tv->vval.v_float = SCHEME_DBL_VAL(obj);
++     }
++ # endif
++     else if (SCHEME_STRINGP(obj))
++     {
++      tv->v_type = VAR_STRING;
++      tv->vval.v_string = vim_strsave((char_u *)SCHEME_STR_VAL(obj));
++     }
++     else if (SCHEME_VECTORP(obj) || SCHEME_NULLP(obj)
++          || SCHEME_PAIRP(obj) || SCHEME_MUTABLE_PAIRP(obj))
++     {
++      list_T  *list = list_alloc();
++      if (list == NULL)
++          status = FAIL;
++      else
++      {
++          int             i;
++          Scheme_Object   *curr = NULL;
++          Scheme_Object   *cval = NULL;
++          /* temporary var to hold current element of vectors and pairs */
++          typval_T        *v;
++ 
++          MZ_GC_DECL_REG(2);
++          MZ_GC_VAR_IN_REG(0, curr);
++          MZ_GC_VAR_IN_REG(1, cval);
++          MZ_GC_REG();
++ 
++          tv->v_type = VAR_LIST;
++          tv->vval.v_list = list;
++          ++list->lv_refcount;
++ 
++          v = (typval_T *)alloc(sizeof(typval_T));
++          if (v == NULL)
++              status = FAIL;
++          else
++          {
++              /* add the value in advance to allow handling of self-referencial
++               * data structures */
++              typval_T    *visited_tv = (typval_T *)alloc(sizeof(typval_T));
++              copy_tv(tv, visited_tv);
++              scheme_hash_set(visited, obj, (Scheme_Object *)visited_tv);
++ 
++              if (SCHEME_VECTORP(obj))
++              {
++                  for (i = 0; i < SCHEME_VEC_SIZE(obj); ++i)
++                  {
++                      cval = SCHEME_VEC_ELS(obj)[i];
++                      status = mzscheme_to_vim(cval, v, depth + 1, visited);
++                      if (status == FAIL)
++                          break;
++                      status = list_append_tv(list, v);
++                      clear_tv(v);
++                      if (status == FAIL)
++                          break;
++                  }
++              }
++              else if (SCHEME_PAIRP(obj) || SCHEME_MUTABLE_PAIRP(obj))
++              {
++                  for (curr = obj;
++                          SCHEME_PAIRP(curr) || SCHEME_MUTABLE_PAIRP(curr);
++                          curr = SCHEME_CDR(curr))
++                  {
++                      cval = SCHEME_CAR(curr);
++                      status = mzscheme_to_vim(cval, v, depth + 1, visited);
++                      if (status == FAIL)
++                          break;
++                      status = list_append_tv(list, v);
++                      clear_tv(v);
++                      if (status == FAIL)
++                          break;
++                  }
++                  /* impoper list not terminated with null
++                   * need to handle the last element */
++                  if (status == OK && !SCHEME_NULLP(curr))
++                  {
++                      status = mzscheme_to_vim(cval, v, depth + 1, visited);
++                      if (status == OK)
++                      {
++                          status = list_append_tv(list, v);
++                          clear_tv(v);
++                      }
++                  }
++              }
++              /* nothing to do for scheme_null */
++              vim_free(v);
++          }
++          MZ_GC_UNREG();
++      }
++     }
++     else if (SCHEME_HASHTP(obj))
++     {
++      int             i;
++      dict_T          *dict;
++      Scheme_Object   *key = NULL;
++      Scheme_Object   *val = NULL;
++ 
++      MZ_GC_DECL_REG(2);
++      MZ_GC_VAR_IN_REG(0, key);
++      MZ_GC_VAR_IN_REG(1, val);
++      MZ_GC_REG();
++ 
++      dict = dict_alloc();
++      if (dict == NULL)
++          status = FAIL;
++      else
++      {
++          typval_T    *visited_tv = (typval_T *)alloc(sizeof(typval_T));
++ 
++          tv->v_type = VAR_DICT;
++          tv->vval.v_dict = dict;
++          ++dict->dv_refcount;
++ 
++          copy_tv(tv, visited_tv);
++          scheme_hash_set(visited, obj, (Scheme_Object *)visited_tv);
++ 
++          for (i = 0; i < ((Scheme_Hash_Table *)obj)->size; ++i)
++          {
++              if (((Scheme_Hash_Table *) obj)->vals[i] != NULL)
++              {
++                  /* generate item for `diplay'ed Scheme key */
++                  dictitem_T  *item = dictitem_alloc((char_u *)string_to_line(
++                              ((Scheme_Hash_Table *) obj)->keys[i]));
++                  /* convert Scheme val to Vim and add it to the dict */
++                  if (mzscheme_to_vim(((Scheme_Hash_Table *) obj)->vals[i],
++                                  &item->di_tv, depth + 1, visited) == FAIL
++                          || dict_add(dict, item) == FAIL)
++                  {
++                      dictitem_free(item);
++                      status = FAIL;
++                      break;
++                  }
++              }
++ 
++          }
++      }
++      MZ_GC_UNREG();
++     }
++     else
++     {
++      /* `display' any other value to string */
++      tv->v_type = VAR_STRING;
++      tv->vval.v_string = (char_u *)string_to_line(obj);
++     }
++     return status;
++ }
++ 
++     void
++ do_mzeval(char_u *str, typval_T *rettv)
++ {
++     int i;
++     Scheme_Object    *ret = NULL;
++     Scheme_Hash_Table        *visited = NULL;
++ 
++     MZ_GC_DECL_REG(2);
++     MZ_GC_VAR_IN_REG(0, ret);
++     MZ_GC_VAR_IN_REG(0, visited);
++     MZ_GC_REG();
++ 
++     if (mzscheme_init())
++     {
++      MZ_GC_UNREG();
++      return;
++     }
++ 
++     MZ_GC_CHECK();
++     visited = scheme_make_hash_table(SCHEME_hash_ptr);
++     MZ_GC_CHECK();
++ 
++     if (eval_with_exn_handling(str, do_eval, &ret) == OK)
++      mzscheme_to_vim(ret, rettv, 1, visited);
++ 
++     for (i = 0; i < visited->size; ++i)
++     {
++      /* free up remembered objects */
++      if (visited->vals[i] != NULL)
++      {
++          free_tv((typval_T *)visited->vals[i]);
++      }
++     }
++ 
++     MZ_GC_UNREG();
++ }
+  #endif
+  
+  /*
+*** ../vim-7.2.335/src/proto/eval.pro  2009-09-30 15:15:33.000000000 +0200
+--- src/proto/eval.pro 2010-01-19 15:45:39.000000000 +0100
+***************
+*** 47,56 ****
+--- 47,60 ----
+  void list_free __ARGS((list_T *l, int recurse));
+  dictitem_T *dict_lookup __ARGS((hashitem_T *hi));
+  char_u *list_find_str __ARGS((list_T *l, long idx));
++ int list_append_tv __ARGS((list_T *l, typval_T *tv));
+  int list_append_dict __ARGS((list_T *list, dict_T *dict));
+  int list_append_string __ARGS((list_T *l, char_u *str, int len));
+  int garbage_collect __ARGS((void));
+  dict_T *dict_alloc __ARGS((void));
++ dictitem_T *dictitem_alloc __ARGS((char_u *key));
++ void dictitem_free __ARGS((dictitem_T *item));
++ int dict_add __ARGS((dict_T *d, dictitem_T *item));
+  int dict_add_nr_str __ARGS((dict_T *d, char *key, long nr, char_u *str));
+  char_u *get_dict_string __ARGS((dict_T *d, char_u *key, int save));
+  long get_dict_number __ARGS((dict_T *d, char_u *key));
+***************
+*** 77,82 ****
+--- 81,87 ----
+  void new_script_vars __ARGS((scid_T id));
+  void init_var_dict __ARGS((dict_T *dict, dictitem_T *dict_var));
+  void vars_clear __ARGS((hashtab_T *ht));
++ void copy_tv __ARGS((typval_T *from, typval_T *to));
+  void ex_echo __ARGS((exarg_T *eap));
+  void ex_echohl __ARGS((exarg_T *eap));
+  void ex_execute __ARGS((exarg_T *eap));
+*** ../vim-7.2.335/src/proto/if_mzsch.pro      2009-12-16 19:02:05.000000000 +0100
+--- src/proto/if_mzsch.pro     2010-01-19 15:29:01.000000000 +0100
+***************
+*** 15,18 ****
+--- 15,19 ----
+  void *mzvim_eval_string __ARGS((char_u *str));
+  int mzthreads_allowed __ARGS((void));
+  void mzscheme_main __ARGS((void));
++ void do_mzeval __ARGS((char_u *str, typval_T *rettv));
+  /* vim: set ft=c : */
+*** ../vim-7.2.335/src/testdir/Make_dos.mak    2009-11-17 17:57:10.000000000 +0100
+--- src/testdir/Make_dos.mak   2010-01-19 15:43:48.000000000 +0100
+***************
+*** 29,35 ****
+               test42.out test52.out test65.out test66.out test67.out \
+               test68.out test69.out
+  
+! SCRIPTS32 =  test50.out
+  
+  SCRIPTS_GUI = test16.out
+  
+--- 29,35 ----
+               test42.out test52.out test65.out test66.out test67.out \
+               test68.out test69.out
+  
+! SCRIPTS32 =  test50.out test70.out
+  
+  SCRIPTS_GUI = test16.out
+  
+*** ../vim-7.2.335/src/testdir/Make_ming.mak   2009-11-17 17:57:10.000000000 +0100
+--- src/testdir/Make_ming.mak  2010-01-19 15:29:01.000000000 +0100
+***************
+*** 48,54 ****
+               test42.out test52.out test65.out test66.out test67.out \
+               test68.out test69.out
+  
+! SCRIPTS32 =  test50.out
+  
+  SCRIPTS_GUI = test16.out
+  
+--- 48,54 ----
+               test42.out test52.out test65.out test66.out test67.out \
+               test68.out test69.out
+  
+! SCRIPTS32 =  test50.out test70.out
+  
+  SCRIPTS_GUI = test16.out
+  
+***************
+*** 78,83 ****
+--- 78,84 ----
+       -$(DEL) small.vim
+       -$(DEL) tiny.vim
+       -$(DEL) mbyte.vim
++      -$(DEL) mzscheme.vim
+       -$(DEL) X*
+       -$(DEL) viminfo
+  
+*** ../vim-7.2.335/src/testdir/Makefile        2009-11-17 17:40:34.000000000 +0100
+--- src/testdir/Makefile       2010-01-19 15:29:01.000000000 +0100
+***************
+*** 23,29 ****
+               test54.out test55.out test56.out test57.out test58.out \
+               test59.out test60.out test61.out test62.out test63.out \
+               test64.out test65.out test66.out test67.out test68.out \
+!              test69.out
+  
+  SCRIPTS_GUI = test16.out
+  
+--- 23,29 ----
+               test54.out test55.out test56.out test57.out test58.out \
+               test59.out test60.out test61.out test62.out test63.out \
+               test64.out test65.out test66.out test67.out test68.out \
+!              test69.out test70.out
+  
+  SCRIPTS_GUI = test16.out
+  
+***************
+*** 44,53 ****
+  $(SCRIPTS) $(SCRIPTS_GUI): $(VIMPROG)
+  
+  clean:
+!      -rm -rf *.out *.failed *.rej *.orig test.log tiny.vim small.vim mbyte.vim test.ok X* valgrind.pid* viminfo
+  
+  test1.out: test1.in
+!      -rm -f $*.failed tiny.vim small.vim mbyte.vim test.ok X* viminfo
+       $(VALGRIND) $(VIMPROG) -u unix.vim -U NONE --noplugin -s dotest.in $*.in
+       @/bin/sh -c "if diff test.out $*.ok; \
+               then mv -f test.out $*.out; \
+--- 44,53 ----
+  $(SCRIPTS) $(SCRIPTS_GUI): $(VIMPROG)
+  
+  clean:
+!      -rm -rf *.out *.failed *.rej *.orig test.log tiny.vim small.vim mbyte.vim mzscheme.vim test.ok X* valgrind.pid* viminfo
+  
+  test1.out: test1.in
+!      -rm -f $*.failed tiny.vim small.vim mbyte.vim mzscheme.vim test.ok X* viminfo
+       $(VALGRIND) $(VIMPROG) -u unix.vim -U NONE --noplugin -s dotest.in $*.in
+       @/bin/sh -c "if diff test.out $*.ok; \
+               then mv -f test.out $*.out; \
+*** ../vim-7.2.335/src/testdir/main.aap        2004-06-13 21:05:31.000000000 +0200
+--- src/testdir/main.aap       2010-01-19 15:29:01.000000000 +0100
+***************
+*** 32,42 ****
+  $Scripts $ScriptsGUI: $VimProg
+  
+  clean:
+!      :del {r}{force} *.out test.log tiny.vim small.vim mbyte.vim test.ok X*
+  
+  # test1 is special, it checks for features
+  test1.out: test1.in
+!      :del {force} test1.failed tiny.vim small.vim mbyte.vim
+       :sys {i} $VimProg -u unix.vim -U NONE --noplugin -s dotest.in test1.in
+       @if os.system("diff test.out test1.ok") != 0:
+               :error test1 FAILED - Something basic is wrong
+--- 32,42 ----
+  $Scripts $ScriptsGUI: $VimProg
+  
+  clean:
+!      :del {r}{force} *.out test.log tiny.vim small.vim mbyte.vim mzscheme.vim test.ok X*
+  
+  # test1 is special, it checks for features
+  test1.out: test1.in
+!      :del {force} test1.failed tiny.vim small.vim mbyte.vim mzscheme.vim
+       :sys {i} $VimProg -u unix.vim -U NONE --noplugin -s dotest.in test1.in
+       @if os.system("diff test.out test1.ok") != 0:
+               :error test1 FAILED - Something basic is wrong
+*** ../vim-7.2.335/src/testdir/test1.in        2004-06-13 20:19:23.000000000 +0200
+--- src/testdir/test1.in       2010-01-19 15:38:44.000000000 +0100
+***************
+*** 13,18 ****
+--- 13,19 ----
+  
+  If Vim was not compiled with the +multi_byte feature, the mbyte.vim script will be set like small.vim above.  mbyte.vim is sourced by tests that require the
+  +multi_byte feature.
++ Similar logic is applied to the +mzscheme feature, using mzscheme.vim.
+  
+  STARTTEST
+  :" Write a single line to test.out to check if testing works at all.
+***************
+*** 25,32 ****
+--- 26,36 ----
+  w! test.out
+  qa!
+  \e:w! mbyte.vim
++ :w! mzscheme.vim
+  :" If +multi_byte feature supported, make mbyte.vim empty.
+  :if has("multi_byte") | sp another | w! mbyte.vim | q | endif
++ :" If +mzscheme feature supported, make mzscheme.vim empty.
++ :if has("mzscheme") | sp another | w! mzscheme.vim | q | endif
+  :" If +eval feature supported quit here, leaving tiny.vim and small.vim empty.
+  :" Otherwise write small.vim to skip the test.
+  :if 1 | q! | endif
+*** ../vim-7.2.335/src/testdir/test70.in       2010-01-19 15:47:24.000000000 +0100
+--- src/testdir/test70.in      2010-01-19 15:29:01.000000000 +0100
+***************
+*** 0 ****
+--- 1,53 ----
++ Smoke test for MzScheme interface and mzeval() function
++ 
++ STARTTEST
++ :so mzscheme.vim
++ :set nocompatible viminfo+=nviminfo
++ :function! MzRequire()
++ :redir => l:mzversion
++ :mz (version)
++ :redir END
++ :if strpart(l:mzversion, 1, 1) < "4"
++ :" MzScheme versions < 4.x:
++ :mz (require (prefix vim- vimext))
++ :else
++ :" newer versions:
++ :mz (require (prefix-in vim- 'vimext))
++ :mz (require r5rs)
++ :endif
++ :endfunction
++ :silent call MzRequire()
++ :mz (define l '("item0" "dictionary with list OK" "item2"))
++ :mz (define h (make-hash))
++ :mz (hash-set! h "list" l)
++ /^1
++ :" change buffer contents
++ :mz (vim-set-buff-line (vim-eval "line('.')") "1 changed line 1")
++ :" scalar test
++ :let tmp_string = mzeval('"string"')
++ :let tmp_1000 = mzeval('1000')
++ :if tmp_string . tmp_1000 == "string1000"
++ :let scalar_res = "OK"
++ :else
++ :let scalar_res = "FAILED"
++ :endif
++ :call append(search("^1"), "scalar test " . scalar_res)
++ :" dictionary containing a list
++ :let tmp = mzeval("h")["list"][1]
++ :/^2/put =tmp
++ :" circular list (at the same time test lists containing lists)
++ :mz (set-car! (cddr l) l)
++ :let l2 = mzeval("h")["list"]
++ :if l2[2] == l2
++ :let res = "OK"
++ :else
++ :let res = "FAILED"
++ :endif
++ :call setline(search("^3"), "circular test " . res)
++ :?^1?,$w! test.out
++ :qa!
++ ENDTEST
++ 
++ 1 line 1
++ 2 line 2
++ 3 line 3
+*** ../vim-7.2.335/src/testdir/test70.ok       2010-01-19 15:47:24.000000000 +0100
+--- src/testdir/test70.ok      2010-01-19 15:29:01.000000000 +0100
+***************
+*** 0 ****
+--- 1,5 ----
++ 1 changed line 1
++ scalar test OK
++ 2 line 2
++ dictionary with list OK
++ circular test OK
+*** ../vim-7.2.335/src/version.c       2010-01-19 15:23:38.000000000 +0100
+--- src/version.c      2010-01-19 15:46:44.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+  {   /* Add new patch number below this line */
++ /**/
++     336,
+  /**/
+
+-- 
+"Computers in the future may weigh no more than 1.5 tons."
+                                   Popular Mechanics, 1949
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\        download, build and distribute -- http://www.A-A-P.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.2.337 b/7.2.337
new file mode 100644 (file)
index 0000000..e745285
--- /dev/null
+++ b/7.2.337
@@ -0,0 +1,112 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.337
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.337
+Problem:    The :compiler command doesn't function properly when invoked in a
+           function.
+Solution:   Add "g:" before "current_compiler". (Yukihiro Nakadaira)
+Files:     src/ex_cmds2.c
+
+
+*** ../vim-7.2.336/src/ex_cmds2.c      2009-05-16 21:16:12.000000000 +0200
+--- src/ex_cmds2.c     2010-01-19 16:02:53.000000000 +0100
+***************
+*** 2496,2509 ****
+                * To remain backwards compatible "current_compiler" is always
+                * used.  A user's compiler plugin may set it, the distributed
+                * plugin will then skip the settings.  Afterwards set
+!               * "b:current_compiler" and restore "current_compiler". */
+!              old_cur_comp = get_var_value((char_u *)"current_compiler");
+               if (old_cur_comp != NULL)
+                   old_cur_comp = vim_strsave(old_cur_comp);
+               do_cmdline_cmd((char_u *)
+                             "command -nargs=* CompilerSet setlocal <args>");
+           }
+!          do_unlet((char_u *)"current_compiler", TRUE);
+           do_unlet((char_u *)"b:current_compiler", TRUE);
+  
+           sprintf((char *)buf, "compiler/%s.vim", eap->arg);
+--- 2496,2510 ----
+                * To remain backwards compatible "current_compiler" is always
+                * used.  A user's compiler plugin may set it, the distributed
+                * plugin will then skip the settings.  Afterwards set
+!               * "b:current_compiler" and restore "current_compiler".
+!               * Explicitly prepend "g:" to make it work in a function. */
+!              old_cur_comp = get_var_value((char_u *)"g:current_compiler");
+               if (old_cur_comp != NULL)
+                   old_cur_comp = vim_strsave(old_cur_comp);
+               do_cmdline_cmd((char_u *)
+                             "command -nargs=* CompilerSet setlocal <args>");
+           }
+!          do_unlet((char_u *)"g:current_compiler", TRUE);
+           do_unlet((char_u *)"b:current_compiler", TRUE);
+  
+           sprintf((char *)buf, "compiler/%s.vim", eap->arg);
+***************
+*** 2514,2520 ****
+           do_cmdline_cmd((char_u *)":delcommand CompilerSet");
+  
+           /* Set "b:current_compiler" from "current_compiler". */
+!          p = get_var_value((char_u *)"current_compiler");
+           if (p != NULL)
+               set_internal_string_var((char_u *)"b:current_compiler", p);
+  
+--- 2515,2521 ----
+           do_cmdline_cmd((char_u *)":delcommand CompilerSet");
+  
+           /* Set "b:current_compiler" from "current_compiler". */
+!          p = get_var_value((char_u *)"g:current_compiler");
+           if (p != NULL)
+               set_internal_string_var((char_u *)"b:current_compiler", p);
+  
+***************
+*** 2523,2534 ****
+           {
+               if (old_cur_comp != NULL)
+               {
+!                  set_internal_string_var((char_u *)"current_compiler",
+                                                               old_cur_comp);
+                   vim_free(old_cur_comp);
+               }
+               else
+!                  do_unlet((char_u *)"current_compiler", TRUE);
+           }
+       }
+      }
+--- 2524,2535 ----
+           {
+               if (old_cur_comp != NULL)
+               {
+!                  set_internal_string_var((char_u *)"g:current_compiler",
+                                                               old_cur_comp);
+                   vim_free(old_cur_comp);
+               }
+               else
+!                  do_unlet((char_u *)"g:current_compiler", TRUE);
+           }
+       }
+      }
+*** ../vim-7.2.336/src/version.c       2010-01-19 15:51:29.000000000 +0100
+--- src/version.c      2010-01-19 16:11:20.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+  {   /* Add new patch number below this line */
++ /**/
++     337,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+121. You ask for e-mail adresses instead of telephone numbers.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\        download, build and distribute -- http://www.A-A-P.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.2.338 b/7.2.338
new file mode 100644 (file)
index 0000000..ac0223f
--- /dev/null
+++ b/7.2.338
@@ -0,0 +1,129 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.338
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.338 (after 7.2.300)
+Problem:    Part of FD_CLOEXEC change is missing.
+Solution:   Include source file skipped because of typo.
+Files:     src/ex_cmds2.c
+
+
+*** ../vim-7.2.337/src/ex_cmds2.c      2010-01-19 16:12:53.000000000 +0100
+--- src/ex_cmds2.c     2010-01-19 16:02:53.000000000 +0100
+***************
+*** 2802,2821 ****
+  
+  static char_u *get_one_sourceline __ARGS((struct source_cookie *sp));
+  
+! #if defined(WIN32) && defined(FEAT_CSCOPE)
+  static FILE *fopen_noinh_readbin __ARGS((char *filename));
+  
+  /*
+   * Special function to open a file without handle inheritance.
+   */
+      static FILE *
+  fopen_noinh_readbin(filename)
+      char    *filename;
+  {
+!     int      fd_tmp = mch_open(filename, O_RDONLY | O_BINARY | O_NOINHERIT, 0);
+  
+      if (fd_tmp == -1)
+       return NULL;
+      return fdopen(fd_tmp, READBIN);
+  }
+  #endif
+--- 2802,2836 ----
+  
+  static char_u *get_one_sourceline __ARGS((struct source_cookie *sp));
+  
+! #if (defined(WIN32) && defined(FEAT_CSCOPE)) || defined(HAVE_FD_CLOEXEC)
+! # define USE_FOPEN_NOINH
+  static FILE *fopen_noinh_readbin __ARGS((char *filename));
+  
+  /*
+   * Special function to open a file without handle inheritance.
++  * When possible the handle is closed on exec().
+   */
+      static FILE *
+  fopen_noinh_readbin(filename)
+      char    *filename;
+  {
+!     int      fd_tmp = mch_open(filename, O_RDONLY
+! # ifdef WIN32
+!                        O_BINARY | O_NOINHERIT
+! # endif
+!                        , 0);
+  
+      if (fd_tmp == -1)
+       return NULL;
++ 
++ # ifdef HAVE_FD_CLOEXEC
++     {
++      int fdflags = fcntl(fd_tmp, F_GETFD);
++      if (fdflags >= 0 && (fdflags & FD_CLOEXEC) == 0)
++          fcntl(fd_tmp, F_SETFD, fdflags | FD_CLOEXEC);
++     }
++ # endif
++ 
+      return fdopen(fd_tmp, READBIN);
+  }
+  #endif
+***************
+*** 2895,2901 ****
+      apply_autocmds(EVENT_SOURCEPRE, fname_exp, fname_exp, FALSE, curbuf);
+  #endif
+  
+! #if defined(WIN32) && defined(FEAT_CSCOPE)
+      cookie.fp = fopen_noinh_readbin((char *)fname_exp);
+  #else
+      cookie.fp = mch_fopen((char *)fname_exp, READBIN);
+--- 2910,2916 ----
+      apply_autocmds(EVENT_SOURCEPRE, fname_exp, fname_exp, FALSE, curbuf);
+  #endif
+  
+! #ifdef USE_FOPEN_NOINH
+      cookie.fp = fopen_noinh_readbin((char *)fname_exp);
+  #else
+      cookie.fp = mch_fopen((char *)fname_exp, READBIN);
+***************
+*** 2916,2922 ****
+               *p = '.';
+           else
+               *p = '_';
+! #if defined(WIN32) && defined(FEAT_CSCOPE)
+           cookie.fp = fopen_noinh_readbin((char *)fname_exp);
+  #else
+           cookie.fp = mch_fopen((char *)fname_exp, READBIN);
+--- 2931,2937 ----
+               *p = '.';
+           else
+               *p = '_';
+! #ifdef USE_FOPEN_NOINH
+           cookie.fp = fopen_noinh_readbin((char *)fname_exp);
+  #else
+           cookie.fp = mch_fopen((char *)fname_exp, READBIN);
+*** ../vim-7.2.337/src/version.c       2010-01-19 16:12:53.000000000 +0100
+--- src/version.c      2010-01-19 16:20:08.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+  {   /* Add new patch number below this line */
++ /**/
++     338,
+  /**/
+
+-- 
+~
+~
+~
+".signature" 4 lines, 50 characters written
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\        download, build and distribute -- http://www.A-A-P.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.2.339 b/7.2.339
new file mode 100644 (file)
index 0000000..77aa94d
--- /dev/null
+++ b/7.2.339
@@ -0,0 +1,78 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.339
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.339 (after 7.2.269)
+Problem:    Part of --startuptime patch is missing.
+Solution:   Add check for time_fd.
+Files:     src/ex_cmds2.c
+
+
+*** ../vim-7.2.338/src/ex_cmds2.c      2010-01-19 16:21:55.000000000 +0100
+--- src/ex_cmds2.c     2010-01-19 16:02:53.000000000 +0100
+***************
+*** 3036,3042 ****
+  #endif
+  
+  #ifdef STARTUPTIME
+!     time_push(&tv_rel, &tv_start);
+  #endif
+  
+  #ifdef FEAT_EVAL
+--- 3036,3043 ----
+  #endif
+  
+  #ifdef STARTUPTIME
+!     if (time_fd != NULL)
+!      time_push(&tv_rel, &tv_start);
+  #endif
+  
+  #ifdef FEAT_EVAL
+***************
+*** 3162,3170 ****
+       verbose_leave();
+      }
+  #ifdef STARTUPTIME
+!     vim_snprintf((char *)IObuff, IOSIZE, "sourcing %s", fname);
+!     time_msg((char *)IObuff, &tv_start);
+!     time_pop(&tv_rel);
+  #endif
+  
+  #ifdef FEAT_EVAL
+--- 3163,3174 ----
+       verbose_leave();
+      }
+  #ifdef STARTUPTIME
+!     if (time_fd != NULL)
+!     {
+!      vim_snprintf((char *)IObuff, IOSIZE, "sourcing %s", fname);
+!      time_msg((char *)IObuff, &tv_start);
+!      time_pop(&tv_rel);
+!     }
+  #endif
+  
+  #ifdef FEAT_EVAL
+*** ../vim-7.2.338/src/version.c       2010-01-19 16:21:55.000000000 +0100
+--- src/version.c      2010-01-19 16:25:39.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+  {   /* Add new patch number below this line */
++ /**/
++     339,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+122. You ask if the Netaholics Anonymous t-shirt you ordered can be
+     sent to you via e-mail.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\        download, build and distribute -- http://www.A-A-P.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.2.340 b/7.2.340
new file mode 100644 (file)
index 0000000..b0f4bab
--- /dev/null
+++ b/7.2.340
@@ -0,0 +1,54 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.340
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.340
+Problem:    Gcc warning for condition that can never be true. (James Vega)
+Solution:   Use start_lvl instead flp->lvl.
+Files:     src/fold.c
+
+
+*** ../vim-7.2.339/src/fold.c  2009-11-03 18:04:26.000000000 +0100
+--- src/fold.c 2010-01-19 16:45:13.000000000 +0100
+***************
+*** 3239,3246 ****
+                   flp->lvl = n;
+                   flp->lvl_next = n - 1;
+                   /* never start a fold with an end marker */
+!                  if (flp->lvl_next > flp->lvl)
+!                      flp->lvl_next = flp->lvl;
+               }
+           }
+           else
+--- 3239,3246 ----
+                   flp->lvl = n;
+                   flp->lvl_next = n - 1;
+                   /* never start a fold with an end marker */
+!                  if (flp->lvl_next > start_lvl)
+!                      flp->lvl_next = start_lvl;
+               }
+           }
+           else
+*** ../vim-7.2.339/src/version.c       2010-01-19 16:31:10.000000000 +0100
+--- src/version.c      2010-01-19 17:23:40.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+  {   /* Add new patch number below this line */
++ /**/
++     340,
+  /**/
+
+-- 
+Would you care for a drink?   I mean, if it were, like,
+disabled and you had to look after it?
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\        download, build and distribute -- http://www.A-A-P.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.2.341 b/7.2.341
new file mode 100644 (file)
index 0000000..67d5e81
--- /dev/null
+++ b/7.2.341
@@ -0,0 +1,69 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.341
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.341
+Problem:    Popup menu wraps to next line when double-wide character doesn't
+           fit. (Jiang Ma)
+Solution:   Display a ">" instead. (Dominique Pelle)
+Files:     src/screen.c
+
+
+*** ../vim-7.2.340/src/screen.c        2009-11-25 13:03:29.000000000 +0100
+--- src/screen.c       2010-01-19 17:34:21.000000000 +0100
+***************
+*** 6434,6439 ****
+--- 6434,6446 ----
+               else
+                   prev_c = u8c;
+  # endif
++              if (col + mbyte_cells > screen_Columns)
++              {
++                  /* Only 1 cell left, but character requires 2 cells:
++                   * display a '>' in the last column to avoid wrapping. */
++                  c = '>';
++                  mbyte_cells = 1;
++              }
+           }
+       }
+  #endif
+***************
+*** 9210,9216 ****
+      int          force;
+  {
+      /*
+!      * Don't delete it right now, when not redrawing or insided a mapping.
+       */
+      if (!redrawing() || (!force && char_avail() && !KeyTyped))
+       redraw_cmdline = TRUE;          /* delete mode later */
+--- 9217,9223 ----
+      int          force;
+  {
+      /*
+!      * Don't delete it right now, when not redrawing or inside a mapping.
+       */
+      if (!redrawing() || (!force && char_avail() && !KeyTyped))
+       redraw_cmdline = TRUE;          /* delete mode later */
+*** ../vim-7.2.340/src/version.c       2010-01-19 17:24:20.000000000 +0100
+--- src/version.c      2010-01-19 17:39:56.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+  {   /* Add new patch number below this line */
++ /**/
++     341,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+124. You begin conversations with, "Who is your internet service provider?"
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\        download, build and distribute -- http://www.A-A-P.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.2.342 b/7.2.342
new file mode 100644 (file)
index 0000000..72bf253
--- /dev/null
+++ b/7.2.342
@@ -0,0 +1,95 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.342
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.342
+Problem:    Popup menu displayed wrong in 'rightleft' mode when there are
+           multi-byte characters.
+Solution:   Adjust the column computations. (Dominique Pelle)
+Files:     src/popupmnu.c
+
+
+*** ../vim-7.2.341/src/popupmnu.c      2008-11-15 14:10:23.000000000 +0100
+--- src/popupmnu.c     2010-01-19 17:57:05.000000000 +0100
+***************
+*** 345,365 ****
+                           if (st != NULL)
+                           {
+                               char_u  *rt = reverse_text(st);
+-                              char_u  *rt_saved = rt;
+-                              int     len, j;
+  
+                               if (rt != NULL)
+                               {
+!                                  len = (int)STRLEN(rt);
+!                                  if (len > pum_width)
+                                   {
+!                                      for (j = pum_width; j < len; ++j)
+                                           mb_ptr_adv(rt);
+!                                      len = pum_width;
+                                   }
+!                                  screen_puts_len(rt, len, row,
+!                                                      col - len + 1, attr);
+!                                  vim_free(rt_saved);
+                               }
+                               vim_free(st);
+                           }
+--- 345,380 ----
+                           if (st != NULL)
+                           {
+                               char_u  *rt = reverse_text(st);
+  
+                               if (rt != NULL)
+                               {
+!                                  char_u      *rt_start = rt;
+!                                  int         size;
+! 
+!                                  size = vim_strsize(rt);
+!                                  if (size > pum_width)
+                                   {
+!                                      do
+!                                      {
+!                                          size -= has_mbyte
+!                                                  ? (*mb_ptr2cells)(rt) : 1;
+                                           mb_ptr_adv(rt);
+!                                      } while (size > pum_width);
+! 
+!                                      if (size < pum_width)
+!                                      {
+!                                          /* Most left character requires
+!                                           * 2-cells but only 1 cell is
+!                                           * available on screen.  Put a
+!                                           * '<' on the left of the pum
+!                                           * item */
+!                                          *(--rt) = '<';
+!                                          size++;
+!                                      }
+                                   }
+!                                  screen_puts_len(rt, (int)STRLEN(rt),
+!                                                 row, col - size + 1, attr);
+!                                  vim_free(rt_start);
+                               }
+                               vim_free(st);
+                           }
+*** ../vim-7.2.341/src/version.c       2010-01-19 17:40:39.000000000 +0100
+--- src/version.c      2010-01-19 18:03:22.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+  {   /* Add new patch number below this line */
++ /**/
++     342,
+  /**/
+
+-- 
+I have a watch cat! Just break in and she'll watch.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\        download, build and distribute -- http://www.A-A-P.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.2.343 b/7.2.343
new file mode 100644 (file)
index 0000000..2203151
--- /dev/null
+++ b/7.2.343
@@ -0,0 +1,51 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.343
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.343 (after 7.2.338)
+Problem:    Can't compile on Win32.
+Solution:   Insert the missing '|'.
+Files:     src/ex_cmds2.c
+
+
+*** ../vim-7.2.342/src/ex_cmds2.c      2010-01-19 16:31:10.000000000 +0100
+--- src/ex_cmds2.c     2010-01-19 23:22:40.000000000 +0100
+***************
+*** 2816,2822 ****
+  {
+      int      fd_tmp = mch_open(filename, O_RDONLY
+  # ifdef WIN32
+!                        O_BINARY | O_NOINHERIT
+  # endif
+                         , 0);
+  
+--- 2816,2822 ----
+  {
+      int      fd_tmp = mch_open(filename, O_RDONLY
+  # ifdef WIN32
+!                        | O_BINARY | O_NOINHERIT
+  # endif
+                         , 0);
+  
+*** ../vim-7.2.342/src/version.c       2010-01-19 18:05:05.000000000 +0100
+--- src/version.c      2010-01-19 23:24:05.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+  {   /* Add new patch number below this line */
++ /**/
++     343,
+  /**/
+
+-- 
+I'm writing a book.  I've got the page numbers done.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\        download, build and distribute -- http://www.A-A-P.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.2.344 b/7.2.344
new file mode 100644 (file)
index 0000000..788bbc4
--- /dev/null
+++ b/7.2.344
@@ -0,0 +1,60 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.344
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.344 (after 7.2.343)
+Problem:    Can't compile on some systems
+Solution:   Move the #ifdef outside of the mch_open macro. (Patrick Texier)
+Files:     src/ex_cmds2.c
+
+
+*** ../vim-7.2.343/src/ex_cmds2.c      2010-01-19 23:25:18.000000000 +0100
+--- src/ex_cmds2.c     2010-01-20 21:38:19.000000000 +0100
+***************
+*** 2814,2824 ****
+  fopen_noinh_readbin(filename)
+      char    *filename;
+  {
+-     int      fd_tmp = mch_open(filename, O_RDONLY
+  # ifdef WIN32
+!                        | O_BINARY | O_NOINHERIT
+  # endif
+-                        , 0);
+  
+      if (fd_tmp == -1)
+       return NULL;
+--- 2814,2824 ----
+  fopen_noinh_readbin(filename)
+      char    *filename;
+  {
+  # ifdef WIN32
+!     int      fd_tmp = mch_open(filename, O_RDONLY | O_BINARY | O_NOINHERIT, 0);
+! # else
+!     int      fd_tmp = mch_open(filename, O_RDONLY, 0);
+  # endif
+  
+      if (fd_tmp == -1)
+       return NULL;
+*** ../vim-7.2.343/src/version.c       2010-01-19 23:25:18.000000000 +0100
+--- src/version.c      2010-01-20 21:38:23.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+  {   /* Add new patch number below this line */
++ /**/
++     344,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+128. You can access the Net -- via your portable and cellular phone.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\        download, build and distribute -- http://www.A-A-P.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
index 6c2858b246e46e0aaba53512798f2551182fdd54..e8fb73066807e3fa52555c996c2686f25c468ee5 100644 (file)
--- a/vim.spec
+++ b/vim.spec
@@ -13,7 +13,7 @@
 %bcond_without home_etc        # without home_etc support
 
 %define                ver             7.2
-%define                patchlevel      330
+%define                patchlevel      344
 Summary:       Vi IMproved - a Vi clone
 Summary(de.UTF-8):     VIsual editor iMproved
 Summary(es.UTF-8):     Editor visual incrementado
This page took 0.119076 seconds and 4 git commands to generate.