Mercurial > emacs
annotate src/casefiddle.c @ 25177:0ac130f2181a
(outline-previous-heading): New function.
(outline-up-heading-all): Use outline-previous-heading.
(outline-next-heading): Delete definition inserted yesterday.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Thu, 05 Aug 1999 14:50:30 +0000 |
parents | 59b74d3add13 |
children | 4065a85ee695 |
rev | line source |
---|---|
118 | 1 /* GNU Emacs case conversion functions. |
20708 | 2 Copyright (C) 1985, 1994, 1997 Free Software Foundation, Inc. |
118 | 3 |
4 This file is part of GNU Emacs. | |
5 | |
6 GNU Emacs is free software; you can redistribute it and/or modify | |
7 it under the terms of the GNU General Public License as published by | |
12244 | 8 the Free Software Foundation; either version 2, or (at your option) |
118 | 9 any later version. |
10 | |
11 GNU Emacs is distributed in the hope that it will be useful, | |
12 but WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
14 GNU General Public License for more details. | |
15 | |
16 You should have received a copy of the GNU General Public License | |
17 along with GNU Emacs; see the file COPYING. If not, write to | |
14186
ee40177f6c68
Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents:
14063
diff
changeset
|
18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
ee40177f6c68
Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents:
14063
diff
changeset
|
19 Boston, MA 02111-1307, USA. */ |
118 | 20 |
21 | |
4696
1fc792473491
Include <config.h> instead of "config.h".
Roland McGrath <roland@gnu.org>
parents:
2822
diff
changeset
|
22 #include <config.h> |
118 | 23 #include "lisp.h" |
24 #include "buffer.h" | |
17816 | 25 #include "charset.h" |
118 | 26 #include "commands.h" |
27 #include "syntax.h" | |
28 | |
29 enum case_action {CASE_UP, CASE_DOWN, CASE_CAPITALIZE, CASE_CAPITALIZE_UP}; | |
17816 | 30 |
31 Lisp_Object Qidentity; | |
118 | 32 |
33 Lisp_Object | |
34 casify_object (flag, obj) | |
35 enum case_action flag; | |
36 Lisp_Object obj; | |
37 { | |
38 register int i, c, len; | |
39 register int inword = flag == CASE_DOWN; | |
17816 | 40 Lisp_Object tem; |
118 | 41 |
15170
0d698228e98c
(casify_region, casify_object):
Richard M. Stallman <rms@gnu.org>
parents:
14186
diff
changeset
|
42 /* If the case table is flagged as modified, rescan it. */ |
0d698228e98c
(casify_region, casify_object):
Richard M. Stallman <rms@gnu.org>
parents:
14186
diff
changeset
|
43 if (NILP (XCHAR_TABLE (current_buffer->downcase_table)->extras[1])) |
0d698228e98c
(casify_region, casify_object):
Richard M. Stallman <rms@gnu.org>
parents:
14186
diff
changeset
|
44 Fset_case_table (current_buffer->downcase_table); |
0d698228e98c
(casify_region, casify_object):
Richard M. Stallman <rms@gnu.org>
parents:
14186
diff
changeset
|
45 |
118 | 46 while (1) |
47 { | |
9137
412e94c1dbf2
(casify_object): Use type test macros.
Karl Heuer <kwzh@gnu.org>
parents:
9053
diff
changeset
|
48 if (INTEGERP (obj)) |
118 | 49 { |
22506
2107e25fa56f
(casify_object): Cope with modifier bits in character.
Karl Heuer <kwzh@gnu.org>
parents:
21514
diff
changeset
|
50 int flagbits = (CHAR_ALT | CHAR_SUPER | CHAR_HYPER |
2107e25fa56f
(casify_object): Cope with modifier bits in character.
Karl Heuer <kwzh@gnu.org>
parents:
21514
diff
changeset
|
51 | CHAR_SHIFT | CHAR_CTL | CHAR_META); |
2107e25fa56f
(casify_object): Cope with modifier bits in character.
Karl Heuer <kwzh@gnu.org>
parents:
21514
diff
changeset
|
52 int flags = XINT (obj) & flagbits; |
2107e25fa56f
(casify_object): Cope with modifier bits in character.
Karl Heuer <kwzh@gnu.org>
parents:
21514
diff
changeset
|
53 |
2107e25fa56f
(casify_object): Cope with modifier bits in character.
Karl Heuer <kwzh@gnu.org>
parents:
21514
diff
changeset
|
54 c = DOWNCASE (XFASTINT (obj) & ~flagbits); |
18136
015e9e4a90ed
(casify_object): Fix bug on handling a character
Kenichi Handa <handa@m17n.org>
parents:
18005
diff
changeset
|
55 if (inword) |
22506
2107e25fa56f
(casify_object): Cope with modifier bits in character.
Karl Heuer <kwzh@gnu.org>
parents:
21514
diff
changeset
|
56 XSETFASTINT (obj, c | flags); |
2107e25fa56f
(casify_object): Cope with modifier bits in character.
Karl Heuer <kwzh@gnu.org>
parents:
21514
diff
changeset
|
57 else if (c == (XFASTINT (obj) & ~flagbits)) |
18136
015e9e4a90ed
(casify_object): Fix bug on handling a character
Kenichi Handa <handa@m17n.org>
parents:
18005
diff
changeset
|
58 { |
22506
2107e25fa56f
(casify_object): Cope with modifier bits in character.
Karl Heuer <kwzh@gnu.org>
parents:
21514
diff
changeset
|
59 c = UPCASE1 ((XFASTINT (obj) & ~flagbits)); |
2107e25fa56f
(casify_object): Cope with modifier bits in character.
Karl Heuer <kwzh@gnu.org>
parents:
21514
diff
changeset
|
60 XSETFASTINT (obj, c | flags); |
18136
015e9e4a90ed
(casify_object): Fix bug on handling a character
Kenichi Handa <handa@m17n.org>
parents:
18005
diff
changeset
|
61 } |
118 | 62 return obj; |
63 } | |
20611
e351676e5044
(casify_object): Scan string by bytes and chars.
Richard M. Stallman <rms@gnu.org>
parents:
20543
diff
changeset
|
64 |
9137
412e94c1dbf2
(casify_object): Use type test macros.
Karl Heuer <kwzh@gnu.org>
parents:
9053
diff
changeset
|
65 if (STRINGP (obj)) |
118 | 66 { |
20611
e351676e5044
(casify_object): Scan string by bytes and chars.
Richard M. Stallman <rms@gnu.org>
parents:
20543
diff
changeset
|
67 int multibyte = STRING_MULTIBYTE (obj); |
18005
ad95aa134d60
(casify_object): Handle multibyte characters.
Kenichi Handa <handa@m17n.org>
parents:
17816
diff
changeset
|
68 |
118 | 69 obj = Fcopy_sequence (obj); |
21244
50929073a0ba
Use STRING_BYTES and SET_STRING_BYTES.
Richard M. Stallman <rms@gnu.org>
parents:
20708
diff
changeset
|
70 len = STRING_BYTES (XSTRING (obj)); |
20611
e351676e5044
(casify_object): Scan string by bytes and chars.
Richard M. Stallman <rms@gnu.org>
parents:
20543
diff
changeset
|
71 |
e351676e5044
(casify_object): Scan string by bytes and chars.
Richard M. Stallman <rms@gnu.org>
parents:
20543
diff
changeset
|
72 /* Scan all single-byte characters from start of string. */ |
e351676e5044
(casify_object): Scan string by bytes and chars.
Richard M. Stallman <rms@gnu.org>
parents:
20543
diff
changeset
|
73 for (i = 0; i < len;) |
118 | 74 { |
75 c = XSTRING (obj)->data[i]; | |
20611
e351676e5044
(casify_object): Scan string by bytes and chars.
Richard M. Stallman <rms@gnu.org>
parents:
20543
diff
changeset
|
76 |
18005
ad95aa134d60
(casify_object): Handle multibyte characters.
Kenichi Handa <handa@m17n.org>
parents:
17816
diff
changeset
|
77 if (multibyte && c >= 0x80) |
ad95aa134d60
(casify_object): Handle multibyte characters.
Kenichi Handa <handa@m17n.org>
parents:
17816
diff
changeset
|
78 /* A multibyte character can't be handled in this |
ad95aa134d60
(casify_object): Handle multibyte characters.
Kenichi Handa <handa@m17n.org>
parents:
17816
diff
changeset
|
79 simple loop. */ |
ad95aa134d60
(casify_object): Handle multibyte characters.
Kenichi Handa <handa@m17n.org>
parents:
17816
diff
changeset
|
80 break; |
9052
6de22822cf72
(upcase_initials): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7307
diff
changeset
|
81 if (inword && flag != CASE_CAPITALIZE_UP) |
118 | 82 c = DOWNCASE (c); |
9052
6de22822cf72
(upcase_initials): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7307
diff
changeset
|
83 else if (!UPPERCASEP (c) |
6de22822cf72
(upcase_initials): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7307
diff
changeset
|
84 && (!inword || flag != CASE_CAPITALIZE_UP)) |
118 | 85 c = UPCASE1 (c); |
20611
e351676e5044
(casify_object): Scan string by bytes and chars.
Richard M. Stallman <rms@gnu.org>
parents:
20543
diff
changeset
|
86 /* If this char won't fit in a single-byte string. |
e351676e5044
(casify_object): Scan string by bytes and chars.
Richard M. Stallman <rms@gnu.org>
parents:
20543
diff
changeset
|
87 fall out to the multibyte case. */ |
e351676e5044
(casify_object): Scan string by bytes and chars.
Richard M. Stallman <rms@gnu.org>
parents:
20543
diff
changeset
|
88 if (multibyte ? ! ASCII_BYTE_P (c) |
e351676e5044
(casify_object): Scan string by bytes and chars.
Richard M. Stallman <rms@gnu.org>
parents:
20543
diff
changeset
|
89 : ! SINGLE_BYTE_CHAR_P (c)) |
e351676e5044
(casify_object): Scan string by bytes and chars.
Richard M. Stallman <rms@gnu.org>
parents:
20543
diff
changeset
|
90 break; |
e351676e5044
(casify_object): Scan string by bytes and chars.
Richard M. Stallman <rms@gnu.org>
parents:
20543
diff
changeset
|
91 |
118 | 92 XSTRING (obj)->data[i] = c; |
9052
6de22822cf72
(upcase_initials): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7307
diff
changeset
|
93 if ((int) flag >= (int) CASE_CAPITALIZE) |
118 | 94 inword = SYNTAX (c) == Sword; |
20611
e351676e5044
(casify_object): Scan string by bytes and chars.
Richard M. Stallman <rms@gnu.org>
parents:
20543
diff
changeset
|
95 i++; |
118 | 96 } |
20611
e351676e5044
(casify_object): Scan string by bytes and chars.
Richard M. Stallman <rms@gnu.org>
parents:
20543
diff
changeset
|
97 |
e351676e5044
(casify_object): Scan string by bytes and chars.
Richard M. Stallman <rms@gnu.org>
parents:
20543
diff
changeset
|
98 /* If we didn't do the whole string as single-byte, |
e351676e5044
(casify_object): Scan string by bytes and chars.
Richard M. Stallman <rms@gnu.org>
parents:
20543
diff
changeset
|
99 scan the rest in a more complex way. */ |
18005
ad95aa134d60
(casify_object): Handle multibyte characters.
Kenichi Handa <handa@m17n.org>
parents:
17816
diff
changeset
|
100 if (i < len) |
ad95aa134d60
(casify_object): Handle multibyte characters.
Kenichi Handa <handa@m17n.org>
parents:
17816
diff
changeset
|
101 { |
ad95aa134d60
(casify_object): Handle multibyte characters.
Kenichi Handa <handa@m17n.org>
parents:
17816
diff
changeset
|
102 /* The work is not yet finished because of a multibyte |
ad95aa134d60
(casify_object): Handle multibyte characters.
Kenichi Handa <handa@m17n.org>
parents:
17816
diff
changeset
|
103 character just encountered. */ |
23476
a1abe3ae2cd0
(casify_object): Use make_string instead of
Kenichi Handa <handa@m17n.org>
parents:
22506
diff
changeset
|
104 int fromlen, tolen, j_byte = i; |
18005
ad95aa134d60
(casify_object): Handle multibyte characters.
Kenichi Handa <handa@m17n.org>
parents:
17816
diff
changeset
|
105 char *buf |
ad95aa134d60
(casify_object): Handle multibyte characters.
Kenichi Handa <handa@m17n.org>
parents:
17816
diff
changeset
|
106 = (char *) alloca ((len - i) * MAX_LENGTH_OF_MULTI_BYTE_FORM |
ad95aa134d60
(casify_object): Handle multibyte characters.
Kenichi Handa <handa@m17n.org>
parents:
17816
diff
changeset
|
107 + i); |
20543
4dbda4b7c66f
(casify_region): Scan in bytes and chars.
Richard M. Stallman <rms@gnu.org>
parents:
18613
diff
changeset
|
108 unsigned char *str, workbuf[4]; |
18005
ad95aa134d60
(casify_object): Handle multibyte characters.
Kenichi Handa <handa@m17n.org>
parents:
17816
diff
changeset
|
109 |
ad95aa134d60
(casify_object): Handle multibyte characters.
Kenichi Handa <handa@m17n.org>
parents:
17816
diff
changeset
|
110 /* Copy data already handled. */ |
ad95aa134d60
(casify_object): Handle multibyte characters.
Kenichi Handa <handa@m17n.org>
parents:
17816
diff
changeset
|
111 bcopy (XSTRING (obj)->data, buf, i); |
ad95aa134d60
(casify_object): Handle multibyte characters.
Kenichi Handa <handa@m17n.org>
parents:
17816
diff
changeset
|
112 |
20611
e351676e5044
(casify_object): Scan string by bytes and chars.
Richard M. Stallman <rms@gnu.org>
parents:
20543
diff
changeset
|
113 /* From now on, I counts bytes. */ |
18005
ad95aa134d60
(casify_object): Handle multibyte characters.
Kenichi Handa <handa@m17n.org>
parents:
17816
diff
changeset
|
114 while (i < len) |
ad95aa134d60
(casify_object): Handle multibyte characters.
Kenichi Handa <handa@m17n.org>
parents:
17816
diff
changeset
|
115 { |
ad95aa134d60
(casify_object): Handle multibyte characters.
Kenichi Handa <handa@m17n.org>
parents:
17816
diff
changeset
|
116 c = STRING_CHAR_AND_LENGTH (XSTRING (obj)->data + i, |
ad95aa134d60
(casify_object): Handle multibyte characters.
Kenichi Handa <handa@m17n.org>
parents:
17816
diff
changeset
|
117 len - i, fromlen); |
ad95aa134d60
(casify_object): Handle multibyte characters.
Kenichi Handa <handa@m17n.org>
parents:
17816
diff
changeset
|
118 if (inword && flag != CASE_CAPITALIZE_UP) |
ad95aa134d60
(casify_object): Handle multibyte characters.
Kenichi Handa <handa@m17n.org>
parents:
17816
diff
changeset
|
119 c = DOWNCASE (c); |
ad95aa134d60
(casify_object): Handle multibyte characters.
Kenichi Handa <handa@m17n.org>
parents:
17816
diff
changeset
|
120 else if (!UPPERCASEP (c) |
ad95aa134d60
(casify_object): Handle multibyte characters.
Kenichi Handa <handa@m17n.org>
parents:
17816
diff
changeset
|
121 && (!inword || flag != CASE_CAPITALIZE_UP)) |
ad95aa134d60
(casify_object): Handle multibyte characters.
Kenichi Handa <handa@m17n.org>
parents:
17816
diff
changeset
|
122 c = UPCASE1 (c); |
ad95aa134d60
(casify_object): Handle multibyte characters.
Kenichi Handa <handa@m17n.org>
parents:
17816
diff
changeset
|
123 tolen = CHAR_STRING (c, workbuf, str); |
20611
e351676e5044
(casify_object): Scan string by bytes and chars.
Richard M. Stallman <rms@gnu.org>
parents:
20543
diff
changeset
|
124 bcopy (str, buf + j_byte, tolen); |
18005
ad95aa134d60
(casify_object): Handle multibyte characters.
Kenichi Handa <handa@m17n.org>
parents:
17816
diff
changeset
|
125 i += fromlen; |
20611
e351676e5044
(casify_object): Scan string by bytes and chars.
Richard M. Stallman <rms@gnu.org>
parents:
20543
diff
changeset
|
126 j_byte += tolen; |
18005
ad95aa134d60
(casify_object): Handle multibyte characters.
Kenichi Handa <handa@m17n.org>
parents:
17816
diff
changeset
|
127 if ((int) flag >= (int) CASE_CAPITALIZE) |
ad95aa134d60
(casify_object): Handle multibyte characters.
Kenichi Handa <handa@m17n.org>
parents:
17816
diff
changeset
|
128 inword = SYNTAX (c) == Sword; |
ad95aa134d60
(casify_object): Handle multibyte characters.
Kenichi Handa <handa@m17n.org>
parents:
17816
diff
changeset
|
129 } |
24883
59b74d3add13
(casify_object): Use make_multibyte_string
Karl Heuer <kwzh@gnu.org>
parents:
23476
diff
changeset
|
130 obj = make_multibyte_string (buf, XSTRING (obj)->size, |
59b74d3add13
(casify_object): Use make_multibyte_string
Karl Heuer <kwzh@gnu.org>
parents:
23476
diff
changeset
|
131 j_byte); |
18005
ad95aa134d60
(casify_object): Handle multibyte characters.
Kenichi Handa <handa@m17n.org>
parents:
17816
diff
changeset
|
132 } |
118 | 133 return obj; |
134 } | |
1926
952f2a18f83d
* callint.c (Fcall_interactively): Pass the correct number of
Jim Blandy <jimb@redhat.com>
parents:
1505
diff
changeset
|
135 obj = wrong_type_argument (Qchar_or_string_p, obj); |
118 | 136 } |
137 } | |
138 | |
139 DEFUN ("upcase", Fupcase, Supcase, 1, 1, 0, | |
140 "Convert argument to upper case and return that.\n\ | |
141 The argument may be a character or string. The result has the same type.\n\ | |
9053
4887fc1a2dda
(Fupcase_initials_region): New function.
Richard M. Stallman <rms@gnu.org>
parents:
9052
diff
changeset
|
142 The argument object is not altered--the value is a copy.\n\ |
4887fc1a2dda
(Fupcase_initials_region): New function.
Richard M. Stallman <rms@gnu.org>
parents:
9052
diff
changeset
|
143 See also `capitalize', `downcase' and `upcase-initials'.") |
118 | 144 (obj) |
145 Lisp_Object obj; | |
146 { | |
147 return casify_object (CASE_UP, obj); | |
148 } | |
149 | |
150 DEFUN ("downcase", Fdowncase, Sdowncase, 1, 1, 0, | |
151 "Convert argument to lower case and return that.\n\ | |
152 The argument may be a character or string. The result has the same type.\n\ | |
9053
4887fc1a2dda
(Fupcase_initials_region): New function.
Richard M. Stallman <rms@gnu.org>
parents:
9052
diff
changeset
|
153 The argument object is not altered--the value is a copy.") |
118 | 154 (obj) |
155 Lisp_Object obj; | |
156 { | |
157 return casify_object (CASE_DOWN, obj); | |
158 } | |
159 | |
160 DEFUN ("capitalize", Fcapitalize, Scapitalize, 1, 1, 0, | |
161 "Convert argument to capitalized form and return that.\n\ | |
162 This means that each word's first character is upper case\n\ | |
163 and the rest is lower case.\n\ | |
164 The argument may be a character or string. The result has the same type.\n\ | |
9053
4887fc1a2dda
(Fupcase_initials_region): New function.
Richard M. Stallman <rms@gnu.org>
parents:
9052
diff
changeset
|
165 The argument object is not altered--the value is a copy.") |
118 | 166 (obj) |
167 Lisp_Object obj; | |
168 { | |
169 return casify_object (CASE_CAPITALIZE, obj); | |
170 } | |
9052
6de22822cf72
(upcase_initials): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7307
diff
changeset
|
171 |
12089
f7cb17ca1815
(casify_region): Use explicit local vars for start
Karl Heuer <kwzh@gnu.org>
parents:
9299
diff
changeset
|
172 /* Like Fcapitalize but change only the initials. */ |
f7cb17ca1815
(casify_region): Use explicit local vars for start
Karl Heuer <kwzh@gnu.org>
parents:
9299
diff
changeset
|
173 |
9053
4887fc1a2dda
(Fupcase_initials_region): New function.
Richard M. Stallman <rms@gnu.org>
parents:
9052
diff
changeset
|
174 DEFUN ("upcase-initials", Fupcase_initials, Supcase_initials, 1, 1, 0, |
4887fc1a2dda
(Fupcase_initials_region): New function.
Richard M. Stallman <rms@gnu.org>
parents:
9052
diff
changeset
|
175 "Convert the initial of each word in the argument to upper case.\n\ |
4887fc1a2dda
(Fupcase_initials_region): New function.
Richard M. Stallman <rms@gnu.org>
parents:
9052
diff
changeset
|
176 Do not change the other letters of each word.\n\ |
4887fc1a2dda
(Fupcase_initials_region): New function.
Richard M. Stallman <rms@gnu.org>
parents:
9052
diff
changeset
|
177 The argument may be a character or string. The result has the same type.\n\ |
4887fc1a2dda
(Fupcase_initials_region): New function.
Richard M. Stallman <rms@gnu.org>
parents:
9052
diff
changeset
|
178 The argument object is not altered--the value is a copy.") |
4887fc1a2dda
(Fupcase_initials_region): New function.
Richard M. Stallman <rms@gnu.org>
parents:
9052
diff
changeset
|
179 (obj) |
4887fc1a2dda
(Fupcase_initials_region): New function.
Richard M. Stallman <rms@gnu.org>
parents:
9052
diff
changeset
|
180 Lisp_Object obj; |
4887fc1a2dda
(Fupcase_initials_region): New function.
Richard M. Stallman <rms@gnu.org>
parents:
9052
diff
changeset
|
181 { |
4887fc1a2dda
(Fupcase_initials_region): New function.
Richard M. Stallman <rms@gnu.org>
parents:
9052
diff
changeset
|
182 return casify_object (CASE_CAPITALIZE_UP, obj); |
4887fc1a2dda
(Fupcase_initials_region): New function.
Richard M. Stallman <rms@gnu.org>
parents:
9052
diff
changeset
|
183 } |
118 | 184 |
185 /* flag is CASE_UP, CASE_DOWN or CASE_CAPITALIZE or CASE_CAPITALIZE_UP. | |
186 b and e specify range of buffer to operate on. */ | |
187 | |
21514 | 188 void |
118 | 189 casify_region (flag, b, e) |
190 enum case_action flag; | |
191 Lisp_Object b, e; | |
192 { | |
193 register int i; | |
194 register int c; | |
195 register int inword = flag == CASE_DOWN; | |
18005
ad95aa134d60
(casify_object): Handle multibyte characters.
Kenichi Handa <handa@m17n.org>
parents:
17816
diff
changeset
|
196 register int multibyte = !NILP (current_buffer->enable_multibyte_characters); |
12089
f7cb17ca1815
(casify_region): Use explicit local vars for start
Karl Heuer <kwzh@gnu.org>
parents:
9299
diff
changeset
|
197 int start, end; |
20543
4dbda4b7c66f
(casify_region): Scan in bytes and chars.
Richard M. Stallman <rms@gnu.org>
parents:
18613
diff
changeset
|
198 int start_byte, end_byte; |
17816 | 199 Lisp_Object ch, downch, val; |
118 | 200 |
201 if (EQ (b, e)) | |
202 /* Not modifying because nothing marked */ | |
203 return; | |
204 | |
15170
0d698228e98c
(casify_region, casify_object):
Richard M. Stallman <rms@gnu.org>
parents:
14186
diff
changeset
|
205 /* If the case table is flagged as modified, rescan it. */ |
0d698228e98c
(casify_region, casify_object):
Richard M. Stallman <rms@gnu.org>
parents:
14186
diff
changeset
|
206 if (NILP (XCHAR_TABLE (current_buffer->downcase_table)->extras[1])) |
0d698228e98c
(casify_region, casify_object):
Richard M. Stallman <rms@gnu.org>
parents:
14186
diff
changeset
|
207 Fset_case_table (current_buffer->downcase_table); |
0d698228e98c
(casify_region, casify_object):
Richard M. Stallman <rms@gnu.org>
parents:
14186
diff
changeset
|
208 |
118 | 209 validate_region (&b, &e); |
12089
f7cb17ca1815
(casify_region): Use explicit local vars for start
Karl Heuer <kwzh@gnu.org>
parents:
9299
diff
changeset
|
210 start = XFASTINT (b); |
f7cb17ca1815
(casify_region): Use explicit local vars for start
Karl Heuer <kwzh@gnu.org>
parents:
9299
diff
changeset
|
211 end = XFASTINT (e); |
f7cb17ca1815
(casify_region): Use explicit local vars for start
Karl Heuer <kwzh@gnu.org>
parents:
9299
diff
changeset
|
212 modify_region (current_buffer, start, end); |
f7cb17ca1815
(casify_region): Use explicit local vars for start
Karl Heuer <kwzh@gnu.org>
parents:
9299
diff
changeset
|
213 record_change (start, end - start); |
20543
4dbda4b7c66f
(casify_region): Scan in bytes and chars.
Richard M. Stallman <rms@gnu.org>
parents:
18613
diff
changeset
|
214 start_byte = CHAR_TO_BYTE (start); |
4dbda4b7c66f
(casify_region): Scan in bytes and chars.
Richard M. Stallman <rms@gnu.org>
parents:
18613
diff
changeset
|
215 end_byte = CHAR_TO_BYTE (end); |
118 | 216 |
20543
4dbda4b7c66f
(casify_region): Scan in bytes and chars.
Richard M. Stallman <rms@gnu.org>
parents:
18613
diff
changeset
|
217 for (i = start_byte; i < end_byte; i++) |
17816 | 218 { |
18005
ad95aa134d60
(casify_object): Handle multibyte characters.
Kenichi Handa <handa@m17n.org>
parents:
17816
diff
changeset
|
219 c = FETCH_BYTE (i); |
ad95aa134d60
(casify_object): Handle multibyte characters.
Kenichi Handa <handa@m17n.org>
parents:
17816
diff
changeset
|
220 if (multibyte && c >= 0x80) |
ad95aa134d60
(casify_object): Handle multibyte characters.
Kenichi Handa <handa@m17n.org>
parents:
17816
diff
changeset
|
221 /* A multibyte character can't be handled in this simple loop. */ |
ad95aa134d60
(casify_object): Handle multibyte characters.
Kenichi Handa <handa@m17n.org>
parents:
17816
diff
changeset
|
222 break; |
ad95aa134d60
(casify_object): Handle multibyte characters.
Kenichi Handa <handa@m17n.org>
parents:
17816
diff
changeset
|
223 if (inword && flag != CASE_CAPITALIZE_UP) |
ad95aa134d60
(casify_object): Handle multibyte characters.
Kenichi Handa <handa@m17n.org>
parents:
17816
diff
changeset
|
224 c = DOWNCASE (c); |
ad95aa134d60
(casify_object): Handle multibyte characters.
Kenichi Handa <handa@m17n.org>
parents:
17816
diff
changeset
|
225 else if (!UPPERCASEP (c) |
ad95aa134d60
(casify_object): Handle multibyte characters.
Kenichi Handa <handa@m17n.org>
parents:
17816
diff
changeset
|
226 && (!inword || flag != CASE_CAPITALIZE_UP)) |
ad95aa134d60
(casify_object): Handle multibyte characters.
Kenichi Handa <handa@m17n.org>
parents:
17816
diff
changeset
|
227 c = UPCASE1 (c); |
ad95aa134d60
(casify_object): Handle multibyte characters.
Kenichi Handa <handa@m17n.org>
parents:
17816
diff
changeset
|
228 FETCH_BYTE (i) = c; |
ad95aa134d60
(casify_object): Handle multibyte characters.
Kenichi Handa <handa@m17n.org>
parents:
17816
diff
changeset
|
229 if ((int) flag >= (int) CASE_CAPITALIZE) |
ad95aa134d60
(casify_object): Handle multibyte characters.
Kenichi Handa <handa@m17n.org>
parents:
17816
diff
changeset
|
230 inword = SYNTAX (c) == Sword; |
ad95aa134d60
(casify_object): Handle multibyte characters.
Kenichi Handa <handa@m17n.org>
parents:
17816
diff
changeset
|
231 } |
20543
4dbda4b7c66f
(casify_region): Scan in bytes and chars.
Richard M. Stallman <rms@gnu.org>
parents:
18613
diff
changeset
|
232 if (i < end_byte) |
18005
ad95aa134d60
(casify_object): Handle multibyte characters.
Kenichi Handa <handa@m17n.org>
parents:
17816
diff
changeset
|
233 { |
ad95aa134d60
(casify_object): Handle multibyte characters.
Kenichi Handa <handa@m17n.org>
parents:
17816
diff
changeset
|
234 /* The work is not yet finished because of a multibyte character |
ad95aa134d60
(casify_object): Handle multibyte characters.
Kenichi Handa <handa@m17n.org>
parents:
17816
diff
changeset
|
235 just encountered. */ |
20543
4dbda4b7c66f
(casify_region): Scan in bytes and chars.
Richard M. Stallman <rms@gnu.org>
parents:
18613
diff
changeset
|
236 int opoint = PT; |
4dbda4b7c66f
(casify_region): Scan in bytes and chars.
Richard M. Stallman <rms@gnu.org>
parents:
18613
diff
changeset
|
237 int opoint_byte = PT_BYTE; |
4dbda4b7c66f
(casify_region): Scan in bytes and chars.
Richard M. Stallman <rms@gnu.org>
parents:
18613
diff
changeset
|
238 int c2; |
18005
ad95aa134d60
(casify_object): Handle multibyte characters.
Kenichi Handa <handa@m17n.org>
parents:
17816
diff
changeset
|
239 |
20543
4dbda4b7c66f
(casify_region): Scan in bytes and chars.
Richard M. Stallman <rms@gnu.org>
parents:
18613
diff
changeset
|
240 while (i < end_byte) |
17816 | 241 { |
18005
ad95aa134d60
(casify_object): Handle multibyte characters.
Kenichi Handa <handa@m17n.org>
parents:
17816
diff
changeset
|
242 if ((c = FETCH_BYTE (i)) >= 0x80) |
ad95aa134d60
(casify_object): Handle multibyte characters.
Kenichi Handa <handa@m17n.org>
parents:
17816
diff
changeset
|
243 c = FETCH_MULTIBYTE_CHAR (i); |
ad95aa134d60
(casify_object): Handle multibyte characters.
Kenichi Handa <handa@m17n.org>
parents:
17816
diff
changeset
|
244 c2 = c; |
17816 | 245 if (inword && flag != CASE_CAPITALIZE_UP) |
18005
ad95aa134d60
(casify_object): Handle multibyte characters.
Kenichi Handa <handa@m17n.org>
parents:
17816
diff
changeset
|
246 c2 = DOWNCASE (c); |
17816 | 247 else if (!UPPERCASEP (c) |
248 && (!inword || flag != CASE_CAPITALIZE_UP)) | |
18005
ad95aa134d60
(casify_object): Handle multibyte characters.
Kenichi Handa <handa@m17n.org>
parents:
17816
diff
changeset
|
249 c2 = UPCASE1 (c); |
ad95aa134d60
(casify_object): Handle multibyte characters.
Kenichi Handa <handa@m17n.org>
parents:
17816
diff
changeset
|
250 if (c != c2) |
17816 | 251 { |
252 int fromlen, tolen, j; | |
20543
4dbda4b7c66f
(casify_region): Scan in bytes and chars.
Richard M. Stallman <rms@gnu.org>
parents:
18613
diff
changeset
|
253 unsigned char workbuf[4], *str; |
17816 | 254 |
255 /* Handle the most likely case */ | |
18005
ad95aa134d60
(casify_object): Handle multibyte characters.
Kenichi Handa <handa@m17n.org>
parents:
17816
diff
changeset
|
256 if (c < 0400 && c2 < 0400) |
ad95aa134d60
(casify_object): Handle multibyte characters.
Kenichi Handa <handa@m17n.org>
parents:
17816
diff
changeset
|
257 FETCH_BYTE (i) = c2; |
17816 | 258 else if (fromlen = CHAR_STRING (c, workbuf, str), |
18005
ad95aa134d60
(casify_object): Handle multibyte characters.
Kenichi Handa <handa@m17n.org>
parents:
17816
diff
changeset
|
259 tolen = CHAR_STRING (c2, workbuf, str), |
17816 | 260 fromlen == tolen) |
261 { | |
262 for (j = 0; j < tolen; ++j) | |
263 FETCH_BYTE (i + j) = str[j]; | |
264 } | |
265 else | |
266 { | |
267 error ("Can't casify letters that change length"); | |
268 #if 0 /* This is approximately what we'd like to be able to do here */ | |
269 if (tolen < fromlen) | |
270 del_range_1 (i + tolen, i + fromlen, 0); | |
271 else if (tolen > fromlen) | |
272 { | |
273 TEMP_SET_PT (i + fromlen); | |
20543
4dbda4b7c66f
(casify_region): Scan in bytes and chars.
Richard M. Stallman <rms@gnu.org>
parents:
18613
diff
changeset
|
274 insert_1 (str + fromlen, tolen - fromlen, 1, 0, 0); |
17816 | 275 } |
276 #endif | |
277 } | |
278 } | |
279 if ((int) flag >= (int) CASE_CAPITALIZE) | |
18005
ad95aa134d60
(casify_object): Handle multibyte characters.
Kenichi Handa <handa@m17n.org>
parents:
17816
diff
changeset
|
280 inword = SYNTAX (c2) == Sword; |
17816 | 281 INC_POS (i); |
282 } | |
20543
4dbda4b7c66f
(casify_region): Scan in bytes and chars.
Richard M. Stallman <rms@gnu.org>
parents:
18613
diff
changeset
|
283 TEMP_SET_PT_BOTH (opoint, opoint_byte); |
118 | 284 } |
285 | |
12089
f7cb17ca1815
(casify_region): Use explicit local vars for start
Karl Heuer <kwzh@gnu.org>
parents:
9299
diff
changeset
|
286 signal_after_change (start, end - start, end - start); |
118 | 287 } |
288 | |
289 DEFUN ("upcase-region", Fupcase_region, Supcase_region, 2, 2, "r", | |
290 "Convert the region to upper case. In programs, wants two arguments.\n\ | |
291 These arguments specify the starting and ending character numbers of\n\ | |
292 the region to operate on. When used as a command, the text between\n\ | |
293 point and the mark is operated on.\n\ | |
294 See also `capitalize-region'.") | |
14063
ef7d4117c601
(Fupcase_region, Fdowncase_region, Fcapitalize_region,
Erik Naggum <erik@naggum.no>
parents:
12244
diff
changeset
|
295 (beg, end) |
ef7d4117c601
(Fupcase_region, Fdowncase_region, Fcapitalize_region,
Erik Naggum <erik@naggum.no>
parents:
12244
diff
changeset
|
296 Lisp_Object beg, end; |
118 | 297 { |
14063
ef7d4117c601
(Fupcase_region, Fdowncase_region, Fcapitalize_region,
Erik Naggum <erik@naggum.no>
parents:
12244
diff
changeset
|
298 casify_region (CASE_UP, beg, end); |
118 | 299 return Qnil; |
300 } | |
301 | |
302 DEFUN ("downcase-region", Fdowncase_region, Sdowncase_region, 2, 2, "r", | |
303 "Convert the region to lower case. In programs, wants two arguments.\n\ | |
304 These arguments specify the starting and ending character numbers of\n\ | |
305 the region to operate on. When used as a command, the text between\n\ | |
306 point and the mark is operated on.") | |
14063
ef7d4117c601
(Fupcase_region, Fdowncase_region, Fcapitalize_region,
Erik Naggum <erik@naggum.no>
parents:
12244
diff
changeset
|
307 (beg, end) |
ef7d4117c601
(Fupcase_region, Fdowncase_region, Fcapitalize_region,
Erik Naggum <erik@naggum.no>
parents:
12244
diff
changeset
|
308 Lisp_Object beg, end; |
118 | 309 { |
14063
ef7d4117c601
(Fupcase_region, Fdowncase_region, Fcapitalize_region,
Erik Naggum <erik@naggum.no>
parents:
12244
diff
changeset
|
310 casify_region (CASE_DOWN, beg, end); |
118 | 311 return Qnil; |
312 } | |
313 | |
314 DEFUN ("capitalize-region", Fcapitalize_region, Scapitalize_region, 2, 2, "r", | |
315 "Convert the region to capitalized form.\n\ | |
316 Capitalized form means each word's first character is upper case\n\ | |
317 and the rest of it is lower case.\n\ | |
318 In programs, give two arguments, the starting and ending\n\ | |
319 character positions to operate on.") | |
14063
ef7d4117c601
(Fupcase_region, Fdowncase_region, Fcapitalize_region,
Erik Naggum <erik@naggum.no>
parents:
12244
diff
changeset
|
320 (beg, end) |
ef7d4117c601
(Fupcase_region, Fdowncase_region, Fcapitalize_region,
Erik Naggum <erik@naggum.no>
parents:
12244
diff
changeset
|
321 Lisp_Object beg, end; |
118 | 322 { |
14063
ef7d4117c601
(Fupcase_region, Fdowncase_region, Fcapitalize_region,
Erik Naggum <erik@naggum.no>
parents:
12244
diff
changeset
|
323 casify_region (CASE_CAPITALIZE, beg, end); |
118 | 324 return Qnil; |
325 } | |
326 | |
12089
f7cb17ca1815
(casify_region): Use explicit local vars for start
Karl Heuer <kwzh@gnu.org>
parents:
9299
diff
changeset
|
327 /* Like Fcapitalize_region but change only the initials. */ |
f7cb17ca1815
(casify_region): Use explicit local vars for start
Karl Heuer <kwzh@gnu.org>
parents:
9299
diff
changeset
|
328 |
9053
4887fc1a2dda
(Fupcase_initials_region): New function.
Richard M. Stallman <rms@gnu.org>
parents:
9052
diff
changeset
|
329 DEFUN ("upcase-initials-region", Fupcase_initials_region, |
4887fc1a2dda
(Fupcase_initials_region): New function.
Richard M. Stallman <rms@gnu.org>
parents:
9052
diff
changeset
|
330 Supcase_initials_region, 2, 2, "r", |
4887fc1a2dda
(Fupcase_initials_region): New function.
Richard M. Stallman <rms@gnu.org>
parents:
9052
diff
changeset
|
331 "Upcase the initial of each word in the region.\n\ |
4887fc1a2dda
(Fupcase_initials_region): New function.
Richard M. Stallman <rms@gnu.org>
parents:
9052
diff
changeset
|
332 Subsequent letters of each word are not changed.\n\ |
4887fc1a2dda
(Fupcase_initials_region): New function.
Richard M. Stallman <rms@gnu.org>
parents:
9052
diff
changeset
|
333 In programs, give two arguments, the starting and ending\n\ |
4887fc1a2dda
(Fupcase_initials_region): New function.
Richard M. Stallman <rms@gnu.org>
parents:
9052
diff
changeset
|
334 character positions to operate on.") |
14063
ef7d4117c601
(Fupcase_region, Fdowncase_region, Fcapitalize_region,
Erik Naggum <erik@naggum.no>
parents:
12244
diff
changeset
|
335 (beg, end) |
ef7d4117c601
(Fupcase_region, Fdowncase_region, Fcapitalize_region,
Erik Naggum <erik@naggum.no>
parents:
12244
diff
changeset
|
336 Lisp_Object beg, end; |
9053
4887fc1a2dda
(Fupcase_initials_region): New function.
Richard M. Stallman <rms@gnu.org>
parents:
9052
diff
changeset
|
337 { |
14063
ef7d4117c601
(Fupcase_region, Fdowncase_region, Fcapitalize_region,
Erik Naggum <erik@naggum.no>
parents:
12244
diff
changeset
|
338 casify_region (CASE_CAPITALIZE_UP, beg, end); |
9053
4887fc1a2dda
(Fupcase_initials_region): New function.
Richard M. Stallman <rms@gnu.org>
parents:
9052
diff
changeset
|
339 return Qnil; |
4887fc1a2dda
(Fupcase_initials_region): New function.
Richard M. Stallman <rms@gnu.org>
parents:
9052
diff
changeset
|
340 } |
118 | 341 |
342 Lisp_Object | |
6221
c2d29681d218
(operate_on_word): Don't move point; store in *NEWPOINT.
Richard M. Stallman <rms@gnu.org>
parents:
4696
diff
changeset
|
343 operate_on_word (arg, newpoint) |
118 | 344 Lisp_Object arg; |
6221
c2d29681d218
(operate_on_word): Don't move point; store in *NEWPOINT.
Richard M. Stallman <rms@gnu.org>
parents:
4696
diff
changeset
|
345 int *newpoint; |
118 | 346 { |
1505
4f138b03e5ab
* casefiddle.c (operate_on_word): Declare end to be an int, not a
Jim Blandy <jimb@redhat.com>
parents:
484
diff
changeset
|
347 Lisp_Object val; |
6221
c2d29681d218
(operate_on_word): Don't move point; store in *NEWPOINT.
Richard M. Stallman <rms@gnu.org>
parents:
4696
diff
changeset
|
348 int farend; |
12089
f7cb17ca1815
(casify_region): Use explicit local vars for start
Karl Heuer <kwzh@gnu.org>
parents:
9299
diff
changeset
|
349 int iarg; |
118 | 350 |
351 CHECK_NUMBER (arg, 0); | |
12089
f7cb17ca1815
(casify_region): Use explicit local vars for start
Karl Heuer <kwzh@gnu.org>
parents:
9299
diff
changeset
|
352 iarg = XINT (arg); |
16039
855c8d8ba0f0
Change all references from point to PT.
Karl Heuer <kwzh@gnu.org>
parents:
15170
diff
changeset
|
353 farend = scan_words (PT, iarg); |
118 | 354 if (!farend) |
12089
f7cb17ca1815
(casify_region): Use explicit local vars for start
Karl Heuer <kwzh@gnu.org>
parents:
9299
diff
changeset
|
355 farend = iarg > 0 ? ZV : BEGV; |
118 | 356 |
16039
855c8d8ba0f0
Change all references from point to PT.
Karl Heuer <kwzh@gnu.org>
parents:
15170
diff
changeset
|
357 *newpoint = PT > farend ? PT : farend; |
9299
e8c880f2723e
(casify_object, operate_on_word, Fupcase_word, Fdowncase_word,
Karl Heuer <kwzh@gnu.org>
parents:
9137
diff
changeset
|
358 XSETFASTINT (val, farend); |
118 | 359 |
360 return val; | |
361 } | |
362 | |
363 DEFUN ("upcase-word", Fupcase_word, Supcase_word, 1, 1, "p", | |
364 "Convert following word (or ARG words) to upper case, moving over.\n\ | |
365 With negative argument, convert previous words but do not move.\n\ | |
366 See also `capitalize-word'.") | |
367 (arg) | |
368 Lisp_Object arg; | |
369 { | |
6221
c2d29681d218
(operate_on_word): Don't move point; store in *NEWPOINT.
Richard M. Stallman <rms@gnu.org>
parents:
4696
diff
changeset
|
370 Lisp_Object beg, end; |
c2d29681d218
(operate_on_word): Don't move point; store in *NEWPOINT.
Richard M. Stallman <rms@gnu.org>
parents:
4696
diff
changeset
|
371 int newpoint; |
16039
855c8d8ba0f0
Change all references from point to PT.
Karl Heuer <kwzh@gnu.org>
parents:
15170
diff
changeset
|
372 XSETFASTINT (beg, PT); |
6221
c2d29681d218
(operate_on_word): Don't move point; store in *NEWPOINT.
Richard M. Stallman <rms@gnu.org>
parents:
4696
diff
changeset
|
373 end = operate_on_word (arg, &newpoint); |
c2d29681d218
(operate_on_word): Don't move point; store in *NEWPOINT.
Richard M. Stallman <rms@gnu.org>
parents:
4696
diff
changeset
|
374 casify_region (CASE_UP, beg, end); |
c2d29681d218
(operate_on_word): Don't move point; store in *NEWPOINT.
Richard M. Stallman <rms@gnu.org>
parents:
4696
diff
changeset
|
375 SET_PT (newpoint); |
118 | 376 return Qnil; |
377 } | |
378 | |
379 DEFUN ("downcase-word", Fdowncase_word, Sdowncase_word, 1, 1, "p", | |
380 "Convert following word (or ARG words) to lower case, moving over.\n\ | |
381 With negative argument, convert previous words but do not move.") | |
382 (arg) | |
383 Lisp_Object arg; | |
384 { | |
6221
c2d29681d218
(operate_on_word): Don't move point; store in *NEWPOINT.
Richard M. Stallman <rms@gnu.org>
parents:
4696
diff
changeset
|
385 Lisp_Object beg, end; |
c2d29681d218
(operate_on_word): Don't move point; store in *NEWPOINT.
Richard M. Stallman <rms@gnu.org>
parents:
4696
diff
changeset
|
386 int newpoint; |
16039
855c8d8ba0f0
Change all references from point to PT.
Karl Heuer <kwzh@gnu.org>
parents:
15170
diff
changeset
|
387 XSETFASTINT (beg, PT); |
6221
c2d29681d218
(operate_on_word): Don't move point; store in *NEWPOINT.
Richard M. Stallman <rms@gnu.org>
parents:
4696
diff
changeset
|
388 end = operate_on_word (arg, &newpoint); |
c2d29681d218
(operate_on_word): Don't move point; store in *NEWPOINT.
Richard M. Stallman <rms@gnu.org>
parents:
4696
diff
changeset
|
389 casify_region (CASE_DOWN, beg, end); |
c2d29681d218
(operate_on_word): Don't move point; store in *NEWPOINT.
Richard M. Stallman <rms@gnu.org>
parents:
4696
diff
changeset
|
390 SET_PT (newpoint); |
118 | 391 return Qnil; |
392 } | |
393 | |
394 DEFUN ("capitalize-word", Fcapitalize_word, Scapitalize_word, 1, 1, "p", | |
395 "Capitalize the following word (or ARG words), moving over.\n\ | |
396 This gives the word(s) a first character in upper case\n\ | |
397 and the rest lower case.\n\ | |
398 With negative argument, capitalize previous words but do not move.") | |
399 (arg) | |
400 Lisp_Object arg; | |
401 { | |
6221
c2d29681d218
(operate_on_word): Don't move point; store in *NEWPOINT.
Richard M. Stallman <rms@gnu.org>
parents:
4696
diff
changeset
|
402 Lisp_Object beg, end; |
c2d29681d218
(operate_on_word): Don't move point; store in *NEWPOINT.
Richard M. Stallman <rms@gnu.org>
parents:
4696
diff
changeset
|
403 int newpoint; |
16039
855c8d8ba0f0
Change all references from point to PT.
Karl Heuer <kwzh@gnu.org>
parents:
15170
diff
changeset
|
404 XSETFASTINT (beg, PT); |
6221
c2d29681d218
(operate_on_word): Don't move point; store in *NEWPOINT.
Richard M. Stallman <rms@gnu.org>
parents:
4696
diff
changeset
|
405 end = operate_on_word (arg, &newpoint); |
c2d29681d218
(operate_on_word): Don't move point; store in *NEWPOINT.
Richard M. Stallman <rms@gnu.org>
parents:
4696
diff
changeset
|
406 casify_region (CASE_CAPITALIZE, beg, end); |
c2d29681d218
(operate_on_word): Don't move point; store in *NEWPOINT.
Richard M. Stallman <rms@gnu.org>
parents:
4696
diff
changeset
|
407 SET_PT (newpoint); |
118 | 408 return Qnil; |
409 } | |
410 | |
21514 | 411 void |
118 | 412 syms_of_casefiddle () |
413 { | |
17816 | 414 Qidentity = intern ("identity"); |
415 staticpro (&Qidentity); | |
118 | 416 defsubr (&Supcase); |
417 defsubr (&Sdowncase); | |
418 defsubr (&Scapitalize); | |
9053
4887fc1a2dda
(Fupcase_initials_region): New function.
Richard M. Stallman <rms@gnu.org>
parents:
9052
diff
changeset
|
419 defsubr (&Supcase_initials); |
118 | 420 defsubr (&Supcase_region); |
421 defsubr (&Sdowncase_region); | |
422 defsubr (&Scapitalize_region); | |
9053
4887fc1a2dda
(Fupcase_initials_region): New function.
Richard M. Stallman <rms@gnu.org>
parents:
9052
diff
changeset
|
423 defsubr (&Supcase_initials_region); |
118 | 424 defsubr (&Supcase_word); |
425 defsubr (&Sdowncase_word); | |
426 defsubr (&Scapitalize_word); | |
427 } | |
428 | |
21514 | 429 void |
118 | 430 keys_of_casefiddle () |
431 { | |
432 initial_define_key (control_x_map, Ctl('U'), "upcase-region"); | |
484 | 433 Fput (intern ("upcase-region"), Qdisabled, Qt); |
118 | 434 initial_define_key (control_x_map, Ctl('L'), "downcase-region"); |
484 | 435 Fput (intern ("downcase-region"), Qdisabled, Qt); |
436 | |
118 | 437 initial_define_key (meta_map, 'u', "upcase-word"); |
438 initial_define_key (meta_map, 'l', "downcase-word"); | |
439 initial_define_key (meta_map, 'c', "capitalize-word"); | |
440 } |