diff options
author | Kenichi Handa <[email protected]> | 1998-07-06 06:33:55 +0000 |
---|---|---|
committer | Kenichi Handa <[email protected]> | 1998-07-06 06:33:55 +0000 |
commit | 8a73a7048475eaab1f75310a30017ad126b48123 (patch) | |
tree | 9915d5ffc144e6b0a00257ddaa5e745dd80a4d47 /src | |
parent | 4c0fbc0814aab8ab558fe3c5bc71534c380fd9e8 (diff) |
(Vgeneric_character_list): New variable.
(init_charset_once): Init and staticpro it.
(Fgeneric_character_list): New function.
(syms_of_charset): defsubr it.
Diffstat (limited to 'src')
-rw-r--r-- | src/charset.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/charset.c b/src/charset.c index f9a10205a2..10627b0970 100644 --- a/src/charset.c +++ b/src/charset.c @@ -105,6 +105,9 @@ int nonascii_insert_offset; to multibyte codes, or nil. */ Lisp_Object Vnonascii_translation_table; +/* List of all possible generic characters. */ +Lisp_Object Vgeneric_character_list; + #define min(X, Y) ((X) < (Y) ? (X) : (Y)) #define max(X, Y) ((X) > (Y) ? (X) : (Y)) @@ -580,6 +583,15 @@ DESCRIPTION (string) is the description string of the charset.") return Qnil; } +DEFUN ("generic-character-list", Fgeneric_character_list, + Sgeneric_character_list, 0, 0, 0, + "Return a list of all possible generic characters.\n\ +It includes a generic character for a charset not yet defined.") + () +{ + return Vgeneric_character_list; +} + DEFUN ("get-unused-iso-final-char", Fget_unused_iso_final_char, Sget_unused_iso_final_char, 2, 2, 0, "Return an unsed ISO's final char for a charset of DIMENISION and CHARS.\n\ @@ -1662,6 +1674,7 @@ init_charset_once () staticpro (&Vcharset_table); staticpro (&Vcharset_symbol_table); + staticpro (&Vgeneric_character_list); /* This has to be done here, before we call Fmake_char_table. */ Qcharset_table = intern ("charset-table"); @@ -1706,6 +1719,21 @@ init_charset_once () WIDTH_BY_CHAR_HEAD (LEADING_CODE_PRIVATE_12) = 2; WIDTH_BY_CHAR_HEAD (LEADING_CODE_PRIVATE_21) = 1; WIDTH_BY_CHAR_HEAD (LEADING_CODE_PRIVATE_22) = 2; + + { + Lisp_Object val = Qnil; + + for (i = 0x81; i < 0x90; i++) + val = Fcons (make_number ((i - 0x70) << 7), val); + for (; i < 0x9A; i++) + val = Fcons (make_number ((i - 0x8F) << 14), val); + for (i = 0xA0; i < 0xF0; i++) + val = Fcons (make_number ((i - 0x70) << 7), val); + for (; i < 0xFF; i++) + val = Fcons (make_number ((i - 0xE0) << 14), val); + val = Fcons (make_number (GENERIC_COMPOSITION_CHAR), val); + Vgeneric_character_list = Fnreverse (val); + } } #ifdef emacs @@ -1737,6 +1765,7 @@ syms_of_charset () CHARSET_SYMBOL (CHARSET_COMPOSITION) = Qcomposition; defsubr (&Sdefine_charset); + defsubr (&Sgeneric_character_list); defsubr (&Sget_unused_iso_final_char); defsubr (&Sdeclare_equiv_charset); defsubr (&Sfind_charset_region); |