为什么我的模式特定.emacs挂钩运行所有模式?

sda*_*das 2 lisp emacs hook

我在.emacs文件中运行以下代码:

(defun load-hooks ()
    (add-hook 'after-save-hook 'my-hook))

(add-hook 'c-mode-hook 'load-hooks)

(defun my-hook () ... )
Run Code Online (Sandbox Code Playgroud)

但是,my-hook即使我处于不同的模式,内容也会在保存时运行.我错过了一步吗?

use*_*342 5

您应该使用LOCAL参数add-hook,这将确保钩子只影响当前缓冲区:

(defun load-hooks ()
  (add-hook 'after-save-hook 'my-hook nil t))

(add-hook 'c-mode-hook 'load-hooks)

(defun my-hook () ...)
Run Code Online (Sandbox Code Playgroud)