comparison lisp/emacs-lisp/bytecomp.el @ 40451:9c7e47dd60be

(byte-recompile-directory): Report numbers of files skipped and failed too.
author Sam Steingold <sds@gnu.org>
date Mon, 29 Oct 2001 17:26:26 +0000
parents 2b16a80692ef
children 2d63191afacd
comparison
equal deleted inserted replaced
40450:d29fac587062 40451:9c7e47dd60be
8 ;; Maintainer: FSF 8 ;; Maintainer: FSF
9 ;; Keywords: lisp 9 ;; Keywords: lisp
10 10
11 ;;; This version incorporates changes up to version 2.10 of the 11 ;;; This version incorporates changes up to version 2.10 of the
12 ;;; Zawinski-Furuseth compiler. 12 ;;; Zawinski-Furuseth compiler.
13 (defconst byte-compile-version "$Revision: 2.90 $") 13 (defconst byte-compile-version "$Revision: 2.91 $")
14 14
15 ;; This file is part of GNU Emacs. 15 ;; This file is part of GNU Emacs.
16 16
17 ;; GNU Emacs is free software; you can redistribute it and/or modify 17 ;; GNU Emacs is free software; you can redistribute it and/or modify
18 ;; it under the terms of the GNU General Public License as published by 18 ;; it under the terms of the GNU General Public License as published by
1264 (if noninteractive 1264 (if noninteractive
1265 nil 1265 nil
1266 (save-some-buffers) 1266 (save-some-buffers)
1267 (force-mode-line-update)) 1267 (force-mode-line-update))
1268 (let ((directories (list (expand-file-name directory))) 1268 (let ((directories (list (expand-file-name directory)))
1269 (skip-count 0)
1270 (fail-count 0)
1269 (file-count 0) 1271 (file-count 0)
1270 (dir-count 0) 1272 (dir-count 0)
1271 last-dir) 1273 last-dir)
1272 (displaying-byte-compile-warnings 1274 (displaying-byte-compile-warnings
1273 (while directories 1275 (while directories
1274 (setq directory (car directories)) 1276 (setq directory (car directories))
1275 (message "Checking %s..." directory) 1277 (message "Checking %s..." directory)
1276 (let ((files (directory-files directory)) 1278 (let ((files (directory-files directory))
1277 source dest) 1279 source dest)
1278 (while files 1280 (dolist (file files)
1279 (setq source (expand-file-name (car files) directory)) 1281 (setq source (expand-file-name file directory))
1280 (if (and (not (member (car files) '("." ".." "RCS" "CVS"))) 1282 (if (and (not (member file '("." ".." "RCS" "CVS")))
1281 (file-directory-p source) 1283 (file-directory-p source)
1282 (not (file-symlink-p source))) 1284 (not (file-symlink-p source)))
1283 ;; This file is a subdirectory. Handle them differently. 1285 ;; This file is a subdirectory. Handle them differently.
1284 (when (or (null arg) 1286 (when (or (null arg)
1285 (eq 0 arg) 1287 (eq 0 arg)
1298 (and arg 1300 (and arg
1299 (or (eq 0 arg) 1301 (or (eq 0 arg)
1300 (y-or-n-p (concat "Compile " source "? ")))))) 1302 (y-or-n-p (concat "Compile " source "? "))))))
1301 (progn (if (and noninteractive (not byte-compile-verbose)) 1303 (progn (if (and noninteractive (not byte-compile-verbose))
1302 (message "Compiling %s..." source)) 1304 (message "Compiling %s..." source))
1303 (byte-compile-file source) 1305 (let ((res (byte-compile-file source)))
1306 (cond ((eq res 'no-byte-compile)
1307 (setq skip-count (1+ skip-count)))
1308 ((eq res t)
1309 (setq file-count (1+ file-count)))
1310 ((eq res nil)
1311 (setq fail-count (1+ fail-count)))))
1304 (or noninteractive 1312 (or noninteractive
1305 (message "Checking %s..." directory)) 1313 (message "Checking %s..." directory))
1306 (setq file-count (1+ file-count))
1307 (if (not (eq last-dir directory)) 1314 (if (not (eq last-dir directory))
1308 (setq last-dir directory 1315 (setq last-dir directory
1309 dir-count (1+ dir-count))) 1316 dir-count (1+ dir-count)))
1310 ))) 1317 )))))
1311 (setq files (cdr files))))
1312 (setq directories (cdr directories)))) 1318 (setq directories (cdr directories))))
1313 (message "Done (Total of %d file%s compiled%s)" 1319 (message "Done (Total of %d file%s compiled%s%s%s)"
1314 file-count (if (= file-count 1) "" "s") 1320 file-count (if (= file-count 1) "" "s")
1321 (if (> fail-count 0) (format ", %d failed" fail-count) "")
1322 (if (> skip-count 0) (format ", %d skipped" skip-count) "")
1315 (if (> dir-count 1) (format " in %d directories" dir-count) "")))) 1323 (if (> dir-count 1) (format " in %d directories" dir-count) ""))))
1316 1324
1317 ;;;###autoload 1325 ;;;###autoload
1318 (defun byte-compile-file (filename &optional load) 1326 (defun byte-compile-file (filename &optional load)
1319 "Compile a file of Lisp code named FILENAME into a file of byte code. 1327 "Compile a file of Lisp code named FILENAME into a file of byte code.
1320 The output file's name is made by appending `c' to the end of FILENAME. 1328 The output file's name is made by appending `c' to the end of FILENAME.
1321 With prefix arg (noninteractively: 2nd arg), LOAD the file after compiling. 1329 With prefix arg (noninteractively: 2nd arg), LOAD the file after compiling.
1322 The value is t if there were no errors, nil if errors." 1330 The value is non-nil if there were no errors, nil if errors."
1323 ;; (interactive "fByte compile file: \nP") 1331 ;; (interactive "fByte compile file: \nP")
1324 (interactive 1332 (interactive
1325 (let ((file buffer-file-name) 1333 (let ((file buffer-file-name)
1326 (file-name nil) 1334 (file-name nil)
1327 (file-dir nil)) 1335 (file-dir nil))
1387 (file-relative-name filename) 1395 (file-relative-name filename)
1388 (with-current-buffer input-buffer no-byte-compile)) 1396 (with-current-buffer input-buffer no-byte-compile))
1389 (if (file-exists-p target-file) 1397 (if (file-exists-p target-file)
1390 (condition-case nil (delete-file target-file) (error nil))) 1398 (condition-case nil (delete-file target-file) (error nil)))
1391 ;; We successfully didn't compile this file. 1399 ;; We successfully didn't compile this file.
1392 t) 1400 'no-byte-compile)
1393 (if byte-compile-verbose 1401 (if byte-compile-verbose
1394 (message "Compiling %s..." filename)) 1402 (message "Compiling %s..." filename))
1395 (setq byte-compiler-error-flag nil) 1403 (setq byte-compiler-error-flag nil)
1396 ;; It is important that input-buffer not be current at this call, 1404 ;; It is important that input-buffer not be current at this call,
1397 ;; so that the value of point set in input-buffer 1405 ;; so that the value of point set in input-buffer
3555 (let ((error nil)) 3563 (let ((error nil))
3556 (while command-line-args-left 3564 (while command-line-args-left
3557 (if (file-directory-p (expand-file-name (car command-line-args-left))) 3565 (if (file-directory-p (expand-file-name (car command-line-args-left)))
3558 (let ((files (directory-files (car command-line-args-left))) 3566 (let ((files (directory-files (car command-line-args-left)))
3559 source dest) 3567 source dest)
3560 (while files 3568 (dolist (file files)
3561 (if (and (string-match emacs-lisp-file-regexp (car files)) 3569 (if (and (string-match emacs-lisp-file-regexp file)
3562 (not (auto-save-file-name-p (car files))) 3570 (not (auto-save-file-name-p file))
3563 (setq source (expand-file-name (car files) 3571 (setq source (expand-file-name file
3564 (car command-line-args-left))) 3572 (car command-line-args-left)))
3565 (setq dest (byte-compile-dest-file source)) 3573 (setq dest (byte-compile-dest-file source))
3566 (file-exists-p dest) 3574 (file-exists-p dest)
3567 (file-newer-than-file-p source dest)) 3575 (file-newer-than-file-p source dest))
3568 (if (null (batch-byte-compile-file source)) 3576 (if (null (batch-byte-compile-file source))
3569 (setq error t))) 3577 (setq error t)))))
3570 (setq files (cdr files))))
3571 (if (null (batch-byte-compile-file (car command-line-args-left))) 3578 (if (null (batch-byte-compile-file (car command-line-args-left)))
3572 (setq error t))) 3579 (setq error t)))
3573 (setq command-line-args-left (cdr command-line-args-left))) 3580 (setq command-line-args-left (cdr command-line-args-left)))
3574 (kill-emacs (if error 1 0)))) 3581 (kill-emacs (if error 1 0))))
3575 3582