バッファーはその左側と右側にディスプレイマージン(display
margins)と呼ばれるブランクエリアをもつことができます。それらのエリア内には通常はテキストが出現することはありませんが、display
プロパティを使用してディスプレイマージン内に何かを配置することができます。現在のところマージン内のテキストやイメージをマウスセンシティブにする方法はありません。
マージン内に何かを表示するにはテキストのdisplay
プロパティのマージンディスプレイ仕様(margin display
specification)で指定します。これは配置したテキストが表示されないことを意味する置換ディスプレイ仕様です。マージン表示は表示されますがそのテキストは表示されません。
マージンディスプレイ仕様とは((margin right-margin) spec)
や((margin
left-margin)
spec)
のようなものです。ここでspecはマージン内に何を表示するかを告げる別のディスプレイ仕様です。典型的にはこれは表示するテキスト文字列やイメージディスクリプタです。
特定のバッファーテキストに割り当てられたマージンに何かを表示するためには、そのテキストにbefore-string
プロパティをもつオーバーレイをput、before-stringのコンテンツとしてマージンディスプレイ仕様をputします。
マージン内に表示する文字列がフェイスを指定しなければ、テキストエリア内に表示される文字列に準じたいくつかの規則と優先度によりフェイスが決定されることに注意してください(フェイスの表示を参照)。これが望ましくないマージンへのフェイスの“漏洩”をもたらすようなら、文字列が文字列用に明示的なフェイスを確実にもつようにしてください。
ディスプレイマージンが何かを表示可能になる前に、それらに非0の幅を与えなければなりません。これを行う通常の方法は以下の変数をセットする方法です:
この変数は左マージンの幅を文字セル(別名は“列”)単位で指定する。これ、すべてのバッファーでバッファーローカルである。値nil
は左マージンエリアなしを意味する。
この変数は右マージンの幅を文字セル単位で指定する。これはすべてのバッファーでバッファーローカルである。値nil
は右マージンエリアなしを意味する。
これらの変数をセットしてもウィンドウには即座には反映されません。これらの変数はウィンドウ内に新たなバッファーを表示する際にチェックされます。したがってset-window-buffer
を呼び出すことにより変更を反映することができます。これらの変数を左右のマージンのカレント幅の判定を試みるために使用してはいけません。かわりに関数window-margins
を使用してください。
マージン幅を即座にセットすることもできます。
この関数はウィンドウwindowのマージン幅、文字セル単位で指定する。引数leftは左マージン、rightは右マージン(デフォルトは0
)を制御する。
期待する幅のマージンを収容するのにwindowが十分大きくなければ、windowのマージンは未変更のままになる。
ここで指定した値はwindowにたいする引数keep-marginsがnil
か省略したset-window-buffer
(バッファーとウィンドウを参照)の呼び出しにより後からオーバーライドされるかもしれない。
この関数はwindowの左マージンと右マージンの幅を(left . right)
という形式のコンスセルでリターンする。2つのマージンエリアのいずれか一方が存在しなければ幅はnil
でリターンされる。2つのマージンがどちらも存在しなければ、この関数は(nil)
をリターンする。windowがnil
なら選択されたウィンドウが使用される。