Blob Blame History Raw
To: vim_dev@googlegroups.com
Subject: Patch 7.4.085
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
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\<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.
***************
*** 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    ///