diff options
Diffstat (limited to 'source/ap/vim/patches/7.2.221')
-rw-r--r-- | source/ap/vim/patches/7.2.221 | 247 |
1 files changed, 0 insertions, 247 deletions
diff --git a/source/ap/vim/patches/7.2.221 b/source/ap/vim/patches/7.2.221 deleted file mode 100644 index 3c6180e3..00000000 --- a/source/ap/vim/patches/7.2.221 +++ /dev/null @@ -1,247 +0,0 @@ -To: vim-dev@vim.org -Subject: Patch 7.2.221 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 7.2.221 -Problem: X cut_buffer0 text is used as-is, it may be in the wrong encoding. -Solution: Convert between 'enc' and latin1. (James Vega) -Files: src/gui_gtk_x11.c, src/message.c, src/ops.c, src/proto/ui.pro, - src/ui.c - - -*** ../vim-7.2.220/src/gui_gtk_x11.c 2009-06-16 15:23:07.000000000 +0200 ---- src/gui_gtk_x11.c 2009-07-01 11:55:34.000000000 +0200 -*************** -*** 6717,6724 **** - { - GdkAtom target; - unsigned i; -- int nbytes; -- char_u *buffer; - time_t start; - - for (i = 0; i < N_SELECTION_TARGETS; ++i) ---- 6717,6722 ---- -*************** -*** 6746,6767 **** - } - - /* Final fallback position - use the X CUT_BUFFER0 store */ -! nbytes = 0; -! buffer = (char_u *)XFetchBuffer(GDK_WINDOW_XDISPLAY(gui.mainwin->window), -! &nbytes, 0); -! if (nbytes > 0) -! { -! /* Got something */ -! clip_yank_selection(MCHAR, buffer, (long)nbytes, cbd); -! if (p_verbose > 0) -! { -! verbose_enter(); -! smsg((char_u *)_("Used CUT_BUFFER0 instead of empty selection")); -! verbose_leave(); -! } -! } -! if (buffer != NULL) -! XFree(buffer); - } - - /* ---- 6744,6750 ---- - } - - /* Final fallback position - use the X CUT_BUFFER0 store */ -! yank_cut_buffer0(GDK_WINDOW_XDISPLAY(gui.mainwin->window), cbd); - } - - /* -*** ../vim-7.2.220/src/message.c 2009-05-17 13:30:58.000000000 +0200 ---- src/message.c 2009-07-01 16:43:08.000000000 +0200 -*************** -*** 107,113 **** - } - - #if defined(FEAT_EVAL) || defined(FEAT_X11) || defined(USE_XSMP) \ -! || defined(PROTO) - /* - * Like msg() but keep it silent when 'verbosefile' is set. - */ ---- 107,113 ---- - } - - #if defined(FEAT_EVAL) || defined(FEAT_X11) || defined(USE_XSMP) \ -! || defined(FEAT_GUI_GTK) || defined(PROTO) - /* - * Like msg() but keep it silent when 'verbosefile' is set. - */ -*** ../vim-7.2.220/src/ops.c 2009-05-26 18:12:13.000000000 +0200 ---- src/ops.c 2009-07-01 12:15:31.000000000 +0200 -*************** -*** 5591,5596 **** ---- 5591,5619 ---- - if (dpy != NULL && str != NULL && motion_type >= 0 - && len < 1024*1024 && len > 0) - { -+ #ifdef FEAT_MBYTE -+ /* The CUT_BUFFER0 is supposed to always contain latin1. Convert from -+ * 'enc' when it is a multi-byte encoding. When 'enc' is an 8-bit -+ * encoding conversion usually doesn't work, so keep the text as-is. -+ */ -+ if (has_mbyte) -+ { -+ char_u *conv_str = str; -+ vimconv_T vc; -+ -+ vc.vc_type = CONV_NONE; -+ if (convert_setup(&vc, p_enc, (char_u *)"latin1") == OK) -+ { -+ conv_str = string_convert(&vc, str, (int*)&len); -+ if (conv_str != NULL) -+ { -+ vim_free(str); -+ str = conv_str; -+ } -+ convert_setup(&vc, NULL, NULL); -+ } -+ } -+ #endif - XStoreBuffer(dpy, (char *)str, (int)len, 0); - XFlush(dpy); - } -*** ../vim-7.2.220/src/proto/ui.pro 2007-05-05 19:58:49.000000000 +0200 ---- src/proto/ui.pro 2009-07-01 11:48:11.000000000 +0200 -*************** -*** 48,53 **** ---- 48,54 ---- - void open_app_context __ARGS((void)); - void x11_setup_atoms __ARGS((Display *dpy)); - void clip_x11_request_selection __ARGS((Widget myShell, Display *dpy, VimClipboard *cbd)); -+ void yank_cut_buffer0 __ARGS((Display *dpy, VimClipboard *cbd)); - void clip_x11_lose_selection __ARGS((Widget myShell, VimClipboard *cbd)); - int clip_x11_own_selection __ARGS((Widget myShell, VimClipboard *cbd)); - void clip_x11_set_selection __ARGS((VimClipboard *cbd)); -*** ../vim-7.2.220/src/ui.c 2009-05-17 13:30:58.000000000 +0200 ---- src/ui.c 2009-07-01 15:44:07.000000000 +0200 -*************** -*** 2104,2111 **** - Atom type; - static int success; - int i; -- int nbytes = 0; -- char_u *buffer; - time_t start_time; - int timed_out = FALSE; - ---- 2104,2109 ---- -*************** -*** 2185,2199 **** - } - - /* Final fallback position - use the X CUT_BUFFER0 store */ -! buffer = (char_u *)XFetchBuffer(dpy, &nbytes, 0); -! if (nbytes > 0) -! { -! /* Got something */ -! clip_yank_selection(MCHAR, buffer, (long)nbytes, cbd); -! XFree((void *)buffer); -! if (p_verbose > 0) -! verb_msg((char_u *)_("Used CUT_BUFFER0 instead of empty selection")); -! } - } - - static Boolean clip_x11_convert_selection_cb __ARGS((Widget, Atom *, Atom *, Atom *, XtPointer *, long_u *, int *)); ---- 2183,2189 ---- - } - - /* Final fallback position - use the X CUT_BUFFER0 store */ -! yank_cut_buffer0(dpy, cbd); - } - - static Boolean clip_x11_convert_selection_cb __ARGS((Widget, Atom *, Atom *, Atom *, XtPointer *, long_u *, int *)); -*************** -*** 2369,2374 **** ---- 2359,2418 ---- - } - #endif - -+ #if defined(FEAT_XCLIPBOARD) || defined(FEAT_GUI_X11) \ -+ || defined(FEAT_GUI_GTK) || defined(PROTO) -+ /* -+ * Get the contents of the X CUT_BUFFER0 and put it in "cbd". -+ */ -+ void -+ yank_cut_buffer0(dpy, cbd) -+ Display *dpy; -+ VimClipboard *cbd; -+ { -+ int nbytes = 0; -+ char_u *buffer = (char_u *)XFetchBuffer(dpy, &nbytes, 0); -+ -+ if (nbytes > 0) -+ { -+ #ifdef FEAT_MBYTE -+ int done = FALSE; -+ -+ /* CUT_BUFFER0 is supposed to be always latin1. Convert to 'enc' when -+ * using a multi-byte encoding. Conversion between two 8-bit -+ * character sets usually fails and the text might actually be in -+ * 'enc' anyway. */ -+ if (has_mbyte) -+ { -+ char_u *conv_buf = buffer; -+ vimconv_T vc; -+ -+ vc.vc_type = CONV_NONE; -+ if (convert_setup(&vc, (char_u *)"latin1", p_enc) == OK) -+ { -+ conv_buf = string_convert(&vc, buffer, &nbytes); -+ if (conv_buf != NULL) -+ { -+ clip_yank_selection(MCHAR, conv_buf, (long)nbytes, cbd); -+ vim_free(conv_buf); -+ done = TRUE; -+ } -+ convert_setup(&vc, NULL, NULL); -+ } -+ } -+ if (!done) /* use the text without conversion */ -+ #endif -+ clip_yank_selection(MCHAR, buffer, (long)nbytes, cbd); -+ XFree((void *)buffer); -+ if (p_verbose > 0) -+ { -+ verbose_enter(); -+ verb_msg((char_u *)_("Used CUT_BUFFER0 instead of empty selection")); -+ verbose_leave(); -+ } -+ } -+ } -+ #endif -+ - #if defined(FEAT_MOUSE) || defined(PROTO) - - /* -*** ../vim-7.2.220/src/version.c 2009-07-01 17:11:40.000000000 +0200 ---- src/version.c 2009-07-01 17:56:02.000000000 +0200 -*************** -*** 678,679 **** ---- 678,681 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 221, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -40. You tell the cab driver you live at - http://123.elm.street/house/bluetrim.html -41. You actually try that 123.elm.street address. - - /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ -/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ -\\\ download, build and distribute -- http://www.A-A-P.org /// - \\\ help me help AIDS victims -- http://ICCF-Holland.org /// |