Answers:
我不确定这是否是您想要的(我不知道“在某些情况下”是什么意思),但是这是一个我用来升级所有软件包而不显示*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
。显然,没有任何类型的字符串插值就无法做到。
您可以使用auto-package-update。
通过安装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
)。