From 10453be959b3656f9ed57336eab4e3ca77613304 Mon Sep 17 00:00:00 2001 From: Kenichi Handa Date: Tue, 27 Jan 2004 02:16:25 +0000 Subject: [PATCH] (translate_char): Accept list of translation tables. --- src/character.c | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/src/character.c b/src/character.c index 70b7c476019..13a2da0ddbd 100644 --- a/src/character.c +++ b/src/character.c @@ -210,21 +210,28 @@ string_char (p, advanced, len) /* Translate character C by translation table TABLE. If C is negative, translate a character specified by CHARSET and CODE. If no translation is found in TABLE, return the untranslated - character. */ + character. If TABLE is a list, elements are char tables. In this + case, translace C by all tables. */ int translate_char (table, c) Lisp_Object table; int c; { - Lisp_Object ch; - - if (! CHAR_TABLE_P (table)) - return c; - ch = CHAR_TABLE_REF (table, c); - if (! CHARACTERP (ch)) - return c; - return XINT (ch); + if (CHAR_TABLE_P (table)) + { + Lisp_Object ch; + + ch = CHAR_TABLE_REF (table, c); + if (CHARACTERP (ch)) + c = XINT (ch); + } + else + { + for (; CONSP (table); table = XCDR (table)) + c = translate_char (XCAR (table), c); + } + return c; } /* Convert the multibyte character C to unibyte 8-bit character based -- 2.39.5