.emacsファイルで次のコードを実行しています。
(defun load-hooks ()
(add-hook 'after-save-hook 'my-hook))
(add-hook 'c-mode-hook 'load-hooks)
(defun my-hook () ... )
ただし、my-hook
別のモードを使用している場合でも、のコンテンツは保存時に実行されます。私は一歩を逃していますか?
に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 () ...)
呼び出すと、すべてのモードにフックが追加さ(add-hook 'after-save-hook 'my-hook)
れると思います。つまり、その関数が呼び出されると、他のすべてのバッファに対しても変更されます。load-hooks
after-save-hook
acファイルを開かないとフックが実行されないのではないかと思います。cファイルを開かずにファイルを開いてみて、何かが実行されているかどうかを確認してください。そうでない場合は、cファイルに対して実行される関数が他のすべての保存フックを変更することを意味します。
Tikhonは、すべてのモードに影響を与える'after-save-hookについて正しかった-私は現在、次の関数を使用したチェックに依存しています。
(defun in-c-mode? ()
(string= (current-major-mode) "c-mode"))
(defun current-major-mode ()
(with-current-buffer (current-buffer) major-mode))