+2002-02-22 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * w16select.c (Fw16_set_clipboard_data): Run pre-write-conversion
+ on the string before encoding it.
+ (Fw16_get_clipboard_data): Run post-read-conversion on the string
+ after decoding it.
+
2002-02-22 Eli Zaretskii <eliz@is.elta.co.il>
Support for ICCCM Extended Segments in X selections:
int no_crlf_conversion;
CHECK_STRING (string);
-
+
if (NILP (frame))
frame = Fselected_frame ();
CHECK_LIVE_FRAME (frame);
if ( !FRAME_MSDOS_P (XFRAME (frame)))
goto done;
-
+
BLOCK_INPUT;
nbytes = STRING_BYTES (XSTRING (string));
Vnext_selection_coding_system = Vselection_coding_system;
setup_coding_system
(Fcheck_coding_system (Vnext_selection_coding_system), &coding);
+ if (SYMBOLP (coding.pre_write_conversion)
+ && !NILP (Ffboundp (coding.pre_write_conversion)))
+ {
+ string = run_pre_post_conversion_on_str (string, &coding, 1);
+ src = XSTRING (string)->data;
+ nbytes = STRING_BYTES (XSTRING (string));
+ }
coding.src_multibyte = 1;
coding.dst_multibyte = 0;
Vnext_selection_coding_system = Qnil;
if (!open_clipboard ())
goto error;
-
+
ok = empty_clipboard ()
&& ((put_status
= set_clipboard_data (CF_OEMTEXT, src, nbytes, no_crlf_conversion))
if (!no_crlf_conversion)
Vlast_coding_system_used = Qraw_text;
close_clipboard ();
-
+
if (ok) goto unblock;
error:
-
+
ok = 0;
unblock:
}
sit_for (2, 0, 0, 1, 1);
}
-
+
done:
return (ok && put_status == 0 ? string : Qnil);
CHECK_LIVE_FRAME (frame);
if ( !FRAME_MSDOS_P (XFRAME (frame)))
goto done;
-
+
BLOCK_INPUT;
-
+
if (!open_clipboard ())
goto unblock;
goto closeclip;
/* Do we need to decode it? */
- if (
-#if 1
- 1
-#else
- ! NILP (buffer_defaults.enable_multibyte_characters)
-#endif
- )
- {
- /* If the clipboard data contains any 8-bit Latin-1 code, we
- need to decode it. */
- int i;
-
- for (i = 0; i < truelen; i++)
- {
- if (htext[i] >= 0x80)
- {
- require_encoding = 1;
- break;
- }
- }
- }
+ {
+ /* If the clipboard data contains any 8-bit Latin-1 code, we
+ need to decode it. */
+ int i;
+
+ for (i = 0; i < truelen; i++)
+ {
+ if (htext[i] >= 0x80)
+ {
+ require_encoding = 1;
+ break;
+ }
+ }
+ }
if (require_encoding)
{
int bufsize;
ret = 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)))
+ ret = run_pre_post_conversion_on_str (ret, coding, 0);
Vlast_coding_system_used = coding.symbol;
}
else