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


10.11 ¥Õ¥ì¡¼¥à¥í¡¼¥«¥ë¤ÊÊÑ¿ô

ÊÑ¿ô¤Ë¥Ð¥Ã¥Õ¥¡¥í¡¼¥«¥ë¤Ê«Çû¤¬¤¢¤ë¤è¤¦¤Ë¡¢ ÊÑ¿ô¤Ë¤Ï¥Õ¥ì¡¼¥à¥í¡¼¥«¥ë¤Ê«Çû¤â¤¢¤ê¤Þ¤¹¡£ ¤³¤ì¤é¤Î«Çû¤Ï1¤Ä¤Î¥Õ¥ì¡¼¥à¤Ë°¤·¡¢ ¤½¤Î¥Õ¥ì¡¼¥à¤òÁªÂò¤·¤Æ¤¤¤ë¤È¤­¤ËÍ­¸ú¤Ë¤Ê¤ê¤Þ¤¹¡£ ¥Õ¥ì¡¼¥à¥í¡¼¥«¥ë¤Ê«Çû¤Ï¡¢¼ÂºÝ¤Ë¤Ï¥Õ¥ì¡¼¥à¥Ñ¥é¥á¡¼¥¿¤Ç¤¹¡£ ÆÃÄê¤Î¥Õ¥ì¡¼¥à¤Ç¥Õ¥ì¡¼¥à¥í¡¼¥«¥ë¤Ê«Çû¤òºî¤ë¤Ë¤Ï modify-frame-parameters¤ò¸Æ¤Ó½Ð¤·¡¢ ¥Ñ¥é¥á¡¼¥¿Ì¾¤È¤·¤ÆÊÑ¿ô̾¤ò»ØÄꤷ¤Þ¤¹¡£

ÆÃÄê¤ÎÊÑ¿ô¤ËÂФ¹¤ë¥Õ¥ì¡¼¥à¥í¡¼¥«¥ë¤Ê«Çû¤òÍ­¸ú¤Ë¤¹¤ë¤Ë¤Ï¡¢ ´Ø¿ômake-variable-frame-local¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

¥³¥Þ¥ó¥É: make-variable-frame-local variable

variable¤ËÂФ·¤Æ¥Õ¥ì¡¼¥à¥í¡¼¥«¥ë¤Ê«Çû¤ò»È¤¦¤è¤¦¤Ë¤¹¤ë¡£ ¤³¤Î´Ø¿ô¤½¤Î¤â¤Î¤Ïvariable¤ËÂФ·¤Æ¥Õ¥ì¡¼¥à¥í¡¼¥«¥ë¤Ê«Çû¤òºîÀ®¤·¤Ê¤¤¡£ ¤·¤«¤·¡¢¥Õ¥ì¡¼¥à¥Ñ¥é¥á¡¼¥¿¤È¤·¤Ævariable¤ÎÃͤò»ý¤Ä¥Õ¥ì¡¼¥à¤¬ ¤¹¤Ç¤Ë¸ºß¤¹¤ì¤Ð¡¢¤½¤ÎÃͤϼ«Æ°Åª¤Ë¥Õ¥ì¡¼¥à¥í¡¼¥«¥ë¤Ê«Çû¤Ë¤Ê¤ë¡£

ÊÑ¿ô¤¬Ã¼Ëö¤Ë¥í¡¼¥«¥ë¤Ç¤¢¤ë¤È¡¢¤³¤Î´Ø¿ô¤Ï¥¨¥é¡¼¤òÄÌÃΤ¹¤ë¡£ ¤½¤Î¤è¤¦¤ÊÊÑ¿ô¤Ï¥Õ¥ì¡¼¥à¥í¡¼¥«¥ë¤Ê«Çû¤òƱ»þ¤Ë¤Ï»ý¤Æ¤Ê¤¤¤«¤é¤Ç¤¢¤ë¡£ see Multiple Displays¡£ Emacs¤ÇÆÃÊ̤˼ÂÁõ¤µ¤ì¤Æ¤¤¤ë¾¯¿ô¤ÎÊÑ¿ô¤Ï¡ÊÉáÄÌ¡Ë ¥Ð¥Ã¥Õ¥¡¥í¡¼¥«¥ë¤Ë¤Ê¤ë¤³¤È¤¬¤Ç¤­¤ë¤¬¡¢¥Õ¥ì¡¼¥à¥í¡¼¥«¥ë¤Ë¤Ï¤Ê¤é¤Ê¤¤¡£

¥Ð¥Ã¥Õ¥¡¥í¡¼¥«¥ë¤Ê«Çû¤Ï¥Õ¥ì¡¼¥à¥í¡¼¥«¥ë¤Ê«Çû¤ËÍ¥À褷¤Þ¤¹¡£ ÊÑ¿ôfoo¤ò¹Í¤¨¤Æ¤ß¤Þ¤·¤ç¤¦¡£ ¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤Ëfoo¤Î¥Ð¥Ã¥Õ¥¡¥í¡¼¥«¥ë¤Ê«Çû¤¬¤¢¤ë¤È¡¢ ¤½¤Î«Çû¤¬Í­¸ú¤Ë¤Ê¤ê¤Þ¤¹¡£ ÁªÂò¤·¤¿¥Õ¥ì¡¼¥à¤Ëfoo¤Î¥Õ¥ì¡¼¥à¥í¡¼¥«¥ë¤Ê«Çû¤¬¤¢¤ë¤È¡¢ ¤½¤Î«Çû¤¬Í­¸ú¤Ë¤Ê¤ê¤Þ¤¹¡£ ¤µ¤â¤Ê¤±¤ì¤Ð¡¢foo¤Î¥Ç¥Õ¥©¥ë¥È¤Î«Çû¤¬Í­¸ú¤Ë¤Ê¤ê¤Þ¤¹¡£

¤Ä¤®¤ËÎã¤ò¼¨¤·¤Þ¤¹¡£ ¤Þ¤º¡¢foo¤Î«Çû¤ò½àÈ÷¤·¤Æ¤ª¤­¤Þ¤¹¡£

(setq f1 (selected-frame))
(make-variable-frame-local 'foo)

;; b1’¤Ë¤ª¤¤¤Æ¡¢foo¤Î¥Ð¥Ã¥Õ¥¡¥í¡¼¥«¥ë¤Ê«Çû¤òºî¤ë
(set-buffer (get-buffer-create "b1"))
(make-local-variable 'foo)
(setq foo '(b 1))

;; ¿·¤·¤¤¥Õ¥ì¡¼¥à¤Çfoo¤Î¥Õ¥ì¡¼¥à¥í¡¼¥«¥ë¤Ê«Çû¤òºî¤ë
;; ¤½¤Î¥Õ¥ì¡¼¥à¤òf2¤Ë³ÊǼ¤¹¤ë
(setq f2 (make-frame))
(modify-frame-parameters f2 '((foo . (f 2))))

¤Ç¤Ï¡¢¤µ¤Þ¤¶¤Þ¤Êʸ̮¤Çfoo¤òÄ´¤Ù¤Æ¤ß¤Þ¤·¤ç¤¦¡£ ¥Ð¥Ã¥Õ¥¡‘b1’¤¬¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤Ç¤¢¤ì¤Ð¡¢ ÁªÂò¤·¤¿¥Õ¥ì¡¼¥à¤Ë´Ø·¸¤Ê¤¯¡¢ ‘b1’¤Î¥Ð¥Ã¥Õ¥¡¥í¡¼¥«¥ë¤Ê«Çû¤¬Í­¸ú¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£

(select-frame f1)
(set-buffer (get-buffer-create "b1"))
foo
     ⇒ (b 1)

(select-frame f2)
(set-buffer (get-buffer-create "b1"))
foo
     ⇒ (b 1)

¤µ¤â¤Ê¤±¤ì¤Ð¡¢¥Õ¥ì¡¼¥à¤Î«Çû¤ò»È¤¦²ÄǽÀ­¤¬¤¢¤ê¤Þ¤¹¡£ ¥Õ¥ì¡¼¥àf2¤òÁªÂò¤·¤Æ¤¤¤ë¤È¡¢ ¤½¤Î¥Õ¥ì¡¼¥à¥í¡¼¥«¥ë¤Ê«Çû¤¬Í­¸ú¤Ë¤Ê¤ê¤Þ¤¹¡£

(select-frame f2)
(set-buffer (get-buffer "*scratch*"))
foo
     ⇒ (f 2)

¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤Ë¤â¥Õ¥ì¡¼¥à¤Ë¤â«Çû¤¬¤Ê¤±¤ì¤Ð¡¢ ¥Ç¥Õ¥©¥ë¥È¤Î«Çû¤ò»È¤¤¤Þ¤¹¡£

(select-frame f1)
(set-buffer (get-buffer "*scratch*"))
foo
     ⇒ nil

ÊÑ¿ô¤ÎÍ­¸ú¤Ê«Çû¤¬¥Õ¥ì¡¼¥à¥í¡¼¥«¥ë¤Ê«Çû¤Ç¤¢¤ë¤È¤­¡¢ ÊÑ¿ô¤ËÀßÄꤹ¤ë¤È¤½¤Î«Çû¤òÊѹ¹¤·¤Þ¤¹¡£ frame-parameters¤Ç¤½¤Î·ë²Ì¤ò¸«¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

(select-frame f2)
(set-buffer (get-buffer "*scratch*"))
(setq foo 'nobody)
(assq 'foo (frame-parameters f2))
     ⇒ (foo . nobody)