[packages/vim] - up to 7.3.618
arekm
arekm at pld-linux.org
Thu Aug 2 09:48:33 CEST 2012
commit 46534d20411fb72b2f3b3eefc9aa7623dc9848a9
Author: Arkadiusz Miśkiewicz <arekm at maven.pl>
Date: Thu Aug 2 09:48:27 2012 +0200
- up to 7.3.618
7.3.601 | 51 ++++++++
7.3.602 | 55 +++++++++
7.3.603 | 370 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
7.3.604 | 60 ++++++++++
7.3.605 | 86 ++++++++++++++
7.3.606 | 76 ++++++++++++
7.3.607 | 56 +++++++++
7.3.608 | 119 +++++++++++++++++++
7.3.609 | 251 +++++++++++++++++++++++++++++++++++++++
7.3.610 | 400 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
7.3.611 | 58 +++++++++
7.3.612 | 83 +++++++++++++
7.3.613 | 149 ++++++++++++++++++++++++
7.3.614 | 176 ++++++++++++++++++++++++++++
7.3.615 | 107 +++++++++++++++++
7.3.616 | 46 ++++++++
7.3.617 | 65 +++++++++++
7.3.618 | 367 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
vim.spec | 2 +-
19 files changed, 2576 insertions(+), 1 deletion(-)
---
diff --git a/7.3.601 b/7.3.601
new file mode 100644
index 0000000..b61a933
--- /dev/null
+++ b/7.3.601
@@ -0,0 +1,51 @@
+To: vim_dev at googlegroups.com
+Subject: Patch 7.3.601
+Fcc: outbox
+From: Bram Moolenaar <Bram at 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 at 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
index 0000000..fd5f3cf
--- /dev/null
+++ b/7.3.602
@@ -0,0 +1,55 @@
+To: vim_dev at googlegroups.com
+Subject: Patch 7.3.602
+Fcc: outbox
+From: Bram Moolenaar <Bram at 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 at 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
index 0000000..00a024b
--- /dev/null
+++ b/7.3.603
@@ -0,0 +1,370 @@
+To: vim_dev at googlegroups.com
+Subject: Patch 7.3.603
+Fcc: outbox
+From: Bram Moolenaar <Bram at 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:$-5,$w! test.out
+ :delfunc Table
+ :delfunc Compute
+ :delfunc Expr1
+--- 59,68 ----
+ ---*---
+ (one
+ (two
+! [(one again: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 at 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
index 0000000..f7e63bd
--- /dev/null
+++ b/7.3.604
@@ -0,0 +1,60 @@
+To: vim_dev at googlegroups.com
+Subject: Patch 7.3.604
+Fcc: outbox
+From: Bram Moolenaar <Bram at 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 at 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
index 0000000..7033825
--- /dev/null
+++ b/7.3.605
@@ -0,0 +1,86 @@
+To: vim_dev at googlegroups.com
+Subject: Patch 7.3.605
+Fcc: outbox
+From: Bram Moolenaar <Bram at 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 at 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
index 0000000..2296653
--- /dev/null
+++ b/7.3.606
@@ -0,0 +1,76 @@
+To: vim_dev at googlegroups.com
+Subject: Patch 7.3.606
+Fcc: outbox
+From: Bram Moolenaar <Bram at 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 at 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
index 0000000..4dbf559
--- /dev/null
+++ b/7.3.607
@@ -0,0 +1,56 @@
+To: vim_dev at googlegroups.com
+Subject: Patch 7.3.607
+Fcc: outbox
+From: Bram Moolenaar <Bram at 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 at 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
index 0000000..148bc49
--- /dev/null
+++ b/7.3.608
@@ -0,0 +1,119 @@
+To: vim_dev at googlegroups.com
+Subject: Patch 7.3.608
+Fcc: outbox
+From: Bram Moolenaar <Bram at 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 at 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
index 0000000..ed731f5
--- /dev/null
+++ b/7.3.609
@@ -0,0 +1,251 @@
+To: vim_dev at googlegroups.com
+Subject: Patch 7.3.609
+Fcc: outbox
+From: Bram Moolenaar <Bram at 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"
++ :w
++ :e Xdir1/dir2/bar.a
++ i#include "baz.a"
++ :w
++ :e Xdir1/dir2/baz.a
++ i#include "foo.a"
++ :w
++ :e Xbase.a
++ :set path=Xdir1/dir2
++ i#include <foo.a>
++ :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/
++ :w
++ :e Xdir1/dir2/bar.b
++ i%inc /baz/
++ :w
++ :e Xdir1/dir2/baz.b
++ i%inc /foo/
++ :w
++ :e Xbase.b
++ :set path=Xdir1/dir2
++ i%inc /foo/
++ :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
++ :w
++ :e Xdir1/dir2/bar.c
++ i%inc baz.c
++ :w
++ :e Xdir1/dir2/baz.c
++ i%inc foo.c
++ :w
++ :e Xdir1/dir2/FALSE.c
++ i%inc foo.c
++ :w
++ :e Xbase.c
++ :set path=Xdir1/dir2
++ i%inc FALSE.c foo.c
++ :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 at 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
index 0000000..5e48837
--- /dev/null
+++ b/7.3.610
@@ -0,0 +1,400 @@
+To: vim_dev at googlegroups.com
+Subject: Patch 7.3.610
+Fcc: outbox
+From: Bram Moolenaar <Bram at 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/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 at 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
index 0000000..5e366a7
--- /dev/null
+++ b/7.3.611
@@ -0,0 +1,58 @@
+To: vim_dev at googlegroups.com
+Subject: Patch 7.3.611
+Fcc: outbox
+From: Bram Moolenaar <Bram at 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 at 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
index 0000000..7b2207e
--- /dev/null
+++ b/7.3.612
@@ -0,0 +1,83 @@
+To: vim_dev at googlegroups.com
+Subject: Patch 7.3.612
+Fcc: outbox
+From: Bram Moolenaar <Bram at 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
++ ENDTEST
++
++ /* abc def ghi jkl
++ * mno pqr stu
++ */
++
++ STARTTEST
+ /^#/
+ :setl tw=12 fo=tqnc comments=:#
+ A foobar
+*** ../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 at 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
index 0000000..520e87c
--- /dev/null
+++ b/7.3.613
@@ -0,0 +1,149 @@
+To: vim_dev at googlegroups.com
+Subject: Patch 7.3.613
+Fcc: outbox
+From: Bram Moolenaar <Bram at 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 at home.wife" and refer to your
+ children as "forked processes."
+
+ /// Bram Moolenaar -- Bram at 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
index 0000000..87d7a45
--- /dev/null
+++ b/7.3.614
@@ -0,0 +1,176 @@
+To: vim_dev at googlegroups.com
+Subject: Patch 7.3.614
+Fcc: outbox
+From: Bram Moolenaar <Bram at 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 at 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
index 0000000..96f6885
--- /dev/null
+++ b/7.3.615
@@ -0,0 +1,107 @@
+To: vim_dev at googlegroups.com
+Subject: Patch 7.3.615
+Fcc: outbox
+From: Bram Moolenaar <Bram at 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 at 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
index 0000000..5898eaf
--- /dev/null
+++ b/7.3.616
@@ -0,0 +1,46 @@
+To: vim_dev at googlegroups.com
+Subject: Patch 7.3.616
+Fcc: outbox
+From: Bram Moolenaar <Bram at 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 at 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
index 0000000..48062cd
--- /dev/null
+++ b/7.3.617
@@ -0,0 +1,65 @@
+To: vim_dev at googlegroups.com
+Subject: Patch 7.3.617
+Fcc: outbox
+From: Bram Moolenaar <Bram at 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 at 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
index 0000000..d0cc9c6
--- /dev/null
+++ b/7.3.618
@@ -0,0 +1,367 @@
+To: vim_dev at googlegroups.com
+Subject: Patch 7.3.618
+Fcc: outbox
+From: Bram Moolenaar <Bram at 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 at 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/vim.spec b/vim.spec
index deffbc3..567e971 100644
--- 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
More information about the pld-cvs-commit
mailing list