eintr: zap-to-char interactive
8.1.1 The ‘interactive’ Expression
----------------------------------
The interactive expression in the ‘zap-to-char’ command looks like this:
(interactive "p\ncZap to char: ")
The part within quotation marks, ‘"p\ncZap to char: "’, specifies two
different things. First, and most simply, is the ‘p’. This part is
separated from the next part by a newline, ‘\n’. The ‘p’ means that the
first argument to the function will be passed the value of a “processed
prefix”. The prefix argument is passed by typing ‘C-u’ and a number, or
‘M-’ and a number. If the function is called interactively without a
prefix, 1 is passed to this argument.
The second part of ‘"p\ncZap to char: "’ is ‘cZap to char: ’. In
this part, the lower case ‘c’ indicates that ‘interactive’ expects a
prompt and that the argument will be a character. The prompt follows
the ‘c’ and is the string ‘Zap to char: ’ (with a space after the colon
to make it look good).
What all this does is prepare the arguments to ‘zap-to-char’ so they
are of the right type, and give the user a prompt.
In a read-only buffer, the ‘zap-to-char’ function copies the text to
the kill ring, but does not remove it. The echo area displays a message
saying that the buffer is read-only. Also, the terminal may beep or
blink at you.