changeset 105932:dd099beb5a5b

(find-emacs-lisp-shadows, list-load-path-shadows): Use dolist. (list-load-path-shadows): Use with-current-buffer.
author Glenn Morris <rgm@gnu.org>
date Tue, 10 Nov 2009 08:06:53 +0000
parents a5db20cb0a5a
children 8f110099da5c
files lisp/ChangeLog lisp/emacs-lisp/shadow.el
diffstat 2 files changed, 27 insertions(+), 32 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Tue Nov 10 07:58:57 2009 +0000
+++ b/lisp/ChangeLog	Tue Nov 10 08:06:53 2009 +0000
@@ -1,3 +1,9 @@
+2009-11-10  Glenn Morris  <rgm@gnu.org>
+
+	* emacs-lisp/shadow.el (find-emacs-lisp-shadows)
+	(list-load-path-shadows): Use dolist.
+	(list-load-path-shadows): Use with-current-buffer.
+
 2009-11-10  Juri Linkov  <juri@jurta.org>
 
 	* minibuffer.el (read-file-name): Support a list of default values
--- a/lisp/emacs-lisp/shadow.el	Tue Nov 10 07:58:57 2009 +0000
+++ b/lisp/emacs-lisp/shadow.el	Tue Nov 10 08:06:53 2009 +0000
@@ -72,9 +72,6 @@
 are stripped from the file names in the list.
 
 See the documentation for `list-load-path-shadows' for further information."
-
-  (or path (setq path load-path))
-
   (let (true-names			; List of dirs considered.
 	shadows				; List of shadowings, to be returned.
 	files				; File names ever seen, with dirs.
@@ -83,11 +80,8 @@
 	orig-dir			; Where the file was first seen.
 	files-seen-this-dir		; Files seen so far in this dir.
 	file)				; The current file.
-
-
-    (while path
-
-      (setq dir (directory-file-name (file-truename (or (car path) "."))))
+    (dolist (pp (or path load-path))
+      (setq dir (directory-file-name (file-truename (or pp "."))))
       (if (member dir true-names)
 	  ;; We have already considered this PATH redundant directory.
 	  ;; Show the redundancy if we are interactive, unless the PATH
@@ -95,12 +89,12 @@
 	  ;; result of the current working directory, and are therefore
 	  ;; not always redundant).
 	  (or noninteractive
-	      (and (car path)
-		   (not (string= (car path) "."))
-		   (message "Ignoring redundant directory %s" (car path))))
+	      (and pp
+		   (not (string= pp "."))
+		   (message "Ignoring redundant directory %s" pp)))
 
 	(setq true-names (append true-names (list dir)))
-	(setq dir (directory-file-name (or (car path) ".")))
+	(setq dir (directory-file-name (or pp ".")))
 	(setq curr-files (if (file-accessible-directory-p dir)
 			     (directory-files dir nil ".\\.elc?\\(\\.gz\\)?$" t)))
 	(and curr-files
@@ -109,9 +103,8 @@
 
 	(setq files-seen-this-dir nil)
 
-	(while curr-files
+	(dolist (file curr-files)
 
-	  (setq file (car curr-files))
 	  (if (string-match "\\.gz$" file)
 	      (setq file (substring file 0 -3)))
 	  (setq file (substring
@@ -141,11 +134,7 @@
 			    (append shadows (list base1 base2)))))
 
 	      ;; Not seen before, add it to the list of seen files.
-	      (setq files (cons (cons file dir) files))))
-
-	  (setq curr-files (cdr curr-files))))
-	(setq path (cdr path)))
-
+	      (setq files (cons (cons file dir) files)))))))
     ;; Return the list of shadowings.
     shadows))
 
@@ -210,11 +199,10 @@
 	(tem path)
 	toplevs)
     ;; If we can find simple.el in two places,
-    (while tem
-      (if (or (file-exists-p (expand-file-name "simple.el" (car tem)))
-	      (file-exists-p (expand-file-name "simple.el.gz" (car tem))))
-	  (setq toplevs (cons (car tem) toplevs)))
-      (setq tem (cdr tem)))
+    (dolist (tt tem)
+      (if (or (file-exists-p (expand-file-name "simple.el" tt))
+	      (file-exists-p (expand-file-name "simple.el.gz" tt)))
+	  (setq toplevs (cons tt toplevs))))
     (if (> (length toplevs) 1)
 	;; Cut off our copy of load-path right before
 	;; the last directory which has simple.el in it.
@@ -242,16 +230,17 @@
 	(if stringp
 	    (buffer-string)
 	  (if (called-interactively-p 'interactive)
-	      (save-excursion
-		;; We are interactive.
-		;; Create the *Shadows* buffer and display shadowings there.
-		(let ((string (buffer-string))
-		      (output-buffer (get-buffer-create "*Shadows*")))
-		  (display-buffer output-buffer)
-		  (set-buffer output-buffer)
+	      ;; We are interactive.
+	      ;; Create the *Shadows* buffer and display shadowings there.
+	      (let ((string (buffer-string)))
+		(with-current-buffer (get-buffer-create "*Shadows*")
+		  (display-buffer (current-buffer))
+		  (setq buffer-undo-list t
+			buffer-read-only nil)
 		  (erase-buffer)
 		  (insert string)
-		  (insert msg "\n")))
+		  (insert msg "\n")
+		  (setq buffer-read-only t)))
 	    ;; We are non-interactive, print shadows via message.
 	    (unless (zerop n)
 	      (message "This site has duplicate Lisp libraries with the same name.