たとえば、いくつかのコードを内python-mode-hook
に配置すると、コードは次の場合に実行されます。
(1)Pythonファイルを開くたびに*.py
(2)最初python-mode
にトリガーされたときのみ
誰かが正しい答えを持っているという考えを持っていますか?
ありがとう!
フックがいつ実行されるかについての一般的な規則はありません。これは、フックを定義するコードによってのみ制御されます。ただし、従う一般的な規則があり、その中には次のものがあります。
foo-mode
が何らかのメジャーモードである場合、バッファで有効にfoo-mode-hook
なるたびに実行されます。foo-mode
特に、すでに指摘したように、ファイルがロードさpython-mode-hook
れるたびに関数が実行されます。.py
コードを見たい場合は、主要なモードの大部分がdefine-derived-mode
マクロで構築されていることに注意してください(同じ利点を得るには、新しいモードが実際にnil
別のモードから派生していない場合、モードは単に提供できますマクロの使用による標準的な動作)。parent
それでM-x find-function
RET define-derived-mode
RET
モードが呼び出されたときに発生する最後のことは次のとおりです(run-mode-hooks ',hook)
(,hook
この場合、接尾辞が付いたモードの名前に展開されます-hook
)。
したがって、バッファがそのモードを有効にするたびに(つまり、そのマクロによって定義されたモード関数が実行される)、モードのフックも実行されます(親/祖先モードのフックも同様です-興味深い相互作用はdelay-mode-hooks
、run-mode-hooks
フックは、他のすべての処理が完了するまで実行されます)。
Pythonファイルを開くたびに実行されます。
次に、このファイルバッファに対してPythonモードがトリガーされ、フックが実行されます。
簡単なフックを書くことで、これを簡単にテストできます。
(add-hook 'python-mode-hook (lambda () (message "python mode hook")))