Mercurial > vim
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 |