Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
emacs
emacs
Commits
4e374bf2
Commit
4e374bf2
authored
Jul 12, 2006
by
Kim F. Storm
Browse files
(casify_object): Remove loop around wrong_type_argument.
parent
b08b1fc9
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
53 additions
and
55 deletions
+53
-55
src/casefiddle.c
src/casefiddle.c
+53
-55
No files found.
src/casefiddle.c
View file @
4e374bf2
...
...
@@ -45,75 +45,73 @@ casify_object (flag, obj)
if
(
NILP
(
XCHAR_TABLE
(
current_buffer
->
downcase_table
)
->
extras
[
1
]))
Fset_case_table
(
current_buffer
->
downcase_table
);
while
(
1
)
if
(
INTEGERP
(
obj
)
)
{
if
(
INTEGERP
(
obj
))
int
flagbits
=
(
CHAR_ALT
|
CHAR_SUPER
|
CHAR_HYPER
|
CHAR_SHIFT
|
CHAR_CTL
|
CHAR_META
);
int
flags
=
XINT
(
obj
)
&
flagbits
;
/* If the character has higher bits set
above the flags, return it unchanged.
It is not a real character. */
if
((
unsigned
)
XFASTINT
(
obj
)
>
(
unsigned
)
flagbits
)
return
obj
;
c
=
DOWNCASE
(
XFASTINT
(
obj
)
&
~
flagbits
);
if
(
inword
)
XSETFASTINT
(
obj
,
c
|
flags
);
else
if
(
c
==
(
XFASTINT
(
obj
)
&
~
flagbits
))
{
int
flagbits
=
(
CHAR_ALT
|
CHAR_SUPER
|
CHAR_HYPER
|
CHAR_SHIFT
|
CHAR_CTL
|
CHAR_META
);
int
flags
=
XINT
(
obj
)
&
flagbits
;
/* If the character has higher bits set
above the flags, return it unchanged.
It is not a real character. */
if
((
unsigned
)
XFASTINT
(
obj
)
>
(
unsigned
)
flagbits
)
return
obj
;
c
=
DOWNCASE
(
XFASTINT
(
obj
)
&
~
flagbits
);
if
(
inword
)
XSETFASTINT
(
obj
,
c
|
flags
);
else
if
(
c
==
(
XFASTINT
(
obj
)
&
~
flagbits
))
{
c
=
UPCASE1
((
XFASTINT
(
obj
)
&
~
flagbits
));
XSETFASTINT
(
obj
,
c
|
flags
);
}
return
obj
;
c
=
UPCASE1
((
XFASTINT
(
obj
)
&
~
flagbits
));
XSETFASTINT
(
obj
,
c
|
flags
);
}
return
obj
;
}
if
(
STRINGP
(
obj
))
{
int
multibyte
=
STRING_MULTIBYTE
(
obj
);
int
n
;
obj
=
Fcopy_sequence
(
obj
);
len
=
SBYTES
(
obj
);
if
(
STRINGP
(
obj
))
/* I counts bytes, and N counts chars. */
for
(
i
=
n
=
0
;
i
<
len
;
n
++
)
{
int
multibyte
=
STRING_MULTIBYTE
(
obj
);
int
n
;
int
from_len
=
1
,
to_len
=
1
;
obj
=
Fcopy_sequence
(
obj
);
len
=
SBYTES
(
obj
);
c
=
SREF
(
obj
,
i
);
/* I counts bytes, and N counts chars. */
for
(
i
=
n
=
0
;
i
<
len
;
n
++
)
if
(
multibyte
&&
c
>=
0x80
)
c
=
STRING_CHAR_AND_LENGTH
(
SDATA
(
obj
)
+
i
,
len
-
i
,
from_len
);
if
(
inword
&&
flag
!=
CASE_CAPITALIZE_UP
)
c
=
DOWNCASE
(
c
);
else
if
(
!
UPPERCASEP
(
c
)
&&
(
!
inword
||
flag
!=
CASE_CAPITALIZE_UP
))
c
=
UPCASE1
(
c
);
if
((
ASCII_BYTE_P
(
c
)
&&
from_len
==
1
)
||
(
!
multibyte
&&
SINGLE_BYTE_CHAR_P
(
c
)))
SSET
(
obj
,
i
,
c
);
else
{
int
from_len
=
1
,
to_len
=
1
;
c
=
SREF
(
obj
,
i
);
if
(
multibyte
&&
c
>=
0x80
)
c
=
STRING_CHAR_AND_LENGTH
(
SDATA
(
obj
)
+
i
,
len
-
i
,
from_len
);
if
(
inword
&&
flag
!=
CASE_CAPITALIZE_UP
)
c
=
DOWNCASE
(
c
);
else
if
(
!
UPPERCASEP
(
c
)
&&
(
!
inword
||
flag
!=
CASE_CAPITALIZE_UP
))
c
=
UPCASE1
(
c
);
if
((
ASCII_BYTE_P
(
c
)
&&
from_len
==
1
)
||
(
!
multibyte
&&
SINGLE_BYTE_CHAR_P
(
c
)))
SSET
(
obj
,
i
,
c
);
to_len
=
CHAR_BYTES
(
c
);
if
(
from_len
==
to_len
)
CHAR_STRING
(
c
,
SDATA
(
obj
)
+
i
);
else
{
to_len
=
CHAR_BYTES
(
c
);
if
(
from_len
==
to_len
)
CHAR_STRING
(
c
,
SDATA
(
obj
)
+
i
);
else
{
Faset
(
obj
,
make_number
(
n
),
make_number
(
c
));
len
+=
to_len
-
from_len
;
}
Faset
(
obj
,
make_number
(
n
),
make_number
(
c
));
len
+=
to_len
-
from_len
;
}
if
((
int
)
flag
>=
(
int
)
CASE_CAPITALIZE
)
inword
=
SYNTAX
(
c
)
==
Sword
;
i
+=
to_len
;
}
return
obj
;
if
((
int
)
flag
>=
(
int
)
CASE_CAPITALIZE
)
inword
=
SYNTAX
(
c
)
==
Sword
;
i
+=
to_len
;
}
obj
=
wrong_type_argument
(
Qchar_or_string_p
,
obj
)
;
return
obj
;
}
return
wrong_type_argument
(
Qchar_or_string_p
,
obj
);
}
DEFUN
(
"upcase"
,
Fupcase
,
Supcase
,
1
,
1
,
0
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment