Mercurial > emacs
changeset 43027:4c6cdfeb929c
(batch-byte-compile): New arg noforce.
(batch-byte-compile-if-not-done): New function.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Fri, 01 Feb 2002 04:14:14 +0000 |
parents | 7c4834964c35 |
children | 5a7c132708d2 |
files | lisp/emacs-lisp/bytecomp.el |
diffstat | 1 files changed, 20 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/emacs-lisp/bytecomp.el Fri Feb 01 04:13:14 2002 +0000 +++ b/lisp/emacs-lisp/bytecomp.el Fri Feb 01 04:14:14 2002 +0000 @@ -10,7 +10,7 @@ ;;; This version incorporates changes up to version 2.10 of the ;;; Zawinski-Furuseth compiler. -(defconst byte-compile-version "$Revision: 2.92 $") +(defconst byte-compile-version "$Revision: 2.93 $") ;; This file is part of GNU Emacs. @@ -3554,15 +3554,23 @@ )) +(defun batch-byte-compile-if-not-done () + "Like `byte-compile-file' but doesn't recompile if already up to date. +Use this from the command line, with `-batch'; +it won't work in an interactive Emacs." + (batch-byte-compile t)) + ;;; by crl@newton.purdue.edu ;;; Only works noninteractively. ;;;###autoload -(defun batch-byte-compile () +(defun batch-byte-compile (&optional noforce) "Run `byte-compile-file' on the files remaining on the command line. Use this from the command line, with `-batch'; it won't work in an interactive Emacs. Each file is processed even if an error occurred previously. -For example, invoke \"emacs -batch -f batch-byte-compile $emacs/ ~/*.el\"" +For example, invoke \"emacs -batch -f batch-byte-compile $emacs/ ~/*.el\". +If NOFORCE is non-nil, don't recompile a file that seems to be +already up-to-date." ;; command-line-args-left is what is left of the command line (from startup.el) (defvar command-line-args-left) ;Avoid 'free variable' warning (if (not noninteractive) @@ -3570,6 +3578,7 @@ (let ((error nil)) (while command-line-args-left (if (file-directory-p (expand-file-name (car command-line-args-left))) + ;; Directory as argument. (let ((files (directory-files (car command-line-args-left))) source dest) (dolist (file files) @@ -3582,8 +3591,14 @@ (file-newer-than-file-p source dest)) (if (null (batch-byte-compile-file source)) (setq error t))))) - (if (null (batch-byte-compile-file (car command-line-args-left))) - (setq error t))) + ;; Specific file argument + (if (or (not noforce) + (let* ((source (car command-line-args-left)) + (dest (byte-compile-dest-file source))) + (or (not (file-exists-p dest)) + (file-newer-than-file-p source dest)))) + (if (null (batch-byte-compile-file (car command-line-args-left))) + (setq error t)))) (setq command-line-args-left (cdr command-line-args-left))) (kill-emacs (if error 1 0))))