如何获取Package安装的插件版本?

时间:2012-12-31 02:36:38

标签: emacs package version

使用elisp,我如何获得Emacs软件包管理工具安装的软件包版本 - 软件包?必须有一些方法可以做到这一点,因为版本信息是在list-packages创建的 package 缓冲区中给出的。

1 个答案:

答案 0 :(得分: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)))))