X-Git-Url: https://git.hcoop.net/bpt/emacs.git/blobdiff_plain/3e93bafb95608467e438ba7f725fd1f020669f8c..2bfa3d3e1fb347ba76bddf77f3e288049635821d:/src/keymap.c diff --git a/src/keymap.c b/src/keymap.c index c1416f8a78..5b0b8747b4 100644 --- a/src/keymap.c +++ b/src/keymap.c @@ -356,7 +356,7 @@ Return PARENT. PARENT should be nil or another keymap. */) { CHECK_IMPURE (prev); XSETCDR (prev, parent); - RETURN_UNGCPRO (parent); + return parent; } prev = list; } @@ -1131,7 +1131,7 @@ binding KEY to DEF is added at the front of KEYMAP. */) length = XFASTINT (Flength (key)); if (length == 0) - RETURN_UNGCPRO (Qnil); + return Qnil; if (SYMBOLP (def) && !EQ (Vdefine_key_rebound_commands, Qt)) Vdefine_key_rebound_commands = Fcons (def, Vdefine_key_rebound_commands); @@ -1194,7 +1194,7 @@ binding KEY to DEF is added at the front of KEYMAP. */) message_with_string ("Key sequence contains invalid event %s", c, 1); if (idx == length) - RETURN_UNGCPRO (store_in_keymap (keymap, c, def)); + return store_in_keymap (keymap, c, def); cmd = access_keymap (keymap, c, 0, 1, 1); @@ -1287,7 +1287,7 @@ recognize the default bindings, just as `read-key-sequence' does. */) length = XFASTINT (Flength (key)); if (length == 0) - RETURN_UNGCPRO (keymap); + return keymap; idx = 0; while (1) @@ -1308,11 +1308,11 @@ recognize the default bindings, just as `read-key-sequence' does. */) cmd = access_keymap (keymap, c, t_ok, 0, 1); if (idx == length) - RETURN_UNGCPRO (cmd); + return cmd; keymap = get_keymap (cmd, 0, 1); if (!CONSP (keymap)) - RETURN_UNGCPRO (make_number (idx)); + return make_number (idx); QUIT; } @@ -1383,9 +1383,7 @@ silly_event_symbol_error (Lisp_Object c) c = reorder_modifiers (c); keystring = concat2 (build_string (new_mods), XCDR (assoc)); - error ((modifiers & ~meta_modifier - ? "To bind the key %s, use [?%s], not [%s]" - : "To bind the key %s, use \"%s\", not [%s]"), + error ("To bind the key %s, use [?%s], not [%s]", SDATA (SYMBOL_NAME (c)), SDATA (keystring), SDATA (SYMBOL_NAME (c))); } @@ -1479,26 +1477,26 @@ current_minor_maps (Lisp_Object **modeptr, Lisp_Object **mapptr) /* Use malloc here. See the comment above this function. Avoid realloc here; it causes spurious traps on GNU/Linux [KFS] */ block_input (); - newmodes = malloc (allocsize); + newmodes = xmalloc_unsafe (allocsize); if (newmodes) { if (cmm_modes) { memcpy (newmodes, cmm_modes, cmm_size * sizeof cmm_modes[0]); - free (cmm_modes); + xfree (cmm_modes); } cmm_modes = newmodes; } - newmaps = malloc (allocsize); + newmaps = xmalloc_unsafe (allocsize); if (newmaps) { if (cmm_maps) { memcpy (newmaps, cmm_maps, cmm_size * sizeof cmm_maps[0]); - free (cmm_maps); + xfree (cmm_maps); } cmm_maps = newmaps; } @@ -1546,7 +1544,7 @@ OLP if non-nil indicates that we should obey `overriding-local-map' and like in the respective argument of `key-binding'. */) (Lisp_Object olp, Lisp_Object position) { - ptrdiff_t count = SPECPDL_INDEX (); + dynwind_begin (); Lisp_Object keymaps = list1 (current_global_map); @@ -1664,7 +1662,7 @@ like in the respective argument of `key-binding'. */) keymaps = Fcons (otlp, keymaps); } - unbind_to (count, Qnil); + dynwind_end (); return keymaps; } @@ -1808,7 +1806,7 @@ bindings; see the description of `lookup-key' for more details about this. */) if (KEYMAPP (binding)) maps[j++] = Fcons (modes[i], binding); else if (j == 0) - RETURN_UNGCPRO (list1 (Fcons (modes[i], binding))); + return list1 (Fcons (modes[i], binding)); } UNGCPRO; @@ -1894,7 +1892,7 @@ struct accessible_keymaps_data { static void accessible_keymaps_1 (Lisp_Object key, Lisp_Object cmd, Lisp_Object args, void *data) -/* Use void* data to be compatible with map_keymap_function_t. */ +/* Use void * data to be compatible with map_keymap_function_t. */ { struct accessible_keymaps_data *d = data; /* Cast! */ Lisp_Object maps = d->maps; @@ -2649,11 +2647,11 @@ The optional 5th arg NO-REMAP alters how command remapping is handled: /* We have a list of advertised bindings. */ while (CONSP (tem)) if (EQ (shadow_lookup (keymaps, XCAR (tem), Qnil, 0), definition)) - RETURN_UNGCPRO (XCAR (tem)); + return XCAR (tem); else tem = XCDR (tem); if (EQ (shadow_lookup (keymaps, tem, Qnil, 0), definition)) - RETURN_UNGCPRO (tem); + return tem; } sequences = Freverse (where_is_internal (definition, keymaps, @@ -2722,10 +2720,10 @@ The optional 5th arg NO-REMAP alters how command remapping is handled: nil, then we should return the first ascii-only binding we find. */ if (EQ (firstonly, Qnon_ascii)) - RETURN_UNGCPRO (sequence); + return sequence; else if (!NILP (firstonly) && 2 == preferred_sequence_p (sequence)) - RETURN_UNGCPRO (sequence); + return sequence; } UNGCPRO; @@ -3409,7 +3407,7 @@ This is text showing the elements of vector matched against indices. DESCRIBER is the output function used; nil means use `princ'. */) (Lisp_Object vector, Lisp_Object describer) { - ptrdiff_t count = SPECPDL_INDEX (); + dynwind_begin (); if (NILP (describer)) describer = intern ("princ"); specbind (Qstandard_output, Fcurrent_buffer ()); @@ -3417,7 +3415,8 @@ DESCRIBER is the output function used; nil means use `princ'. */) describe_vector (vector, Qnil, describer, describe_vector_princ, 0, Qnil, Qnil, 0, 0); - return unbind_to (count, Qnil); + dynwind_end (); + return Qnil; } /* Insert in the current buffer a description of the contents of VECTOR. @@ -3682,6 +3681,8 @@ Return list of symbols found. */) void syms_of_keymap (void) { +#include "keymap.x" + DEFSYM (Qkeymap, "keymap"); staticpro (&apropos_predicate); staticpro (&apropos_accumulate); @@ -3797,38 +3798,6 @@ be preferred. */); where_is_cache = Qnil; staticpro (&where_is_cache); staticpro (&where_is_cache_keymaps); - - defsubr (&Skeymapp); - defsubr (&Skeymap_parent); - defsubr (&Skeymap_prompt); - defsubr (&Sset_keymap_parent); - defsubr (&Smake_keymap); - defsubr (&Smake_sparse_keymap); - defsubr (&Smap_keymap_internal); - defsubr (&Smap_keymap); - defsubr (&Scopy_keymap); - defsubr (&Scommand_remapping); - defsubr (&Skey_binding); - defsubr (&Slocal_key_binding); - defsubr (&Sglobal_key_binding); - defsubr (&Sminor_mode_key_binding); - defsubr (&Sdefine_key); - defsubr (&Slookup_key); - defsubr (&Sdefine_prefix_command); - defsubr (&Suse_global_map); - defsubr (&Suse_local_map); - defsubr (&Scurrent_local_map); - defsubr (&Scurrent_global_map); - defsubr (&Scurrent_minor_mode_maps); - defsubr (&Scurrent_active_maps); - defsubr (&Saccessible_keymaps); - defsubr (&Skey_description); - defsubr (&Sdescribe_vector); - defsubr (&Ssingle_key_description); - defsubr (&Stext_char_description); - defsubr (&Swhere_is_internal); - defsubr (&Sdescribe_buffer_bindings); - defsubr (&Sapropos_internal); } void