[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] /srv/bzr/emacs/trunk r104825: * lisp/emacs-lisp/find-func.
From: |
Stefan Monnier |
Subject: |
[Emacs-diffs] /srv/bzr/emacs/trunk r104825: * lisp/emacs-lisp/find-func.el (find-library--load-name): New fun. |
Date: |
Thu, 30 Jun 2011 23:15:02 -0400 |
User-agent: |
Bazaar (2.3.1) |
------------------------------------------------------------
revno: 104825
fixes bug(s): http://debbugs.gnu.org/cgi/bugreport.cgi?bug=8803
committer: Stefan Monnier <address@hidden>
branch nick: trunk
timestamp: Thu 2011-06-30 23:15:02 -0400
message:
* lisp/emacs-lisp/find-func.el (find-library--load-name): New fun.
(find-library-name): Use it to find relative load names when provided
absolute file name.
modified:
lisp/ChangeLog
lisp/emacs-lisp/find-func.el
=== modified file 'lisp/ChangeLog'
--- a/lisp/ChangeLog 2011-06-30 23:19:45 +0000
+++ b/lisp/ChangeLog 2011-07-01 03:15:02 +0000
@@ -1,3 +1,9 @@
+2011-07-01 Stefan Monnier <address@hidden>
+
+ * emacs-lisp/find-func.el (find-library--load-name): New fun.
+ (find-library-name): Use it to find relative load names when provided
+ absolute file name (bug#8803).
+
2011-06-30 Lars Magne Ingebrigtsen <address@hidden>
* textmodes/flyspell.el (flyspell-word): Consider words that
@@ -14,7 +20,7 @@
* progmodes/cc-guess.el: New file.
- * progmodes/cc-langs.el (c-mode-menu): Added "Style..." submenu.
+ * progmodes/cc-langs.el (c-mode-menu): Add "Style..." submenu.
* progmodes/cc-styles.el (cc-choose-style-for-mode): New function
derived from `c-basic-common-init'.
=== modified file 'lisp/emacs-lisp/find-func.el'
--- a/lisp/emacs-lisp/find-func.el 2011-01-25 04:08:28 +0000
+++ b/lisp/emacs-lisp/find-func.el 2011-07-01 03:15:02 +0000
@@ -141,6 +141,15 @@
(dolist (suffix (get-load-suffixes) (nreverse suffixes))
(unless (string-match "elc" suffix) (push suffix suffixes)))))
+(defun find-library--load-name (library)
+ (let ((name library))
+ (dolist (dir load-path)
+ (let ((rel (file-relative-name library dir)))
+ (if (and (not (string-match "\\`\\.\\./" rel))
+ (< (length rel) (length name)))
+ (setq name rel))))
+ (unless (equal name library) name)))
+
(defun find-library-name (library)
"Return the absolute file name of the Emacs Lisp source of LIBRARY.
LIBRARY should be a string (the name of the library)."
@@ -148,13 +157,23 @@
;; the same name.
(if (string-match "\\.el\\(c\\(\\..*\\)?\\)\\'" library)
(setq library (replace-match "" t t library)))
- (or
+ (or
(locate-file library
(or find-function-source-path load-path)
(find-library-suffixes))
(locate-file library
(or find-function-source-path load-path)
load-file-rep-suffixes)
+ (when (file-name-absolute-p library)
+ (let ((rel (find-library--load-name library)))
+ (when rel
+ (or
+ (locate-file rel
+ (or find-function-source-path load-path)
+ (find-library-suffixes))
+ (locate-file rel
+ (or find-function-source-path load-path)
+ load-file-rep-suffixes)))))
(error "Can't find library %s" library)))
(defvar find-function-C-source-directory
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] /srv/bzr/emacs/trunk r104825: * lisp/emacs-lisp/find-func.el (find-library--load-name): New fun.,
Stefan Monnier <=