spacemacs的layer里第一个起作用的是哪个文件?

起作用=对Emacs做实际更改

spacemacs的文件加载顺序是layers.el(如果有) → packages.el → funds.el → config.el → keybindings.el(如果有)

但是这一段话让我不解了:

Spacemacs goes through all the enabled layers and evaluates their files. First layers.el is loaded to declare layer dependencies. Then packages.el and funcs.el are loaded, but nothing happens from them since these files only define functions and variables, then the changes introduced by config.el are applied.

那么第一个真正发生实际作用的是哪个文件?按文档说的,应该是layers.el(如果有)/config.el,但是为啥又说packages.el最先加载 (没有layers.el的时候) ?

也就是实际上,packages.el只是定义了一堆函数,并不做任何实际动作?那么这些实际动作(比如安装package, 定义package相关的快捷键)是在何时发生的?


另外借题问一下,写配置的时候,在子文件里应该把类似config.el里的东西放开头,还是把类似packages.el里的东西放开头?

谢谢各位

看这个函数:

(defun configuration-layer//configure-package (pkg)
  "Configure PKG object."
  ...

    ;; pre-init
    ...

    ;; init
    (spacemacs-buffer/message (format "  -> init (%S)..." owner))
    (funcall (intern (format "%S/init-%S" owner pkg-name)))

    ;; post-init
    ...)
configuration-layer//configure-package
    |
    +--> FOO-layer/init-BAR-package
            |
            +--> (use-package FOO 
                  ...)

我觉得应该`类似config放开头,类似config声明了类似package要用的设置,比如是否启用某个功能。

不过我的配置里都放一起了……

SPC b m查看下加载文件的信息就行了,是package.el->func.el->config.el。

好吧……

我现在是把内建的变量放最前面,然后是内建的命令和package, 然后是需要安装的package,然后是自己定义的与任何package无关的函数,最后是与任何东西无关的键绑定。

而与package有关的变量,函数,键绑定之类的都和package放一起。

看来安装package是在config.el应用后,keybindings.el应用前完成的

而且我也想明白了……built-in的东西确实该放在elpa/melpa包之前,而变量该放在package/command之前……否则就依赖关系大乱套啦