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);
|
STRMOVE(ptr, oldp + col);
|
||||||
ml_replace(lnum, newp, FALSE);
|
ml_replace(lnum, newp, FALSE);
|
||||||
|
|
||||||
|
inserted_bytes(lnum, col, totlen);
|
||||||
|
|
||||||
// compute the byte offset for the last character
|
// compute the byte offset for the last character
|
||||||
first_byte_off = mb_head_off(newp, ptr - 1);
|
first_byte_off = mb_head_off(newp, ptr - 1);
|
||||||
|
|
||||||
@@ -2128,7 +2130,6 @@ do_put(
|
|||||||
++curwin->w_cursor.col;
|
++curwin->w_cursor.col;
|
||||||
else
|
else
|
||||||
curwin->w_cursor.col -= first_byte_off;
|
curwin->w_cursor.col -= first_byte_off;
|
||||||
changed_bytes(lnum, col);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@@ -658,6 +658,36 @@ func Test_prop_open_line()
|
|||||||
set bs&
|
set bs&
|
||||||
endfunc
|
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()
|
func Test_prop_clear()
|
||||||
new
|
new
|
||||||
call AddPropTypes()
|
call AddPropTypes()
|
||||||
|
@@ -735,6 +735,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 */
|
||||||
|
/**/
|
||||||
|
163,
|
||||||
/**/
|
/**/
|
||||||
162,
|
162,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user