Mercurial > emacs
comparison src/charset.c @ 95260:b1fb1a9bf2c2
(Qemacs, charset_emacs): New variables.
(char_charset): Fix for non-Unicode characters.
(syms_of_charset): Define charset_emacs.
author | Kenichi Handa <handa@m17n.org> |
---|---|
date | Fri, 23 May 2008 12:48:44 +0000 |
parents | 0221518ac261 |
children | 04a952ac356f |
comparison
equal
deleted
inserted
replaced
95259:34d4840c6fd2 | 95260:b1fb1a9bf2c2 |
---|---|
72 /* Special charset symbols. */ | 72 /* Special charset symbols. */ |
73 Lisp_Object Qascii; | 73 Lisp_Object Qascii; |
74 Lisp_Object Qeight_bit; | 74 Lisp_Object Qeight_bit; |
75 Lisp_Object Qiso_8859_1; | 75 Lisp_Object Qiso_8859_1; |
76 Lisp_Object Qunicode; | 76 Lisp_Object Qunicode; |
77 Lisp_Object Qemacs; | |
77 | 78 |
78 /* The corresponding charsets. */ | 79 /* The corresponding charsets. */ |
79 int charset_ascii; | 80 int charset_ascii; |
80 int charset_eight_bit; | 81 int charset_eight_bit; |
81 int charset_iso_8859_1; | 82 int charset_iso_8859_1; |
82 int charset_unicode; | 83 int charset_unicode; |
84 int charset_emacs; | |
83 | 85 |
84 /* The other special charsets. */ | 86 /* The other special charsets. */ |
85 int charset_jisx0201_roman; | 87 int charset_jisx0201_roman; |
86 int charset_jisx0208_1978; | 88 int charset_jisx0208_1978; |
87 int charset_jisx0208; | 89 int charset_jisx0208; |
1812 unsigned *code_return; | 1814 unsigned *code_return; |
1813 { | 1815 { |
1814 if (NILP (charset_list)) | 1816 if (NILP (charset_list)) |
1815 charset_list = Vcharset_ordered_list; | 1817 charset_list = Vcharset_ordered_list; |
1816 | 1818 |
1817 while (CONSP (charset_list) | 1819 while (CONSP (charset_list)) |
1818 && ! EQ (charset_list, Vcharset_non_preferred_head)) | |
1819 { | 1820 { |
1820 struct charset *charset = CHARSET_FROM_ID (XINT (XCAR (charset_list))); | 1821 struct charset *charset = CHARSET_FROM_ID (XINT (XCAR (charset_list))); |
1821 unsigned code = ENCODE_CHAR (charset, c); | 1822 unsigned code = ENCODE_CHAR (charset, c); |
1822 | 1823 |
1823 if (code != CHARSET_INVALID_CODE (charset)) | 1824 if (code != CHARSET_INVALID_CODE (charset)) |
1825 if (code_return) | 1826 if (code_return) |
1826 *code_return = code; | 1827 *code_return = code; |
1827 return charset; | 1828 return charset; |
1828 } | 1829 } |
1829 charset_list = XCDR (charset_list); | 1830 charset_list = XCDR (charset_list); |
1830 } | 1831 if (c <= MAX_UNICODE_CHAR |
1831 return (c <= MAX_UNICODE_CHAR ? CHARSET_FROM_ID (charset_unicode) | 1832 && EQ (charset_list, Vcharset_non_preferred_head)) |
1833 return CHARSET_FROM_ID (charset_unicode); | |
1834 } | |
1835 return (c <= MAX_5_BYTE_CHAR ? CHARSET_FROM_ID (charset_emacs) | |
1832 : CHARSET_FROM_ID (charset_eight_bit)); | 1836 : CHARSET_FROM_ID (charset_eight_bit)); |
1833 } | 1837 } |
1834 | 1838 |
1835 | 1839 |
1836 DEFUN ("split-char", Fsplit_char, Ssplit_char, 1, 1, 0, | 1840 DEFUN ("split-char", Fsplit_char, Ssplit_char, 1, 1, 0, |
2071 { | 2075 { |
2072 DEFSYM (Qcharsetp, "charsetp"); | 2076 DEFSYM (Qcharsetp, "charsetp"); |
2073 | 2077 |
2074 DEFSYM (Qascii, "ascii"); | 2078 DEFSYM (Qascii, "ascii"); |
2075 DEFSYM (Qunicode, "unicode"); | 2079 DEFSYM (Qunicode, "unicode"); |
2080 DEFSYM (Qemacs, "emacs"); | |
2076 DEFSYM (Qeight_bit, "eight-bit"); | 2081 DEFSYM (Qeight_bit, "eight-bit"); |
2077 DEFSYM (Qiso_8859_1, "iso-8859-1"); | 2082 DEFSYM (Qiso_8859_1, "iso-8859-1"); |
2078 | 2083 |
2079 DEFSYM (Qgl, "gl"); | 2084 DEFSYM (Qgl, "gl"); |
2080 DEFSYM (Qgr, "gr"); | 2085 DEFSYM (Qgr, "gr"); |
2152 = define_charset_internal (Qiso_8859_1, 1, "\x00\xFF\x00\x00\x00\x00", | 2157 = define_charset_internal (Qiso_8859_1, 1, "\x00\xFF\x00\x00\x00\x00", |
2153 0, 255, -1, -1, -1, 1, 0, 0); | 2158 0, 255, -1, -1, -1, 1, 0, 0); |
2154 charset_unicode | 2159 charset_unicode |
2155 = define_charset_internal (Qunicode, 3, "\x00\xFF\x00\xFF\x00\x10", | 2160 = define_charset_internal (Qunicode, 3, "\x00\xFF\x00\xFF\x00\x10", |
2156 0, MAX_UNICODE_CHAR, -1, 0, -1, 1, 0, 0); | 2161 0, MAX_UNICODE_CHAR, -1, 0, -1, 1, 0, 0); |
2162 charset_emacs | |
2163 = define_charset_internal (Qemacs, 3, "\x00\xFF\x00\xFF\x00\x3F", | |
2164 0, MAX_5_BYTE_CHAR, -1, 0, -1, 1, 1, 0); | |
2157 charset_eight_bit | 2165 charset_eight_bit |
2158 = define_charset_internal (Qeight_bit, 1, "\x80\xFF\x00\x00\x00\x00", | 2166 = define_charset_internal (Qeight_bit, 1, "\x80\xFF\x00\x00\x00\x00", |
2159 128, 255, -1, 0, -1, 0, 1, | 2167 128, 255, -1, 0, -1, 0, 1, |
2160 MAX_5_BYTE_CHAR + 1); | 2168 MAX_5_BYTE_CHAR + 1); |
2161 } | 2169 } |