Mercurial > hg > xemacs-beta
comparison src/keymap.c @ 5126:2a462149bd6a ben-lisp-object
merge
author | Ben Wing <ben@xemacs.org> |
---|---|
date | Wed, 24 Feb 2010 19:04:27 -0600 |
parents | b5df3737028a 6f2158fa75ed |
children | a9c41067dd88 |
comparison
equal
deleted
inserted
replaced
5125:b5df3737028a | 5126:2a462149bd6a |
---|---|
487 | 487 |
488 modifiers &= ~( | 488 modifiers &= ~( |
489 #define FROB(num) XEMACS_MOD_BUTTON##num | | 489 #define FROB(num) XEMACS_MOD_BUTTON##num | |
490 #include "keymap-buttons.h" | 490 #include "keymap-buttons.h" |
491 0); | 491 0); |
492 if ((modifiers & ~(XEMACS_MOD_CONTROL | XEMACS_MOD_META | XEMACS_MOD_SUPER | 492 assert ((modifiers & ~(XEMACS_MOD_CONTROL | XEMACS_MOD_META | |
493 | XEMACS_MOD_HYPER | XEMACS_MOD_ALT | XEMACS_MOD_SHIFT)) | 493 XEMACS_MOD_SUPER | XEMACS_MOD_HYPER | |
494 != 0) | 494 XEMACS_MOD_ALT | XEMACS_MOD_SHIFT)) |
495 ABORT (); | 495 == 0); |
496 | 496 |
497 k = XKEYMAP (keymap); | 497 k = XKEYMAP (keymap); |
498 | 498 |
499 /* If the keysym is a one-character symbol, use the char code instead. */ | 499 /* If the keysym is a one-character symbol, use the char code instead. */ |
500 if (SYMBOLP (keysym) && string_char_length (XSYMBOL (keysym)->name) == 1) | 500 if (SYMBOLP (keysym) && string_char_length (XSYMBOL (keysym)->name) == 1) |
564 Lisp_Object keys = Fgethash (value, inverse_table, Qunbound); | 564 Lisp_Object keys = Fgethash (value, inverse_table, Qunbound); |
565 Lisp_Object new_keys = keys; | 565 Lisp_Object new_keys = keys; |
566 Lisp_Object tail; | 566 Lisp_Object tail; |
567 Lisp_Object *prev; | 567 Lisp_Object *prev; |
568 | 568 |
569 if (UNBOUNDP (keys)) | 569 assert (!UNBOUNDP (keys)); |
570 ABORT (); | |
571 | 570 |
572 for (prev = &new_keys, tail = new_keys; | 571 for (prev = &new_keys, tail = new_keys; |
573 ; | 572 ; |
574 prev = &(XCDR (tail)), tail = XCDR (tail)) | 573 prev = &(XCDR (tail)), tail = XCDR (tail)) |
575 { | 574 { |
3127 int len; | 3126 int len; |
3128 Lisp_Key_Data key; | 3127 Lisp_Key_Data key; |
3129 key.keysym = keysym; | 3128 key.keysym = keysym; |
3130 key.modifiers = modifiers; | 3129 key.modifiers = modifiers; |
3131 | 3130 |
3132 if (NILP (cmd)) | 3131 assert (!NILP (cmd)); |
3133 ABORT (); | |
3134 cmd = get_keymap (cmd, 0, 1); | 3132 cmd = get_keymap (cmd, 0, 1); |
3135 if (!KEYMAPP (cmd)) | 3133 assert (KEYMAPP (cmd)); |
3136 ABORT (); | |
3137 | 3134 |
3138 vec = make_vector (XVECTOR_LENGTH (thisseq) + 1, Qnil); | 3135 vec = make_vector (XVECTOR_LENGTH (thisseq) + 1, Qnil); |
3139 len = XVECTOR_LENGTH (thisseq); | 3136 len = XVECTOR_LENGTH (thisseq); |
3140 for (j = 0; j < len; j++) | 3137 for (j = 0; j < len; j++) |
3141 XVECTOR_DATA (vec) [j] = XVECTOR_DATA (thisseq) [j]; | 3138 XVECTOR_DATA (vec) [j] = XVECTOR_DATA (thisseq) [j]; |
3660 } | 3657 } |
3661 | 3658 |
3662 /* OK, the key is for real */ | 3659 /* OK, the key is for real */ |
3663 if (target_buffer) | 3660 if (target_buffer) |
3664 { | 3661 { |
3665 if (!firstonly) ABORT (); | 3662 assert (firstonly); |
3666 format_raw_keys (so_far, keys_count + 1, target_buffer); | 3663 format_raw_keys (so_far, keys_count + 1, target_buffer); |
3667 return make_int (1); | 3664 return make_int (1); |
3668 } | 3665 } |
3669 else if (firstonly) | 3666 else if (firstonly) |
3670 return raw_keys_to_keys (so_far, keys_count + 1); | 3667 return raw_keys_to_keys (so_far, keys_count + 1); |