mirror of
https://github.com/neovim/neovim.git
synced 2026-08-27 17:41:48 +00:00
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 vim/vim#9455)
b3bd1d39e6
This commit is contained in:
@@ -406,6 +406,10 @@ func OperatorfuncRedo(_)
|
||||
let g:opfunc_count = v:count
|
||||
endfunc
|
||||
|
||||
func Underscorize(_)
|
||||
normal! '[V']r_
|
||||
endfunc
|
||||
|
||||
func Test_normal09c_operatorfunc()
|
||||
" Test redoing operatorfunc
|
||||
new
|
||||
@@ -419,6 +423,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