Skip to content

Commit

Permalink
updated for version 7.4.085
Browse files Browse the repository at this point in the history
Problem:    When inserting text in Visual block mode and moving the cursor the
            wrong text gets repeated in other lines.
Solution:   Use the '[ mark to find the start of the actually inserted text.
            (Christian Brabandt)
  • Loading branch information
brammool committed Nov 11, 2013
1 parent d6b8a52 commit 3f75e42
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 0 deletions.
25 changes: 25 additions & 0 deletions src/ops.c
Original file line number Diff line number Diff line change
Expand Up @@ -2640,6 +2640,31 @@ op_insert(oap, count1)
{
struct block_def bd2;

/* The user may have moved the cursor before inserting something, try
* to adjust the block for that. */
if (oap->start.lnum == curbuf->b_op_start.lnum)
{
if (oap->op_type == OP_INSERT
&& oap->start.col != curbuf->b_op_start.col)
{
oap->start.col = curbuf->b_op_start.col;
pre_textlen -= getviscol2(oap->start.col, oap->start.coladd)
- oap->start_vcol;
oap->start_vcol = getviscol2(oap->start.col, oap->start.coladd);
}
else if (oap->op_type == OP_APPEND
&& oap->end.col >= curbuf->b_op_start.col)
{
oap->start.col = curbuf->b_op_start.col;
/* reset pre_textlen to the value of OP_INSERT */
pre_textlen += bd.textlen;
pre_textlen -= getviscol2(oap->start.col, oap->start.coladd)
- oap->start_vcol;
oap->start_vcol = getviscol2(oap->start.col, oap->start.coladd);
oap->op_type = OP_INSERT;
}
}

/*
* Spaces and tabs in the indent may have changed to other spaces and
* tabs. Get the starting column again and correct the length.
Expand Down
9 changes: 9 additions & 0 deletions src/testdir/test39.in
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,10 @@ Gllllkkklllrq
:" Test block-change
G$khhhhhkkcmno
:$-4,$w! test.out
:" Test block-insert using cursor keys for movement
/^aaaa/
:exe ":norm! l\<C-V>jjjlllI\<Right>\<Right> \<Esc>"
:/^aa/,/^$/w >> test.out
:" gUe must uppercase a whole word, also when � changes to SS
Gothe youtu�euu endYpk0wgUe
:" gUfx must uppercase until x, inclusive.
Expand All @@ -40,6 +44,11 @@ G3o987652k02l2jr
:qa!
ENDTEST

aaaaaa
bbbbbb
cccccc
dddddd

abcdefghijklm
abcdefghijklm
abcdefghijklm
Expand Down
Binary file modified src/testdir/test39.ok
Binary file not shown.
2 changes: 2 additions & 0 deletions src/version.c
Original file line number Diff line number Diff line change
Expand Up @@ -738,6 +738,8 @@ static char *(features[]) =

static int included_patches[] =
{ /* Add new patch number below this line */
/**/
85,
/**/
84,
/**/
Expand Down

0 comments on commit 3f75e42

Please sign in to comment.