diff options
author | Kenichi Handa <handa@m17n.org> | 2008-03-05 05:12:06 +0000 |
---|---|---|
committer | Kenichi Handa <handa@m17n.org> | 2008-03-05 05:12:06 +0000 |
commit | 03365d0eb5c09d346c56437912a4ddd9b0884ac9 (patch) | |
tree | 16f5d6f4c435dce55883371d1e1981fe175d0ad9 /src/character.c | |
parent | e4c3c5887bc84709a269cfe67bebdfc66831af96 (diff) | |
download | emacs-03365d0eb5c09d346c56437912a4ddd9b0884ac9.tar.gz |
(char_resolve_modifier_mask): Fix previous change.
Diffstat (limited to 'src/character.c')
-rw-r--r-- | src/character.c | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/src/character.c b/src/character.c index f34e30912dc..457d57f9251 100644 --- a/src/character.c +++ b/src/character.c @@ -115,24 +115,18 @@ char_resolve_modifier_mask (c) c &= ~CHAR_SHIFT; else if ((c & 0377) >= 'a' && (c & 0377) <= 'z') c = (c & ~CHAR_SHIFT) - ('a' - 'A'); - /* Shift modifier with ASCII control characters should be - ignored. */ - else if ((c & ~CHAR_MODIFIER_MASK) < 0x20) + /* Shift modifier for control characters and SPC is ignored. */ + else if ((c & ~CHAR_MODIFIER_MASK) <= 0x20) c &= ~CHAR_SHIFT; } - if (c & CHAR_META) - { - /* Move the meta bit to the right place for a string. */ - c = (c & ~CHAR_META) | 0x80; - } if (c & CHAR_CTL) { /* Simulate the code in lread.c. */ /* Allow `\C- ' and `\C-?'. */ - if ((c & ~CHAR_CTL) == ' ') - c = 0; - else if ((c & ~CHAR_CTL) == '?') - c = 127; + if ((c & 0377) == ' ') + c &= ~0177 & ~ CHAR_CTL; + else if ((c & 0377) == '?') + c = 0177 | (c & ~0177 & ~CHAR_CTL); /* ASCII control chars are made from letters (both cases), as well as the non-letters within 0100...0137. */ else if ((c & 0137) >= 0101 && (c & 0137) <= 0132) @@ -140,6 +134,11 @@ char_resolve_modifier_mask (c) else if ((c & 0177) >= 0100 && (c & 0177) <= 0137) c &= (037 | (~0177 & ~CHAR_CTL)); } + if (c & CHAR_META) + { + /* Move the meta bit to the right place for a string. */ + c = (c & ~CHAR_META) | 0x80; + } return c; } |