0
0
mirror of https://github.com/vim/vim.git synced 2025-09-25 03:54:15 -04:00

updated for version 7.4.186

Problem:    Insert in Visual mode sometimes gives incorrect results.
            (Dominique Pelle)
Solution:   Remember the original insert start position. (Christian Brabandt,
            Dominique Pelle)
This commit is contained in:
Bram Moolenaar
2014-02-22 23:03:55 +01:00
parent 631abc35df
commit b1d90a3d77
5 changed files with 23 additions and 5 deletions

View File

@@ -2643,20 +2643,20 @@ op_insert(oap, count1)
/* 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 && !bd.is_MAX)
if (oap->start.lnum == curbuf->b_op_start_orig.lnum && !bd.is_MAX)
{
if (oap->op_type == OP_INSERT
&& oap->start.col != curbuf->b_op_start.col)
&& oap->start.col != curbuf->b_op_start_orig.col)
{
oap->start.col = curbuf->b_op_start.col;
oap->start.col = curbuf->b_op_start_orig.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->end.col >= curbuf->b_op_start_orig.col)
{
oap->start.col = curbuf->b_op_start.col;
oap->start.col = curbuf->b_op_start_orig.col;
/* reset pre_textlen to the value of OP_INSERT */
pre_textlen += bd.textlen;
pre_textlen -= getviscol2(oap->start.col, oap->start.coladd)