]> granicus.if.org Git - vim/commitdiff
updated for version 7.3.221 v7.3.221
authorBram Moolenaar <Bram@vim.org>
Sat, 18 Jun 2011 23:14:29 +0000 (01:14 +0200)
committerBram Moolenaar <Bram@vim.org>
Sat, 18 Jun 2011 23:14:29 +0000 (01:14 +0200)
Problem:    Text from the clipboard is sometimes handled as linewise, but not
            consistently.
Solution:   Assume the text is linewise when it ends in a CR or NL.

src/gui_gtk_x11.c
src/gui_mac.c
src/ops.c
src/os_msdos.c
src/os_mswin.c
src/os_qnx.c
src/ui.c
src/version.c

index 0454afb7b7a552b9c501421253c229d7a391ed46..77be9767b6d07da7ab2d3fc521ed8be53ce536e3 100644 (file)
@@ -1173,7 +1173,7 @@ selection_received_cb(GtkWidget           *widget UNUSED,
     char_u         *tmpbuf = NULL;
     guchar         *tmpbuf_utf8 = NULL;
     int                    len;
-    int                    motion_type;
+    int                    motion_type = MAUTO;
 
     if (data->selection == clip_plus.gtk_sel_atom)
        cbd = &clip_plus;
@@ -1182,7 +1182,6 @@ selection_received_cb(GtkWidget           *widget UNUSED,
 
     text = (char_u *)data->data;
     len  = data->length;
-    motion_type = MCHAR;
 
     if (text == NULL || len <= 0)
     {
index 2c3356248737ed3952cfdd65b08045ab7885d185..0a8b0bcc533d7864e265289e7592d17b5e02312a 100644 (file)
@@ -4671,7 +4671,7 @@ clip_mch_request_selection(VimClipboard *cbd)
     if (flavor)
        type = **textOfClip;
     else
-       type = (strchr(*textOfClip, '\r') != NULL) ? MLINE : MCHAR;
+       type = MAUTO;
 
     tempclip = lalloc(scrapSize + 1, TRUE);
     mch_memmove(tempclip, *textOfClip + flavor, scrapSize);
index c41f84456bd9dcc83bacd3557e8b8db601da0c20..8c235220e5e7c8c9b1a73275d26ae96502d863bd 100644 (file)
--- a/src/ops.c
+++ b/src/ops.c
@@ -5733,7 +5733,9 @@ clip_get_selection(cbd)
     }
 }
 
-/* Convert from the GUI selection string into the '*'/'+' register */
+/*
+ * Convert from the GUI selection string into the '*'/'+' register.
+ */
     void
 clip_yank_selection(type, str, len, cbd)
     int                type;
@@ -6090,9 +6092,6 @@ write_reg_contents_ex(name, str, maxlen, must_append, yank_type, block_len)
     if (yank_type == MBLOCK)
        yank_type = MAUTO;
 #endif
-    if (yank_type == MAUTO)
-       yank_type = ((len > 0 && (str[len - 1] == '\n' || str[len - 1] == '\r'))
-                                                            ? MLINE : MCHAR);
     str_to_reg(y_current, yank_type, str, len, block_len);
 
 # ifdef FEAT_CLIPBOARD
@@ -6113,13 +6112,14 @@ write_reg_contents_ex(name, str, maxlen, must_append, yank_type, block_len)
  * is appended.
  */
     static void
-str_to_reg(y_ptr, type, str, len, blocklen)
+str_to_reg(y_ptr, yank_type, str, len, blocklen)
     struct yankreg     *y_ptr;         /* pointer to yank register */
-    int                        type;           /* MCHAR, MLINE or MBLOCK */
+    int                        yank_type;      /* MCHAR, MLINE, MBLOCK, MAUTO */
     char_u             *str;           /* string to put in register */
     long               len;            /* length of string */
     long               blocklen;       /* width of Visual block */
 {
+    int                type;                   /* MCHAR, MLINE or MBLOCK */
     int                lnum;
     long       start;
     long       i;
@@ -6136,6 +6136,12 @@ str_to_reg(y_ptr, type, str, len, blocklen)
     if (y_ptr->y_array == NULL)                /* NULL means empty register */
        y_ptr->y_size = 0;
 
+    if (yank_type == MAUTO)
+       type = ((len > 0 && (str[len - 1] == NL || str[len - 1] == CAR))
+                                                            ? MLINE : MCHAR);
+    else
+       type = yank_type;
+
     /*
      * Count the number of lines within the string
      */
index 1b52d72c4b592576505d03fd8cfa521913714059..3449d23b9b5cd4ca6aba819fec57cb7713613764 100644 (file)
@@ -2232,7 +2232,7 @@ clip_mch_lose_selection(VimClipboard *cbd)
     void
 clip_mch_request_selection(VimClipboard *cbd)
 {
-    int                type = MCHAR;
+    int                type = MAUTO;
     char_u     *pAllocated = NULL;
     char_u     *pClipText = NULL;
     int                clip_data_format = 0;
@@ -2280,14 +2280,12 @@ clip_mch_request_selection(VimClipboard *cbd)
        {
            clip_data_format = CF_TEXT;
            pClipText = pAllocated;
-           type = (vim_strchr((char*)pClipText, '\r') != NULL) ? MLINE : MCHAR;
        }
 
        else if ((pAllocated = Win16GetClipboardData(CF_OEMTEXT)) != NULL)
        {
            clip_data_format = CF_OEMTEXT;
            pClipText = pAllocated;
-           type = (vim_strchr((char*)pClipText, '\r') != NULL) ? MLINE : MCHAR;
        }
 
        /* Did we get anything? */
index 8be2d40afcf2a81454e94afae01901252256aef6..1a6ccb5c984a9b6570ae7ef0a0aabf6f485a06f4 100644 (file)
@@ -1410,9 +1410,9 @@ clip_mch_request_selection(VimClipboard *cbd)
     {
        char_u *temp_clipboard;
 
-       /* If the type is not known guess it. */
+       /* If the type is not known detect it. */
        if (metadata.type == -1)
-           metadata.type = (vim_strchr(str, '\n') == NULL) ? MCHAR : MLINE;
+           metadata.type = MAUTO;
 
        /* Translate <CR><NL> into <NL>. */
        temp_clipboard = crnl_to_nl(str, &str_size);
index 1a7250eab10d89840345cd9ccb34f649238d6bd4..84b6a1cf7377c714552150c7d9e0ca4c0b8cbd83 100644 (file)
@@ -93,7 +93,7 @@ clip_mch_request_selection( VimClipboard *cbd )
            clip_length  = clip_header->length - 1;
 
            if( clip_text != NULL && is_type_set == FALSE )
-               type = (strchr( clip_text, '\r' ) != NULL) ? MLINE : MCHAR;
+               type = MAUTO;
        }
 
        if( (clip_text != NULL) && (clip_length > 0) )
index 9d940b1c4b6b14e7fc3e31d2902f440423c494bc..82d83d3af40e2e7365e0dd7135360a90ac70bf07 100644 (file)
--- a/src/ui.c
+++ b/src/ui.c
@@ -1609,7 +1609,7 @@ add_to_input_buf_csi(char_u *str, int len)
 
 #if defined(FEAT_HANGULIN) || defined(PROTO)
     void
-push_raw_key (s, len)
+push_raw_key(s, len)
     char_u  *s;
     int            len;
 {
@@ -2016,7 +2016,7 @@ clip_x11_request_selection_cb(w, success, sel_atom, type, value, length,
     long_u     *length;
     int                *format;
 {
-    int                motion_type;
+    int                motion_type = MAUTO;
     long_u     len;
     char_u     *p;
     char       **text_list = NULL;
@@ -2036,7 +2036,6 @@ clip_x11_request_selection_cb(w, success, sel_atom, type, value, length,
        *(int *)success = FALSE;
        return;
     }
-    motion_type = MCHAR;
     p = (char_u *)value;
     len = *length;
     if (*type == vim_atom)
index 7d75de8804bff187a8c0ecdfed906dbb745ede73..9832bef13e572840e03da6d9bdaef0aef0e83c32 100644 (file)
@@ -709,6 +709,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    221,
 /**/
     220,
 /**/