* subr.el (do-after-load-evaluation): Also give compiler warnings
authorGlenn Morris <rgm@gnu.org>
Thu, 12 Sep 2013 06:37:02 +0000 (23:37 -0700)
committerGlenn Morris <rgm@gnu.org>
Thu, 12 Sep 2013 06:37:02 +0000 (23:37 -0700)
when obsolete files are used (except by obsolete files).

lisp/ChangeLog
lisp/subr.el

index 37005de..1713efc 100644 (file)
@@ -1,5 +1,8 @@
 2013-09-12  Glenn Morris  <rgm@gnu.org>
 
+       * subr.el (do-after-load-evaluation): Also give compiler warnings
+       when obsolete files are used (except by obsolete files).
+
        * vc/vc-svn.el (vc-svn-parse-status): If there are multiple files
        in the status output, assume `filename' is the first.  (Bug#15322)
 
index de7c629..7df1e86 100644 (file)
@@ -3907,12 +3907,27 @@ This function is called directly from the C code."
       (mapc #'funcall (cdr a-l-element))))
   ;; Complain when the user uses obsolete files.
   (when (string-match-p "/obsolete/[^/]*\\'" abs-file)
-    (run-with-timer 0 nil
-                    (lambda (file)
-                      (message "Package %s is obsolete!"
-                               (substring file 0
-                                          (string-match "\\.elc?\\>" file))))
-                    (file-name-nondirectory abs-file)))
+    ;; Maybe we should just use display-warning?  This seems yucky...
+    (let* ((file (file-name-nondirectory abs-file))
+          (msg (format "Package %s is obsolete!"
+                       (substring file 0
+                                  (string-match "\\.elc?\\>" file)))))
+      ;; Cribbed from cl--compiling-file.
+      (if (and (boundp 'byte-compile--outbuffer)
+              (bufferp (symbol-value 'byte-compile--outbuffer))
+              (equal (buffer-name (symbol-value 'byte-compile--outbuffer))
+                     " *Compiler Output*"))
+         ;; Don't warn about obsolete files using other obsolete files.
+         (unless (and (stringp byte-compile-current-file)
+                      (string-match-p "/obsolete/[^/]*\\'"
+                                      (expand-file-name
+                                       byte-compile-current-file
+                                       byte-compile-root-dir)))
+           (byte-compile-log-warning msg))
+       (run-with-timer 0 nil
+                       (lambda (msg)
+                         (message "%s" msg)) msg))))
+
   ;; Finally, run any other hook.
   (run-hook-with-args 'after-load-functions abs-file))