Karsten Hopp 9aaaf6
To: vim_dev@googlegroups.com
Karsten Hopp 9aaaf6
Subject: Patch 7.3.221
Karsten Hopp 9aaaf6
Fcc: outbox
Karsten Hopp 9aaaf6
From: Bram Moolenaar <Bram@moolenaar.net>
Karsten Hopp 9aaaf6
Mime-Version: 1.0
Karsten Hopp 9aaaf6
Content-Type: text/plain; charset=UTF-8
Karsten Hopp 9aaaf6
Content-Transfer-Encoding: 8bit
Karsten Hopp 9aaaf6
------------
Karsten Hopp 9aaaf6
Karsten Hopp 9aaaf6
Patch 7.3.221
Karsten Hopp 9aaaf6
Problem:    Text from the clipboard is sometimes handled as linewise, but not
Karsten Hopp 9aaaf6
            consistently.
Karsten Hopp 9aaaf6
Solution:   Assume the text is linewise when it ends in a CR or NL.
Karsten Hopp 9aaaf6
Files:      src/gui_gtk_x11.c, src/gui_mac.c, src/ops.c, src/os_msdos.c,
Karsten Hopp 9aaaf6
            src/os_mswin.c, src/os_qnx.c, src/ui.c
Karsten Hopp 9aaaf6
Karsten Hopp 9aaaf6
Karsten Hopp 9aaaf6
*** ../mercurial/vim73/src/gui_gtk_x11.c	2011-02-25 17:10:22.000000000 +0100
Karsten Hopp 9aaaf6
--- src/gui_gtk_x11.c	2011-06-19 00:58:31.000000000 +0200
Karsten Hopp 9aaaf6
***************
Karsten Hopp 9aaaf6
*** 1173,1179 ****
Karsten Hopp 9aaaf6
      char_u	    *tmpbuf = NULL;
Karsten Hopp 9aaaf6
      guchar	    *tmpbuf_utf8 = NULL;
Karsten Hopp 9aaaf6
      int		    len;
Karsten Hopp 9aaaf6
!     int		    motion_type;
Karsten Hopp 9aaaf6
  
Karsten Hopp 9aaaf6
      if (data->selection == clip_plus.gtk_sel_atom)
Karsten Hopp 9aaaf6
  	cbd = &clip_plus;
Karsten Hopp 9aaaf6
--- 1173,1179 ----
Karsten Hopp 9aaaf6
      char_u	    *tmpbuf = NULL;
Karsten Hopp 9aaaf6
      guchar	    *tmpbuf_utf8 = NULL;
Karsten Hopp 9aaaf6
      int		    len;
Karsten Hopp 9aaaf6
!     int		    motion_type = MAUTO;
Karsten Hopp 9aaaf6
  
Karsten Hopp 9aaaf6
      if (data->selection == clip_plus.gtk_sel_atom)
Karsten Hopp 9aaaf6
  	cbd = &clip_plus;
Karsten Hopp 9aaaf6
***************
Karsten Hopp 9aaaf6
*** 1182,1188 ****
Karsten Hopp 9aaaf6
  
Karsten Hopp 9aaaf6
      text = (char_u *)data->data;
Karsten Hopp 9aaaf6
      len  = data->length;
Karsten Hopp 9aaaf6
-     motion_type = MCHAR;
Karsten Hopp 9aaaf6
  
Karsten Hopp 9aaaf6
      if (text == NULL || len <= 0)
Karsten Hopp 9aaaf6
      {
Karsten Hopp 9aaaf6
--- 1182,1187 ----
Karsten Hopp 9aaaf6
*** ../mercurial/vim73/src/gui_mac.c	2011-06-12 20:33:30.000000000 +0200
Karsten Hopp 9aaaf6
--- src/gui_mac.c	2011-06-19 00:59:07.000000000 +0200
Karsten Hopp 9aaaf6
***************
Karsten Hopp 9aaaf6
*** 4671,4677 ****
Karsten Hopp 9aaaf6
      if (flavor)
Karsten Hopp 9aaaf6
  	type = **textOfClip;
Karsten Hopp 9aaaf6
      else
Karsten Hopp 9aaaf6
! 	type = (strchr(*textOfClip, '\r') != NULL) ? MLINE : MCHAR;
Karsten Hopp 9aaaf6
  
Karsten Hopp 9aaaf6
      tempclip = lalloc(scrapSize + 1, TRUE);
Karsten Hopp 9aaaf6
      mch_memmove(tempclip, *textOfClip + flavor, scrapSize);
Karsten Hopp 9aaaf6
--- 4671,4677 ----
Karsten Hopp 9aaaf6
      if (flavor)
Karsten Hopp 9aaaf6
  	type = **textOfClip;
Karsten Hopp 9aaaf6
      else
Karsten Hopp 9aaaf6
! 	type = MAUTO;
Karsten Hopp 9aaaf6
  
Karsten Hopp 9aaaf6
      tempclip = lalloc(scrapSize + 1, TRUE);
Karsten Hopp 9aaaf6
      mch_memmove(tempclip, *textOfClip + flavor, scrapSize);
Karsten Hopp 9aaaf6
*** ../mercurial/vim73/src/ops.c	2011-04-01 16:28:33.000000000 +0200
Karsten Hopp 9aaaf6
--- src/ops.c	2011-06-19 00:59:39.000000000 +0200
Karsten Hopp 9aaaf6
***************
Karsten Hopp 9aaaf6
*** 5733,5739 ****
Karsten Hopp 9aaaf6
      }
Karsten Hopp 9aaaf6
  }
Karsten Hopp 9aaaf6
  
Karsten Hopp 9aaaf6
! /* Convert from the GUI selection string into the '*'/'+' register */
Karsten Hopp 9aaaf6
      void
Karsten Hopp 9aaaf6
  clip_yank_selection(type, str, len, cbd)
Karsten Hopp 9aaaf6
      int		type;
Karsten Hopp 9aaaf6
--- 5733,5741 ----
Karsten Hopp 9aaaf6
      }
Karsten Hopp 9aaaf6
  }
Karsten Hopp 9aaaf6
  
Karsten Hopp 9aaaf6
! /*
Karsten Hopp 9aaaf6
!  * Convert from the GUI selection string into the '*'/'+' register.
Karsten Hopp 9aaaf6
!  */
Karsten Hopp 9aaaf6
      void
Karsten Hopp 9aaaf6
  clip_yank_selection(type, str, len, cbd)
Karsten Hopp 9aaaf6
      int		type;
Karsten Hopp 9aaaf6
***************
Karsten Hopp 9aaaf6
*** 6090,6098 ****
Karsten Hopp 9aaaf6
      if (yank_type == MBLOCK)
Karsten Hopp 9aaaf6
  	yank_type = MAUTO;
Karsten Hopp 9aaaf6
  #endif
Karsten Hopp 9aaaf6
-     if (yank_type == MAUTO)
Karsten Hopp 9aaaf6
- 	yank_type = ((len > 0 && (str[len - 1] == '\n' || str[len - 1] == '\r'))
Karsten Hopp 9aaaf6
- 							     ? MLINE : MCHAR);
Karsten Hopp 9aaaf6
      str_to_reg(y_current, yank_type, str, len, block_len);
Karsten Hopp 9aaaf6
  
Karsten Hopp 9aaaf6
  # ifdef FEAT_CLIPBOARD
Karsten Hopp 9aaaf6
--- 6092,6097 ----
Karsten Hopp 9aaaf6
***************
Karsten Hopp 9aaaf6
*** 6113,6125 ****
Karsten Hopp 9aaaf6
   * is appended.
Karsten Hopp 9aaaf6
   */
Karsten Hopp 9aaaf6
      static void
Karsten Hopp 9aaaf6
! str_to_reg(y_ptr, type, str, len, blocklen)
Karsten Hopp 9aaaf6
      struct yankreg	*y_ptr;		/* pointer to yank register */
Karsten Hopp 9aaaf6
!     int			type;		/* MCHAR, MLINE or MBLOCK */
Karsten Hopp 9aaaf6
      char_u		*str;		/* string to put in register */
Karsten Hopp 9aaaf6
      long		len;		/* length of string */
Karsten Hopp 9aaaf6
      long		blocklen;	/* width of Visual block */
Karsten Hopp 9aaaf6
  {
Karsten Hopp 9aaaf6
      int		lnum;
Karsten Hopp 9aaaf6
      long	start;
Karsten Hopp 9aaaf6
      long	i;
Karsten Hopp 9aaaf6
--- 6112,6125 ----
Karsten Hopp 9aaaf6
   * is appended.
Karsten Hopp 9aaaf6
   */
Karsten Hopp 9aaaf6
      static void
Karsten Hopp 9aaaf6
! str_to_reg(y_ptr, yank_type, str, len, blocklen)
Karsten Hopp 9aaaf6
      struct yankreg	*y_ptr;		/* pointer to yank register */
Karsten Hopp 9aaaf6
!     int			yank_type;	/* MCHAR, MLINE, MBLOCK, MAUTO */
Karsten Hopp 9aaaf6
      char_u		*str;		/* string to put in register */
Karsten Hopp 9aaaf6
      long		len;		/* length of string */
Karsten Hopp 9aaaf6
      long		blocklen;	/* width of Visual block */
Karsten Hopp 9aaaf6
  {
Karsten Hopp 9aaaf6
+     int		type;			/* MCHAR, MLINE or MBLOCK */
Karsten Hopp 9aaaf6
      int		lnum;
Karsten Hopp 9aaaf6
      long	start;
Karsten Hopp 9aaaf6
      long	i;
Karsten Hopp 9aaaf6
***************
Karsten Hopp 9aaaf6
*** 6136,6141 ****
Karsten Hopp 9aaaf6
--- 6136,6147 ----
Karsten Hopp 9aaaf6
      if (y_ptr->y_array == NULL)		/* NULL means empty register */
Karsten Hopp 9aaaf6
  	y_ptr->y_size = 0;
Karsten Hopp 9aaaf6
  
Karsten Hopp 9aaaf6
+     if (yank_type == MAUTO)
Karsten Hopp 9aaaf6
+ 	type = ((len > 0 && (str[len - 1] == NL || str[len - 1] == CAR))
Karsten Hopp 9aaaf6
+ 							     ? MLINE : MCHAR);
Karsten Hopp 9aaaf6
+     else
Karsten Hopp 9aaaf6
+ 	type = yank_type;
Karsten Hopp 9aaaf6
+ 
Karsten Hopp 9aaaf6
      /*
Karsten Hopp 9aaaf6
       * Count the number of lines within the string
Karsten Hopp 9aaaf6
       */
Karsten Hopp 9aaaf6
*** ../mercurial/vim73/src/os_msdos.c	2010-12-17 18:06:00.000000000 +0100
Karsten Hopp 9aaaf6
--- src/os_msdos.c	2011-06-19 01:00:56.000000000 +0200
Karsten Hopp 9aaaf6
***************
Karsten Hopp 9aaaf6
*** 2232,2238 ****
Karsten Hopp 9aaaf6
      void
Karsten Hopp 9aaaf6
  clip_mch_request_selection(VimClipboard *cbd)
Karsten Hopp 9aaaf6
  {
Karsten Hopp 9aaaf6
!     int		type = MCHAR;
Karsten Hopp 9aaaf6
      char_u	*pAllocated = NULL;
Karsten Hopp 9aaaf6
      char_u	*pClipText = NULL;
Karsten Hopp 9aaaf6
      int		clip_data_format = 0;
Karsten Hopp 9aaaf6
--- 2232,2238 ----
Karsten Hopp 9aaaf6
      void
Karsten Hopp 9aaaf6
  clip_mch_request_selection(VimClipboard *cbd)
Karsten Hopp 9aaaf6
  {
Karsten Hopp 9aaaf6
!     int		type = MAUTO;
Karsten Hopp 9aaaf6
      char_u	*pAllocated = NULL;
Karsten Hopp 9aaaf6
      char_u	*pClipText = NULL;
Karsten Hopp 9aaaf6
      int		clip_data_format = 0;
Karsten Hopp 9aaaf6
***************
Karsten Hopp 9aaaf6
*** 2280,2293 ****
Karsten Hopp 9aaaf6
  	{
Karsten Hopp 9aaaf6
  	    clip_data_format = CF_TEXT;
Karsten Hopp 9aaaf6
  	    pClipText = pAllocated;
Karsten Hopp 9aaaf6
- 	    type = (vim_strchr((char*)pClipText, '\r') != NULL) ? MLINE : MCHAR;
Karsten Hopp 9aaaf6
  	}
Karsten Hopp 9aaaf6
  
Karsten Hopp 9aaaf6
  	else if ((pAllocated = Win16GetClipboardData(CF_OEMTEXT)) != NULL)
Karsten Hopp 9aaaf6
  	{
Karsten Hopp 9aaaf6
  	    clip_data_format = CF_OEMTEXT;
Karsten Hopp 9aaaf6
  	    pClipText = pAllocated;
Karsten Hopp 9aaaf6
- 	    type = (vim_strchr((char*)pClipText, '\r') != NULL) ? MLINE : MCHAR;
Karsten Hopp 9aaaf6
  	}
Karsten Hopp 9aaaf6
  
Karsten Hopp 9aaaf6
  	/* Did we get anything? */
Karsten Hopp 9aaaf6
--- 2280,2291 ----
Karsten Hopp 9aaaf6
*** ../mercurial/vim73/src/os_mswin.c	2011-01-17 20:08:04.000000000 +0100
Karsten Hopp 9aaaf6
--- src/os_mswin.c	2011-06-19 01:01:51.000000000 +0200
Karsten Hopp 9aaaf6
***************
Karsten Hopp 9aaaf6
*** 1410,1418 ****
Karsten Hopp 9aaaf6
      {
Karsten Hopp 9aaaf6
  	char_u *temp_clipboard;
Karsten Hopp 9aaaf6
  
Karsten Hopp 9aaaf6
! 	/* If the type is not known guess it. */
Karsten Hopp 9aaaf6
  	if (metadata.type == -1)
Karsten Hopp 9aaaf6
! 	    metadata.type = (vim_strchr(str, '\n') == NULL) ? MCHAR : MLINE;
Karsten Hopp 9aaaf6
  
Karsten Hopp 9aaaf6
  	/* Translate <CR><NL> into <NL>. */
Karsten Hopp 9aaaf6
  	temp_clipboard = crnl_to_nl(str, &str_size);
Karsten Hopp 9aaaf6
--- 1410,1418 ----
Karsten Hopp 9aaaf6
      {
Karsten Hopp 9aaaf6
  	char_u *temp_clipboard;
Karsten Hopp 9aaaf6
  
Karsten Hopp 9aaaf6
! 	/* If the type is not known detect it. */
Karsten Hopp 9aaaf6
  	if (metadata.type == -1)
Karsten Hopp 9aaaf6
! 	    metadata.type = MAUTO;
Karsten Hopp 9aaaf6
  
Karsten Hopp 9aaaf6
  	/* Translate <CR><NL> into <NL>. */
Karsten Hopp 9aaaf6
  	temp_clipboard = crnl_to_nl(str, &str_size);
Karsten Hopp 9aaaf6
*** ../mercurial/vim73/src/os_qnx.c	2010-05-15 21:22:11.000000000 +0200
Karsten Hopp 9aaaf6
--- src/os_qnx.c	2011-06-19 01:02:26.000000000 +0200
Karsten Hopp 9aaaf6
***************
Karsten Hopp 9aaaf6
*** 93,99 ****
Karsten Hopp 9aaaf6
  	    clip_length  = clip_header->length - 1;
Karsten Hopp 9aaaf6
  
Karsten Hopp 9aaaf6
  	    if( clip_text != NULL && is_type_set == FALSE )
Karsten Hopp 9aaaf6
! 		type = (strchr( clip_text, '\r' ) != NULL) ? MLINE : MCHAR;
Karsten Hopp 9aaaf6
  	}
Karsten Hopp 9aaaf6
  
Karsten Hopp 9aaaf6
  	if( (clip_text != NULL) && (clip_length > 0) )
Karsten Hopp 9aaaf6
--- 93,99 ----
Karsten Hopp 9aaaf6
  	    clip_length  = clip_header->length - 1;
Karsten Hopp 9aaaf6
  
Karsten Hopp 9aaaf6
  	    if( clip_text != NULL && is_type_set == FALSE )
Karsten Hopp 9aaaf6
! 		type = MAUTO;
Karsten Hopp 9aaaf6
  	}
Karsten Hopp 9aaaf6
  
Karsten Hopp 9aaaf6
  	if( (clip_text != NULL) && (clip_length > 0) )
Karsten Hopp 9aaaf6
*** ../mercurial/vim73/src/ui.c	2010-09-21 22:09:28.000000000 +0200
Karsten Hopp 9aaaf6
--- src/ui.c	2011-06-19 01:03:31.000000000 +0200
Karsten Hopp 9aaaf6
***************
Karsten Hopp 9aaaf6
*** 1609,1615 ****
Karsten Hopp 9aaaf6
  
Karsten Hopp 9aaaf6
  #if defined(FEAT_HANGULIN) || defined(PROTO)
Karsten Hopp 9aaaf6
      void
Karsten Hopp 9aaaf6
! push_raw_key (s, len)
Karsten Hopp 9aaaf6
      char_u  *s;
Karsten Hopp 9aaaf6
      int	    len;
Karsten Hopp 9aaaf6
  {
Karsten Hopp 9aaaf6
--- 1609,1615 ----
Karsten Hopp 9aaaf6
  
Karsten Hopp 9aaaf6
  #if defined(FEAT_HANGULIN) || defined(PROTO)
Karsten Hopp 9aaaf6
      void
Karsten Hopp 9aaaf6
! push_raw_key(s, len)
Karsten Hopp 9aaaf6
      char_u  *s;
Karsten Hopp 9aaaf6
      int	    len;
Karsten Hopp 9aaaf6
  {
Karsten Hopp 9aaaf6
***************
Karsten Hopp 9aaaf6
*** 2016,2022 ****
Karsten Hopp 9aaaf6
      long_u	*length;
Karsten Hopp 9aaaf6
      int		*format;
Karsten Hopp 9aaaf6
  {
Karsten Hopp 9aaaf6
!     int		motion_type;
Karsten Hopp 9aaaf6
      long_u	len;
Karsten Hopp 9aaaf6
      char_u	*p;
Karsten Hopp 9aaaf6
      char	**text_list = NULL;
Karsten Hopp 9aaaf6
--- 2016,2022 ----
Karsten Hopp 9aaaf6
      long_u	*length;
Karsten Hopp 9aaaf6
      int		*format;
Karsten Hopp 9aaaf6
  {
Karsten Hopp 9aaaf6
!     int		motion_type = MAUTO;
Karsten Hopp 9aaaf6
      long_u	len;
Karsten Hopp 9aaaf6
      char_u	*p;
Karsten Hopp 9aaaf6
      char	**text_list = NULL;
Karsten Hopp 9aaaf6
***************
Karsten Hopp 9aaaf6
*** 2036,2042 ****
Karsten Hopp 9aaaf6
  	*(int *)success = FALSE;
Karsten Hopp 9aaaf6
  	return;
Karsten Hopp 9aaaf6
      }
Karsten Hopp 9aaaf6
-     motion_type = MCHAR;
Karsten Hopp 9aaaf6
      p = (char_u *)value;
Karsten Hopp 9aaaf6
      len = *length;
Karsten Hopp 9aaaf6
      if (*type == vim_atom)
Karsten Hopp 9aaaf6
--- 2036,2041 ----
Karsten Hopp 9aaaf6
*** ../vim-7.3.220/src/version.c	2011-06-19 00:27:46.000000000 +0200
Karsten Hopp 9aaaf6
--- src/version.c	2011-06-19 01:03:59.000000000 +0200
Karsten Hopp 9aaaf6
***************
Karsten Hopp 9aaaf6
*** 711,712 ****
Karsten Hopp 9aaaf6
--- 711,714 ----
Karsten Hopp 9aaaf6
  {   /* Add new patch number below this line */
Karsten Hopp 9aaaf6
+ /**/
Karsten Hopp 9aaaf6
+     221,
Karsten Hopp 9aaaf6
  /**/
Karsten Hopp 9aaaf6
Karsten Hopp 9aaaf6
-- 
Karsten Hopp 9aaaf6
hundred-and-one symptoms of being an internet addict:
Karsten Hopp 9aaaf6
190. You quickly hand over your wallet, leather jacket, and car keys
Karsten Hopp 9aaaf6
     during a mugging, then proceed to beat the crap out of your
Karsten Hopp 9aaaf6
     assailant when he asks for your laptop.
Karsten Hopp 9aaaf6
Karsten Hopp 9aaaf6
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
Karsten Hopp 9aaaf6
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
Karsten Hopp 9aaaf6
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
Karsten Hopp 9aaaf6
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///