annotate src/casefiddle.c @ 97366:d2c211c8ceda

(w32_list_system_processes, w32_system_process_attributes): Add prototypes. (Qeuid, Qegid, Qcomm, Qstate, Qppid, Qpgrp, Qsess, Qttname) (Qminflt, Qmajflt, Qcminflt, Qcmajflt, Qutime, Qstime, Qcutime) (Qpri, Qnice, Qthcount, Qstart, Qvsize, Qrss, Qargs, Quser, Qgroup) (Qetime, Qpcpu, Qpmem, Qtpgid, Qcstime): Add extern declarations.
author Eli Zaretskii <eliz@gnu.org>
date Sat, 09 Aug 2008 17:53:30 +0000
parents 44c693827736
children e038c1a8307c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
118
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1 /* GNU Emacs case conversion functions.
64770
a0d1312ede66 Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 64084
diff changeset
2 Copyright (C) 1985, 1994, 1997, 1998, 1999, 2001, 2002, 2003, 2004,
79759
fc2bcd2a8aad Add 2008 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 78260
diff changeset
3 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
118
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5 This file is part of GNU Emacs.
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
6
94963
8971ddf55736 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93509
diff changeset
7 GNU Emacs is free software: you can redistribute it and/or modify
118
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
8 it under the terms of the GNU General Public License as published by
94963
8971ddf55736 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93509
diff changeset
9 the Free Software Foundation, either version 3 of the License, or
8971ddf55736 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93509
diff changeset
10 (at your option) any later version.
118
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
11
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
12 GNU Emacs is distributed in the hope that it will be useful,
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
15 GNU General Public License for more details.
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
16
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
17 You should have received a copy of the GNU General Public License
94963
8971ddf55736 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93509
diff changeset
18 along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
118
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
19
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
20
4696
1fc792473491 Include <config.h> instead of "config.h".
Roland McGrath <roland@gnu.org>
parents: 2822
diff changeset
21 #include <config.h>
118
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
22 #include "lisp.h"
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
23 #include "buffer.h"
88351
aac41b50c875 Include "character.h" instead of "charset.h".
Kenichi Handa <handa@m17n.org>
parents: 40656
diff changeset
24 #include "character.h"
118
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
25 #include "commands.h"
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
26 #include "syntax.h"
26839
97029667b1a9 Include composite.h.
Kenichi Handa <handa@m17n.org>
parents: 26742
diff changeset
27 #include "composite.h"
39748
42b7a798ff79 Include keymap.h.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 34969
diff changeset
28 #include "keymap.h"
118
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
29
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
30 enum case_action {CASE_UP, CASE_DOWN, CASE_CAPITALIZE, CASE_CAPITALIZE_UP};
17816
380442ed6a1c Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 17059
diff changeset
31
380442ed6a1c Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 17059
diff changeset
32 Lisp_Object Qidentity;
118
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
33
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
34 Lisp_Object
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
35 casify_object (flag, obj)
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
36 enum case_action flag;
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
37 Lisp_Object obj;
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
38 {
89017
6a9e0cb7368b (casify_object): Simplified. Handle the case that
Kenichi Handa <handa@m17n.org>
parents: 88426
diff changeset
39 register int c, c1;
118
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
40 register int inword = flag == CASE_DOWN;
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
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
71827
5e4428007299 (casify_object): Remove loop around wrong_type_argument.
Kim F. Storm <storm@cua.dk>
parents: 68651
diff changeset
46 if (INTEGERP (obj))
118
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
47 {
71827
5e4428007299 (casify_object): Remove loop around wrong_type_argument.
Kim F. Storm <storm@cua.dk>
parents: 68651
diff changeset
48 int flagbits = (CHAR_ALT | CHAR_SUPER | CHAR_HYPER
5e4428007299 (casify_object): Remove loop around wrong_type_argument.
Kim F. Storm <storm@cua.dk>
parents: 68651
diff changeset
49 | CHAR_SHIFT | CHAR_CTL | CHAR_META);
5e4428007299 (casify_object): Remove loop around wrong_type_argument.
Kim F. Storm <storm@cua.dk>
parents: 68651
diff changeset
50 int flags = XINT (obj) & flagbits;
90534
2811bff46a36 (casify_object): Sync with HEAD.
Kenichi Handa <handa@m17n.org>
parents: 90294
diff changeset
51 int multibyte = ! NILP (current_buffer->enable_multibyte_characters);
22506
2107e25fa56f (casify_object): Cope with modifier bits in character.
Karl Heuer <kwzh@gnu.org>
parents: 21514
diff changeset
52
71827
5e4428007299 (casify_object): Remove loop around wrong_type_argument.
Kim F. Storm <storm@cua.dk>
parents: 68651
diff changeset
53 /* If the character has higher bits set
5e4428007299 (casify_object): Remove loop around wrong_type_argument.
Kim F. Storm <storm@cua.dk>
parents: 68651
diff changeset
54 above the flags, return it unchanged.
5e4428007299 (casify_object): Remove loop around wrong_type_argument.
Kim F. Storm <storm@cua.dk>
parents: 68651
diff changeset
55 It is not a real character. */
5e4428007299 (casify_object): Remove loop around wrong_type_argument.
Kim F. Storm <storm@cua.dk>
parents: 68651
diff changeset
56 if ((unsigned) XFASTINT (obj) > (unsigned) flagbits)
5e4428007299 (casify_object): Remove loop around wrong_type_argument.
Kim F. Storm <storm@cua.dk>
parents: 68651
diff changeset
57 return obj;
55743
4f33fa491183 (casify_object): Return OBJ unchanged if not real char.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
58
90534
2811bff46a36 (casify_object): Sync with HEAD.
Kenichi Handa <handa@m17n.org>
parents: 90294
diff changeset
59 c1 = XFASTINT (obj) & ~flagbits;
95328
44c693827736 (casify_object): Try to guess better whether the argument is a byte or a char.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94963
diff changeset
60 /* FIXME: Even if enable-multibyte-characters is nil, we may
44c693827736 (casify_object): Try to guess better whether the argument is a byte or a char.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94963
diff changeset
61 manipulate multibyte chars. This means we have a bug for latin-1
44c693827736 (casify_object): Try to guess better whether the argument is a byte or a char.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94963
diff changeset
62 chars since when we receive an int 128-255 we can't tell whether
44c693827736 (casify_object): Try to guess better whether the argument is a byte or a char.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94963
diff changeset
63 it's an eight-bit byte or a latin-1 char. */
44c693827736 (casify_object): Try to guess better whether the argument is a byte or a char.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94963
diff changeset
64 if (c1 >= 256)
44c693827736 (casify_object): Try to guess better whether the argument is a byte or a char.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94963
diff changeset
65 multibyte = 1;
90534
2811bff46a36 (casify_object): Sync with HEAD.
Kenichi Handa <handa@m17n.org>
parents: 90294
diff changeset
66 if (! multibyte)
2811bff46a36 (casify_object): Sync with HEAD.
Kenichi Handa <handa@m17n.org>
parents: 90294
diff changeset
67 MAKE_CHAR_MULTIBYTE (c1);
2811bff46a36 (casify_object): Sync with HEAD.
Kenichi Handa <handa@m17n.org>
parents: 90294
diff changeset
68 c = DOWNCASE (c1);
71827
5e4428007299 (casify_object): Remove loop around wrong_type_argument.
Kim F. Storm <storm@cua.dk>
parents: 68651
diff changeset
69 if (inword)
5e4428007299 (casify_object): Remove loop around wrong_type_argument.
Kim F. Storm <storm@cua.dk>
parents: 68651
diff changeset
70 XSETFASTINT (obj, c | flags);
5e4428007299 (casify_object): Remove loop around wrong_type_argument.
Kim F. Storm <storm@cua.dk>
parents: 68651
diff changeset
71 else if (c == (XFASTINT (obj) & ~flagbits))
5e4428007299 (casify_object): Remove loop around wrong_type_argument.
Kim F. Storm <storm@cua.dk>
parents: 68651
diff changeset
72 {
90534
2811bff46a36 (casify_object): Sync with HEAD.
Kenichi Handa <handa@m17n.org>
parents: 90294
diff changeset
73 if (! inword)
2811bff46a36 (casify_object): Sync with HEAD.
Kenichi Handa <handa@m17n.org>
parents: 90294
diff changeset
74 c = UPCASE1 (c1);
89017
6a9e0cb7368b (casify_object): Simplified. Handle the case that
Kenichi Handa <handa@m17n.org>
parents: 88426
diff changeset
75 if (! multibyte)
90534
2811bff46a36 (casify_object): Sync with HEAD.
Kenichi Handa <handa@m17n.org>
parents: 90294
diff changeset
76 MAKE_CHAR_UNIBYTE (c);
71827
5e4428007299 (casify_object): Remove loop around wrong_type_argument.
Kim F. Storm <storm@cua.dk>
parents: 68651
diff changeset
77 XSETFASTINT (obj, c | flags);
118
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
78 }
71827
5e4428007299 (casify_object): Remove loop around wrong_type_argument.
Kim F. Storm <storm@cua.dk>
parents: 68651
diff changeset
79 return obj;
5e4428007299 (casify_object): Remove loop around wrong_type_argument.
Kim F. Storm <storm@cua.dk>
parents: 68651
diff changeset
80 }
20611
e351676e5044 (casify_object): Scan string by bytes and chars.
Richard M. Stallman <rms@gnu.org>
parents: 20543
diff changeset
81
93179
139d0b227fdc (casify_object): Avoid pathological N^2 worst case if
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91803
diff changeset
82 if (!STRINGP (obj))
139d0b227fdc (casify_object): Avoid pathological N^2 worst case if
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91803
diff changeset
83 wrong_type_argument (Qchar_or_string_p, obj);
139d0b227fdc (casify_object): Avoid pathological N^2 worst case if
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91803
diff changeset
84 else if (!STRING_MULTIBYTE (obj))
71827
5e4428007299 (casify_object): Remove loop around wrong_type_argument.
Kim F. Storm <storm@cua.dk>
parents: 68651
diff changeset
85 {
93179
139d0b227fdc (casify_object): Avoid pathological N^2 worst case if
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91803
diff changeset
86 EMACS_INT i;
139d0b227fdc (casify_object): Avoid pathological N^2 worst case if
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91803
diff changeset
87 EMACS_INT size = SCHARS (obj);
18005
ad95aa134d60 (casify_object): Handle multibyte characters.
Kenichi Handa <handa@m17n.org>
parents: 17816
diff changeset
88
71827
5e4428007299 (casify_object): Remove loop around wrong_type_argument.
Kim F. Storm <storm@cua.dk>
parents: 68651
diff changeset
89 obj = Fcopy_sequence (obj);
93179
139d0b227fdc (casify_object): Avoid pathological N^2 worst case if
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91803
diff changeset
90 for (i = 0; i < size; i++)
71827
5e4428007299 (casify_object): Remove loop around wrong_type_argument.
Kim F. Storm <storm@cua.dk>
parents: 68651
diff changeset
91 {
93179
139d0b227fdc (casify_object): Avoid pathological N^2 worst case if
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91803
diff changeset
92 c = SREF (obj, i);
90534
2811bff46a36 (casify_object): Sync with HEAD.
Kenichi Handa <handa@m17n.org>
parents: 90294
diff changeset
93 MAKE_CHAR_MULTIBYTE (c);
2811bff46a36 (casify_object): Sync with HEAD.
Kenichi Handa <handa@m17n.org>
parents: 90294
diff changeset
94 c1 = c;
71827
5e4428007299 (casify_object): Remove loop around wrong_type_argument.
Kim F. Storm <storm@cua.dk>
parents: 68651
diff changeset
95 if (inword && flag != CASE_CAPITALIZE_UP)
5e4428007299 (casify_object): Remove loop around wrong_type_argument.
Kim F. Storm <storm@cua.dk>
parents: 68651
diff changeset
96 c = DOWNCASE (c);
5e4428007299 (casify_object): Remove loop around wrong_type_argument.
Kim F. Storm <storm@cua.dk>
parents: 68651
diff changeset
97 else if (!UPPERCASEP (c)
5e4428007299 (casify_object): Remove loop around wrong_type_argument.
Kim F. Storm <storm@cua.dk>
parents: 68651
diff changeset
98 && (!inword || flag != CASE_CAPITALIZE_UP))
90534
2811bff46a36 (casify_object): Sync with HEAD.
Kenichi Handa <handa@m17n.org>
parents: 90294
diff changeset
99 c = UPCASE1 (c1);
2811bff46a36 (casify_object): Sync with HEAD.
Kenichi Handa <handa@m17n.org>
parents: 90294
diff changeset
100 if ((int) flag >= (int) CASE_CAPITALIZE)
2811bff46a36 (casify_object): Sync with HEAD.
Kenichi Handa <handa@m17n.org>
parents: 90294
diff changeset
101 inword = (SYNTAX (c) == Sword);
2811bff46a36 (casify_object): Sync with HEAD.
Kenichi Handa <handa@m17n.org>
parents: 90294
diff changeset
102 if (c != c1)
71827
5e4428007299 (casify_object): Remove loop around wrong_type_argument.
Kim F. Storm <storm@cua.dk>
parents: 68651
diff changeset
103 {
90534
2811bff46a36 (casify_object): Sync with HEAD.
Kenichi Handa <handa@m17n.org>
parents: 90294
diff changeset
104 MAKE_CHAR_UNIBYTE (c);
93179
139d0b227fdc (casify_object): Avoid pathological N^2 worst case if
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91803
diff changeset
105 /* If the char can't be converted to a valid byte, just don't
139d0b227fdc (casify_object): Avoid pathological N^2 worst case if
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91803
diff changeset
106 change it. */
139d0b227fdc (casify_object): Avoid pathological N^2 worst case if
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91803
diff changeset
107 if (c >= 0 && c < 256)
139d0b227fdc (casify_object): Avoid pathological N^2 worst case if
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91803
diff changeset
108 SSET (obj, i, c);
18005
ad95aa134d60 (casify_object): Handle multibyte characters.
Kenichi Handa <handa@m17n.org>
parents: 17816
diff changeset
109 }
118
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
110 }
71827
5e4428007299 (casify_object): Remove loop around wrong_type_argument.
Kim F. Storm <storm@cua.dk>
parents: 68651
diff changeset
111 return obj;
93509
367250b2af54 (casify_object): Fix up int/EMACS_INT mixup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 93179
diff changeset
112 }
367250b2af54 (casify_object): Fix up int/EMACS_INT mixup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 93179
diff changeset
113 else
367250b2af54 (casify_object): Fix up int/EMACS_INT mixup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 93179
diff changeset
114 {
367250b2af54 (casify_object): Fix up int/EMACS_INT mixup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 93179
diff changeset
115 EMACS_INT i, i_byte, size = SCHARS (obj);
367250b2af54 (casify_object): Fix up int/EMACS_INT mixup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 93179
diff changeset
116 int len;
93179
139d0b227fdc (casify_object): Avoid pathological N^2 worst case if
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91803
diff changeset
117 USE_SAFE_ALLOCA;
139d0b227fdc (casify_object): Avoid pathological N^2 worst case if
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91803
diff changeset
118 unsigned char *dst, *o;
139d0b227fdc (casify_object): Avoid pathological N^2 worst case if
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91803
diff changeset
119 /* Over-allocate by 12%: this is a minor overhead, but should be
139d0b227fdc (casify_object): Avoid pathological N^2 worst case if
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91803
diff changeset
120 sufficient in 99.999% of the cases to avoid a reallocation. */
139d0b227fdc (casify_object): Avoid pathological N^2 worst case if
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91803
diff changeset
121 EMACS_INT o_size = SBYTES (obj) + SBYTES (obj) / 8 + MAX_MULTIBYTE_LENGTH;
139d0b227fdc (casify_object): Avoid pathological N^2 worst case if
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91803
diff changeset
122 SAFE_ALLOCA (dst, void *, o_size);
139d0b227fdc (casify_object): Avoid pathological N^2 worst case if
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91803
diff changeset
123 o = dst;
71827
5e4428007299 (casify_object): Remove loop around wrong_type_argument.
Kim F. Storm <storm@cua.dk>
parents: 68651
diff changeset
124
93179
139d0b227fdc (casify_object): Avoid pathological N^2 worst case if
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91803
diff changeset
125 for (i = i_byte = 0; i < size; i++, i_byte += len)
139d0b227fdc (casify_object): Avoid pathological N^2 worst case if
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91803
diff changeset
126 {
139d0b227fdc (casify_object): Avoid pathological N^2 worst case if
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91803
diff changeset
127 if ((o - dst) + MAX_MULTIBYTE_LENGTH > o_size)
139d0b227fdc (casify_object): Avoid pathological N^2 worst case if
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91803
diff changeset
128 { /* Not enough space for the next char: grow the destination. */
139d0b227fdc (casify_object): Avoid pathological N^2 worst case if
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91803
diff changeset
129 unsigned char *old_dst = dst;
139d0b227fdc (casify_object): Avoid pathological N^2 worst case if
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91803
diff changeset
130 o_size += o_size; /* Probably overkill, but extremely rare. */
139d0b227fdc (casify_object): Avoid pathological N^2 worst case if
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91803
diff changeset
131 SAFE_ALLOCA (dst, void *, o_size);
139d0b227fdc (casify_object): Avoid pathological N^2 worst case if
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91803
diff changeset
132 bcopy (old_dst, dst, o - old_dst);
139d0b227fdc (casify_object): Avoid pathological N^2 worst case if
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91803
diff changeset
133 o = dst + (o - old_dst);
139d0b227fdc (casify_object): Avoid pathological N^2 worst case if
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91803
diff changeset
134 }
139d0b227fdc (casify_object): Avoid pathological N^2 worst case if
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91803
diff changeset
135 c = STRING_CHAR_AND_LENGTH (SDATA (obj) + i_byte, 0, len);
139d0b227fdc (casify_object): Avoid pathological N^2 worst case if
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91803
diff changeset
136 if (inword && flag != CASE_CAPITALIZE_UP)
139d0b227fdc (casify_object): Avoid pathological N^2 worst case if
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91803
diff changeset
137 c = DOWNCASE (c);
139d0b227fdc (casify_object): Avoid pathological N^2 worst case if
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91803
diff changeset
138 else if (!UPPERCASEP (c)
139d0b227fdc (casify_object): Avoid pathological N^2 worst case if
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91803
diff changeset
139 && (!inword || flag != CASE_CAPITALIZE_UP))
139d0b227fdc (casify_object): Avoid pathological N^2 worst case if
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91803
diff changeset
140 c = UPCASE1 (c);
139d0b227fdc (casify_object): Avoid pathological N^2 worst case if
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91803
diff changeset
141 if ((int) flag >= (int) CASE_CAPITALIZE)
139d0b227fdc (casify_object): Avoid pathological N^2 worst case if
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91803
diff changeset
142 inword = (SYNTAX (c) == Sword);
139d0b227fdc (casify_object): Avoid pathological N^2 worst case if
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91803
diff changeset
143 o += CHAR_STRING (c, o);
139d0b227fdc (casify_object): Avoid pathological N^2 worst case if
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91803
diff changeset
144 }
139d0b227fdc (casify_object): Avoid pathological N^2 worst case if
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91803
diff changeset
145 eassert (o - dst <= o_size);
139d0b227fdc (casify_object): Avoid pathological N^2 worst case if
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91803
diff changeset
146 obj = make_multibyte_string (dst, size, o - dst);
139d0b227fdc (casify_object): Avoid pathological N^2 worst case if
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91803
diff changeset
147 SAFE_FREE ();
139d0b227fdc (casify_object): Avoid pathological N^2 worst case if
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91803
diff changeset
148 return obj;
139d0b227fdc (casify_object): Avoid pathological N^2 worst case if
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91803
diff changeset
149 }
118
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
150 }
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
151
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
152 DEFUN ("upcase", Fupcase, Supcase, 1, 1, 0,
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents: 39748
diff changeset
153 doc: /* Convert argument to upper case and return that.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents: 39748
diff changeset
154 The argument may be a character or string. The result has the same type.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents: 39748
diff changeset
155 The argument object is not altered--the value is a copy.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents: 39748
diff changeset
156 See also `capitalize', `downcase' and `upcase-initials'. */)
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents: 39748
diff changeset
157 (obj)
118
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
158 Lisp_Object obj;
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
159 {
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
160 return casify_object (CASE_UP, obj);
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
161 }
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
162
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
163 DEFUN ("downcase", Fdowncase, Sdowncase, 1, 1, 0,
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents: 39748
diff changeset
164 doc: /* Convert argument to lower case and return that.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents: 39748
diff changeset
165 The argument may be a character or string. The result has the same type.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents: 39748
diff changeset
166 The argument object is not altered--the value is a copy. */)
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents: 39748
diff changeset
167 (obj)
118
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
168 Lisp_Object obj;
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
169 {
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
170 return casify_object (CASE_DOWN, obj);
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
171 }
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
172
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
173 DEFUN ("capitalize", Fcapitalize, Scapitalize, 1, 1, 0,
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents: 39748
diff changeset
174 doc: /* Convert argument to capitalized form and return that.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents: 39748
diff changeset
175 This means that each word's first character is upper case
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents: 39748
diff changeset
176 and the rest is lower case.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents: 39748
diff changeset
177 The argument may be a character or string. The result has the same type.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents: 39748
diff changeset
178 The argument object is not altered--the value is a copy. */)
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents: 39748
diff changeset
179 (obj)
118
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
180 Lisp_Object obj;
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
181 {
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
182 return casify_object (CASE_CAPITALIZE, obj);
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
183 }
9052
6de22822cf72 (upcase_initials): New function.
Richard M. Stallman <rms@gnu.org>
parents: 7307
diff changeset
184
12089
f7cb17ca1815 (casify_region): Use explicit local vars for start
Karl Heuer <kwzh@gnu.org>
parents: 9299
diff changeset
185 /* 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
186
9053
4887fc1a2dda (Fupcase_initials_region): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9052
diff changeset
187 DEFUN ("upcase-initials", Fupcase_initials, Supcase_initials, 1, 1, 0,
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents: 39748
diff changeset
188 doc: /* Convert the initial of each word in the argument to upper case.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents: 39748
diff changeset
189 Do not change the other letters of each word.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents: 39748
diff changeset
190 The argument may be a character or string. The result has the same type.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents: 39748
diff changeset
191 The argument object is not altered--the value is a copy. */)
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents: 39748
diff changeset
192 (obj)
9053
4887fc1a2dda (Fupcase_initials_region): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9052
diff changeset
193 Lisp_Object obj;
4887fc1a2dda (Fupcase_initials_region): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9052
diff changeset
194 {
4887fc1a2dda (Fupcase_initials_region): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9052
diff changeset
195 return casify_object (CASE_CAPITALIZE_UP, obj);
4887fc1a2dda (Fupcase_initials_region): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9052
diff changeset
196 }
118
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
197
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
198 /* flag is CASE_UP, CASE_DOWN or CASE_CAPITALIZE or CASE_CAPITALIZE_UP.
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
199 b and e specify range of buffer to operate on. */
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
200
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 21256
diff changeset
201 void
118
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
202 casify_region (flag, b, e)
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
203 enum case_action flag;
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
204 Lisp_Object b, e;
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
205 {
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
206 register int c;
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
207 register int inword = flag == CASE_DOWN;
18005
ad95aa134d60 (casify_object): Handle multibyte characters.
Kenichi Handa <handa@m17n.org>
parents: 17816
diff changeset
208 register int multibyte = !NILP (current_buffer->enable_multibyte_characters);
91803
78fbdbd37286 (casify_region): Only call after-change and composition
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91327
diff changeset
209 EMACS_INT start, end;
78fbdbd37286 (casify_region): Only call after-change and composition
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91327
diff changeset
210 EMACS_INT start_byte, end_byte;
78fbdbd37286 (casify_region): Only call after-change and composition
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91327
diff changeset
211 EMACS_INT first = -1, last; /* Position of first and last changes. */
78fbdbd37286 (casify_region): Only call after-change and composition
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91327
diff changeset
212 EMACS_INT opoint = PT;
78fbdbd37286 (casify_region): Only call after-change and composition
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91327
diff changeset
213 EMACS_INT opoint_byte = PT_BYTE;
118
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
214
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
215 if (EQ (b, e))
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
216 /* Not modifying because nothing marked */
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
217 return;
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
218
15170
0d698228e98c (casify_region, casify_object):
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
219 /* 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
220 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
221 Fset_case_table (current_buffer->downcase_table);
0d698228e98c (casify_region, casify_object):
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
222
118
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
223 validate_region (&b, &e);
12089
f7cb17ca1815 (casify_region): Use explicit local vars for start
Karl Heuer <kwzh@gnu.org>
parents: 9299
diff changeset
224 start = XFASTINT (b);
f7cb17ca1815 (casify_region): Use explicit local vars for start
Karl Heuer <kwzh@gnu.org>
parents: 9299
diff changeset
225 end = XFASTINT (e);
72592
f6de516bbb4b * buffer.h (struct buffer_text): New field chars_modiff.
Chong Yidong <cyd@stupidchicken.com>
parents: 71970
diff changeset
226 modify_region (current_buffer, start, end, 0);
12089
f7cb17ca1815 (casify_region): Use explicit local vars for start
Karl Heuer <kwzh@gnu.org>
parents: 9299
diff changeset
227 record_change (start, end - start);
20543
4dbda4b7c66f (casify_region): Scan in bytes and chars.
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
228 start_byte = CHAR_TO_BYTE (start);
4dbda4b7c66f (casify_region): Scan in bytes and chars.
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
229 end_byte = CHAR_TO_BYTE (end);
118
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
230
89017
6a9e0cb7368b (casify_object): Simplified. Handle the case that
Kenichi Handa <handa@m17n.org>
parents: 88426
diff changeset
231 while (start < end)
17816
380442ed6a1c Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 17059
diff changeset
232 {
89017
6a9e0cb7368b (casify_object): Simplified. Handle the case that
Kenichi Handa <handa@m17n.org>
parents: 88426
diff changeset
233 int c2, len;
6a9e0cb7368b (casify_object): Simplified. Handle the case that
Kenichi Handa <handa@m17n.org>
parents: 88426
diff changeset
234
6a9e0cb7368b (casify_object): Simplified. Handle the case that
Kenichi Handa <handa@m17n.org>
parents: 88426
diff changeset
235 if (multibyte)
6a9e0cb7368b (casify_object): Simplified. Handle the case that
Kenichi Handa <handa@m17n.org>
parents: 88426
diff changeset
236 {
6a9e0cb7368b (casify_object): Simplified. Handle the case that
Kenichi Handa <handa@m17n.org>
parents: 88426
diff changeset
237 c = FETCH_MULTIBYTE_CHAR (start_byte);
6a9e0cb7368b (casify_object): Simplified. Handle the case that
Kenichi Handa <handa@m17n.org>
parents: 88426
diff changeset
238 len = CHAR_BYTES (c);
6a9e0cb7368b (casify_object): Simplified. Handle the case that
Kenichi Handa <handa@m17n.org>
parents: 88426
diff changeset
239 }
6a9e0cb7368b (casify_object): Simplified. Handle the case that
Kenichi Handa <handa@m17n.org>
parents: 88426
diff changeset
240 else
6a9e0cb7368b (casify_object): Simplified. Handle the case that
Kenichi Handa <handa@m17n.org>
parents: 88426
diff changeset
241 {
6a9e0cb7368b (casify_object): Simplified. Handle the case that
Kenichi Handa <handa@m17n.org>
parents: 88426
diff changeset
242 c = FETCH_BYTE (start_byte);
6a9e0cb7368b (casify_object): Simplified. Handle the case that
Kenichi Handa <handa@m17n.org>
parents: 88426
diff changeset
243 MAKE_CHAR_MULTIBYTE (c);
6a9e0cb7368b (casify_object): Simplified. Handle the case that
Kenichi Handa <handa@m17n.org>
parents: 88426
diff changeset
244 len = 1;
6a9e0cb7368b (casify_object): Simplified. Handle the case that
Kenichi Handa <handa@m17n.org>
parents: 88426
diff changeset
245 }
6a9e0cb7368b (casify_object): Simplified. Handle the case that
Kenichi Handa <handa@m17n.org>
parents: 88426
diff changeset
246 c2 = c;
18005
ad95aa134d60 (casify_object): Handle multibyte characters.
Kenichi Handa <handa@m17n.org>
parents: 17816
diff changeset
247 if (inword && flag != CASE_CAPITALIZE_UP)
ad95aa134d60 (casify_object): Handle multibyte characters.
Kenichi Handa <handa@m17n.org>
parents: 17816
diff changeset
248 c = DOWNCASE (c);
ad95aa134d60 (casify_object): Handle multibyte characters.
Kenichi Handa <handa@m17n.org>
parents: 17816
diff changeset
249 else if (!UPPERCASEP (c)
ad95aa134d60 (casify_object): Handle multibyte characters.
Kenichi Handa <handa@m17n.org>
parents: 17816
diff changeset
250 && (!inword || flag != CASE_CAPITALIZE_UP))
ad95aa134d60 (casify_object): Handle multibyte characters.
Kenichi Handa <handa@m17n.org>
parents: 17816
diff changeset
251 c = UPCASE1 (c);
ad95aa134d60 (casify_object): Handle multibyte characters.
Kenichi Handa <handa@m17n.org>
parents: 17816
diff changeset
252 if ((int) flag >= (int) CASE_CAPITALIZE)
89483
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89056
diff changeset
253 inword = ((SYNTAX (c) == Sword) && (inword || !SYNTAX_PREFIX (c)));
26839
97029667b1a9 Include composite.h.
Kenichi Handa <handa@m17n.org>
parents: 26742
diff changeset
254 if (c != c2)
17816
380442ed6a1c Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 17059
diff changeset
255 {
91803
78fbdbd37286 (casify_region): Only call after-change and composition
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91327
diff changeset
256 last = start;
78fbdbd37286 (casify_region): Only call after-change and composition
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91327
diff changeset
257 if (first < 0)
78fbdbd37286 (casify_region): Only call after-change and composition
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91327
diff changeset
258 first = start;
78fbdbd37286 (casify_region): Only call after-change and composition
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91327
diff changeset
259
89017
6a9e0cb7368b (casify_object): Simplified. Handle the case that
Kenichi Handa <handa@m17n.org>
parents: 88426
diff changeset
260 if (! multibyte)
17816
380442ed6a1c Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 17059
diff changeset
261 {
89017
6a9e0cb7368b (casify_object): Simplified. Handle the case that
Kenichi Handa <handa@m17n.org>
parents: 88426
diff changeset
262 MAKE_CHAR_UNIBYTE (c);
6a9e0cb7368b (casify_object): Simplified. Handle the case that
Kenichi Handa <handa@m17n.org>
parents: 88426
diff changeset
263 FETCH_BYTE (start_byte) = c;
6a9e0cb7368b (casify_object): Simplified. Handle the case that
Kenichi Handa <handa@m17n.org>
parents: 88426
diff changeset
264 }
6a9e0cb7368b (casify_object): Simplified. Handle the case that
Kenichi Handa <handa@m17n.org>
parents: 88426
diff changeset
265 else if (ASCII_CHAR_P (c2) && ASCII_CHAR_P (c))
6a9e0cb7368b (casify_object): Simplified. Handle the case that
Kenichi Handa <handa@m17n.org>
parents: 88426
diff changeset
266 FETCH_BYTE (start_byte) = c;
90049
73c7169fe4ff (casify_region): Handle changes in byte-length
Kenichi Handa <handa@m17n.org>
parents: 89943
diff changeset
267 else
89017
6a9e0cb7368b (casify_object): Simplified. Handle the case that
Kenichi Handa <handa@m17n.org>
parents: 88426
diff changeset
268 {
90049
73c7169fe4ff (casify_region): Handle changes in byte-length
Kenichi Handa <handa@m17n.org>
parents: 89943
diff changeset
269 int tolen = CHAR_BYTES (c);
89017
6a9e0cb7368b (casify_object): Simplified. Handle the case that
Kenichi Handa <handa@m17n.org>
parents: 88426
diff changeset
270 int j;
26839
97029667b1a9 Include composite.h.
Kenichi Handa <handa@m17n.org>
parents: 26742
diff changeset
271 unsigned char str[MAX_MULTIBYTE_LENGTH];
17816
380442ed6a1c Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 17059
diff changeset
272
89017
6a9e0cb7368b (casify_object): Simplified. Handle the case that
Kenichi Handa <handa@m17n.org>
parents: 88426
diff changeset
273 CHAR_STRING (c, str);
90049
73c7169fe4ff (casify_region): Handle changes in byte-length
Kenichi Handa <handa@m17n.org>
parents: 89943
diff changeset
274 if (len == tolen)
17816
380442ed6a1c Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 17059
diff changeset
275 {
57877
194fa92926e4 (casify_region): Handle changes in byte-length using replace_range_2.
Richard M. Stallman <rms@gnu.org>
parents: 57726
diff changeset
276 /* Length is unchanged. */
90049
73c7169fe4ff (casify_region): Handle changes in byte-length
Kenichi Handa <handa@m17n.org>
parents: 89943
diff changeset
277 for (j = 0; j < len; ++j)
73c7169fe4ff (casify_region): Handle changes in byte-length
Kenichi Handa <handa@m17n.org>
parents: 89943
diff changeset
278 FETCH_BYTE (start_byte + j) = str[j];
17816
380442ed6a1c Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 17059
diff changeset
279 }
380442ed6a1c Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 17059
diff changeset
280 else
59854
75a481e7d8f1 (casify_object): Enable changing characters of
Kenichi Handa <handa@m17n.org>
parents: 57877
diff changeset
281 {
75a481e7d8f1 (casify_object): Enable changing characters of
Kenichi Handa <handa@m17n.org>
parents: 57877
diff changeset
282 /* Replace one character with the other,
75a481e7d8f1 (casify_object): Enable changing characters of
Kenichi Handa <handa@m17n.org>
parents: 57877
diff changeset
283 keeping text properties the same. */
90049
73c7169fe4ff (casify_region): Handle changes in byte-length
Kenichi Handa <handa@m17n.org>
parents: 89943
diff changeset
284 replace_range_2 (start, start_byte,
73c7169fe4ff (casify_region): Handle changes in byte-length
Kenichi Handa <handa@m17n.org>
parents: 89943
diff changeset
285 start + 1, start_byte + len,
59854
75a481e7d8f1 (casify_object): Enable changing characters of
Kenichi Handa <handa@m17n.org>
parents: 57877
diff changeset
286 str, 1, tolen,
90049
73c7169fe4ff (casify_region): Handle changes in byte-length
Kenichi Handa <handa@m17n.org>
parents: 89943
diff changeset
287 0);
73c7169fe4ff (casify_region): Handle changes in byte-length
Kenichi Handa <handa@m17n.org>
parents: 89943
diff changeset
288 len = tolen;
59854
75a481e7d8f1 (casify_object): Enable changing characters of
Kenichi Handa <handa@m17n.org>
parents: 57877
diff changeset
289 }
17816
380442ed6a1c Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 17059
diff changeset
290 }
380442ed6a1c Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 17059
diff changeset
291 }
89017
6a9e0cb7368b (casify_object): Simplified. Handle the case that
Kenichi Handa <handa@m17n.org>
parents: 88426
diff changeset
292 start++;
6a9e0cb7368b (casify_object): Simplified. Handle the case that
Kenichi Handa <handa@m17n.org>
parents: 88426
diff changeset
293 start_byte += len;
118
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
294 }
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
295
89483
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89056
diff changeset
296 if (PT != opoint)
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89056
diff changeset
297 TEMP_SET_PT_BOTH (opoint, opoint_byte);
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89056
diff changeset
298
91803
78fbdbd37286 (casify_region): Only call after-change and composition
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91327
diff changeset
299 if (first >= 0)
26839
97029667b1a9 Include composite.h.
Kenichi Handa <handa@m17n.org>
parents: 26742
diff changeset
300 {
91803
78fbdbd37286 (casify_region): Only call after-change and composition
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91327
diff changeset
301 signal_after_change (first, last + 1 - first, last + 1 - first);
78fbdbd37286 (casify_region): Only call after-change and composition
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91327
diff changeset
302 update_compositions (first, last + 1, CHECK_ALL);
26839
97029667b1a9 Include composite.h.
Kenichi Handa <handa@m17n.org>
parents: 26742
diff changeset
303 }
118
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
304 }
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
305
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
306 DEFUN ("upcase-region", Fupcase_region, Supcase_region, 2, 2, "r",
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents: 39748
diff changeset
307 doc: /* Convert the region to upper case. In programs, wants two arguments.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents: 39748
diff changeset
308 These arguments specify the starting and ending character numbers of
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents: 39748
diff changeset
309 the region to operate on. When used as a command, the text between
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents: 39748
diff changeset
310 point and the mark is operated on.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents: 39748
diff changeset
311 See also `capitalize-region'. */)
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents: 39748
diff changeset
312 (beg, end)
14063
ef7d4117c601 (Fupcase_region, Fdowncase_region, Fcapitalize_region,
Erik Naggum <erik@naggum.no>
parents: 12244
diff changeset
313 Lisp_Object beg, end;
118
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
314 {
14063
ef7d4117c601 (Fupcase_region, Fdowncase_region, Fcapitalize_region,
Erik Naggum <erik@naggum.no>
parents: 12244
diff changeset
315 casify_region (CASE_UP, beg, end);
118
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
316 return Qnil;
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
317 }
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
318
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
319 DEFUN ("downcase-region", Fdowncase_region, Sdowncase_region, 2, 2, "r",
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents: 39748
diff changeset
320 doc: /* Convert the region to lower case. In programs, wants two arguments.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents: 39748
diff changeset
321 These arguments specify the starting and ending character numbers of
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents: 39748
diff changeset
322 the region to operate on. When used as a command, the text between
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents: 39748
diff changeset
323 point and the mark is operated on. */)
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents: 39748
diff changeset
324 (beg, end)
14063
ef7d4117c601 (Fupcase_region, Fdowncase_region, Fcapitalize_region,
Erik Naggum <erik@naggum.no>
parents: 12244
diff changeset
325 Lisp_Object beg, end;
118
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
326 {
14063
ef7d4117c601 (Fupcase_region, Fdowncase_region, Fcapitalize_region,
Erik Naggum <erik@naggum.no>
parents: 12244
diff changeset
327 casify_region (CASE_DOWN, beg, end);
118
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
328 return Qnil;
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
329 }
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
330
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
331 DEFUN ("capitalize-region", Fcapitalize_region, Scapitalize_region, 2, 2, "r",
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents: 39748
diff changeset
332 doc: /* Convert the region to capitalized form.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents: 39748
diff changeset
333 Capitalized form means each word's first character is upper case
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents: 39748
diff changeset
334 and the rest of it is lower case.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents: 39748
diff changeset
335 In programs, give two arguments, the starting and ending
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents: 39748
diff changeset
336 character positions to operate on. */)
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents: 39748
diff changeset
337 (beg, end)
14063
ef7d4117c601 (Fupcase_region, Fdowncase_region, Fcapitalize_region,
Erik Naggum <erik@naggum.no>
parents: 12244
diff changeset
338 Lisp_Object beg, end;
118
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
339 {
14063
ef7d4117c601 (Fupcase_region, Fdowncase_region, Fcapitalize_region,
Erik Naggum <erik@naggum.no>
parents: 12244
diff changeset
340 casify_region (CASE_CAPITALIZE, beg, end);
118
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
341 return Qnil;
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
342 }
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
343
12089
f7cb17ca1815 (casify_region): Use explicit local vars for start
Karl Heuer <kwzh@gnu.org>
parents: 9299
diff changeset
344 /* 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
345
9053
4887fc1a2dda (Fupcase_initials_region): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9052
diff changeset
346 DEFUN ("upcase-initials-region", Fupcase_initials_region,
4887fc1a2dda (Fupcase_initials_region): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9052
diff changeset
347 Supcase_initials_region, 2, 2, "r",
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents: 39748
diff changeset
348 doc: /* Upcase the initial of each word in the region.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents: 39748
diff changeset
349 Subsequent letters of each word are not changed.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents: 39748
diff changeset
350 In programs, give two arguments, the starting and ending
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents: 39748
diff changeset
351 character positions to operate on. */)
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents: 39748
diff changeset
352 (beg, end)
14063
ef7d4117c601 (Fupcase_region, Fdowncase_region, Fcapitalize_region,
Erik Naggum <erik@naggum.no>
parents: 12244
diff changeset
353 Lisp_Object beg, end;
9053
4887fc1a2dda (Fupcase_initials_region): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9052
diff changeset
354 {
14063
ef7d4117c601 (Fupcase_region, Fdowncase_region, Fcapitalize_region,
Erik Naggum <erik@naggum.no>
parents: 12244
diff changeset
355 casify_region (CASE_CAPITALIZE_UP, beg, end);
9053
4887fc1a2dda (Fupcase_initials_region): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9052
diff changeset
356 return Qnil;
4887fc1a2dda (Fupcase_initials_region): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9052
diff changeset
357 }
118
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
358
93179
139d0b227fdc (casify_object): Avoid pathological N^2 worst case if
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91803
diff changeset
359 static Lisp_Object
6221
c2d29681d218 (operate_on_word): Don't move point; store in *NEWPOINT.
Richard M. Stallman <rms@gnu.org>
parents: 4696
diff changeset
360 operate_on_word (arg, newpoint)
118
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
361 Lisp_Object arg;
93179
139d0b227fdc (casify_object): Avoid pathological N^2 worst case if
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91803
diff changeset
362 EMACS_INT *newpoint;
118
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
363 {
1505
4f138b03e5ab * casefiddle.c (operate_on_word): Declare end to be an int, not a
Jim Blandy <jimb@redhat.com>
parents: 484
diff changeset
364 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
365 int farend;
12089
f7cb17ca1815 (casify_region): Use explicit local vars for start
Karl Heuer <kwzh@gnu.org>
parents: 9299
diff changeset
366 int iarg;
118
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
367
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Jan?k <Pavel@Janik.cz>
parents: 40103
diff changeset
368 CHECK_NUMBER (arg);
12089
f7cb17ca1815 (casify_region): Use explicit local vars for start
Karl Heuer <kwzh@gnu.org>
parents: 9299
diff changeset
369 iarg = XINT (arg);
16039
855c8d8ba0f0 Change all references from point to PT.
Karl Heuer <kwzh@gnu.org>
parents: 15170
diff changeset
370 farend = scan_words (PT, iarg);
118
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
371 if (!farend)
12089
f7cb17ca1815 (casify_region): Use explicit local vars for start
Karl Heuer <kwzh@gnu.org>
parents: 9299
diff changeset
372 farend = iarg > 0 ? ZV : BEGV;
118
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
373
16039
855c8d8ba0f0 Change all references from point to PT.
Karl Heuer <kwzh@gnu.org>
parents: 15170
diff changeset
374 *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
375 XSETFASTINT (val, farend);
118
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
376
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
377 return val;
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
378 }
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
379
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
380 DEFUN ("upcase-word", Fupcase_word, Supcase_word, 1, 1, "p",
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents: 39748
diff changeset
381 doc: /* Convert following word (or ARG words) to upper case, moving over.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents: 39748
diff changeset
382 With negative argument, convert previous words but do not move.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents: 39748
diff changeset
383 See also `capitalize-word'. */)
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents: 39748
diff changeset
384 (arg)
118
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
385 Lisp_Object arg;
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
386 {
6221
c2d29681d218 (operate_on_word): Don't move point; store in *NEWPOINT.
Richard M. Stallman <rms@gnu.org>
parents: 4696
diff changeset
387 Lisp_Object beg, end;
93179
139d0b227fdc (casify_object): Avoid pathological N^2 worst case if
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91803
diff changeset
388 EMACS_INT newpoint;
16039
855c8d8ba0f0 Change all references from point to PT.
Karl Heuer <kwzh@gnu.org>
parents: 15170
diff changeset
389 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
390 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
391 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
392 SET_PT (newpoint);
118
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
393 return Qnil;
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
394 }
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
395
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
396 DEFUN ("downcase-word", Fdowncase_word, Sdowncase_word, 1, 1, "p",
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents: 39748
diff changeset
397 doc: /* Convert following word (or ARG words) to lower case, moving over.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents: 39748
diff changeset
398 With negative argument, convert previous words but do not move. */)
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents: 39748
diff changeset
399 (arg)
118
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
400 Lisp_Object arg;
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
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;
93179
139d0b227fdc (casify_object): Avoid pathological N^2 worst case if
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91803
diff changeset
403 EMACS_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_DOWN, 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
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
408 return Qnil;
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
409 }
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
410
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
411 DEFUN ("capitalize-word", Fcapitalize_word, Scapitalize_word, 1, 1, "p",
40103
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents: 39748
diff changeset
412 doc: /* Capitalize the following word (or ARG words), moving over.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents: 39748
diff changeset
413 This gives the word(s) a first character in upper case
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents: 39748
diff changeset
414 and the rest lower case.
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents: 39748
diff changeset
415 With negative argument, capitalize previous words but do not move. */)
6b389fb978bc Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Jan?k <Pavel@Janik.cz>
parents: 39748
diff changeset
416 (arg)
118
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
417 Lisp_Object arg;
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
418 {
6221
c2d29681d218 (operate_on_word): Don't move point; store in *NEWPOINT.
Richard M. Stallman <rms@gnu.org>
parents: 4696
diff changeset
419 Lisp_Object beg, end;
93179
139d0b227fdc (casify_object): Avoid pathological N^2 worst case if
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91803
diff changeset
420 EMACS_INT newpoint;
16039
855c8d8ba0f0 Change all references from point to PT.
Karl Heuer <kwzh@gnu.org>
parents: 15170
diff changeset
421 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
422 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
423 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
424 SET_PT (newpoint);
118
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
425 return Qnil;
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
426 }
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
427
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 21256
diff changeset
428 void
118
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
429 syms_of_casefiddle ()
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
430 {
17816
380442ed6a1c Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 17059
diff changeset
431 Qidentity = intern ("identity");
380442ed6a1c Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 17059
diff changeset
432 staticpro (&Qidentity);
118
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
433 defsubr (&Supcase);
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
434 defsubr (&Sdowncase);
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
435 defsubr (&Scapitalize);
9053
4887fc1a2dda (Fupcase_initials_region): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9052
diff changeset
436 defsubr (&Supcase_initials);
118
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
437 defsubr (&Supcase_region);
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
438 defsubr (&Sdowncase_region);
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
439 defsubr (&Scapitalize_region);
9053
4887fc1a2dda (Fupcase_initials_region): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9052
diff changeset
440 defsubr (&Supcase_initials_region);
118
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
441 defsubr (&Supcase_word);
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
442 defsubr (&Sdowncase_word);
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
443 defsubr (&Scapitalize_word);
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
444 }
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
445
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 21256
diff changeset
446 void
118
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
447 keys_of_casefiddle ()
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
448 {
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
449 initial_define_key (control_x_map, Ctl('U'), "upcase-region");
484
3165b2697c78 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 118
diff changeset
450 Fput (intern ("upcase-region"), Qdisabled, Qt);
118
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
451 initial_define_key (control_x_map, Ctl('L'), "downcase-region");
484
3165b2697c78 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 118
diff changeset
452 Fput (intern ("downcase-region"), Qdisabled, Qt);
3165b2697c78 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 118
diff changeset
453
118
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
454 initial_define_key (meta_map, 'u', "upcase-word");
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
455 initial_define_key (meta_map, 'l', "downcase-word");
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
456 initial_define_key (meta_map, 'c', "capitalize-word");
49342840ba00 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
457 }
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 47965
diff changeset
458
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 47965
diff changeset
459 /* arch-tag: 60a73c66-5489-47e7-a81f-cead4057c526
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 47965
diff changeset
460 (do not change this comment) */