From: Richard M. Stallman Date: Sun, 23 Oct 2005 19:12:10 +0000 (+0000) Subject: (describe-simplify-lib-file-name): New function. X-Git-Tag: emacs-pretest-22.0.90~6372 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=9888177feca1d82de076991a21fc6de4980c0611;p=emacs.git (describe-simplify-lib-file-name): New function. (describe-function-1, describe-variable): Use it. --- diff --git a/lisp/help-fns.el b/lisp/help-fns.el index b7820b778d2..b39d92cf3be 100644 --- a/lisp/help-fns.el +++ b/lisp/help-fns.el @@ -311,6 +311,19 @@ face (according to `face-differs-from-default-p')." ;; Return value is like the one from help-split-fundoc, but highlighted (cons usage doc)) +(defun describe-simplify-lib-file-name (file) + "Simplify a library name FILE to a relative name, and make it a source file." + (if file + ;; Try converting the absolute file name to a library name. + (let ((libname (file-name-nondirectory file))) + ;; Now convert that back to a file name and see if we get + ;; the original one. If so, they are equivalent. + (if (equal file (locate-file libname load-path '(""))) + (if (string-match "[.]elc?\\'" libname) + (substring libname 0 -1) + libname) + file)))) + ;;;###autoload (defun describe-function-1 (function) (let* ((def (if (symbolp function) @@ -363,6 +376,7 @@ face (according to `face-differs-from-default-p')." (help-xref-button 1 'help-function def))))) (or file-name (setq file-name (symbol-file function 'defun))) + (setq file-name (describe-simplify-lib-file-name file-name)) (when (equal file-name "loaddefs.el") ;; Find the real def site of the preloaded function. ;; This is necessary only for defaliases. @@ -531,6 +545,7 @@ it is displayed along with the global value." ;; change the format of the buffer's initial line in case ;; anything expects the current format.) (let ((file-name (symbol-file variable 'defvar))) + (setq file-name (describe-simplify-lib-file-name file-name)) (when (equal file-name "loaddefs.el") ;; Find the real def site of the preloaded variable. (let ((location