diff options
author | Stefan Monnier <monnier@iro.umontreal.ca> | 2001-11-19 22:46:37 +0000 |
---|---|---|
committer | Stefan Monnier <monnier@iro.umontreal.ca> | 2001-11-19 22:46:37 +0000 |
commit | 7efb58ca73a18c235f13192b79119362cb8b5641 (patch) | |
tree | cee05adcbba023d5f29057dfd90065364359f200 /src/keymap.c | |
parent | b492fd2d52844abceb04c7ec97a07b59b2399446 (diff) | |
download | emacs-7efb58ca73a18c235f13192b79119362cb8b5641.tar.gz |
(Fdescribe_vector): Add `describer' parameter.
(describe_command, describe_translation): Add dummy second param.
(describe_map): Call elt_describer with two arguments.
(describe_vector_princ): Add `fun' parameter.
Call it instead of the hardcoded `princ'.
(describe_vector): Add arg `args'.
Pass it as a new second argument to elt_describer.
Diffstat (limited to 'src/keymap.c')
-rw-r--r-- | src/keymap.c | 61 |
1 files changed, 32 insertions, 29 deletions
diff --git a/src/keymap.c b/src/keymap.c index a8e43391d7b..02f7c75edab 100644 --- a/src/keymap.c +++ b/src/keymap.c @@ -55,7 +55,7 @@ Lisp_Object Vminibuffer_local_map; minibuf */ /* was MinibufLocalNSMap */ -Lisp_Object Vminibuffer_local_ns_map; +Lisp_Object Vminibuffer_local_ns_map; /* The keymap used by the minibuf for local bindings when spaces are not encouraged in the minibuf */ @@ -107,10 +107,10 @@ static Lisp_Object store_in_keymap P_ ((Lisp_Object, Lisp_Object, Lisp_Object)); static void fix_submap_inheritance P_ ((Lisp_Object, Lisp_Object, Lisp_Object)); static Lisp_Object define_as_prefix P_ ((Lisp_Object, Lisp_Object)); -static void describe_command P_ ((Lisp_Object)); -static void describe_translation P_ ((Lisp_Object)); +static void describe_command P_ ((Lisp_Object, Lisp_Object)); +static void describe_translation P_ ((Lisp_Object, Lisp_Object)); static void describe_map P_ ((Lisp_Object, Lisp_Object, - void (*) P_ ((Lisp_Object)), + void (*) P_ ((Lisp_Object, Lisp_Object)), int, Lisp_Object, Lisp_Object*, int)); /* Keymap object support - constructors and predicates. */ @@ -1932,7 +1932,7 @@ push_key_description (c, p, force_multibyte) p += CHAR_STRING (c, p); } - return p; + return p; } /* This function cannot GC. */ @@ -2033,7 +2033,7 @@ push_text_char_description (c, p) } else *p++ = c; - return p; + return p; } /* This function cannot GC. */ @@ -2751,8 +2751,8 @@ key binding\n\ static int previous_description_column; static void -describe_command (definition) - Lisp_Object definition; +describe_command (definition, args) + Lisp_Object definition, args; { register Lisp_Object tem1; int column = current_column (); @@ -2788,8 +2788,8 @@ describe_command (definition) } static void -describe_translation (definition) - Lisp_Object definition; +describe_translation (definition, args) + Lisp_Object definition, args; { register Lisp_Object tem1; @@ -2820,7 +2820,7 @@ static void describe_map (map, keys, elt_describer, partial, shadow, seen, nomenu) register Lisp_Object map; Lisp_Object keys; - void (*elt_describer) P_ ((Lisp_Object)); + void (*elt_describer) P_ ((Lisp_Object, Lisp_Object)); int partial; Lisp_Object shadow; Lisp_Object *seen; @@ -2863,7 +2863,7 @@ describe_map (map, keys, elt_describer, partial, shadow, seen, nomenu) if (VECTORP (XCAR (tail)) || CHAR_TABLE_P (XCAR (tail))) describe_vector (XCAR (tail), - elt_prefix, elt_describer, partial, shadow, map, + elt_prefix, Qnil, elt_describer, partial, shadow, map, (int *)0, 0); else if (CONSP (XCAR (tail))) { @@ -2917,7 +2917,7 @@ describe_map (map, keys, elt_describer, partial, shadow, seen, nomenu) /* Print a description of the definition of this character. elt_describer will take care of spacing out far enough for alignment purposes. */ - (*elt_describer) (definition); + (*elt_describer) (definition, Qnil); } else if (EQ (XCAR (tail), Qkeymap)) { @@ -2935,25 +2935,26 @@ describe_map (map, keys, elt_describer, partial, shadow, seen, nomenu) } static void -describe_vector_princ (elt) - Lisp_Object elt; +describe_vector_princ (elt, fun) + Lisp_Object elt, fun; { Findent_to (make_number (16), make_number (1)); - Fprinc (elt, Qnil); + call1 (fun, elt); Fterpri (Qnil); } -DEFUN ("describe-vector", Fdescribe_vector, Sdescribe_vector, 1, 1, 0, +DEFUN ("describe-vector", Fdescribe_vector, Sdescribe_vector, 1, 2, 0, doc: /* Insert a description of contents of VECTOR. This is text showing the elements of vector matched against indices. */) - (vector) - Lisp_Object vector; + (vector, describer) + Lisp_Object vector, describer; { int count = specpdl_ptr - specpdl; - + if (NILP (describer)) + describer = intern ("princ"); specbind (Qstandard_output, Fcurrent_buffer ()); CHECK_VECTOR_OR_CHAR_TABLE (vector); - describe_vector (vector, Qnil, describe_vector_princ, 0, + describe_vector (vector, Qnil, describer, describe_vector_princ, 0, Qnil, Qnil, (int *)0, 0); return unbind_to (count, Qnil); @@ -2987,15 +2988,17 @@ This is text showing the elements of vector matched against indices. */) When describing a sub-char-table, INDICES is a list of indices at higher levels in this char-table, - and CHAR_TABLE_DEPTH says how many levels down we have gone. */ + and CHAR_TABLE_DEPTH says how many levels down we have gone. + + ARGS is simply passed as the second argument to ELT_DESCRIBER. */ void -describe_vector (vector, elt_prefix, elt_describer, +describe_vector (vector, elt_prefix, args, elt_describer, partial, shadow, entire_map, indices, char_table_depth) register Lisp_Object vector; - Lisp_Object elt_prefix; - void (*elt_describer) P_ ((Lisp_Object)); + Lisp_Object elt_prefix, args; + void (*elt_describer) P_ ((Lisp_Object, Lisp_Object)); int partial; Lisp_Object shadow; Lisp_Object entire_map; @@ -3088,7 +3091,7 @@ describe_vector (vector, elt_prefix, elt_describer, else definition = get_keyelt (AREF (vector, i), 0); - if (NILP (definition)) continue; + if (NILP (definition)) continue; /* Don't mention suppressed commands. */ if (SYMBOLP (definition) && partial) @@ -3204,7 +3207,7 @@ describe_vector (vector, elt_prefix, elt_describer, if (CHAR_TABLE_P (vector) && SUB_CHAR_TABLE_P (definition)) { insert ("\n", 1); - describe_vector (definition, elt_prefix, elt_describer, + describe_vector (definition, elt_prefix, args, elt_describer, partial, shadow, entire_map, indices, char_table_depth + 1); continue; @@ -3277,7 +3280,7 @@ describe_vector (vector, elt_prefix, elt_describer, /* Print a description of the definition of this character. elt_describer will take care of spacing out far enough for alignment purposes. */ - (*elt_describer) (definition); + (*elt_describer) (definition, args); } /* For (sub) char-table, print `defalt' slot at last. */ @@ -3285,7 +3288,7 @@ describe_vector (vector, elt_prefix, elt_describer, { insert (" ", char_table_depth * 2); insert_string ("<<default>>"); - (*elt_describer) (XCHAR_TABLE (vector)->defalt); + (*elt_describer) (XCHAR_TABLE (vector)->defalt, args); } UNGCPRO; |