Next: Vertical Scrolling, Previous: Window Start and End, Up: Windows [Contents][Index]
テキスト的なスクロール(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-vscroll
をnil
にバインドすることにより、この機能を無効にできます(Vertical Scrollingを参照)。
この関数は、選択されたウィンドウ内でcount行前方にスクロールする。
count負の場合は、かわりに後方へスクロールする。countがnil
(または省略)の場合、スクロールされる距離は、そのウィンドウのテキストエリアの高さより小さいnext-screen-context-lines
となる。
選択されたウィンドウがそれ以上スクロールできない場合、この関数はエラーをシグナルし、それ以外はnil
をリターンする。
この関数は、選択されたウィンドウ内でcount行後方にスクロールする。
count負の場合は、かわりに後方へスクロールする。それ以外の点では、これはscroll-up
が行うのと同様に振る舞う。
これはscroll-up
と同様に振る舞うが、選択されたウィンドウがそれ以上スクロールできず、かつ変数scroll-error-top-bottom
の値がt
の場合は、かわりにそのバッファーの終端への移動を試みる。ポイントがすでに終端にある場合は、エラーをシグナルする。
これはscroll-down
と同様に振る舞うが、選択されたウィンドウがそれ以上スクロールできず、かつ変数scroll-error-top-bottom
の値がt
の場合は、かわりにそのバッファーの先頭への移動を試みる。ポイントがすでに先頭にある場合は、エラーをシグナルする。
この関数は、他のウィンドウ内のテキストを上方に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’を表示後、その行を再表示する。
この変数が非nil
なら、それはscroll-other-window
がどのバッファーのウィンドウをスクロールするかを指定する。
このオプションは、スクロールマージン(ポイントとウィンドウの上端/下端との最小行数)のサイズを指定する。ポイントがウィンドウの上端/下端からその行数になったとき、再表示は(可能なら)ポイントをそのマージン外、ウィンドウの中央付近に移動するために、テキストを自動的にスクロールする。
この変数は、ポイントがスクリーン外(またはスクロールマージン内)に移動したとき、スクロールを自動的に行う方法を指定する。値が正の整数nの場合、再表示はそれが正しい表示範囲内にポイントを戻すなら、いずれかの方向にn行以下のテキストをスクロールする。この振る舞いは、保守的なスクロール(conservative
scrolling)と呼ばれる。それ以外の場合、スクロールはscroll-up-aggressively
やscroll-down-aggressively
のような他の変数の制御の下、通常の方法で発生する。
デフォルトの値は0で、これは保守的スクロールが発生し得ないことを意味する。
この変数の値は、nil
か、0から1までの小数fであること。これが小数なら、スクリーン上でポイントが置かれたとき、下にスクロールする場所を指定する。より正確には、ポイントがウィンドウstartより上という理由によりウィンドウが下にスクロールされるとき、新たなstart位置はウィンドウ上端からウィンドウ高さのfの箇所にポイントが置かれるように選択される。より大きなfでは、よりaggressive(積極的)にスクロールする。
ポイントを中央に配すのがその効果なので、値nil
は.5と等価である。どのような方法によりセットされたときでも、この変数は自動的にバッファーローカルになる。
scroll-up-aggressively
と同様。値fは、ポイントがウィンドウ下端からどれほどの位置に置かれるべきかを指定する。つまり、scroll-up-aggressively
と同様、大きな値dwはよりaggressive(積極的)になる。
この変数は、scroll-conservatively
のより古い変種である。違いは、値がnならn以下の値ではなく、正確にnだけのスクロールを許容することである。この機能は、scroll-margin
とは共に機能しない。デフォルトは0。
このオプションがt
なら、スクロールによりポイントがウィンドウ外に移動したとき、Emacsは常に、ポイントがポイントの上下端ではなくカーソルがそのウィンドウ内の元の垂直位置に保たれるようポイントの調整を試みる。
値が非nil
かつ非t
の場合、たとえスクロールコマンドによりポイントがウィンドウ外に移動していなくとも、Emacsはカーソルが同じ垂直位置に保たれるよう、ポイントを調整する。
このオプションはシンボルプロパティscroll-command
が非nil
であるような、すべてのスクロールコマンドに影響する。
この変数の値は、全画面スクロールされたときに残される継続される行数を指定する。たとえば、引数がnil
のscroll-up
は、ウィンドウ上端ではなく下端に残される行数でスクロールする。デフォルト値は2
。
このオプションがnil
(デフォルト)の場合、それ以上のスクロールが不可能な際に、scroll-up-command
とscroll-down-command
は単にエラーをシグナルする。
値がt
なら、これらのコマンドはかわりにポイントをバッファーの先頭か終端(スクロール方向に依存する)に移動する。ポイントがすでにその位置にある場合のみ、エラーをシグナルする。
この関数は、選択されたウィンドウ内の指定された垂直位置にポイントを表示するように、ウィンドウ内のテキストをスクロールする。これはテキストに応じた“ポイント移動”を行わない。
countが非負の数の場合は、そのウィンドウ上端からcount行下にポイントを含む行を配す。countが負なら、ウィンドウ下端から上に数えるので、-1はそのウィンドウ内で最後の利用可能な行となる。
countがnil
(または非nil
のリスト)の場合、recenter
はポイントを含む行をウィンドウの中央に配す。countがnil
なら、この関数はrecenter-redisplay
の値に応じて、フレームを再描画するかもしれない。
recenter
がインタラクティブに呼び出されたときは、rawプレフィックス引数がcountとなる。したがって、プレフィックスとしてC-uをタイプするとcountに非nil
、C-u
4ではcountに4がセットされ、後者ではカレント行を上端から4行目にセットする。
引数0では、recenter
はカレント行をウィンドウ上端に配す。コマンドrecenter-top-bottom
は、これを達成するためにより簡便な方法を提供する。
この変数が非nil
の場合は、引数nil
でrecenter
を呼び出すことにより、フレームを再描画する。デフォルト値はtty
で、これはフレームがttyフレームのときだけフレームを再描画することを意味する。
デフォルトではC-lにバインドされているこのコマンドは、recenter
と同様に動作するが、引数なしで呼び出されたときの動作が異なる。この場合、連続して呼び出すことにより、変数recenter-positions
で定義されるサイクル順に応じてポイントを配する。
これは、recenter-top-bottom
を引数なしで呼び出したときの挙動を制御する。デフォルト値は(middle top
bottom)
で、これは引数なしでrecenter-top-bottom
を連続して呼び出すと、ポイントをウィンドウの中央、上端、下端と巡回して配すことを意味する。