2
使用elisp,我怎樣才能得到由Emacs包管理工具安裝的包的版本 - 包?必須有一些方法可以做到這一點,因爲版本信息在包中給出,由list-packages
創建。如何獲取Package安裝的插件版本?
使用elisp,我怎樣才能得到由Emacs包管理工具安裝的包的版本 - 包?必須有一些方法可以做到這一點,因爲版本信息在包中給出,由list-packages
創建。如何獲取Package安裝的插件版本?
(defun get-package-version (name)
(when (member name package-activated-list)
(package-desc-vers (cdr (assoc name package-alist)))))
大多數版本的包被存儲爲[major-version minor-version]
列表。那些從GitHub內置Melpa包使用形式[YYYYMMDD hhmm]
的時間,如果你想從這些清單中的字符串,你可以這樣做:
(defun* package-version-string ((major minor))
(format "%s.%s" major minor))
(package-version-string (get-package-version 'pep8)) ; => "1.2"
更新:要獲取未安裝的軟件包,我們可以測試會員號碼爲package-archive-contents
,如下所示:
(defun get-not-installed-packages()
(remove-if (lambda (x) (assoc (car x) package-alist)) package-archive-contents))
(defun get-not-installed-package-version (name)
(let ((pkg (assoc name (get-not-installed-packages))))
(when pkg
(package-desc-vers (cdr pkg)))))
謝謝。你知道如何獲得未安裝軟件包的版本嗎? – RNA
把'when'改成''unless'。根據我所知道的,'package-activated-list'包含所有已安裝的軟件包。 –
,這將無法正常工作。 'package-alist'也只包含已安裝的軟件包。 – RNA