diff options
-rw-r--r-- | src/gui_gtk_x11.c | 3 | ||||
-rw-r--r-- | src/gui_mac.c | 2 | ||||
-rw-r--r-- | src/ops.c | 18 | ||||
-rw-r--r-- | src/os_msdos.c | 4 | ||||
-rw-r--r-- | src/os_mswin.c | 4 | ||||
-rw-r--r-- | src/os_qnx.c | 2 | ||||
-rw-r--r-- | src/ui.c | 5 | ||||
-rw-r--r-- | src/version.c | 2 |
8 files changed, 22 insertions, 18 deletions
diff --git a/src/gui_gtk_x11.c b/src/gui_gtk_x11.c index 0454afb7b..77be9767b 100644 --- a/src/gui_gtk_x11.c +++ b/src/gui_gtk_x11.c @@ -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) { diff --git a/src/gui_mac.c b/src/gui_mac.c index 2c3356248..0a8b0bcc5 100644 --- a/src/gui_mac.c +++ b/src/gui_mac.c @@ -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); @@ -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 */ diff --git a/src/os_msdos.c b/src/os_msdos.c index 1b52d72c4..3449d23b9 100644 --- a/src/os_msdos.c +++ b/src/os_msdos.c @@ -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? */ diff --git a/src/os_mswin.c b/src/os_mswin.c index 8be2d40af..1a6ccb5c9 100644 --- a/src/os_mswin.c +++ b/src/os_mswin.c @@ -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); diff --git a/src/os_qnx.c b/src/os_qnx.c index 1a7250eab..84b6a1cf7 100644 --- a/src/os_qnx.c +++ b/src/os_qnx.c @@ -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) ) @@ -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) diff --git a/src/version.c b/src/version.c index 7d75de880..9832bef13 100644 --- a/src/version.c +++ b/src/version.c @@ -710,6 +710,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 221, +/**/ 220, /**/ 219, |