Mercurial > emacs
changeset 45648:bd5e72f0cf8e
(lisp_data_to_selection_data): If the requested type
is STRING, call string_make_unibyte to encode the selected text
as a string.
author | Eli Zaretskii <eliz@gnu.org> |
---|---|
date | Wed, 05 Jun 2002 17:36:22 +0000 |
parents | e4adbf26467d |
children | e4191efd646a |
files | src/xselect.c |
diffstat | 1 files changed, 21 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/src/xselect.c Wed Jun 05 17:14:16 2002 +0000 +++ b/src/xselect.c Wed Jun 05 17:36:22 2002 +0000 @@ -1757,14 +1757,32 @@ /* 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; - *data_ret = x_encode_text (obj, Vnext_selection_coding_system, 1, - (int *) size_ret, &stringp); - *nofree_ret = (*data_ret == XSTRING (obj)->data); + /* 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 = XSTRING (unibyte_string)->data; + *nofree_ret = 1; + } + else + { + *data_ret = x_encode_text (obj, Vnext_selection_coding_system, 1, + (int *) size_ret, &stringp); + *nofree_ret = (*data_ret == XSTRING (obj)->data); + } if (NILP (type)) type = (stringp ? QSTRING : QCOMPOUND_TEXT); Vlast_coding_system_used = (*nofree_ret