让我们假设我正在使用的特定模式是python-mode
. Emacs 手册为钩子指定了以下内容:
每个主要模式命令都应该运行一个称为模式挂钩的普通挂钩,作为初始化的最后步骤之一。
从主要模式约定:
每个主要模式都应该有一个名为
modename-mode-hook
. 主模式命令应该做的最后一件事是调用run-mode-hooks
.
并with-eval-after-load
在代码加载(例如需要)后执行代码,如果已经需要则立即运行。
我的初始化文件中有以下内容:
(add-hook 'python-mode-hook 'my-post-python)
我也添加了
(with-eval-after-load 'python-mode
(setq-default python-basic-offset 7) ; setting some option
(add-to-list 'python-globals-list "console"))
现在假设我打开 Emacs,然后打开 Python 文件缓冲区,关于 hooks 和的加载/执行顺序是with-eval-after-load
什么?从开始时指定的文档来看,模式挂钩似乎会在with-eval-after-load
代码之前运行?
更具体地说,每次进入缓冲区/将其设为当前缓冲区时,是否都会运行模式挂钩?(PS 这很难从文档/手册中找到,欢迎在文档/手册中阐明上述任何内容的任何链接)。