emacs - 从 js-mode-hook 中排除 json-mode

tvd*_*vdw 4 javascript emacs json

我正在使用 Emacs 开发 Javascript。

我有一个函数可以在文件保存时将我的 Javascript 代码格式化为标准样式。我的配置是这样的:

(add-hook 'js-mode-hook
      (lambda ()
        (add-hook 'before-save-hook 'standardfmt t t)))
Run Code Online (Sandbox Code Playgroud)

不幸的是,这个钩子也有应用于缓冲区的副作用json-mode,因为json-modejs-mode.

有没有一种简单的方法可以json-mode从这个钩子中排除缓冲区?

Ste*_*fan 5

你可以这样做:

(add-hook 'js-mode-hook
  (lambda ()
    (unless (derived-mode-p 'json-mode)
      (add-hook 'before-save-hook 'standardfmt t t))))
Run Code Online (Sandbox Code Playgroud)

或者

(add-hook 'js-mode-hook
  (lambda ()
    (when (eq major-mode 'js-mode) ;; Not a derived mode.
      (add-hook 'before-save-hook 'standardfmt t t))))
Run Code Online (Sandbox Code Playgroud)