comparison src/testdir/test_registers.vim @ 20754:e6a5a5ef4034 v8.2.0929

patch 8.2.0929: v:register is not cleared after an operator was executed Commit: https://github.com/vim/vim/commit/cc613031b96f1cfa5a184253e745c26f1def9be4 Author: Bram Moolenaar <Bram@vim.org> Date: Sun Jun 7 21:31:18 2020 +0200 patch 8.2.0929: v:register is not cleared after an operator was executed Problem: v:register is not cleared after an operator was executed. Solution: Clear v:register after finishing an operator (Andy Massimino, closes #5305)
author Bram Moolenaar <Bram@vim.org>
date Sun, 07 Jun 2020 21:45:04 +0200
parents a672feb8fc4f
children 4bdc07beeadb
comparison
equal deleted inserted replaced
20753:661eb972cb22 20754:e6a5a5ef4034
486 call assert_equal(['six'], getreginfo('"').regcontents) 486 call assert_equal(['six'], getreginfo('"').regcontents)
487 487
488 bwipe! 488 bwipe!
489 endfunc 489 endfunc
490 490
491 func Test_v_register()
492 enew
493 call setline(1, 'nothing')
494
495 func s:Put()
496 let s:register = v:register
497 exec 'normal! "' .. v:register .. 'P'
498 endfunc
499 nnoremap <buffer> <plug>(test) :<c-u>call s:Put()<cr>
500 nmap <buffer> S <plug>(test)
501
502 let @z = "testz\n"
503 let @" = "test@\n"
504
505 let s:register = ''
506 call feedkeys('"_ddS', 'mx')
507 call assert_equal('test@', getline('.')) " fails before 8.2.0929
508 call assert_equal('"', s:register) " fails before 8.2.0929
509
510 let s:register = ''
511 call feedkeys('"zS', 'mx')
512 call assert_equal('z', s:register)
513
514 let s:register = ''
515 call feedkeys('"zSS', 'mx')
516 call assert_equal('"', s:register)
517
518 let s:register = ''
519 call feedkeys('"_S', 'mx')
520 call assert_equal('_', s:register)
521
522 let s:register = ''
523 normal "_ddS
524 call assert_equal('"', s:register) " fails before 8.2.0929
525 call assert_equal('test@', getline('.')) " fails before 8.2.0929
526
527 let s:register = ''
528 execute 'normal "z:call' "s:Put()\n"
529 call assert_equal('z', s:register)
530 call assert_equal('testz', getline('.'))
531
532 " Test operator and omap
533 let @b = 'testb'
534 func s:OpFunc(...)
535 let s:register2 = v:register
536 endfunc
537 set opfunc=s:OpFunc
538
539 normal "bg@l
540 normal S
541 call assert_equal('"', s:register) " fails before 8.2.0929
542 call assert_equal('b', s:register2)
543
544 func s:Motion()
545 let s:register1 = v:register
546 normal! l
547 endfunc
548 onoremap <buffer> Q :<c-u>call s:Motion()<cr>
549
550 normal "bg@Q
551 normal S
552 call assert_equal('"', s:register)
553 call assert_equal('b', s:register1)
554 call assert_equal('"', s:register2)
555
556 set opfunc&
557 bwipe!
558 endfunc
559
491 " vim: shiftwidth=2 sts=2 expandtab 560 " vim: shiftwidth=2 sts=2 expandtab