diff options
author | Eli Zaretskii <eliz@gnu.org> | 2002-02-22 13:16:35 +0000 |
---|---|---|
committer | Eli Zaretskii <eliz@gnu.org> | 2002-02-22 13:16:35 +0000 |
commit | fbbe0aceda052c399f798ea9817bcb3b095f8dbd (patch) | |
tree | 3cac748ea9ea84c79809aa564a9d949f410365be /src/xselect.c | |
parent | b443e0bd7d63d496f7f17a8044c2fc43f0306c2e (diff) | |
download | emacs-fbbe0aceda052c399f798ea9817bcb3b095f8dbd.tar.gz |
<Qcompound_text_with_extensions>: New variable.
(syms_of_xselect): Intern and staticpro it.
(selection_data_to_lisp_data): Run post-read-conversion on decoded
selection text.
(lisp_data_to_selection_data): If next-selection-coding-system is
compound-text-with-extensions, set the type of selection to be
compound-text.
Diffstat (limited to 'src/xselect.c')
-rw-r--r-- | src/xselect.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/src/xselect.c b/src/xselect.c index cc4eeed966e..a3ec3e40d0e 100644 --- a/src/xselect.c +++ b/src/xselect.c @@ -97,6 +97,8 @@ Lisp_Object QPRIMARY, QSECONDARY, QSTRING, QINTEGER, QCLIPBOARD, QTIMESTAMP, Lisp_Object QCOMPOUND_TEXT; /* This is a type of selection. */ +Lisp_Object Qcompound_text_with_extensions; + #ifdef CUT_BUFFER_SUPPORT Lisp_Object QCUT_BUFFER0, QCUT_BUFFER1, QCUT_BUFFER2, QCUT_BUFFER3, QCUT_BUFFER4, QCUT_BUFFER5, QCUT_BUFFER6, QCUT_BUFFER7; @@ -1650,6 +1652,10 @@ selection_data_to_lisp_data (display, data, size, type, format) str = make_string_from_bytes ((char *) buf, coding.produced_char, coding.produced); xfree (buf); + + if (SYMBOLP (coding.post_read_conversion) + && !NILP (Ffboundp (coding.post_read_conversion))) + str = run_pre_post_conversion_on_str (str, coding, 0); Vlast_coding_system_used = coding.symbol; } compose_chars_in_text (0, XSTRING (str)->size, str); @@ -1756,10 +1762,13 @@ lisp_data_to_selection_data (display, obj, Vnext_selection_coding_system = Vselection_coding_system; *format_ret = 8; - *data_ret = x_encode_text (obj, Vnext_selection_coding_system, + *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)) + if (EQ (Vnext_selection_coding_system, + Qcompound_text_with_extensions)) + type = QCOMPOUND_TEXT; + else if (NILP (type)) type = (stringp ? QSTRING : QCOMPOUND_TEXT); Vlast_coding_system_used = (*nofree_ret ? Qraw_text @@ -2426,6 +2435,8 @@ A value of 0 means wait as long as necessary. This is initialized from the QATOM = intern ("ATOM"); staticpro (&QATOM); QATOM_PAIR = intern ("ATOM_PAIR"); staticpro (&QATOM_PAIR); QNULL = intern ("NULL"); staticpro (&QNULL); + Qcompound_text_with_extensions = intern ("compound-text-with-extensions"); + staticpro (&Qcompound_text_with_extensions); #ifdef CUT_BUFFER_SUPPORT QCUT_BUFFER0 = intern ("CUT_BUFFER0"); staticpro (&QCUT_BUFFER0); |