Mercurial > emacs
comparison src/coding.c @ 22186:fc4aaf1b1772
Change term "character translation table" to "translation table".
author | Kenichi Handa <handa@m17n.org> |
---|---|
date | Fri, 22 May 1998 09:45:34 +0000 |
parents | 917e237b5e65 |
children | 557fac086b1b |
comparison
equal
deleted
inserted
replaced
22185:80a2aa51a6e1 | 22186:fc4aaf1b1772 |
---|---|
365 | 365 |
366 /* Table pointers to coding systems corresponding to each coding | 366 /* Table pointers to coding systems corresponding to each coding |
367 categories. */ | 367 categories. */ |
368 struct coding_system *coding_system_table[CODING_CATEGORY_IDX_MAX]; | 368 struct coding_system *coding_system_table[CODING_CATEGORY_IDX_MAX]; |
369 | 369 |
370 /* Flag to tell if we look up character translation table on character | 370 /* Flag to tell if we look up translation table on character code |
371 code conversion. */ | 371 conversion. */ |
372 Lisp_Object Venable_character_translation; | 372 Lisp_Object Venable_character_translation; |
373 /* Standard character translation table to look up on decoding (reading). */ | 373 /* Standard translation table to look up on decoding (reading). */ |
374 Lisp_Object Vstandard_character_translation_table_for_decode; | 374 Lisp_Object Vstandard_translation_table_for_decode; |
375 /* Standard character translation table to look up on encoding (writing). */ | 375 /* Standard translation table to look up on encoding (writing). */ |
376 Lisp_Object Vstandard_character_translation_table_for_encode; | 376 Lisp_Object Vstandard_translation_table_for_encode; |
377 | 377 |
378 Lisp_Object Qcharacter_translation_table; | 378 Lisp_Object Qtranslation_table; |
379 Lisp_Object Qcharacter_translation_table_id; | 379 Lisp_Object Qtranslation_table_id; |
380 Lisp_Object Qcharacter_translation_table_for_decode; | 380 Lisp_Object Qtranslation_table_for_decode; |
381 Lisp_Object Qcharacter_translation_table_for_encode; | 381 Lisp_Object Qtranslation_table_for_encode; |
382 | 382 |
383 /* Alist of charsets vs revision number. */ | 383 /* Alist of charsets vs revision number. */ |
384 Lisp_Object Vcharset_revision_alist; | 384 Lisp_Object Vcharset_revision_alist; |
385 | 385 |
386 /* Default coding systems used for process I/O. */ | 386 /* Default coding systems used for process I/O. */ |
1008 int charset; | 1008 int charset; |
1009 /* Charsets invoked to graphic plane 0 and 1 respectively. */ | 1009 /* Charsets invoked to graphic plane 0 and 1 respectively. */ |
1010 int charset0 = CODING_SPEC_ISO_PLANE_CHARSET (coding, 0); | 1010 int charset0 = CODING_SPEC_ISO_PLANE_CHARSET (coding, 0); |
1011 int charset1 = CODING_SPEC_ISO_PLANE_CHARSET (coding, 1); | 1011 int charset1 = CODING_SPEC_ISO_PLANE_CHARSET (coding, 1); |
1012 Lisp_Object translation_table | 1012 Lisp_Object translation_table |
1013 = coding->character_translation_table_for_decode; | 1013 = coding->translation_table_for_decode; |
1014 int result = CODING_FINISH_NORMAL; | 1014 int result = CODING_FINISH_NORMAL; |
1015 | 1015 |
1016 if (!NILP (Venable_character_translation) && NILP (translation_table)) | 1016 if (!NILP (Venable_character_translation) && NILP (translation_table)) |
1017 translation_table = Vstandard_character_translation_table_for_decode; | 1017 translation_table = Vstandard_translation_table_for_decode; |
1018 | 1018 |
1019 coding->produced_char = 0; | 1019 coding->produced_char = 0; |
1020 coding->fake_multibyte = 0; | 1020 coding->fake_multibyte = 0; |
1021 while (src < src_end && (dst_bytes | 1021 while (src < src_end && (dst_bytes |
1022 ? (dst < adjusted_dst_end) | 1022 ? (dst < adjusted_dst_end) |
1756 /* Since the maximum bytes produced by each loop is 20, we subtract 19 | 1756 /* Since the maximum bytes produced by each loop is 20, we subtract 19 |
1757 from DST_END to assure overflow checking is necessary only at the | 1757 from DST_END to assure overflow checking is necessary only at the |
1758 head of loop. */ | 1758 head of loop. */ |
1759 unsigned char *adjusted_dst_end = dst_end - 19; | 1759 unsigned char *adjusted_dst_end = dst_end - 19; |
1760 Lisp_Object translation_table | 1760 Lisp_Object translation_table |
1761 = coding->character_translation_table_for_encode; | 1761 = coding->translation_table_for_encode; |
1762 int result = CODING_FINISH_NORMAL; | 1762 int result = CODING_FINISH_NORMAL; |
1763 | 1763 |
1764 if (!NILP (Venable_character_translation) && NILP (translation_table)) | 1764 if (!NILP (Venable_character_translation) && NILP (translation_table)) |
1765 translation_table = Vstandard_character_translation_table_for_encode; | 1765 translation_table = Vstandard_translation_table_for_encode; |
1766 | 1766 |
1767 coding->consumed_char = 0; | 1767 coding->consumed_char = 0; |
1768 coding->fake_multibyte = 0; | 1768 coding->fake_multibyte = 0; |
1769 while (src < src_end && (dst_bytes | 1769 while (src < src_end && (dst_bytes |
1770 ? (dst < adjusted_dst_end) | 1770 ? (dst < adjusted_dst_end) |
2173 /* Since the maximum bytes produced by each loop is 4, we subtract 3 | 2173 /* Since the maximum bytes produced by each loop is 4, we subtract 3 |
2174 from DST_END to assure overflow checking is necessary only at the | 2174 from DST_END to assure overflow checking is necessary only at the |
2175 head of loop. */ | 2175 head of loop. */ |
2176 unsigned char *adjusted_dst_end = dst_end - 3; | 2176 unsigned char *adjusted_dst_end = dst_end - 3; |
2177 Lisp_Object translation_table | 2177 Lisp_Object translation_table |
2178 = coding->character_translation_table_for_decode; | 2178 = coding->translation_table_for_decode; |
2179 int result = CODING_FINISH_NORMAL; | 2179 int result = CODING_FINISH_NORMAL; |
2180 | 2180 |
2181 if (!NILP (Venable_character_translation) && NILP (translation_table)) | 2181 if (!NILP (Venable_character_translation) && NILP (translation_table)) |
2182 translation_table = Vstandard_character_translation_table_for_decode; | 2182 translation_table = Vstandard_translation_table_for_decode; |
2183 | 2183 |
2184 coding->produced_char = 0; | 2184 coding->produced_char = 0; |
2185 coding->fake_multibyte = 0; | 2185 coding->fake_multibyte = 0; |
2186 while (src < src_end && (dst_bytes | 2186 while (src < src_end && (dst_bytes |
2187 ? (dst < adjusted_dst_end) | 2187 ? (dst < adjusted_dst_end) |
2362 /* Since the maximum bytes produced by each loop is 2, we subtract 1 | 2362 /* Since the maximum bytes produced by each loop is 2, we subtract 1 |
2363 from DST_END to assure overflow checking is necessary only at the | 2363 from DST_END to assure overflow checking is necessary only at the |
2364 head of loop. */ | 2364 head of loop. */ |
2365 unsigned char *adjusted_dst_end = dst_end - 1; | 2365 unsigned char *adjusted_dst_end = dst_end - 1; |
2366 Lisp_Object translation_table | 2366 Lisp_Object translation_table |
2367 = coding->character_translation_table_for_encode; | 2367 = coding->translation_table_for_encode; |
2368 int result = CODING_FINISH_NORMAL; | 2368 int result = CODING_FINISH_NORMAL; |
2369 | 2369 |
2370 if (!NILP (Venable_character_translation) && NILP (translation_table)) | 2370 if (!NILP (Venable_character_translation) && NILP (translation_table)) |
2371 translation_table = Vstandard_character_translation_table_for_encode; | 2371 translation_table = Vstandard_translation_table_for_encode; |
2372 | 2372 |
2373 coding->consumed_char = 0; | 2373 coding->consumed_char = 0; |
2374 coding->fake_multibyte = 0; | 2374 coding->fake_multibyte = 0; |
2375 while (src < src_end && (dst_bytes | 2375 while (src < src_end && (dst_bytes |
2376 ? (dst < adjusted_dst_end) | 2376 ? (dst < adjusted_dst_end) |
2814 return 0; | 2814 return 0; |
2815 } | 2815 } |
2816 | 2816 |
2817 /* Initialize remaining fields. */ | 2817 /* Initialize remaining fields. */ |
2818 coding->composing = 0; | 2818 coding->composing = 0; |
2819 coding->character_translation_table_for_decode = Qnil; | 2819 coding->translation_table_for_decode = Qnil; |
2820 coding->character_translation_table_for_encode = Qnil; | 2820 coding->translation_table_for_encode = Qnil; |
2821 | 2821 |
2822 /* Get values of coding system properties: | 2822 /* Get values of coding system properties: |
2823 `post-read-conversion', `pre-write-conversion', | 2823 `post-read-conversion', `pre-write-conversion', |
2824 `character-translation-table-for-decode', | 2824 `translation-table-for-decode', `translation-table-for-encode'. */ |
2825 `character-translation-table-for-encode'. */ | |
2826 plist = XVECTOR (coding_spec)->contents[3]; | 2825 plist = XVECTOR (coding_spec)->contents[3]; |
2827 coding->post_read_conversion = Fplist_get (plist, Qpost_read_conversion); | 2826 coding->post_read_conversion = Fplist_get (plist, Qpost_read_conversion); |
2828 coding->pre_write_conversion = Fplist_get (plist, Qpre_write_conversion); | 2827 coding->pre_write_conversion = Fplist_get (plist, Qpre_write_conversion); |
2829 val = Fplist_get (plist, Qcharacter_translation_table_for_decode); | 2828 val = Fplist_get (plist, Qtranslation_table_for_decode); |
2830 if (SYMBOLP (val)) | 2829 if (SYMBOLP (val)) |
2831 val = Fget (val, Qcharacter_translation_table_for_decode); | 2830 val = Fget (val, Qtranslation_table_for_decode); |
2832 coding->character_translation_table_for_decode | 2831 coding->translation_table_for_decode = CHAR_TABLE_P (val) ? val : Qnil; |
2833 = CHAR_TABLE_P (val) ? val : Qnil; | 2832 val = Fplist_get (plist, Qtranslation_table_for_encode); |
2834 val = Fplist_get (plist, Qcharacter_translation_table_for_encode); | |
2835 if (SYMBOLP (val)) | 2833 if (SYMBOLP (val)) |
2836 val = Fget (val, Qcharacter_translation_table_for_encode); | 2834 val = Fget (val, Qtranslation_table_for_encode); |
2837 coding->character_translation_table_for_encode | 2835 coding->translation_table_for_encode = CHAR_TABLE_P (val) ? val : Qnil; |
2838 = CHAR_TABLE_P (val) ? val : Qnil; | |
2839 val = Fplist_get (plist, Qcoding_category); | 2836 val = Fplist_get (plist, Qcoding_category); |
2840 if (!NILP (val)) | 2837 if (!NILP (val)) |
2841 { | 2838 { |
2842 val = Fget (val, Qcoding_category_index); | 2839 val = Fget (val, Qcoding_category_index); |
2843 if (INTEGERP (val)) | 2840 if (INTEGERP (val)) |
5138 Fput (XVECTOR (Vcoding_category_table)->contents[i], | 5135 Fput (XVECTOR (Vcoding_category_table)->contents[i], |
5139 Qcoding_category_index, make_number (i)); | 5136 Qcoding_category_index, make_number (i)); |
5140 } | 5137 } |
5141 } | 5138 } |
5142 | 5139 |
5143 Qcharacter_translation_table = intern ("character-translation-table"); | 5140 Qtranslation_table = intern ("translation-table"); |
5144 staticpro (&Qcharacter_translation_table); | 5141 staticpro (&Qtranslation_table); |
5145 Fput (Qcharacter_translation_table, Qchar_table_extra_slots, | 5142 Fput (Qtranslation_table, Qchar_table_extra_slots, make_number (0)); |
5146 make_number (0)); | 5143 |
5147 | 5144 Qtranslation_table_id = intern ("translation-table-id"); |
5148 Qcharacter_translation_table_id = intern ("character-translation-table-id"); | 5145 staticpro (&Qtranslation_table_id); |
5149 staticpro (&Qcharacter_translation_table_id); | 5146 |
5150 | 5147 Qtranslation_table_for_decode = intern ("translation-table-for-decode"); |
5151 Qcharacter_translation_table_for_decode | 5148 staticpro (&Qtranslation_table_for_decode); |
5152 = intern ("character-translation-table-for-decode"); | 5149 |
5153 staticpro (&Qcharacter_translation_table_for_decode); | 5150 Qtranslation_table_for_encode = intern ("translation-table-for-encode"); |
5154 | 5151 staticpro (&Qtranslation_table_for_encode); |
5155 Qcharacter_translation_table_for_encode | |
5156 = intern ("character-translation-table-for-encode"); | |
5157 staticpro (&Qcharacter_translation_table_for_encode); | |
5158 | 5152 |
5159 Qsafe_charsets = intern ("safe-charsets"); | 5153 Qsafe_charsets = intern ("safe-charsets"); |
5160 staticpro (&Qsafe_charsets); | 5154 staticpro (&Qsafe_charsets); |
5161 | 5155 |
5162 Qemacs_mule = intern ("emacs-mule"); | 5156 Qemacs_mule = intern ("emacs-mule"); |
5310 DEFVAR_INT ("eol-mnemonic-undecided", &eol_mnemonic_undecided, | 5304 DEFVAR_INT ("eol-mnemonic-undecided", &eol_mnemonic_undecided, |
5311 "Mnemonic character indicating end-of-line format is not yet decided."); | 5305 "Mnemonic character indicating end-of-line format is not yet decided."); |
5312 eol_mnemonic_undecided = ':'; | 5306 eol_mnemonic_undecided = ':'; |
5313 | 5307 |
5314 DEFVAR_LISP ("enable-character-translation", &Venable_character_translation, | 5308 DEFVAR_LISP ("enable-character-translation", &Venable_character_translation, |
5315 "Non-nil means ISO 2022 encoder/decoder do character translation."); | 5309 "*Non-nil enables character translation while encoding and decoding."); |
5316 Venable_character_translation = Qt; | 5310 Venable_character_translation = Qt; |
5317 | 5311 |
5318 DEFVAR_LISP ("standard-character-translation-table-for-decode", | 5312 DEFVAR_LISP ("standard-translation-table-for-decode", |
5319 &Vstandard_character_translation_table_for_decode, | 5313 &Vstandard_translation_table_for_decode, |
5320 "Table for translating characters while decoding."); | 5314 "Table for translating characters while decoding."); |
5321 Vstandard_character_translation_table_for_decode = Qnil; | 5315 Vstandard_translation_table_for_decode = Qnil; |
5322 | 5316 |
5323 DEFVAR_LISP ("standard-character-translation-table-for-encode", | 5317 DEFVAR_LISP ("standard-translation-table-for-encode", |
5324 &Vstandard_character_translation_table_for_encode, | 5318 &Vstandard_translation_table_for_encode, |
5325 "Table for translationg characters while encoding."); | 5319 "Table for translationg characters while encoding."); |
5326 Vstandard_character_translation_table_for_encode = Qnil; | 5320 Vstandard_translation_table_for_encode = Qnil; |
5327 | 5321 |
5328 DEFVAR_LISP ("charset-revision-table", &Vcharset_revision_alist, | 5322 DEFVAR_LISP ("charset-revision-table", &Vcharset_revision_alist, |
5329 "Alist of charsets vs revision numbers.\n\ | 5323 "Alist of charsets vs revision numbers.\n\ |
5330 While encoding, if a charset (car part of an element) is found,\n\ | 5324 While encoding, if a charset (car part of an element) is found,\n\ |
5331 designate it with the escape sequence identifing revision (cdr part of the element)."); | 5325 designate it with the escape sequence identifing revision (cdr part of the element)."); |