Next: , Previous: Buffer End Motion, Up: Motion


29.2.4 テキスト行単位の移動

テキスト行とは、改行文字で区切られたバッファの部分です。 改行文字はまえの行に属するとみなします。 最初のテキスト行がバッファの先頭から始まり、 バッファの末尾の文字が改行であってもなくても、 最後のテキスト行はバッファの末尾で終ります。 バッファをテキスト行に分割することは、 ウィンドウの幅、表示上の行の継続、タブやコントロール文字の表示方法には 影響されません。

— コマンド: goto-line line

この関数は、バッファの先頭を1行目と数えてline行目の先頭に ポイントを移動する。 lineが1未満であると、バッファの先頭へポイントを移動する。 lineがバッファ内の行数より大きいと、 バッファの末尾、つまり、バッファの最後の行の末尾にポイントを移動する。 これは、goto-lineが行頭にポイントを移動しない唯一の場面である。

ナロイングしているときでも、 lineはバッファの先頭から数えるが、 参照可能部分の外側にはポイントは移動しない。 したがって、行番号が参照不可な部分を指定するときには、 goto-lineは参照可能部分の先頭か末尾へポイントを移動する。

goto-lineの戻り値は、 (ナロイングを考慮せずにバッファ全体でみた) lineと実際のポイントの移動先の行の行番号との差である。 したがって、指定した行に達するまえにバッファの末尾に出会うと値は正である。 バッファの実際の末尾にではなく参照可能部分の末尾に出会うと値は0である。

対話的に呼び出すと、 前置引数があればlineは数値前置引数である。 さもなければlineをミニバッファから読む。

— コマンド: beginning-of-line &optional count

この関数は、現在行の先頭にポイントを移動する。 引数countnilでも1でもないと、 count−1行だけ前方へ移動してから行頭に移動する。

バッファ(ナロイングしているときには参照可能部分)の末尾に達すると ポイントをそこへ移動する。 エラーは通知しない。

— コマンド: end-of-line &optional count

この関数は、現在行の末尾にポイントを移動する。 引数countnilでも1でもないと、 count−1行だけ前方へ移動してから行末に移動する。

バッファ(ナロイングしているときには参照可能部分)の末尾に達すると ポイントをそこへ移動する。 エラーは通知しない。

— コマンド: forward-line &optional count

この関数は、count行前方の行頭にポイントを移動する。 countが負であると、 −count行後方の行頭にポイントを移動する。 countが0であると、現在行の先頭にポイントを移動する。

指定行数だけ移動するまえに バッファ(ナロイングしているときには参照可能部分)の先頭や末尾に達すると ポイントをそこへ移動する。 エラーは通知しない。

forward-lineは、 countと実際に移動した行数の差を返す。 3行しかないバッファの先頭で5行前方へ移動しようとすると、 ポイントは最後の行の末尾で止まり、値は2になる。

対話的に呼び出すと、countは数値前置引数である。

— Function: count-lines start end

この関数は、カレントバッファのstartendの あいだの部分にある行の行数を返す。 startendが等しければ0を返す。 さもなければ、startendが同じ行にある場合であっても 少なくとも1を返す。 というのは、それらのあいだのテキストは孤立しているとみなされ、 空でなければ少なくとも1行はあるはずだからである。

count-linesの使用例を示す。

          (defun current-line ()
            "Return the vertical position of point..."
            (+ (count-lines (window-start) (point))
               (if (= (current-column) 0) 1 0)
               -1))

Near Pointの関数bolpeolpも参照してください。 これらの関数はポイントを移動しませんが、ポイントがすでに行の先頭や末尾に あるかどうかを検査します。