Emacs包管理使用探索
Table of Contents
1. feature
1.1. require
(require FEATURE &optional FILENAME NOERROR)
在features变量中查找,如果没有,则调用load,参数为FEATURE。
1.2. provide
(provide FEATURE &optional SUBFEATURES)
在features变量中添加FEATURE。
2. autoload
(autoload FUNCTION FILE &optional DOCSTRING INTERACTIVE TYPE)
在FUNCTION其实现的定义没有被加载执行前,为其预留位置,在第一次调用的时候加载它的定义文件。
2.1. 魔法注释
;;;###autoload
在调用一些函数之后,会提取文件中的魔法注释定义,生成一个autoload文件,里面是(autoload …)类似的代码, 然后在执行这些autoload文件,就会实现魔法注释定义的autoload.
3. package
3.1. archives
默认的是GNU elpa,可以通过修改package-archives来添加archives仓库。 常用的有melpa
3.2. package-install
(package-install PKG &optional DONT-SELECT)
安装PKG,这个操作大概会涉及:
- 更新package-archive-centents
- 下载PKG
- 提取魔法注释生成autoload文件
- 加载生成的autoload文件
- 添加PKG的path到load-path
3.3. package-selected-packages
用户使用的变量,定义自己要用的包
3.3.1. package-install-selected-packages
(package-install-selected-packages &optional NOCONFIRM)
调用package-install安装定义在package-selected-packages中的包。
3.4. package-autoremove
对比安装的包和package-selected-packages的内容,删除未select或者select的包不依赖但已经安装的包。 删除的过程会在minibuffer询问。
4. 我的package相关init代码
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t)
;;指定下载的包
(setq package-selected-packages
'(
;;想要安装的packages,一行一个,后面还可以跟功能注释。
))
(package-install-selected-packages t)
(package-autoremove)