To: vim_dev@googlegroups.com
Subject: Patch 7.3.395
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.3.395 (after 7.3.251)
Problem:    "dv?bar" in the last line deletes too much and breaks undo.
Solution:   Only adjust the cursor position when it's after the last line of
	    the buffer.  Add a test. (Christian Brabandt)
Files:	    src/ops.c, src/testdir/test43.in, src/testdir/test43.ok


*** ../vim-7.3.394/src/ops.c	2011-09-21 17:33:49.000000000 +0200
--- src/ops.c	2012-01-10 13:28:05.000000000 +0100
***************
*** 1961,1968 ****
  		/* Special case: gH<Del> deletes the last line. */
  		del_lines(1L, FALSE);
  		curwin->w_cursor = curpos;	/* restore curwin->w_cursor */
! 		if (curwin->w_cursor.lnum > 1)
! 		    --curwin->w_cursor.lnum;
  	    }
  	    else
  	    {
--- 1962,1969 ----
  		/* Special case: gH<Del> deletes the last line. */
  		del_lines(1L, FALSE);
  		curwin->w_cursor = curpos;	/* restore curwin->w_cursor */
! 		if (curwin->w_cursor.lnum > curbuf->b_ml.ml_line_count)
! 		    curwin->w_cursor.lnum = curbuf->b_ml.ml_line_count;
  	    }
  	    else
  	    {
***************
*** 4434,4440 ****
  #endif
  
  /*
!  * implementation of the format operator 'gq'
   */
      void
  op_format(oap, keep_cursor)
--- 4435,4441 ----
  #endif
  
  /*
!  * Implementation of the format operator 'gq'.
   */
      void
  op_format(oap, keep_cursor)
*** ../vim-7.3.394/src/testdir/test43.in	2010-08-15 21:57:29.000000000 +0200
--- src/testdir/test43.in	2012-01-10 13:41:13.000000000 +0100
***************
*** 13,19 ****
  x:set magic
  /\v(a)(b)\2\1\1/e
  x/\V[ab]\(\[xy]\)\1
! x:?^1?,$w! test.out
  :qa!
  ENDTEST
  
--- 13,23 ----
  x:set magic
  /\v(a)(b)\2\1\1/e
  x/\V[ab]\(\[xy]\)\1
! x:$
! :set undolevels=100
! dv?bar?
! Yup:"
! :?^1?,$w! test.out
  :qa!
  ENDTEST
  
***************
*** 25,27 ****
--- 29,33 ----
  6 x ^aa$ x
  7 (a)(b) abbaa
  8 axx [ab]xx
+ 9 foobar
+ 
*** ../vim-7.3.394/src/testdir/test43.ok	2010-08-15 21:57:29.000000000 +0200
--- src/testdir/test43.ok	2012-01-10 13:42:39.000000000 +0100
***************
*** 6,8 ****
--- 6,11 ----
  6 x aa$ x
  7 (a)(b) abba
  8 axx ab]xx
+ 9 foobar
+ 9 foo
+ 
*** ../vim-7.3.394/src/version.c	2012-01-10 12:42:05.000000000 +0100
--- src/version.c	2012-01-10 13:30:40.000000000 +0100
***************
*** 716,717 ****
--- 716,719 ----
  {   /* Add new patch number below this line */
+ /**/
+     395,
  /**/

-- 
The Law, in its majestic equality, forbids the rich, as well as the
poor, to sleep under the bridges, to beg in the streets, and to steal
bread.                       -- Anatole France

 /// 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    ///
