0
0
mirror of https://github.com/vim/vim.git synced 2025-10-03 05:14:07 -04:00

patch 8.2.0964: TextYankPost does not provide info about Visual selection

Problem:    TextYankPost does not provide info about Visual selection.
Solution:   Add the 'visual' key in v:event. (closes #6249)
This commit is contained in:
Bram Moolenaar
2020-06-12 22:09:01 +02:00
parent 6c6be9e88d
commit 37d1673ce0
4 changed files with 15 additions and 5 deletions

View File

@@ -1154,6 +1154,8 @@ TextYankPost After text has been yanked or deleted in the
register. register.
regtype Type of the register, see regtype Type of the register, see
|getregtype()|. |getregtype()|.
visual True if the operation is
performed on a |Visual| area.
Not triggered when |quote_| is used nor when Not triggered when |quote_| is used nor when
called recursively. called recursively.
It is not allowed to change the buffer text, It is not allowed to change the buffer text,

View File

@@ -928,6 +928,8 @@ yank_do_autocmd(oparg_T *oap, yankreg_T *reg)
} }
dict_add_string(v_event, "regtype", buf); dict_add_string(v_event, "regtype", buf);
dict_add_bool(v_event, "visual", oap->is_VIsual);
// Lock the dictionary and its keys // Lock the dictionary and its keys
dict_set_items_ro(v_event); dict_set_items_ro(v_event);

View File

@@ -1712,23 +1712,27 @@ func Test_TextYankPost()
norm "ayiw norm "ayiw
call assert_equal( call assert_equal(
\{'regcontents': ['foo'], 'regname': 'a', 'operator': 'y', 'regtype': 'v'}, \{'regcontents': ['foo'], 'regname': 'a', 'operator': 'y', 'regtype': 'v', 'visual': v:false},
\g:event) \g:event)
norm y_ norm y_
call assert_equal( 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) \g:event)
call feedkeys("\<C-V>y", 'x') call feedkeys("\<C-V>y", 'x')
call assert_equal( call assert_equal(
\{'regcontents': ['f'], 'regname': '', 'operator': 'y', 'regtype': "\x161"}, \{'regcontents': ['f'], 'regname': '', 'operator': 'y', 'regtype': "\x161", 'visual': v:true},
\g:event) \g:event)
norm "xciwbar norm "xciwbar
call assert_equal( call assert_equal(
\{'regcontents': ['foo'], 'regname': 'x', 'operator': 'c', 'regtype': 'v'}, \{'regcontents': ['foo'], 'regname': 'x', 'operator': 'c', 'regtype': 'v', 'visual': v:false},
\g:event) \g:event)
norm "bdiw norm "bdiw
call assert_equal( call assert_equal(
\{'regcontents': ['bar'], 'regname': 'b', 'operator': 'd', 'regtype': 'v'}, \{'regcontents': ['bar'], 'regname': 'b', 'operator': 'd', 'regtype': 'v', 'visual': v:false},
\g:event) \g:event)
call assert_equal({}, v:event) call assert_equal({}, v:event)

View File

@@ -754,6 +754,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
964,
/**/ /**/
963, 963,
/**/ /**/