-(defun install-elisp-module (module src dest &optional just-print)
- (let (el-file elc-file)
- (let ((name (symbol-name module)))
- (setq el-file (concat name ".el"))
- (setq elc-file (concat name ".elc")))
- (let ((src-file (expand-file-name el-file src)))
- (if (not (file-exists-p src-file))
- nil
- (if just-print
- (princ (format "%s -> %s\n" el-file dest))
- (let ((full-path (expand-file-name el-file dest)))
- (if (file-exists-p full-path)
- (delete-file full-path))
- (copy-file src-file full-path t t)
- (princ (format "%s -> %s\n" el-file dest)))))
- (setq src-file (expand-file-name elc-file src))
- (if (not (file-exists-p src-file))
- nil
- (if just-print
- (princ (format "%s -> %s\n" elc-file dest))
- (let ((full-path (expand-file-name elc-file dest)))
- (if (file-exists-p full-path)
- (delete-file full-path))
- (copy-file src-file full-path t t)
- (catch 'tag
- (while (file-exists-p src-file)
- (condition-case err
- (progn
- (delete-file src-file)
- (throw 'tag nil))
- (error (princ (format "%s\n" (nth 1 err)))))))
- (princ (format "%s -> %s\n" elc-file dest))))))))
-
-(defun install-elisp-modules (modules src dest &optional just-print)
- (or (file-exists-p dest)
- (make-directory dest t))
- (mapcar
- (function
- (lambda (module)
- (install-elisp-module module src dest just-print)))
- modules))
+(defun install-elisp-module (module src dst &optional dry-run)
+ "Install MODULE.
+MODULE is a symbol of emacs-lisp source file name without suffix.
+See `install-file' for information of the rest of arguments."
+ (let* ((name (symbol-name module))
+ (el-file (concat name ".el"))
+ (elc-file (concat name ".elc")))
+ (install-file el-file src dst nil 'overwrite dry-run)
+ (install-file elc-file src dst 'move 'overwrite dry-run)))
+
+(defun install-elisp-modules (modules src dst &optional dry-run)
+ "Install MODULES.
+See `install-elisp-modules' for more information."
+ (or dry-run
+ (file-exists-p dst)
+ (make-directory dst t))
+ (while modules
+ (install-elisp-module (car modules) src dst dry-run)
+ (setq modules (cdr modules))))