[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/lisp/emacs-lisp/find-func.el
From: |
Stefan Monnier |
Subject: |
[Emacs-diffs] Changes to emacs/lisp/emacs-lisp/find-func.el |
Date: |
Mon, 09 Sep 2002 17:50:37 -0400 |
Index: emacs/lisp/emacs-lisp/find-func.el
diff -c emacs/lisp/emacs-lisp/find-func.el:1.39
emacs/lisp/emacs-lisp/find-func.el:1.40
*** emacs/lisp/emacs-lisp/find-func.el:1.39 Sat Sep 7 02:45:43 2002
--- emacs/lisp/emacs-lisp/find-func.el Mon Sep 9 17:50:36 2002
***************
*** 112,117 ****
--- 112,145 ----
;;; Functions:
+ (defun find-library-suffixes ()
+ (let ((suffixes nil))
+ (dolist (suffix load-suffixes (nreverse suffixes))
+ (unless (string-match "elc" suffix) (push suffix suffixes)))))
+
+ (defun find-library-name (library)
+ "Return the full name of the elisp source of LIBRARY."
+ ;; If the library is byte-compiled, try to find a source library by
+ ;; the same name.
+ (if (string-match "\\.el\\(c\\(\\..*\\)\\)\\'" library)
+ (setq library (replace-match "" t t library 1)))
+ (or (locate-file library
+ (or find-function-source-path load-path)
+ (find-library-suffixes))
+ (error "Can't find library %s" file)))
+
+ ;;;###autoload
+ (defun find-library (library)
+ "Find the elisp source of LIBRARY."
+ (interactive
+ (list
+ (completing-read "Library name: "
+ 'locate-file-completion
+ (cons (or find-function-source-path load-path)
+ (find-library-suffixes)))))
+ (let ((buf (find-file-noselect (find-library-name library))))
+ (condition-case nil (switch-to-buffer buf) (error (pop-to-buffer buf)))))
+
;;;###autoload
(defun find-function-search-for-symbol (symbol variable-p library)
"Search for SYMBOL.
***************
*** 126,148 ****
(save-match-data
(if (string-match "\\.el\\(c\\)\\'" library)
(setq library (substring library 0 (match-beginning 1))))
! (let* ((path find-function-source-path)
! (compression (or (rassq 'jka-compr-handler file-name-handler-alist)
! (member 'crypt-find-file-hook find-file-hook)))
! (filename (progn
! ;; use `file-name-sans-extension' here? (if it gets
fixed)
! (if (string-match "\\(\\.el\\)\\'" library)
! (setq library (substring library 0
! (match-beginning 1))))
! (or (locate-library (concat library ".el") t path)
! (locate-library library t path)
! (if compression
! (or (locate-library (concat library ".el.gz")
! t path)
! (locate-library (concat library ".gz")
! t path)))))))
! (if (not filename)
! (error "The library `%s' is not in the path" library))
(with-current-buffer (find-file-noselect filename)
(let ((regexp (format (if variable-p
find-variable-regexp
--- 154,160 ----
(save-match-data
(if (string-match "\\.el\\(c\\)\\'" library)
(setq library (substring library 0 (match-beginning 1))))
! (let* ((filename (find-library-name library)))
(with-current-buffer (find-file-noselect filename)
(let ((regexp (format (if variable-p
find-variable-regexp