diff --git a/7.4.085 b/7.4.085 new file mode 100644 index 0000000..a6e9a80 --- /dev/null +++ b/7.4.085 @@ -0,0 +1,118 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.085 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.085 +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) +Files: src/ops.c, src/testdir/test39.in, src/testdir/test39.ok + + +*** ../vim-7.4.084/src/ops.c 2013-11-05 07:12:59.000000000 +0100 +--- src/ops.c 2013-11-11 01:23:14.000000000 +0100 +*************** +*** 2640,2645 **** +--- 2640,2670 ---- + { + 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. +*** ../vim-7.4.084/src/testdir/test39.in 2013-11-04 01:41:11.000000000 +0100 +--- src/testdir/test39.in 2013-11-11 01:20:51.000000000 +0100 +*************** +*** 19,24 **** +--- 19,28 ---- + :" Test block-change + G$khhhhhkkcmno + :$-4,$w! test.out ++ :" Test block-insert using cursor keys for movement ++ /^aaaa/ ++ :exe ":norm! l\jjjlllI\\ \" ++ :/^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. +*************** +*** 40,45 **** +--- 44,54 ---- + :qa! + ENDTEST + ++ aaaaaa ++ bbbbbb ++ cccccc ++ dddddd ++ + abcdefghijklm + abcdefghijklm + abcdefghijklm +*** ../vim-7.4.084/src/testdir/test39.ok 2013-11-04 01:41:11.000000000 +0100 +--- src/testdir/test39.ok 2013-11-11 01:20:51.000000000 +0100 +*************** +*** 3,8 **** +--- 3,13 ---- + axyzqqqqef mno ghijklm + axyzqqqqefgmnoklm + abcdqqqqijklm ++ aaa aaa ++ bbb bbb ++ ccc ccc ++ ddd ddd ++ + the YOUTUSSEUU end + - yOUSSTUSSEXu - + THE YOUTUSSEUU END +*** ../vim-7.4.084/src/version.c 2013-11-11 01:05:43.000000000 +0100 +--- src/version.c 2013-11-11 01:18:01.000000000 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 85, + /**/ + +-- +SOLDIER: What? Ridden on a horse? +ARTHUR: Yes! +SOLDIER: You're using coconuts! + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org ///