Next: , Previous: Buffer-Local Variables, Up: Buffer-Local Variables   [Contents][Index]


10.10.1 ¥Ð¥Ã¥Õ¥¡¥í¡¼¥«¥ë¤ÊÊÑ¿ô¤Î¾Ò²ð

¥Ð¥Ã¥Õ¥¡¥í¡¼¥«¥ë¤ÊÊÑ¿ô¤Ë¤Ï¡¢ÆÃÄê¤Î¥Ð¥Ã¥Õ¥¡¤Ë´ØÏ¢¤·¤¿¥Ð¥Ã¥Õ¥¡¥í¡¼¥«¥ë¤Ê «Çû¤¬¤¢¤ê¤Þ¤¹¡£ ¤³¤Î«Çû¤Ï¡¢¤½¤Î¥Ð¥Ã¥Õ¥¡¤¬¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤Ç¤¢¤ë¤È¤­¤ËÍ­¸ú¤Ë¤Ê¤ê¤Þ¤¹¡£ ¤µ¤â¤Ê¤±¤ì¤Ð¤Ê¤ó¤Î¸ú²Ì¤â¤¢¤ê¤Þ¤»¤ó¡£ ¥Ð¥Ã¥Õ¥¡¥í¡¼¥«¥ë¤Ê«Çû¤¬Í­¸ú¤Ê¤È¤­¤ËÊÑ¿ô¤ËÀßÄꤹ¤ë¤È¡¢ ¿·¤·¤¤ÃͤϤ½¤Î«Çû¤ËÆþ¤ê¡¢Â¾¤Î«Çû¤ÏÊѹ¹¤µ¤ì¤Þ¤»¤ó¡£ ¤Ä¤Þ¤ê¡¢¤½¤ÎÊѹ¹¤Ï¡¢Êѹ¹¤ò¹Ô¤Ã¤¿¥Ð¥Ã¥Õ¥¡¤À¤±¤Ç¸«¤ë¤³¤È¤¬¤Ç¤­¤ë¤Î¤Ç¤¹¡£

ÊÑ¿ô¤ÎÄ̾ï¤Î«Çû¡¢¤Ä¤Þ¤ê¡¢ÆÃÄê¤Î¥Ð¥Ã¥Õ¥¡¤Ë´ØÏ¢¤·¤Æ¤¤¤Ê¤¤Â«Çû¤ò ¥Ç¥Õ¥©¥ë¥È¤Î«Çû¡Êdefault binding¡Ë¤È¸Æ¤Ó¤Þ¤¹¡£ ¿¤¯¤Î¾ì¹ç¡¢¤³¤ì¤Ï¥°¥í¡¼¥Ð¥ë«Çû¤Ç¤¹¡£

ÊÑ¿ô¤Ï¡¢¤¢¤ë¥Ð¥Ã¥Õ¥¡·²¤Ç¤Ï¥Ð¥Ã¥Õ¥¡¥í¡¼¥«¥ë¤Ê«Çû¤ò»ý¤Á¡¢ ¾¤Î¥Ð¥Ã¥Õ¥¡¤Ç¤Ï¤½¤Î¤è¤¦¤Ê«Çû¤ò»ý¤¿¤Ê¤¤¤è¤¦¤Ë¤Ç¤­¤Þ¤¹¡£ ÊÑ¿ô¤ËÂФ¹¤ëÆÈ¼«¤Î«Çû¤ò»ý¤¿¤Ê¤¤¥Ð¥Ã¥Õ¥¡¤¹¤Ù¤Æ¤Ç¤Ï¡¢ ¥Ç¥Õ¥©¥ë¥È¤Î«Çû¤ò¶¦Í­¤·¤Þ¤¹¡£ ¡Ê¤³¤ì¤Ë¤Ï¡¢¿·¤¿¤ËºîÀ®¤µ¤ì¤ë¥Ð¥Ã¥Õ¥¡¤â´Þ¤à¡£¡Ë ¥Ð¥Ã¥Õ¥¡¥í¡¼¥«¥ë¤Ê«Çû¤ò»ý¤¿¤Ê¤¤¥Ð¥Ã¥Õ¥¡¤ÇÊÑ¿ô¤ËÀßÄꤹ¤ë¤È¡¢ ¡Ê¾õ¶·¤òÊ£»¨¤Ë¤¹¤ë¥Õ¥ì¡¼¥à¥í¡¼¥«¥ë¤Ê«Çû¤Ï¤Ê¤¤¤È²¾Äꤷ¤Æ¡Ë ¥Ç¥Õ¥©¥ë¥È¤Î«Çû¤ò»È¤¤¤Þ¤¹¡£ ¤·¤¿¤¬¤Ã¤Æ¡¢¿·¤¿¤ÊÃͤϥǥե©¥ë¥È¤Î«Çû¤ò¸«¤ë¥Ð¥Ã¥Õ¥¡¤¹¤Ù¤Æ¤Ç¸«¤¨¤Þ¤¹¡£

¥Ð¥Ã¥Õ¥¡¥í¡¼¥«¥ë¤Ê«Çû¤Î¤â¤Ã¤È¤â°ìÈÌŪ¤Ê»È¤¤Êý¤Ï¡¢ ¥á¥¸¥ã¡¼¥â¡¼¥É¤Ç¥³¥Þ¥ó¥É¤Î¤Õ¤ë¤Þ¤¤¤òÀ©¸æ¤¹¤ëÊÑ¿ô¤ËÊѹ¹¤¹¤ë¤³¤È¤Ç¤¹¡£ ¤¿¤È¤¨¤Ð¡¢C¥â¡¼¥É¤äLisp¥â¡¼¥É¤Ç¤Ï¡¢ÊÑ¿ôparagraph-start¤òÀßÄꤷ¤Æ¡¢ ¶õ¹Ô¤À¤±¤¬ÃÊÍî¤ò¶èÀÚ¤ë¤è¤¦¤Ë»ØÄꤷ¤Þ¤¹¡£ ¤³¤ì¤Ë¤Ï¡¢C¥â¡¼¥É¤äLisp¥â¡¼¥É¤Ë¤Ê¤Ã¤¿¥Ð¥Ã¥Õ¥¡¤Ç¤Ï¡¢ ÊÑ¿ô¤ò¥Ð¥Ã¥Õ¥¡¥í¡¼¥«¥ë¤Ë¤·¤Æ¤«¤é¡¢ ¤½¤Î¥â¡¼¥ÉÍѤο·¤¿¤ÊÃͤòÊÑ¿ô¤ËÀßÄꤹ¤ë¤Î¤Ç¤¹¡£ See Major Modes¡£

¥Ð¥Ã¥Õ¥¡¥í¡¼¥«¥ë¤Ê«Çû¤òºî¤ëÉáÄ̤ÎÊýË¡¤Ï¡¢ make-local-variable¤Ç¤¹¡£ ¥á¥¸¥ã¡¼¥â¡¼¥É¤Î¥³¥Þ¥ó¥É¤Ïŵ·¿Åª¤Ë¤³¤ì¤ò»È¤¤¤Þ¤¹¡£ ¤³¤ì¤Ï¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤À¤±¤Ë±Æ¶Á¤·¤Þ¤¹¡£ ¡Ê¤³¤ì¤«¤éºîÀ®¤¹¤ë¤â¤Î¤â´Þ¤á¤Æ¡Ë¾¤Î¤¹¤Ù¤Æ¤Î¥Ð¥Ã¥Õ¥¡¤Ï¡¢ ¤½¤ìÀìÍѤΥХåե¡¥í¡¼¥«¥ë¤Ê«Çû¤òÌÀ¼¨Åª¤ËÍ¿¤¨¤Ê¤¤¸Â¤ê¡¢ ¥Ç¥Õ¥©¥ë¥ÈÃͤò¶¦Í­¤·Â³¤±¤Þ¤¹¡£

¤è¤ê¶¯ÎϤÊÁàºî¤Ï¡¢make-variable-buffer-local¤ò¸Æ¤Ó½Ð¤·¤Æ ÊÑ¿ô¤ò¼«Æ°Åª¤Ë¥Ð¥Ã¥Õ¥¡¥í¡¼¥«¥ë¤Ë¤¹¤ë¤è¤¦¤Ë°õ¤òÉÕ¤±¤ë¤³¤È¤Ç¤¹¡£ ¤³¤ì¤Ï¡¢¤³¤ì¤«¤éºîÀ®¤¹¤ë¤â¤Î¤â´Þ¤á¤¿¥Ð¥Ã¥Õ¥¡¤¹¤Ù¤Æ¤Ç¡¢ ÊÑ¿ô¤ò¥Ð¥Ã¥Õ¥¡¥í¡¼¥«¥ë¤Ë¤¹¤ë¤È¹Í¤¨¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ ¤è¤êÀµ³Î¤Ë¤Ï¡¢ÊÑ¿ô¤¬¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤Ë¥í¡¼¥«¥ë¤Ç¤Ê¤±¤ì¤Ð¡¢ ¼«Æ°Åª¤ËÊÑ¿ô¤ò¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤Ë¥í¡¼¥«¥ë¤Ë¤¹¤ë¤è¤¦¤ËÀßÄꤹ¤ë¸ú²Ì¤¬¤¢¤ê¤Þ¤¹¡£ ¤¹¤Ù¤Æ¤Î¥Ð¥Ã¥Õ¥¡¤ÏÄ̾ï¤É¤ª¤êÊÑ¿ô¤Î¥Ç¥Õ¥©¥ë¥ÈÃͤò¶¦Í­¤·¤Æ»Ï¤Þ¤ê¤Þ¤¹¤¬¡¢ ÊÑ¿ô¤ËÀßÄꤹ¤ë¤È¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤Ë¥Ð¥Ã¥Õ¥¡¥í¡¼¥«¥ë¤Ê«Çû¤òºî¤ê¤Þ¤¹¡£ ¿·¤¿¤ÊÃͤϥХåե¡¥í¡¼¥«¥ë¤Ê«Çû¤Ë³ÊǼ¤µ¤ì¡¢¥Ç¥Õ¥©¥ë¥È¤Î«Çû¤ÏÊѹ¹¤·¤Þ¤»¤ó¡£ ¤Ä¤Þ¤ê¡¢¤É¤Î¥Ð¥Ã¥Õ¥¡¤Ç¤â¥Ç¥Õ¥©¥ë¥ÈÃͤòsetq¤Ç¤ÏÊѹ¹¤Ç¤­¤Þ¤»¤ó¡£ ¥Ç¥Õ¥©¥ë¥ÈÃͤòÊѹ¹¤¹¤ëÍ£°ì¤ÎÊýË¡¤Ï¡¢setq-default¤ò»È¤¦¤³¤È¤Ç¤¹¡£

·Ù¹ð¡§ Ê£¿ô¤Î¥Ð¥Ã¥Õ¥¡¤Ë¤ª¤¤¤ÆÊÑ¿ô¤Ë¥Ð¥Ã¥Õ¥¡¥í¡¼¥«¥ë¤ÊÃͤ¬¤¢¤ë¤È¤­¤Ë¡¢ ÊÑ¿ô¤òlet¤Ç«Çû¤·¤Æ¤«¤é¡¢ Ê̤ΫÇû¤¬Í­¸ú¤Ç¤¢¤ëÊ̤ΥХåե¡¤ËÀÚ¤êÂØ¤¨¤Ælet¤òÈ´¤±¤ë¤È¡¢ Emacs¤ò¤È¤Æ¤âº®Í𤵤»¤ë¤³¤È¤Ë¤Ê¤ë¡£ ¤³¤¦¤¹¤ë¤È¡¢¥Ð¥Ã¥Õ¥¡¥í¡¼¥«¥ë¤Ê«Çû¤È¥Ç¥Õ¥©¥ë¥È¤Î«Çû¤òº®¤¼¹ç¤ï¤»¤Æ¤·¤Þ¤¦¡£

º®Íð¤òÈò¤±¤ë¤¿¤á¤Ë¡¢¤³¤Î¤è¤¦¤ÊÊÑ¿ô¤Î»È¤¤Êý¤ÏÈò¤±¤Æ¤¯¤À¤µ¤¤¡£ Ê̤ΥХåե¡¤ËÀÚ¤êÂØ¤¨¤ë³Æ¥³¡¼¥ÉÉôʬ¤òsave-excursion¤Ç°Ï¤á¤Ð¡¢ ¤³¤Î¤è¤¦¤ÊÌäÂê¤Ï¤¢¤ê¤Þ¤»¤ó¡£

(setq foo 'b)
(set-buffer "a")
(make-local-variable 'foo)
(setq foo 'a)
(let ((foo 'temp))
  (set-buffer "b")
  body…)
foo ⇒ 'a      ; ¥Ð¥Ã¥Õ¥¡‘a’¤Î¸Å¤¤¥Ð¥Ã¥Õ¥¡¥í¡¼¥«¥ë¤ÊÃͤ¬
               ;   ¸½ºß¤Î¥Ç¥Õ¥©¥ë¥ÈÃÍ
(set-buffer "a")
foo ⇒ 'temp   ; ¾Ã¤¨¤Æ¤¤¤ë¤Ù¤­¥í¡¼¥«¥ë¤Êlet¤ÎÃͤ¬
               ;   ¥Ð¥Ã¥Õ¥¡‘a’¤Î¸½ºß¤Î¥Ð¥Ã¥Õ¥¡¥í¡¼¥«¥ë¤ÊÃÍ

¤·¤«¤·¡¢¤Ä¤®¤Ë¼¨¤¹¤è¤¦¤Ësave-excursion¤ò»È¤¨¤Ð¡¢¤³¤ÎÌäÂê¤ò²óÈò¤Ç¤­¤Þ¤¹¡£

(let ((foo 'temp))
  (save-excursion
    (set-buffer "b")
    body…))

bodyÆâ¤Ç¤Îfoo¤Ø¤Î»²¾È¤Ï¡¢ ¥Ð¥Ã¥Õ¥¡‘b’¤Î¥Ð¥Ã¥Õ¥¡¥í¡¼¥«¥ë¤Ê«Çû¤ò»È¤¤¤Þ¤¹¡£

¥Õ¥¡¥¤¥ë¤Ç¥í¡¼¥«¥ëÊÑ¿ô¤ÎÃͤò»ØÄꤷ¤Æ¤¤¤ë¤È¡¢ ¤½¤Î¥Õ¥¡¥¤¥ë¤òˬÌ䤷¤¿¤È¤­¤Ë¡¢¤½¤ì¤é¤Ï¥Ð¥Ã¥Õ¥¡¥í¡¼¥«¥ë¤ÊÃͤˤʤê¤Þ¤¹¡£ See ¥Õ¥¡¥¤¥ë¤Ë¥í¡¼¥«¥ë¤ÊÊÑ¿ô in GNU Emacs ¥Þ¥Ë¥å¥¢¥ë¡£