Patch 8.2.4717
Problem:    For TextYankPost v:event does not contain information about the
            operation being inclusive or not.
Solution:   Add "inclusive" to v:event. (Justn M. Keyes, Yegappan Lakshmanan,
            closes #10125)
Files:      runtime/doc/autocmd.txt, src/register.c,
            src/testdir/test_autocmd.vim


*** ../vim-8.2.4716/runtime/doc/autocmd.txt     2022-04-08 15:17:53.067952553 
+0100
--- runtime/doc/autocmd.txt     2022-04-09 11:31:59.776617172 +0100
***************
*** 1203,1216 ****
                                current buffer.  The following values of
                                |v:event| can be used to determine the operation
                                that triggered this autocmd:
                                   operator     The operation performed.
                                   regcontents  Text that was stored in the
                                                register, as a list of lines,
                                                like with: >
                                                getreg(r, 1, 1)
! <                                regname      Name of the |register| or
!                                               empty string for the unnamed
!                                               register.
                                   regtype      Type of the register, see
                                                |getregtype()|.
                                   visual       True if the operation is
--- 1205,1221 ----
                                current buffer.  The following values of
                                |v:event| can be used to determine the operation
                                that triggered this autocmd:
+                                  inclusive    TRUE if the motion is
+                                               |inclusive| else the motion is
+                                               |exclusive|.
                                   operator     The operation performed.
                                   regcontents  Text that was stored in the
                                                register, as a list of lines,
                                                like with: >
                                                getreg(r, 1, 1)
! <                                regname      Name of the register or empty
!                                               string for the unnamed
!                                               register, see |registers|.
                                   regtype      Type of the register, see
                                                |getregtype()|.
                                   visual       True if the operation is
*** ../vim-8.2.4716/src/register.c      2022-03-30 10:57:36.735346197 +0100
--- src/register.c      2022-04-09 11:31:59.776617172 +0100
***************
*** 1013,1032 ****
--- 1013,1040 ----
      list = list_alloc();
      if (list == NULL)
        return;
+ 
+     // yanked text contents
      for (n = 0; n < reg->y_size; n++)
        list_append_string(list, reg->y_array[n], -1);
      list->lv_lock = VAR_FIXED;
      (void)dict_add_list(v_event, "regcontents", list);
  
+     // register name or empty string for unnamed operation
      buf[0] = (char_u)oap->regname;
      buf[1] = NUL;
      (void)dict_add_string(v_event, "regname", buf);
  
+     // motion type: inclusive or exclusive
+     (void)dict_add_bool(v_event, "inclusive", oap->inclusive);
+ 
+     // kind of operation (yank, delete, change)
      buf[0] = get_op_char(oap->op_type);
      buf[1] = get_extra_op_char(oap->op_type);
      buf[2] = NUL;
      (void)dict_add_string(v_event, "operator", buf);
  
+     // register type
      buf[0] = NUL;
      buf[1] = NUL;
      switch (get_reg_type(oap->regname, &reglen))
***************
*** 1040,1045 ****
--- 1048,1054 ----
      }
      (void)dict_add_string(v_event, "regtype", buf);
  
+     // selection type - visual or not
      (void)dict_add_bool(v_event, "visual", oap->is_VIsual);
  
      // Lock the dictionary and its keys
*** ../vim-8.2.4716/src/testdir/test_autocmd.vim        2022-04-08 
15:17:53.075952529 +0100
--- src/testdir/test_autocmd.vim        2022-04-09 11:31:59.776617172 +0100
***************
*** 1931,1958 ****
  
    norm "ayiw
    call assert_equal(
!     \{'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', '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", 'visual': v:true},
!     \g:event)
    norm "xciwbar
    call assert_equal(
!     \{'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', 'visual': v:false},
!     \g:event)
  
    call assert_equal({}, v:event)
  
--- 1931,1978 ----
  
    norm "ayiw
    call assert_equal(
!         \ #{regcontents: ['foo'], regname: 'a', operator: 'y',
!         \   regtype: 'v', visual: v:false, inclusive: v:true},
!         \ g:event)
    norm y_
    call assert_equal(
!         \ #{regcontents: ['foo'], regname: '',  operator: 'y', regtype: 'V',
!         \   visual: v:false, inclusive: v:false},
!         \ g:event)
    norm Vy
    call assert_equal(
!         \ #{regcontents: ['foo'], regname: '',  operator: 'y', regtype: 'V',
!         \   visual: v:true, inclusive: v:true},
!         \ g:event)
    call feedkeys("\<C-V>y", 'x')
    call assert_equal(
!         \ #{regcontents: ['f'], regname: '',  operator: 'y', regtype: "\x161",
!         \   visual: v:true, inclusive: v:true},
!         \ g:event)
    norm "xciwbar
    call assert_equal(
!         \ #{regcontents: ['foo'], regname: 'x', operator: 'c', regtype: 'v',
!         \   visual: v:false, inclusive: v:true},
!         \ g:event)
    norm "bdiw
    call assert_equal(
!         \ #{regcontents: ['bar'], regname: 'b', operator: 'd', regtype: 'v',
!         \   visual: v:false, inclusive: v:true},
!         \ g:event)
! 
!   call setline(1, 'foobar')
!   " exclusive motion
!   norm $"ay0
!   call assert_equal(
!         \ #{regcontents: ['fooba'], regname: 'a', operator: 'y', regtype: 'v',
!         \   visual: v:false, inclusive: v:false},
!         \ g:event)
!   " inclusive motion
!   norm 0"ay$
!   call assert_equal(
!         \ #{regcontents: ['foobar'], regname: 'a', operator: 'y', regtype: 
'v',
!         \   visual: v:false, inclusive: v:true},
!         \ g:event)
  
    call assert_equal({}, v:event)
  
***************
*** 1965,1979 ****
      set clipboard=autoselect
      exe "norm! ggviw\<Esc>"
      call assert_equal(
!         \{'regcontents': ['foobar'], 'regname': '*', 'operator': 'y', 
'regtype': 'v', 'visual': v:true},
!         \g:event)
  
      let @+ = ''
      set clipboard=autoselectplus
      exe "norm! ggviw\<Esc>"
      call assert_equal(
!         \{'regcontents': ['foobar'], 'regname': '+', 'operator': 'y', 
'regtype': 'v', 'visual': v:true},
!         \g:event)
  
      set clipboard&vim
    endif
--- 1985,2001 ----
      set clipboard=autoselect
      exe "norm! ggviw\<Esc>"
      call assert_equal(
!           \ #{regcontents: ['foobar'], regname: '*', operator: 'y',
!           \   regtype: 'v', visual: v:true, inclusive: v:false},
!           \ g:event)
  
      let @+ = ''
      set clipboard=autoselectplus
      exe "norm! ggviw\<Esc>"
      call assert_equal(
!           \ #{regcontents: ['foobar'], regname: '+', operator: 'y',
!           \   regtype: 'v', visual: v:true, inclusive: v:false},
!           \ g:event)
  
      set clipboard&vim
    endif
*** ../vim-8.2.4716/src/version.c       2022-04-09 11:09:03.530052273 +0100
--- src/version.c       2022-04-09 11:34:54.012437995 +0100
***************
*** 748,749 ****
--- 748,751 ----
  {   /* Add new patch number below this line */
+ /**/
+     4717,
  /**/

-- 
We apologise again for the fault in the subtitles.  Those responsible for
sacking the people who have just been sacked have been sacked.
                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

 /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
///                                                                      \\\
\\\        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/20220409103814.5E7B61C0917%40moolenaar.net.

Raspunde prin e-mail lui