(find-source-lisp-file): New function.
(describe-function-1): Use find-source-lisp-file to find source file in compile tree.
This commit is contained in:
parent
c297055514
commit
2f041d6249
2 changed files with 27 additions and 0 deletions
|
@ -1,3 +1,9 @@
|
|||
2007-05-22 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
|
||||
|
||||
* help-fns.el (find-source-lisp-file): New function.
|
||||
(describe-function-1): Use find-source-lisp-file to find source
|
||||
file in compile tree.
|
||||
|
||||
2007-05-22 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
* dos-w32.el (find-buffer-file-type-coding-system): Doc fix.
|
||||
|
|
|
@ -232,6 +232,23 @@ face (according to `face-differs-from-default-p')."
|
|||
libname)
|
||||
file))))
|
||||
|
||||
(defun find-source-lisp-file (file-name)
|
||||
(let* ((elc-file (locate-file (concat file-name
|
||||
(if (string-match "\\.el" file-name)
|
||||
"c"
|
||||
".elc"))
|
||||
load-path))
|
||||
(str (if (and elc-file (file-readable-p elc-file))
|
||||
(with-temp-buffer
|
||||
(insert-file-contents-literally elc-file nil 0 256)
|
||||
(buffer-string))))
|
||||
(src-file (and str
|
||||
(string-match ";;; from file \\(.*\\.el\\)" str)
|
||||
(match-string 1 str))))
|
||||
(if (and src-file (file-readable-p src-file))
|
||||
src-file
|
||||
file-name)))
|
||||
|
||||
;;;###autoload
|
||||
(defun describe-function-1 (function)
|
||||
(let* ((def (if (symbolp function)
|
||||
|
@ -309,6 +326,10 @@ face (according to `face-differs-from-default-p')."
|
|||
;; but that's completely wrong when the user used load-file.
|
||||
(princ (if (eq file-name 'C-source) "C source code" file-name))
|
||||
(princ "'")
|
||||
;; See if lisp files are present where they where installed from.
|
||||
(if (not (eq file-name 'C-source))
|
||||
(setq file-name (find-source-lisp-file file-name)))
|
||||
|
||||
;; Make a hyperlink to the library.
|
||||
(with-current-buffer standard-output
|
||||
(save-excursion
|
||||
|
|
Loading…
Add table
Reference in a new issue