]> git.pld-linux.org Git - packages/vim.git/commitdiff
- up to 7.3.618 auto/th/vim-7.3.618-1
authorArkadiusz Miśkiewicz <arekm@maven.pl>
Thu, 2 Aug 2012 07:48:27 +0000 (09:48 +0200)
committerArkadiusz Miśkiewicz <arekm@maven.pl>
Thu, 2 Aug 2012 07:48:27 +0000 (09:48 +0200)
19 files changed:
7.3.601 [new file with mode: 0644]
7.3.602 [new file with mode: 0644]
7.3.603 [new file with mode: 0644]
7.3.604 [new file with mode: 0644]
7.3.605 [new file with mode: 0644]
7.3.606 [new file with mode: 0644]
7.3.607 [new file with mode: 0644]
7.3.608 [new file with mode: 0644]
7.3.609 [new file with mode: 0644]
7.3.610 [new file with mode: 0644]
7.3.611 [new file with mode: 0644]
7.3.612 [new file with mode: 0644]
7.3.613 [new file with mode: 0644]
7.3.614 [new file with mode: 0644]
7.3.615 [new file with mode: 0644]
7.3.616 [new file with mode: 0644]
7.3.617 [new file with mode: 0644]
7.3.618 [new file with mode: 0644]
vim.spec

diff --git a/7.3.601 b/7.3.601
new file mode 100644 (file)
index 0000000..b61a933
--- /dev/null
+++ b/7.3.601
@@ -0,0 +1,51 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.601
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.601
+Problem:    Bad code style.
+Solution:   Insert space, remove parens.
+Files:     src/farsi.c
+
+
+*** ../vim-7.3.600/src/farsi.c 2010-08-15 21:57:28.000000000 +0200
+--- src/farsi.c        2012-07-12 21:59:15.000000000 +0200
+***************
+*** 1813,1819 ****
+               ptr[i] = toF_leading(ptr[i]);
+               ++i;
+  
+!              while(canF_Rjoin(ptr[i]) && (i < llen))
+               {
+                   ptr[i] = toF_Rjoin(ptr[i]);
+                   if (F_isterm(ptr[i]) || !F_isalpha(ptr[i]))
+--- 1813,1819 ----
+               ptr[i] = toF_leading(ptr[i]);
+               ++i;
+  
+!              while (canF_Rjoin(ptr[i]) && i < llen)
+               {
+                   ptr[i] = toF_Rjoin(ptr[i]);
+                   if (F_isterm(ptr[i]) || !F_isalpha(ptr[i]))
+*** ../vim-7.3.600/src/version.c       2012-07-10 19:25:06.000000000 +0200
+--- src/version.c      2012-07-16 17:25:48.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     601,
+  /**/
+
+-- 
+There are three kinds of persons: Those who can count and those who can't.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.3.602 b/7.3.602
new file mode 100644 (file)
index 0000000..fd5f3cf
--- /dev/null
+++ b/7.3.602
@@ -0,0 +1,55 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.602
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.602
+Problem:    Missing files in distribution.
+Solution:   Update the list of files.
+Files:     Filelist
+
+
+*** ../vim-7.3.601/Filelist    2011-10-20 16:35:25.000000000 +0200
+--- Filelist   2012-06-20 12:06:41.000000000 +0200
+***************
+*** 463,468 ****
+--- 463,469 ----
+               runtime/macros/hanoi/hanoi.vim \
+               runtime/macros/hanoi/poster \
+               runtime/macros/justify.vim \
++              runtime/macros/less.bat \
+               runtime/macros/less.sh \
+               runtime/macros/less.vim \
+               runtime/macros/life/click.me \
+***************
+*** 666,671 ****
+--- 667,674 ----
+  
+  # generic language files
+  LANG_GEN = \
++              runtime/doc/*-de.1 \
++              runtime/doc/*-de.UTF-8.1 \
+               runtime/doc/*-fr.1 \
+               runtime/doc/*-fr.UTF-8.1 \
+               runtime/doc/*-it.1 \
+*** ../vim-7.3.601/src/version.c       2012-07-16 17:26:18.000000000 +0200
+--- src/version.c      2012-07-16 17:27:31.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     602,
+  /**/
+
+-- 
+Never eat yellow snow.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.3.603 b/7.3.603
new file mode 100644 (file)
index 0000000..00a024b
--- /dev/null
+++ b/7.3.603
@@ -0,0 +1,370 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.603
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.603
+Problem:    It is possible to add replace builtin functions by calling
+           extend() on g:.
+Solution:   Add a flag to a dict to indicate it is a scope.  Check for
+           existing functions. (ZyX)
+Files:     src/buffer.c, src/eval.c, src/proto/eval.pro, src/structs.h,
+           src/testdir/test34.in, src/testdir/test34.ok, src/window.c
+
+
+*** ../vim-7.3.602/src/buffer.c        2012-07-10 15:18:18.000000000 +0200
+--- src/buffer.c       2012-07-16 16:52:58.000000000 +0200
+***************
+*** 1747,1753 ****
+      buf->b_wininfo->wi_win = curwin;
+  
+  #ifdef FEAT_EVAL
+!     init_var_dict(&buf->b_vars, &buf->b_bufvar);    /* init b: variables */
+  #endif
+  #ifdef FEAT_SYN_HL
+      hash_init(&buf->b_s.b_keywtab);
+--- 1747,1754 ----
+      buf->b_wininfo->wi_win = curwin;
+  
+  #ifdef FEAT_EVAL
+!     /* init b: variables */
+!     init_var_dict(&buf->b_vars, &buf->b_bufvar, VAR_SCOPE);
+  #endif
+  #ifdef FEAT_SYN_HL
+      hash_init(&buf->b_s.b_keywtab);
+*** ../vim-7.3.602/src/eval.c  2012-07-10 13:41:09.000000000 +0200
+--- src/eval.c 2012-07-16 17:18:11.000000000 +0200
+***************
+*** 850,857 ****
+      int                  i;
+      struct vimvar   *p;
+  
+!     init_var_dict(&globvardict, &globvars_var);
+!     init_var_dict(&vimvardict, &vimvars_var);
+      vimvardict.dv_lock = VAR_FIXED;
+      hash_init(&compat_hashtab);
+      hash_init(&func_hashtab);
+--- 850,857 ----
+      int                  i;
+      struct vimvar   *p;
+  
+!     init_var_dict(&globvardict, &globvars_var, VAR_DEF_SCOPE);
+!     init_var_dict(&vimvardict, &vimvars_var, VAR_SCOPE);
+      vimvardict.dv_lock = VAR_FIXED;
+      hash_init(&compat_hashtab);
+      hash_init(&func_hashtab);
+***************
+*** 2725,2738 ****
+           lp->ll_dict = lp->ll_tv->vval.v_dict;
+           lp->ll_di = dict_find(lp->ll_dict, key, len);
+  
+!          /* When assigning to g: check that a function and variable name is
+!           * valid. */
+!          if (rettv != NULL && lp->ll_dict == &globvardict)
+           {
+!              if (rettv->v_type == VAR_FUNC
+                              && var_check_func_name(key, lp->ll_di == NULL))
+!                  return NULL;
+!              if (!valid_varname(key))
+                   return NULL;
+           }
+  
+--- 2725,2750 ----
+           lp->ll_dict = lp->ll_tv->vval.v_dict;
+           lp->ll_di = dict_find(lp->ll_dict, key, len);
+  
+!          /* When assigning to a scope dictionary check that a function and
+!           * variable name is valid (only variable name unless it is l: or
+!           * g: dictionary). Disallow overwriting a builtin function. */
+!          if (rettv != NULL && lp->ll_dict->dv_scope != 0)
+           {
+!              int prevval;
+!              int wrong;
+! 
+!              if (len != -1)
+!              {
+!                  prevval = key[len];
+!                  key[len] = NUL;
+!              }
+!              wrong = (lp->ll_dict->dv_scope == VAR_DEF_SCOPE
+!                             && rettv->v_type == VAR_FUNC
+                              && var_check_func_name(key, lp->ll_di == NULL))
+!                      || !valid_varname(key);
+!              if (len != -1)
+!                  key[len] = prevval;
+!              if (wrong)
+                   return NULL;
+           }
+  
+***************
+*** 6951,6957 ****
+      d = (dict_T *)alloc(sizeof(dict_T));
+      if (d != NULL)
+      {
+!      /* Add the list to the list of dicts for garbage collection. */
+       if (first_dict != NULL)
+           first_dict->dv_used_prev = d;
+       d->dv_used_next = first_dict;
+--- 6963,6969 ----
+      d = (dict_T *)alloc(sizeof(dict_T));
+      if (d != NULL)
+      {
+!      /* Add the dict to the list of dicts for garbage collection. */
+       if (first_dict != NULL)
+           first_dict->dv_used_prev = d;
+       d->dv_used_next = first_dict;
+***************
+*** 6960,6965 ****
+--- 6972,6978 ----
+  
+       hash_init(&d->dv_hashtab);
+       d->dv_lock = 0;
++      d->dv_scope = 0;
+       d->dv_refcount = 0;
+       d->dv_copyID = 0;
+      }
+***************
+*** 10203,10208 ****
+--- 10216,10234 ----
+               {
+                   --todo;
+                   di1 = dict_find(d1, hi2->hi_key, -1);
++                  if (d1->dv_scope != 0)
++                  {
++                      /* Disallow replacing a builtin function in l: and g:.
++                       * Check the key to be valid when adding to any
++                       * scope. */
++                      if (d1->dv_scope == VAR_DEF_SCOPE
++                              && HI2DI(hi2)->di_tv.v_type == VAR_FUNC
++                              && var_check_func_name(hi2->hi_key,
++                                                               di1 == NULL))
++                          break;
++                      if (!valid_varname(hi2->hi_key))
++                          break;
++                  }
+                   if (di1 == NULL)
+                   {
+                       di1 = dictitem_copy(HI2DI(hi2));
+***************
+*** 20027,20033 ****
+       {
+           sv = SCRIPT_SV(ga_scripts.ga_len + 1) =
+               (scriptvar_T *)alloc_clear(sizeof(scriptvar_T));
+!          init_var_dict(&sv->sv_dict, &sv->sv_var);
+           ++ga_scripts.ga_len;
+       }
+      }
+--- 20053,20059 ----
+       {
+           sv = SCRIPT_SV(ga_scripts.ga_len + 1) =
+               (scriptvar_T *)alloc_clear(sizeof(scriptvar_T));
+!          init_var_dict(&sv->sv_dict, &sv->sv_var, VAR_SCOPE);
+           ++ga_scripts.ga_len;
+       }
+      }
+***************
+*** 20038,20049 ****
+   * point to it.
+   */
+      void
+! init_var_dict(dict, dict_var)
+      dict_T   *dict;
+      dictitem_T       *dict_var;
+  {
+      hash_init(&dict->dv_hashtab);
+      dict->dv_lock = 0;
+      dict->dv_refcount = DO_NOT_FREE_CNT;
+      dict->dv_copyID = 0;
+      dict_var->di_tv.vval.v_dict = dict;
+--- 20064,20077 ----
+   * point to it.
+   */
+      void
+! init_var_dict(dict, dict_var, scope)
+      dict_T   *dict;
+      dictitem_T       *dict_var;
++     int              scope;
+  {
+      hash_init(&dict->dv_hashtab);
+      dict->dv_lock = 0;
++     dict->dv_scope = scope;
+      dict->dv_refcount = DO_NOT_FREE_CNT;
+      dict->dv_copyID = 0;
+      dict_var->di_tv.vval.v_dict = dict;
+***************
+*** 22304,22310 ****
+      /*
+       * Init l: variables.
+       */
+!     init_var_dict(&fc->l_vars, &fc->l_vars_var);
+      if (selfdict != NULL)
+      {
+       /* Set l:self to "selfdict".  Use "name" to avoid a warning from
+--- 22332,22338 ----
+      /*
+       * Init l: variables.
+       */
+!     init_var_dict(&fc->l_vars, &fc->l_vars_var, VAR_DEF_SCOPE);
+      if (selfdict != NULL)
+      {
+       /* Set l:self to "selfdict".  Use "name" to avoid a warning from
+***************
+*** 22325,22331 ****
+       * Set a:0 to "argcount".
+       * Set a:000 to a list with room for the "..." arguments.
+       */
+!     init_var_dict(&fc->l_avars, &fc->l_avars_var);
+      add_nr_var(&fc->l_avars, &fc->fixvar[fixvar_idx++].var, "0",
+                               (varnumber_T)(argcount - fp->uf_args.ga_len));
+      /* Use "name" to avoid a warning from some compiler that checks the
+--- 22353,22359 ----
+       * Set a:0 to "argcount".
+       * Set a:000 to a list with room for the "..." arguments.
+       */
+!     init_var_dict(&fc->l_avars, &fc->l_avars_var, VAR_SCOPE);
+      add_nr_var(&fc->l_avars, &fc->fixvar[fixvar_idx++].var, "0",
+                               (varnumber_T)(argcount - fp->uf_args.ga_len));
+      /* Use "name" to avoid a warning from some compiler that checks the
+*** ../vim-7.3.602/src/proto/eval.pro  2012-06-29 12:54:32.000000000 +0200
+--- src/proto/eval.pro 2012-07-16 16:55:16.000000000 +0200
+***************
+*** 93,99 ****
+  char_u *get_tv_string_chk __ARGS((typval_T *varp));
+  char_u *get_var_value __ARGS((char_u *name));
+  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));
+--- 93,99 ----
+  char_u *get_tv_string_chk __ARGS((typval_T *varp));
+  char_u *get_var_value __ARGS((char_u *name));
+  void new_script_vars __ARGS((scid_T id));
+! void init_var_dict __ARGS((dict_T *dict, dictitem_T *dict_var, int scope));
+  void vars_clear __ARGS((hashtab_T *ht));
+  void copy_tv __ARGS((typval_T *from, typval_T *to));
+  void ex_echo __ARGS((exarg_T *eap));
+*** ../vim-7.3.602/src/structs.h       2012-06-06 19:02:40.000000000 +0200
+--- src/structs.h      2012-07-16 16:56:43.000000000 +0200
+***************
+*** 1106,1111 ****
+--- 1106,1116 ----
+  #define VAR_DICT    5        /* "v_dict" is used */
+  #define VAR_FLOAT   6        /* "v_float" is used */
+  
++ /* Values for "dv_scope". */
++ #define VAR_SCOPE     1      /* a:, v:, s:, etc. scope dictionaries */
++ #define VAR_DEF_SCOPE 2      /* l:, g: scope dictionaries: here funcrefs are not
++                         allowed to mask existing functions */
++ 
+  /* Values for "v_lock". */
+  #define VAR_LOCKED  1        /* locked with lock(), can use unlock() */
+  #define VAR_FIXED   2        /* locked forever */
+***************
+*** 1181,1186 ****
+--- 1186,1192 ----
+      int              dv_copyID;      /* ID used by deepcopy() */
+      dict_T   *dv_copydict;   /* copied dict used by deepcopy() */
+      char     dv_lock;        /* zero, VAR_LOCKED, VAR_FIXED */
++     char     dv_scope;       /* zero, VAR_SCOPE, VAR_DEF_SCOPE */
+      dict_T   *dv_used_next;  /* next dict in used dicts list */
+      dict_T   *dv_used_prev;  /* previous dict in used dicts list */
+  };
+*** ../vim-7.3.602/src/testdir/test34.in       2010-08-15 21:57:29.000000000 +0200
+--- src/testdir/test34.in      2012-07-16 16:51:29.000000000 +0200
+***************
+*** 1,5 ****
+--- 1,6 ----
+  Test for user functions.
+  Also test an <expr> mapping calling a function.
++ Also test that a builtin function cannot be replaced.
+  
+  STARTTEST
+  :so small.vim
+***************
+*** 58,64 ****
+  ---*---
+  (one
+  (two
+! [(one again\e:$-5,$w! test.out
+  :delfunc Table
+  :delfunc Compute
+  :delfunc Expr1
+--- 59,68 ----
+  ---*---
+  (one
+  (two
+! [(one again\e:call append(line('$'), max([1, 2, 3]))
+! :call extend(g:, {'max': function('min')})
+! :call append(line('$'), max([1, 2, 3]))
+! :$-7,$w! test.out
+  :delfunc Table
+  :delfunc Compute
+  :delfunc Expr1
+*** ../vim-7.3.602/src/testdir/test34.ok       2011-10-12 22:02:07.000000000 +0200
+--- src/testdir/test34.ok      2012-07-16 16:43:15.000000000 +0200
+***************
+*** 4,6 ****
+--- 4,8 ----
+  1. one
+  2. two
+  1. one again
++ 3
++ 3
+*** ../vim-7.3.602/src/window.c        2012-07-06 18:27:34.000000000 +0200
+--- src/window.c       2012-07-16 16:53:45.000000000 +0200
+***************
+*** 3468,3474 ****
+  # endif
+  #ifdef FEAT_EVAL
+       /* init t: variables */
+!      init_var_dict(&tp->tp_vars, &tp->tp_winvar);
+  #endif
+       tp->tp_ch_used = p_ch;
+      }
+--- 3468,3474 ----
+  # endif
+  #ifdef FEAT_EVAL
+       /* init t: variables */
+!      init_var_dict(&tp->tp_vars, &tp->tp_winvar, VAR_SCOPE);
+  #endif
+       tp->tp_ch_used = p_ch;
+      }
+***************
+*** 4410,4416 ****
+  #endif
+  #ifdef FEAT_EVAL
+       /* init w: variables */
+!      init_var_dict(&new_wp->w_vars, &new_wp->w_winvar);
+  #endif
+  #ifdef FEAT_FOLDING
+       foldInitWin(new_wp);
+--- 4410,4416 ----
+  #endif
+  #ifdef FEAT_EVAL
+       /* init w: variables */
+!      init_var_dict(&new_wp->w_vars, &new_wp->w_winvar, VAR_SCOPE);
+  #endif
+  #ifdef FEAT_FOLDING
+       foldInitWin(new_wp);
+*** ../vim-7.3.602/src/version.c       2012-07-16 17:27:57.000000000 +0200
+--- src/version.c      2012-07-16 17:29:06.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     603,
+  /**/
+
+-- 
+Birthdays are healthy.  The more you have them, the longer you live.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.3.604 b/7.3.604
new file mode 100644 (file)
index 0000000..f7e63bd
--- /dev/null
+++ b/7.3.604
@@ -0,0 +1,60 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.604
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.604
+Problem:    inputdialog() doesn't use the cancel argument in the console.
+           (David Fishburn)
+Solution:   Use the third argument. (Christian Brabant)
+Files:     src/eval.c
+
+
+*** ../vim-7.3.603/src/eval.c  2012-07-16 17:31:48.000000000 +0200
+--- src/eval.c 2012-07-16 19:20:47.000000000 +0200
+***************
+*** 12940,12945 ****
+--- 12940,12946 ----
+               int     xp_namelen;
+               long    argt;
+  
++              /* input() with a third argument: completion */
+               rettv->vval.v_string = NULL;
+  
+               xp_name = get_tv_string_buf_chk(&argvars[2], buf);
+***************
+*** 12958,12963 ****
+--- 12959,12969 ----
+           rettv->vval.v_string =
+               getcmdline_prompt(inputsecret_flag ? NUL : '@', p, echo_attr,
+                                 xp_type, xp_arg);
++      if (rettv->vval.v_string == NULL
++              && argvars[1].v_type != VAR_UNKNOWN
++              && argvars[2].v_type != VAR_UNKNOWN)
++          rettv->vval.v_string = vim_strsave(get_tv_string_buf(
++                                                         &argvars[2], buf));
+  
+       vim_free(xp_arg);
+  
+*** ../vim-7.3.603/src/version.c       2012-07-16 17:31:48.000000000 +0200
+--- src/version.c      2012-07-16 19:23:11.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     604,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+135. You cut classes or miss work so you can stay home and browse the web.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.3.605 b/7.3.605
new file mode 100644 (file)
index 0000000..7033825
--- /dev/null
+++ b/7.3.605
@@ -0,0 +1,86 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.605
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.605 (after 7.3.577)
+Problem:    MS-Windows: Can't compile with older compilers. (Titov Anatoly)
+Solution:   Add #ifdef for MEMORYSTATUSEX.
+Files:     src/os_win32.c
+
+
+*** ../vim-7.3.604/src/os_win32.c      2012-06-29 15:51:26.000000000 +0200
+--- src/os_win32.c     2012-07-19 11:35:00.000000000 +0200
+***************
+*** 4999,5020 ****
+      long_u
+  mch_avail_mem(int special)
+  {
+!     if (g_PlatformId != VER_PLATFORM_WIN32_NT)
+!     {
+!      MEMORYSTATUS    ms;
+! 
+!      ms.dwLength = sizeof(MEMORYSTATUS);
+!      GlobalMemoryStatus(&ms);
+!      return (long_u)((ms.dwAvailPhys + ms.dwAvailPageFile) >> 10);
+!     }
+!     else
+      {
+       MEMORYSTATUSEX  ms;
+  
+       ms.dwLength = sizeof(MEMORYSTATUSEX);
+       GlobalMemoryStatusEx(&ms);
+       return (long_u)((ms.ullAvailPhys + ms.ullAvailPageFile) >> 10);
+      }
+  }
+  
+  #ifdef FEAT_MBYTE
+--- 4999,5025 ----
+      long_u
+  mch_avail_mem(int special)
+  {
+! #ifdef MEMORYSTATUSEX
+!     PlatformId();
+!     if (g_PlatformId == VER_PLATFORM_WIN32_NT)
+      {
+       MEMORYSTATUSEX  ms;
+  
++      /* Need to use GlobalMemoryStatusEx() when there is more memory than
++       * what fits in 32 bits. But it's not always available. */
+       ms.dwLength = sizeof(MEMORYSTATUSEX);
+       GlobalMemoryStatusEx(&ms);
+       return (long_u)((ms.ullAvailPhys + ms.ullAvailPageFile) >> 10);
+      }
++     else
++ #endif
++     {
++      MEMORYSTATUS    ms;
++ 
++      ms.dwLength = sizeof(MEMORYSTATUS);
++      GlobalMemoryStatus(&ms);
++      return (long_u)((ms.dwAvailPhys + ms.dwAvailPageFile) >> 10);
++     }
+  }
+  
+  #ifdef FEAT_MBYTE
+*** ../vim-7.3.604/src/version.c       2012-07-16 19:27:25.000000000 +0200
+--- src/version.c      2012-07-19 11:36:12.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     605,
+  /**/
+
+-- 
+Fingers not found - Pound head on keyboard to continue.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.3.606 b/7.3.606
new file mode 100644 (file)
index 0000000..2296653
--- /dev/null
+++ b/7.3.606
@@ -0,0 +1,76 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.606
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.606
+Problem:    CTRL-P completion has a problem with multi-byte characters.
+Solution:   Check for next character being NUL properly.  (Yasuhiro Matsumoto)
+Files:     src/search.c, src/macros.h
+
+
+*** ../vim-7.3.605/src/search.c        2012-06-06 16:12:54.000000000 +0200
+--- src/search.c       2012-07-19 17:09:20.000000000 +0200
+***************
+*** 5141,5147 ****
+                   && !(compl_cont_status & CONT_SOL)
+  #endif
+                   && *startp != NUL
+!                  && *(p = startp + 1) != NUL)
+               goto search_line;
+       }
+       line_breakcheck();
+--- 5141,5147 ----
+                   && !(compl_cont_status & CONT_SOL)
+  #endif
+                   && *startp != NUL
+!                  && *(p = startp + MB_PTR2LEN(startp)) != NUL)
+               goto search_line;
+       }
+       line_breakcheck();
+*** ../vim-7.3.605/src/macros.h        2010-09-21 16:56:29.000000000 +0200
+--- src/macros.h       2012-07-19 17:08:38.000000000 +0200
+***************
+*** 259,264 ****
+--- 259,266 ----
+   * PTR2CHAR(): get character from pointer.
+   */
+  #ifdef FEAT_MBYTE
++ /* Get the length of the character p points to */
++ # define MB_PTR2LEN(p)               (has_mbyte ? (*mb_ptr2len)(p) : 1)
+  /* Advance multi-byte pointer, skip over composing chars. */
+  # define mb_ptr_adv(p)           p += has_mbyte ? (*mb_ptr2len)(p) : 1
+  /* Advance multi-byte pointer, do not skip over composing chars. */
+***************
+*** 272,277 ****
+--- 274,280 ----
+  # define MB_CHARLEN(p)           (has_mbyte ? mb_charlen(p) : (int)STRLEN(p))
+  # define PTR2CHAR(p)     (has_mbyte ? mb_ptr2char(p) : (int)*(p))
+  #else
++ # define MB_PTR2LEN(p)               1
+  # define mb_ptr_adv(p)               ++p
+  # define mb_cptr_adv(p)              ++p
+  # define mb_ptr_back(s, p)   --p
+*** ../vim-7.3.605/src/version.c       2012-07-19 11:37:22.000000000 +0200
+--- src/version.c      2012-07-19 17:13:53.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     606,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+151. You find yourself engaged to someone you've never actually met,
+     except through e-mail.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.3.607 b/7.3.607
new file mode 100644 (file)
index 0000000..4dbf559
--- /dev/null
+++ b/7.3.607
@@ -0,0 +1,56 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.607
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.607
+Problem:    With an 8 color terminal the selected menu item is black on black,
+           because darkGrey as bg is the same as black.
+Solution:   Swap fg and bg colors. (James McCoy)
+Files:     src/syntax.c
+
+
+*** ../vim-7.3.606/src/syntax.c        2012-06-01 13:18:48.000000000 +0200
+--- src/syntax.c       2012-07-19 17:34:42.000000000 +0200
+***************
+*** 6653,6660 ****
+            "PmenuThumb ctermbg=White guibg=White"),
+       CENT("Pmenu ctermbg=Magenta ctermfg=Black",
+            "Pmenu ctermbg=Magenta ctermfg=Black guibg=Magenta"),
+!      CENT("PmenuSel ctermbg=DarkGrey ctermfg=Black",
+!           "PmenuSel ctermbg=DarkGrey ctermfg=Black guibg=DarkGrey"),
+  #endif
+       CENT("Title term=bold ctermfg=LightMagenta",
+            "Title term=bold ctermfg=LightMagenta gui=bold guifg=Magenta"),
+--- 6653,6660 ----
+            "PmenuThumb ctermbg=White guibg=White"),
+       CENT("Pmenu ctermbg=Magenta ctermfg=Black",
+            "Pmenu ctermbg=Magenta ctermfg=Black guibg=Magenta"),
+!      CENT("PmenuSel ctermbg=Black ctermfg=DarkGrey",
+!           "PmenuSel ctermbg=Black ctermfg=DarkGrey guibg=DarkGrey"),
+  #endif
+       CENT("Title term=bold ctermfg=LightMagenta",
+            "Title term=bold ctermfg=LightMagenta gui=bold guifg=Magenta"),
+*** ../vim-7.3.606/src/version.c       2012-07-19 17:18:21.000000000 +0200
+--- src/version.c      2012-07-19 17:38:05.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     607,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+152. You find yourself falling for someone you've never seen or hardly
+     know, but, boy can he/she TYPE!!!!!!
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.3.608 b/7.3.608
new file mode 100644 (file)
index 0000000..148bc49
--- /dev/null
+++ b/7.3.608
@@ -0,0 +1,119 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.608
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.608
+Problem:    winrestview() does not always restore the view correctly.
+Solution:   Call win_new_height() and win_new_width(). (Lech Lorens)
+Files:     src/eval.c, src/proto/window.pro, src/window.c
+
+
+*** ../vim-7.3.607/src/eval.c  2012-07-16 19:27:25.000000000 +0200
+--- src/eval.c 2012-07-19 17:50:16.000000000 +0200
+***************
+*** 18601,18606 ****
+--- 18601,18610 ----
+       curwin->w_skipcol = get_dict_number(dict, (char_u *)"skipcol");
+  
+       check_cursor();
++      win_new_height(curwin, curwin->w_height);
++ # ifdef FEAT_VERTSPLIT
++      win_new_width(curwin, W_WIDTH(curwin));
++ # endif
+       changed_window_setting();
+  
+       if (curwin->w_topline == 0)
+*** ../vim-7.3.607/src/proto/window.pro        2012-06-13 14:28:16.000000000 +0200
+--- src/proto/window.pro       2012-07-19 18:05:10.000000000 +0200
+***************
+*** 51,56 ****
+--- 51,58 ----
+  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));
++ void win_new_height __ARGS((win_T *wp, int height));
++ void win_new_width __ARGS((win_T *wp, int width));
+  void win_comp_scroll __ARGS((win_T *wp));
+  void command_height __ARGS((void));
+  void last_status __ARGS((int morewin));
+*** ../vim-7.3.607/src/window.c        2012-07-16 17:31:48.000000000 +0200
+--- src/window.c       2012-07-19 18:05:18.000000000 +0200
+***************
+*** 54,60 ****
+  static void frame_insert __ARGS((frame_T *before, frame_T *frp));
+  static void frame_remove __ARGS((frame_T *frp));
+  #ifdef FEAT_VERTSPLIT
+- static void win_new_width __ARGS((win_T *wp, int width));
+  static void win_goto_ver __ARGS((int up, long count));
+  static void win_goto_hor __ARGS((int left, long count));
+  #endif
+--- 54,59 ----
+***************
+*** 71,77 ****
+  
+  static win_T *win_alloc __ARGS((win_T *after, int hidden));
+  static void set_fraction __ARGS((win_T *wp));
+- static void win_new_height __ARGS((win_T *wp, int height));
+  
+  #define URL_SLASH    1               /* path_is_url() has found "://" */
+  #define URL_BACKSLASH        2               /* path_is_url() has found ":\\" */
+--- 70,75 ----
+***************
+*** 5557,5563 ****
+   * This takes care of the things inside the window, not what happens to the
+   * window position, the frame or to other windows.
+   */
+!     static void
+  win_new_height(wp, height)
+      win_T    *wp;
+      int              height;
+--- 5555,5561 ----
+   * This takes care of the things inside the window, not what happens to the
+   * window position, the frame or to other windows.
+   */
+!     void
+  win_new_height(wp, height)
+      win_T    *wp;
+      int              height;
+***************
+*** 5697,5703 ****
+  /*
+   * Set the width of a window.
+   */
+!     static void
+  win_new_width(wp, width)
+      win_T    *wp;
+      int              width;
+--- 5695,5701 ----
+  /*
+   * Set the width of a window.
+   */
+!     void
+  win_new_width(wp, width)
+      win_T    *wp;
+      int              width;
+*** ../vim-7.3.607/src/version.c       2012-07-19 17:39:01.000000000 +0200
+--- src/version.c      2012-07-19 17:53:37.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     608,
+  /**/
+
+-- 
+Although the scythe isn't pre-eminent among the weapons of war, anyone who
+has been on the wrong end of, say, a peasants' revolt will know that in
+skilled hands it is fearsome.
+                                       -- (Terry Pratchett, Mort)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.3.609 b/7.3.609
new file mode 100644 (file)
index 0000000..ed731f5
--- /dev/null
+++ b/7.3.609
@@ -0,0 +1,251 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.609
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.609
+Problem:    File names in :checkpath! output are garbled.
+Solution:   Check for \zs in the pattern. (Lech Lorens)
+Files:     src/search.c, src/testdir/test17.in, src/testdir/test17.ok
+
+
+*** ../vim-7.3.608/src/search.c        2012-07-19 17:18:21.000000000 +0200
+--- src/search.c       2012-07-25 13:33:08.000000000 +0200
+***************
+*** 4740,4756 ****
+                        * Isolate the file name.
+                        * Include the surrounding "" or <> if present.
+                        */
+!                      for (p = incl_regmatch.endp[0]; !vim_isfilec(*p); p++)
+!                          ;
+!                      for (i = 0; vim_isfilec(p[i]); i++)
+!                          ;
+                       if (i == 0)
+                       {
+                           /* Nothing found, use the rest of the line. */
+                           p = incl_regmatch.endp[0];
+                           i = (int)STRLEN(p);
+                       }
+!                      else
+                       {
+                           if (p[-1] == '"' || p[-1] == '<')
+                           {
+--- 4740,4772 ----
+                        * Isolate the file name.
+                        * Include the surrounding "" or <> if present.
+                        */
+!                      if (inc_opt != NULL
+!                                 && strstr((char *)inc_opt, "\\zs") != NULL)
+!                      {
+!                          /* pattern contains \zs, use the match */
+!                          p = incl_regmatch.startp[0];
+!                          i = (int)(incl_regmatch.endp[0]
+!                                                 - incl_regmatch.startp[0]);
+!                      }
+!                      else
+!                      {
+!                          /* find the file name after the end of the match */
+!                          for (p = incl_regmatch.endp[0];
+!                                                *p && !vim_isfilec(*p); p++)
+!                              ;
+!                          for (i = 0; vim_isfilec(p[i]); i++)
+!                              ;
+!                      }
+! 
+                       if (i == 0)
+                       {
+                           /* Nothing found, use the rest of the line. */
+                           p = incl_regmatch.endp[0];
+                           i = (int)STRLEN(p);
+                       }
+!                      /* Avoid checking before the start of the line, can
+!                       * happen if \zs appears in the regexp. */
+!                      else if (p > line)
+                       {
+                           if (p[-1] == '"' || p[-1] == '<')
+                           {
+*** ../vim-7.3.608/src/testdir/test17.in       2010-08-15 21:57:29.000000000 +0200
+--- src/testdir/test17.in      2012-07-25 13:41:43.000000000 +0200
+***************
+*** 1,4 ****
+! Tests for "gf" on ${VAR}
+  
+  STARTTEST
+  :so small.vim
+--- 1,6 ----
+! Tests for:
+! - "gf" on ${VAR},
+! - ":checkpath!" with various 'include' settings.
+  
+  STARTTEST
+  :so small.vim
+***************
+*** 20,27 ****
+  :endif
+  gf
+  :w! test.out
+! :qa!
+  ENDTEST
+  
+       ${CDIR}/test17a.in
+       $TDIR/test17a.in
+--- 22,120 ----
+  :endif
+  gf
+  :w! test.out
+! :brewind
+  ENDTEST
+  
+       ${CDIR}/test17a.in
+       $TDIR/test17a.in
++ 
++ STARTTEST
++ :" check for 'include' without \zs or \ze
++ :lang C
++ :!rm -f ./Xbase.a
++ :!rm -rf ./Xdir1
++ :!mkdir -p Xdir1/dir2
++ :e Xdir1/dir2/foo.a
++ i#include   "bar.a"\e
++ :w
++ :e Xdir1/dir2/bar.a
++ i#include      "baz.a"\e
++ :w
++ :e Xdir1/dir2/baz.a
++ i#include            "foo.a"\e
++ :w
++ :e Xbase.a
++ :set path=Xdir1/dir2
++ i#include    <foo.a>\e
++ :w
++ :redir! >>test.out
++ :checkpath!
++ :redir END
++ :brewind
++ ENDTEST
++ 
++ STARTTEST
++ :" check for 'include' with \zs and \ze
++ :!rm -f ./Xbase.b
++ :!rm -rf ./Xdir1
++ :!mkdir -p Xdir1/dir2
++ :let &include='^\s*%inc\s*/\zs[^/]\+\ze'
++ :function! DotsToSlashes()
++ :  return substitute(v:fname, '\.', '/', 'g') . '.b'
++ :endfunction
++ :let &includeexpr='DotsToSlashes()'
++ :e Xdir1/dir2/foo.b
++ i%inc   /bar/\e
++ :w
++ :e Xdir1/dir2/bar.b
++ i%inc      /baz/\e
++ :w
++ :e Xdir1/dir2/baz.b
++ i%inc            /foo/\e
++ :w
++ :e Xbase.b
++ :set path=Xdir1/dir2
++ i%inc    /foo/\e
++ :w
++ :redir! >>test.out
++ :checkpath!
++ :redir END
++ :brewind
++ ENDTEST
++ 
++ STARTTEST
++ :" check for 'include' with \zs and no \ze
++ :!rm -f ./Xbase.c
++ :!rm -rf ./Xdir1
++ :!mkdir -p Xdir1/dir2
++ :let &include='^\s*%inc\s*\%([[:upper:]][^[:space:]]*\s\+\)\?\zs\S\+\ze'
++ :function! StripNewlineChar()
++ :  if v:fname =~ '\n$'
++ :    return v:fname[:-2]
++ :  endif
++ :  return v:fname
++ :endfunction
++ :let &includeexpr='StripNewlineChar()'
++ :e Xdir1/dir2/foo.c
++ i%inc   bar.c\e
++ :w
++ :e Xdir1/dir2/bar.c
++ i%inc      baz.c\e
++ :w
++ :e Xdir1/dir2/baz.c
++ i%inc            foo.c\e
++ :w
++ :e Xdir1/dir2/FALSE.c
++ i%inc            foo.c\e
++ :w
++ :e Xbase.c
++ :set path=Xdir1/dir2
++ i%inc    FALSE.c foo.c\e
++ :w
++ :redir! >>test.out
++ :checkpath!
++ :redir END
++ :brewind
++ :q
++ ENDTEST
++ 
+*** ../vim-7.3.608/src/testdir/test17.ok       2010-08-15 21:57:29.000000000 +0200
+--- src/testdir/test17.ok      2012-07-25 13:45:37.000000000 +0200
+***************
+*** 1,3 ****
+--- 1,33 ----
+  This file is just to test "gf" in test 17.
+  The contents is not important.
+  Just testing!
++ 
++ 
++ --- Included files in path ---
++ Xdir1/dir2/foo.a
++ Xdir1/dir2/foo.a -->
++   Xdir1/dir2/bar.a
++   Xdir1/dir2/bar.a -->
++     Xdir1/dir2/baz.a
++     Xdir1/dir2/baz.a -->
++       "foo.a"  (Already listed)
++ 
++ 
++ --- Included files in path ---
++ Xdir1/dir2/foo.b
++ Xdir1/dir2/foo.b -->
++   Xdir1/dir2/bar.b
++   Xdir1/dir2/bar.b -->
++     Xdir1/dir2/baz.b
++     Xdir1/dir2/baz.b -->
++       foo  (Already listed)
++ 
++ 
++ --- Included files in path ---
++ Xdir1/dir2/foo.c
++ Xdir1/dir2/foo.c -->
++   Xdir1/dir2/bar.c
++   Xdir1/dir2/bar.c -->
++     Xdir1/dir2/baz.c
++     Xdir1/dir2/baz.c -->
++       foo.c^@  (Already listed)
+*** ../vim-7.3.608/src/version.c       2012-07-19 18:05:40.000000000 +0200
+--- src/version.c      2012-07-25 13:38:54.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     609,
+  /**/
+
+-- 
+"The question of whether computers can think is just like the question
+of whether submarines can swim."      -- Edsger W. Dijkstra
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.3.610 b/7.3.610
new file mode 100644 (file)
index 0000000..5e48837
--- /dev/null
+++ b/7.3.610
@@ -0,0 +1,400 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.610
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.610
+Problem:    Cannot operate on the text that a search pattern matches.
+Solution:   Add the "gn" and "gN" commands. (Christian Brabandt)
+Files:     runtime/doc/index.txt, runtime/doc/visual.txt, src/normal.c,
+           src/proto/search.pro, src/search.c, src/testdir/test53.in,
+           src/testdir/test53.ok
+
+
+*** ../vim-7.3.609/runtime/doc/index.txt       2010-08-15 21:57:18.000000000 +0200
+--- runtime/doc/index.txt      2012-07-25 14:27:20.000000000 +0200
+***************
+*** 719,726 ****
+--- 719,729 ----
+  |gH|         gH                 start Select line mode
+  |gI|         gI              2  like "I", but always start in column 1
+  |gJ|         gJ              2  join lines without inserting space
++ |gN|         gN            1,2  find the previous match with the last used
++                                 search pattern and Visually select it
+  |gP|         ["x]gP          2  put the text [from register x] before the
+                                  cursor N times, leave the cursor after it
++ |gQ|         gQ                  switch to "Ex" mode with Vim editing
+  |gR|         gR              2  enter Virtual Replace mode
+  |gU|         gU{motion}      2  make Nmove text uppercase
+  |gV|         gV                 don't reselect the previous Visual area
+***************
+*** 750,755 ****
+--- 753,760 ----
+                                  lines down
+  |gk|         gk              1  like "k", but when 'wrap' on go N screen
+                                  lines up
++ |gn|         gn            1,2  find the next match with the last used
++                                 search pattern and Visually select it
+  |gm|         gm              1  go to character at middle of the screenline
+  |go|         go              1  cursor to byte N in the buffer
+  |gp|         ["x]gp          2  put the text [from register x] after the
+*** ../vim-7.3.609/runtime/doc/visual.txt      2010-08-15 21:57:16.000000000 +0200
+--- runtime/doc/visual.txt     2012-07-25 14:42:22.000000000 +0200
+***************
+*** 94,99 ****
+--- 99,116 ----
+                       After using "p" or "P" in Visual mode the text that
+                       was put will be selected.
+  
++                                                              *gn* *v_gn*
++ gn                   Search forward for the last used search pattern, like
++                      with `n`, and start Visual mode to select the match.
++                      If the cursor is on the match, visually selects it.
++                      If an operator is pending, operates on the match.
++                      E.g., "dgn" deletes the text of the next match.
++                      If Visual mode is active, extends the selection
++                      until the end of the next match.
++ 
++                                                              *gN* *v_gN*
++ gN                   Like |gn| but searches backward, like with `N`.
++ 
+                                                       *<LeftMouse>*
+  <LeftMouse>          Set the current cursor position.  If Visual mode is
+                       active it is stopped.  Only when 'mouse' option is
+*** ../vim-7.3.609/src/normal.c        2012-07-10 16:49:08.000000000 +0200
+--- src/normal.c       2012-07-25 14:31:40.000000000 +0200
+***************
+*** 1780,1789 ****
+           {
+               /* Prepare for redoing.  Only use the nchar field for "r",
+                * otherwise it might be the second char of the operator. */
+!              prep_redo(oap->regname, 0L, NUL, 'v',
+!                              get_op_char(oap->op_type),
+!                              get_extra_op_char(oap->op_type),
+!                              oap->op_type == OP_REPLACE ? cap->nchar : NUL);
+               if (!redo_VIsual_busy)
+               {
+                   redo_VIsual_mode = resel_VIsual_mode;
+--- 1780,1797 ----
+           {
+               /* Prepare for redoing.  Only use the nchar field for "r",
+                * otherwise it might be the second char of the operator. */
+!              if (cap->cmdchar == 'g' && (cap->nchar == 'n'
+!                                                      || cap->nchar == 'N'))
+!                  /* "gn" and "gN" are a bit different */
+!                  prep_redo(oap->regname, 0L, NUL, cap->cmdchar, cap->nchar,
+!                                      get_op_char(oap->op_type),
+!                                      get_extra_op_char(oap->op_type));
+!              else
+!                  prep_redo(oap->regname, 0L, NUL, 'v',
+!                                      get_op_char(oap->op_type),
+!                                      get_extra_op_char(oap->op_type),
+!                                      oap->op_type == OP_REPLACE
+!                                                        ? cap->nchar : NUL);
+               if (!redo_VIsual_busy)
+               {
+                   redo_VIsual_mode = resel_VIsual_mode;
+***************
+*** 7987,7992 ****
+--- 7995,8011 ----
+       cap->arg = TRUE;
+       nv_visual(cap);
+       break;
++ 
++     /* "gn", "gN" visually select next/previous search match
++      * "gn" selects next match
++      * "gN" selects previous match
++      */
++     case 'N':
++     case 'n':
++      if (!current_search(cap->count1, cap->nchar == 'n'))
++          beep_flush();
++ 
++      break;
+  #endif /* FEAT_VISUAL */
+  
+      /*
+*** ../vim-7.3.609/src/proto/search.pro        2010-08-15 21:57:28.000000000 +0200
+--- src/proto/search.pro       2012-07-25 14:24:01.000000000 +0200
+***************
+*** 27,32 ****
+--- 27,33 ----
+  int end_word __ARGS((long count, int bigword, int stop, int empty));
+  int bckend_word __ARGS((long count, int bigword, int eol));
+  int current_word __ARGS((oparg_T *oap, long count, int include, int bigword));
++ int current_search __ARGS((long count, int forward));
+  int current_sent __ARGS((oparg_T *oap, long count, int include));
+  int current_block __ARGS((oparg_T *oap, long count, int include, int what, int other));
+  int current_tagblock __ARGS((oparg_T *oap, long count_arg, int include));
+*** ../vim-7.3.609/src/search.c        2012-07-25 13:46:25.000000000 +0200
+--- src/search.c       2012-07-25 14:54:28.000000000 +0200
+***************
+*** 3397,3402 ****
+--- 3397,3547 ----
+      return OK;
+  }
+  
++ #if defined(FEAT_VISUAL) || defined(PROTO)
++ /*
++  * Find next search match under cursor, cursor at end.
++  * Used while an operator is pending, and in Visual mode.
++  * TODO: redo only works when used in operator pending mode
++  */
++     int
++ current_search(count, forward)
++     long     count;
++     int              forward;        /* move forward or backwards */
++ {
++     pos_T    start_pos;      /* position before the pattern */
++     pos_T    orig_pos;       /* position of the cursor at beginning */
++     pos_T    pos;            /* position after the pattern */
++     int              i;
++     int              dir;
++     int              result;         /* result of various function calls */
++     char_u   old_p_ws = p_ws;
++     int              visual_active = FALSE;
++     int              flags = 0;
++     pos_T    save_VIsual;
++ 
++ 
++     /* wrapping should not occur */
++     p_ws = FALSE;
++ 
++     /* Correct cursor when 'selection' is exclusive */
++     if (VIsual_active && *p_sel == 'e' && lt(VIsual, curwin->w_cursor))
++      dec_cursor();
++ 
++     if (VIsual_active)
++     {
++      orig_pos = curwin->w_cursor;
++      save_VIsual = VIsual;
++      visual_active = TRUE;
++ 
++      /* just started visual selection, only one character */
++      if (equalpos(VIsual, curwin->w_cursor))
++          visual_active = FALSE;
++ 
++      pos = curwin->w_cursor;
++      start_pos = VIsual;
++ 
++      /* make sure, searching further will extend the match */
++      if (VIsual_active)
++      {
++          if (forward)
++              incl(&pos);
++          else
++              decl(&pos);
++      }
++     }
++     else
++      orig_pos = pos = start_pos = curwin->w_cursor;
++ 
++     /*
++      * The trick is to first search backwards and then search forward again,
++      * so that a match at the current cursor position will be correctly
++      * captured.
++      */
++     for (i = 0; i < 2; i++)
++     {
++      if (i && count == 1)
++          flags = SEARCH_START;
++ 
++      if (forward)
++          dir = i;
++      else
++          dir = !i;
++      result = searchit(curwin, curbuf, &pos, (dir ? FORWARD : BACKWARD),
++              spats[last_idx].pat, (long) (i ? count : 1),
++              SEARCH_KEEP | flags | (dir ? 0 : SEARCH_END),
++              RE_SEARCH, 0, NULL);
++ 
++      /* First search may fail, but then start searching from the
++       * beginning of the file (cursor might be on the search match)
++       * except when Visual mode is active, so that extending the visual
++       * selection works. */
++      if (!result && i) /* not found, abort */
++      {
++          curwin->w_cursor = orig_pos;
++          if (VIsual_active)
++              VIsual = save_VIsual;
++          p_ws = old_p_ws;
++          return FAIL;
++      }
++      else if (!i && !result && !visual_active)
++      {
++          if (forward) /* try again from start of buffer */
++          {
++              clearpos(&pos);
++          }
++          else /* try again from end of buffer */
++          {
++              /* searching backwards, so set pos to last line and col */
++              pos.lnum = curwin->w_buffer->b_ml.ml_line_count;
++              pos.col  = STRLEN(ml_get(curwin->w_buffer->b_ml.ml_line_count));
++          }
++      }
++ 
++     }
++ 
++     start_pos = pos;
++     flags = (forward ? SEARCH_END : 0);
++ 
++     /* move to match */
++     result = searchit(curwin, curbuf, &pos, (forward ? FORWARD : BACKWARD),
++          spats[last_idx].pat, 0L, flags | SEARCH_KEEP, RE_SEARCH, 0, NULL);
++ 
++     if (!VIsual_active)
++      VIsual = start_pos;
++ 
++     p_ws = old_p_ws;
++     curwin->w_cursor = pos;
++     VIsual_active = TRUE;
++     VIsual_mode = 'v';
++ 
++     if (VIsual_active)
++     {
++      redraw_curbuf_later(INVERTED);  /* update the inversion */
++      if (*p_sel == 'e' && ltoreq(VIsual, curwin->w_cursor))
++          inc_cursor();
++     }
++ 
++ #ifdef FEAT_FOLDING
++     if (fdo_flags & FDO_SEARCH && KeyTyped)
++      foldOpenCursor();
++ #endif
++ 
++     may_start_select('c');
++ #ifdef FEAT_MOUSE
++     setmouse();
++ #endif
++ #ifdef FEAT_CLIPBOARD
++     /* Make sure the clipboard gets updated.  Needed because start and
++      * end are still the same, and the selection needs to be owned */
++     clip_star.vmode = NUL;
++ #endif
++     redraw_curbuf_later(INVERTED);
++     showmode();
++ 
++     return OK;
++ }
++ #endif /* FEAT_VISUAL */
++ 
+  /*
+   * Find sentence(s) under the cursor, cursor at end.
+   * When Visual active, extend it by one or more sentences.
+***************
+*** 3420,3426 ****
+  
+  #ifdef FEAT_VISUAL
+      /*
+!      * When visual area is bigger than one character: Extend it.
+       */
+      if (VIsual_active && !equalpos(start_pos, VIsual))
+      {
+--- 3565,3571 ----
+  
+  #ifdef FEAT_VISUAL
+      /*
+!      * When the Visual area is bigger than one character: Extend it.
+       */
+      if (VIsual_active && !equalpos(start_pos, VIsual))
+      {
+***************
+*** 3508,3515 ****
+  #endif
+  
+      /*
+!      * If cursor started on blank, check if it is just before the start of the
+!      * next sentence.
+       */
+      while (c = gchar_pos(&pos), vim_iswhite(c))      /* vim_iswhite() is a macro */
+       incl(&pos);
+--- 3653,3660 ----
+  #endif
+  
+      /*
+!      * If the cursor started on a blank, check if it is just before the start
+!      * of the next sentence.
+       */
+      while (c = gchar_pos(&pos), vim_iswhite(c))      /* vim_iswhite() is a macro */
+       incl(&pos);
+***************
+*** 3558,3564 ****
+  #ifdef FEAT_VISUAL
+      if (VIsual_active)
+      {
+!      /* avoid getting stuck with "is" on a single space before a sent. */
+       if (equalpos(start_pos, curwin->w_cursor))
+           goto extend;
+       if (*p_sel == 'e')
+--- 3703,3709 ----
+  #ifdef FEAT_VISUAL
+      if (VIsual_active)
+      {
+!      /* Avoid getting stuck with "is" on a single space before a sentence. */
+       if (equalpos(start_pos, curwin->w_cursor))
+           goto extend;
+       if (*p_sel == 'e')
+*** ../vim-7.3.609/src/testdir/test53.in       2010-08-15 21:57:29.000000000 +0200
+--- src/testdir/test53.in      2012-07-25 15:01:34.000000000 +0200
+***************
+*** 28,33 ****
+--- 28,40 ----
+  :put =matchstr(\"abcd\", \".\", 0, -1) " a
+  :put =match(\"abcd\", \".\", 0, 5) " -1
+  :put =match(\"abcd\", \".\", 0, -1) " 0
++ /^foobar
++ gncsearchmatch\e/one\_s*two\_s
++ :1
++ gnd
++ /[a]bcdx
++ :1
++ 2gnd
+  :/^start:/,/^end:/wq! test.out
+  ENDTEST
+  
+***************
+*** 45,48 ****
+--- 52,60 ----
+  -<b>asdf<i>Xasdf</i>asdf</b>-
+  -<b>asdX<i>as<b />df</i>asdf</b>-
+  </begin>
++ SEARCH:
++ foobar
++ one
++ two
++ abcdx | abcdx | abcdx
+  end:
+*** ../vim-7.3.609/src/testdir/test53.ok       2010-08-15 21:57:29.000000000 +0200
+--- src/testdir/test53.ok      2012-07-25 14:24:01.000000000 +0200
+***************
+*** 18,21 ****
+--- 18,24 ----
+  a
+  -1
+  0
++ SEARCH:
++ searchmatch
++ abcdx |  | abcdx
+  end:
+*** ../vim-7.3.609/src/version.c       2012-07-25 13:46:25.000000000 +0200
+--- src/version.c      2012-07-25 15:03:43.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     610,
+  /**/
+
+-- 
+Did you ever see a "Hit any key to continue" message in a music piece?
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.3.611 b/7.3.611
new file mode 100644 (file)
index 0000000..5e366a7
--- /dev/null
+++ b/7.3.611
@@ -0,0 +1,58 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.611
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.611
+Problem:    Can't use Vim dictionary as self argument in Python.
+Solution:   Fix the check for the "self" argument. (ZyX)
+Files:     src/if_py_both.h
+
+
+*** ../vim-7.3.610/src/if_py_both.h    2012-06-30 13:34:29.000000000 +0200
+--- src/if_py_both.h   2012-07-25 15:32:10.000000000 +0200
+***************
+*** 1284,1292 ****
+       selfdictObject = PyDict_GetItemString(kwargs, "self");
+       if (selfdictObject != NULL)
+       {
+!          if (!PyDict_Check(selfdictObject))
+           {
+!              PyErr_SetString(PyExc_TypeError, _("'self' argument must be a dictionary"));
+               clear_tv(&args);
+               return NULL;
+           }
+--- 1284,1293 ----
+       selfdictObject = PyDict_GetItemString(kwargs, "self");
+       if (selfdictObject != NULL)
+       {
+!          if (!PyMapping_Check(selfdictObject))
+           {
+!              PyErr_SetString(PyExc_TypeError,
+!                                 _("'self' argument must be a dictionary"));
+               clear_tv(&args);
+               return NULL;
+           }
+*** ../vim-7.3.610/src/version.c       2012-07-25 15:06:20.000000000 +0200
+--- src/version.c      2012-07-25 15:32:24.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     611,
+  /**/
+
+-- 
+In Joseph Heller's novel "Catch-22", the main character tries to get out of a
+war by proving he is crazy.  But the mere fact he wants to get out of the war
+only shows he isn't crazy -- creating the original "Catch-22".
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.3.612 b/7.3.612
new file mode 100644 (file)
index 0000000..7b2207e
--- /dev/null
+++ b/7.3.612
@@ -0,0 +1,83 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.612
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.612
+Problem:    Auto formatting messes up text when 'fo' contains "2". (ZyX)
+Solution:   Decrement "less_cols". (Tor Perkins)
+Files:     src/misc1.c, src/testdir/test68.in, src/testdir/test68.ok
+
+
+*** ../vim-7.3.611/src/misc1.c 2012-07-06 16:49:37.000000000 +0200
+--- src/misc1.c        2012-07-25 16:03:58.000000000 +0200
+***************
+*** 1329,1334 ****
+--- 1329,1335 ----
+           for (i = 0; i < padding; i++)
+           {
+               STRCAT(leader, " ");
++              less_cols--;
+               newcol++;
+           }
+       }
+*** ../vim-7.3.611/src/testdir/test68.in       2012-06-29 15:04:34.000000000 +0200
+--- src/testdir/test68.in      2012-07-25 15:57:06.000000000 +0200
+***************
+*** 94,99 ****
+--- 94,109 ----
+  }
+  
+  STARTTEST
++ /mno pqr/
++ :setl tw=20 fo=an12wcq comments=s1:/*,mb:*,ex:*/
++ A vwx yz\e
++ ENDTEST
++ 
++ /* abc def ghi jkl 
++  *    mno pqr stu
++  */
++ 
++ STARTTEST
+  /^#/
+  :setl tw=12 fo=tqnc comments=:#
+  A foobar\e
+*** ../vim-7.3.611/src/testdir/test68.ok       2012-06-29 23:57:50.000000000 +0200
+--- src/testdir/test68.ok      2012-07-25 16:03:05.000000000 +0200
+***************
+*** 57,62 ****
+--- 57,68 ----
+  { 1aa ^^2bb }
+  
+  
++ /* abc def ghi jkl 
++  *    mno pqr stu 
++  *    vwx yz
++  */
++ 
++ 
+  # 1 xxxxx
+  #   foobar
+  
+*** ../vim-7.3.611/src/version.c       2012-07-25 15:36:00.000000000 +0200
+--- src/version.c      2012-07-25 16:08:02.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     612,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+169. You hire a housekeeper for your home page.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.3.613 b/7.3.613
new file mode 100644 (file)
index 0000000..520e87c
--- /dev/null
+++ b/7.3.613
@@ -0,0 +1,149 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.613
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.613
+Problem:    Including Python's config.c in the build causes trouble.  It is
+           not clear why it was there.
+Solution:   Omit the config file. (James McCoy)
+Files:     src/Makefile, src/auto/configure, src/configure.in
+
+
+*** ../vim-7.3.612/src/Makefile        2012-06-20 18:39:12.000000000 +0200
+--- src/Makefile       2012-07-25 16:22:57.000000000 +0200
+***************
+*** 2559,2577 ****
+  objects/if_perlsfio.o: if_perlsfio.c
+       $(CCC) $(PERL_CFLAGS) -o $@ if_perlsfio.c
+  
+- objects/py_config.o: $(PYTHON_CONFDIR)/config.c
+-      $(CCC) $(PYTHON_CFLAGS) -o $@ $(PYTHON_CONFDIR)/config.c \
+-              -I$(PYTHON_CONFDIR) -DHAVE_CONFIG_H -DNO_MAIN
+- 
+  objects/py_getpath.o: $(PYTHON_CONFDIR)/getpath.c
+       $(CCC) $(PYTHON_CFLAGS) -o $@ $(PYTHON_CONFDIR)/getpath.c \
+               -I$(PYTHON_CONFDIR) -DHAVE_CONFIG_H -DNO_MAIN \
+               $(PYTHON_GETPATH_CFLAGS)
+  
+- objects/py3_config.o: $(PYTHON3_CONFDIR)/config.c
+-      $(CCC) $(PYTHON3_CFLAGS) -o $@ $(PYTHON3_CONFDIR)/config.c \
+-              -I$(PYTHON3_CONFDIR) -DHAVE_CONFIG_H -DNO_MAIN
+- 
+  objects/if_python.o: if_python.c if_py_both.h
+       $(CCC) $(PYTHON_CFLAGS) $(PYTHON_CFLAGS_EXTRA) -o $@ if_python.c
+  
+--- 2559,2569 ----
+*** ../vim-7.3.612/src/auto/configure  2012-06-13 19:19:36.000000000 +0200
+--- src/auto/configure 2012-07-25 16:23:49.000000000 +0200
+***************
+*** 5357,5367 ****
+         PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version} -I${vi_cv_path_python_epfx}/include/python${vi_cv_var_python_version} -DPYTHON_HOME=\\\"${vi_cv_path_python_pfx}\\\""
+       fi
+       PYTHON_SRC="if_python.c"
+!              if test "x$MACOSX" = "xyes"; then
+!        PYTHON_OBJ="objects/if_python.o"
+!      else
+!        PYTHON_OBJ="objects/if_python.o objects/py_config.o"
+!      fi
+       if test "${vi_cv_var_python_version}" = "1.4"; then
+          PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o"
+       fi
+--- 5357,5363 ----
+         PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version} -I${vi_cv_path_python_epfx}/include/python${vi_cv_var_python_version} -DPYTHON_HOME=\\\"${vi_cv_path_python_pfx}\\\""
+       fi
+       PYTHON_SRC="if_python.c"
+!      PYTHON_OBJ="objects/if_python.o"
+       if test "${vi_cv_var_python_version}" = "1.4"; then
+          PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o"
+       fi
+***************
+*** 5656,5666 ****
+          PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\""
+        fi
+        PYTHON3_SRC="if_python3.c"
+!             if test "x$MACOSX" = "xyes"; then
+!         PYTHON3_OBJ="objects/if_python3.o"
+!       else
+!         PYTHON3_OBJ="objects/if_python3.o objects/py3_config.o"
+!       fi
+  
+                                                  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if -pthread should be used" >&5
+  $as_echo_n "checking if -pthread should be used... " >&6; }
+--- 5652,5658 ----
+          PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\""
+        fi
+        PYTHON3_SRC="if_python3.c"
+!       PYTHON3_OBJ="objects/if_python3.o"
+  
+                                                  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if -pthread should be used" >&5
+  $as_echo_n "checking if -pthread should be used... " >&6; }
+*** ../vim-7.3.612/src/configure.in    2012-06-13 19:19:36.000000000 +0200
+--- src/configure.in   2012-07-25 16:23:41.000000000 +0200
+***************
+*** 916,927 ****
+         PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version} -I${vi_cv_path_python_epfx}/include/python${vi_cv_var_python_version} -DPYTHON_HOME=\\\"${vi_cv_path_python_pfx}\\\""
+       fi
+       PYTHON_SRC="if_python.c"
+!      dnl For Mac OSX 10.2 config.o is included in the Python library.
+!      if test "x$MACOSX" = "xyes"; then
+!        PYTHON_OBJ="objects/if_python.o"
+!      else
+!        PYTHON_OBJ="objects/if_python.o objects/py_config.o"
+!      fi
+       if test "${vi_cv_var_python_version}" = "1.4"; then
+          PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o"
+       fi
+--- 916,922 ----
+         PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version} -I${vi_cv_path_python_epfx}/include/python${vi_cv_var_python_version} -DPYTHON_HOME=\\\"${vi_cv_path_python_pfx}\\\""
+       fi
+       PYTHON_SRC="if_python.c"
+!      PYTHON_OBJ="objects/if_python.o"
+       if test "${vi_cv_var_python_version}" = "1.4"; then
+          PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o"
+       fi
+***************
+*** 1106,1117 ****
+          PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\""
+        fi
+        PYTHON3_SRC="if_python3.c"
+!       dnl For Mac OSX 10.2 config.o is included in the Python library.
+!       if test "x$MACOSX" = "xyes"; then
+!         PYTHON3_OBJ="objects/if_python3.o"
+!       else
+!         PYTHON3_OBJ="objects/if_python3.o objects/py3_config.o"
+!       fi
+  
+        dnl On FreeBSD linking with "-pthread" is required to use threads.
+        dnl _THREAD_SAFE must be used for compiling then.
+--- 1101,1107 ----
+          PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\""
+        fi
+        PYTHON3_SRC="if_python3.c"
+!       PYTHON3_OBJ="objects/if_python3.o"
+  
+        dnl On FreeBSD linking with "-pthread" is required to use threads.
+        dnl _THREAD_SAFE must be used for compiling then.
+*** ../vim-7.3.612/src/version.c       2012-07-25 16:09:59.000000000 +0200
+--- src/version.c      2012-07-25 16:29:52.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     613,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+170. You introduce your wife as "my_lady@home.wife" and refer to your
+     children as "forked processes."
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.3.614 b/7.3.614
new file mode 100644 (file)
index 0000000..87d7a45
--- /dev/null
+++ b/7.3.614
@@ -0,0 +1,176 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.614
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.614
+Problem:    Number argument gets turned into a number while it should be a
+           string.
+Solution:   Add flag to the call_vim_function() call. (Yasuhiro Matsumoto)
+Files:     src/edit.c, src/eval.c, src/proto/eval.pro
+
+
+*** ../vim-7.3.613/src/edit.c  2012-07-10 17:14:50.000000000 +0200
+--- src/edit.c 2012-07-25 16:40:07.000000000 +0200
+***************
+*** 3959,3965 ****
+      curbuf_save = curbuf;
+  
+      /* Call a function, which returns a list or dict. */
+!     if (call_vim_function(funcname, 2, args, FALSE, &rettv) == OK)
+      {
+       switch (rettv.v_type)
+       {
+--- 3959,3965 ----
+      curbuf_save = curbuf;
+  
+      /* Call a function, which returns a list or dict. */
+!     if (call_vim_function(funcname, 2, args, FALSE, FALSE, &rettv) == OK)
+      {
+       switch (rettv.v_type)
+       {
+*** ../vim-7.3.613/src/eval.c  2012-07-19 18:05:40.000000000 +0200
+--- src/eval.c 2012-07-25 16:42:41.000000000 +0200
+***************
+*** 1564,1574 ****
+   * Returns OK or FAIL.
+   */
+      int
+! call_vim_function(func, argc, argv, safe, rettv)
+      char_u      *func;
+      int              argc;
+      char_u      **argv;
+      int              safe;           /* use the sandbox */
+      typval_T *rettv;
+  {
+      typval_T *argvars;
+--- 1564,1575 ----
+   * Returns OK or FAIL.
+   */
+      int
+! call_vim_function(func, argc, argv, safe, str_arg_only, rettv)
+      char_u      *func;
+      int              argc;
+      char_u      **argv;
+      int              safe;           /* use the sandbox */
++     int              str_arg_only;   /* all arguments are strings */
+      typval_T *rettv;
+  {
+      typval_T *argvars;
+***************
+*** 1593,1600 ****
+           continue;
+       }
+  
+!      /* Recognize a number argument, the others must be strings. */
+!      vim_str2nr(argv[i], NULL, &len, TRUE, TRUE, &n, NULL);
+       if (len != 0 && len == (int)STRLEN(argv[i]))
+       {
+           argvars[i].v_type = VAR_NUMBER;
+--- 1594,1604 ----
+           continue;
+       }
+  
+!      if (str_arg_only)
+!          len = 0;
+!      else
+!          /* Recognize a number argument, the others must be strings. */
+!          vim_str2nr(argv[i], NULL, &len, TRUE, TRUE, &n, NULL);
+       if (len != 0 && len == (int)STRLEN(argv[i]))
+       {
+           argvars[i].v_type = VAR_NUMBER;
+***************
+*** 1646,1652 ****
+      typval_T rettv;
+      char_u   *retval;
+  
+!     if (call_vim_function(func, argc, argv, safe, &rettv) == FAIL)
+       return NULL;
+  
+      retval = vim_strsave(get_tv_string(&rettv));
+--- 1650,1657 ----
+      typval_T rettv;
+      char_u   *retval;
+  
+!     /* All arguments are passed as strings, no conversion to number. */
+!     if (call_vim_function(func, argc, argv, safe, TRUE, &rettv) == FAIL)
+       return NULL;
+  
+      retval = vim_strsave(get_tv_string(&rettv));
+***************
+*** 1671,1677 ****
+      typval_T rettv;
+      long     retval;
+  
+!     if (call_vim_function(func, argc, argv, safe, &rettv) == FAIL)
+       return -1;
+  
+      retval = get_tv_number_chk(&rettv, NULL);
+--- 1676,1683 ----
+      typval_T rettv;
+      long     retval;
+  
+!     /* All arguments are passed as strings, no conversion to number. */
+!     if (call_vim_function(func, argc, argv, safe, TRUE, &rettv) == FAIL)
+       return -1;
+  
+      retval = get_tv_number_chk(&rettv, NULL);
+***************
+*** 1694,1700 ****
+  {
+      typval_T rettv;
+  
+!     if (call_vim_function(func, argc, argv, safe, &rettv) == FAIL)
+       return NULL;
+  
+      if (rettv.v_type != VAR_LIST)
+--- 1700,1707 ----
+  {
+      typval_T rettv;
+  
+!     /* All arguments are passed as strings, no conversion to number. */
+!     if (call_vim_function(func, argc, argv, safe, TRUE, &rettv) == FAIL)
+       return NULL;
+  
+      if (rettv.v_type != VAR_LIST)
+*** ../vim-7.3.613/src/proto/eval.pro  2012-07-16 17:31:48.000000000 +0200
+--- src/proto/eval.pro 2012-07-25 16:42:59.000000000 +0200
+***************
+*** 23,29 ****
+  list_T *eval_spell_expr __ARGS((char_u *badword, char_u *expr));
+  int get_spellword __ARGS((list_T *list, char_u **pp));
+  typval_T *eval_expr __ARGS((char_u *arg, char_u **nextcmd));
+! int call_vim_function __ARGS((char_u *func, int argc, char_u **argv, int safe, typval_T *rettv));
+  void *call_func_retstr __ARGS((char_u *func, int argc, char_u **argv, int safe));
+  long call_func_retnr __ARGS((char_u *func, int argc, char_u **argv, int safe));
+  void *call_func_retlist __ARGS((char_u *func, int argc, char_u **argv, int safe));
+--- 23,29 ----
+  list_T *eval_spell_expr __ARGS((char_u *badword, char_u *expr));
+  int get_spellword __ARGS((list_T *list, char_u **pp));
+  typval_T *eval_expr __ARGS((char_u *arg, char_u **nextcmd));
+! int call_vim_function __ARGS((char_u *func, int argc, char_u **argv, int safe, int str_arg_only, typval_T *rettv));
+  void *call_func_retstr __ARGS((char_u *func, int argc, char_u **argv, int safe));
+  long call_func_retnr __ARGS((char_u *func, int argc, char_u **argv, int safe));
+  void *call_func_retlist __ARGS((char_u *func, int argc, char_u **argv, int safe));
+*** ../vim-7.3.613/src/version.c       2012-07-25 16:32:03.000000000 +0200
+--- src/version.c      2012-07-25 16:46:11.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     614,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+171. You invent another person and chat with yourself in empty chat rooms.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.3.615 b/7.3.615
new file mode 100644 (file)
index 0000000..96f6885
--- /dev/null
+++ b/7.3.615
@@ -0,0 +1,107 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.615
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.615
+Problem:    Completion for a user command does not recognize backslash before
+           a space.
+Solution:   Recognize escaped characters. (Yasuhiro Matsumoto)
+Files:     src/ex_docmd.c
+
+
+*** ../vim-7.3.614/src/ex_docmd.c      2012-07-10 19:25:06.000000000 +0200
+--- src/ex_docmd.c     2012-07-25 17:10:16.000000000 +0200
+***************
+*** 3390,3401 ****
+       return NULL;
+  
+      /* Find start of last argument (argument just before cursor): */
+!     p = buff + STRLEN(buff);
+!     while (p != arg && *p != ' ' && *p != TAB)
+!      p--;
+!     if (*p == ' ' || *p == TAB)
+!      p++;
+      xp->xp_pattern = p;
+  
+      if (ea.argt & XFILE)
+      {
+--- 3390,3412 ----
+       return NULL;
+  
+      /* Find start of last argument (argument just before cursor): */
+!     p = buff;
+      xp->xp_pattern = p;
++     len = STRLEN(buff);
++     while (*p && p < buff + len)
++     {
++      if (*p == ' ' || *p == TAB)
++      {
++          /* argument starts after a space */
++          xp->xp_pattern = ++p;
++      }
++      else
++      {
++          if (*p == '\\' && *(p + 1) != NUL)
++              ++p; /* skip over escaped character */
++          mb_ptr_adv(p);
++      }
++     }
+  
+      if (ea.argt & XFILE)
+      {
+***************
+*** 3821,3828 ****
+                   if (compl == EXPAND_MAPPINGS)
+                       return set_context_in_map_cmd(xp, (char_u *)"map",
+                                        arg, forceit, FALSE, FALSE, CMD_map);
+!                  while ((xp->xp_pattern = vim_strchr(arg, ' ')) != NULL)
+!                      arg = xp->xp_pattern + 1;
+                   xp->xp_pattern = arg;
+               }
+               xp->xp_context = compl;
+--- 3832,3853 ----
+                   if (compl == EXPAND_MAPPINGS)
+                       return set_context_in_map_cmd(xp, (char_u *)"map",
+                                        arg, forceit, FALSE, FALSE, CMD_map);
+!                  /* Find start of last argument. */
+!                  p = arg;
+!                  while (*p)
+!                  {
+!                      if (*p == ' ')
+!                      {
+!                          /* argument starts after a space */
+!                          arg = p + 1;
+!                      }
+!                      else
+!                      {
+!                          if (*p == '\\' && *(p + 1) != NUL)
+!                              ++p; /* skip over escaped character */
+!                          mb_ptr_adv(p);
+!                      }
+!                  }
+                   xp->xp_pattern = arg;
+               }
+               xp->xp_context = compl;
+*** ../vim-7.3.614/src/version.c       2012-07-25 16:46:59.000000000 +0200
+--- src/version.c      2012-07-25 17:17:05.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     615,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+172. You join listservers just for the extra e-mail.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.3.616 b/7.3.616
new file mode 100644 (file)
index 0000000..5898eaf
--- /dev/null
+++ b/7.3.616
@@ -0,0 +1,46 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.616
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.616 (after 7.3.610)
+Problem:    Can't compile without +visual.
+Solution:   Add #ifdef.
+Files:     src/normal.c
+
+
+*** ../vim-7.3.615/src/normal.c        2012-07-25 15:06:20.000000000 +0200
+--- src/normal.c       2012-07-27 20:52:01.000000000 +0200
+***************
+*** 8002,8008 ****
+--- 8002,8010 ----
+       */
+      case 'N':
+      case 'n':
++ #ifdef FEAT_VISUAL
+       if (!current_search(cap->count1, cap->nchar == 'n'))
++ #endif
+           beep_flush();
+  
+       break;
+*** ../vim-7.3.615/src/version.c       2012-07-25 17:22:17.000000000 +0200
+--- src/version.c      2012-07-27 20:52:58.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     616,
+  /**/
+
+-- 
+The CIA drives around in cars with the "Intel inside" logo.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.3.617 b/7.3.617
new file mode 100644 (file)
index 0000000..48062cd
--- /dev/null
+++ b/7.3.617
@@ -0,0 +1,65 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.617
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.617 (after 7.3.615)
+Problem:    Hang on completion.
+Solution:   Skip over the space. (Yasuhiro Matsumoto)
+Files:     src/ex_docmd.c
+
+
+*** ../vim-7.3.616/src/ex_docmd.c      2012-07-25 17:22:17.000000000 +0200
+--- src/ex_docmd.c     2012-07-27 21:07:42.000000000 +0200
+***************
+*** 3837,3852 ****
+                   while (*p)
+                   {
+                       if (*p == ' ')
+-                      {
+                           /* argument starts after a space */
+                           arg = p + 1;
+!                      }
+!                      else
+!                      {
+!                          if (*p == '\\' && *(p + 1) != NUL)
+!                              ++p; /* skip over escaped character */
+!                          mb_ptr_adv(p);
+!                      }
+                   }
+                   xp->xp_pattern = arg;
+               }
+--- 3837,3847 ----
+                   while (*p)
+                   {
+                       if (*p == ' ')
+                           /* argument starts after a space */
+                           arg = p + 1;
+!                      else if (*p == '\\' && *(p + 1) != NUL)
+!                          ++p; /* skip over escaped character */
+!                      mb_ptr_adv(p);
+                   }
+                   xp->xp_pattern = arg;
+               }
+*** ../vim-7.3.616/src/version.c       2012-07-27 21:05:51.000000000 +0200
+--- src/version.c      2012-07-27 21:08:31.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     617,
+  /**/
+
+-- 
+If Microsoft would build a car...
+... You'd have to press the "Start" button to turn the engine off.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.3.618 b/7.3.618
new file mode 100644 (file)
index 0000000..d0cc9c6
--- /dev/null
+++ b/7.3.618
@@ -0,0 +1,367 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.618
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.618 (after 7.3.616)
+Problem:    Still doesn't compile with small features.
+Solution:   Move current_search() out of #ifdef. (Dominique Pelle)
+Files:     src/normal.c, src/search.c
+
+
+*** ../vim-7.3.617/src/normal.c        2012-07-27 21:05:51.000000000 +0200
+--- src/normal.c       2012-07-28 13:34:13.000000000 +0200
+***************
+*** 7995,8000 ****
+--- 7995,8001 ----
+       cap->arg = TRUE;
+       nv_visual(cap);
+       break;
++ #endif /* FEAT_VISUAL */
+  
+      /* "gn", "gN" visually select next/previous search match
+       * "gn" selects next match
+***************
+*** 8006,8014 ****
+       if (!current_search(cap->count1, cap->nchar == 'n'))
+  #endif
+           beep_flush();
+- 
+       break;
+- #endif /* FEAT_VISUAL */
+  
+      /*
+       * "gj" and "gk" two new funny movement keys -- up and down
+--- 8007,8013 ----
+*** ../vim-7.3.617/src/search.c        2012-07-25 15:06:20.000000000 +0200
+--- src/search.c       2012-07-28 13:37:19.000000000 +0200
+***************
+*** 3397,3547 ****
+      return OK;
+  }
+  
+- #if defined(FEAT_VISUAL) || defined(PROTO)
+- /*
+-  * Find next search match under cursor, cursor at end.
+-  * Used while an operator is pending, and in Visual mode.
+-  * TODO: redo only works when used in operator pending mode
+-  */
+-     int
+- current_search(count, forward)
+-     long     count;
+-     int              forward;        /* move forward or backwards */
+- {
+-     pos_T    start_pos;      /* position before the pattern */
+-     pos_T    orig_pos;       /* position of the cursor at beginning */
+-     pos_T    pos;            /* position after the pattern */
+-     int              i;
+-     int              dir;
+-     int              result;         /* result of various function calls */
+-     char_u   old_p_ws = p_ws;
+-     int              visual_active = FALSE;
+-     int              flags = 0;
+-     pos_T    save_VIsual;
+- 
+- 
+-     /* wrapping should not occur */
+-     p_ws = FALSE;
+- 
+-     /* Correct cursor when 'selection' is exclusive */
+-     if (VIsual_active && *p_sel == 'e' && lt(VIsual, curwin->w_cursor))
+-      dec_cursor();
+- 
+-     if (VIsual_active)
+-     {
+-      orig_pos = curwin->w_cursor;
+-      save_VIsual = VIsual;
+-      visual_active = TRUE;
+- 
+-      /* just started visual selection, only one character */
+-      if (equalpos(VIsual, curwin->w_cursor))
+-          visual_active = FALSE;
+- 
+-      pos = curwin->w_cursor;
+-      start_pos = VIsual;
+- 
+-      /* make sure, searching further will extend the match */
+-      if (VIsual_active)
+-      {
+-          if (forward)
+-              incl(&pos);
+-          else
+-              decl(&pos);
+-      }
+-     }
+-     else
+-      orig_pos = pos = start_pos = curwin->w_cursor;
+- 
+-     /*
+-      * The trick is to first search backwards and then search forward again,
+-      * so that a match at the current cursor position will be correctly
+-      * captured.
+-      */
+-     for (i = 0; i < 2; i++)
+-     {
+-      if (i && count == 1)
+-          flags = SEARCH_START;
+- 
+-      if (forward)
+-          dir = i;
+-      else
+-          dir = !i;
+-      result = searchit(curwin, curbuf, &pos, (dir ? FORWARD : BACKWARD),
+-              spats[last_idx].pat, (long) (i ? count : 1),
+-              SEARCH_KEEP | flags | (dir ? 0 : SEARCH_END),
+-              RE_SEARCH, 0, NULL);
+- 
+-      /* First search may fail, but then start searching from the
+-       * beginning of the file (cursor might be on the search match)
+-       * except when Visual mode is active, so that extending the visual
+-       * selection works. */
+-      if (!result && i) /* not found, abort */
+-      {
+-          curwin->w_cursor = orig_pos;
+-          if (VIsual_active)
+-              VIsual = save_VIsual;
+-          p_ws = old_p_ws;
+-          return FAIL;
+-      }
+-      else if (!i && !result && !visual_active)
+-      {
+-          if (forward) /* try again from start of buffer */
+-          {
+-              clearpos(&pos);
+-          }
+-          else /* try again from end of buffer */
+-          {
+-              /* searching backwards, so set pos to last line and col */
+-              pos.lnum = curwin->w_buffer->b_ml.ml_line_count;
+-              pos.col  = STRLEN(ml_get(curwin->w_buffer->b_ml.ml_line_count));
+-          }
+-      }
+- 
+-     }
+- 
+-     start_pos = pos;
+-     flags = (forward ? SEARCH_END : 0);
+- 
+-     /* move to match */
+-     result = searchit(curwin, curbuf, &pos, (forward ? FORWARD : BACKWARD),
+-          spats[last_idx].pat, 0L, flags | SEARCH_KEEP, RE_SEARCH, 0, NULL);
+- 
+-     if (!VIsual_active)
+-      VIsual = start_pos;
+- 
+-     p_ws = old_p_ws;
+-     curwin->w_cursor = pos;
+-     VIsual_active = TRUE;
+-     VIsual_mode = 'v';
+- 
+-     if (VIsual_active)
+-     {
+-      redraw_curbuf_later(INVERTED);  /* update the inversion */
+-      if (*p_sel == 'e' && ltoreq(VIsual, curwin->w_cursor))
+-          inc_cursor();
+-     }
+- 
+- #ifdef FEAT_FOLDING
+-     if (fdo_flags & FDO_SEARCH && KeyTyped)
+-      foldOpenCursor();
+- #endif
+- 
+-     may_start_select('c');
+- #ifdef FEAT_MOUSE
+-     setmouse();
+- #endif
+- #ifdef FEAT_CLIPBOARD
+-     /* Make sure the clipboard gets updated.  Needed because start and
+-      * end are still the same, and the selection needs to be owned */
+-     clip_star.vmode = NUL;
+- #endif
+-     redraw_curbuf_later(INVERTED);
+-     showmode();
+- 
+-     return OK;
+- }
+- #endif /* FEAT_VISUAL */
+- 
+  /*
+   * Find sentence(s) under the cursor, cursor at end.
+   * When Visual active, extend it by one or more sentences.
+--- 3397,3402 ----
+***************
+*** 4670,4675 ****
+--- 4525,4675 ----
+  
+  #endif /* FEAT_TEXTOBJ */
+  
++ #if defined(FEAT_VISUAL) || defined(PROTO)
++ /*
++  * Find next search match under cursor, cursor at end.
++  * Used while an operator is pending, and in Visual mode.
++  * TODO: redo only works when used in operator pending mode
++  */
++     int
++ current_search(count, forward)
++     long     count;
++     int              forward;        /* move forward or backwards */
++ {
++     pos_T    start_pos;      /* position before the pattern */
++     pos_T    orig_pos;       /* position of the cursor at beginning */
++     pos_T    pos;            /* position after the pattern */
++     int              i;
++     int              dir;
++     int              result;         /* result of various function calls */
++     char_u   old_p_ws = p_ws;
++     int              visual_active = FALSE;
++     int              flags = 0;
++     pos_T    save_VIsual;
++ 
++ 
++     /* wrapping should not occur */
++     p_ws = FALSE;
++ 
++     /* Correct cursor when 'selection' is exclusive */
++     if (VIsual_active && *p_sel == 'e' && lt(VIsual, curwin->w_cursor))
++      dec_cursor();
++ 
++     if (VIsual_active)
++     {
++      orig_pos = curwin->w_cursor;
++      save_VIsual = VIsual;
++      visual_active = TRUE;
++ 
++      /* just started visual selection, only one character */
++      if (equalpos(VIsual, curwin->w_cursor))
++          visual_active = FALSE;
++ 
++      pos = curwin->w_cursor;
++      start_pos = VIsual;
++ 
++      /* make sure, searching further will extend the match */
++      if (VIsual_active)
++      {
++          if (forward)
++              incl(&pos);
++          else
++              decl(&pos);
++      }
++     }
++     else
++      orig_pos = pos = start_pos = curwin->w_cursor;
++ 
++     /*
++      * The trick is to first search backwards and then search forward again,
++      * so that a match at the current cursor position will be correctly
++      * captured.
++      */
++     for (i = 0; i < 2; i++)
++     {
++      if (i && count == 1)
++          flags = SEARCH_START;
++ 
++      if (forward)
++          dir = i;
++      else
++          dir = !i;
++      result = searchit(curwin, curbuf, &pos, (dir ? FORWARD : BACKWARD),
++              spats[last_idx].pat, (long) (i ? count : 1),
++              SEARCH_KEEP | flags | (dir ? 0 : SEARCH_END),
++              RE_SEARCH, 0, NULL);
++ 
++      /* First search may fail, but then start searching from the
++       * beginning of the file (cursor might be on the search match)
++       * except when Visual mode is active, so that extending the visual
++       * selection works. */
++      if (!result && i) /* not found, abort */
++      {
++          curwin->w_cursor = orig_pos;
++          if (VIsual_active)
++              VIsual = save_VIsual;
++          p_ws = old_p_ws;
++          return FAIL;
++      }
++      else if (!i && !result && !visual_active)
++      {
++          if (forward) /* try again from start of buffer */
++          {
++              clearpos(&pos);
++          }
++          else /* try again from end of buffer */
++          {
++              /* searching backwards, so set pos to last line and col */
++              pos.lnum = curwin->w_buffer->b_ml.ml_line_count;
++              pos.col  = STRLEN(ml_get(curwin->w_buffer->b_ml.ml_line_count));
++          }
++      }
++ 
++     }
++ 
++     start_pos = pos;
++     flags = (forward ? SEARCH_END : 0);
++ 
++     /* move to match */
++     result = searchit(curwin, curbuf, &pos, (forward ? FORWARD : BACKWARD),
++          spats[last_idx].pat, 0L, flags | SEARCH_KEEP, RE_SEARCH, 0, NULL);
++ 
++     if (!VIsual_active)
++      VIsual = start_pos;
++ 
++     p_ws = old_p_ws;
++     curwin->w_cursor = pos;
++     VIsual_active = TRUE;
++     VIsual_mode = 'v';
++ 
++     if (VIsual_active)
++     {
++      redraw_curbuf_later(INVERTED);  /* update the inversion */
++      if (*p_sel == 'e' && ltoreq(VIsual, curwin->w_cursor))
++          inc_cursor();
++     }
++ 
++ #ifdef FEAT_FOLDING
++     if (fdo_flags & FDO_SEARCH && KeyTyped)
++      foldOpenCursor();
++ #endif
++ 
++     may_start_select('c');
++ #ifdef FEAT_MOUSE
++     setmouse();
++ #endif
++ #ifdef FEAT_CLIPBOARD
++     /* Make sure the clipboard gets updated.  Needed because start and
++      * end are still the same, and the selection needs to be owned */
++     clip_star.vmode = NUL;
++ #endif
++     redraw_curbuf_later(INVERTED);
++     showmode();
++ 
++     return OK;
++ }
++ #endif /* FEAT_VISUAL */
++ 
+  #if defined(FEAT_LISP) || defined(FEAT_CINDENT) || defined(FEAT_TEXTOBJ) \
+       || defined(PROTO)
+  /*
+*** ../vim-7.3.617/src/version.c       2012-07-27 21:12:03.000000000 +0200
+--- src/version.c      2012-07-29 12:54:29.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     618,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+185. You order fast food over the Internet
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
index deffbc3893eafb773183dc592228ef7aba1e90b5..567e9718b3a0c3e08347ee0699ab6d5da2c8617d 100644 (file)
--- a/vim.spec
+++ b/vim.spec
@@ -25,7 +25,7 @@
 # curl -s ftp://ftp.vim.org/pub/editors/vim/patches/7.3/MD5SUMS | grep -vF .gz | tail -n1 | awk '{print $2}'
 
 %define                ver             7.3
-%define                patchlevel      600
+%define                patchlevel      618
 %define                rel             1
 Summary:       Vi IMproved - a Vi clone
 Summary(de.UTF-8):     VIsual editor iMproved
This page took 0.14423 seconds and 4 git commands to generate.