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$khhh hhkkcmno
:$-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 end Ypk0wgUe
:" 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 -- [email protected] -- 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 ///
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.