Emacs包管理使用探索

Table of Contents

1. feature

1.1. require

(require FEATURE &optional FILENAME NOERROR)

在features变量中查找,如果没有,则调用load,参数为FEATURE。

1.1.1. load

(load FILE &optional NOERROR NOMESSAGE NOSUFFIX MUST-SUFFIX)

在load-path中找名字为FILE加一些后缀的文件,找到后调用load-file。

  1. load-file
    (load-file FILE)
    

    把FILE加载执行。

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)

Author: e0dZTBk

Created: 2022-12-24 六 12:02