Previous: , Up: displayプロパティ   [Contents][Index]


41.16.5 マージン内への表示

バッファーはその左側と右側にディスプレイマージン(display margins)と呼ばれるブランクエリアをもつことができます。それらのエリア内には通常はテキストが出現することはありませんが、displayプロパティを使用してディスプレイマージン内に何かを配置することができます。現在のところマージン内のテキストやイメージをマウスセンシティブにする方法はありません。

マージン内に何かを表示するにはテキストのdisplayプロパティのマージンディスプレイ仕様(margin display specification)で指定します。これは配置したテキストが表示されないことを意味する置換ディスプレイ仕様です。マージン表示は表示されますがそのテキストは表示されません。

マージンディスプレイ仕様とは((margin right-margin) spec)((margin left-margin) spec)のようなものです。ここでspecはマージン内に何を表示するかを告げる別のディスプレイ仕様です。典型的にはこれは表示するテキスト文字列やイメージディスクリプタです。

特定のバッファーテキストに割り当てられたマージンに何かを表示するためには、そのテキストにbefore-stringプロパティをもつオーバーレイをput、before-stringのコンテンツとしてマージンディスプレイ仕様をputします。

マージン内に表示する文字列がフェイスを指定しなければ、テキストエリア内に表示される文字列に準じたいくつかの規則と優先度によりフェイスが決定されることに注意してください(フェイスの表示を参照)。これが望ましくないマージンへのフェイスの“漏洩”をもたらすようなら、文字列が文字列用に明示的なフェイスを確実にもつようにしてください。

ディスプレイマージンが何かを表示可能になる前に、それらに非0の幅を与えなければなりません。これを行う通常の方法は以下の変数をセットする方法です:

Variable: left-margin-width

この変数は左マージンの幅を文字セル(別名は“列”)単位で指定する。これ、すべてのバッファーでバッファーローカルである。値nilは左マージンエリアなしを意味する。

Variable: right-margin-width

この変数は右マージンの幅を文字セル単位で指定する。これはすべてのバッファーでバッファーローカルである。値nilは右マージンエリアなしを意味する。

これらの変数をセットしてもウィンドウには即座には反映されません。これらの変数はウィンドウ内に新たなバッファーを表示する際にチェックされます。したがってset-window-bufferを呼び出すことにより変更を反映することができます。これらの変数を左右のマージンのカレント幅の判定を試みるために使用してはいけません。かわりに関数window-marginsを使用してください。

マージン幅を即座にセットすることもできます。

Function: set-window-margins window left &optional right

この関数はウィンドウwindowのマージン幅、文字セル単位で指定する。引数leftは左マージン、rightは右マージン(デフォルトは0)を制御する。

期待する幅のマージンを収容するのにwindowが十分大きくなければ、windowのマージンは未変更のままになる。

ここで指定した値はwindowにたいする引数keep-marginsnilか省略したset-window-buffer (バッファーとウィンドウを参照)の呼び出しにより後からオーバーライドされるかもしれない。

Function: window-margins &optional window

この関数はwindowの左マージンと右マージンの幅を(left . right)という形式のコンスセルでリターンする。2つのマージンエリアのいずれか一方が存在しなければ幅はnilでリターンされる。2つのマージンがどちらも存在しなければ、この関数は(nil)をリターンする。windownilなら選択されたウィンドウが使用される。