请问怎么获取 elpa上所有包名,仓库,描述等属性。。。
有能不通过外网的吗
把这个文件保存下来就是变成本地了
你可能问的是一个 X-Y 问题,最好说明获取 archive-contents 用来做什么。
我想尝试写一个 字符UI
的包管理,
获取 elpa 上包
是为做包验证,以及显示一些包的属性
所以想能 elpa 包数据更新,我只需做同步,不能访问外网就获取 elpa 包数据,省得我关注内外网问题
不是外网不外网的问题。
你想要使用 Emacs,就必须访问外网至少一次,以初始化 Emacs 配置。
如果你已经在使用 Emacs,那么所有包的信息都已经读取到变量 package-archive-contents
中了:
(assoc 'company package-archive-contents)
;; =>
;; (company #s(package-desc company
;; (20210513 1853)
;; "Modular text completion framework"
;; ((emacs
;; (25 1)))
;; tar "melpa" nil
;; ((:commit . "34862485c6b8badc98fee29596fe56723dcf6f77")
;; (:authors
;; ("Nikolaj Schumacher"))
;; (:maintainer "Dmitry Gutov" . "[email protected]")
;; (:keywords "abbrev" "convenience" "matching")
;; (:url . "http://company-mode.github.io/"))
;; nil)
;; #s(package-desc company
;; (0 9 13)
;; "Modular text completion framework"
;; ((emacs
;; (24 3)))
;; tar "melpa-stable" nil
;; ((:commit . "656ad10670512e135a0a5881f127bb7a789ef8ca")
;; (:authors
;; ("Nikolaj Schumacher"))
;; (:maintainer "Dmitry Gutov" . "[email protected]")
;; (:keywords "abbrev" "convenience" "matching")
;; (:url . "http://company-mode.github.io/"))
;; nil)
;; #s(package-desc company
;; (0 9 13)
;; "Modular text completion framework"
;; ((emacs
;; (24 3)))
;; tar "gnu" nil
;; ((:url . "http://company-mode.github.io/")
;; (:maintainer "Dmitry Gutov" . "[email protected]")
;; (:authors
;; ("Nikolaj Schumacher"))
;; (:keywords "abbrev" "convenience" "matching"))
;; nil))
可以看看 package-read-all-archive-contents
以及其后续的函数是如何解析包的相关信息,如果你打算做一个独立的 app,也可以借用这些现成的解析函数。
emacs把访问外网后的包信息列表(m-x package-list) 缓存在这个本地文件中 ~/.emacs.d/elpa/archives/melpa/archive-contents
,直接打开这个文件就可以了,楼主可能需要把这个文件转成更通用的数据格式,比如 json
1 个赞