mirror of
https://github.com/vim/vim.git
synced 2025-10-21 08:24:06 -04:00
updated for version 7.2-221
This commit is contained in:
@@ -6717,8 +6717,6 @@ clip_mch_request_selection(VimClipboard *cbd)
|
|||||||
{
|
{
|
||||||
GdkAtom target;
|
GdkAtom target;
|
||||||
unsigned i;
|
unsigned i;
|
||||||
int nbytes;
|
|
||||||
char_u *buffer;
|
|
||||||
time_t start;
|
time_t start;
|
||||||
|
|
||||||
for (i = 0; i < N_SELECTION_TARGETS; ++i)
|
for (i = 0; i < N_SELECTION_TARGETS; ++i)
|
||||||
@@ -6746,22 +6744,7 @@ clip_mch_request_selection(VimClipboard *cbd)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Final fallback position - use the X CUT_BUFFER0 store */
|
/* Final fallback position - use the X CUT_BUFFER0 store */
|
||||||
nbytes = 0;
|
yank_cut_buffer0(GDK_WINDOW_XDISPLAY(gui.mainwin->window), cbd);
|
||||||
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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@@ -107,7 +107,7 @@ msg(s)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#if defined(FEAT_EVAL) || defined(FEAT_X11) || defined(USE_XSMP) \
|
#if defined(FEAT_EVAL) || defined(FEAT_X11) || defined(USE_XSMP) \
|
||||||
|| defined(PROTO)
|
|| defined(FEAT_GUI_GTK) || defined(PROTO)
|
||||||
/*
|
/*
|
||||||
* Like msg() but keep it silent when 'verbosefile' is set.
|
* Like msg() but keep it silent when 'verbosefile' is set.
|
||||||
*/
|
*/
|
||||||
|
23
src/ops.c
23
src/ops.c
@@ -5591,6 +5591,29 @@ x11_export_final_selection()
|
|||||||
if (dpy != NULL && str != NULL && motion_type >= 0
|
if (dpy != NULL && str != NULL && motion_type >= 0
|
||||||
&& len < 1024*1024 && len > 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);
|
XStoreBuffer(dpy, (char *)str, (int)len, 0);
|
||||||
XFlush(dpy);
|
XFlush(dpy);
|
||||||
}
|
}
|
||||||
|
@@ -48,6 +48,7 @@ int check_row __ARGS((int row));
|
|||||||
void open_app_context __ARGS((void));
|
void open_app_context __ARGS((void));
|
||||||
void x11_setup_atoms __ARGS((Display *dpy));
|
void x11_setup_atoms __ARGS((Display *dpy));
|
||||||
void clip_x11_request_selection __ARGS((Widget myShell, Display *dpy, VimClipboard *cbd));
|
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));
|
void clip_x11_lose_selection __ARGS((Widget myShell, VimClipboard *cbd));
|
||||||
int clip_x11_own_selection __ARGS((Widget myShell, VimClipboard *cbd));
|
int clip_x11_own_selection __ARGS((Widget myShell, VimClipboard *cbd));
|
||||||
void clip_x11_set_selection __ARGS((VimClipboard *cbd));
|
void clip_x11_set_selection __ARGS((VimClipboard *cbd));
|
||||||
|
66
src/ui.c
66
src/ui.c
@@ -2104,8 +2104,6 @@ clip_x11_request_selection(myShell, dpy, cbd)
|
|||||||
Atom type;
|
Atom type;
|
||||||
static int success;
|
static int success;
|
||||||
int i;
|
int i;
|
||||||
int nbytes = 0;
|
|
||||||
char_u *buffer;
|
|
||||||
time_t start_time;
|
time_t start_time;
|
||||||
int timed_out = FALSE;
|
int timed_out = FALSE;
|
||||||
|
|
||||||
@@ -2185,15 +2183,7 @@ clip_x11_request_selection(myShell, dpy, cbd)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Final fallback position - use the X CUT_BUFFER0 store */
|
/* Final fallback position - use the X CUT_BUFFER0 store */
|
||||||
buffer = (char_u *)XFetchBuffer(dpy, &nbytes, 0);
|
yank_cut_buffer0(dpy, cbd);
|
||||||
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 *));
|
static Boolean clip_x11_convert_selection_cb __ARGS((Widget, Atom *, Atom *, Atom *, XtPointer *, long_u *, int *));
|
||||||
@@ -2369,6 +2359,60 @@ clip_x11_set_selection(cbd)
|
|||||||
}
|
}
|
||||||
#endif
|
#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)
|
#if defined(FEAT_MOUSE) || defined(PROTO)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@@ -676,6 +676,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
221,
|
||||||
/**/
|
/**/
|
||||||
220,
|
220,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user