From 8d6c1239cb77da219180facf7937c259fc66767c Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Fri, 2 Oct 2009 14:36:54 +0000 Subject: [PATCH] * help-fns.el (help-function-arglist): Don't check advertised-signature-table. (describe-function-1): Do it here instead so it also applies to subrs. * emacs-lisp/eldoc.el (eldoc-get-fnsym-args-string): Obey advertised-signature-table. --- lisp/ChangeLog | 13 +++++++++++-- lisp/emacs-lisp/eldoc.el | 5 ++++- lisp/help-fns.el | 23 ++++++++++++----------- 3 files changed, 27 insertions(+), 14 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 4baa1ad304c..58349083f55 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,12 @@ +2009-10-02 Stefan Monnier + + * emacs-lisp/eldoc.el (eldoc-get-fnsym-args-string): + Obey advertised-signature-table. + + * help-fns.el (help-function-arglist): Don't check + advertised-signature-table. + (describe-function-1): Do it here instead so it also applies to subrs. + 2009-10-02 Michael Albinus * simple.el (start-file-process): Say in the doc-string, that file @@ -9,8 +18,8 @@ (ange-ftp-delete-directory): Implement RECURSIVE case. Change to root directory ("device busy" error otherwise). - * net/tramp-smb.el (tramp-smb-handle-make-directory-internal): Flush - file properties of created directory. + * net/tramp-smb.el (tramp-smb-handle-make-directory-internal): + Flush file properties of created directory. 2009-10-02 Eli Zaretskii diff --git a/lisp/emacs-lisp/eldoc.el b/lisp/emacs-lisp/eldoc.el index 47f4dd470bc..f1a92035bb9 100644 --- a/lisp/emacs-lisp/eldoc.el +++ b/lisp/emacs-lisp/eldoc.el @@ -290,11 +290,14 @@ or elsewhere, return a 1-line docstring. Calls the functions former calls `eldoc-argument-case'; the latter gives the function name `font-lock-function-name-face', and optionally highlights argument number INDEX." - (let (args doc) + (let (args doc advertised) (cond ((not (and sym (symbolp sym) (fboundp sym)))) ((and (eq sym (aref eldoc-last-data 0)) (eq 'function (aref eldoc-last-data 2))) (setq doc (aref eldoc-last-data 1))) + ((listp (setq advertised (gethash (indirect-function sym) + advertised-signature-table t))) + (setq args advertised)) ((setq doc (help-split-fundoc (documentation sym t) sym)) (setq args (car doc)) ;; Remove any enclosing (), since e-function-argstring adds them. diff --git a/lisp/help-fns.el b/lisp/help-fns.el index a080cd22ea0..e30fe28682c 100644 --- a/lisp/help-fns.el +++ b/lisp/help-fns.el @@ -101,15 +101,13 @@ 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. - (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))))) + (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) @@ -469,14 +467,17 @@ suitable file is found, return nil." (re-search-backward "`\\([^`']+\\)'" nil t) (help-xref-button 1 'help-function-cmacro function lib))))) (princ ".\n\n")) - (let* ((arglist (help-function-arglist def)) + (let* ((advertised (gethash def advertised-signature-table t)) + (arglist (if (listp advertised) + advertised (help-function-arglist def))) (doc (documentation function)) (usage (help-split-fundoc doc function))) (with-current-buffer standard-output ;; If definition is a keymap, skip arglist note. (unless (keymapp function) + (if usage (setq doc (cdr usage))) (let* ((use (cond - (usage (setq doc (cdr usage)) (car usage)) + ((and usage (not (listp advertised))) (car usage)) ((listp arglist) (format "%S" (help-make-usage function arglist))) ((stringp arglist) arglist) -- 2.11.4.GIT