diff options
author | Richard M. Stallman <rms@gnu.org> | 1993-05-19 04:58:19 +0000 |
---|---|---|
committer | Richard M. Stallman <rms@gnu.org> | 1993-05-19 04:58:19 +0000 |
commit | bb1ef421878a45b3df2cd2ccf96c9b46a881d642 (patch) | |
tree | a1df10383a2fb01e1a8f4ba34b24a368ec426a6a | |
parent | 7260e3398aefd55a953c6b208bc6892543e3b9ef (diff) | |
download | emacs-bb1ef421878a45b3df2cd2ccf96c9b46a881d642.tar.gz emacs-bb1ef421878a45b3df2cd2ccf96c9b46a881d642.tar.bz2 emacs-bb1ef421878a45b3df2cd2ccf96c9b46a881d642.zip |
(follow_key): Check char in range before UPPERCASEP.
-rw-r--r-- | src/keyboard.c | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/src/keyboard.c b/src/keyboard.c index 98c9250fb6d..bc990170e8b 100644 --- a/src/keyboard.c +++ b/src/keyboard.c @@ -2095,17 +2095,21 @@ make_lispy_event (event) if (event->modifiers & ctrl_modifier) { if (c >= 0100 && c < 0140) - c &= ~040; + { + int oc = c; + c &= ~0140; + /* Set the shift modifier for a control char + made from a shifted letter. But only for letters! */ + if (oc >= 'A' && oc <= 'Z') + c |= shift_modifier; + } + else if (c >= 'a' && c <= 'z') + c &= ~0140; /* Include the bits for control and shift only if the basic ASCII code can't indicate them. */ - c |= ctrl_modifier; + else + c |= ctrl_modifier; } - /* Set the shift modifier for a control char - made from a shifted letter. But only for letters! */ - if (XFASTINT (event->code) >= 'A' - 0100 - && XFASTINT (event->code) <= 'Z' - 0100 - && (event->modifiers & shift_modifier)) - c |= shift_modifier; c |= (event->modifiers & (meta_modifier | alt_modifier | hyper_modifier | super_modifier)); @@ -3389,7 +3393,9 @@ follow_key (key, nmaps, current, defs, next) lower-case letter, return the bindings for the lower-case letter. */ if (first_binding == nmaps && XTYPE (key) == Lisp_Int - && (UPPERCASEP (XINT (key) & 0x3ffff) + && ((((XINT (key) & 0x3ffff) + < XSTRING (current_buffer->downcase_table)->size) + && UPPERCASEP (XINT (key) & 0x3ffff)) || (XINT (key) & shift_modifier))) { if (XINT (key) & shift_modifier) |