Mercurial > hg > xemacs-beta
comparison src/keymap.c @ 5140:e5380fdaf8f1
merge
| author | Ben Wing <ben@xemacs.org> |
|---|---|
| date | Sat, 13 Mar 2010 05:38:34 -0600 |
| parents | 7be849cb8828 |
| children | f965e31a35f0 |
comparison
equal
deleted
inserted
replaced
| 5139:a48ef26d87ee | 5140:e5380fdaf8f1 |
|---|---|
| 146 | 146 |
| 147 */ | 147 */ |
| 148 | 148 |
| 149 struct Lisp_Keymap | 149 struct Lisp_Keymap |
| 150 { | 150 { |
| 151 struct LCRECORD_HEADER header; | 151 NORMAL_LISP_OBJECT_HEADER header; |
| 152 #define MARKED_SLOT(x) Lisp_Object x; | 152 #define MARKED_SLOT(x) Lisp_Object x; |
| 153 #include "keymap-slots.h" | 153 #include "keymap-slots.h" |
| 154 }; | 154 }; |
| 155 | 155 |
| 156 #define MAKE_MODIFIER_HASH_KEY(modifier) make_int (modifier) | 156 #define MAKE_MODIFIER_HASH_KEY(modifier) make_int (modifier) |
| 298 #define MARKED_SLOT(x) { XD_LISP_OBJECT, offsetof (Lisp_Keymap, x) }, | 298 #define MARKED_SLOT(x) { XD_LISP_OBJECT, offsetof (Lisp_Keymap, x) }, |
| 299 #include "keymap-slots.h" | 299 #include "keymap-slots.h" |
| 300 { XD_END } | 300 { XD_END } |
| 301 }; | 301 }; |
| 302 | 302 |
| 303 DEFINE_LRECORD_IMPLEMENTATION ("keymap", keymap, | 303 DEFINE_DUMPABLE_LISP_OBJECT ("keymap", keymap, |
| 304 1, /*dumpable-flag*/ | 304 mark_keymap, print_keymap, 0, |
| 305 mark_keymap, print_keymap, 0, | 305 keymap_equal, keymap_hash, |
| 306 keymap_equal, keymap_hash, | 306 keymap_description, |
| 307 keymap_description, | 307 Lisp_Keymap); |
| 308 Lisp_Keymap); | |
| 309 | 308 |
| 310 /************************************************************************/ | 309 /************************************************************************/ |
| 311 /* Traversing keymaps and their parents */ | 310 /* Traversing keymaps and their parents */ |
| 312 /************************************************************************/ | 311 /************************************************************************/ |
| 313 | 312 |
| 775 /************************************************************************/ | 774 /************************************************************************/ |
| 776 | 775 |
| 777 static Lisp_Object | 776 static Lisp_Object |
| 778 make_keymap (Elemcount size) | 777 make_keymap (Elemcount size) |
| 779 { | 778 { |
| 780 Lisp_Object result; | 779 Lisp_Object obj = ALLOC_NORMAL_LISP_OBJECT (keymap); |
| 781 Lisp_Keymap *keymap = ALLOC_LCRECORD_TYPE (Lisp_Keymap, &lrecord_keymap); | 780 Lisp_Keymap *keymap = XKEYMAP (obj); |
| 782 | |
| 783 result = wrap_keymap (keymap); | |
| 784 | 781 |
| 785 #define MARKED_SLOT(x) keymap->x = Qnil; | 782 #define MARKED_SLOT(x) keymap->x = Qnil; |
| 786 #include "keymap-slots.h" | 783 #include "keymap-slots.h" |
| 787 | 784 |
| 788 if (size != 0) /* hack for copy-keymap */ | 785 if (size != 0) /* hack for copy-keymap */ |
| 793 If not, it will grow anyway. */ | 790 If not, it will grow anyway. */ |
| 794 keymap->inverse_table = | 791 keymap->inverse_table = |
| 795 make_lisp_hash_table (size * 3 / 4, HASH_TABLE_NON_WEAK, | 792 make_lisp_hash_table (size * 3 / 4, HASH_TABLE_NON_WEAK, |
| 796 HASH_TABLE_EQ); | 793 HASH_TABLE_EQ); |
| 797 } | 794 } |
| 798 return result; | 795 return obj; |
| 799 } | 796 } |
| 800 | 797 |
| 801 DEFUN ("make-keymap", Fmake_keymap, 0, 1, 0, /* | 798 DEFUN ("make-keymap", Fmake_keymap, 0, 1, 0, /* |
| 802 Construct and return a new keymap object. | 799 Construct and return a new keymap object. |
| 803 All entries in it are nil, meaning "command undefined". | 800 All entries in it are nil, meaning "command undefined". |
| 4293 | 4290 |
| 4294 | 4291 |
| 4295 void | 4292 void |
| 4296 syms_of_keymap (void) | 4293 syms_of_keymap (void) |
| 4297 { | 4294 { |
| 4298 INIT_LRECORD_IMPLEMENTATION (keymap); | 4295 INIT_LISP_OBJECT (keymap); |
| 4299 | 4296 |
| 4300 DEFSYMBOL (Qminor_mode_map_alist); | 4297 DEFSYMBOL (Qminor_mode_map_alist); |
| 4301 | 4298 |
| 4302 DEFSYMBOL (Qkeymapp); | 4299 DEFSYMBOL (Qkeymapp); |
| 4303 | 4300 |
