[vim] - patchlevel 333

Karsten Hopp karsten at fedoraproject.org
Fri Dec 23 21:29:37 UTC 2011


commit 361ac5521c3ffaa187c59b57aab93bd60c789e4d
Author: Karsten Hopp <karsten at redhat.com>
Date:   Fri Dec 23 22:30:41 2011 +0100

    - patchlevel 333

 7.3.333 |  245 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 245 insertions(+), 0 deletions(-)
---
diff --git a/7.3.333 b/7.3.333
new file mode 100644
index 0000000..974b0cd
--- /dev/null
+++ b/7.3.333
@@ -0,0 +1,245 @@
+To: vim_dev at googlegroups.com
+Subject: Patch 7.3.333
+Fcc: outbox
+From: Bram Moolenaar <Bram at moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.333
+Problem:    Using "." to repeat a Visual delete counts the size in bytes, not
+	    characters.  (Connor Lane Smith)
+Solution:   Store the virtual column numbers instead of byte positions.
+Files:	    src/normal.c
+
+
+*** ../vim-7.3.332/src/normal.c	2011-07-15 17:51:30.000000000 +0200
+--- src/normal.c	2011-10-04 19:47:14.000000000 +0200
+***************
+*** 20,26 ****
+   */
+  static int	resel_VIsual_mode = NUL;	/* 'v', 'V', or Ctrl-V */
+  static linenr_T	resel_VIsual_line_count;	/* number of lines */
+! static colnr_T	resel_VIsual_col;		/* nr of cols or end col */
+  
+  static int	restart_VIsual_select = 0;
+  #endif
+--- 20,26 ----
+   */
+  static int	resel_VIsual_mode = NUL;	/* 'v', 'V', or Ctrl-V */
+  static linenr_T	resel_VIsual_line_count;	/* number of lines */
+! static colnr_T	resel_VIsual_vcol;		/* nr of cols or end col */
+  
+  static int	restart_VIsual_select = 0;
+  #endif
+***************
+*** 1436,1442 ****
+      /* The visual area is remembered for redo */
+      static int	    redo_VIsual_mode = NUL; /* 'v', 'V', or Ctrl-V */
+      static linenr_T redo_VIsual_line_count; /* number of lines */
+!     static colnr_T  redo_VIsual_col;	    /* number of cols or end column */
+      static long	    redo_VIsual_count;	    /* count for Visual operator */
+  # ifdef FEAT_VIRTUALEDIT
+      int		    include_line_break = FALSE;
+--- 1436,1442 ----
+      /* The visual area is remembered for redo */
+      static int	    redo_VIsual_mode = NUL; /* 'v', 'V', or Ctrl-V */
+      static linenr_T redo_VIsual_line_count; /* number of lines */
+!     static colnr_T  redo_VIsual_vcol;	    /* number of cols or end column */
+      static long	    redo_VIsual_count;	    /* count for Visual operator */
+  # ifdef FEAT_VIRTUALEDIT
+      int		    include_line_break = FALSE;
+***************
+*** 1549,1570 ****
+  #ifdef FEAT_VISUAL
+  	if (redo_VIsual_busy)
+  	{
+  	    oap->start = curwin->w_cursor;
+  	    curwin->w_cursor.lnum += redo_VIsual_line_count - 1;
+  	    if (curwin->w_cursor.lnum > curbuf->b_ml.ml_line_count)
+  		curwin->w_cursor.lnum = curbuf->b_ml.ml_line_count;
+  	    VIsual_mode = redo_VIsual_mode;
+! 	    if (VIsual_mode == 'v')
+  	    {
+! 		if (redo_VIsual_line_count <= 1)
+! 		    curwin->w_cursor.col += redo_VIsual_col - 1;
+  		else
+! 		    curwin->w_cursor.col = redo_VIsual_col;
+! 	    }
+! 	    if (redo_VIsual_col == MAXCOL)
+! 	    {
+! 		curwin->w_curswant = MAXCOL;
+! 		coladvance((colnr_T)MAXCOL);
+  	    }
+  	    cap->count0 = redo_VIsual_count;
+  	    if (redo_VIsual_count != 0)
+--- 1549,1579 ----
+  #ifdef FEAT_VISUAL
+  	if (redo_VIsual_busy)
+  	{
++ 	    /* Redo of an operation on a Visual area. Use the same size from
++ 	     * redo_VIsual_line_count and redo_VIsual_vcol. */
+  	    oap->start = curwin->w_cursor;
+  	    curwin->w_cursor.lnum += redo_VIsual_line_count - 1;
+  	    if (curwin->w_cursor.lnum > curbuf->b_ml.ml_line_count)
+  		curwin->w_cursor.lnum = curbuf->b_ml.ml_line_count;
+  	    VIsual_mode = redo_VIsual_mode;
+! 	    if (redo_VIsual_vcol == MAXCOL || VIsual_mode == 'v')
+  	    {
+! 		if (VIsual_mode == 'v')
+! 		{
+! 		    if (redo_VIsual_line_count <= 1)
+! 		    {
+! 			validate_virtcol();
+! 			curwin->w_curswant =
+! 				     curwin->w_virtcol + redo_VIsual_vcol - 1;
+! 		    }
+! 		    else
+! 			curwin->w_curswant = redo_VIsual_vcol;
+! 		}
+  		else
+! 		{
+! 		    curwin->w_curswant = MAXCOL;
+! 		}
+! 		coladvance(curwin->w_curswant);
+  	    }
+  	    cap->count0 = redo_VIsual_count;
+  	    if (redo_VIsual_count != 0)
+***************
+*** 1710,1716 ****
+  		    }
+  		}
+  		else if (redo_VIsual_busy)
+! 		    oap->end_vcol = oap->start_vcol + redo_VIsual_col - 1;
+  		/*
+  		 * Correct oap->end.col and oap->start.col to be the
+  		 * upper-left and lower-right corner of the block area.
+--- 1719,1725 ----
+  		    }
+  		}
+  		else if (redo_VIsual_busy)
+! 		    oap->end_vcol = oap->start_vcol + redo_VIsual_vcol - 1;
+  		/*
+  		 * Correct oap->end.col and oap->start.col to be the
+  		 * upper-left and lower-right corner of the block area.
+***************
+*** 1735,1747 ****
+  		 */
+  		resel_VIsual_mode = VIsual_mode;
+  		if (curwin->w_curswant == MAXCOL)
+! 		    resel_VIsual_col = MAXCOL;
+! 		else if (VIsual_mode == Ctrl_V)
+! 		    resel_VIsual_col = oap->end_vcol - oap->start_vcol + 1;
+! 		else if (oap->line_count > 1)
+! 		    resel_VIsual_col = oap->end.col;
+  		else
+! 		    resel_VIsual_col = oap->end.col - oap->start.col + 1;
+  		resel_VIsual_line_count = oap->line_count;
+  	    }
+  
+--- 1744,1765 ----
+  		 */
+  		resel_VIsual_mode = VIsual_mode;
+  		if (curwin->w_curswant == MAXCOL)
+! 		    resel_VIsual_vcol = MAXCOL;
+  		else
+! 		{
+! 		    if (VIsual_mode != Ctrl_V)
+! 			getvvcol(curwin, &(oap->end),
+! 						  NULL, NULL, &oap->end_vcol);
+! 		    if (VIsual_mode == Ctrl_V || oap->line_count <= 1)
+! 		    {
+! 			if (VIsual_mode != Ctrl_V)
+! 			    getvvcol(curwin, &(oap->start),
+! 						&oap->start_vcol, NULL, NULL);
+! 			resel_VIsual_vcol = oap->end_vcol - oap->start_vcol + 1;
+! 		    }
+! 		    else
+! 			resel_VIsual_vcol = oap->end_vcol;
+! 		}
+  		resel_VIsual_line_count = oap->line_count;
+  	    }
+  
+***************
+*** 1769,1775 ****
+  		if (!redo_VIsual_busy)
+  		{
+  		    redo_VIsual_mode = resel_VIsual_mode;
+! 		    redo_VIsual_col = resel_VIsual_col;
+  		    redo_VIsual_line_count = resel_VIsual_line_count;
+  		    redo_VIsual_count = cap->count0;
+  		}
+--- 1787,1793 ----
+  		if (!redo_VIsual_busy)
+  		{
+  		    redo_VIsual_mode = resel_VIsual_mode;
+! 		    redo_VIsual_vcol = resel_VIsual_vcol;
+  		    redo_VIsual_line_count = resel_VIsual_line_count;
+  		    redo_VIsual_count = cap->count0;
+  		}
+***************
+*** 7631,7642 ****
+  	    if (VIsual_mode == 'v')
+  	    {
+  		if (resel_VIsual_line_count <= 1)
+! 		    curwin->w_cursor.col += resel_VIsual_col * cap->count0 - 1;
+  		else
+! 		    curwin->w_cursor.col = resel_VIsual_col;
+! 		check_cursor_col();
+  	    }
+! 	    if (resel_VIsual_col == MAXCOL)
+  	    {
+  		curwin->w_curswant = MAXCOL;
+  		coladvance((colnr_T)MAXCOL);
+--- 7649,7664 ----
+  	    if (VIsual_mode == 'v')
+  	    {
+  		if (resel_VIsual_line_count <= 1)
+! 		{
+! 		    validate_virtcol();
+! 		    curwin->w_curswant = curwin->w_virtcol
+! 					+ resel_VIsual_vcol * cap->count0 - 1;
+! 		}
+  		else
+! 		    curwin->w_curswant = resel_VIsual_vcol;
+! 		coladvance(curwin->w_curswant);
+  	    }
+! 	    if (resel_VIsual_vcol == MAXCOL)
+  	    {
+  		curwin->w_curswant = MAXCOL;
+  		coladvance((colnr_T)MAXCOL);
+***************
+*** 7645,7651 ****
+  	    {
+  		validate_virtcol();
+  		curwin->w_curswant = curwin->w_virtcol
+! 					 + resel_VIsual_col * cap->count0 - 1;
+  		coladvance(curwin->w_curswant);
+  	    }
+  	    else
+--- 7667,7673 ----
+  	    {
+  		validate_virtcol();
+  		curwin->w_curswant = curwin->w_virtcol
+! 					+ resel_VIsual_vcol * cap->count0 - 1;
+  		coladvance(curwin->w_curswant);
+  	    }
+  	    else
+*** ../vim-7.3.332/src/version.c	2011-10-04 18:03:43.000000000 +0200
+--- src/version.c	2011-10-04 21:05:44.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     333,
+  /**/
+
+-- 
+It was recently discovered that research causes cancer in rats.
+
+ /// Bram Moolenaar -- Bram at 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    ///


More information about the scm-commits mailing list