comparison src/ChangeLog @ 89064:2ac5108292b2

*** empty log message ***
author Kenichi Handa <handa@m17n.org>
date Tue, 03 Sep 2002 04:11:28 +0000
parents aa9fa496b679
children d86aa90b5637
comparison
equal deleted inserted replaced
89063:2054397a36be 89064:2ac5108292b2
1 2002-09-03 Kenichi Handa <handa@etl.go.jp>
2
3 The following changes (and some of 2002-08-20 changes of mine) are
4 for handling syntax, category, and case conversion for unibyte
5 characters by converting them to multibyte on the fly. With these
6 changes, we don't have to setup syntax and case tables for unibyte
7 characters in each language environment.
8
9 * abbrev.c (Fexpand_abbrev): Convert a unibyte character to
10 multibyte if necessary.
11
12 * bytecode.c (Fbyte_code): Likewise.
13
14 * character.h (LEADING_CODE_LATIN_1_MIN)
15 (LEADING_CODE_LATIN_1_MAX): New macros.
16 (unibyte_to_multibyte_table): Extern it.
17 (unibyte_char_to_multibyte): New macro.
18 (MAKE_CHAR_MULTIBYTE): Use unibyte_to_multibyte_table.
19 (CHAR_LEADING_CODE): New macro.
20 (FETCH_STRING_CHAR_AS_MULTIBYTE_ADVANCE): New macro.
21
22 * character.c (unibyte_to_multibyte_table): New variable.
23 (unibyte_char_to_multibyte): Move to character.h and defined as
24 macro.
25 (multibyte_char_to_unibyte): If C is an eight-bit character,
26 convert it to the corresponding byte value.
27
28 * charset.c (Fset_unibyte_charset): If the dimension of CHARSET is
29 not 1, singals an error. Update the elements of
30 unibyte_to_multibyte_table.
31 (init_charset_once): Initialize unibyte_to_multibyte_table.
32 (syms_of_charset): Define the charset `iso-8859-1'.
33
34 * casefiddle.c (casify_object): Fix previous change.
35
36 * cmds.c (internal_self_insert): In a multibyte buffer, insert C
37 as is without converting it to unibyte. In a unibyte buffer,
38 convert C to multibyte before checking the syntax.
39
40 * lisp.h (unibyte_char_to_multibyte): Extern deleted.
41
42 * minibuf.c (Fminibuffer_complete_word): Use the macro
43 FETCH_STRING_CHAR_AS_MULTIBYTE_ADVANCE.
44
45 * regex.h (struct re_pattern_buffer): New member target_multibyte.
46
47 * regex.c (RE_TARGET_MULTIBYTE_P): New macro.
48 (GET_CHAR_BEFORE_2): Check target_multibyte, not multibyte. If
49 that is zero, convert an eight-bit char to multibyte.
50 (MAKE_CHAR_MULTIBYTE, CHAR_LEADING_CODE): New dummy new macros for
51 non-emacs case.
52 (PATFETCH): Convert an eight-bit char to multibyte.
53 (HANDLE_UNIBYTE_RANGE): New macro.
54 (regex_compile): Setup the compiled pattern for multibyte chars
55 even if the given regex string is unibyte. Use PATFETCH_RAW
56 instead of PATFETCH in many places. To handle `charset'
57 specification of unibyte, call HANDLE_UNIBYTE_RANGE. Use bitmap
58 only for ASCII chars.
59 (analyse_first) <exactn>: Simplified because the compiled pattern
60 is multibyte.
61 <charset_not>: Setup fastmap from bitmap only for ASCII chars.
62 <charset>: Use CHAR_LEADING_CODE to get leading codes.
63 <categoryspec>: If multibyte, setup fastmap only for ASCII chars
64 here.
65 (re_compile_fastmap) [emacs]: Call analyse_first with the arg
66 multibyte always 1.
67 (re_search_2) In emacs, set the locale variable multibyte to 1,
68 otherwise to 0. New local variable target_multibyte. Check it
69 to decide the multibyteness of STR1 and STR2. If
70 target_multibyte is zero, convert unibyte chars to multibyte
71 before translating and checking fastmap.
72 (TARGET_CHAR_AND_LENGTH): New macro.
73 (re_match_2_internal): In emacs, set the locale variable multibyte
74 to 1, otherwise to 0. New local variable target_multibyte. Check
75 it to decide the multibyteness of STR1 and STR2. Use
76 TARGET_CHAR_AND_LENGTH to fetch a character from D.
77 <charset, charset_not>: If multibyte is nonzero, check fastmap
78 only for ASCII chars. Call bcmp_translate with
79 target_multibyte, not with multibyte.
80 <begline>: Declare the local variable C as `unsigned'.
81 (bcmp_translate): Change the last arg name to target_multibyte.
82
83 * search.c (compile_pattern_1): Don't adjust the multibyteness of
84 the regexp pattern and the matching target. Set cp->buf.multibyte
85 to the multibyteness of the regexp pattern. Set
86 cp->but.target_multibyte to the multibyteness of the matching
87 target.
88 (wordify): Use FETCH_STRING_CHAR_AS_MULTIBYTE_ADVANCE instead of
89 FETCH_STRING_CHAR_ADVANCE.
90 (Freplace_match): Convert unibyte chars to multibyte.
91
92 * syntax.c (char_quoted): Use FETCH_CHAR_AS_MULTIBYTE to convert
93 unibyte chars to multibyte.
94 (back_comment): Likewise.
95 (scan_words): Likewise.
96 (skip_chars): The arg syntaxp is deleted, and the code for
97 handling syntaxes is moved to skip_syntaxes. Callers changed.
98 Fix the case that the multibyteness of STRING and the current
99 buffer doesn't match.
100 (skip_syntaxes): New function.
101 (SYNTAX_WITH_MULTIBYTE_CHECK): Check C by ASCII_CHAR_P, not by
102 SINGLE_BYTE_CHAR_P.
103 (Fforward_comment): Use FETCH_CHAR_AS_MULTIBYTE to convert unibyte
104 chars to multibyte.
105 (scan_lists): Likewise.
106 (Fbackward_prefix_chars): Likewise.
107 (scan_sexps_forward): Likewise.
108
1 2002-08-23 Kenichi Handa <handa@etl.go.jp> 109 2002-08-23 Kenichi Handa <handa@etl.go.jp>
2 110
3 * xfaces.c (QCfontset): New variable. 111 * xfaces.c (QCfontset): New variable.
4 (LFACE_FONTSET): New macro. 112 (LFACE_FONTSET): New macro.
5 (check_lface_attrs): Check also LFACE_FONTSET_INDEX. 113 (check_lface_attrs): Check also LFACE_FONTSET_INDEX.