Previous: Font Lock Mode, Up: Modes [Contents][Index]
¥Õ¥Ã¥¯¡Êhook¡Ë¤È¤Ï¡¢´û¸¤Î¥×¥í¥°¥é¥à¤«¤éÆÃÄê¤Î¾ìÌÌ¤Ç ¸Æ¤Ó½Ð¤µ¤ì¤ë¡Ê1¤Ä¤«°ìÏ¢¤Î¡Ë´Ø¿ô¤ò¼ý¤á¤¿ÊÑ¿ô¤Ç¤¹¡£ Emacs¤Ï¡¢¥«¥¹¥¿¥Þ¥¤¥º¤Î¤¿¤á¤Ë¥Õ¥Ã¥¯¤òÍѰդ·¤Æ¤¤¤Þ¤¹¡£ ¤Û¤È¤ó¤É¤Î¾ì¹ç¡¢¥Õ¥Ã¥¯¤Ï¥Õ¥¡¥¤¥ë.emacs¤ÇÀßÄꤷ¤Þ¤¹¤¬¡¢ Lisp¥×¥í¥°¥é¥à¤¬¹Ô¤Ã¤Æ¤â¤«¤Þ¤¤¤Þ¤»¤ó¡£ ɸ½à¤Î¥Õ¥Ã¥¯´Ø¿ô°ìÍ÷¤Ë¤Ä¤¤¤Æ¤Ï¡¢See Standard Hooks¡£
Emacs¤Î¿¤¯¤Î¥Õ¥Ã¥¯¤Ï¥Î¡¼¥Þ¥ë¥Õ¥Ã¥¯¡Ênormal hook¡Ë¤Ç¤¹¡£ ¤³¤ì¤é¤ÎÊÑ¿ô¤Ï¡¢°ú¿ô¤Ê¤·¤Ç¸Æ¤Ó½Ð¤µ¤ì¤ë´Ø¿ô¤Î¥ê¥¹¥È¤òÊÝ»ý¤·¤Æ¤¤¤Þ¤¹¡£ ¥Õ¥Ã¥¯Ì¾¤¬‘-hook’¤Ç½ª¤Ã¤Æ¤¤¤ë¤È¡¢¥Î¡¼¥Þ¥ë¥Õ¥Ã¥¯¤ò°ÕÌ£¤·¤Þ¤¹¡£ ÆÉ¼Ô¤¬¤½¤ì¤é¤òñ°ì¤ÎÊýË¡¤Ç»È¤¨¤ë¤è¤¦¤Ë¡¢ ²Äǽ¤Ê¸Â¤ê¥Î¡¼¥Þ¥ë¥Õ¥Ã¥¯¤Ë¤¹¤ë¤è¤¦¤Ë¿´³Ý¤±¤Æ¤¤¤Þ¤¹¡£
³Æ¥á¥¸¥ã¡¼¥â¡¼¥É´Ø¿ô¤Ï¡¢
¤½¤Î½é´ü²½¤ÎºÇ½ªÃʳ¬¤Ç¥â¡¼¥É¥Õ¥Ã¥¯¡Êmode hook¡Ë¤È¸Æ¤Ð¤ì¤ë
¥Î¡¼¥Þ¥ë¥Õ¥Ã¥¯¤ò¼Â¹Ô¤¹¤ë¤È´üÂÔ¤µ¤ì¤Þ¤¹¡£
¤³¤ì¤Ë¤è¤ê¡¢¥â¡¼¥É¤¬¤¹¤Ç¤ËÀßÄꤷ¤¿¥Ð¥Ã¥Õ¥¡¥í¡¼¥«¥ë¤ÊÊÑ¿ô¤ò¾å½ñ¤¤¹¤ë¤³¤È¤Ç¡¢
¥æ¡¼¥¶¡¼¤¬¥â¡¼¥É¤Î¤Õ¤ë¤Þ¤¤¤ò¥«¥¹¥¿¥Þ¥¤¥º¤·¤ä¤¹¤¯¤·¤Æ¤¤¤Þ¤¹¡£
¤·¤«¤·¡¢¥Õ¥Ã¥¯¤ÏÊ̤ξìÌ̤Ǥâ»È¤ï¤ì¤Æ¤¤¤Þ¤¹¡£
¤¿¤È¤¨¤Ð¡¢¥Õ¥Ã¥¯suspend-hook
¤Ï¡¢
Emacs¤¬¼«¿È¤ò°ì»þµÙ»ß¤¹¤ëľÁ°¤Ë¼Â¹Ô¤µ¤ì¤Þ¤¹¡£
¡Êsee Suspending Emacs¡Ë¡£
¥Î¡¼¥Þ¥ë¥Õ¥Ã¥¯¤Ë¥Õ¥Ã¥¯´Ø¿ô¤òÄɲ乤ë¿ä¾©ÊýË¡¤Ï¡¢
add-hook
¡Ê²¼µ»²¾È¡Ë¤ò¸Æ¤Ö¤³¤È¤Ç¤¹¡£
¥Õ¥Ã¥¯´Ø¿ô¤Ï¡¢funcall
¡Êsee What Is a Function¡Ë¤¬
¼õ¤±ÉÕ¤±¤ë¤Ê¤é¤Ð¤É¤ó¤Ê¼ïÎà¤Î´Ø¿ô¤Ç¤â¤«¤Þ¤¤¤Þ¤»¤ó¡£
¤Û¤È¤ó¤É¤Î¥Î¡¼¥Þ¥ë¥Õ¥Ã¥¯ÊÑ¿ô¤ÏºÇ½é¤Ï¶õ¤Ç¤¹¤¬¡¢
add-hook
¤Ï¤½¤Î°·¤¤Êý¤òÃΤäƤ¤¤Þ¤¹¡£
¥Õ¥Ã¥¯ÊÑ¿ô¤Î̾Á°¤¬‘-hook’¤Ç½ª¤é¤Ê¤¤¾ì¹ç¡¢ ¤½¤ì¤¬¥¢¥Ö¥Î¡¼¥Þ¥ë¥Õ¥Ã¥¯¡Êabnormal hook¡Ë¤Ç¤¢¤ë¤³¤È¤òɽ¤·¤Þ¤¹¡£ ÆÉ¼Ô¤Ï¡¢¤½¤Î¤è¤¦¤Ê¥Õ¥Ã¥¯¤ÎÀµ¤·¤¤»È¤¤Êý¤òÀâÌÀ½ñ¤ÇÄ´¤Ù¤ë¤Ù¤¤Ç¤¹¡£
ÊÑ¿ô̾¤¬‘-functions’¤ä‘-hooks’¤Ç½ª¤Ã¤Æ¤¤¤ë¤È¡¢
¤½¤ÎÃͤϴؿô¤Î¥ê¥¹¥È¤Ç¤¹¤¬¡¢
¤½¤ì¤é¤Î´Ø¿ô¤ò°ú¿ô¤¢¤ê¤Ç¸Æ¤Ó½Ð¤·¤¿¤ê¡¢
´Ø¿ô¤ÎÌá¤êÃͤò¤É¤³¤«¤Ç»È¤¦¤È¤¤¤¦°ÕÌ£¤Ç¥¢¥Ö¥Î¡¼¥Þ¥ë¡Ê°Û¾ï¡Ë¤Ê¤Î¤Ç¤¹¡£
¥ê¥¹¥È¤Ë´Ø¿ô¤òÄɲ乤ë¤Ë¤Ïadd-hook
¤ò»È¤¨¤Þ¤¹¤¬¡¢
´Ø¿ô¤ò½ñ¤¯¤È¤¤Ë¤ÏÃí°Õ¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£
¡Ê¤³¤ì¤é¤ÎÊÑ¿ô¤Î¤¦¤Á¡¢¼ÂºÝ¤Ë¤Ï¥Î¡¼¥Þ¥ë¥Õ¥Ã¥¯¤Ç¤¢¤ë¤â¤Î¤â¤¢¤ë¡£
¥Î¡¼¥Þ¥ë¥Õ¥Ã¥¯¤Ë¤Ï‘-hook’¤ò»È¤¦¤È¤¤¤¦´·½¬¤ò
³ÎΩ¤¹¤ë¤Þ¤¨¤Ë̿̾¤·¤¿¤â¤Î¤Ç¤¢¤ë¡£¡Ë
ÊÑ¿ô̾¤¬‘-function’¤Ç½ª¤Ã¤Æ¤¤¤ë¤È¡¢ ¤½¤ÎÃͤϡ¢´Ø¿ô¤Î¥ê¥¹¥È¤Ç¤Ï¤Ê¤¯¡¢1¤Ä¤Î´Ø¿ô¤Ç¤¹¡£
lispÂÐÏå⡼¥É¤Ç¼«Æ°µÍ¤á¹þ¤ß¡Êauto-fill¡Ë¥â¡¼¥É¤ò¥ª¥ó¤Ë¤¹¤ë¤¿¤á¤Ë ¥â¡¼¥É¥Õ¥Ã¥¯¤ò»È¤Ã¤¿Îã¤ò¼¨¤·¤Þ¤¹¡£
(add-hook 'lisp-interaction-mode-hook 'turn-on-auto-fill)
ŬÅö¤Ê»þ´ü¤Ë¡¢Emacs¤Ï´Ø¿ôrun-hooks
¤ò»È¤Ã¤Æ
ÆÃÄê¤Î¥Õ¥Ã¥¯¤ò¼Â¹Ô¤·¤Þ¤¹¡£
¤³¤Î´Ø¿ô¤Ï¡¢add-hook
¤ÇÄɲ䵤줿¥Õ¥Ã¥¯´Ø¿ô¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡£
¤³¤Î´Ø¿ô¤ÏÊ£¿ô¸Ä¤Î¥Õ¥Ã¥¯ÊÑ¿ô̾¤ò°ú¿ô¤Ë¤È¤ê¡¢³Æ¥Õ¥Ã¥¯¤ò½ç¤Ë¼Â¹Ô¤¹¤ë¡£ ³Æ°ú¿ôhookvar¤Ï¡¢¥Õ¥Ã¥¯ÊÑ¿ô¤Î¥·¥ó¥Ü¥ë¤Ç¤¢¤ë¤³¤È¡£ ¤³¤ì¤é¤Î°ú¿ô¤Ï¡¢»ØÄꤵ¤ì¤¿½ç¤Ë½èÍý¤µ¤ì¤ë¡£
¥Õ¥Ã¥¯ÊÑ¿ô¤¬nil
°Ê³°¤ÎÃͤǤ¢¤ë¤È¡¢
¤½¤ÎÃͤϡ¢´Ø¿ô¤«´Ø¿ô¤Î¥ê¥¹¥È¤Ç¤¢¤ë¡£
Ãͤ¬´Ø¿ô¡Ê¥é¥à¥À¼°¤ä´Ø¿ôÄêµÁ¤ò»ý¤Ä¥·¥ó¥Ü¥ë¡Ë¤Ç¤¢¤ë¤È¡¢¤½¤ì¤ò¸Æ¤Ó½Ð¤¹¡£
Ãͤ¬¥ê¥¹¥È¤Ç¤¢¤ë¤È¡¢½çÈ֤ˤ½¤ÎÍ×ÁǤò¸Æ¤Ó½Ð¤¹¡£
¥Õ¥Ã¥¯´Ø¿ô¤Ï¡¢°ú¿ô¤Ê¤·¤Ç¸Æ¤Ó½Ð¤µ¤ì¤ë¡£
¸½ºß¡¢¥Õ¥Ã¥¯ÊÑ¿ô¤Ë1¤Ä¤Î´Ø¿ô¤òÆþ¤ì¤ë¤³¤È¤ÏÇѤ줫¤±¤Æ¤¤¤ë¡£
¤Ä¤Í¤Ë´Ø¿ô¤Î¥ê¥¹¥È¤ò»È¤¦¤Ù¤¤Ç¤¢¤ë¡£
Îã¤È¤·¤Æ¡¢emacs-lisp-mode
¤¬¤½¤Î¥â¡¼¥É¥Õ¥Ã¥¯¤ò¤É¤Î¤è¤¦¤Ë
¼Â¹Ô¤¹¤ë¤«¤ò¼¨¤¹¡£
(run-hooks 'emacs-lisp-mode-hook)
¤³¤Î´Ø¿ô¤Ï¡¢¥Õ¥Ã¥¯´Ø¿ô¤Ë°ú¿ô¤òÅϤ¹¥¢¥Ö¥Î¡¼¥Þ¥ë¥Õ¥Ã¥¯¤ò¼Â¹Ô¤¹¤ëÊýË¡¤Ç¤¢¤ë¡£ ³Æ¥Õ¥Ã¥¯´Ø¿ô¤Ë°ú¿ôargs¤òÅϤ·¤Æ¸Æ¤Ó½Ð¤¹¡£
¤³¤Î´Ø¿ô¤Ï¡¢¥Õ¥Ã¥¯´Ø¿ô¤Ë°ú¿ô¤òÅϤ¹¥¢¥Ö¥Î¡¼¥Þ¥ë¥Õ¥Ã¥¯¤ò¼Â¹Ô¤¹¤ë¤¬¡¢
¥Õ¥Ã¥¯´Ø¿ô¤¬¼ºÇÔ¤¹¤ë¤È¤¿¤À¤Á¤Ë»ß¤á¤ëÊýË¡¤Ç¤¢¤ë¡£
¥Õ¥Ã¥¯´Ø¿ô¤¬nil
¤òÊÖ¤¹¤Þ¤Ç¡¢
³Æ¥Õ¥Ã¥¯´Ø¿ô¤Ë°ú¿ôargs¤òÅϤ·¤Æ¸Æ¤Ó½Ð¤¹¡£
nil
¤¬Ê֤äƤ¯¤ë¤Ènil
¤ÇÌá¤ë¡£
¤µ¤â¤Ê¤±¤ì¤Ð¡¢nil
°Ê³°¤ÎÃͤòÊÖ¤¹¡£
¤³¤Î´Ø¿ô¤Ï¡¢¥Õ¥Ã¥¯´Ø¿ô¤Ë°ú¿ô¤òÅϤ¹¥¢¥Ö¥Î¡¼¥Þ¥ë¥Õ¥Ã¥¯¤ò¼Â¹Ô¤¹¤ë¤¬¡¢
¥Õ¥Ã¥¯´Ø¿ô¤¬À®¸ù¤¹¤ë¤È¤¿¤À¤Á¤Ë»ß¤á¤ëÊýË¡¤Ç¤¢¤ë¡£
¥Õ¥Ã¥¯´Ø¿ô¤¬nil
°Ê³°¤òÊÖ¤¹¤Þ¤Ç¡¢
³Æ¥Õ¥Ã¥¯´Ø¿ô¤Ë°ú¿ôargs¤òÅϤ·¤Æ¸Æ¤Ó½Ð¤¹¡£
nil
°Ê³°¤¬Ê֤äƤ¯¤ë¤È
ºÇ¸å¤Ë¸Æ¤Ó½Ð¤·¤¿¥Õ¥Ã¥¯´Ø¿ô¤ÎÌá¤êÃͤòÊÖ¤¹¡£
¤³¤Î´Ø¿ô¤Ï¥Õ¥Ã¥¯ÊÑ¿ôhook¤Ë´Ø¿ôfunction¤òÄɲä¹¤ë ¼ê·Ú¤ÊÊýË¡¤Ç¤¢¤ë¡£ °ú¿ôfunction¤Ï¡¢Àµ¤·¤¤¸Ä¿ô¤Î°ú¿ô¤ò¤È¤ëǤ°Õ¤ÎÀµ¤·¤¤Lisp´Ø¿ô¤Ç¤¢¤ë¤³¤È¡£ ¤¿¤È¤¨¤Ð¡¢
(add-hook 'text-mode-hook 'my-text-hook-function)
¤Ï¡¢text-mode-hook
¤È¤¤¤¦¥Õ¥Ã¥¯¤Ë
my-text-hook-function
¤òÄɲ乤롣
add-hook
¤Ï¡¢¥Î¡¼¥Þ¥ë¥Õ¥Ã¥¯¤Ë²Ã¤¨¤Æ¥¢¥Ö¥Î¡¼¥Þ¥ë¥Õ¥Ã¥¯¤Ë¤â»È¤¨¤ë¡£
¥Õ¥Ã¥¯´Ø¿ô¤Ï¼Â¹Ô½ç½ø¤Ë°Í¸¤·¤Ê¤¤¤è¤¦¤ËÀ߷פ¹¤ë¤Î¤¬ºÇÎɤǤ¢¤ë¡£
¼Â¹Ô½ç½ø¤Ë°Í¸¤¹¤ë¤È¡Ø¥È¥é¥Ö¥ë¤ò¸Æ¤Ó¹þ¤à¡Ù¤è¤¦¤Ê¤â¤Î¤Ç¤¢¤ë¡£
¤·¤«¤·¡¢½ç½ø¤Ïͽ¬¤Ç¤¤ë¡£
Ä̾function¤Ï¥Õ¥Ã¥¯¥ê¥¹¥È¤ÎÀèÆ¬¤ËÃÖ¤«¤ì¤ë¤Î¤Ç¡¢
¡Ê¤Û¤«¤Ëadd-hook
¤Î¸Æ¤Ó½Ð¤·¤¬¤Ê¤±¤ì¤Ð¡ËºÇ½é¤Ë¼Â¹Ô¤µ¤ì¤ë¡£
¾Êά²Äǽ¤Ê°ú¿ôappend¤¬nil
°Ê³°¤Ç¤¢¤ë¤È¡¢
¿·¤¿¤Ê¥Õ¥Ã¥¯´Ø¿ô¤Ï¥Õ¥Ã¥¯¥ê¥¹¥È¤ÎËöÈø¤ËÃÖ¤«¤ì¡¢
ºÇ¸å¤Ë¼Â¹Ô¤µ¤ì¤ë¡£
local¤¬nil
°Ê³°¤Ç¤¢¤ë¤È¡¢
¿·¤¿¤Ê¥Õ¥Ã¥¯´Ø¿ô¤ò¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤Ë¥Ð¥Ã¥Õ¥¡¥í¡¼¥«¥ë¤Ë¤¹¤ë¤³¤È¤ò°ÕÌ£¤¹¤ë¡£
¤³¤ì¤ò¹Ô¤¦¤Þ¤¨¤Ë¡¢¡Êmake-local-variable
¤Ç¤Ï¤Ê¤¯¡Ë
make-local-hook
¤ò¸Æ¤ó¤Ç
¥Õ¥Ã¥¯¼«¿È¤ò¥Ð¥Ã¥Õ¥¡¥í¡¼¥«¥ë¤Ë¤·¤Æ¤ª¤¯É¬Íפ¬¤¢¤ë¡£
¥Õ¥Ã¥¯¼«¿È¤¬¥Ð¥Ã¥Õ¥¡¥í¡¼¥«¥ë¤Ç¤Ê¤¤¤È¡¢local¤ÎÃͤϰÕÌ£¤ò»ý¤¿¤Ê¤¤¡£
¥Õ¥Ã¥¯´Ø¿ô¤Ï¤Ä¤Í¤Ë¥°¥í¡¼¥Ð¥ë¤Ç¤¢¤ë¡£
¤³¤Î´Ø¿ô¤Ï¡¢¥Õ¥Ã¥¯ÊÑ¿ôhook¤«¤éfunction¤ò¼è¤ê½ü¤¯¡£
local¤¬nil
°Ê³°¤Ç¤¢¤ë¤È¡¢
¥°¥í¡¼¥Ð¥ë¤Ê¥Õ¥Ã¥¯¥ê¥¹¥È¤Ç¤Ï¤Ê¤¯¥Ð¥Ã¥Õ¥¡¥í¡¼¥«¥ë¤Ê¥Õ¥Ã¥¯¥ê¥¹¥È¤«¤é
function¤òºï½ü¤¹¤ë¤³¤È¤ò»ØÄꤹ¤ë¡£
¥Õ¥Ã¥¯ÊÑ¿ô¼«¿È¤¬¥Ð¥Ã¥Õ¥¡¥í¡¼¥«¥ë¤Ç¤Ê¤¤¤È¡¢local¤ÎÃͤϰÕÌ£¤ò»ý¤¿¤Ê¤¤¡£
¤³¤Î´Ø¿ô¤Ï¡¢¥Õ¥Ã¥¯ÊÑ¿ôhook
¤ò¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤Ë¥Ð¥Ã¥Õ¥¡¥í¡¼¥«¥ë¤Ë¤¹¤ë¡£
¥Õ¥Ã¥¯ÊÑ¿ô¤¬¥Ð¥Ã¥Õ¥¡¥í¡¼¥«¥ë¤Ç¤¢¤ë¤È¡¢
¥Ð¥Ã¥Õ¥¡¥í¡¼¥«¥ë¤Ê¥Õ¥Ã¥¯´Ø¿ô¤È¥°¥í¡¼¥Ð¥ë¤Ê¥Õ¥Ã¥¯´Ø¿ô¤ò»ý¤Ä¤³¤È¤¬¤Ç¤¡¢
run-hooks
¤Ï¤½¤ì¤é¤¹¤Ù¤Æ¤ò¼Â¹Ô¤¹¤ë¡£
¤³¤Î´Ø¿ô¤Ï¡¢¥Ð¥Ã¥Õ¥¡¥í¡¼¥«¥ë¤ÊÃͤÎÍ×ÁǤòt
¤Ë¤¹¤ë¤³¤È¤Çưºî¤¹¤ë¡£
¤³¤ì¤Ï¡¢¥Ð¥Ã¥Õ¥¡¥í¡¼¥«¥ë¤ÊÃͤ˲䨤ƥեå¯ÊÑ¿ô¤Î¥Ç¥Õ¥©¥ë¥ÈÃͤˤ¢¤ë
¥Õ¥Ã¥¯´Ø¿ô¤ò»È¤¦¤³¤È¤òɽ¤¹¥Õ¥é¥°¤Ç¤¢¤ë¡£
run-hooks
¤Ï¤³¤Î¥Õ¥é¥°¤òÍý²ò¤·¡¢
make-local-hook
¤Ï¤¹¤Ù¤Æ¤Î¥Î¡¼¥Þ¥ë¥Õ¥Ã¥¯¤ò½èÍý¤Ç¤¤ë¡£
¥¢¥Ö¥Î¡¼¥Þ¥ë¥Õ¥Ã¥¯¤Ë´Ø¤·¤Æ¤Ï¡¢
t
¤Î°ÕÌ£¤òÍý²ò¤¹¤ë¤è¤¦¤Ë¹¹¿·¤·¤¿¤â¤Î¤À¤±¤¬½èÍý¤Ç¤¤ë¡£
¥Õ¥Ã¥¯ÊÑ¿ô¤ËÂФ·¤Æmake-local-variable
¤òľÀܻȤï¤Ê¤¤¤³¤È¡£
¤½¤ì¤À¤±¤Ç¤ÏÉÔ½½Ê¬¤Ç¤¢¤ë¡£