本節では、ウィンドウに追加情報を関連付けるために使用できるウィンドウパラメータについて説明します。
この関数は、parameter に対する window
の値を返します。window のデフォルト値は選択中のウィンドウです。window に parameter の設定がない場合、この関数は
nil を返します。
この関数は、window のすべてのパラメータとその値を返します。window のデフォルト値は選択中のウィンドウです。戻り値は、nil か、あるいは要素が (parameter . value)
の形式を持つ連想リストのいずれかとなります。
この関数は、windowのparameterの値をvalueに設定し、valueを返します。windowのデフォルト値は、選択中のウィンドウです。
デフォルトでは、ウィンドウ構成やウィンドウの状態(ウィンドウ構成を参照)を保存・復元する関数は、ウィンドウパラメータを考慮しません。つまり、save-window-excursion
の本体内でパラメータの値を変更しても、そのマクロを抜けた際に以前の値が復元されることはありません。また、window-state-get で事前に保存したウィンドウの状態を window-state-put で復元する場合、クローンされたすべてのウィンドウのパラメータが nil にリセットされます。以下の変数を使用すると、この標準的な動作を上書きできます:
この変数は、どのパラメータが current-window-configuration と
window-state-get によって保存され、その後 set-window-configuration と window-state-put によって復元されるかを指定するアリストです。ウィンドウ設定を参照してください。
このalistの各エントリのCARは、パラメータを指定するシンボルです。CDRは、以下のいずれかである必要があります:
nilこの値は、パラメータが window-state-get でも current-window-configuration でも保存されないことを意味します。
tこの値は、パラメータが current-window-configuration および(writable 引数が nil である場合に限り)window-state-get によって保存されることを指定します。
writableこれは、当該パラメータが current-window-configuration と window-state-get
の両方によって無条件に保存されることを意味します。この値は、値に読み取り構文を持たないパラメータには使用しないでください。そうしないと、別のセッションで
window-state-put を呼び出した際に invalid-read-syntax エラーで失敗する可能性があります。
一部の関数(特に delete-window、delete-other-windows、split-window)は、window
引数で指定されたウィンドウに、関数名と同名のパラメータが存在する場合、特殊な動作をすることがあります。このような特殊な動作は、以下の変数を nil 以外の値にバインドすることで上書きできます:
この変数が nil
以外の場合、一部の標準関数はウィンドウパラメータを処理しません。現在この影響を受ける関数は、split-window、delete-window、delete-other-windows、および other-window です。
アプリケーションは、これらの関数を呼び出す前後で、この変数をnil以外の値にバインドすることができます。その場合、当該関数を抜ける際に、関連するすべてのウィンドウのパラメータを正しく設定する責任は、全面的にアプリケーションが負うものとします。
現在、ウィンドウ管理コードでは以下のパラメータが使用されています。
delete-window ¶このパラメータは、delete-window の実行に影響します(ウィンドウの削除を参照)。
delete-other-windows
¶このパラメータは、delete-other-windows の実行に影響します(ウィンドウの削除を参照)。
no-delete-other-windows
¶このパラメータは、delete-other-windows
によってウィンドウが削除不可であることを示します(ウィンドウの削除を参照)。
split-window ¶このパラメータは split-window の実行に影響します(ウィンドウの分割を参照)。
other-window ¶このパラメータは other-window の実行に影響します(ウィンドウの循環順序 を参照)。
no-other-window
¶このパラメータは、ウィンドウを other-window で選択不可としてマークします(ウィンドウの循環順序を参照)。ツールチップウィンドウの場合、デフォルトでは
t となります(Emacsウィンドウの基本概念を参照)。特定のウィンドウに適用されるかどうかを確認するには、window-no-other-p を使用してください(ウィンドウの循環順序を参照)。
clone-of ¶このパラメータは、本ウィンドウがクローン元となったウィンドウを指定します。デフォルトでは永続的に保持されるため、window-state-get によって保存され、window-state-put によってインストールされます(ウィンドウ設定を参照)。
window-preserved-size
¶このパラメータは、バッファ、nil が垂直方向、t
が水平方向を示す方向、およびピクセル単位のサイズを指定します。このウィンドウに指定されたバッファが表示され、かつ指定された方向のサイズがこのパラメータで指定されたサイズと一致する場合、Emacs
はその方向におけるこのウィンドウのサイズを維持しようとします。このパラメータは、関数 window-preserve-size によって設定および更新されます(ウィンドウサイズの維持 を参照)。
quit-restorequit-restore-prev ¶これらのパラメータは、バッファ表示関数(バッファ表示用のウィンドウの選択を参照)によって設定され、quit-restore-window(ウィンドウの終了を参照)によって参照されます。これらは4つの要素からなるリストであり、詳細はウィンドウの終了におけるquit-restore-windowの説明を参照してください。
window-side ¶window-slotこれらのパラメータは、サイドウィンドウの実装に内部的に使用されます(サイドウィンドウを参照)。
window-atom ¶このパラメータは、アトミックウィンドウの実装に内部的に使用されます。アトミックウィンドウを参照してください。
mode-line-format
¶このパラメータは、このウィンドウが表示されるたびに、当該ウィンドウのバッファにあるバッファローカル変数 mode-line-format(モードラインの基本を参照)の値を置き換えます。記号 none
は、このウィンドウのモードラインの表示を抑制することを意味します。このバッファを表示している他のウィンドウにおけるモードラインの表示および内容には影響しません。
header-line-format
¶このパラメータは、このウィンドウが表示されるたびに、当該ウィンドウのバッファにあるバッファローカル変数 header-line-format(モードラインの基本を参照)の値を置き換えます。記号 none
は、このウィンドウのヘッダー行の表示を抑制することを意味します。このバッファを表示している他のウィンドウにおけるヘッダー行の表示および内容には影響しません。
tab-line-format
¶このパラメータは、このウィンドウが表示されるたびに、当該ウィンドウのバッファにおけるバッファローカル変数 tab-line-format(モードラインの基本を参照)の値を置き換えます。記号 none
は、このウィンドウのタブラインの表示を抑制することを意味します。このバッファを表示している他のウィンドウにおけるタブラインの表示および内容には影響しません。
min-margins ¶このパラメータの値はコンスセルであり、そのCARおよびCDRがnilでない場合、このウィンドウの左右マージンの最小値(列単位)を指定します(マージン内での表示を参照)。これらの値が指定されている場合、Emacsはウィンドウを水平方向に分割または縮小できるかどうかを判断する際、実際のマージン幅ではなくこれらの値を使用します。
Emacsは、ウィンドウを分割またはリサイズした後、そのマージンを自動的に調整することはありません。このパラメータを設定するアプリケーション側が、このウィンドウのマージンに加え、分割によって当該ウィンドウのマージンを継承した新しいウィンドウのマージンを調整する責任を単独で負います。この目的には、window-configuration-change-hookとwindow-size-change-functionsの両方(ウィンドウのスクロールおよび変更用フックを参照)を使用する必要があります。
このパラメータは、ウィンドウ内でバッファテキストを中央揃えにするために大きなマージンを使用するアプリケーションをサポートするため、Emacs バージョン 25.1 で導入されました。十分な注意を払った上で、こうしたアプリケーションのみが使用すべきです。今後の Emacs バージョンでは、より改良された解決策に置き換えられる可能性があります。