1
0
forked from aniani/vim

patch 8.2.3980: if 'operatorfunc' invokes an operator Visual mode is changed

Problem:    If 'operatorfunc' invokes an operator the remembered Visual mode
            may be changed. (Naohiro Ono)
Solution:   Save and restore the information for redoing the Visual area.
            (closes #9455)
This commit is contained in:
Bram Moolenaar
2022-01-02 13:05:45 +00:00
parent a6feb163f0
commit b3bd1d39e6
3 changed files with 58 additions and 27 deletions

View File

@@ -464,6 +464,10 @@ func OperatorfuncRedo(_)
let g:opfunc_count = v:count
endfunc
func Underscorize(_)
normal! '[V']r_
endfunc
func Test_normal09c_operatorfunc()
" Test redoing operatorfunc
new
@@ -477,6 +481,16 @@ func Test_normal09c_operatorfunc()
bw!
unlet g:opfunc_count
" Test redoing Visual mode
set operatorfunc=Underscorize
new
call setline(1, ['first', 'first', 'third', 'third', 'second'])
normal! 1GVjr_
normal! 5G.
normal! 3G.
call assert_equal(['_____', '_____', '_____', '_____', '______'], getline(1, '$'))
bwipe!
set operatorfunc=
endfunc