3fb1d0d
To: vim-dev@vim.org
3fb1d0d
Subject: Patch 7.0.141
3fb1d0d
Fcc: outbox
3fb1d0d
From: Bram Moolenaar <Bram@moolenaar.net>
3fb1d0d
Mime-Version: 1.0
3fb1d0d
Content-Type: text/plain; charset=ISO-8859-1
3fb1d0d
Content-Transfer-Encoding: 8bit
3fb1d0d
------------
3fb1d0d
3fb1d0d
Patch 7.0.141
3fb1d0d
Problem:    When pasting a while line on the command line an extra CR is added
3fb1d0d
	    literally.
3fb1d0d
Solution:   Don't add the trailing CR when pasting with the mouse.
3fb1d0d
Files:	    src/ex_getln.c, src/proto/ops.pro, src/ops.c
3fb1d0d
3fb1d0d
3fb1d0d
*** ../vim-7.0.140/src/ex_getln.c	Thu Sep 14 11:27:12 2006
3fb1d0d
--- src/ex_getln.c	Sun Oct 15 16:17:20 2006
3fb1d0d
***************
3fb1d0d
*** 86,92 ****
3fb1d0d
  static void	draw_cmdline __ARGS((int start, int len));
3fb1d0d
  static void	save_cmdline __ARGS((struct cmdline_info *ccp));
3fb1d0d
  static void	restore_cmdline __ARGS((struct cmdline_info *ccp));
3fb1d0d
! static int	cmdline_paste __ARGS((int regname, int literally));
3fb1d0d
  #if defined(FEAT_XIM) && defined(FEAT_GUI_GTK)
3fb1d0d
  static void	redrawcmd_preedit __ARGS((void));
3fb1d0d
  #endif
3fb1d0d
--- 86,92 ----
3fb1d0d
  static void	draw_cmdline __ARGS((int start, int len));
3fb1d0d
  static void	save_cmdline __ARGS((struct cmdline_info *ccp));
3fb1d0d
  static void	restore_cmdline __ARGS((struct cmdline_info *ccp));
3fb1d0d
! static int	cmdline_paste __ARGS((int regname, int literally, int remcr));
3fb1d0d
  #if defined(FEAT_XIM) && defined(FEAT_GUI_GTK)
3fb1d0d
  static void	redrawcmd_preedit __ARGS((void));
3fb1d0d
  #endif
3fb1d0d
***************
3fb1d0d
*** 1116,1122 ****
3fb1d0d
  #endif
3fb1d0d
  		if (c != ESC)	    /* use ESC to cancel inserting register */
3fb1d0d
  		{
3fb1d0d
! 		    cmdline_paste(c, i == Ctrl_R);
3fb1d0d
  
3fb1d0d
  #ifdef FEAT_EVAL
3fb1d0d
  		    /* When there was a serious error abort getting the
3fb1d0d
--- 1116,1122 ----
3fb1d0d
  #endif
3fb1d0d
  		if (c != ESC)	    /* use ESC to cancel inserting register */
3fb1d0d
  		{
3fb1d0d
! 		    cmdline_paste(c, i == Ctrl_R, FALSE);
3fb1d0d
  
3fb1d0d
  #ifdef FEAT_EVAL
3fb1d0d
  		    /* When there was a serious error abort getting the
3fb1d0d
***************
3fb1d0d
*** 1231,1246 ****
3fb1d0d
  			goto cmdline_not_changed;   /* Ignore mouse */
3fb1d0d
  # ifdef FEAT_CLIPBOARD
3fb1d0d
  		if (clip_star.available)
3fb1d0d
! 		    cmdline_paste('*', TRUE);
3fb1d0d
  		else
3fb1d0d
  # endif
3fb1d0d
! 		    cmdline_paste(0, TRUE);
3fb1d0d
  		redrawcmd();
3fb1d0d
  		goto cmdline_changed;
3fb1d0d
  
3fb1d0d
  # ifdef FEAT_DND
3fb1d0d
  	case K_DROP:
3fb1d0d
! 		cmdline_paste('~', TRUE);
3fb1d0d
  		redrawcmd();
3fb1d0d
  		goto cmdline_changed;
3fb1d0d
  # endif
3fb1d0d
--- 1231,1246 ----
3fb1d0d
  			goto cmdline_not_changed;   /* Ignore mouse */
3fb1d0d
  # ifdef FEAT_CLIPBOARD
3fb1d0d
  		if (clip_star.available)
3fb1d0d
! 		    cmdline_paste('*', TRUE, TRUE);
3fb1d0d
  		else
3fb1d0d
  # endif
3fb1d0d
! 		    cmdline_paste(0, TRUE, TRUE);
3fb1d0d
  		redrawcmd();
3fb1d0d
  		goto cmdline_changed;
3fb1d0d
  
3fb1d0d
  # ifdef FEAT_DND
3fb1d0d
  	case K_DROP:
3fb1d0d
! 		cmdline_paste('~', TRUE, FALSE);
3fb1d0d
  		redrawcmd();
3fb1d0d
  		goto cmdline_changed;
3fb1d0d
  # endif
3fb1d0d
***************
3fb1d0d
*** 2890,2898 ****
3fb1d0d
   * return FAIL for failure, OK otherwise
3fb1d0d
   */
3fb1d0d
      static int
3fb1d0d
! cmdline_paste(regname, literally)
3fb1d0d
      int regname;
3fb1d0d
      int literally;	/* Insert text literally instead of "as typed" */
3fb1d0d
  {
3fb1d0d
      long		i;
3fb1d0d
      char_u		*arg;
3fb1d0d
--- 2890,2899 ----
3fb1d0d
   * return FAIL for failure, OK otherwise
3fb1d0d
   */
3fb1d0d
      static int
3fb1d0d
! cmdline_paste(regname, literally, remcr)
3fb1d0d
      int regname;
3fb1d0d
      int literally;	/* Insert text literally instead of "as typed" */
3fb1d0d
+     int remcr;		/* remove trailing CR */
3fb1d0d
  {
3fb1d0d
      long		i;
3fb1d0d
      char_u		*arg;
3fb1d0d
***************
3fb1d0d
*** 2968,2974 ****
3fb1d0d
  	return OK;
3fb1d0d
      }
3fb1d0d
  
3fb1d0d
!     return cmdline_paste_reg(regname, literally);
3fb1d0d
  }
3fb1d0d
  
3fb1d0d
  /*
3fb1d0d
--- 2969,2975 ----
3fb1d0d
  	return OK;
3fb1d0d
      }
3fb1d0d
  
3fb1d0d
!     return cmdline_paste_reg(regname, literally, remcr);
3fb1d0d
  }
3fb1d0d
  
3fb1d0d
  /*
3fb1d0d
*** ../vim-7.0.140/src/proto/ops.pro	Sun Apr 30 20:25:07 2006
3fb1d0d
--- src/proto/ops.pro	Tue Oct 17 16:24:08 2006
3fb1d0d
***************
3fb1d0d
*** 20,26 ****
3fb1d0d
  extern int do_execreg __ARGS((int regname, int colon, int addcr));
3fb1d0d
  extern int insert_reg __ARGS((int regname, int literally));
3fb1d0d
  extern int get_spec_reg __ARGS((int regname, char_u **argp, int *allocated, int errmsg));
3fb1d0d
! extern int cmdline_paste_reg __ARGS((int regname, int literally));
3fb1d0d
  extern void adjust_clip_reg __ARGS((int *rp));
3fb1d0d
  extern int op_delete __ARGS((oparg_T *oap));
3fb1d0d
  extern int op_replace __ARGS((oparg_T *oap, int c));
3fb1d0d
--- 20,26 ----
3fb1d0d
  extern int do_execreg __ARGS((int regname, int colon, int addcr));
3fb1d0d
  extern int insert_reg __ARGS((int regname, int literally));
3fb1d0d
  extern int get_spec_reg __ARGS((int regname, char_u **argp, int *allocated, int errmsg));
3fb1d0d
! extern int cmdline_paste_reg __ARGS((int regname, int literally, int remcr));
3fb1d0d
  extern void adjust_clip_reg __ARGS((int *rp));
3fb1d0d
  extern int op_delete __ARGS((oparg_T *oap));
3fb1d0d
  extern int op_replace __ARGS((oparg_T *oap, int c));
3fb1d0d
*** ../vim-7.0.140/src/ops.c	Fri Oct  6 23:33:22 2006
3fb1d0d
--- src/ops.c	Sun Oct 15 16:43:54 2006
3fb1d0d
***************
3fb1d0d
*** 1480,1488 ****
3fb1d0d
   * return FAIL for failure, OK otherwise
3fb1d0d
   */
3fb1d0d
      int
3fb1d0d
! cmdline_paste_reg(regname, literally)
3fb1d0d
      int regname;
3fb1d0d
      int literally;	/* Insert text literally instead of "as typed" */
3fb1d0d
  {
3fb1d0d
      long	i;
3fb1d0d
  
3fb1d0d
--- 1481,1490 ----
3fb1d0d
   * return FAIL for failure, OK otherwise
3fb1d0d
   */
3fb1d0d
      int
3fb1d0d
! cmdline_paste_reg(regname, literally, remcr)
3fb1d0d
      int regname;
3fb1d0d
      int literally;	/* Insert text literally instead of "as typed" */
3fb1d0d
+     int remcr;		/* don't add trailing CR */
3fb1d0d
  {
3fb1d0d
      long	i;
3fb1d0d
  
3fb1d0d
***************
3fb1d0d
*** 1494,1501 ****
3fb1d0d
      {
3fb1d0d
  	cmdline_paste_str(y_current->y_array[i], literally);
3fb1d0d
  
3fb1d0d
! 	/* insert ^M between lines and after last line if type is MLINE */
3fb1d0d
! 	if (y_current->y_type == MLINE || i < y_current->y_size - 1)
3fb1d0d
  	    cmdline_paste_str((char_u *)"\r", literally);
3fb1d0d
  
3fb1d0d
  	/* Check for CTRL-C, in case someone tries to paste a few thousand
3fb1d0d
--- 1496,1508 ----
3fb1d0d
      {
3fb1d0d
  	cmdline_paste_str(y_current->y_array[i], literally);
3fb1d0d
  
3fb1d0d
! 	/* Insert ^M between lines and after last line if type is MLINE.
3fb1d0d
! 	 * Don't do this when "remcr" is TRUE and the next line is empty. */
3fb1d0d
! 	if (y_current->y_type == MLINE
3fb1d0d
! 		|| (i < y_current->y_size - 1
3fb1d0d
! 		    && !(remcr
3fb1d0d
! 			&& i == y_current->y_size - 2
3fb1d0d
! 			&& *y_current->y_array[i + 1] == NUL)))
3fb1d0d
  	    cmdline_paste_str((char_u *)"\r", literally);
3fb1d0d
  
3fb1d0d
  	/* Check for CTRL-C, in case someone tries to paste a few thousand
3fb1d0d
*** ../vim-7.0.140/src/version.c	Tue Oct 17 15:17:41 2006
3fb1d0d
--- src/version.c	Tue Oct 17 16:22:55 2006
3fb1d0d
***************
3fb1d0d
*** 668,669 ****
3fb1d0d
--- 668,671 ----
3fb1d0d
  {   /* Add new patch number below this line */
3fb1d0d
+ /**/
3fb1d0d
+     141,
3fb1d0d
  /**/
3fb1d0d
3fb1d0d
-- 
3fb1d0d
ERROR 047: Keyboard not found.  Press RETURN to continue.
3fb1d0d
3fb1d0d
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
3fb1d0d
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
3fb1d0d
\\\        download, build and distribute -- http://www.A-A-P.org        ///
3fb1d0d
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///