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 }