在调用模式挂钩之前,如何加载在dir-locals中定义的变量?

jil*_*luo 2 emacs

我想在.dir-locals.el中定义一些变量,然后在python-mode-hook中添加一个钩子,在该钩子中,我想读取.dir-locals中定义的变量。问题是在加载.dir-locals.el之前调用了模式挂钩

有什么想法可以交换加载顺序吗?

lun*_*orn 5

您不能交换序列。它被硬编码在中normal-mode

但是,您可以连接到hack-local-variables-hook,在设置所有局部变量之后运行。假设您当前具有以下内容:

(defun my-python-hook-function ()
  (message "Hello world"))

(add-hook 'python-mode-hook #'my-python-hook-function)
Run Code Online (Sandbox Code Playgroud)

您可以简单地将其更改为:

(defun my-local-variables-hook ()
  (when (derived-mode-p 'python-mode) (my-python-hook-function)))

(add-hook 'hack-local-variables-hook #'my-local-variables-hook)
Run Code Online (Sandbox Code Playgroud)