-;;; shadow.el --- Locate Emacs Lisp file shadowings.
+;;; shadow.el --- locate Emacs Lisp file shadowings
;; Copyright (C) 1995 Free Software Foundation, Inc.
;;; Code:
\f
-(defvar shadows-compare-text-p nil
+(defgroup lisp-shadow nil
+ "Locate Emacs Lisp file shadowings."
+ :prefix "shadows-"
+ :group 'lisp)
+
+(defcustom shadows-compare-text-p nil
"*If non-nil, then shadowing files are reported only if their text differs.
-This is slower, but filters out some innocuous shadowing.")
+This is slower, but filters out some innocuous shadowing."
+ :type 'boolean
+ :group 'lisp-shadow)
(defun find-emacs-lisp-shadows (&optional path)
"Return a list of Emacs Lisp files that create shadows.
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.
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) "."))))
;; This test prevents us declaring that XXX.el shadows
;; XXX.elc (or vice-versa) when they are in the same directory.
(setq files-seen-this-dir (cons file files-seen-this-dir))
-
+
(if (setq orig-dir (assoc file files))
;; This file was seen before, we have a shadowing.
;; Report it unless the files are identical.
;; This is a bit strict, but safe.
(shadow-same-file-or-nonexistent
(concat base1 ".elc") (concat base2 ".elc"))))
- (setq shadows
- (append shadows (list base1 base2)))))
+ (setq shadows
+ (append shadows (list base1 base2)))))
;; Not seen before, add it to the list of seen files.
(setq files (cons (cons file dir) files))))
;; sizes.
(and (= (nth 7 (file-attributes f1))
(nth 7 (file-attributes f2)))
- (zerop (call-process "cmp" nil nil nil "-s" f1 f2))))))))
+ (eq 0 (call-process "cmp" nil nil nil "-s" f1 f2))))))))
\f
;;;###autoload
(defun list-load-path-shadows ()
When run interactively, the shadowings \(if any\) are displayed in a
buffer called `*Shadows*'. Shadowings are located by calling the
\(non-interactive\) companion function, `find-emacs-lisp-shadows'."
-
+
(interactive)
(let* ((path (copy-sequence load-path))
(tem path)
(setq tem (cdr tem)))
(if (> (length toplevs) 1)
;; Cut off our copy of load-path right before
- ;; the second directory which has simple.el in it.
+ ;; the last directory which has simple.el in it.
;; This avoids loads of duplications between the source dir
;; and the dir where these files were copied by installation.
- (let ((break (nth (- (length toplevs) 2) toplevs)))
+ (let ((break (car toplevs)))
(setq tem path)
(while tem
(if (eq (nth 1 tem) break)
(message "This site has duplicate Lisp libraries with the same name.
If a locally-installed Lisp library overrides a library in the Emacs release,
that can cause trouble, and you should probably remove the locally-installed
-version unless you know what you are doing.\n"))
- (while shadows
- (message "%s hides %s" (car shadows) (car (cdr shadows)))
- (setq shadows (cdr (cdr shadows))))
- (message "%s" msg)))))
+version unless you know what you are doing.\n")
+ (while shadows
+ (message "%s hides %s" (car shadows) (car (cdr shadows)))
+ (setq shadows (cdr (cdr shadows))))
+ (message "%s" msg))))))
(provide 'shadow)
+;;; arch-tag: 0480e8a7-62ed-4a12-a9f6-f44ded9b0830
;;; shadow.el ends here