diff options
author | Stefan Monnier <monnier@iro.umontreal.ca> | 2009-09-15 04:03:35 +0000 |
---|---|---|
committer | Stefan Monnier <monnier@iro.umontreal.ca> | 2009-09-15 04:03:35 +0000 |
commit | 49fec531419726f3fd297f35ec1039bd1f7f0eda (patch) | |
tree | 2249bee0223c7317879c81aec4cf5066e18cf119 /lisp/emacs-lisp/bytecomp.el | |
parent | 0e328d3779d1b51ed3b7316f56735640d726980d (diff) | |
download | emacs-49fec531419726f3fd297f35ec1039bd1f7f0eda.tar.gz emacs-49fec531419726f3fd297f35ec1039bd1f7f0eda.tar.bz2 emacs-49fec531419726f3fd297f35ec1039bd1f7f0eda.zip |
(byte-compile-refresh-preloaded): New function.
Diffstat (limited to 'lisp/emacs-lisp/bytecomp.el')
-rw-r--r-- | lisp/emacs-lisp/bytecomp.el | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el index 60341974c5d..12052f7b4c6 100644 --- a/lisp/emacs-lisp/bytecomp.el +++ b/lisp/emacs-lisp/bytecomp.el @@ -4103,7 +4103,8 @@ that suppresses all warnings during execution of BODY." (byte-compile-form (cons 'progn (cdr form))))) ;; Warn about misuses of make-variable-buffer-local. -(byte-defop-compiler-1 make-variable-buffer-local byte-compile-make-variable-buffer-local) +(byte-defop-compiler-1 make-variable-buffer-local + byte-compile-make-variable-buffer-local) (defun byte-compile-make-variable-buffer-local (form) (if (and (eq (car-safe (car-safe (cdr-safe form))) 'quote) (byte-compile-warning-enabled-p 'make-local)) @@ -4394,6 +4395,26 @@ already up-to-date." nil)))) ;;;###autoload +(defun byte-compile-refresh-preloaded () + "Reload any Lisp file that was changed since Emacs was dumped. +Use with caution." + (let* ((argv0 (car command-line-args)) + (emacs-file (executable-find argv0))) + (if (not (and emacs-file (file-executable-p emacs-file))) + (message "Can't find %s to refresh preloaded Lisp files" argv0) + (dolist (f (reverse load-history)) + (setq f (car f)) + (if (string-match "elc\\'" f) (setq f (substring f 0 -1))) + (when (and (file-readable-p f) + (file-newer-than-file-p f emacs-file)) + (message "Reloading stale %s" (file-name-nondirectory f)) + (condition-case nil + (load f 'noerror nil 'nosuffix) + ;; Probably shouldn't happen, but in case of an error, it seems + ;; at least as useful to ignore it as it is to stop compilation. + (error nil))))))) + +;;;###autoload (defun batch-byte-recompile-directory (&optional arg) "Run `byte-recompile-directory' on the dirs remaining on the command line. Must be used only with `-batch', and kills Emacs on completion. |