2012-12-31 43 views
2

使用elisp,我怎樣才能得到由Emacs包管理工具安裝的包的版本 - 包?必須有一些方法可以做到這一點,因爲版本信息在中給出,由list-packages創建。如何獲取Package安裝的插件版本?

回答

3
(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))))) 
+0

謝謝。你知道如何獲得未安裝軟件包的版本嗎? – RNA

+0

把'when'改成''unless'。根據我所知道的,'package-activated-list'包含所有已安裝的軟件包。 –

+0

,這將無法正常工作。 'package-alist'也只包含已安裝的軟件包。 – RNA

相關問題