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:
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user