Next: Buffer Names, Previous: Buffer Basics, Up: Buffers [Contents][Index]
°ìÈ̤ˡ¢Emacs¥»¥Ã¥·¥ç¥ó¤Ë¤Ï¿¤¯¤Î¥Ð¥Ã¥Õ¥¡¤¬¤¢¤ê¤Þ¤¹¡£ ¤¤¤Ä¤Î»þÅÀ¤Ç¤â¡¢¤½¤ì¤é¤Î1¤Ä¤ò¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡ ¡Êcurrent buffer¡Ë¤È¤·¤Æ¶èÊ̤·¤Þ¤¹¡£ ¥Ð¥Ã¥Õ¥¡Æâ¤Î¥Æ¥¥¹¥È¤ò¸¡ºº¤·¤¿¤êÊѹ¹¤¹¤ë´ðËÜ´Ø¿ô¤Ï °ÅÌۤΤ¦¤Á¤Ë¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤ËºîÍѤ¹¤ë¤¿¤á¡¢ ¤Û¤È¤ó¤É¤ÎÊÔ½¸¤Ï¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤ËÂФ·¤Æ¹Ô¤ï¤ì¤Þ¤¹ ¡Êsee Text¡Ë¡£ Ä̾¥¹¥¯¥ê¡¼¥ó¾å¤ÇÁªÂò¤µ¤ì¤¿¥¦¥£¥ó¥É¥¦¤Ëɽ¼¨¤µ¤ì¤Æ¤¤¤ë¥Ð¥Ã¥Õ¥¡¤¬ ¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤Ç¤¹¤¬¡¢¤Ä¤Í¤Ë¤½¤¦¤È¤Ï¸Â¤ê¤Þ¤»¤ó¡£ Lisp¥×¥í¥°¥é¥à¤Ç¤Ï¡¢¥¹¥¯¥ê¡¼¥ó¾å¤Îɽ¼¨¤ÏÊѤ¨¤º¤Ë¡¢ Ǥ°Õ¤Î¥Ð¥Ã¥Õ¥¡¤ÎÆâÍÆ¤òÁàºî¤¹¤ë¤¿¤á¤Ë °ì»þŪ¤ËÅö³º¥Ð¥Ã¥Õ¥¡¤ò¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤Ë¤Ç¤¤Þ¤¹¡£
Lisp¥×¥í¥°¥é¥à¤Ç¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤ò»ØÄꤹ¤ë¤Ë¤Ï¡¢
set-buffer
¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡£
¿·¤¿¤Ë»ØÄꤷľ¤¹¤Þ¤Ç»ØÄꤷ¤¿¥Ð¥Ã¥Õ¥¡¤¬¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤Ç¤¢¤ê³¤±¤Þ¤¹¡£
ÊÔ½¸¥³¥Þ¥ó¥É¤¬¥¨¥Ç¥£¥¿¥³¥Þ¥ó¥É¥ë¡¼¥×¤ØÌá¤ë¤È¡¢
¥³¥Þ¥ó¥É¥ë¡¼¥×¤Ï¡¢º®Íð¤òÈò¤±¤ë¤¿¤á¤Ë¡¢ÁªÂò¤µ¤ì¤Æ¤¤¤ë¥¦¥£¥ó¥É¥¦¤Ë
ɽ¼¨¤µ¤ì¤Æ¤¤¤ë¥Ð¥Ã¥Õ¥¡¤ò¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤È¤·¤Þ¤¹¡£
¤Ä¤Þ¤ê¡¢Emacs¤¬¥³¥Þ¥ó¥É¤òÆÉ¤à¤È¤¤Ë¥«¡¼¥½¥ë¤¬¤¢¤ë¥Ð¥Ã¥Õ¥¡¤¬
¥³¥Þ¥ó¥É¤¬Å¬ÍѤµ¤ì¤ë¥Ð¥Ã¥Õ¥¡¤Ç¤¹¡£
¡ÊSee Command Loop¡£¡Ë
¤·¤¿¤¬¤Ã¤Æ¡¢set-buffer
¤Ï¡¢
¥æ¡¼¥¶¡¼¤¬ÊÔ½¸¤Ç¤¤ë¤è¤¦¤ËÊ̤ΥХåե¡¤ØÀÚ¤êÂØ¤¨¤ëÊýË¡¤Ë¤Ï¤Ê¤ê¤Þ¤»¤ó¡£
¤³¤ì¤Ë¤Ï¡¢Displaying Buffers¤Ç½Ò¤Ù¤Æ¤¤¤ë´Ø¿ô¤ò»È¤¦É¬Íפ¬¤¢¤ê¤Þ¤¹¡£
¤·¤«¤·¡¢Ê̤Υ«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤ËÂØ¤¨¤ëLisp´Ø¿ô¤Ç¤Ï¡¢
¥³¥Þ¥ó¥É¥ë¡¼¥×¤¬¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤ò
¤¢¤È¤ÇÌ᤹¤È¤¤¤¦¤³¤È¤Ë°Í¸¤·¤Æ¤Ï¤¤¤±¤Þ¤»¤ó¡£
Emacs Lisp¤Ç½ñ¤«¤ì¤¿ÊÔ½¸¥³¥Þ¥ó¥É¤Ï¡¢¥³¥Þ¥ó¥É¥ë¡¼¥×¤Ë²Ã¤¨¤Æ
ÊÌ¤Î¥×¥í¥°¥é¥à¤«¤é¤â¸Æ¤Ð¤ì¤Þ¤¹¡£
¥µ¥Ö¥ë¡¼¥Æ¥£¥ó¤¬¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤òÂØ¤¨¤Ê¤¤¤Û¤¦¤¬
¡Ê¤½¤ì¤¬¥µ¥Ö¥ë¡¼¥Æ¥£¥ó¤ÎÌÜŪ¤Ç¤Ê¤±¤ì¤Ð¡Ë¡¢
¸Æ¤Ó½Ð¤·Â¦¤Ë¤È¤Ã¤Æ¤ÏÊØÍø¤Ç¤¹¡£
¤·¤¿¤¬¤Ã¤Æ¡¢´Ø¿ô¤Î¼Â¹Ô¤¬½ª¤ë¤È¤â¤È¤Î¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤ËÌ᤹
¥Õ¥©¡¼¥àsave-current-buffer
¤ä
save-excursion
¡Êsee Excursions¡Ë¤ÎÆâ¦¤Ç¡¢
ÉáÄ̤Ïset-buffer
¤ò»È¤¤¤Þ¤¹¡£
Îã¤È¤·¤Æ¡¢¡ÊÀâÌÀʸ»úÎó¤ò´Êά¤Ë¤·¤Æ¡Ë¥³¥Þ¥ó¥Éappend-to-buffer
¤Î¥³¡¼¥É¤ò¼¨¤·¤Þ¤¹¡£
(defun append-to-buffer (buffer start end) "Append to specified buffer the text of the region. …" (interactive "BAppend to buffer: \nr") (let ((oldbuf (current-buffer))) (save-current-buffer (set-buffer (get-buffer-create buffer)) (insert-buffer-substring oldbuf start end))))
¤³¤Î´Ø¿ô¤Ç¤Ï¡¢¥í¡¼¥«¥ëÊÑ¿ô¤ò«Çû¤·¤Æ¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤òµÏ¿¤·¡¢
save-current-buffer
¤Ç¤½¤ì¤¬¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤ËÌá¤ë¤è¤¦¤Ë¤·¤Æ¤¤¤Þ¤¹¡£
¤Ä¤®¤Ë¡¢set-buffer
¤Ç»ØÄꤷ¤¿¥Ð¥Ã¥Õ¥¡¤ò¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤Ë¤·¤Þ¤¹¡£
ºÇ¸å¤Ë¡¢insert-buffer-substring
¤Ç¤â¤È¤Î¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤«¤é
»ØÄꤵ¤ì¤¿¡Ê¤¤¤Þ¤Ï¥«¥ì¥ó¥È¡Ë¥Ð¥Ã¥Õ¥¡¤Ëʸ»úÎó¤ò¥³¥Ô¡¼¤·¤Þ¤¹¡£
ÆâÍÆ¤òÉղä·¤¿¥Ð¥Ã¥Õ¥¡¤¬¤É¤ì¤«¤Î¥¦¥£¥ó¥É¥¦¤Ëɽ¼¨¤µ¤ì¤Æ¤¤¤ë¤È¡¢ ¤Ä¤®¤Ëɽ¼¨¤ò¹¹¿·¤·¤¿¤È¤¤ËÊѹ¹¤µ¤ì¤¿¥Æ¥¥¹¥È¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£ ¤½¤ì°Ê³°¤Ç¤Ï¡¢¥¹¥¯¥ê¡¼¥ó¾å¤Ç¤¿¤À¤Á¤Ë¤ÏÊѹ¹¤ò¸«¤ë¤³¤È¤Ï¤Ç¤¤Þ¤»¤ó¡£ ¥³¥Þ¥ó¥É¤Î¼Â¹ÔÃæ¤Ë¤Ï¥Ð¥Ã¥Õ¥¡¤¬°ì»þŪ¤Ë¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤Ë¤Ê¤ê¤Þ¤¹¤¬¡¢ ¤½¤ì¤Ë¤è¤ê¤½¤Î¥Ð¥Ã¥Õ¥¡¤¬É½¼¨¤µ¤ì¤ë¤ï¤±¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£
¥Ð¥Ã¥Õ¥¡¥í¡¼¥«¥ë¤Ê«Çû¤ò»ý¤ÄÊÑ¿ô¤ò¡Êlet
¤ä´Ø¿ô¤Î°ú¿ô¤Ç¡Ë
¥í¡¼¥«¥ë¤Ë«Çû¤¹¤ë¾ì¹ç¤Ë¤Ï¡¢¥í¡¼¥«¥ë¤Ê«Çû¤Î͸úÈϰϤγ«»Ï»þ¤È½ªÎ»»þ¤Ë¤Ï¡¢
Ʊ¤¸¥Ð¥Ã¥Õ¥¡¤¬É¬¤º¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤Ç¤¢¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£
¤µ¤â¤Ê¤¤¤È¡¢¤¢¤ë¥Ð¥Ã¥Õ¥¡¤Ç¤ÏÊÑ¿ô¤ò«Çû¤·¡¢
Ê̤ΥХåե¡¤Ç¤Ï¤½¤Î«Çû¤ò²ò½ü¤·¤Æ¤·¤Þ¤¦¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£
¤³¤ì¤Ë¤Ï2¤Ä¤ÎÊýË¡¤¬¤¢¤ê¤Þ¤¹¡£
ñ½ã¤Ê¾ì¹ç¤Ë¤Ï¡¢Â«Çû¤Î͸úÈÏ°ÏÆâ¤Ç
¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤¬Âؤï¤é¤Ê¤¤¤ò³Îǧ¤·¤Þ¤¹¡£
¤µ¤â¤Ê¤±¤ì¤Ð¡¢save-current-buffer
¤äsave-excursion
¤ò»È¤Ã¤Æ¡¢
»Ï¤á¤Ë¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤Ç¤¢¤Ã¤¿¥Ð¥Ã¥Õ¥¡¤¬¡¢
ÊÑ¿ô«Çû¤¬²ò½ü¤µ¤ì¤ë¤È¤¤Ë¤Ï¤Ä¤Í¤Ë¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤Ç¤¢¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£
set-buffer
¤Ç¤â¤È¤Î¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤ËÌ᤹¤Î¤Ç¤Ï¿®ÍêÀ¤¬¤¢¤ê¤Þ¤»¤ó¡£
Àµ¤·¤¯¤Ê¤¤¥Ð¥Ã¥Õ¥¡¤¬¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤Ç¤¢¤ë¤È¤¤Ë
ÃæÃǤ¬µ¯¤¤ë¤ÈÌ᤻¤Ê¤¤¤«¤é¤Ç¤¹¡£
¤·¤Æ¤Ï¤¤¤±¤Ê¤¤¤³¤È¤ò¤Ä¤®¤Ë¼¨¤·¤Þ¤¹¡£
(let (buffer-read-only (obuf (current-buffer))) (set-buffer …) … (set-buffer obuf))
¤Ä¤®¤Î¤è¤¦¤Ësave-current-buffer
¤ò»È¤¨¤Ð¡¢
Ä̾ï¤Îɾ²Á¤Ë²Ã¤¨¤Æ¡¢ÃæÃÇ¡¢¥¨¥é¡¼¡¢throw
¤â°·¤¨¤Þ¤¹¡£
(let (buffer-read-only) (save-current-buffer (set-buffer …) …))
¤³¤Î´Ø¿ô¤Ï¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤òÊÖ¤¹¡£
(current-buffer) ⇒ #<buffer buffers.texi>
¤³¤Î´Ø¿ô¤Ï¡¢buffer-or-name¤ò¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤Ë¤¹¤ë¡£ ¤³¤Î´Ø¿ô¤Ï¸½ºßÁªÂò¤µ¤ì¤Æ¤¤¤ë¥¦¥£¥ó¥É¥¦¤ä¤½¤Î¾¤Î¥¦¥£¥ó¥É¥¦¤Ë Åö³º¥Ð¥Ã¥Õ¥¡¤òɽ¼¨¤·¤Ê¤¤¤Î¤Ç¡¢¥æ¡¼¥¶¡¼¤¬Åö³º¥Ð¥Ã¥Õ¥¡¤ò¸«¤é¤ì¤ë¤È¤Ï¸Â¤é¤Ê¤¤¡£ ¤·¤«¤·¡¢Lisp¥×¥í¥°¥é¥à¤Ï¤¤¤º¤ì¤Ë¤·¤Æ¤âÅö³º¥Ð¥Ã¥Õ¥¡¤òÁàºî¤Ç¤¤ë¡£
¤³¤Î´Ø¿ô¤Ïbuffer-or-name¤Ç»ØÄꤵ¤ì¤ë¥Ð¥Ã¥Õ¥¡¤òÊÖ¤¹¡£ buffer-or-name¤¬´û¸¤Î¥Ð¥Ã¥Õ¥¡¤ò»ØÄꤷ¤Ê¤±¤ì¤Ð¡¢¥¨¥é¡¼¤òÄÌÃΤ¹¤ë¡£
¥Þ¥¯¥ísave-current-buffer
¤Ï¡¢
¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤Î¼±Ê̻ҤòÊݸ¤·¡¢¥Õ¥©¡¼¥àbody¤òɾ²Á¤·¡¢
ºÇ¸å¤Ë¤â¤È¤Î¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤ËÌ᤹¡£
Ìá¤êÃͤϡ¢body¤ÎºÇ¸å¤Î¥Õ¥©¡¼¥à¤ÎÃͤǤ¢¤ë¡£
throw
¤ä¥¨¥é¡¼¡Êsee Nonlocal Exits¡Ë¤Ë¤è¤ë°Û¾ï½ªÎ»¤Ç¤¢¤Ã¤Æ¤â
¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤ÏÌᤵ¤ì¤ë¡£
save-current-buffer
¤«¤éÈ´¤±¤ë¤È¤¤Ë¡¢
¤â¤È¤Î¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤È¤·¤Æ»È¤ï¤ì¤Æ¤¤¤¿¥Ð¥Ã¥Õ¥¡¤¬ºï½ü¤µ¤ì¤Æ¤¤¤ë¤È¡¢
¤â¤Á¤í¤ó¡¢¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤Ë¤Ï¤Ê¤é¤Ê¤¤¡£
¤½¤Î¤«¤ï¤ê¤Ë¡¢È´¤±¤ë¤Þ¤¨¤Ë¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤Ç¤¢¤Ã¤¿¥Ð¥Ã¥Õ¥¡¤¬
¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤Ç¤¢¤ê³¤±¤ë¡£
¥Þ¥¯¥íwith-current-buffer
¤Ï¡¢
¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤Î¼±Ê̻ҤòÊݸ¤·¡¢
buffer¤ò¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤Ë¤·¡¢¥Õ¥©¡¼¥àbody¤òɾ²Á¤·¡¢
ºÇ¸å¤Ë¤â¤È¤Î¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤ËÌ᤹¡£
Ìá¤êÃͤϡ¢body¤ÎºÇ¸å¤Î¥Õ¥©¡¼¥à¤ÎÃͤǤ¢¤ë¡£
throw
¤ä¥¨¥é¡¼¡Êsee Nonlocal Exits¡Ë¤Ë¤è¤ë°Û¾ï½ªÎ»¤Ç¤¢¤Ã¤Æ¤â
¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤ÏÌᤵ¤ì¤ë¡£
¥Þ¥¯¥íwith-temp-buffer
¤Ï¡¢
°ì»þŪ¤Ê¥Ð¥Ã¥Õ¥¡¤ò¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤È¤·¤Æ
¥Õ¥©¡¼¥àbody¤òɾ²Á¤¹¤ë¡£
¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤Î¼±Ê̻ҤòÊݸ¤·¡¢
°ì»þŪ¤Ê¥Ð¥Ã¥Õ¥¡¤òºîÀ®¤·¤Æ¤½¤ì¤ò¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤Ë¤·¡¢
¥Õ¥©¡¼¥àbody¤òɾ²Á¤·¡¢
ºÇ¸å¤Ë¤â¤È¤Î¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤ËÌ᤹¤È¤È¤â¤Ë°ì»þŪ¤Ê¥Ð¥Ã¥Õ¥¡¤òºï½ü¤¹¤ë¡£
Ìá¤êÃͤϡ¢body¤ÎºÇ¸å¤Î¥Õ¥©¡¼¥à¤ÎÃͤǤ¢¤ë¡£
ºÇ¸å¤Î¥Õ¥©¡¼¥à¤È¤·¤Æ(buffer-string)
¤ò»È¤¨¤Ð¡¢
°ì»þŪ¤Ê¥Ð¥Ã¥Õ¥¡¤ÎÆâÍÆ¤òÊÖ¤»¤ë¡£
throw
¤ä¥¨¥é¡¼¡Êsee Nonlocal Exits¡Ë¤Ë¤è¤ë°Û¾ï½ªÎ»¤Ç¤¢¤Ã¤Æ¤â
¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤ÏÌᤵ¤ì¤ë¡£
Writing to Files¤Îwith-temp-file
¤â»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£