Next: , Previous: Motion, Up: Positions   [Contents][Index]


29.3 ¥¨¥¯¥¹¥«¡¼¥¸¥ç¥ó

¥×¥í¥°¥é¥à¤Î¶É½êŪ¤ÊÉôʬ¤Ç¡Ø°ì»þŪ¤Ë¡Ù¥Ý¥¤¥ó¥È¤ò°Üư¤·¤¿¤ê¡¢ °ì»þŪ¤Ë¥Ð¥Ã¥Õ¥¡¤òÀÚ¤êÂØ¤¨¤é¤ì¤ë¤È¤·¤Ð¤·¤ÐÍ­ÍѤǤ¹¡£ ¤³¤ì¤ò¥¨¥¯¥¹¥«¡¼¥¸¥ç¥ó¡Êexcursion¡¢¼þÍ·¡Ë¤È¸Æ¤Ó¡¢ ¥¹¥Ú¥·¥ã¥ë¥Õ¥©¡¼¥àsave-excursion¤Ç¹Ô¤¤¤Þ¤¹¡£ ¤³¤Î¹½Ê¸¤Ï¡¢¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤È¤½¤Î¥Ý¥¤¥ó¥È¤ä¥Þ¡¼¥«¤ÎÃͤòÊݸ¤·¡¢ ¥¨¥¯¥¹¥«¡¼¥¸¥ç¥ó¤Î´°Î»¸å¤Ë¤½¤ì¤é¤òÉü¸µ¤·¤Þ¤¹¡£

¥¦¥£¥ó¥É¥¦¤Î¹½À®¤òÊݸ¤·¤¿¤êÉü¸µ¤¹¤ë¥Õ¥©¡¼¥à¤Ï¡¢ Ê̤ΤȤ³¤í¤Ç½Ò¤Ù¤Æ¤¢¤ê¤Þ¤¹ ¡ÊWindow Configurations¤Èsee Frame Configurations¡Ë¡£

Special Form: save-excursion forms…

¥¹¥Ú¥·¥ã¥ë¥Õ¥©¡¼¥àsave-excursion¤Ï¡¢ ¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤Î¼±Ê̻ҤȤ½¤Î¥Ý¥¤¥ó¥È¤ä¥Þ¡¼¥«¤ÎÃͤòÊݸ¤·¡¢ forms¤òɾ²Á¤·¡¢ºÇ¸å¤Ë¡¢ ¥Ð¥Ã¥Õ¥¡¤ÈÊݸ¤·¤Æ¤ª¤¤¤¿¥Ý¥¤¥ó¥È¤ä¥Þ¡¼¥«¤ÎÃͤòÉü¸µ¤¹¤ë¡£ throw¤ä¥¨¥é¡¼¤Ë¤è¤ë°Û¾ïæ½Ð¡Êsee Nonlocal Exits¡Ë¤Ç¤¢¤Ã¤Æ¤â¡¢ ¤³¤ì¤é¤ÎÊݸ¤·¤¿ÃͤòÉü¸µ¤¹¤ë¡£

¥¹¥Ú¥·¥ã¥ë¥Õ¥©¡¼¥àsave-excursion¤Ï¡¢ ¥×¥í¥°¥é¥à¤Î°ìÉôʬ¤À¤±¤Ç¥Ð¥Ã¥Õ¥¡¤ä¥Ý¥¤¥ó¥È¤ò°Üư¤· ¥×¥í¥°¥é¥à¤Î¾¤ÎÉôʬ¤Ø¤Î±Æ¶Á¤òËɤ°É¸½àŪ¤ÊÊýË¡¤Ç¤¢¤ë¡£ Emacs¤ÎLisp¥½¡¼¥¹¤Ç¤Ï4000²ó°Ê¾å¤â»È¤ï¤ì¤Æ¤¤¤ë¡£

save-excursion¤Ï¾¤Î¥Ð¥Ã¥Õ¥¡¤Î¥Ý¥¤¥ó¥È¤ä¥Þ¡¼¥¯¤ÎÃͤÏÊݸ¤·¤Ê¤¤¤Î¤Ç¡¢ ¾¤Î¥Ð¥Ã¥Õ¥¡¤Ç¤ÎÊѹ¹¤Ïsave-excursion¤«¤éÈ´¤±¤Æ¤â»ý³¤¹¤ë¡£

ƱÍͤˡ¢save-excursion¤Ï¡¢ switch-to-buffer¤Ê¤É¤Î´Ø¿ô¤ÇÊѹ¹¤µ¤ì¤¿ ¥¦¥£¥ó¥É¥¦¤È¥Ð¥Ã¥Õ¥¡¤ÎÂбþ´Ø·¸¤ÏÉü¸µ¤·¤Ê¤¤¡£ ¤³¤ì¤é¤ÎÂбþ´Ø·¸¤äÁªÂò¤µ¤ì¤Æ¤¤¤ë¥¦¥£¥ó¥É¥¦¤òÉü¸µ¤¹¤ë1¤Ä¤ÎÊýË¡¤Ï¡¢ save-excursion¤ÎÆâ¦¤Çsave-window-excursion¤ò »È¤¦¤³¤È¤Ç¤¢¤ë¡Êsee Window Configurations¡Ë¡£

save-excursion¤ÎÌá¤êÃͤϡ¢forms¤ÎºÇ¸å¤Î·ë²Ì¤Ç¤¢¤ë¤«¡¢ forms¤òÍ¿¤¨¤Ê¤±¤ì¤Ðnil¤Ç¤¢¤ë¡£

(save-excursion forms)
≡
(let ((old-buf (current-buffer))
      (old-pnt (point-marker))
      (old-mark (copy-marker (mark-marker))))
  (unwind-protect
      (progn forms)
    (set-buffer old-buf)
    (goto-char old-pnt)
    (set-marker (mark-marker) old-mark)))

·Ù¹ð¡§ Êݸ¤µ¤ì¤¿¥Ý¥¤¥ó¥ÈÃͤβսê¤Ë ÉáÄ̤˥ƥ­¥¹¥È¤òÁÞÆþ¤¹¤ë¤È¡¢¤¹¤Ù¤Æ¤Î¥Þ¡¼¥«¤òºÆÇÛÃÖ¤¹¤ë¤è¤¦¤Ë Êݸ¤µ¤ì¤¿¥Ý¥¤¥ó¥ÈÃͤòºÆÇÛÃÖ¤¹¤ë¡£ ¤·¤¿¤¬¤Ã¤Æ¡¢Êݸ¤µ¤ì¤¿¥Ý¥¤¥ó¥ÈÃͤ¬Éü¸µ¤µ¤ì¤ë¤È¡¢ ¥Ý¥¤¥ó¥È¤ÏÁÞÆþ¤µ¤ì¤¿¥Æ¥­¥¹¥È¤Î¤Þ¤¨¤ËÉáÄ̤ɤª¤ê¤Ë¤¯¤ë¡£

save-excursion¤Ï¥Þ¡¼¥«¤Î°ÌÃÖ¤òÊݸ¤·¤Þ¤¹¤¬¡¢ ¥Ð¥Ã¥Õ¥¡¤òÊѹ¹¤¹¤ë´Ø¿ô¤¬deactivate-mark¤ò¹Ô¤¦¤³¤È¤òËɤ®¤Þ¤»¤ó¤«¤é¡¢ ¥³¥Þ¥ó¥É¤¬½ªÎ»¤¹¤ë¤È¥Þ¡¼¥«¤¬ÉÔ³èÀ­¤Ë¤Ê¤Ã¤Æ¤·¤Þ¤¤¤Þ¤¹¡£ See The Mark¡£