vim-patch:9.1.1868: v:register is wrong in v_: command (#36238)

Problem:  v:register is wrong in v_: command (after 9.1.1858).
Solution: Don't reset v:register for OP_COLON (zeertzjq)

related: https://github.com/vim/vim/pull/18583#issuecomment-3418030021

closes: vim/vim#18597

0124320c97

While at it, also fix using stale set_prevcount value. That only matters
when readbuf1 ends with an operator or a register, which never happens,
but it's still good to avoid using a stale value.

(cherry picked from commit 68a54bfda6)
This commit is contained in:
zeertzjq
2025-10-18 23:14:20 +08:00
committed by github-actions[bot]
parent ad172eb762
commit a4319015ee
2 changed files with 36 additions and 3 deletions

View File

@@ -659,7 +659,9 @@ func Test_v_register()
exec 'normal! "' .. v:register .. 'P'
endfunc
nnoremap <buffer> <plug>(test) :<c-u>call s:Put()<cr>
xnoremap <buffer> <plug>(test) :<c-u>call s:Put()<cr>
nmap <buffer> S <plug>(test)
xmap <buffer> S <plug>(test)
let @z = "testz\n"
let @" = "test@\n"
@@ -677,15 +679,41 @@ func Test_v_register()
let s:register = ''
call feedkeys('"zS', 'mx')
call assert_equal('z', s:register)
call assert_equal('testz', getline('.'))
let s:register = ''
call feedkeys('"zSS', 'mx')
call assert_equal('"', s:register)
call assert_equal('test@', getline('.'))
let s:register = ''
call feedkeys("\"z\<Ignore>S", 'mx')
call assert_equal('z', s:register)
call assert_equal('testz', getline('.'))
let s:register = ''
call feedkeys('"_S', 'mx')
call assert_equal('_', s:register)
let s:register = ''
call feedkeys('V"zS', 'mx')
call assert_equal('z', s:register)
call assert_equal('testz', getline('.'))
let s:register = ''
call feedkeys('V"zSS', 'mx')
call assert_equal('"', s:register)
call assert_equal('test@', getline('.'))
let s:register = ''
call feedkeys("V\"z\<Ignore>S", 'mx')
call assert_equal('z', s:register)
call assert_equal('testz', getline('.'))
let s:register = ''
call feedkeys('V"_S', 'mx')
call assert_equal('_', s:register)
let s:register = ''
normal "_ddS
call assert_equal('"', s:register) " fails before 8.2.0929