Copyright (C) 2000-2012 |
GNU Info (emacs-lisp-intro.info)Interactive OptionsDifferent Options for `interactive' =================================== In the example, `multiply-by-seven' used `"p"' as the argument to `interactive'. This argument told Emacs to interpret your typing either `C-u' followed by a number or <META> followed by a number as a command to pass that number to the function as its argument. Emacs has more than twenty characters predefined for use with `interactive'. In almost every case, one of these options will enable you to pass the right information interactively to a function. (Note: Code Characters for `interactive'.) For example, the character `r' causes Emacs to pass the beginning and end of the region (the current values of point and mark) to the function as two separate arguments. It is used as follows: (interactive "r") On the other hand, a `B' tells Emacs to ask for the name of a buffer that will be passed to the function. When it sees a `B', Emacs will ask for the name by prompting the user in the minibuffer, using a string that follows the `B', as in `"BAppend to buffer: "'. Not only will Emacs prompt for the name, but Emacs will complete the name if you type enough of it and press <TAB>. A function with two or more arguments can have information passed to each argument by adding parts to the string that follows `interactive'. When you do this, the information is passed to each argument in the same order it is specified in the `interactive' list. In the string, each part is separated from the next part by a `\n', which is a newline. For example, you could follow `"BAppend to buffer: "' with a `\n') and an `r'. This would cause Emacs to pass the values of point and mark to the function as well as prompt you for the buffer--three arguments in all. In this case, the function definition would look like the following, where `buffer', `start', and `end' are the symbols to which `interactive' binds the buffer and the current values of the beginning and ending of the region: (defun NAME-OF-FUNCTION (buffer start end) "DOCUMENTATION..." (interactive "BAppend to buffer: \nr") BODY-OF-FUNCTION...) (The space after the colon in the prompt makes it look better when you are prompted. The `append-to-buffer' function looks exactly like this. Note: The Definition of `append-to-buffer'.) If a function does not have arguments, then `interactive' does not require any. Such a function contains the simple expression `(interactive)'. The `mark-whole-buffer' function is like this. Alternatively, if the special letter-codes are not right for your application, you can pass your own arguments to `interactive' as a list. Note: Using `Interactive', for more information about this advanced technique. automatically generated by info2www version 1.2.2.9 |