diff options
| author | Karl Heuer | 1998-06-18 04:11:28 +0000 |
|---|---|---|
| committer | Karl Heuer | 1998-06-18 04:11:28 +0000 |
| commit | e3a10b5e595a84821b3440c484c840b541ba669f (patch) | |
| tree | 994bd725391ed5f74ea2473aae611913c9002798 /src | |
| parent | 9d3355d17865eb292084d09f6ddf487affa32dd9 (diff) | |
| download | emacs-e3a10b5e595a84821b3440c484c840b541ba669f.tar.gz emacs-e3a10b5e595a84821b3440c484c840b541ba669f.zip | |
(casify_object): Cope with modifier bits in character.
Diffstat (limited to 'src')
| -rw-r--r-- | src/casefiddle.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/src/casefiddle.c b/src/casefiddle.c index b6d8b21f606..65fc4f0d80a 100644 --- a/src/casefiddle.c +++ b/src/casefiddle.c | |||
| @@ -47,13 +47,17 @@ casify_object (flag, obj) | |||
| 47 | { | 47 | { |
| 48 | if (INTEGERP (obj)) | 48 | if (INTEGERP (obj)) |
| 49 | { | 49 | { |
| 50 | c = DOWNCASE (XFASTINT (obj)); | 50 | int flagbits = (CHAR_ALT | CHAR_SUPER | CHAR_HYPER |
| 51 | | CHAR_SHIFT | CHAR_CTL | CHAR_META); | ||
| 52 | int flags = XINT (obj) & flagbits; | ||
| 53 | |||
| 54 | c = DOWNCASE (XFASTINT (obj) & ~flagbits); | ||
| 51 | if (inword) | 55 | if (inword) |
| 52 | XSETFASTINT (obj, c); | 56 | XSETFASTINT (obj, c | flags); |
| 53 | else if (c == XFASTINT (obj)) | 57 | else if (c == (XFASTINT (obj) & ~flagbits)) |
| 54 | { | 58 | { |
| 55 | c = UPCASE1 (XFASTINT (obj)); | 59 | c = UPCASE1 ((XFASTINT (obj) & ~flagbits)); |
| 56 | XSETFASTINT (obj, c); | 60 | XSETFASTINT (obj, c | flags); |
| 57 | } | 61 | } |
| 58 | return obj; | 62 | return obj; |
| 59 | } | 63 | } |