1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-11-30 08:09:04 +00:00

(describe-function-1): Handle macros properly.

Handle multiple levels of aliases.
This commit is contained in:
Richard M. Stallman 1998-08-10 02:02:56 +00:00
parent b7f096eeea
commit 3f8309db3c

View File

@ -585,6 +585,8 @@ C-w Display information on absence of warranty for GNU Emacs."
((byte-code-function-p def)
(concat beg "compiled Lisp function"))
((symbolp def)
(while (symbolp (symbol-function def))
(setq def (symbol-function def)))
(format "alias for `%s'" def))
((eq (car-safe def) 'lambda)
(concat beg "Lisp function"))
@ -625,14 +627,16 @@ C-w Display information on absence of warranty for GNU Emacs."
(if need-close (princ ")"))
(princ ".")
(terpri)
(let* ((inner-function (if (and (listp def) 'macro)
(cdr def)
def))
(arglist (cond ((byte-code-function-p inner-function)
(car (append inner-function nil)))
((eq (car-safe inner-function) 'lambda)
(nth 1 inner-function))
(t t))))
;; Handle symbols aliased to other symbols.
(setq def (indirect-function def))
;; If definition is a macro, find the function inside it.
(if (eq (car-safe def) 'macro)
(setq def (cdr def)))
(let ((arglist (cond ((byte-code-function-p def)
(car (append def nil)))
((eq (car-safe def) 'lambda)
(nth 1 def))
(t t))))
(if (listp arglist)
(progn
(princ (cons function