Mercurial > emacs
changeset 37054:dec182bcbaa4
(interactive-form): New function.
author | Gerd Moellmann <gerd@gnu.org> |
---|---|
date | Thu, 29 Mar 2001 14:08:34 +0000 |
parents | 1a420f3df4f8 |
children | 4cb750b910d1 |
files | lisp/subr.el |
diffstat | 1 files changed, 21 insertions(+), 19 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/subr.el Thu Mar 29 13:58:30 2001 +0000 +++ b/lisp/subr.el Thu Mar 29 14:08:34 2001 +0000 @@ -1449,25 +1449,27 @@ (eq (car-safe object) 'lambda) (and (symbolp object) (fboundp object)))) -;; now in fns.c -;(defun nth (n list) -; "Returns the Nth element of LIST. -;N counts from zero. If LIST is not that long, nil is returned." -; (car (nthcdr n list))) -; -;(defun copy-alist (alist) -; "Return a copy of ALIST. -;This is a new alist which represents the same mapping -;from objects to objects, but does not share the alist structure with ALIST. -;The objects mapped (cars and cdrs of elements of the alist) -;are shared, however." -; (setq alist (copy-sequence alist)) -; (let ((tail alist)) -; (while tail -; (if (consp (car tail)) -; (setcar tail (cons (car (car tail)) (cdr (car tail))))) -; (setq tail (cdr tail)))) -; alist) +(defun interactive-form (function) + "Return the interactive form of FUNCTION. +If function is a command (see `commandp'), value is a list of the form +\(interactive SPEC). If function is not a command,return nil." + (setq function (indirect-function function)) + (when (commandp function) + (cond ((byte-code-function-p function) + (when (> (length function) 5) + (let ((spec (aref function 5))) + (if spec + (list 'interactive spec) + (list 'interactive))))) + ((subrp function) + (subr-interactive-form function)) + ((eq (car-safe function) 'lambda) + (setq function (cddr function)) + (when (stringp (car function)) + (setq function (cdr function))) + (let ((form (car function))) + (when (eq (car-safe form 'interactive)) + (copy-sequence form))))))) (defun assq-delete-all (key alist) "Delete from ALIST all elements whose car is KEY.