@xuchunyang Ah. Je vois que ça n'a pas l'air trop mal. Si vous en faites une réponse, je l'accepterais.
PythonNut
Réponses:
9
Je ne suis pas sûr que c'est ce que vous voulez (je ne sais pas ce que vous entendez par «sous certaines conditions»), mais voici une fonction que j'utilise pour mettre à niveau tous les paquets sans afficher de *Packages*tampon, ce que je trouve ennuyeux quand je veux juste pour mettre à niveau les packages.
(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"))))
C'est bien essayé. Il empêche également l'apparition de tampons de compilation.
Agréable. Je vais l'utiliser avec une légère variation qui ne demande pas avant de mettre à niveau les packages.
PythonNut
Y a-t-il une raison particulière pour laquelle vous le faites (y-or-n-p (message ..))au lieu de simplement (y-or-n-p ...)?
PythonNut du
@PythonNut, Eh bien, j'ai besoin de construire un message rapide, je ne me souviens plus maintenant pourquoi j'utilise message, il semble que cela puisse être fait formataussi bien.
Mark Karpov
Ah oui. Je voulais dire utiliser format. De toute évidence, vous ne pouvez pas le faire sans aucune sorte d'interpolation de chaînes.
Installez-le par M-x package-install auto-update-package. Il fournit une fonction appelée auto-package-update-now. Vous pouvez écrire une ifcondition simple et l'ajouter à votre .emacs.
Hm ... Je garderai cela à l'esprit, mais l'idée est d'essayer de réparer automatiquement les paquets emballés s'ils sont cassés. Dépendre d'un package est un peu absurde. :-)
PythonNut
1
Le package est maintenant appelé mise à jour automatique du package. (Réputation trop faible pour l'écrire en commentaire du post Chillar ci-dessus).
(Copié de son poste et fusionné avec cette réponse):
Installez-le par M-x package-install auto-package-update. Il fournit une fonction appelée auto-package-update-now. Vous pouvez écrire une condition if simple et l'ajouter à votre ~/.emacs.
paradox
parpackage
).Réponses:
Je ne suis pas sûr que c'est ce que vous voulez (je ne sais pas ce que vous entendez par «sous certaines conditions»), mais voici une fonction que j'utilise pour mettre à niveau tous les paquets sans afficher de
*Packages*
tampon, ce que je trouve ennuyeux quand je veux juste pour mettre à niveau les packages.C'est bien essayé. Il empêche également l'apparition de tampons de compilation.
la source
(y-or-n-p (message ..))
au lieu de simplement(y-or-n-p ...)
?message
, il semble que cela puisse être faitformat
aussi bien.format
. De toute évidence, vous ne pouvez pas le faire sans aucune sorte d'interpolation de chaînes.Vous pouvez utiliser la mise à jour automatique des packages .
Installez-le par
M-x package-install auto-update-package
. Il fournit une fonction appeléeauto-package-update-now
. Vous pouvez écrire uneif
condition simple et l'ajouter à votre.emacs
.la source
Le package est maintenant appelé mise à jour automatique du package. (Réputation trop faible pour l'écrire en commentaire du post Chillar ci-dessus).
(Copié de son poste et fusionné avec cette réponse):
Installez-le par
M-x package-install auto-package-update
. Il fournit une fonction appeléeauto-package-update-now
. Vous pouvez écrire une condition if simple et l'ajouter à votre~/.emacs
.la source