【发布时间】:2018-03-05 07:27:34
【问题描述】:
假设我正在使用的特定模式是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 代码之前运行?
更具体地说,每次进入缓冲区/将其设为当前缓冲区时,是否都会运行模式挂钩? (P.S. 这很难从文档/手册中找到,欢迎在文档/手册中阐明上述任何内容的任何链接)。
【问题讨论】:
标签: emacs initialization hook elisp major-mode