summaryrefslogtreecommitdiff
path: root/lisp/help-fns.el
diff options
context:
space:
mode:
authorStefan Monnier <monnier@iro.umontreal.ca>2009-10-01 16:54:21 +0000
committerStefan Monnier <monnier@iro.umontreal.ca>2009-10-01 16:54:21 +0000
commitced10a4c9f0030e4e554d6ca3f96c6e366dba8db (patch)
tree59d17379604f37548afb5e353ad08e12bf5ef19a /lisp/help-fns.el
parentd308026462fe0f6d441cd40fa0451d8ce965c922 (diff)
downloademacs-ced10a4c9f0030e4e554d6ca3f96c6e366dba8db.tar.gz
* emacs-lisp/byte-run.el (advertised-signature-table): New var.
(set-advertised-calling-convention): New function. (make-obsolete, define-obsolete-function-alias) (make-obsolete-variable, define-obsolete-variable-alias): Make the optional-ness of `when' obsolete. (define-obsolete-face-alias): Make `when' non-optional. * help-fns.el (help-function-arglist): * emacs-lisp/bytecomp.el (byte-compile-fdefinition): Use advertised-signature-table.
Diffstat (limited to 'lisp/help-fns.el')
-rw-r--r--lisp/help-fns.el16
1 files changed, 9 insertions, 7 deletions
diff --git a/lisp/help-fns.el b/lisp/help-fns.el
index 7608e9f24e9..53663d1aeeb 100644
--- a/lisp/help-fns.el
+++ b/lisp/help-fns.el
@@ -100,13 +100,15 @@ ARGLIST can also be t or a string of the form \"(FUN ARG1 ARG2 ...)\"."
;; Handle symbols aliased to other symbols.
(if (and (symbolp def) (fboundp def)) (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)))
- (cond
- ((byte-code-function-p def) (aref def 0))
- ((eq (car-safe def) 'lambda) (nth 1 def))
- ((and (eq (car-safe def) 'autoload) (not (eq (nth 4 def) 'keymap)))
- "[Arg list not available until function definition is loaded.]")
- (t t)))
+ (let ((advertised (gethash def advertised-signature-table t)))
+ (if (listp advertised) advertised
+ (if (eq (car-safe def) 'macro) (setq def (cdr def)))
+ (cond
+ ((byte-code-function-p def) (aref def 0))
+ ((eq (car-safe def) 'lambda) (nth 1 def))
+ ((and (eq (car-safe def) 'autoload) (not (eq (nth 4 def) 'keymap)))
+ "[Arg list not available until function definition is loaded.]")
+ (t t)))))
(defun help-make-usage (function arglist)
(cons (if (symbolp function) function 'anonymous)