mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
vim-patch:8.1.0999: use register one too often and not properly tested
Problem: Use register one too often and not properly tested.
Solution: Do not always use register one when specifying a register.
(closes vim/vim#4085) Add more tests.
9d7fdd403a
This commit is contained in:
parent
f6d507f5ba
commit
5ac30eacf4
@ -1582,12 +1582,10 @@ int op_delete(oparg_T *oap)
|
|||||||
did_yank = true;
|
did_yank = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
// Put deleted text into register 1 and shift number registers if the
|
||||||
* Put deleted text into register 1 and shift number registers if the
|
// delete contains a line break, or when using a specific operator (Vi
|
||||||
* delete contains a line break, or when a regname has been specified.
|
// compatible)
|
||||||
*/
|
if (oap->motion_type == kMTLineWise || oap->line_count > 1 || oap->use_reg_one) {
|
||||||
if (oap->regname != 0 || oap->motion_type == kMTLineWise
|
|
||||||
|| oap->line_count > 1 || oap->use_reg_one) {
|
|
||||||
shift_delete_registers(is_append_register(oap->regname));
|
shift_delete_registers(is_append_register(oap->regname));
|
||||||
reg = &y_regs[1];
|
reg = &y_regs[1];
|
||||||
op_yank_reg(oap, false, reg, false);
|
op_yank_reg(oap, false, reg, false);
|
||||||
|
@ -62,7 +62,6 @@ func Test_display_registers()
|
|||||||
call assert_match('^\nType Name Content\n'
|
call assert_match('^\nType Name Content\n'
|
||||||
\ . ' c "" a\n'
|
\ . ' c "" a\n'
|
||||||
\ . ' c "0 ba\n'
|
\ . ' c "0 ba\n'
|
||||||
\ . ' c "1 b\n'
|
|
||||||
\ . ' c "a b\n'
|
\ . ' c "a b\n'
|
||||||
\ . '.*'
|
\ . '.*'
|
||||||
\ . ' c "- a\n'
|
\ . ' c "- a\n'
|
||||||
@ -85,6 +84,90 @@ func Test_display_registers()
|
|||||||
let g:clipboard = save_clipboard
|
let g:clipboard = save_clipboard
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
func Test_register_one()
|
||||||
|
" delete a line goes into register one
|
||||||
|
new
|
||||||
|
call setline(1, "one")
|
||||||
|
normal dd
|
||||||
|
call assert_equal("one\n", @1)
|
||||||
|
|
||||||
|
" delete a word does not change register one, does change "-
|
||||||
|
call setline(1, "two")
|
||||||
|
normal de
|
||||||
|
call assert_equal("one\n", @1)
|
||||||
|
call assert_equal("two", @-)
|
||||||
|
|
||||||
|
" delete a word with a register does not change register one
|
||||||
|
call setline(1, "three")
|
||||||
|
normal "ade
|
||||||
|
call assert_equal("three", @a)
|
||||||
|
call assert_equal("one\n", @1)
|
||||||
|
|
||||||
|
" delete a word with register DOES change register one with one of a list of
|
||||||
|
" operators
|
||||||
|
" %
|
||||||
|
call setline(1, ["(12)3"])
|
||||||
|
normal "ad%
|
||||||
|
call assert_equal("(12)", @a)
|
||||||
|
call assert_equal("(12)", @1)
|
||||||
|
|
||||||
|
" (
|
||||||
|
call setline(1, ["first second"])
|
||||||
|
normal $"ad(
|
||||||
|
call assert_equal("first secon", @a)
|
||||||
|
call assert_equal("first secon", @1)
|
||||||
|
|
||||||
|
" )
|
||||||
|
call setline(1, ["First Second."])
|
||||||
|
normal gg0"ad)
|
||||||
|
call assert_equal("First Second.", @a)
|
||||||
|
call assert_equal("First Second.", @1)
|
||||||
|
|
||||||
|
" `
|
||||||
|
call setline(1, ["start here."])
|
||||||
|
normal gg0fhmx0"ad`x
|
||||||
|
call assert_equal("start ", @a)
|
||||||
|
call assert_equal("start ", @1)
|
||||||
|
|
||||||
|
" /
|
||||||
|
call setline(1, ["searchX"])
|
||||||
|
exe "normal gg0\"ad/X\<CR>"
|
||||||
|
call assert_equal("search", @a)
|
||||||
|
call assert_equal("search", @1)
|
||||||
|
|
||||||
|
" ?
|
||||||
|
call setline(1, ["Ysearch"])
|
||||||
|
exe "normal gg$\"ad?Y\<CR>"
|
||||||
|
call assert_equal("Ysearc", @a)
|
||||||
|
call assert_equal("Ysearc", @1)
|
||||||
|
|
||||||
|
" n
|
||||||
|
call setline(1, ["Ynext"])
|
||||||
|
normal gg$"adn
|
||||||
|
call assert_equal("Ynex", @a)
|
||||||
|
call assert_equal("Ynex", @1)
|
||||||
|
|
||||||
|
" N
|
||||||
|
call setline(1, ["prevY"])
|
||||||
|
normal gg0"adN
|
||||||
|
call assert_equal("prev", @a)
|
||||||
|
call assert_equal("prev", @1)
|
||||||
|
|
||||||
|
" }
|
||||||
|
call setline(1, ["one", ""])
|
||||||
|
normal gg0"ad}
|
||||||
|
call assert_equal("one\n", @a)
|
||||||
|
call assert_equal("one\n", @1)
|
||||||
|
|
||||||
|
" {
|
||||||
|
call setline(1, ["", "two"])
|
||||||
|
normal 2G$"ad{
|
||||||
|
call assert_equal("\ntw", @a)
|
||||||
|
call assert_equal("\ntw", @1)
|
||||||
|
|
||||||
|
bwipe!
|
||||||
|
endfunc
|
||||||
|
|
||||||
func Test_recording_status_in_ex_line()
|
func Test_recording_status_in_ex_line()
|
||||||
norm qx
|
norm qx
|
||||||
redraw!
|
redraw!
|
||||||
|
@ -50,29 +50,33 @@ local function basic_register_test(noblock)
|
|||||||
text, stuff and some more
|
text, stuff and some more
|
||||||
some some text, stuff and some more]])
|
some some text, stuff and some more]])
|
||||||
|
|
||||||
-- deleting a word to named ("a) updates "1 (and not "-)
|
-- deleting a word to named ("a) doesn't update "1 or "-
|
||||||
feed('gg"adwj"1P^"-P')
|
feed('gg"adwj"1P^"-P')
|
||||||
expect([[
|
expect([[
|
||||||
, stuff and some more
|
, stuff and some more
|
||||||
some textsome some text, stuff and some more]])
|
some some random text
|
||||||
|
some some text, stuff and some more]])
|
||||||
|
|
||||||
-- deleting a line does update ""
|
-- deleting a line does update ""
|
||||||
feed('ggdd""P')
|
feed('ggdd""P')
|
||||||
expect([[
|
expect([[
|
||||||
, stuff and some more
|
, stuff and some more
|
||||||
some textsome some text, stuff and some more]])
|
some some random text
|
||||||
|
some some text, stuff and some more]])
|
||||||
|
|
||||||
feed('ggw<c-v>jwyggP')
|
feed('ggw<c-v>jwyggP')
|
||||||
if noblock then
|
if noblock then
|
||||||
expect([[
|
expect([[
|
||||||
stuf
|
stuf
|
||||||
me t
|
me s
|
||||||
, stuff and some more
|
, stuff and some more
|
||||||
some textsome some text, stuff and some more]])
|
some some random text
|
||||||
|
some some text, stuff and some more]])
|
||||||
else
|
else
|
||||||
expect([[
|
expect([[
|
||||||
stuf, stuff and some more
|
stuf, stuff and some more
|
||||||
me tsome textsome some text, stuff and some more]])
|
me ssome some random text
|
||||||
|
some some text, stuff and some more]])
|
||||||
end
|
end
|
||||||
|
|
||||||
-- pasting in visual does unnamed delete of visual selection
|
-- pasting in visual does unnamed delete of visual selection
|
||||||
|
Loading…
Reference in New Issue
Block a user