mirror of
https://github.com/vim/vim.git
synced 2025-07-26 11:04:33 -04:00
patch 8.2.1954: Vim9: not all command modifiers are tested
Problem: Vim9: not all command modifiers are tested. Solution: Add tests for "keep" modifiers. Fix that marks are lost even though ":lockmarks" is used.
This commit is contained in:
parent
631e8f9345
commit
f65b35b446
@ -1254,6 +1254,16 @@ do_filter(
|
|||||||
if (read_linecount >= linecount)
|
if (read_linecount >= linecount)
|
||||||
// move all marks from old lines to new lines
|
// move all marks from old lines to new lines
|
||||||
mark_adjust(line1, line2, linecount, 0L);
|
mark_adjust(line1, line2, linecount, 0L);
|
||||||
|
else if (save_cmod_flags & CMOD_LOCKMARKS)
|
||||||
|
{
|
||||||
|
// Move marks from the lines below the new lines down by
|
||||||
|
// the number of lines lost.
|
||||||
|
// Move marks from the lines that will be deleted to the
|
||||||
|
// new lines and below.
|
||||||
|
mark_adjust(line2 + 1, (linenr_T)MAXLNUM,
|
||||||
|
linecount - read_linecount, 0L);
|
||||||
|
mark_adjust(line1, line2, linecount, 0L);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// move marks from old lines to new lines, delete marks
|
// move marks from old lines to new lines, delete marks
|
||||||
|
@ -439,13 +439,42 @@ def Test_command_modifiers_keep()
|
|||||||
DoTest(false, true, true)
|
DoTest(false, true, true)
|
||||||
DoTest(true, true, true)
|
DoTest(true, true, true)
|
||||||
set cpo&vim
|
set cpo&vim
|
||||||
|
|
||||||
|
new
|
||||||
|
setline(1, ['one', 'two', 'three', 'four'])
|
||||||
|
assert_equal(4, line("$"))
|
||||||
|
normal 1Gma
|
||||||
|
normal 2Gmb
|
||||||
|
normal 3Gmc
|
||||||
|
lockmarks :1,2!wc
|
||||||
|
# line is deleted, marks don't move
|
||||||
|
assert_equal(3, line("$"))
|
||||||
|
assert_equal('four', getline(3))
|
||||||
|
assert_equal(1, line("'a"))
|
||||||
|
assert_equal(2, line("'b"))
|
||||||
|
assert_equal(3, line("'c"))
|
||||||
|
quit!
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# TODO
|
edit Xone
|
||||||
# lockmarks
|
edit Xtwo
|
||||||
# keepalt
|
assert_equal('Xone', expand('#'))
|
||||||
# keeppatterns
|
keepalt edit Xthree
|
||||||
# keepjumps
|
assert_equal('Xone', expand('#'))
|
||||||
|
|
||||||
|
normal /a*b*
|
||||||
|
assert_equal('a*b*', histget("search"))
|
||||||
|
keeppatterns normal /c*d*
|
||||||
|
assert_equal('a*b*', histget("search"))
|
||||||
|
|
||||||
|
new
|
||||||
|
setline(1, range(10))
|
||||||
|
:10
|
||||||
|
normal gg
|
||||||
|
assert_equal(10, getpos("''")[1])
|
||||||
|
keepjumps normal 5G
|
||||||
|
assert_equal(10, getpos("''")[1])
|
||||||
|
quit!
|
||||||
enddef
|
enddef
|
||||||
|
|
||||||
def Test_command_modifier_other()
|
def Test_command_modifier_other()
|
||||||
|
@ -750,6 +750,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
1954,
|
||||||
/**/
|
/**/
|
||||||
1953,
|
1953,
|
||||||
/**/
|
/**/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user