Previous: Excursions, Up: Positions [Contents][Index]
¥Ê¥í¥¤¥ó¥°¡Ênarrowing¡Ë¤È¤Ï¡¢ Emacs¤ÎÊÔ½¸¥³¥Þ¥ó¥É¤¬»²¾È¤Ç¤¤ë¥Æ¥¥¹¥È¤ò ¥Ð¥Ã¥Õ¥¡¤ÎÀ©¸Â¤µ¤ì¤¿Ê¸»ú¤ÎÈϰϤ˸ÂÄꤹ¤ë¤³¤È¤Ç¤¹¡£ »²¾È¤Ç¤¤ë¥Æ¥¥¹¥È¤Î¤³¤È¤ò¥Ð¥Ã¥Õ¥¡¤Î »²¾È²ÄǽÉôʬ¡Êaccessible portion¡Ë¤È¸Æ¤Ó¤Þ¤¹¡£
¥Ê¥í¥¤¥ó¥°¤Ï¡¢»²¾È²ÄǽÉôʬ¤ÎÀèÆ¬¤ÈËöÈø¤Ë¤Ê¤ë2¤Ä¤Î¥Ð¥Ã¥Õ¥¡Æâ°ÌÃ֤ǻØÄꤷ¤Þ¤¹¡£ ¤Û¤È¤ó¤É¤ÎÊÔ½¸¥³¥Þ¥ó¥É¤ä¤Û¤È¤ó¤É¤ÎEmacs´ðËÜ´Ø¿ô¤Ë¤È¤Ã¤Æ¤Ï¡¢ ¤³¤ì¤é¤Î°ÌÃ֤ϥХåե¡¤ÎÀèÆ¬¤äËöÈø¤ÎÃͤòÃÖ¤´¹¤¨¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£ ¥Ê¥í¥¤¥ó¥°¤·¤Æ¤¤¤ë¤È¡¢»²¾È²ÄǽÉôʬ¤Î³°Â¦¤Î¥Æ¥¥¹¥È¤Ïɽ¼¨¤µ¤ì¤Þ¤»¤ó¤·¡¢ ¥Ý¥¤¥ó¥È¤Ï»²¾È²ÄǽÉôʬ¤Î³°Â¦¤Ø¤Ï°Üư¤Ç¤¤Þ¤»¤ó¡£
Ä̾ï¤Ï¥Ð¥Ã¥Õ¥¡¤ÎÀèÆ¬¤«¤é¿ô¤¨¤ë°ÌÃÖ¤ä¹ÔÈÖ¹æ¤Ê¤É¤ÎÃÍ¤Ï ¥Ê¥í¥¤¥ó¥°¤·¤Æ¤¤¤Æ¤âƱÍͤ˿ô¤¨¤Þ¤¹¤¬¡¢ ¤½¤ì¤é¤ò»È¤¦´Ø¿ô¤Ï»²¾È¤Ç¤¤Ê¤¤¥Æ¥¥¹¥È¤òÁàºî¤¹¤ë¤³¤È¤òµñÈݤ·¤Þ¤¹¡£
¥Ð¥Ã¥Õ¥¡¤òÊݸ¤¹¤ë¥³¥Þ¥ó¥É¤Ï¥Ê¥í¥¤¥ó¥°¤Î±Æ¶Á¤ò¼õ¤±¤Þ¤»¤ó¡£ ¤Ä¤Þ¤ê¡¢¥Ê¥í¥¤¥ó¥°¤Ë´Ø·¸¤Ê¤¯¥Ð¥Ã¥Õ¥¡Á´ÂΤòÊݸ¤·¤Þ¤¹¡£
¤³¤Î´Ø¿ô¤Ï¡¢¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤Îstart¤Ç»Ï¤Þ¤êend¤Ç½ª¤ëÉôʬ¤ò »²¾È²ÄǽÉôʬ¤Ë¤¹¤ë¡£ ¤É¤Á¤é¤Î°ú¿ô¤âʸ»ú¤Î°ÌÃ֤Ǥ¢¤ë¤³¤È¡£
ÂÐÏÃŪ¤Ë¸Æ¤Ó½Ð¤µ¤ì¤ë¤È¡¢start¤Èend¤Ï ¸½ºß¤Î¥ê¡¼¥¸¥ç¥ó¤Î¶³¦¡Ê¥Ý¥¤¥ó¥È¤È¥Þ¡¼¥¯¤Î¾®¤µ¤¤¤Û¤¦¤¬¤µ¤¤Ë¤¯¤ë¡Ë¤Ç¤¢¤ë¡£
¤³¤Î¥³¥Þ¥ó¥É¤Ï¡¢¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤Î»²¾È²ÄǽÉôʬ¤ò
¸½ºß¤Î¥Ú¡¼¥¸¤Î¤ß¤ò´Þ¤à¤è¤¦¤Ë¤¹¤ë¡£
¾Êά²Äǽ¤ÊÂè1°ú¿ômove-count¤¬nil
°Ê³°¤Ç¤¢¤ë¤È¡¢
move-count¥Ú¡¼¥¸¤À¤±Á°Êý¤«¸åÊý¤Ø°Üư¤·¤Æ¤«¤é
1¥Ú¡¼¥¸Ê¬¤Ë¥Ê¥í¥¤¥ó¥°¤¹¤ë¡£
ÊÑ¿ôpage-delimiter
¤¬¥Ú¡¼¥¸¤Î³«»Ï²Õ½ê¤È½ªÎ»²Õ½ê¤ò»ØÄꤹ¤ë
¡Êsee Standard Regexps¡Ë¡£
ÂÐÏÃŪ¤Ë¸Æ¤Ó½Ð¤µ¤ì¤ë¤È¡¢move-count¤Ï¿ôÃÍÁ°ÃÖ°ú¿ô¤Ç¤¢¤ë¡£
¤³¤Î´Ø¿ô¤Ï¡¢¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤Î¥Ê¥í¥¤¥ó¥°¤ò²ò½ü¤·¡¢ Á´ÂΤò»²¾È¤Ç¤¤ë¤è¤¦¤Ë¤¹¤ë¡£ ¤³¤ì¤ò¥ï¥¤¥É¥Ë¥ó¥°¡Êwidening¡Ë¤È¸Æ¤Ö¡£ ¤³¤ì¤Ï¤Ä¤®¤Î¼°¤ÈÅù²Á¤Ç¤¢¤ë¡£
(narrow-to-region 1 (1+ (buffer-size)))
¤³¤Î¥¹¥Ú¥·¥ã¥ë¥Õ¥©¡¼¥à¤Ï¡¢¸½ºß¤Î»²¾È²ÄǽÉôʬ¤Î¶³¦¤òÊݸ¤·¡¢
¥Õ¥©¡¼¥àbody¤òɾ²Á¤·¡¢ºÇ¸å¤Ë¡¢Êݸ¤·¤¿¶³¦¤òÉü¸µ¤·¤Æ
¤Þ¤¨¤ÈƱ¤¸¥Ê¥í¥¤¥ó¥°¾õÂ֡ʤ¢¤ë¤¤¤Ï¥Ê¥í¥¤¥ó¥°¤Ê¤·¡Ë¤ËÉü¸µ¤¹¤ë¡£
throw
¤ä¥¨¥é¡¼¤Ë¤è¤ë°Û¾ïæ½Ð¡Êsee Nonlocal Exits¡Ë¤Ç¤¢¤Ã¤Æ¤â¡¢
¥Ê¥í¥¤¥ó¥°¾õÂÖ¤òÉü¸µ¤¹¤ë¡£
save-restriction
¤ÎÌá¤êÃͤϡ¢body¤ÎºÇ¸å¤Î·ë²Ì¤Ç¤¢¤ë¤«¡¢
body¤òÍ¿¤¨¤Ê¤±¤ì¤Ðnil
¤Ç¤¢¤ë¡£
Ãí°Õ¡§
¹½Ê¸save-restriction
¤ò»È¤¦¤È¤¤Ë¤Ï
¤Þ¤Á¤¬¤¤¤ä¤¹¤¤¡£
»È¤¦¤Þ¤¨¤Ë¤³¤ÎÀâÌÀÁ´ÂΤòÆÉ¤à¤³¤È¡£
body¤Ç¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤òÀÚ¤êÂØ¤¨¤Æ¤â
save-restriction
¤Ï¤â¤È¤Î¥Ð¥Ã¥Õ¥¡¡Ê¥Ð¥Ã¥Õ¥¡¤ÎÀ©¸Â¤òÊݸ¤·¤¿¥Ð¥Ã¥Õ¥¡¡Ë¤Ë
À©¸Â¤òÉü¸µ¤¹¤ë¤¬¡¢¤â¤È¤Î¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤Ë¤ÏÌᤵ¤Ê¤¤¡£
save-restriction
¤Ï¥Ý¥¤¥ó¥È¤ä¥Þ¡¼¥¯¤ÏÉü¸µ¤·¤Ê¤¤¡£
¤½¤ì¤Ë¤Ïsave-excursion
¤ò»È¤¦¡£
save-restriction
¤Èsave-excursion
¤Îξ¼Ô¤ò
°ì½ï¤Ë»È¤¦¤È¤¤Ë¤Ï¡¢save-excursion
¤¬Àè¤Ë¡Ê³°Â¦¤Ë¡Ë¤¯¤ë¤³¤È¡£
¤µ¤â¤Ê¤¤¤È¡¢¸Å¤¤¥Ý¥¤¥ó¥ÈÃͤϰì»þŪ¤Ê¥Ê¥í¥¤¥ó¥°¤¬Í¸ú¤Ê¾õÂÖ¤ÇÉü¸µ¤µ¤ì¤ë¡£
¸Å¤¤¥Ý¥¤¥ó¥ÈÃͤ¬°ì»þŪ¤Ê¥Ê¥í¥¤¥ó¥°¤ÎÈϰϳ°¤Ë¤¢¤ë¤ÈÀµ¤·¤¯Éü¸µ¤Ç¤¤Ê¤¤¡£
¥¹¥Ú¥·¥ã¥ë¥Õ¥©¡¼¥àsave-restriction
¤Ï¡¢
»²¾È²ÄǽÉôʬ¤ÎÀèÆ¬¤ÈËöÈø¤ò¥Ð¥Ã¥Õ¥¡¤ÎÀèÆ¬¤ÈËöÈø¤«¤é¤Îµ÷Î¥¤È¤·¤ÆµÏ¿¤¹¤ë¡£
¤¤¤¤¤«¤¨¤ì¤Ð¡¢»²¾È²ÄǽÉôʬ¤ÎÁ°¸å¤Î»²¾È¤Ç¤¤Ê¤¤¥Æ¥¥¹¥È¤ÎÎ̤òµÏ¿¤¹¤ë¡£
¤³¤ÎÊýË¡¤Ï¡¢body¤Ç¤µ¤é¤Ë¥Ê¥í¥¤¥ó¥°¤·¤Æ¤âÀµ¤·¤¤·ë²Ì¤òÀ¸¤¸¤ë¡£
¤·¤«¤·¡¢body¤Ç¥ï¥¤¥É¥Ë¥ó¥°¤·¤ÆÊݸ¤µ¤ì¤Æ¤¤¤ë¥Ê¥í¥¤¥ó¥°¤ÎÈϰϳ°¤ò
Êѹ¹¤¹¤ë¤Èsave-restriction
¤¬º®Í𤹤롣
¤³¤Î¤è¤¦¤Ë¤·¤¿¤¤¤È¤¤Ë¤Ï¡¢
save-restriction
¤ÏÀµ¤·¤¤²òË¡¤Ç¤Ï¤Ê¤¤¡£
¤Ä¤®¤Î¤è¤¦¤Ë¤¹¤ëɬÍפ¬¤¢¤ë¡£
(let ((beg (point-min-marker)) (end (point-max-marker))) (unwind-protect (progn body) (save-excursion (set-buffer (marker-buffer beg)) (narrow-to-region beg end))))
save-restriction
¤ÎÀµ¤·¤¤»È¤¤Êý¤Î´Êñ¤ÊÎã¤ò¼¨¤¹¡£
---------- Buffer: foo ---------- This is the contents of foo This is the contents of foo This is the contents of foo∗ ---------- Buffer: foo ----------
(save-excursion (save-restriction (goto-char 1) (forward-line 2) (narrow-to-region 1 (point)) (goto-char (point-min)) (replace-string "foo" "bar"))) ---------- Buffer: foo ---------- This is the contents of bar This is the contents of bar This is the contents of foo∗ ---------- Buffer: foo ----------