除了特定模式,在prog模式中添加一个钩子

时间:2016-12-29 03:03:12

标签: emacs hook

我有一个功能

(defun a--before-test-save-hook()
  "Test of before save hook"
  (message "foobar"))

我希望在除prog-mode之外的python-mode中运行它, 但我现在不知道 我只是add-hook prog-mode,包括python-mode

(add-hook 'prog-mode (lambda ()
                       (add-hook 'before-save-hook 'a-test-before-save-hook t t)))

我试过

(defun a-test-before-save-hook()
  "Test of before save hook"
  (unless (eq major-mode 'python-mode)
    (message "foobar")))

但我想要更好的尝试,任何解决方案都将受到赞赏。

1 个答案:

答案 0 :(得分:2)

不确定它是否更好,但你可以这样做:

(add-hook 'prog-mode-hook
          (lambda ()
            (unless (derived-mode-p 'python-mode)
              (add-hook 'before-save-hook
                        #'a-test-before-save-hook t t))))

当然,我自己的反应是问“是什么让Python变得特别?”。答案可能会让你用更直接的问题替换(derived-mode-p 'python-mode)测试(例如,问题可能与缩进有关,因此也适用于Coffeescript和Haskell,也许你可以检查而是electric-indent-inhibit