@xuchunyang Ah. Veo que no se ve tan mal. Si respondes eso, lo aceptaría.
PythonNut
Respuestas:
9
No estoy seguro de que esto sea lo que quieres (no sé a qué te refieres con "bajo ciertas condiciones"), pero aquí hay una función que uso para actualizar todos los paquetes sin mostrar el *Packages*búfer, lo que me molesta cuando solo quiero para actualizar paquetes.
(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"))))
Esto está bien probado. También evita que aparezcan buffers de compilación.
Instalarlo por M-x package-install auto-update-package. Proporciona una función llamada auto-package-update-now. Puede escribir una ifcondición simple y agregarla a su .emacs.
Hm ... lo tendré en cuenta, pero la idea es intentar reparar automáticamente los paquetes si están rotos. Dependiendo de un paquete, hacerlo es un poco absurdo. :-)
PythonNut
1
El paquete ahora se llama actualización automática del paquete. (Demasiada baja reputación para escribirlo como un comentario en la publicación de Chillar anterior).
(Copiado de su publicación y fusionado con esta respuesta):
Instalarlo por M-x package-install auto-package-update. Proporciona una función llamada auto-package-update-now. Puede escribir una condición if simple y agregarla a su ~/.emacs.
paradox
conpackage
).Respuestas:
No estoy seguro de que esto sea lo que quieres (no sé a qué te refieres con "bajo ciertas condiciones"), pero aquí hay una función que uso para actualizar todos los paquetes sin mostrar el
*Packages*
búfer, lo que me molesta cuando solo quiero para actualizar paquetes.Esto está bien probado. También evita que aparezcan buffers de compilación.
fuente
(y-or-n-p (message ..))
lugar de solo(y-or-n-p ...)
?message
, parece que también se puede hacerformat
.format
. Obviamente no puedes hacerlo sin ningún tipo de interpolación de cadenas.Puede usar la actualización automática de paquetes .
Instalarlo por
M-x package-install auto-update-package
. Proporciona una función llamadaauto-package-update-now
. Puede escribir unaif
condición simple y agregarla a su.emacs
.fuente
El paquete ahora se llama actualización automática del paquete. (Demasiada baja reputación para escribirlo como un comentario en la publicación de Chillar anterior).
(Copiado de su publicación y fusionado con esta respuesta):
Instalarlo por
M-x package-install auto-package-update
. Proporciona una función llamadaauto-package-update-now
. Puede escribir una condición if simple y agregarla a su~/.emacs
.fuente