ฉันต้องการให้ emac ของฉันอัพเกรดแพ็คเกจทั้งหมดโดยอัตโนมัติภายใต้เงื่อนไขบางประการ
วิธีที่ดีที่สุดในการทำเช่นนี้คืออะไร?
ฉันต้องการให้ emac ของฉันอัพเกรดแพ็คเกจทั้งหมดโดยอัตโนมัติภายใต้เงื่อนไขบางประการ
วิธีที่ดีที่สุดในการทำเช่นนี้คืออะไร?
คำตอบ:
ฉันไม่แน่ใจว่านี่คือสิ่งที่คุณต้องการ (ฉันไม่รู้ว่าคุณหมายถึงอะไรโดย“ ภายใต้เงื่อนไขบางอย่าง”) แต่นี่คือฟังก์ชั่นที่ฉันใช้ในการอัพเกรดแพ็คเกจทั้งหมดโดยไม่แสดง*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
มันมีฟังก์ชั่นที่เรียกว่า ~/.emacs
คุณสามารถเขียนง่ายถ้าเงื่อนไขและเพิ่มที่ของคุณ
(if your-condition
(auto-package-update-now))
paradox
ด้วยpackage
)