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.