1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-24 06:20:43 -08:00

* 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.
This commit is contained in:
Stefan Monnier 2009-10-02 14:36:54 +00:00
parent c4861de07b
commit 8d6c1239cb
3 changed files with 27 additions and 14 deletions

View file

@ -1,3 +1,12 @@
2009-10-02 Stefan Monnier <monnier@iro.umontreal.ca>
* 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 <michael.albinus@gmx.de>
* 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 <eliz@gnu.org>

View file

@ -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.

View file

@ -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)))))
(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)