Next: , Previous: , Up: Windows   [Contents][Index]


27.20 Textual Scrolling

テキスト的なスクロール(textual scrolling)とは、ウィンドウ内のテキストを上や下に移動することを意味します。これは、そのウィンドウのdisplay-startを変更することにより機能します。これは、ポイントを画面上に維持するために、window-pointの値も変更するかもしれません(Window Pointを参照)。

テキスト的なスクロールの基本的な関数は、(前方にスクロールする)scroll-upと、(後方にスクロールする)scroll-downです。これらの関数の名前における“up”と“down”は、バッファーテキストのそのウィンドウにたいする相対的な移動方向を示します。そのテキストが長いロール紙に記述されていて、スクロールコマンドはその上を上下に移動すると想像してみてください。つまり、バッファーの中央に注目している場合、繰り返してscroll-downを呼び出すと、最終的にはバッファーの先頭を目にすることになるでしょう。

残念なことに、これは時折混乱を招きます。なぜなら、ある人はこれを逆の慣習にもとづいて考える傾向があるからです。彼らは、テキストがその場所に留まりウィンドウが移動して、“down”コマンドによりバッファー終端に移動するだろうと想像します。この慣習は、そのようなコマンドが現代風のキーボード上のPageDownという名前のキーにバインドされているという事実と一致しています。

選択されたウィンドウ内で表示されているバッファーがカレントバッファーでない場合、(scroll-other-window以外の)テキスト的スクロール関数の結果は予測できません。Current Bufferを参照してください。

(たとえば大きなイメージがある等で)ウィンドウにウィンドウの高さより高い行が含まれる場合、スクロール関数は部分的に可視な行をスクロールするために、そのウィンドウの垂直スクロール位置を調整します。Lisp呼び出し側は、変数auto-window-vscrollnilにバインドすることにより、この機能を無効にできます(Vertical Scrollingを参照)。

Command: scroll-up &optional count

この関数は、選択されたウィンドウ内でcount行前方にスクロールする。

count負の場合は、かわりに後方へスクロールする。countnil(または省略)の場合、スクロールされる距離は、そのウィンドウのテキストエリアの高さより小さいnext-screen-context-linesとなる。

選択されたウィンドウがそれ以上スクロールできない場合、この関数はエラーをシグナルし、それ以外はnilをリターンする。

Command: scroll-down &optional count

この関数は、選択されたウィンドウ内でcount行後方にスクロールする。

count負の場合は、かわりに後方へスクロールする。それ以外の点では、これはscroll-upが行うのと同様に振る舞う。

Command: scroll-up-command &optional count

これはscroll-upと同様に振る舞うが、選択されたウィンドウがそれ以上スクロールできず、かつ変数scroll-error-top-bottomの値がtの場合は、かわりにそのバッファーの終端への移動を試みる。ポイントがすでに終端にある場合は、エラーをシグナルする。

Command: scroll-down-command &optional count

これはscroll-downと同様に振る舞うが、選択されたウィンドウがそれ以上スクロールできず、かつ変数scroll-error-top-bottomの値がtの場合は、かわりにそのバッファーの先頭への移動を試みる。ポイントがすでに先頭にある場合は、エラーをシグナルする。

Command: scroll-other-window &optional count

この関数は、他のウィンドウ内のテキストを上方にcount行スクロールする。countが負、またはnilの場合は、scroll-upのように処理される。

変数other-window-scroll-bufferにバッファーをセットすることにより、どのバッファーをスクロールするかを指定できる。そのバッファーが表示されていない場合、scroll-other-windowはそれを何らかのウィンドウに表示する、

選択されたウィンドウがミニバッファーのとき、次ウィンドウは通常はそのウィンドウの直上最左のウィンドウである。変数minibuffer-scroll-windowをセットすることにより、スクロールする別のウィンドウを指定できる。この変数は、ミニバッファー以外のウィンドウが選択されているときは効果がない。これが非nilで、かつミニバッファーが選択されているとき、これはother-window-scroll-bufferより優先される。Definition of minibuffer-scroll-windowを参照のこと。

ミニバッファーがアクティブのとき、選択されたウィンドウが下端右角のウィンドウなら、ミニバッファーが次ウィンドウになる。この場合、scroll-other-windowはミニバッファーのスクロールを試みる。ミニバッファーに含まれるのが1行だけの場合はどこにもスクロールできないので、エコーエリアに瞬時メッセージ‘End of buffer’を表示後、その行を再表示する。

Variable: other-window-scroll-buffer

この変数が非nilなら、それはscroll-other-windowがどのバッファーのウィンドウをスクロールするかを指定する。

User Option: scroll-margin

このオプションは、スクロールマージン(ポイントとウィンドウの上端/下端との最小行数)のサイズを指定する。ポイントがウィンドウの上端/下端からその行数になったとき、再表示は(可能なら)ポイントをそのマージン外、ウィンドウの中央付近に移動するために、テキストを自動的にスクロールする。

User Option: scroll-conservatively

この変数は、ポイントがスクリーン外(またはスクロールマージン内)に移動したとき、スクロールを自動的に行う方法を指定する。値が正の整数nの場合、再表示はそれが正しい表示範囲内にポイントを戻すなら、いずれかの方向にn行以下のテキストをスクロールする。この振る舞いは、保守的なスクロール(conservative scrolling)と呼ばれる。それ以外の場合、スクロールはscroll-up-aggressivelyscroll-down-aggressivelyのような他の変数の制御の下、通常の方法で発生する。

デフォルトの値は0で、これは保守的スクロールが発生し得ないことを意味する。

User Option: scroll-down-aggressively

この変数の値は、nilか、0から1までの小数fであること。これが小数なら、スクリーン上でポイントが置かれたとき、下にスクロールする場所を指定する。より正確には、ポイントがウィンドウstartより上という理由によりウィンドウが下にスクロールされるとき、新たなstart位置はウィンドウ上端からウィンドウ高さのfの箇所にポイントが置かれるように選択される。より大きなfでは、よりaggressive(積極的)にスクロールする。

ポイントを中央に配すのがその効果なので、値nilは.5と等価である。どのような方法によりセットされたときでも、この変数は自動的にバッファーローカルになる。

User Option: scroll-up-aggressively

scroll-up-aggressivelyと同様。値fは、ポイントがウィンドウ下端からどれほどの位置に置かれるべきかを指定する。つまり、scroll-up-aggressivelyと同様、大きな値dwはよりaggressive(積極的)になる。

User Option: scroll-step

この変数は、scroll-conservativelyのより古い変種である。違いは、値がnならn以下の値ではなく、正確にnだけのスクロールを許容することである。この機能は、scroll-marginとは共に機能しない。デフォルトは0。

User Option: scroll-preserve-screen-position

このオプションがtなら、スクロールによりポイントがウィンドウ外に移動したとき、Emacsは常に、ポイントがポイントの上下端ではなくカーソルがそのウィンドウ内の元の垂直位置に保たれるようポイントの調整を試みる。

値が非nilかつ非tの場合、たとえスクロールコマンドによりポイントがウィンドウ外に移動していなくとも、Emacsはカーソルが同じ垂直位置に保たれるよう、ポイントを調整する。

このオプションはシンボルプロパティscroll-commandが非nilであるような、すべてのスクロールコマンドに影響する。

User Option: next-screen-context-lines

この変数の値は、全画面スクロールされたときに残される継続される行数を指定する。たとえば、引数がnilscroll-upは、ウィンドウ上端ではなく下端に残される行数でスクロールする。デフォルト値は2

User Option: scroll-error-top-bottom

このオプションがnil(デフォルト)の場合、それ以上のスクロールが不可能な際に、scroll-up-commandscroll-down-commandは単にエラーをシグナルする。

値がtなら、これらのコマンドはかわりにポイントをバッファーの先頭か終端(スクロール方向に依存する)に移動する。ポイントがすでにその位置にある場合のみ、エラーをシグナルする。

Command: recenter &optional count

この関数は、選択されたウィンドウ内の指定された垂直位置にポイントを表示するように、ウィンドウ内のテキストをスクロールする。これはテキストに応じた“ポイント移動”を行わない。

countが非負の数の場合は、そのウィンドウ上端からcount行下にポイントを含む行を配す。countが負なら、ウィンドウ下端から上に数えるので、-1はそのウィンドウ内で最後の利用可能な行となる。

countnil(または非nilのリスト)の場合、recenterはポイントを含む行をウィンドウの中央に配す。countnilなら、この関数はrecenter-redisplayの値に応じて、フレームを再描画するかもしれない。

recenterがインタラクティブに呼び出されたときは、rawプレフィックス引数がcountとなる。したがって、プレフィックスとしてC-uをタイプするとcountに非nilC-u 4ではcountに4がセットされ、後者ではカレント行を上端から4行目にセットする。

引数0では、recenterはカレント行をウィンドウ上端に配す。コマンドrecenter-top-bottomは、これを達成するためにより簡便な方法を提供する。

User Option: recenter-redisplay

この変数が非nilの場合は、引数nilrecenterを呼び出すことにより、フレームを再描画する。デフォルト値はttyで、これはフレームがttyフレームのときだけフレームを再描画することを意味する。

Command: recenter-top-bottom &optional count

デフォルトではC-lにバインドされているこのコマンドは、recenterと同様に動作するが、引数なしで呼び出されたときの動作が異なる。この場合、連続して呼び出すことにより、変数recenter-positionsで定義されるサイクル順に応じてポイントを配する。

User Option: recenter-positions

これは、recenter-top-bottomを引数なしで呼び出したときの挙動を制御する。デフォルト値は(middle top bottom)で、これは引数なしでrecenter-top-bottomを連続して呼び出すと、ポイントをウィンドウの中央、上端、下端と巡回して配すことを意味する。