+ doc: /* Specify a way of parsing arguments for interactive use of a function.
+For example, write
+ (defun foo (arg) "Doc string" (interactive "p") ...use arg...)
+to make ARG be the prefix argument when `foo' is called as a command.
+The "call" to `interactive' is actually a declaration rather than a function;
+ it tells `call-interactively' how to read arguments
+ to pass to the function.
+When actually called, `interactive' just returns nil.
+
+The argument of `interactive' is usually a string containing a code letter
+ followed by a prompt. (Some code letters do not use I/O to get
+ the argument and do not need prompts.) To prompt for multiple arguments,
+ give a code letter, its prompt, a newline, and another code letter, etc.
+ Prompts are passed to format, and may use % escapes to print the
+ arguments that have already been read.
+If the argument is not a string, it is evaluated to get a list of
+ arguments to pass to the function.
+Just `(interactive)' means pass no args when calling interactively.
+
+Code letters available are:
+a -- Function name: symbol with a function definition.
+b -- Name of existing buffer.
+B -- Name of buffer, possibly nonexistent.
+c -- Character (no input method is used).
+C -- Command name: symbol with interactive function definition.
+d -- Value of point as number. Does not do I/O.
+D -- Directory name.
+e -- Parametrized event (i.e., one that's a list) that invoked this command.
+ If used more than once, the Nth `e' returns the Nth parameterized event.
+ This skips events that are integers or symbols.
+f -- Existing file name.
+F -- Possibly nonexistent file name.
+G -- Possibly nonexistent file name, defaulting to just directory name.
+i -- Ignored, i.e. always nil. Does not do I/O.
+k -- Key sequence (downcase the last event if needed to get a definition).
+K -- Key sequence to be redefined (do not downcase the last event).
+m -- Value of mark as number. Does not do I/O.
+M -- Any string. Inherits the current input method.
+n -- Number read using minibuffer.
+N -- Raw prefix arg, or if none, do like code `n'.
+p -- Prefix arg converted to number. Does not do I/O.
+P -- Prefix arg in raw form. Does not do I/O.
+r -- Region: point and mark as 2 numeric args, smallest first. Does no I/O.
+s -- Any string. Does not inherit the current input method.
+S -- Any symbol.
+U -- Mouse up event discarded by a previous k or K argument.
+v -- Variable name: symbol that is user-variable-p.
+x -- Lisp expression read but not evaluated.
+X -- Lisp expression read and evaluated.
+z -- Coding system.
+Z -- Coding system, nil if no prefix arg.
+In addition, if the string begins with `*'
+ then an error is signaled if the buffer is read-only.
+ This happens before reading any arguments.
+If the string begins with `@', then Emacs searches the key sequence
+ which invoked the command for its first mouse click (or any other
+ event which specifies a window), and selects that window before
+ reading any arguments. You may use both `@' and `*'; they are
+ processed in the order that they appear.
+usage: (interactive ARGS) */)
+ (args)