From: Bram Moolenaar <Bram@vim.org>
Date: Wed, 28 Mar 2012 10:59:57 +0000 (+0200)
Subject: updated for version 7.3.481
X-Git-Tag: v7.3.481
X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=61d281a4c088db09ff82bfd7178216b0c0c31536;p=vim

updated for version 7.3.481
Problem:    Changing 'virtualedit' in an operator function to "all" does not
            have the desired effect. (Aaron Bohannon)
Solution:   Save, reset and restore virtual_op when executing an operator
            function.
---

diff --git a/src/normal.c b/src/normal.c
index aa470e4f7..a7301162b 100644
--- a/src/normal.c
+++ b/src/normal.c
@@ -2279,6 +2279,7 @@ op_function(oap)
 {
 #ifdef FEAT_EVAL
     char_u	*(argv[1]);
+    int		save_virtual_op = virtual_op;
 
     if (*p_opfunc == NUL)
 	EMSG(_("E774: 'operatorfunc' is empty"));
@@ -2297,7 +2298,14 @@ op_function(oap)
 	    argv[0] = (char_u *)"line";
 	else
 	    argv[0] = (char_u *)"char";
+
+	/* Reset virtual_op so that 'virtualedit' can be changed in the
+	 * function. */
+	virtual_op = MAYBE;
+
 	(void)call_func_retnr(p_opfunc, 1, argv, FALSE);
+
+	virtual_op = save_virtual_op;
     }
 #else
     EMSG(_("E775: Eval feature not available"));
diff --git a/src/version.c b/src/version.c
index 2598aeba9..a1bd77c93 100644
--- a/src/version.c
+++ b/src/version.c
@@ -714,6 +714,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    481,
 /**/
     480,
 /**/