Câu trả lời:
Tôi không chắc đây là điều bạn muốn (Tôi không biết ý của bạn là gì trong điều kiện nhất định phạm vi), nhưng đây là chức năng tôi sử dụng để nâng cấp tất cả các gói mà không hiển thị *Packages*
bộ đệm, tôi thấy khó chịu khi tôi chỉ muốn để nâng cấp các gói.
(defun package-upgrade-all ()
"Upgrade all packages automatically without showing *Packages* buffer."
(interactive)
(package-refresh-contents)
(let (upgrades)
(cl-flet ((get-version (name where)
(let ((pkg (cadr (assq name where))))
(when pkg
(package-desc-version pkg)))))
(dolist (package (mapcar #'car package-alist))
(let ((in-archive (get-version package package-archive-contents)))
(when (and in-archive
(version-list-< (get-version package package-alist)
in-archive))
(push (cadr (assq package package-archive-contents))
upgrades)))))
(if upgrades
(when (yes-or-no-p
(message "Upgrade %d package%s (%s)? "
(length upgrades)
(if (= (length upgrades) 1) "" "s")
(mapconcat #'package-desc-full-name upgrades ", ")))
(save-window-excursion
(dolist (package-desc upgrades)
(let ((old-package (cadr (assq (package-desc-name package-desc)
package-alist))))
(package-install package-desc)
(package-delete old-package)))))
(message "All packages are up to date"))))
Đây là cố gắng tốt. Nó cũng ngăn chặn bộ đệm biên dịch bật lên.
(y-or-n-p (message ..))
thay vì chỉ (y-or-n-p ...)
?
message
, có vẻ như nó cũng có thể được thực hiện format
.
format
. Rõ ràng bạn không thể làm điều đó mà không có bất kỳ loại nội suy chuỗi nào.
Bạn có thể sử dụng tự động cập nhật gói .
Cài đặt nó bằng cách M-x package-install auto-update-package
. Nó cung cấp một chức năng được gọi là auto-package-update-now
. Bạn có thể viết một if
điều kiện đơn giản và thêm nó vào .emacs
.
(if your-condition
(auto-package-update-now))
Gói này được gọi là cập nhật gói tự động. (Danh tiếng quá thấp để viết nó như một bình luận cho bài viết Chillar ở trên).
(Sao chép từ bài đăng của anh ấy và hợp nhất với câu trả lời này):
Cài đặt nó bằng cách M-x package-install auto-package-update
. Nó cung cấp một chức năng được gọi là auto-package-update-now
. Bạn có thể viết một điều đơn giản nếu điều kiện và thêm nó vào ~/.emacs
.
(if your-condition
(auto-package-update-now))
paradox
bằngpackage
).