Mercurial > emacs
changeset 50487:db1e3303096f
(coding_system_accept_latin_extra_p): New function.
(find_safe_codings): Pay attention to characters registered in
latin-extra-code-table.
author | Kenichi Handa <handa@m17n.org> |
---|---|
date | Tue, 08 Apr 2003 11:27:28 +0000 |
parents | b67e5e5b8fc4 |
children | a23ddd4b5a0b |
files | src/coding.c |
diffstat | 1 files changed, 25 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/coding.c Tue Apr 08 10:46:31 2003 +0000 +++ b/src/coding.c Tue Apr 08 11:27:28 2003 +0000 @@ -6397,6 +6397,26 @@ STRING_MULTIBYTE (string)); } +static int coding_system_accept_latin_extra_p P_ ((Lisp_Object)); + +static int +coding_system_accept_latin_extra_p (coding_system) + Lisp_Object coding_system; +{ + Lisp_Object coding_spec, coding_type, flags; + + coding_spec = Fget (coding_system, Qcoding_system); + if (! VECTORP (coding_spec) + || ASIZE (coding_spec) != 5) + return 0; + coding_type = AREF (coding_spec, 0); + if (! EQ (coding_type, make_number (2))) + return 0; + flags = AREF (coding_spec, 4); + return (VECTORP (flags) + && ! NILP (AREF (flags, CODING_FLAG_ISO_LATIN_EXTRA))); +} + /* Subroutine for Fsafe_coding_systems_region_internal. Return a list of coding systems that safely encode the multibyte @@ -6444,7 +6464,11 @@ for (prev = tail = safe_codings; CONSP (tail); tail = XCDR (tail)) { val = XCAR (tail); - if (NILP (Faref (XCDR (val), ch))) + if (NILP (Faref (XCDR (val), ch)) + && !(SINGLE_BYTE_CHAR_P (c) + && VECTORP (Vlatin_extra_code_table) + && ! NILP (AREF (Vlatin_extra_code_table, c)) + && coding_system_accept_latin_extra_p (XCAR (val)))) { /* Exclued this coding system from SAFE_CODINGS. */ if (EQ (tail, safe_codings))