changeset 43454:0ccb9431ca7b

<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.
author Eli Zaretskii <eliz@gnu.org>
date Fri, 22 Feb 2002 13:15:47 +0000
parents 2e4c66e516bc
children c6e68db7db51
files src/xselect.c
diffstat 1 files changed, 13 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/xselect.c	Fri Feb 22 13:15:02 2002 +0000
+++ b/src/xselect.c	Fri Feb 22 13:15:47 2002 +0000
@@ -97,6 +97,8 @@
 
 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 @@
 	  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 @@
 	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 @@
   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);