(access_keymap, store_in_keymap): Don't look in a char-table
authorRichard M. Stallman <rms@gnu.org>
Fri, 23 May 1997 17:33:32 +0000 (17:33 +0000)
committerRichard M. Stallman <rms@gnu.org>
Fri, 23 May 1997 17:33:32 +0000 (17:33 +0000)
for a character that has modifier bits.

src/keymap.c

index 6a08a86..32c4afb 100644 (file)
@@ -484,7 +484,13 @@ access_keymap (map, idx, t_ok, noinherit)
          }
        else if (CHAR_TABLE_P (binding))
          {
-           if (NATNUMP (idx))
+           /* Character codes with modifiers
+              are not included in a char-table.
+              All character codes without modifiers are included.  */
+           if (NATNUMP (idx)
+               && ! (XFASTINT (idx)
+                     & (CHAR_ALT | CHAR_SUPER | CHAR_HYPER
+                        | CHAR_SHIFT | CHAR_CTL | CHAR_META)))
              {
                val = Faref (binding, idx);
                if (noprefix && CONSP (val) && EQ (XCONS (val)->car, Qkeymap))
@@ -629,7 +635,13 @@ store_in_keymap (keymap, idx, def)
          }
        else if (CHAR_TABLE_P (elt))
          {
-           if (NATNUMP (idx))
+           /* Character codes with modifiers
+              are not included in a char-table.
+              All character codes without modifiers are included.  */
+           if (NATNUMP (idx)
+               && ! (XFASTINT (idx)
+                     & (CHAR_ALT | CHAR_SUPER | CHAR_HYPER
+                        | CHAR_SHIFT | CHAR_CTL | CHAR_META)))
              {
                Faset (elt, idx, def);
                return def;