Next: , Previous: Example Major Modes, Up: Major Modes   [Contents][Index]


22.1.3 ¥á¥¸¥ã¡¼¥â¡¼¥É¤ÎÁªÂòÊýË¡

Emacs¤Ï¡¢¥Õ¥¡¥¤¥ë̾¤ä¥Õ¥¡¥¤¥ë¼«ÂΤξðÊó¤ò¤â¤È¤Ë¡¢ Åö³º¥Õ¥¡¥¤¥ë¤òˬÌ䤹¤ë¤È¤­¤Î¿·¤·¤¤¥Ð¥Ã¥Õ¥¡¤ËÂФ¹¤ë ¥á¥¸¥ã¡¼¥â¡¼¥É¤ò¼«Æ°Åª¤ËÁªÂò¤·¤Þ¤¹¡£ ¤Þ¤¿¡¢¥Õ¥¡¥¤¥ëÆâ¤Î¥Æ¥­¥¹¥È¤Ç»ØÄꤵ¤ì¤¿¥í¡¼¥«¥ëÊÑ¿ô¤â½èÍý¤·¤Þ¤¹¡£

¥³¥Þ¥ó¥É: fundamental-mode

´ðËÜ¡Êfundamental¡Ë¥â¡¼¥É¤Ï¡¢ÆÃ²½¤·¤Æ¤Ê¤¤¥á¥¸¥ã¡¼¥â¡¼¥É¤Ç¤¢¤ë¡£ ¾¤Î¥á¥¸¥ã¡¼¥â¡¼¥É¤Ï¡¢¼Â¼ÁŪ¤Ë¤Ï¡¢¤³¤Î¥â¡¼¥É¤È¤ÎÂÐÈæ¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤ë¡£ ¤Ä¤Þ¤ê¡¢´ðËÜ¡Êfundamental¡Ë¥â¡¼¥É¤«¤é»Ï¤á¤Æ¡¢ ¤½¤ì¤é¤Î¥á¥¸¥ã¡¼¥â¡¼¥É¤Ç¤Ï¤Ê¤Ë¤òÊѹ¹¤¹¤ë¤«¤òÄêµÁ¤·¤Æ¤¤¤ë¡£ ´Ø¿ôfundamental-mode¤Ï¥Õ¥Ã¥¯¤ò¼Â¹Ô¤·¤Ê¤¤¤¿¤á¡¢ ÆÉ¼Ô¤Ï¥«¥¹¥¿¥Þ¥¤¥º¤Ç¤­¤Ê¤¤¡£ ¡ÊEmacs¤Î´ðËÜ¡Êfundamental¡Ë¥â¡¼¥É¤Î¤Õ¤ë¤Þ¤¤¤òÊѤ¨¤¿¤±¤ì¤Ð¡¢ Emacs¤ÎÂç¶ÉŪ¤Ê¾õÂÖ¤òÊѤ¨¤ëɬÍפ¬¤¢¤ë¡£¡Ë

¥³¥Þ¥ó¥É: normal-mode &optional find-file

¤³¤Î´Ø¿ô¤Ï¡¢¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤ËÂФ·¤Æ ŬÀڤʥ᥸¥ã¡¼¥â¡¼¥É¤È¥Ð¥Ã¥Õ¥¡¥í¡¼¥«¥ë¤ÊÊÑ¿ô¤ò³ÎΩ¤¹¤ë¡£ ¤³¤Î´Ø¿ô¤Ï¤Þ¤ºset-auto-mode¤ò¸Æ¤Ó½Ð¤·¡¢ ³¤¤¤Æ¡¢¥Õ¥¡¥¤¥ë¤Î¥í¡¼¥«¥ëÊÑ¿ô¤òɬÍפ˱þ¤¸¤Æ²òÀÏ¡¢Â«Çû¡¢É¾²Á¤¹¤ë¤¿¤á¤Ë hack-local-variables¤ò¼Â¹Ô¤¹¤ë¡£

normal-mode¤ËÂФ¹¤ë°ú¿ôfind-file¤¬nil°Ê³°¤Ç¤¢¤ë¤È¡¢ normal-mode¤Ïfind-file¤«¤é¸Æ¤Ó½Ð¤µ¤ì¤¿¤È²¾Äꤹ¤ë¡£ ¤½¤Î¾ì¹ç¡¢¥Õ¥¡¥¤¥ë¤ÎËöÈø¤ä‘-*-’¤Î·Á¼°¤Î¹Ô¤Ë¤¢¤ë ¥í¡¼¥«¥ëÊÑ¿ô¥ê¥¹¥È¤ò½èÍý¤¹¤ë¤³¤È¤â¤¢¤ë¡£ ÊÑ¿ôenable-local-variables¤Ï¡¢¤³¤Î½èÍý¤ò¹Ô¤¦¤«¤É¤¦¤«¤òÀ©¸æ¤¹¤ë¡£ ¥Õ¥¡¥¤¥ëÆâ¤Ç¤Î¥í¡¼¥«¥ëÊÑ¿ô¥ê¥¹¥È¤Î¹½Ê¸¤Ë¤Ä¤¤¤Æ¤Ï¡¢ See ¥Õ¥¡¥¤¥ë¤Ë¥í¡¼¥«¥ë¤ÊÊÑ¿ô in GNU Emacs ¥Þ¥Ë¥å¥¢¥ë¡£

ÆÉ¼Ô¤¬ÂÐÏÃŪ¤Ënormal-mode¤ò¼Â¹Ô¤¹¤ë¤È °ú¿ôfind-file¤ÏÄ̾ïnil¤Ç¤¢¤ë¡£ ¤½¤Î¾ì¹ç¡¢normal-mode¤Ï¡¢¥í¡¼¥«¥ëÊÑ¿ô¥ê¥¹¥È¤ò̵¾ò·ï¤Ë½èÍý¤¹¤ë¡£

normal-mode¤Ï¡¢¥á¥¸¥ã¡¼¥â¡¼¥É´Ø¿ô¤ò¸Æ¤Ó½Ð¤¹¼þ¤ê¤Ç¤Ï condition-case¤ò»È¤¦¤Î¤Ç¡¢¥¨¥é¡¼¤òÊä­¤·¤Æ ‘File mode specification error’¤Ë¤â¤È¤Î¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤ò³¤±¤Æ ¥¨¥é¡¼¤òÊó¹ð¤¹¤ë¡£

User Option: enable-local-variables

¤³¤ÎÊÑ¿ô¤Ï¡¢Ë¬Ì䤷¤¿¥Õ¥¡¥¤¥ëÆâ¤Î¥í¡¼¥«¥ëÊÑ¿ô¥ê¥¹¥È¤ò½èÍý¤¹¤ë¤«¤É¤¦¤«¤ò À©¸æ¤¹¤ë¡£ ÃÍt¤Ï¡¢¥í¡¼¥«¥ëÊÑ¿ô¥ê¥¹¥È¤ò̵¾ò·ï¤Ë½èÍý¤¹¤ë¤³¤È¤ò°ÕÌ£¤¹¤ë¡£ nil¤Ï¡¢¤½¤ì¤é¤ò̵»ë¤¹¤ë¤³¤È¤ò°ÕÌ£¤¹¤ë¡£ ¤½¤ì°Ê³°¤ÎÃͤǤ¢¤ë¤È¡¢³Æ¥Õ¥¡¥¤¥ë¤´¤È¤Ë¥æ¡¼¥¶¡¼¤ËÌ䤤¹ç¤ï¤»¤ë¡£ ¥Ç¥Õ¥©¥ë¥ÈÃͤÏt¤Ç¤¢¤ë¡£

Variable: ignored-local-variables

¤³¤ÎÊÑ¿ô¤Ï¡¢¥Õ¥¡¥¤¥ë¤Î¥í¡¼¥«¥ëÊÑ¿ô¥ê¥¹¥È¤ÇÀßÄꤷ¤Æ¤Ï¤Ê¤é¤Ê¤¤ ÊÑ¿ô¤Î¥ê¥¹¥È¤òÊÝ»ý¤¹¤ë¡£ ¤½¤ì¤é¤ÎÊÑ¿ô¤ËÂФ·¤Æ»ØÄꤷ¤¿ÃͤÏ̵»ë¤µ¤ì¤ë¡£

¤³¤Î¥ê¥¹¥È¤Ë²Ã¤¨¤Æ¡¢ °À­risky-local-variable¤¬nil°Ê³°¤ÎÃͤǤ¢¤ëÊÑ¿ô¤â̵»ë¤µ¤ì¤Þ¤¹¡£

User Option: enable-local-eval

¤³¤ÎÊÑ¿ô¤Ï¡¢Ë¬Ì䤷¤¿¥Õ¥¡¥¤¥ëÆâ¤Î¥í¡¼¥«¥ëÊÑ¿ô¥ê¥¹¥È¤Î‘Eval:’¤ò ½èÍý¤¹¤ë¤«¤É¤¦¤«¤òÀ©¸æ¤¹¤ë¡£ ÃÍt¤Ï¡¢¤½¤ì¤é¤ò̵¾ò·ï¤Ë½èÍý¤¹¤ë¤³¤È¤ò°ÕÌ£¤¹¤ë¡£ nil¤Ï¡¢¤½¤ì¤é¤ò̵»ë¤¹¤ë¤³¤È¤ò°ÕÌ£¤¹¤ë¡£ ¤½¤ì°Ê³°¤ÎÃͤǤ¢¤ë¤È¡¢³Æ¥Õ¥¡¥¤¥ë¤´¤È¤Ë¥æ¡¼¥¶¡¼¤ËÌ䤤¹ç¤ï¤»¤ë¡£ ¥Ç¥Õ¥©¥ë¥ÈÃͤÏmaybe¤Ç¤¢¤ë¡£

Function: set-auto-mode

¤³¤Î´Ø¿ô¤Ï¡¢¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤ËÂФ·¤ÆÅ¬Àڤʥ᥸¥ã¡¼¥â¡¼¥É¤òÁªÂò¤¹¤ë¡£ ‘-*-¹Ô¤ÎÃÍ¡¢ ¡Êauto-mode-alist¤ò»È¤Ã¤Æ¡ËˬÌ䤷¤¿¥Õ¥¡¥¤¥ë¤Î̾Á°¡¢ ¡Êinterpreter-mode-alist¤ò»È¤Ã¤Æ¡Ë‘#!¹Ô¡¢ ¥Õ¥¡¥¤¥ë¤Î¥í¡¼¥«¥ëÊÑ¿ô¥ê¥¹¥È¤ò¤â¤È¤Ë·èÄꤹ¤ë¡£ ¤·¤«¤·¡¢¤³¤Î´Ø¿ô¤Ï¥Õ¥¡¥¤¥ë¤ÎËöÈøÉÕ¶á¤Ë¤¢¤ë ¥í¡¼¥«¥ëÊÑ¿ô‘mode:’¤ÏÄ´¤Ù¤Ê¤¤¤¬¡¢ ´Ø¿ôhack-local-variables¤ÏÄ´¤Ù¤ë¡£ See ¥á¥¸¥ã¡¼¥â¡¼¥É¤ÎÁªÂòÊý¼° in GNU Emacs ¥Þ¥Ë¥å¥¢¥ë¡£

User Option: default-major-mode

¤³¤ÎÊÑ¿ô¤Ï¡¢¿·¤¿¤Ê¥Ð¥Ã¥Õ¥¡¤ËÂФ¹¤ë¥Ç¥Õ¥©¥ë¥È¤Î¥á¥¸¥ã¡¼¥â¡¼¥É¤òÊÝ»ý¤¹¤ë¡£ ɸ½àÃͤÏfundamental-mode¤Ç¤¢¤ë¡£

default-major-mode¤ÎÃͤ¬nil¤Ç¤¢¤ë¤È¡¢ Emacs¤Ï¡Ê°ÊÁ°¤Î¡Ë¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤Î¥á¥¸¥ã¡¼¥â¡¼¥É¤ò ¿·¤¿¤Ê¥Ð¥Ã¥Õ¥¡¤Î¥á¥¸¥ã¡¼¥â¡¼¥É¤È¤¹¤ë¡£ ¤·¤«¤·¡¢¥á¥¸¥ã¡¼¥â¡¼¥É¥³¥Þ¥ó¥É¤Î¥·¥ó¥Ü¥ë¤Î°À­mode-class¤Î Ãͤ¬special¤Ç¤¢¤ë¤È¡¢¿·¤¿¤Ê¥Ð¥Ã¥Õ¥¡¤Î¥á¥¸¥ã¡¼¥â¡¼¥É¤Ë¤Ï¤»¤º¡¢ ¤«¤ï¤ê¤Ë´ðËÜ¡Êfundamental¡Ë¥â¡¼¥É¤ò»È¤¦¡£ ¤³¤Î°À­¤ò»ý¤Ä¥â¡¼¥É¤Ï¡¢ ÆÃÊ̤˽àÈ÷¤·¤¿¥Æ¥­¥¹¥È¤ËÂФ·¤Æ¤Î¤ßÍ­ÍѤǤ¢¤ëdired¤ärmail¤Ê¤É¤Ç¤¢¤ë¡£

Function: set-buffer-major-mode buffer

¤³¤Î´Ø¿ô¤Ï¥Ð¥Ã¥Õ¥¡buffer¤Î¥á¥¸¥ã¡¼¥â¡¼¥É¤ò default-major-mode¤ÎÃͤȤ¹¤ë¡£ ¤³¤ÎÊÑ¿ô¤¬nil¤Ç¤¢¤ë¤È¡¢ ¡ÊŬÀڤʤé¤Ð¡Ë¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤Î¥á¥¸¥ã¡¼¥â¡¼¥É¤ò»È¤¦¡£

¥Ð¥Ã¥Õ¥¡¤òºîÀ®¤¹¤ëÄã¥ì¥Ù¥ë¤Î´ðËÜ´Ø¿ô¤Ç¤Ï¤³¤Î´Ø¿ô¤ò»È¤ï¤Ê¤¤¤¬¡¢ switch-to-buffer¤äfind-file-noselect¤Ê¤É¤Î Ãæ¥ì¥Ù¥ë¤Î¥³¥Þ¥ó¥É¤Ç¤Ï¥Ð¥Ã¥Õ¥¡¤òºîÀ®¤¹¤ë¤È¤­¤Ë¤³¤Î¥³¥Þ¥ó¥É¤ò»È¤¦¡£

Variable: initial-major-mode

¤³¤ÎÊÑ¿ô¤ÎÃͤϡ¢ºÇ½é¤Î¥Ð¥Ã¥Õ¥¡‘*scratch*’¤Î¥á¥¸¥ã¡¼¥â¡¼¥É¤ò·èÄꤹ¤ë¡£ Ãͤϡ¢¥á¥¸¥ã¡¼¥â¡¼¥É¥³¥Þ¥ó¥É¤Î¥·¥ó¥Ü¥ë¤Ç¤¢¤ë¤³¤È¡£ ¥Ç¥Õ¥©¥ë¥ÈÃͤϡ¢lisp-interaction-mode¤Ç¤¢¤ë¡£

Variable: auto-mode-alist

¤³¤ÎÊÑ¿ô¤Ï¡¢¥Õ¥¡¥¤¥ë̾¤Î¥Ñ¥¿¡¼¥ó¡ÊÀµµ¬É½¸½¡¢see Regular Expressions¡Ë¤È Âбþ¤¹¤ë¥á¥¸¥ã¡¼¥â¡¼¥É¤ÎÏ¢Áۥꥹ¥È¤òÊÝ»ý¤¹¤ë¡£ Ä̾¥Õ¥¡¥¤¥ë̾¥Ñ¥¿¡¼¥ó¤Ç¤Ï‘.el’¤ä‘.c’¤Ê¤É¤ÎÀÜÈø¼­¤òÄ´¤Ù¤ë¤¬¡¢ ¤½¤¦¤Ç¤Ê¤¯¤Æ¤â¤è¤¤¡£ Ï¢Áۥꥹ¥È¤ÎÄ̾ï¤ÎÍ×ÁÇ¤Ï (regexp . mode-function)¤Î·Á¤Ç¤¢¤ë¡£

¤¿¤È¤¨¤Ð¤Ä¤®¤Î¤È¤ª¤ê¡£

(("\\`/tmp/fol/" . text-mode)
 ("\\.texinfo\\'" . texinfo-mode)
 ("\\.texi\\'" . texinfo-mode)
 ("\\.el\\'" . emacs-lisp-mode)
 ("\\.c\\'" . c-mode) 
 ("\\.h\\'" . c-mode)
 …)

Ÿ³«¤·¤¿¥Õ¥¡¥¤¥ë̾¡Êsee File Name Expansion¡Ë¤¬regexp¤Ë°ìÃפ¹¤ë ¥Õ¥¡¥¤¥ë¤òˬÌ䤹¤ë¤È¡¢ set-auto-mode¤ÏÂбþ¤¹¤ëmode-function¤ò¸Æ¤Ó½Ð¤¹¡£ ¤³¤Îµ¡Ç½¤Ë¤è¤ê¡¢Emacs¤Ï¤Û¤È¤ó¤É¤Î¥Õ¥¡¥¤¥ë¤ËÂФ·¤Æ ŬÀڤʥ᥸¥ã¡¼¥â¡¼¥É¤òÁªÂò¤¹¤ë¡£

auto-mode-alist¤ÎÍ×ÁǤ¬(regexp function t)¤Î ·Á¤Ç¤¢¤ë¤È¡¢function¤ò¸Æ¤Ó½Ð¤·¤¿¤¢¤È¤Ç¡¢ Emacs¤Ï¥Õ¥¡¥¤¥ë̾¤Î¤½¤ì¤Þ¤Ç°ìÃפ·¤Ê¤«¤Ã¤¿Éôʬ¤Ë¤Ä¤¤¤Æauto-mode-alist¤ò ºÆÅÙõº÷¤¹¤ë¡£ ¤³¤Îµ¡Ç½¤Ï²òÅà¥Ñ¥Ã¥±¡¼¥¸¤Ë¤ÏÍ­ÍѤǤ¢¤ë¡£ ("\\.gz\\'" function t)¤Î·Á¤ÎÍ×ÁǤǡ¢ ¥Õ¥¡¥¤¥ë¤ò²òÅष¡¢‘.gz’¤ò½ü¤¤¤¿¥Õ¥¡¥¤¥ë̾¤Ë½¾¤Ã¤Æ ²òÅàºÑ¤ß¥Õ¥¡¥¤¥ë¤òŬÀڤʥ⡼¥É¤Ë¤Ç¤­¤ë¡£

auto-mode-alist¤Ë¤¤¤¯¤Ä¤«¤Î¥Ñ¥¿¡¼¥óÂФòÄɲ乤ëÊýË¡¤ò¼¨¤¹¡£ ¡Ê¤³¤Î¼ï¤Î¼°¤òÆÉ¼Ô¤Î¥Õ¥¡¥¤¥ë.emacs¤Ë»È¤¨¤ë¡£¡Ë

(setq auto-mode-alist
  (append 
   ;; ¥É¥Ã¥È¤Ç»Ï¤Þ¤ë¡Ê¥Ç¥£¥ì¥¯¥È¥ê̾ÉÕ¤­¤Î¡Ë¥Õ¥¡¥¤¥ë̾
   '(("/\\.[^/]*\\'" . fundamental-mode)  
     ;; ¥É¥Ã¥È¤Î¤Ê¤¤¥Õ¥¡¥¤¥ë̾
     ("[^\\./]*\\'" . fundamental-mode)   
     ;; .C’¤Ç½ª¤ë¥Õ¥¡¥¤¥ë̾
     ("\\.C\\'" . c++-mode))
   auto-mode-alist))
Variable: interpreter-mode-alist

¤³¤ÎÊÑ¿ô¤Ï¡¢‘#!’¹Ô¤Ç¥³¥Þ¥ó¥É¥¤¥ó¥¿¡¼¥×¥ê¥¿¤ò»ØÄꤷ¤Æ¤¤¤ë ¥¹¥¯¥ê¥×¥È¤ËÂФ·¤ÆÍѤ¤¤ë¥á¥¸¥ã¡¼¥â¡¼¥É¤ò»ØÄꤹ¤ë¡£ ¤³¤ÎÃͤϡ¢(interpreter . mode)¤Î·Á¤ÎÍ×ÁǤ«¤éÀ®¤ë ¥ê¥¹¥È¤Ç¤¢¤ë¤³¤È¡£ ¤¿¤È¤¨¤Ð¡¢¥Ç¥Õ¥©¥ë¥È¤Ë¤Ï("perl" . perl-mode)¤ÎÍ×ÁǤ¬¤¢¤ë¡£ ³ÆÍ×ÁǤϡ¢¥Õ¥¡¥¤¥ë¤¬»ØÄꤹ¤ë¥¤¥ó¥¿¡¼¥×¥ê¥¿¤¬interpreter¤Ë °ìÃפ·¤¿¤é¥â¡¼¥Émode¤ò»È¤¦¤³¤È¤ò°ÕÌ£¤¹¤ë¡£ interpreter¤ÎÃͤϡ¢¼ÂºÝ¤Ë¤ÏÀµµ¬É½¸½¤Ç¤¢¤ë¡£

auto-mode-alist¤¬»ÈÍѤ¹¤Ù¤­¥á¥¸¥ã¡¼¥â¡¼¥É¤¬ »ØÄꤷ¤Ê¤«¤Ã¤¿¾ì¹ç¤Ë¤Î¤ß¤³¤ÎÊÑ¿ô¤ò»È¤¦¡£

Function: hack-local-variables &optional force

¤³¤Î´Ø¿ô¤Ï¡¢¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤ÎÆâÍÆ¤Ë»ØÄꤵ¤ì¤¿¥í¡¼¥«¥ëÊÑ¿ô¤ò ɬÍפ˱þ¤¸¤Æ¡¢²òÀÏ¡¢Â«Çû¡¢É¾²Á¤¹¤ë¡£

normal-mode¤Ç½Ò¤Ù¤¿enable-local-variables¤Î½èÍý¤Ï¡¢ ¼ÂºÝ¤Ë¤Ï¤³¤³¤Ç¹Ô¤¦¡£ °ú¿ôforce¤Ï¡¢Ä̾ normal-mode¤ËÍ¿¤¨¤é¤ì¤¿°ú¿ôfind-file¤«¤é¤¯¤ë¡£


Next: , Previous: Example Major Modes, Up: Major Modes   [Contents][Index]