forked from aniani/vim
patch 9.0.0163: text property not adjusted for text inserted with "p"
Problem: Text property not adjusted for text inserted with "p". Solution: Adjust column and length of text properties.
This commit is contained in:
@@ -2101,6 +2101,8 @@ do_put(
|
||||
STRMOVE(ptr, oldp + col);
|
||||
ml_replace(lnum, newp, FALSE);
|
||||
|
||||
inserted_bytes(lnum, col, totlen);
|
||||
|
||||
// compute the byte offset for the last character
|
||||
first_byte_off = mb_head_off(newp, ptr - 1);
|
||||
|
||||
@@ -2128,7 +2130,6 @@ do_put(
|
||||
++curwin->w_cursor.col;
|
||||
else
|
||||
curwin->w_cursor.col -= first_byte_off;
|
||||
changed_bytes(lnum, col);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@@ -658,6 +658,36 @@ func Test_prop_open_line()
|
||||
set bs&
|
||||
endfunc
|
||||
|
||||
func Test_prop_put()
|
||||
new
|
||||
let expected = SetupOneLine() " 'xonex xtwoxx'
|
||||
|
||||
let @a = 'new'
|
||||
" insert just after the prop
|
||||
normal 03l"ap
|
||||
" insert inside the prop
|
||||
normal 02l"ap
|
||||
" insert just before the prop
|
||||
normal 0"ap
|
||||
|
||||
call assert_equal('xnewonnewenewx xtwoxx', getline(1))
|
||||
let expected[0].col += 3
|
||||
let expected[0].length += 3
|
||||
let expected[1].col += 9
|
||||
call assert_equal(expected, prop_list(1))
|
||||
|
||||
" Visually select 4 chars in the prop and put "AB" to replace them
|
||||
let @a = 'AB'
|
||||
normal 05lv3l"ap
|
||||
call assert_equal('xnewoABenewx xtwoxx', getline(1))
|
||||
let expected[0].length -= 2
|
||||
let expected[1].col -= 2
|
||||
call assert_equal(expected, prop_list(1))
|
||||
|
||||
call DeletePropTypes()
|
||||
bwipe!
|
||||
endfunc
|
||||
|
||||
func Test_prop_clear()
|
||||
new
|
||||
call AddPropTypes()
|
||||
|
@@ -735,6 +735,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
163,
|
||||
/**/
|
||||
162,
|
||||
/**/
|
||||
|
Reference in New Issue
Block a user