답변:
나는 이것이 당신이 원하는 것이 확실하지 않습니다 (“특정 조건에서”의 의미를 모르겠습니다). 그러나 여기에 *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"))))
이것은 잘 시도됩니다. 또한 컴파일 버퍼가 팝업되는 것을 방지합니다.
(y-or-n-p (message ..))
대신 하는 특별한 이유가 (y-or-n-p ...)
있습니까?
message
, 함께 할 수있는 것 같다 format
단지뿐만 아니라.
format
. 분명히 어떤 종류의 문자열 보간 없이는 할 수 없습니다.
자동 패키지 업데이트를 사용할 수 있습니다 .
로 설치하십시오 M-x package-install auto-update-package
. 라는 함수를 제공합니다 auto-package-update-now
. 간단한 if
조건을 작성하여에 추가 할 수 있습니다 .emacs
.
(if your-condition
(auto-package-update-now))
이제 패키지를 자동 패키지 업데이트라고합니다. (위의 Chillar 게시물에 대한 의견으로 작성하기에는 평판이 너무 낮습니다).
(자신의 게시물에서 복사 하여이 답변과 병합) :
로 설치하십시오 M-x package-install auto-package-update
. 라는 함수를 제공합니다 auto-package-update-now
. 간단한 if 조건을 작성하여에 추가 할 수 있습니다 ~/.emacs
.
(if your-condition
(auto-package-update-now))
paradox
로를package
).