aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorKenichi Handa2003-04-08 11:27:28 +0000
committerKenichi Handa2003-04-08 11:27:28 +0000
commit7de6cd0aee512d54a8758a632afa0bd7ea97fcc0 (patch)
treef3b5bef34dd0cb08c08fdb84f6aa03e352220ecb /src
parent24a948a7819c2a8132569eee53ad6a3cd15a6d9e (diff)
downloademacs-7de6cd0aee512d54a8758a632afa0bd7ea97fcc0.tar.gz
emacs-7de6cd0aee512d54a8758a632afa0bd7ea97fcc0.zip
(coding_system_accept_latin_extra_p): New function.
(find_safe_codings): Pay attention to characters registered in latin-extra-code-table.
Diffstat (limited to 'src')
-rw-r--r--src/coding.c26
1 files changed, 25 insertions, 1 deletions
diff --git a/src/coding.c b/src/coding.c
index 85072d63b8f..9d1298ffff2 100644
--- a/src/coding.c
+++ b/src/coding.c
@@ -6397,6 +6397,26 @@ highest priority. */)
6397 STRING_MULTIBYTE (string)); 6397 STRING_MULTIBYTE (string));
6398} 6398}
6399 6399
6400static int coding_system_accept_latin_extra_p P_ ((Lisp_Object));
6401
6402static int
6403coding_system_accept_latin_extra_p (coding_system)
6404 Lisp_Object coding_system;
6405{
6406 Lisp_Object coding_spec, coding_type, flags;
6407
6408 coding_spec = Fget (coding_system, Qcoding_system);
6409 if (! VECTORP (coding_spec)
6410 || ASIZE (coding_spec) != 5)
6411 return 0;
6412 coding_type = AREF (coding_spec, 0);
6413 if (! EQ (coding_type, make_number (2)))
6414 return 0;
6415 flags = AREF (coding_spec, 4);
6416 return (VECTORP (flags)
6417 && ! NILP (AREF (flags, CODING_FLAG_ISO_LATIN_EXTRA)));
6418}
6419
6400/* Subroutine for Fsafe_coding_systems_region_internal. 6420/* Subroutine for Fsafe_coding_systems_region_internal.
6401 6421
6402 Return a list of coding systems that safely encode the multibyte 6422 Return a list of coding systems that safely encode the multibyte
@@ -6444,7 +6464,11 @@ find_safe_codings (p, pend, safe_codings, work_table, single_byte_char_found)
6444 for (prev = tail = safe_codings; CONSP (tail); tail = XCDR (tail)) 6464 for (prev = tail = safe_codings; CONSP (tail); tail = XCDR (tail))
6445 { 6465 {
6446 val = XCAR (tail); 6466 val = XCAR (tail);
6447 if (NILP (Faref (XCDR (val), ch))) 6467 if (NILP (Faref (XCDR (val), ch))
6468 && !(SINGLE_BYTE_CHAR_P (c)
6469 && VECTORP (Vlatin_extra_code_table)
6470 && ! NILP (AREF (Vlatin_extra_code_table, c))
6471 && coding_system_accept_latin_extra_p (XCAR (val))))
6448 { 6472 {
6449 /* Exclued this coding system from SAFE_CODINGS. */ 6473 /* Exclued this coding system from SAFE_CODINGS. */
6450 if (EQ (tail, safe_codings)) 6474 if (EQ (tail, safe_codings))