Quero que o meu emacs atualize automaticamente todos os pacotes sob certas condições.
Qual é a melhor maneira de fazer isso?
Quero que o meu emacs atualize automaticamente todos os pacotes sob certas condições.
Qual é a melhor maneira de fazer isso?
Respostas:
Não tenho certeza de que é isso que você deseja (não sei o que você quer dizer com "sob certas condições"), mas aqui está uma função que eu uso para atualizar todos os pacotes sem mostrar *Packages*
buffer, o que acho irritante quando eu só quero para atualizar pacotes.
(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"))))
Isso é bem experimentado. Também impede que os buffers de compilação sejam exibidos.
(y-or-n-p (message ..))
vez de apenas (y-or-n-p ...)
?
message
, parece que isso pode ser feito format
também.
format
. Obviamente, você não pode fazer isso sem nenhum tipo de interpolação de string.
Você pode usar a atualização automática de pacotes .
Instale-o por M-x package-install auto-update-package
. Ele fornece uma função chamada auto-package-update-now
. Você pode escrever uma if
condição simples e adicioná-la ao seu .emacs
.
(if your-condition
(auto-package-update-now))
O pacote agora é chamado de atualização automática de pacotes. (Reputação muito baixa para escrevê-la como um comentário no post de Chillar acima).
(Copiado de seu post e mesclado com esta resposta):
Instale-o por M-x package-install auto-package-update
. Ele fornece uma função chamada auto-package-update-now
. Você pode escrever uma condição if simples e adicioná-la ao seu ~/.emacs
.
(if your-condition
(auto-package-update-now))
paradox
porpackage
).