aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorKenichi Handa2002-09-03 04:11:28 +0000
committerKenichi Handa2002-09-03 04:11:28 +0000
commit3fd3136672d50515decf72ea797b5abe81ffe70a (patch)
treee4febf26011df92618f4ac2b7448d9cfb4956052 /src
parentb7dbcc196d61d25d8bf82617bc951b98f0f24de7 (diff)
downloademacs-3fd3136672d50515decf72ea797b5abe81ffe70a.tar.gz
emacs-3fd3136672d50515decf72ea797b5abe81ffe70a.zip
*** empty log message ***
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog108
-rw-r--r--src/charset.h3
2 files changed, 110 insertions, 1 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index b2479bb0713..b18851b32f0 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,111 @@
12002-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
12002-08-23 Kenichi Handa <handa@etl.go.jp> 1092002-08-23 Kenichi Handa <handa@etl.go.jp>
2 110
3 * xfaces.c (QCfontset): New variable. 111 * xfaces.c (QCfontset): New variable.
diff --git a/src/charset.h b/src/charset.h
index a8b85b14366..5b16dd12271 100644
--- a/src/charset.h
+++ b/src/charset.h
@@ -511,11 +511,12 @@ extern Lisp_Object Qcharsetp;
511extern Lisp_Object Qascii, Qunicode; 511extern Lisp_Object Qascii, Qunicode;
512extern int charset_ascii, charset_eight_bit; 512extern int charset_ascii, charset_eight_bit;
513extern int charset_iso_8859_1; 513extern int charset_iso_8859_1;
514extern int charset_unibyte;
515extern int charset_jisx0201_roman; 514extern int charset_jisx0201_roman;
516extern int charset_jisx0208_1978; 515extern int charset_jisx0208_1978;
517extern int charset_jisx0208; 516extern int charset_jisx0208;
518 517
518extern int charset_unibyte;
519
519extern struct charset *char_charset P_ ((int, Lisp_Object, unsigned *)); 520extern struct charset *char_charset P_ ((int, Lisp_Object, unsigned *));
520extern Lisp_Object charset_attributes P_ ((int)); 521extern Lisp_Object charset_attributes P_ ((int));
521 522