summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp/find-func.el
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/emacs-lisp/find-func.el')
-rw-r--r--lisp/emacs-lisp/find-func.el11
1 files changed, 8 insertions, 3 deletions
diff --git a/lisp/emacs-lisp/find-func.el b/lisp/emacs-lisp/find-func.el
index 167ead3ce02..be53324f141 100644
--- a/lisp/emacs-lisp/find-func.el
+++ b/lisp/emacs-lisp/find-func.el
@@ -219,8 +219,10 @@ LIBRARY should be a string (the name of the library)."
(locate-file basename (list dir) (find-library-suffixes)))))))
(defvar find-function-C-source-directory
- (let ((dir (expand-file-name "src" source-directory)))
- (if (file-accessible-directory-p dir) dir))
+ (let ((dir (expand-file-name "src" emacs-source-directory)))
+ (if (file-accessible-directory-p dir) dir
+ (setq dir (expand-file-name "src" source-directory))
+ (if (file-accessible-directory-p dir) dir)))
"Directory where the C source files of Emacs can be found.
If nil, do not try to find the source code of functions and variables
defined in C.")
@@ -245,7 +247,10 @@ TYPE should be nil to find a function, or `defvar' to find a variable."
(let ((dir (or find-function-C-source-directory
(read-directory-name "Emacs C source dir: " nil nil t))))
(setq file (expand-file-name file dir))
- (if (file-readable-p file)
+ (if (or (file-readable-p file)
+ (let ((file-gz (concat file ".gz")))
+ (and (file-readable-p file-gz)
+ (setq file file-gz))))
(if (null find-function-C-source-directory)
(setq find-function-C-source-directory dir))
(error "The C source file %s is not available"