[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/src/xselect.c
From: |
Kenichi Handa |
Subject: |
[Emacs-diffs] Changes to emacs/src/xselect.c |
Date: |
Tue, 13 Aug 2002 20:58:39 -0400 |
Index: emacs/src/xselect.c
diff -c emacs/src/xselect.c:1.123 emacs/src/xselect.c:1.124
*** emacs/src/xselect.c:1.123 Sun Jul 14 20:00:41 2002
--- emacs/src/xselect.c Tue Aug 13 20:58:39 2002
***************
*** 40,46 ****
static Atom symbol_to_x_atom P_ ((struct x_display_info *, Display *,
Lisp_Object));
static void x_own_selection P_ ((Lisp_Object, Lisp_Object));
! static Lisp_Object x_get_local_selection P_ ((Lisp_Object, Lisp_Object));
static void x_decline_selection_request P_ ((struct input_event *));
static Lisp_Object x_selection_request_lisp_error P_ ((Lisp_Object));
static Lisp_Object queue_selection_requests_unwind P_ ((Lisp_Object));
--- 40,46 ----
static Atom symbol_to_x_atom P_ ((struct x_display_info *, Display *,
Lisp_Object));
static void x_own_selection P_ ((Lisp_Object, Lisp_Object));
! static Lisp_Object x_get_local_selection P_ ((Lisp_Object, Lisp_Object, int));
static void x_decline_selection_request P_ ((struct input_event *));
static Lisp_Object x_selection_request_lisp_error P_ ((Lisp_Object));
static Lisp_Object queue_selection_requests_unwind P_ ((Lisp_Object));
***************
*** 96,101 ****
--- 96,102 ----
QATOM_PAIR;
Lisp_Object QCOMPOUND_TEXT; /* This is a type of selection. */
+ Lisp_Object QUTF8_STRING; /* This is a type of selection. */
Lisp_Object Qcompound_text_with_extensions;
***************
*** 182,187 ****
--- 183,189 ----
if (EQ (sym, QTIMESTAMP)) return dpyinfo->Xatom_TIMESTAMP;
if (EQ (sym, QTEXT)) return dpyinfo->Xatom_TEXT;
if (EQ (sym, QCOMPOUND_TEXT)) return dpyinfo->Xatom_COMPOUND_TEXT;
+ if (EQ (sym, QUTF8_STRING)) return dpyinfo->Xatom_UTF8_STRING;
if (EQ (sym, QDELETE)) return dpyinfo->Xatom_DELETE;
if (EQ (sym, QMULTIPLE)) return dpyinfo->Xatom_MULTIPLE;
if (EQ (sym, QINCR)) return dpyinfo->Xatom_INCR;
***************
*** 264,269 ****
--- 266,273 ----
return QTEXT;
if (atom == dpyinfo->Xatom_COMPOUND_TEXT)
return QCOMPOUND_TEXT;
+ if (atom == dpyinfo->Xatom_UTF8_STRING)
+ return QUTF8_STRING;
if (atom == dpyinfo->Xatom_DELETE)
return QDELETE;
if (atom == dpyinfo->Xatom_MULTIPLE)
***************
*** 350,363 ****
/* Given a selection-name and desired type, look up our local copy of
the selection value and convert it to the type.
The value is nil or a string.
! This function is used both for remote requests
! and for local x-get-selection-internal.
This calls random Lisp code, and may signal or gc. */
static Lisp_Object
! x_get_local_selection (selection_symbol, target_type)
Lisp_Object selection_symbol, target_type;
{
Lisp_Object local_value;
Lisp_Object handler_fn, value, type, check;
--- 354,368 ----
/* Given a selection-name and desired type, look up our local copy of
the selection value and convert it to the type.
The value is nil or a string.
! This function is used both for remote requests (LOCAL_REQUEST is zero)
! and for local x-get-selection-internal (LOCAL_REQUEST is nonzero).
This calls random Lisp code, and may signal or gc. */
static Lisp_Object
! x_get_local_selection (selection_symbol, target_type, local_request)
Lisp_Object selection_symbol, target_type;
+ int local_request;
{
Lisp_Object local_value;
Lisp_Object handler_fn, value, type, check;
***************
*** 404,410 ****
pair = XVECTOR (pairs)->contents [i];
XVECTOR (pair)->contents [1]
= x_get_local_selection (XVECTOR (pair)->contents [0],
! XVECTOR (pair)->contents [1]);
}
return pairs;
}
--- 409,416 ----
pair = XVECTOR (pairs)->contents [i];
XVECTOR (pair)->contents [1]
= x_get_local_selection (XVECTOR (pair)->contents [0],
! XVECTOR (pair)->contents [1],
! local_request);
}
return pairs;
}
***************
*** 421,427 ****
handler_fn = Fcdr (Fassq (target_type, Vselection_converter_alist));
if (!NILP (handler_fn))
value = call3 (handler_fn,
! selection_symbol, target_type,
XCAR (XCDR (local_value)));
else
value = Qnil;
--- 427,433 ----
handler_fn = Fcdr (Fassq (target_type, Vselection_converter_alist));
if (!NILP (handler_fn))
value = call3 (handler_fn,
! selection_symbol, (local_request ? Qnil : target_type),
XCAR (XCDR (local_value)));
else
value = Qnil;
***************
*** 801,807 ****
/* Convert lisp objects back into binary data */
converted_selection
! = x_get_local_selection (selection_symbol, target_symbol);
if (! NILP (converted_selection))
{
--- 807,813 ----
/* Convert lisp objects back into binary data */
converted_selection
! = x_get_local_selection (selection_symbol, target_symbol, 0);
if (! NILP (converted_selection))
{
***************
*** 1758,1799 ****
}
else if (STRINGP (obj))
{
! /* Since we are now handling multilingual text, we must consider
! sending back compound text. */
! int stringp;
! extern Lisp_Object Qcompound_text;
!
! if (NILP (Vnext_selection_coding_system))
! Vnext_selection_coding_system = Vselection_coding_system;
!
! *format_ret = 8;
! /* If the requested type is STRING, we must encode the selected
! text as a string, even if the coding system set by the user
! is ctext or its derivatives. */
! if (EQ (type, QSTRING)
! && (EQ (Vnext_selection_coding_system, Qcompound_text)
! || EQ (Vnext_selection_coding_system,
! Qcompound_text_with_extensions)))
! {
! Lisp_Object unibyte_string;
!
! unibyte_string = string_make_unibyte (obj);
! *data_ret = SDATA (unibyte_string);
! *nofree_ret = 1;
! *size_ret = SBYTES (unibyte_string);
! }
! else
! {
! *data_ret = x_encode_text (obj, Vnext_selection_coding_system, 1,
! (int *) size_ret, &stringp);
! *nofree_ret = (*data_ret == SDATA (obj));
! }
if (NILP (type))
! type = (stringp ? QSTRING : QCOMPOUND_TEXT);
! Vlast_coding_system_used = (*nofree_ret
! ? Qraw_text
! : Vnext_selection_coding_system);
! Vnext_selection_coding_system = Qnil;
}
else if (SYMBOLP (obj))
{
--- 1764,1776 ----
}
else if (STRINGP (obj))
{
! xassert (! STRING_MULTIBYTE (obj));
if (NILP (type))
! type = QSTRING;
! *format_ret = 8;
! *size_ret = SBYTES (obj);
! *data_ret = SDATA (obj);
! *nofree_ret = 1;
}
else if (SYMBOLP (obj))
{
***************
*** 2025,2031 ****
#endif
CHECK_SYMBOL (target_type);
! val = x_get_local_selection (selection_symbol, target_type);
if (NILP (val))
{
--- 2002,2008 ----
#endif
CHECK_SYMBOL (target_type);
! val = x_get_local_selection (selection_symbol, target_type, 1);
if (NILP (val))
{
***************
*** 2446,2451 ****
--- 2423,2429 ----
QTIMESTAMP = intern ("TIMESTAMP"); staticpro (&QTIMESTAMP);
QTEXT = intern ("TEXT"); staticpro (&QTEXT);
QCOMPOUND_TEXT = intern ("COMPOUND_TEXT"); staticpro (&QCOMPOUND_TEXT);
+ QUTF8_STRING = intern ("UTF8_STRING"); staticpro (&QUTF8_STRING);
QTIMESTAMP = intern ("TIMESTAMP"); staticpro (&QTIMESTAMP);
QDELETE = intern ("DELETE"); staticpro (&QDELETE);
QMULTIPLE = intern ("MULTIPLE"); staticpro (&QMULTIPLE);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] Changes to emacs/src/xselect.c,
Kenichi Handa <=