Let describe-function work for lambda again
Since commit "* lisp/help-fns.el (describe-function): More type checking[...]", `describe-function' throws a user-error when given a non-symbol. This prevents the [back] button in a *Help* buffer from working when the page it goes back to describes an anonymous function (e.g., the result of `describe-key' on a key which is bound to a lambda form). * lisp/help-fns.el (describe-function): Move the checks on FUNCTION being an fbound symbol into the `interactive' form. This allows non-interactive calls to pass an anonymous function (Bug #24221). Note that passing a non-bound symbol non-interactively will still trigger a `void-function' error from `describe-function-1'.
This commit is contained in:
parent
5c2da93015
commit
9da53e2d35
1 changed files with 17 additions and 16 deletions
|
@ -50,23 +50,24 @@ to get buffer-local values.")
|
|||
|
||||
;;;###autoload
|
||||
(defun describe-function (function)
|
||||
"Display the full documentation of FUNCTION (a symbol)."
|
||||
"Display the full documentation of FUNCTION (a symbol).
|
||||
When called from lisp, FUNCTION may also be a function object."
|
||||
(interactive
|
||||
(let ((fn (function-called-at-point))
|
||||
(enable-recursive-minibuffers t)
|
||||
val)
|
||||
(setq val (completing-read (if fn
|
||||
(format "Describe function (default %s): " fn)
|
||||
"Describe function: ")
|
||||
obarray 'fboundp t nil nil
|
||||
(and fn (symbol-name fn))))
|
||||
(list (if (equal val "")
|
||||
fn (intern val)))))
|
||||
(or (and function (symbolp function))
|
||||
(user-error "You didn't specify a function symbol"))
|
||||
(or (fboundp function)
|
||||
(user-error "Symbol's function definition is void: %s" function))
|
||||
|
||||
(let* ((fn (function-called-at-point))
|
||||
(enable-recursive-minibuffers t)
|
||||
(val (completing-read
|
||||
(if fn
|
||||
(format "Describe function (default %s): " fn)
|
||||
"Describe function: ")
|
||||
obarray 'fboundp t nil nil
|
||||
(and fn (symbol-name fn)))))
|
||||
(unless (equal val "")
|
||||
(setq fn (intern val)))
|
||||
(unless (and fn (symbolp fn))
|
||||
(user-error "You didn't specify a function symbol"))
|
||||
(unless (fboundp fn)
|
||||
(user-error "Symbol's function definition is void: %s" fn))
|
||||
(list fn)))
|
||||
;; We save describe-function-orig-buffer on the help xref stack, so
|
||||
;; it is restored by the back/forward buttons. 'help-buffer'
|
||||
;; expects (current-buffer) to be a help buffer when processing
|
||||
|
|
Loading…
Add table
Reference in a new issue