mirror of
https://github.com/neovim/neovim.git
synced 2026-08-24 16:11:52 +00:00
vim-patch:8.2.0924: cannot save and restore a register properly
Problem: Cannot save and restore a register properly.
Solution: Add getreginfo() and make setreg() accept a dictionary. (Andy
Massimino, closes vim/vim#3370)
bb861e293e
Cherry-pick eval.txt changes for getreginfo() from:
6aa57295cf
207f009326
This commit is contained in:
@@ -294,7 +294,6 @@ func Test_setreg_basic()
|
||||
call assert_fails('call setreg(1)', 'E119:')
|
||||
call assert_fails('call setreg(1, 2, 3, 4)', 'E118:')
|
||||
call assert_fails('call setreg([], 2)', 'E730:')
|
||||
call assert_fails('call setreg(1, {})', 'E731:')
|
||||
call assert_fails('call setreg(1, 2, [])', 'E730:')
|
||||
call assert_fails('call setreg("/", ["1", "2"])', 'E883:')
|
||||
call assert_fails('call setreg("=", ["1", "2"])', 'E883:')
|
||||
|
||||
@@ -283,4 +283,76 @@ func Test_insert_small_delete()
|
||||
bwipe!
|
||||
endfunc
|
||||
|
||||
" Test for getting register info
|
||||
func Test_get_reginfo()
|
||||
enew
|
||||
call setline(1, ['foo', 'bar'])
|
||||
|
||||
exe 'norm! "zyy'
|
||||
let info = getreginfo('"')
|
||||
call assert_equal('z', info.points_to)
|
||||
call setreg('y', 'baz')
|
||||
call assert_equal('z', getreginfo('').points_to)
|
||||
call setreg('y', { 'isunnamed': v:true })
|
||||
call assert_equal('y', getreginfo('"').points_to)
|
||||
|
||||
exe '$put'
|
||||
call assert_equal(getreg('y'), getline(3))
|
||||
call setreg('', 'qux')
|
||||
call assert_equal('0', getreginfo('').points_to)
|
||||
call setreg('x', 'quux')
|
||||
call assert_equal('0', getreginfo('').points_to)
|
||||
|
||||
let info = getreginfo('')
|
||||
call assert_equal(getreg('', 1, 1), info.regcontents)
|
||||
call assert_equal(getregtype(''), info.regtype)
|
||||
|
||||
exe "norm! 0\<c-v>e" .. '"zy'
|
||||
let info = getreginfo('z')
|
||||
call assert_equal(getreg('z', 1, 1), info.regcontents)
|
||||
call assert_equal(getregtype('z'), info.regtype)
|
||||
call assert_equal(1, +info.isunnamed)
|
||||
|
||||
let info = getreginfo('"')
|
||||
call assert_equal('z', info.points_to)
|
||||
|
||||
bwipe!
|
||||
endfunc
|
||||
|
||||
" Test for restoring register with dict from getreginfo
|
||||
func Test_set_register_dict()
|
||||
enew!
|
||||
|
||||
call setreg('"', #{ regcontents: ['one', 'two'],
|
||||
\ regtype: 'V', points_to: 'z' })
|
||||
call assert_equal(['one', 'two'], getreg('"', 1, 1))
|
||||
let info = getreginfo('"')
|
||||
call assert_equal('z', info.points_to)
|
||||
call assert_equal('V', info.regtype)
|
||||
call assert_equal(1, +getreginfo('z').isunnamed)
|
||||
|
||||
call setreg('x', #{ regcontents: ['three', 'four'],
|
||||
\ regtype: 'v', isunnamed: v:true })
|
||||
call assert_equal(['three', 'four'], getreg('"', 1, 1))
|
||||
let info = getreginfo('"')
|
||||
call assert_equal('x', info.points_to)
|
||||
call assert_equal('v', info.regtype)
|
||||
call assert_equal(1, +getreginfo('x').isunnamed)
|
||||
|
||||
call setreg('y', #{ regcontents: 'five',
|
||||
\ regtype: "\<c-v>", isunnamed: v:false })
|
||||
call assert_equal("\<c-v>4", getreginfo('y').regtype)
|
||||
call assert_equal(0, +getreginfo('y').isunnamed)
|
||||
call assert_equal(['three', 'four'], getreg('"', 1, 1))
|
||||
call assert_equal('x', getreginfo('"').points_to)
|
||||
|
||||
call setreg('"', #{ regcontents: 'six' })
|
||||
call assert_equal('0', getreginfo('"').points_to)
|
||||
call assert_equal(1, +getreginfo('0').isunnamed)
|
||||
call assert_equal(['six'], getreginfo('0').regcontents)
|
||||
call assert_equal(['six'], getreginfo('"').regcontents)
|
||||
|
||||
bwipe!
|
||||
endfunc
|
||||
|
||||
" vim: shiftwidth=2 sts=2 expandtab
|
||||
|
||||
Reference in New Issue
Block a user