使用elisp,如何获得由Emacs包管理工具- Package安装的包的版本?必须有办法做到这一点,因为版本信息是在list-packages创建的包缓冲区中提供的。
发布于 2012-12-31 03:40:57
(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"Update:要获取未安装的包,我们可以测试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)))))https://stackoverflow.com/questions/14096840
复制相似问题