Mercurial > emacs
changeset 1383:54028d2538a4
* callint.c (Fcall_interactively): Allow multiple 'e' specs.
(Finteractive): Doc fix.
author | Jim Blandy <jimb@redhat.com> |
---|---|
date | Sun, 11 Oct 1992 06:39:13 +0000 |
parents | 9b210c7d6c23 |
children | 416f7f33fe95 |
files | src/callint.c |
diffstat | 1 files changed, 16 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/src/callint.c Sun Oct 11 06:35:04 1992 +0000 +++ b/src/callint.c Sun Oct 11 06:39:13 1992 +0000 @@ -66,7 +66,9 @@ C -- Command name: symbol with interactive function definition.\n\ d -- Value of point as number. Does not do I/O.\n\ D -- Directory name.\n\ -e -- Mouse click that invoked this command (value of `last-nonmenu-event').\n\ +e -- Event that invoked this command (value of `last-nonmenu-event').\n\ + This skips events without parameters.\n\ + If used more than once, the Nth 'e' returns the Nth parameterized event.\n\ f -- Existing file name.\n\ F -- Possibly nonexistent file name.\n\ k -- Key sequence (string).\n\ @@ -160,6 +162,10 @@ Lisp_Object enable; int speccount = specpdl_ptr - specpdl; + /* The index of the next element of this_command_keys to examine for + the 'e' interactive code. */ + int next_event = 0; + Lisp_Object prefix_arg; unsigned char *string; unsigned char *tem; @@ -391,13 +397,17 @@ visargs[i] = Fkey_description (teml); break; - case 'e': /* Mouse click. */ - args[i] = last_command_char; - if (NILP (Fmouse_click_p (args[i]))) - error ("%s must be bound to a mouse click.", + case 'e': /* The invoking event. */ + /* Find the next parameterized event. */ + while (next_event < this_command_key_count + && ! EVENT_HAS_PARAMETERS (this_command_keys[next_event])) + next_event++; + if (next_event >= this_command_key_count) + error ("%s must be bound to an event with parameters", (XTYPE (function) == Lisp_Symbol ? (char *) XSYMBOL (function)->name->data - : "Command")); + : "command")); + args[i] = this_command_keys[next_event++]; varies[i] = -1; break;