Antworten:
Ich bin nicht sicher, ob Sie dies möchten (ich weiß nicht, was Sie unter „bestimmten Bedingungen“ verstehen), aber hier ist eine Funktion, mit der ich alle Pakete aktualisiere, ohne den *Packages*
Puffer anzuzeigen, was ich ärgerlich finde, wenn ich nur möchte Pakete zu aktualisieren.
(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"))))
Das ist gut erprobt. Außerdem wird verhindert, dass Kompilierungspuffer angezeigt werden.
(y-or-n-p (message ..))
anstatt nur (y-or-n-p ...)
?
message
, es scheint, als ob es format
genauso gut geht.
format
. Natürlich können Sie dies nicht ohne eine Art String-Interpolation tun.
Sie können die automatische Paketaktualisierung verwenden .
Installieren Sie es durch M-x package-install auto-update-package
. Es bietet eine Funktion namens auto-package-update-now
. Sie können eine einfache if
Bedingung schreiben und diese Ihrer hinzufügen .emacs
.
(if your-condition
(auto-package-update-now))
Das Paket wird jetzt als automatische Paketaktualisierung bezeichnet. (Zu geringes Ansehen, um es als Kommentar zum obigen Beitrag von Chillar zu schreiben.)
(Von seinem Beitrag kopiert und mit dieser Antwort zusammengeführt):
Installieren Sie es durch M-x package-install auto-package-update
. Es bietet eine Funktion namens auto-package-update-now
. Sie können eine einfache if-Bedingung schreiben und diese Ihrer hinzufügen ~/.emacs
.
(if your-condition
(auto-package-update-now))
paradox
durchpackage
).