* lisp/help-fns.el (describe-function): More type checking.

(describe-function-1): Handle changed symbol-function.  (Bug#20201)
This commit is contained in:
Glenn Morris 2015-04-24 14:44:33 -04:00
parent 9eabc76e5b
commit 82d0f42a4c

View file

@ -54,20 +54,22 @@ The functions will receive the function name as argument.")
(and fn (symbol-name fn))))
(list (if (equal val "")
fn (intern val)))))
(if (null function)
(message "You didn't specify a function")
(help-setup-xref (list #'describe-function function)
(called-interactively-p 'interactive))
(save-excursion
(with-help-window (help-buffer)
(prin1 function)
;; Use " is " instead of a colon so that
;; it is easier to get out the function name using forward-sexp.
(princ " is ")
(describe-function-1 function)
(with-current-buffer standard-output
;; Return the text we displayed.
(buffer-string))))))
(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))
(help-setup-xref (list #'describe-function function)
(called-interactively-p 'interactive))
(save-excursion
(with-help-window (help-buffer)
(prin1 function)
;; Use " is " instead of a colon so that
;; it is easier to get out the function name using forward-sexp.
(princ " is ")
(describe-function-1 function)
(with-current-buffer standard-output
;; Return the text we displayed.
(buffer-string)))))
;; Could be this, if we make symbol-file do the work below.
@ -479,7 +481,8 @@ FILE is the file where FUNCTION was probably defined."
function))
;; Get the real definition.
(def (if (symbolp real-function)
(symbol-function real-function)
(or (symbol-function real-function)
(signal 'void-function (list real-function)))
real-function))
(aliased (or (symbolp def)
;; Advised & aliased function.