summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2020-06-12 22:09:01 +0200
committerBram Moolenaar <Bram@vim.org>2020-06-12 22:09:01 +0200
commit37d1673ce007c46ec2338f3236ae1b7b0324bd25 (patch)
tree1d6d8b2f3ba2a2965ab3a3052056960b497322c6
parent6c6be9e88d72a60ee279ccad73d018c534b71d66 (diff)
patch 8.2.0964: TextYankPost does not provide info about Visual selectionv8.2.0964
Problem: TextYankPost does not provide info about Visual selection. Solution: Add the 'visual' key in v:event. (closes #6249)
-rw-r--r--runtime/doc/autocmd.txt2
-rw-r--r--src/register.c2
-rw-r--r--src/testdir/test_autocmd.vim14
-rw-r--r--src/version.c2
4 files changed, 15 insertions, 5 deletions
diff --git a/runtime/doc/autocmd.txt b/runtime/doc/autocmd.txt
index 613dd8561c..5713119cd9 100644
--- a/runtime/doc/autocmd.txt
+++ b/runtime/doc/autocmd.txt
@@ -1154,6 +1154,8 @@ TextYankPost After text has been yanked or deleted in the
register.
regtype Type of the register, see
|getregtype()|.
+ visual True if the operation is
+ performed on a |Visual| area.
Not triggered when |quote_| is used nor when
called recursively.
It is not allowed to change the buffer text,
diff --git a/src/register.c b/src/register.c
index f89a530b44..3968b07fb4 100644
--- a/src/register.c
+++ b/src/register.c
@@ -928,6 +928,8 @@ yank_do_autocmd(oparg_T *oap, yankreg_T *reg)
}
dict_add_string(v_event, "regtype", buf);
+ dict_add_bool(v_event, "visual", oap->is_VIsual);
+
// Lock the dictionary and its keys
dict_set_items_ro(v_event);
diff --git a/src/testdir/test_autocmd.vim b/src/testdir/test_autocmd.vim
index 9ac7070057..cd3559e1bc 100644
--- a/src/testdir/test_autocmd.vim
+++ b/src/testdir/test_autocmd.vim
@@ -1712,23 +1712,27 @@ func Test_TextYankPost()
norm "ayiw
call assert_equal(
- \{'regcontents': ['foo'], 'regname': 'a', 'operator': 'y', 'regtype': 'v'},
+ \{'regcontents': ['foo'], 'regname': 'a', 'operator': 'y', 'regtype': 'v', 'visual': v:false},
\g:event)
norm y_
call assert_equal(
- \{'regcontents': ['foo'], 'regname': '', 'operator': 'y', 'regtype': 'V'},
+ \{'regcontents': ['foo'], 'regname': '', 'operator': 'y', 'regtype': 'V', 'visual': v:false},
+ \g:event)
+ norm Vy
+ call assert_equal(
+ \{'regcontents': ['foo'], 'regname': '', 'operator': 'y', 'regtype': 'V', 'visual': v:true},
\g:event)
call feedkeys("\<C-V>y", 'x')
call assert_equal(
- \{'regcontents': ['f'], 'regname': '', 'operator': 'y', 'regtype': "\x161"},
+ \{'regcontents': ['f'], 'regname': '', 'operator': 'y', 'regtype': "\x161", 'visual': v:true},
\g:event)
norm "xciwbar
call assert_equal(
- \{'regcontents': ['foo'], 'regname': 'x', 'operator': 'c', 'regtype': 'v'},
+ \{'regcontents': ['foo'], 'regname': 'x', 'operator': 'c', 'regtype': 'v', 'visual': v:false},
\g:event)
norm "bdiw
call assert_equal(
- \{'regcontents': ['bar'], 'regname': 'b', 'operator': 'd', 'regtype': 'v'},
+ \{'regcontents': ['bar'], 'regname': 'b', 'operator': 'd', 'regtype': 'v', 'visual': v:false},
\g:event)
call assert_equal({}, v:event)
diff --git a/src/version.c b/src/version.c
index 1a2b7050b3..25a096274f 100644
--- a/src/version.c
+++ b/src/version.c
@@ -755,6 +755,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 964,
+/**/
963,
/**/
962,