Next: , Previous: Text Lines, Up: Motion   [Contents][Index]


29.2.5 ¥¹¥¯¥ê¡¼¥ó¹Ôʬ¤Î°Üư

Á°Àá¤Î¹Ôñ°Ì¤Î´Ø¿ô¤Ï¡¢²þ¹Ôʸ»ú¤Ç¶èÀÚ¤é¤ì¤¿¥Æ¥­¥¹¥È¹Ô¤À¤±¤ò¿ô¤¨¤Þ¤¹¡£ ÂоÈŪ¤Ë¡¢¤³¤ì¤é¤Î´Ø¿ô¤Ï¡¢¥¹¥¯¥ê¡¼¥ó¾å¤Ë¤É¤Î¤è¤¦¤Ë¥Æ¥­¥¹¥È¤¬¸½¤ì¤ë¤«¤Ç ÄêµÁ¤µ¤ì¤ë¥¹¥¯¥ê¡¼¥ó¾å¤Î¹Ô¤ò¿ô¤¨¤Þ¤¹¡£ ¥Æ¥­¥¹¥È¹Ô¤¬ÁªÂò¤µ¤ì¤Æ¤¤¤ë¥¦¥£¥ó¥É¥¦¤ÎÉý¤Ë¼ý¤Þ¤ë¤À¤±Ã»¤±¤ì¤Ð¡¢ 1¥Æ¥­¥¹¥È¹Ô¤Ï1¥¹¥¯¥ê¡¼¥ó¹Ô¤Ç¤¹¤¬¡¢ ¤·¤«¤·¡¢¤½¤ì°Ê³°¤Ç¤Ï1¥Æ¥­¥¹¥È¹Ô¤ÏÊ£¿ô¤Î¥¹¥¯¥ê¡¼¥ó¹Ô¤òÀê¤á¤Þ¤¹¡£

¥Æ¥­¥¹¥È¹Ô¤òÊ£¿ô¤Î¥¹¥¯¥ê¡¼¥ó¹Ô¤Ë·Ñ³¤»¤º¤Ë ¥¹¥¯¥ê¡¼¥ó¾å¤ÇÀÚ¤êµÍ¤á¤ë¾ì¹ç¤â¤¢¤ê¤Þ¤¹¡£ ¤³¤Î¤è¤¦¤Ê¾ì¹ç¡¢vertical-motion¤Ï¡¢ forward-line¤Ë¤è¤¯»÷¤¿¥Ý¥¤¥ó¥È¤Î°Üư¤ò¹Ô¤¤¤Þ¤¹¡£ See Truncation¡£

Í¿¤¨¤é¤ì¤¿Ê¸»úÎó¤ÎÉý¤Ï¡¢³ÆÊ¸»ú¤Î¸«¤¿¤á¤òÀ©¸æ¤¹¤ë¥Õ¥é¥°¤Ë°Í¸¤¹¤ë¤Î¤Ç¡¢ vertical-motion¤Ï¡¢ ¥Æ¥­¥¹¥È¤ò¼ý¤á¤¿¥Ð¥Ã¥Õ¥¡¤äÁªÂò¤µ¤ì¤Æ¤¤¤ë¥¦¥£¥ó¥É¥¦ ¡Ê¤½¤ÎÉý¤äÀÚ¤êµÍ¤á¥Õ¥é¥°¡¢¥¦¥£¥ó¥É¥¦¤´¤È¤Ë°Û¤Ê¤ê¤¦¤ëɽ¼¨¥Æ¡¼¥Ö¥ë¤¬ ¤¢¤ë¤¿¤á¡Ë¤Ë°Í¸¤·¤Æ¡¢ÆÃÄê¤Î¥Æ¥­¥¹¥ÈÉôʬ¤ËÂФ·¤Æ°Û¤Ê¤Ã¤¿¤Õ¤ë¤Þ¤¤¤ò¤·¤Þ¤¹¡£ See Usual Display¡£

¤³¤ì¤é¤Î´Ø¿ô¤Ï¡¢¥¹¥¯¥ê¡¼¥ó¹Ô¤¬¤É¤³¤Ç¶èÀÚ¤ì¤ë¤«¤ò·èÄꤹ¤ë¤¿¤á¤Ë¥Æ¥­¥¹¥È¤òÁöºº ¤¹¤ë¤Î¤Ç¡¢Áöºº¤¹¤ëÎ̤ËÈæÎ㤷¤Æ»þ´Ö¤¬¤«¤«¤ê¤Þ¤¹¡£ ÆÉ¼Ô¤¬¤³¤ì¤é¤ò¿ÍѤ¹¤ë°Õ¿Þ¤¬¤¢¤ë¤È¤­¤Ë¤Ï¡¢ ÆÉ¼Ô¤Î¥³¡¼¥É¤Î¸úΨ¤ò²þÁ±¤¹¤ë¥­¥ã¥Ã¥·¥å¤òEmacs¤¬Ä󶡤·¤Þ¤¹¡£ See cache-long-line-scans¡£

Function: vertical-motion count &optional window

¤³¤Î´Ø¿ô¤Ï¡¢¥Ý¥¤¥ó¥È¤ò´Þ¤à¥¹¥¯¥ê¡¼¥ó¹Ô¤«¤é count¥¹¥¯¥ê¡¼¥ó¹Ô¿ô¤À¤±²¼¸þ¤­¤Ë¥Ý¥¤¥ó¥È¤ò°Üư¤¹¤ë¡£ count¤¬Éé¤Ç¤¢¤ë¤È¾å¸þ¤­¤Ë°Üư¤¹¤ë¡£

vertical-motion¤Ï¡¢¥Ý¥¤¥ó¥È¤ò°Üư¤·¤¿¥¹¥¯¥ê¡¼¥ó¹Ô¿ô¤òÊÖ¤¹¡£ ¥Ð¥Ã¥Õ¥¡¤ÎÀèÆ¬¤äËöÈø¤Ë㤹¤ë¤È¡¢ ¤³¤ÎÃͤÏÀäÂÐÃͤǤÏcount¤è¤ê¾®¤µ¤¤¡£

¥¦¥£¥ó¥É¥¦window¤Ï¡¢ Éý¡¢¿åÊ¿¥¹¥¯¥í¡¼¥ë¡¢É½¼¨¥Æ¡¼¥Ö¥ë¤Ê¤É¤Î¥Ñ¥é¥á¡¼¥¿¤òÆÀ¤ë¤¿¤á¤Ë»È¤ï¤ì¤ë¡£ ¤·¤«¤·¡¢window¤ËÊ̤ΥХåե¡¤¬É½¼¨¤µ¤ì¤Æ¤¤¤ë¤È¤·¤Æ¤â¡¢ vertical-motion¤Ï¤Ä¤Í¤Ë¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤ËºîÍѤ¹¤ë¡£

¥³¥Þ¥ó¥É: move-to-window-line count

¤³¤Î´Ø¿ô¤Ï¡¢ÁªÂò¤µ¤ì¤Æ¤¤¤ë¥¦¥£¥ó¥É¥¦¤Ë¸½ºßɽ¼¨¤µ¤ì¤Æ¤¤¤ë¥Æ¥­¥¹¥È¤Ë ´ð¤Å¤¤¤Æ¥Ý¥¤¥ó¥È¤ò°Üư¤¹¤ë¡£ ¥¦¥£¥ó¥É¥¦¤ÎÀèÆ¬¤«¤écount¥¹¥¯¥ê¡¼¥ó¹Ô¤ÎÀèÆ¬¤Ë¥Ý¥¤¥ó¥È¤ò°Üư¤¹¤ë¡£ count¤¬Éé¤Ç¤¢¤ë¤È¡¢Äì¡Ê¤¢¤ë¤¤¤Ï¥Ð¥Ã¥Õ¥¡¤ÎËöÈø¤¬¥¹¥¯¥ê¡¼¥ó¤Î Äì¤è¤ê¾å¤Ë¤¢¤ë¾ì¹ç¤Ë¤Ï¥Ð¥Ã¥Õ¥¡¤ÎºÇ½ª¹Ô¡Ë¤«¤é¿ô¤¨¤Æ -count¥¹¥¯¥ê¡¼¥ó¹Ô°ÌÃÖ¤ò»ØÄꤹ¤ë¡£

count¤¬nil¤Ç¤¢¤ë¤È¡¢ ¥¦¥£¥ó¥É¥¦¤ÎÃæ±û¤Î¹Ô¤ÎÀèÆ¬¤Ë¥Ý¥¤¥ó¥È¤ò°Üư¤¹¤ë¡£ count ¤ÎÀäÂÐÃͤ¬¥¦¥£¥ó¥É¥¦¤Î¥µ¥¤¥º¤è¤ê¤âÂ礭¤¤¤È¤­¤Ë¤Ï¡¢ ¥¦¥£¥ó¥É¥¦¤Ë½½Ê¬¤Ê¹â¤µ¤¬¤¢¤Ã¤¿¾ì¹ç¤Ë°Üư¤¹¤ë¤Ç¤¢¤í¤¦ ¥¹¥¯¥ê¡¼¥ó¹Ô¤Î²Õ½ê¤Ë¥Ý¥¤¥ó¥È¤ò°Üư¤¹¤ë¡£ ¤½¤Î¤¿¤á¡¢¥¹¥¯¥í¡¼¥ë¤·¤ÆÅö³º²Õ½ê¤¬¥¹¥¯¥ê¡¼¥ó¤Ë¸½¤ì¤ë¤è¤¦¤ËºÆÉ½¼¨¤¹¤ë¡£

ÂÐÏÃŪ¤Ë¸Æ¤Ó½Ð¤µ¤ì¤ë¤È¡¢count¤Ï¿ôÃÍÁ°ÃÖ°ú¿ô¤Ç¤¢¤ë¡£

Ìá¤êÃͤϡ¢¥¦¥£¥ó¥É¥¦¤ÎÀèÆ¬¹Ô¤ò0¤È¿ô¤¨¤Æ¡¢°ÜưÀè¤Î¹Ô¤Î¥¦¥£¥ó¥É¥¦¹ÔÈÖ¹æ¤Ç¤¢¤ë¡£

Function: compute-motion from frompos to topos width offsets window

¤³¤Î´Ø¿ô¤Ï¡¢¥¹¥¯¥ê¡¼¥ó¾å¤Ç¤Î°ÌÃÖ¤ò·×»»¤·¤Ê¤¬¤é¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤òÁöºº¤¹¤ë¡£ ¥Ð¥Ã¥Õ¥¡Æâ°ÌÃÖfrom¤¬¥¹¥¯¥ê¡¼¥óºÂɸfrompos¤ËÂбþ¤¹¤ë¤È²¾Äꤷ¤Æ¡¢ from¤«¤éÁ°Êý¤Ø¸þ¤±¤Æto¤«topos¤Î¤É¤Á¤é¤«¤Ë 㤹¤ë¤Þ¤Ç¥Ð¥Ã¥Õ¥¡¤òÁöºº¤¹¤ë¡£ ¥Ð¥Ã¥Õ¥¡Æâ¤Î½ªÎ»°ÌÃ֤ȥ¹¥¯¥ê¡¼¥óºÂɸ¤òÊÖ¤¹¡£

ºÂɸ°ú¿ôfrompos¤Ètopos¤Ï¡¢ (hpos . vpos)¤Î·Á¤Î¥³¥ó¥¹¥»¥ë¤Ç¤¢¤ë¡£

°ú¿ôwidth¤Ï¡¢¥Æ¥­¥¹¥È¤òɽ¼¨¤Ç¤­¤ë¥³¥é¥à¿ô¤Ç¤¢¤ê¡¢ ¤³¤ì¤Ï·Ñ³¹Ô¤Î°·¤¤¤Ë±Æ¶Á¤¹¤ë¡£ ÆÉ¼Ô¤¬Áª¤ó¤À¥¦¥£¥ó¥É¥¦¤ËÂФ·¤Æwindow-width¤¬ÊÖ¤·¤¿ÃÍ¡¢ ¤Ä¤Þ¤ê¡¢Ä̾(window-width window)¤ò»È¤¦¡£

°ú¿ôoffsets¤Ï¡¢nil¤Ç¤¢¤ë¤«¡¢ (hscroll . tab-offset)¤Î·Á¤Î¥³¥ó¥¹¥»¥ë¤Ç¤¢¤ë¡£ ¤³¤³¤Ç¡¢hscroll¤Ïº¸Ã¼¤Ëɽ¼¨¤µ¤ì¤Æ¤¤¤Ê¤¤¥³¥é¥à¿ô¤Ç¤¢¤ê¡¢ ¿¤¯¤Î¾ì¹ç¤Ïwindow-hscroll¤ò¸Æ¤Ó½Ð¤·¤ÆÆÀ¤¿Ãͤò»È¤¦¡£ °ìÊý¡¢tab-offset¤Ï¥¹¥¯¥ê¡¼¥ó¾å¤Ç¤Î¥³¥é¥àÈÖ¹æ¤È ¥Ð¥Ã¥Õ¥¡Æâ¤Ç¤Î¥³¥é¥àÈÖ¹æ¤Îº¹¤Ç¤¢¤ë¡£ ¤³¤ÎÃͤϡ¢·Ñ³¹Ô¤Ë¤ª¤¤¤Æ¤Þ¤¨¤Î¥¹¥¯¥ê¡¼¥ó¹Ô¤ÎÉý¤¬tab-width¤Ç½ª¤é¤Ê¤¤ ¾ì¹ç¤Ë0°Ê³°¤Ë¤Ê¤ë¡£ ·Ñ³¤·¤Ê¤¤¹Ô¤Ç¤Ï¤Ä¤Í¤Ë0¤Ç¤¢¤ë¡£

¥¦¥£¥ó¥É¥¦window¤Ï¡¢»ÈÍѤ¹¤ëɽ¼¨¥Æ¡¼¥Ö¥ë¤ò»ØÄꤹ¤ë¤¿¤á¤À¤±¤Ë»È¤ï¤ì¤ë¡£ window¤Ëɽ¼¨¤µ¤ì¤Æ¤¤¤ë¥Ð¥Ã¥Õ¥¡¤Ë´Ø¤ï¤é¤º¡¢ compute-motion¤Ï¤Ä¤Í¤Ë¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤ËºîÍѤ¹¤ë¡£

Ìá¤êÃͤϡ¢5Í×ÁǤΥꥹ¥È¤Ç¤¢¤ë¡£

(pos vpos hpos prevhpos contin)

¤³¤³¤Ç¡¢pos¤ÏÁöºº¤ò½ª¤¨¤¿¥Ð¥Ã¥Õ¥¡Æâ°ÌÃ֤Ǥ¢¤ê¡¢ vpos¤Ï¿âľÊý¸þ¤Î¥¹¥¯¥ê¡¼¥ó°ÌÃÖ¡¢ hpos¤Ï¿åÊ¿Êý¸þ¤Î¥¹¥¯¥ê¡¼¥ó°ÌÃ֤Ǥ¢¤ë¡£

·ë²Ì¤Îprevhpos¤Ï¡¢pos¤«¤é1ʸ»úʬÌá¤Ã¤¿²Õ½ê¤Î¿åÊ¿°ÌÃ֤Ǥ¢¤ë¡£ ¤³¤Îʸ»ú¤Î¤¢¤È¤ÇºÇ½ª¹Ô¤¬·Ñ³¤·¤Æ¤¤¤ë¤È¤­¤Ë¤Ï¡¢ ·ë²Ì¤Îcontin¤Ït¤Ç¤¢¤ë¡£

¤¿¤È¤¨¤Ð¡¢¤¢¤ë¥¦¥£¥ó¥É¥¦¤Îline¥¹¥¯¥ê¡¼¥ó¹Ô¤Îcol¥³¥é¥à¤Ë Âбþ¤¹¤ë¥Ð¥Ã¥Õ¥¡Æâ°ÌÃÖ¤òõ¤¹¤Ë¤Ï¡¢ from¤È¤·¤Æ¥¦¥£¥ó¥É¥¦¤Îɽ¼¨³«»Ï°ÌÃÖ¡¢ frompos¤È¤·¤Æ¥¦¥£¥ó¥É¥¦¤Îº¸¾å¶ù¤ÎºÂɸ¤òÅϤ·¤Þ¤¹¡£ to¤Ë¤Ï¥Ð¥Ã¥Õ¥¡¤Î(point-max)¤òÅϤ·¤Æ Áöºº¤ò¥Ð¥Ã¥Õ¥¡¤Î»²¾È²ÄǽÉôʬ¤Î¤ß¤ËÀ©¸Â¤·¡¢ topos¤È¤·¤Æline¤Ècol¤òÅϤ¹¡£ ¤Ä¤®¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤¹¡£

(defun coordinates-of-position (col line)
  (car (compute-motion (window-start)
                       '(0 . 0)
                       (point-max)
                       (cons col line)
                       (window-width)
                       (cons (window-hscroll) 0)
                       (selected-window))))

¥ß¥Ë¥Ð¥Ã¥Õ¥¡¤ËÂФ·¤Æcompute-motion¤ò»È¤¦¤È¤­¤Ë¤Ï¡¢ minibuffer-prompt-width¤ò»È¤Ã¤Æ ºÇ½é¤Î¥¹¥¯¥ê¡¼¥ó¹Ô¤ÎÀèÆ¬¤Î¿åÊ¿°ÌÃÖ¤òÆÀ¤ëɬÍפ¬¤¢¤ë¡£ see Minibuffer Misc¡£