[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
フレーム(frame)は一つ以上のEmacsのウィンドウを含む画面上の長方形 状のものです。フレームには最初は一つのウィンドウ(と多分ミニバッファ)しか ありませんが、縦方向にも横方向にも分割することができます。
Emacsがテキスト専用端末で起動されたときは、一つの端末フレーム (terminal frame)で立ち上がります。追加のフレームを作成したときは、Emacs は同時にはただ一つのフレームだけを、当たり前ですが、端末の画面に表示しま す。
EmacsがXサーバーと直接やりとりするときは、端末フレームの代わりに一つの Xウインドウ・フレーム(X Window frame)で立ち上がります。この場合は 同時に複数のXウインドウ・フレームをそれ自身のXウインドウに表示できます。
この述語はobjectがフレームのときにt
を、それ以外のとき
はnil
を返します。
26.1 フレームの作成 | ||
26.2 複数のディスプレイ | 別のXディスプレイ上のフレームの作成。 | |
26.3 フレーム・パラメータ | ||
26.4 フレーム・タイトル | ||
26.5 フレームの消去 | ||
26.6 全てのフレームの探索 | ||
26.7 フレームとウインドウ | ||
26.8 ミニバッファとフレーム | ||
26.9 インプット・フォーカス | ||
26.10 フレームの可視性 | ||
26.11 フレームの上昇/下降 | フレームを上昇させるとほかのXのウインドウ は隠される。下降させるとほかのに隠される。 | |
26.12 フレーム構成 | ||
26.13 マウスの追跡 | ||
26.14 マウスの位置 | ||
26.15 ポップアップ・メニュー | ||
26.16 ダイアログ・ボックス | yesかnoを聞くための箱を表示する。 | |
26.17 ポインタの形状 | ||
26.18 Xセレクション | ||
26.19 色の名前 | ||
26.20 Xのリソース | サーバーからリソースの値を得る。 | |
26.21 Xサーバーに関するデータ |
関連する情報はSee section Emacsの表示。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
新しいフレームを作るには、make-frame
関数を呼び出します。
この関数は新しいフレームを作ります。Xを使っていればXウインドウフレームを、 そうでなければ端末フレームを作ります。
引数はフレームのパラメータを指定するalistです。alistによって指定さ
れないパラメータはdefault-frame-alist
変数の値が用いられます。これ
らで指定されていないパラメータは、標準のX defaultsファイルかXリソースが
デフォルトになります。
どのパラメータが指定できるかは、原則としてEmacsがどのようなウインドウ・ システムにフレームを表示しているかによります。指定可能な個々のパラメータ についての説明は、See section Xウインドウ・フレーム・パラメータ。
make-frame
によって実際にフレームが作られる前に起動される正規フッ
クです。
make-frame
によってフレームが作られたあとに起動される正規フックです。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
一つのEmacsは一つ以上のXウインドウ・ディスプレイとやりとりすることができ
ます。起動時には、Emacsは一つのディスプレイだけを使います。そのディスプ
レイは、DISPLAY
環境変数や`--display'オプションで指定されます
(see (emacs)Initial Options section `Initial Options' in The GNU Emacs Manual)。別のディスプレ
イに接続するにはコマンドmake-frame-on-display
を使うか、フレームを
作成するときにdisplay
フレーム・パラメータを指定してください。
EmacsはそれぞれのXサーバーを独立した端末として扱います。それぞれに選択さ
れたフレームとミニバッファがあります。いくつかのLisp変数は現在の端末(す
なわち現在の選択されたフレームに対応する端末)にローカルな値を持っていま
す。default-minibuffer-frame
、defining-kbd-macro
、
last-kbd-macro
、multiple-frames
、system-key-alist
が
そうです。これらの変数は常に端末ローカルでバッファローカルにはなり得ま
せん。
一つのXサーバーは一つ以上の画面を扱うことができます。ディスプレイの名前 の部分は与えられたサーバーの画面番号を指定しています。一つのサーバーに属 する二つの画面を使うときは、Emacsはそれらの名前が似通っていることによりそ れらが一つのキーボードを共有していることを知り、それらを一つの端末として 扱います。
これはディスプレイdisplay上に新しいフレームを作ります。ほかのパラメー
タはparametersから得ます。display引数を別にすれば、
make-frame
と同様です(see section フレームの作成)。
これはEmacsが接続しているXディスプレイを示すリストを返します。リストの要 素は文字列で、それぞれがディスプレイの名前です。
この関数はXディスプレイdisplayに接続します。そのディスプレイ上にフ レームを作ることはしませんが、そのディスプレイとの通信が確立されているか チェックすることはできます。
オプション引数resource-stringがnil
でなければ、それは
`.Xresources'ファイルと同じフォーマットのリソース名と値の文字列です。
指定した値はXサーバー自身に記録されている値に優先します。これらはこのディ
スプレイ上に作られる全てのEmacsのフレームに適用されます。これはこの文字
列の例です:
"*BorderWidth: 3\n*InternalBorder: 2\n" |
See section Xのリソース。
この関数はディスプレイdisplayとの接続を閉じます。これを実行する前 に、まずそのディスプレイ上に開かれている全てのフレームを削除しなくてはい けません(see section フレームの消去)。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
フレームには、見栄えや振舞いを制御するためのたくさんのパラメータがありま す。フレームがどんなパラメータを持っているかは、どんな表示機構を使ってい るかによって決まります。
フレーム・パラメータはウインドウシステムのためにあります。端末フレームもい
くつかパラメータを持っていますがほとんどが互換性のためのもので、高さ、幅、
buffer-predicate
パラメータだけが本当に意味があります。
26.3.1 フレーム・パラメータへのアクセス | ||
26.3.2 初期フレーム・パラメータ | ||
26.3.3 Xウインドウ・フレーム・パラメータ | フレーム・パラーメータの表。 | |
26.3.4 フレームのサイズと位置 |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
これらの関数はフレームのパラメータの値を得たり、変更するものです。
関数frame-parameters
はframeのすべてのパラメータとその値から
なるalistを返します。
この関数はフレームframeのパラメータをalistの要素に基づいて変
更します。alistのそれぞれの要素は(parm . value)
という形式です。parmはパラメータのシンボル名です。alistに存
在しないパラメータの値は変更されません。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
`.emacs'ファイルでinitial-frame-alist
をセットすることで、初
期起動フレームのパラメータを指定することができます。
この変数の値はパラメータのalistで、その値は初期Xウインドウ・フレームが作ら れるときに使われます。それぞれの要素の形式は次のようになっています:
(parameter . value) |
Emacsは初期フレームをあなたの`~/.emacs'ファイルを読む前に作ります。
そのファイルを読んだあとでEmacsはinitial-frame-alist
をチェックし、
すでに作った初期フレームの値と違う値のパラメータを適用します。
これらの設定にフレームの位置や大きさの指定が含まれている場合、フレームは 間違った大きさや間違った位置に現れ、次に指定した大きさや位置に変更される ことになります。これが気になるなら、Xリソースで同じように位置や大きさを 指定することができます。これはフレームが作られる前に適用されます。 See (emacs)Resources X section `X Resources' in The GNU Emacs Manual。
一般的にXリソースは全てのフレームに適用されます。あるXリソースを初期フレー
ムだけに指定して、その後のフレームには適用したくない場合は、つぎのよ
うにしてください。その後のフレームではそのXリソースを無効にするために
default-frame-alist
でパラメータを指定し、次にそれらが初期フレーム
に影響しないように同じパラメータをinitial-frame-alist
でXリソース
に一致する値に指定します。
これらのパラメータが独立したミニバッファ専用フレームを(minibuffer .
nil)
で指定していて、それがまだ作られていない場合には、Emacsはそれを作り
ます。
この変数の値はパラメータのalistで、その値は初期ミニバッファ専用フレームが 作られるときに使われます。ミニバッファ専用フレームはmain初期フレームのパラ メータによって作られるかどうか決まります。
これは初期フレームの後のEmacsフレームのフレーム・パラメータのデフォルト値 を指定するalistです。
表示に用いるウィンドウの選択のspecial-display-frame-alist
も見てください。
Emacsを起動するときにウインドウの見栄えを指定するオプションを使うと、
default-frame-alist
に要素を追加することにもなります。ただし、
`-geometry'オプションだけは、その指定する位置が
initial-frame-alist
に追加されます。See (emacs)Command Arguments section `Command Arguments' in The GNU Emacs Manual。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
フレームがどんなパラメータを持っているかは、どんな表示機構を使っているか
によって決まります。以下はXウインドウ・フレームのパラメータの表です。この
中でname
、height
、width
、buffer-predicate
は
非Xフレームでも有効です。
name
フレームの名前です。ほとんどのウインドウ・マネージャはフレームの名前をそ のフレームの上の縁に表示します。名前を指定しない場合やフレームが複数 ある場合には、フレーム中の選択されたウインドウに表示されているバッファを 元にした名前がつきます。
フレームを作るときに明示的にフレームの名前を指定した場合は、そのフレームの Xリソースを探す時にもその名前が(Emacsの実行形式の名前のかわりに)用いられ ます。
display
このフレームが開かれているディスプレイです。これはDISPLAY
環境変数
のような形式"host:dpy.screen"
の文字列でなくては
なりません。
left
ピクセルで表した画面の左端から見たウインドウの左端の画面上の位置です。値
は正の数posか、もしくは負のpos値も指定できる形式(+
pos)
のリストのどちらでも構いません。
負の数-posや形式(- pos)
のリストは、実は画面の
右端から見たウインドウの右端の位置を指定します。posの正の値は左に
向かって数えます。パラメータが負の整数-posならposは正
になります!
top
ピクセルで表した画面の上端から見たウインドウの上端の画面上の位置です。値
は正の数posか、もしくは負のpos値も指定できる形式(+
pos)
のリストのどちらでも構いません。
負の数-posや形式(- pos)
のリストは、実は画面の
下端から見たウインドウの下端の位置を指定します。posの正の値は上に
向かって数えます。パラメータが負の整数-posならposは正
になります!
icon-left
画面の左端からピクセルで数えたフレームのアイコンの左端の画面上の 位置です。フレームがアイコン化されたときに効果をあらわします。
icon-top
画面の上端からピクセルで数えたフレームのアイコンの上端の画面上の 位置です。フレームがアイコン化されたときに効果をあらわします。
user-position
フレームの画面上の位置がユーザに明示的に(たとえば`geometry'オプション
などで)指定されたときに非nil
になります。自動的に非nil
にな
ることはありません。left
とtop
パラメータに加えてこのパラメー
タを指定するのはmake-frame
を呼び出すLispプログラムの責任です。
(25)
height
文字数で表したフレーム内部の高さです。(高さをピクセル単位で得るには
frame-pixel-height
を呼び出してください。フレームのサイズと位置参
照。)
width
文字数で表したフレーム内部の幅です。(幅をピクセル単位で得るには
frame-pixel-width
を呼び出してください。フレームのサイズと位置参
照。)
window-id
フレームのXウインドウのID番号です。
minibuffer
このフレームがそれ自身のミニバッファをもつかどうかを示します。値が
t
のときはミニバッファを持ち、nil
のときは持ちません。
only
のときはこのフレームはミニバッファそのものになります。値が(別
のフレームにある)ミニバッファ・ウインドウのときには、新しいフレームはそ
のミニバッファを使います。
buffer-predicate
このフレームのバッファ述語(buffer-predicate)関数です。これがnil
で
なければ、関数other-buffer
はどのバッファを候補にするかを決めるの
に(選択されたフレームの)この述語を使います。この述語はそれぞれのバッファ
ごとにそれを引数として呼び出されます。この述語が非nil
を返すとその
バッファは候補になります。
font
フレームの中でテキストを表示するフォントの名前です。これは文字列です。
auto-raise
フレームが選択されたときに上昇(raise)するかどうかを示します(非nil
の
とき上昇します)。
auto-lower
フレームが選択されなくなったときに下降(lower)するかどうかを示します(非
nil
のとき下降します)。
vertical-scroll-bars
フレームに縦方向のスクロール・バーを表示するかどうかを示します(非
nil
のとき表示します)。
horizontal-scroll-bars
フレームに横方向のスクロール・バーを表示するかどうかを示します(非
nil
のとき表示します)。(横方向のスクロール・バーはまだ実装されてい
ません。)
scroll-bar-width
ピクセルで表した縦方向のスクロール・バーの幅です。
icon-type
このフレームがアイコン化されたときに表示するアイコンのタイプを示します。
値が文字列なら、アイコンに使用するビットマップが入っているファイルを指定
します。それ以外の全ての非nil
値はデフォルトのビットマップ・アイコ
ン(ウシカモシカ(gnu)の絵)の使用を指定します。nil
はテキスト・アイ
コンを指定します。
icon-name
このフレームがアイコン化されたときに使う名前です。これがnil
ならフ
レームのタイトルを使います。
foreground-color
文字のイメージに使われる色を示します。これはXサーバーで定義されている有 効な色の名前を表す文字列です。
background-color
文字の背景に使われる色を示します。
mouse-color
マウス・ポインタの色を示します。
cursor-color
ポイントを表すカーソルの色を示します。
border-color
フレームの境界の色を示します。
cursor-type
カーソルを表示する方法を示します。認識される値はbar
とbox
と
(bar . width)
です。シンボルbox
はよくあるやり方で、ポ
イントの後の文字に黒い箱を重ね書きします。これがデフォルトです。シンボル
bar
はカーソルとして文字の間に縦棒を置きます。(bar
. width)
はwidthピクセル幅の棒を指定します。
border-width
ウインドウの境界の幅をピクセルで示します。
internal-border-width
テキストと境界の間隔をピクセルで示します。
unsplittable
非nil
の場合、このフレームのウインドウは自動的に分割されません。
visibility
フレームの可視性の状態を示します。三つの値をとり得ます。nil
は不可視、t
は可視、icon
はアイコン化されています。
See section フレームの可視性。
menu-bar-lines
フレームの上部のメニューバーのために割り当てる行数を示します。デフォルト は1です。See section メニュー・バー。(X toolkitを使うバージョンのEmacsでは、メニュー・ バーは1行だけです。指定された数は0より大きいかどうかだけが問題になります。)
parent-id
このフレームの親になるべきウインドウのXウインドウにおけるID番号です。こ れを指定すると、ある別のアプリケーションのウインドウの中でEmacsのウイン ドウを開くことができます。(これが実装されているかどうかははっきりしませ ん。実際に試してちゃんと動くかどうか確かめてください。)
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
フレーム・パラメータleft
、top
、height
、width
を使うとフレームのサイズや位置を変更したり読み出したりすることができます。
指定されない位置やサイズのパラメータは、ウインドウ・マネージャがそれぞれ
の流儀で決めてくれます。
サイズや位置を扱うための特別な機能がいくつかあります:
この関数は、frameの左上の角の位置をleftとtopにセットし ます。これらの引数はピクセル単位で画面の左上の角から数えます。負のパラメー タ値は画面の左上の角から上または右に向かって数えます。
これらの関数は、frameの高さと幅を文字数単位で返します。frame を省略した場合は選択されているフレームを使用します。
これらの関数はframeの高さと幅をピクセル単位で返します。frame を省略した場合は選択されているフレームを使用します。
これらの関数はframeの中の文字の高さと幅をピクセル単位で返します。 この値は選択したフォントに依存します。frameを省略した場合は選択さ れているフレームを使用します。
この関数はframeのサイズを、colsとrowsで指定される文字 数単位の幅と高さにセットします。
ピクセル単位でサイズをセットするには、値をframe-char-height
と
frame-char-width
を使って文字数単位に変換してください。
マルチ・フレームをサポートしていないバージョンのEmacsで画面の高さと幅を
指定するのに使われた、set-screen-height
とset-screen-width
は旧式の関数ですがまだ使えます。これらの関数は選択されたフレームに対して
働きます。See section 画面サイズ。
x-parse-geometry
関数は標準的なXウインドウのgeometry文字列を
make-frame
の引数の一部として使うことのできるalistに変換します。
alistはgeomで指定されるパラメータとその値を表現します。それぞれの
要素は(parameter . value)
というような形です。
parameterとして許されるものはleft
、top
、width
、
height
です。
サイズのパラメータの値は整数でなくてはなりません。位置のパラメータ名
left
とtop
は、ある値のときには右または下の端の位置を示すこ
とがあるので、完全には的確な名前ではありません。以下はvalueが位置
のパラメータとしてとり得る値です:
正の整数は画面の左または上の端と、ウインドウの左端または上端の距離です。 負の整数は画面の右または下の端とウインドウの右または下の端の距離です。
(+ position)
これは画面の左または上の端からのウインドウの左または上の端の位置を指定し ます。整数positionは正でも負でも構いません。負の値は画面の外の位置 を指定することになります。
(- position)
これは画面の右または下の端からのウインドウの右または下の端の位置を指定し ます。整数positionは正でも負でも構いません。負の値は画面の外の位置 を指定することになります。
例:
(x-parse-geometry "35x70+0-0") ⇒ ((width . 35) (height . 70) (left . 0) (top - 0)) |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
全てのフレームはタイトルを持ち、ほとんどのウインドウ・マネージャはフレー
ムの上端にフレーム・タイトルを表示します。name
フレーム属性を使っ
て明示的にタイトルを指定することができます。ですが、普通はこれを明示的に
指定せず、Emacsが自動的に作成するタイトルを使います。
Emacsはフレーム・タイトルを変数frame-title-format
にはいっているテン
プレートを元にして作成します。
この変数は明示的にタイトルが指定されなかったときに、フレームのタイトルを 作るやり方を指定します。
この変数の値は実際にはmode-line-format
のようなモード行構成要素
です。See section モード行の表示をコントロールするデータ構造。
この変数は明示的にフレームタイトルが指定されなかったときに、アイコン化さ れたフレームのタイトルを作るやり方を指定します。このタイトルはアイコン自 身に表示されます。
この変数はEmacsが自動的にセットします。二つ以上のフレーム(ミニバッファ専
用フレームや不可視フレームは数えません)があるときに、これの値はt
になります。frame-title-format
のデフォルト値では、
multiple-frames
を使って二つ以上のフレームがあるときにだけバッファ
の名前をフレーム・タイトルに入れるようにしています。
この変数は常に現在の端末にローカルでバッファローカルにはできません。 See section 複数のディスプレイ。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
フレームは明示的に消去(delete)するまでは可視になることができる状態 でいつづけます。消去されたフレームは画面上には出てきませんが、Lispオブジェ クトとしては全ての参照がなくなるまで存在し続けます。消去されたフレームを 元に戻す方法は、保存してあったフレームの構成(see section フレーム構成)を復元するのを除けば、存在しません。これはウインドウの場 合と同じです。
この関数はフレームframeを消去します。frameのデフォルトは選択 されているフレームです。
関数frame-live-p
はフレームframeが消去されていなければ非
nil
を返します。
あるウインドウ・マネージャにはウインドウを消去するコマンドがあります。これ
は特別なメッセージをウインドウを操作しているプログラムに送ることによって
実現されています。Emacsがこれらのコマンドのうちの一つを受けとると、
delete-frame
イベントが発生します。このイベントの通常の定義は関数
delete-frame
を呼び出すコマンドです。See section そのほかのウィンドウ・システム・イベント。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
関数frame-list
は消去されていない全てのフレームのリストを返します。
これはバッファの場合のbuffer-list
と似ています。返されるリストは新
しく作られたものなので、リストを変更してもEmacsの内部には何の効果もあり
ません。
この関数は現在可視のフレームのリストを返します。See section フレームの可視性。(端末フレームは選択された一つしか実際に表示されませんが、常に" 可視"とみなされます。)
関数next-frame
は、任意のフレームから始められる全てのフレームを含
む便利な環を提供します。その環の中でframeの"次"のフレームを返し
ます。frameが省略されたときやnil
のときのデフォルトは選択さ
れたフレームです。
2番目の引数minibufはどんなフレームに注目するかを指定します:
nil
ミニバッファ専用フレームを除外する。
visible
全ての可視フレームに注目する。
全ての可視またはアイコン化されたフレームに注目する。
指定したウインドウをミニバッファとして使っているフレームだけに注目する。
全てのウインドウに注目する。
next-frame
と同様ですが、環のまわる方向が逆です。
ウィンドウの循環順序のnext-window
とprevious-window
も参照してください。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
それぞれのウインドウはただ一つのフレームに属していて、
window-frame
を使うとそのフレームを得ることができます。
この関数はwindowが属しているフレームを返します。
一つのフレームに含まれる、ミニバッファ以外の全てのウインドウには循環する 順番がついています。順番は上左端のウインドウが先頭で、そこから下または右 へ向かって下右端のウインドウ(フレームがミニバッファを含んでいる場合は常 にミニバッファ・ウインドウ)まで進み、先頭に戻ります。
フレームframeの上左端のウインドウを返します。
常に全てのフレームにはただ一つのそのフレーム内の選択された
(selected within the frame)ウインドウがあります。つまり、フレームを選択
することはすなわちこのウインドウを選択することにもなります。フレームの現
在選択されているウインドウはframe-selected-window
で得ることができ
ます。
この関数はframe内の選択されたウインドウを返します。
逆にいうと、Emacsではselect-window
を使ってウインドウを選択するこ
とは、そのウインドウが存在するフレーム内の選択されたウインドウをそのウイ
ンドウにします。See section ウィンドウの選択。
(普通は)フレームの中のウインドウの一つを返すもう一つの関数に
minibuffer-window
があります。See section ミニバッファそのほか。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
通常はそれぞれのフレームはその最下部にそれ自身のミニバッファ・ウインドウ
を持っていて、あるフレームが選択されたときはそのフレームのミニバッファ・
ウインドウが使われます。フレームがミニバッファを持っていれば
minibuffer-window
で得ることができます(see section ミニバッファそのほか)。
ですが、ミニバッファを持たないフレームも作ることができます。そのようなフ
レームはどれかほかのフレームのミニバッファ・ウインドウを使わなければなりま
せん。フレームを作るときにどの(ある別のフレームの)ミニバッファ・ウインド
ウを使うか指定することもできます。指定しなかった場合は、変数
default-minibuffer-frame
が指すフレームのミニバッファを使うことに
なります。この変数の値はミニバッファを持っているフレームでなければなりま
せん。
ミニバッファ専用フレームを使っていると、ミニバッファに入力するときに自動
的に上昇して欲しいかもしれません。そういうときは変数
minibuffer-auto-raise
をt
にセットしましょう。See section フレームの上昇/下降。
この変数はミニバッファ・ウインドウとして使うフレームのデフォルトを指定し ます。これは常に現在の端末にローカルでバッファローカルにはできません。 See section 複数のディスプレイ。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
どんなときでも、一つのフレームが選択されたフレーム(selected frame) になっています。選択されたウインドウはいつも選択されたフレームの中にあり ます。
この関数は選択されたフレームを返します。
通常Xサーバは、キーボードからの入力をマウスがいるXのウインドウに送ります。 いくつかのウインドウ・マネージャはこういうXサーバの通常の動作を無効にし て、マウスのクリックやキーボードのイベントを使って個々のXのウインドウへ のフォーカスの移動(shift the focus)を行ないます。
select-frame
を呼ぶことによってLispプログラムでフレームを"一時的
に"切替えることができます。これはウインドウ・マネージャを無効にするので
はなく、むしろウインドウ・マネージャがどうにかしてでしゃばってくるまでの
間、ウインドウ・マネージャの制御から逃れるということです。
テキスト専用端末を使っているときはウインドウ・マネージャはいません。した
がってswitch-frame
がフレームを切替える唯一の方法で、次に
switch-frame
が呼ばれるまで有効ということになります。選択された端
末フレームだけが実際に端末に表示されます。初期の端末フレーム以外の端末フ
レームはそれぞれ番号を持っていて、選択されたフレームの番号はモード行
の`Emacs'の後に表示されます(see section モード行の中で使用されている変数)。
この関数は、一時的にXサーバのフォーカスがもしあれば無視してフレーム frameを選択します。frameを選択している状態は、ユーザが別のフ レームを選択する何らかの動作を行なうまで、または次にこの関数が呼び出され るまで続きます。
EmacsはXサーバーやウインドウ・マネージャと協力して、サーバーとウインドウ・
マネージャの要求にしたがってどのフレームを選択するか調整します。このとき
フォーカス(focus)イベントと呼ばれる特殊な入力イベントが発生します。
コマンド・ループはhandle-switch-frame
を呼び出してフォーカス・イベ
ントを処理します。See section フォーカス・イベント。
この関数はフォーカス・イベントを受け取ってフレームframeを選択しま す。
フォーカス・イベントは通常このコマンドを起動することによって自分の仕事を 行ないます。ほかにどんな理由があってもこれを呼び出してはいけません。
この関数はframeからfocus-frameへフォーカスをリダイレクトしま
す。つまりfocus-frameはそれ以降のframeへ送られるはずのキース
トロークを受け取ります。
このようなイベントの後には、last-event-frame
はfocus-frameに
なります。また、frameを指定するフレーム切替えイベントはかわりに
focus-frameを選択することになります。
focus-frameがnil
のときは、frameに関する全てのリダイレ
クトをキャンセルします。したがって、また自分に向けられたイベントを受け取
ることになります。
フォーカスのリダイレクトの使い道の一つとしてミニバッファを持たないフレー ムがあります。このようなフレームは別のフレームのミニバッファを使います。 別のフレームのミニバッファがアクティブになるとフォーカスはそのフレームに リダイレクトされます。マウスがミニバッファをアクティブにしたフレームに残っ ていたとしても、フォーカスはミニバッファが所属しているフレームに移ります。
あるフレームを選択することはフォーカスのリダイレクトを変えることでもあり
得ます。フレームfoo
が選択されているときにフレームbar
を選択
すると、foo
を指していた全てのリダイレクトがかわりにbar
を指
すことになります。この動作は、あるフレームから別のフレームへ
select-window
を使って切替えたときに、フォーカスのリダイレクトがき
ちんと働けるようしています。
つまり、自分自身にフォーカスをリダイレクトしているフレームはフォーカスの
リダイレクトをしていないフレームと違う扱いを受けるということです。
select-frame
は前者には働くが後者には働かないのです。
リダイレクトはredirect-frame-focus
が呼ばれてリダイレクトが変更さ
れるまで、有効です。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Xウインドウ・フレームは、可視(visible)、不可視(invisible)、 アイコン化(iconified)のいずれかの状態にあります。もし可視なら、そ の中身を見ることができます。もしアイコン化されていたら、フレームの中身は 画面には現れていませんが、アイコンが見えます。もし不可視なら、そのフレー ムは画面上には見えていませんし、アイコンも同様です。
端末フレームにおいては、どんな場合でも選択されたものしか実際には表示され ないので可視性は無意味です。
この関数はframeを可視にします。frameを省略すると選択されてい るフレームを可視にします。
この関数はframeを不可視にします。frameを省略すると選択されて いるフレームを不可視にします。
この関数はframeをアイコン化します。frameを省略すると選択され ているフレームをアイコン化します。
フレームframeの可視性の状態を返します。frameが可視なら
t
、不可視ならnil
、アイコン化されていればicon
を返し
ます。
可視性の状態はフレーム・パラメータにもありますので、それを読み出したり変更 したりすることもできます。See section Xウインドウ・フレーム・パラメータ。
ユーザはウインドウ・マネージャを使ってフレームをアイコン化したりアイコン 化を解除することができます。これはEmacsが制御できるレベルよりも下位のレ ベルで行なわれますが、このような変更をたどるのにイベントを使うことができ ます。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Xウインドウ・システムは机の暗喩を用いています。この暗喩の中に、ウインドウ が、画面と垂直の方向の想像上の3番目の次元の中に積み重なっていて、"最高" から"最低"まで順序づけられているというアイデアがあります。二つのウイン ドウが重なっている場所は、高い方が低い方を隠してしまいます。もっとも低い ウインドウでも、ほかのウインドウがその上に重なっていなければ見ることができ ます。
このウインドウの順番は固定ではありません。むしろ、この順番は頻繁に変更さ れることが多いでしょう。ウインドウを上昇(raising)させるというのは、 ウインドウを重なりの1番上に"持ちあげる"ことを意味します。ウインドウを 下降(lowering)させるというのは、ウインドウを重なりの1番下へ移動し ます。この移動は想像上の3番目の次元の中だけで、ウインドウの画面上の位置 は変わりません。
以下の関数を使ってEmacsのXのウインドウを上昇、下降させることができます:
この関数はフレームframeを上昇させます。
この関数はフレームframeを下降させます。
非nil
の場合、ミニバッファがアクティブになったときにミニバッファ・
ウインドウが属するフレームが上昇します。
フレーム・パラメータを使ってフレームごとに、自動上昇(フレームが選択され たときに自動的に上昇する)や自動下降(フレームが選択されなくなったときに自 動的に下降する)するようにもできます。See section Xウインドウ・フレーム・パラメータ。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
フレーム構成(frame configuration)とは、現在のフレーム群の配置、全 ての属性、それぞれのウインドウの構成を記録することです。
この関数は現在のフレーム群の配置やそれらの中身を記述したフレーム構成リス トを返します。
この関数はフレームの状態をconfigurationに記述されている状態に戻し ます。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
マウスを追跡(track)することは、すなわちマウスがどこにあるのかを指 し示すために何かを表示したり、それをマウスの動きに応じて動かすことは、し ばしば役にたちます。 効率よくマウスを追跡にするためには、マウスが実際に動くまで待つ方法が必要 です。
マウスを追跡する便利な方法は、マウスの移動を表すイベントを得ることです。 そうすれば、イベントを待つことによってマウスの移動を待つことができます。 おまけに、おそらく起きるであろうほかの種類のイベントを容易に扱うことができ ます。普通、永遠にマウスを追跡したりはせず、ボタンを離すとかいったあるほか のイベントがおこるまでしか追跡しないので、これは役にたちます。
マウス移動の入力イベントが起きている間、bodyを実行します。
bodyの中では、read-event
やread-key-sequence
を使って
それらのイベントを読みとることができます。マウス移動イベントのフォーマッ
トについては、See section 移動イベント。
track-mouse
の返り値は、bodyの最後の形式の値になります。
マウスの追跡の通常の用途は、現在位置でボタンを押したり離したりしたことの 結果を画面に表示することです。
多くの場合、mouse-face
テキスト属性を使うことによってマウスを追跡
しなくてもすませることができます(see section 特殊な意味をもつ属性)。これは非常
に低レベルで働きますので、Lispレベルのマウスの追跡よりもスムーズに動作
します。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
関数mouse-position
とset-mouse-position
はマウスの現在位置へ
アクセスする手段を提供します。
この関数はマウスの位置を返します。返り値は(frame x
. y)
という感じで、xとyはframeの上左端からの文字
数単位の位置を表す整数です。
この関数はframeのx、yの位置へマウスをワープ (warps the mouse)させます。引数のxとyはframeの上左端か らの文字数単位の位置を表す整数です。
この関数は、返り値の座標が文字数単位ではなくピクセル単位であることを除け
ばmouse-position
と同じです。
この関数は、xとyが文字数単位ではなくピクセル単位であることを
除けばset-mouse-position
と同じようにマウスをワープさせます。この
座標はフレームの内部でなくても構いません。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Xウインドウを使っているときは、Lispプログラムはユーザがマウスで選択でき るメニューをポップアップすることができます。
この関数はポップアップ・メニューを表示して、ユーザが何を選択したかを返しま す。
引数positionは画面のどこにメニューを置くかを指定します。この引数は マウス・ボタン・イベント(ボタンを押した場所にメニューを置くことになりま す)か次の形式のどちらでも構いません:
((xoffset yoffset) window) |
xoffsetとyoffsetはwindowのフレームの左上端からのピクセ ル単位の座標です。
positionがt
の場合は現在のマウスの位置を使います。
positionがnil
のときは、実際にはメニューを表示せずに
menuの中のキーマップで指定されたものの等価なキー・バインドをあらか
じめ調べておきます。
引数のmenuはメニューに何を表示するかを指示します。キーマップかキー マップのリスト(see section メニュー・キーマップ)、もしくは次のような形式をとります:
(title pane1 pane2...) |
それぞれの枠(pane)は次の形式のリストです。
(title (line . item)...) |
それぞれのlineは文字列で、itemはそのlineが選ばれたときに 返される値です。
使用上の注意: あるメニューが前置キーにメニュー・キー
マップとしてバインドされている場合は、そのメニューを表示するのに
x-popup-menu
を使ってはいけません。
メニューをつくるのにメニュー・キーマップを使った場合は、C-h cと
C-h aでそのメニューの中のそれぞれの項目を見ることやヘルプを出すこ
とができます。そうではなく、x-popup-menu
を呼び出すコマンドによっ
てメニューを定義した場合は、ヘルプ機能はそのコマンドの中で何が行なわれて
いるのかを知ることはできませんので、そのメニューの項目に関してヘルプを出
すことはできません。そのため、メニュー・バーの全ての項目は普通はメニュー・
キーマップを用いて作られています。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
ダイアログ・ボックスはポップアップ・メニューの変形です。常にフレームの真
中に現れ、一つの階層と一つの枠(pane)しか持っていないところが違います(X
Toolkitを使っている場合)。ダイアログ・ボックスは、"yes"か"no"などで
答えられる質問をするのに主に使われます。関数y-or-n-p
と
yes-or-no-p
は、マウス・クリックで起動されたコマンドから呼び出され
た場合、キーボードの代わりにダイアログ・ボックスを使用します。
この関数はポップアップ・ダイアログ・ボックスを表示し、ユーザが何を選択し たかを示すものを返します。引数contentsには選択肢を以下のフォーマッ トで指定します:
(title (string . value)…) |
これはx-popup-menu
に一つの枠を指定するときのリストに似ています。
返り値は選ばれた選択肢のvalueになります。
リストの要素は(string . value)
というコンス・セルの代
わりにただの文字列でも構いません。その場合は選択できない箱になります。
リストの中にnil
がある場合は、項目を右と左に分ける働きをします。
nil
よりも前にある項目は左に、後にある項目は右に表示されます。リス
トの中にnil
がない場合は、おおよそ半分ずつ左右に分けられます。
ダイアログ・ボックスは、常にフレームの中央に表示されます。引数
positionはどのフレームに表示するかを指定します。とりうる値は
x-popup-menu
と同様ですが、細かい座標は無視され、フレームだけが認
識されます。
あなたのEmacsの実行形式がX toolkitを使用しない設定で作られている場合は、 本物のダイアログ・ボックスは使えません。その代わり同じ項目のポップアップ・ メニューをフレームの中央に表示します。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
これらの変数はいろいろな状況でのマウス・ポインタの形状を指定します:
x-pointer-shape
この変数はEmacsのフレーム中の普通のポインタの形状を指定します。
x-sensitive-text-pointer-shape
この変数はマウスがマウス感知テキストの上にあるときのポインタの形状を指定 します。
これらの変数は新しく作られたフレームに影響を与えます。存在するフレームに 影響することは普通はありませんが、フレームのマウスの色をセットするとポイ ンタの形状もこれらの変数の現在の値に基づいて更新されます。See section Xウインドウ・フレーム・パラメータ。
これらのポインタの形状のどちらをも指定するのに使える値は、ファイル `lisp/x-win.el'で定義されています。これらのリストを見るにはM-x apropos RET x-pointer RETを使ってください。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Xサーバーはアプリケーション間でデータを交換できるようにするためにセ レクション(selection)のセットを記録します。さまざまなセレクションは セレクション・タイプ(selection type)で識別されます。セレクション・ タイプはEmacs上ではシンボルで表されます。Emacsを含むXクライアントは、与 えられたどのタイプのセレクションでも読んだりセットしたりできます。
この関数はXサーバの"セレクション"をセットします。セレクション・タイプ
typeとそれに割り当てる値dataの二つの引数をとります。
dataがnil
の場合は、そのセレクションをクリアします。それ以外
にdataには次のいずれかを指定できます。文字列、シンボル、整数(また
は二つの整数のコンスやリスト)、オーバーレイ、同じバッファを指している二つの
マーカのコンス。オーバーレイやマーカのペアは、オーバーレイの中やマーカの間
のテキストを表します。
dataは、上記非ベクタのセレクションの値のベクタでも構いません。
それぞれの可能なtypeは、それ自身の独立に変更可能なセレクションの値
を持っています。
通常typeの値はPRIMARY
とSECONDARY
です。これらのシンボ
ルはXウインドウ・システムの慣習に合わせて大文字の名前になっています。デフォ
ルトはPRIMARY
です。
この関数は、EmacsやほかのXクライアントがセットしたセレクションにアクセスし
ます。この関数は二つのオプション引数typeとdata-typeをとります。
セレクション・タイプtypeのデフォルトはPRIMARY
です
data-type引数は、ほかのXクライアントから得た生のデータをLispデータに
変換するときに使用するデータ変換の形式を指定します。
意味がある値は、TEXT
、STRING
、
TARGETS
、LENGTH
、DELETE
、FILE_NAME
、
CHARACTER_POSITION
、LINE_NUMBER
、COLUMN_NUMBER
、
OWNER_OS
、HOST_NAME
、USER
、CLASS
、
NAME
、ATOM
、INTEGER
です(これらのシンボルはXの慣習に
合わせて大文字の名前になっています)。デフォルトはSTRING
です。
Xサーバーは、テキストやほかのデータをアプリケーション間でやりとりできる、 番号付のカット・バッファ(cut buffer)のセットも持っています。カッ ト・バッファはobsoleteとみなされていますが、Emacsはまだこれを使っているX クライアントのためにサポートしています。
この関数は番号nのカット・バッファの中身を返します。
この関数は、stringを先頭のカット・バッファ(カット・バッファ0)に入れ、 Emacsで連続したkillを行なったときに、killリングを繰り下げるのと同様に、 ほかのカット・バッファの全ての値を繰り下げます。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
この関数は色の名前colorが有効かどうかを報告します。有効なら
t
、そうでないならnil
を返します。
これは使っているディスプレイがその色をちゃんとサポートしているかどうかは 教えてくれないことに注意してください。任意の種類のディスプレイで定義され ている色のどれかについて問い合わせて、Xサーバーがどう働くかについてある 結果を得ることができます。これはあなたのディスプレイが色colorをサ ポートしているかどうかテストする近似的方法です:
(defun x-color-supported-p (color) (and (x-color-defined-p color) (or (x-display-color-p) (member color '("black" "white")) (and (> (x-display-planes) 1) (equal color "gray"))))) |
この関数はcolorが理想的にはどんな感じで見えるべきかを記述する値を
返します。colorが定義されていれば、値は赤の量、緑の量、青の量を表
す三つの整数のリストです。それぞれの整数の範囲は原則として0から65535です
が、実際には65280以上の値はないようです。
colorが定義されていなければ値はnil
です。
(x-color-values "black") ⇒ (0 0 0) (x-color-values "white") ⇒ (65280 65280 65280) (x-color-values "red") ⇒ (65280 0 0) (x-color-values "pink") ⇒ (65280 49152 51968) (x-color-values "hungry") ⇒ nil |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
この関数x-get-resource
は、Xウインドウのデフォルト・データベースか
らリソースの値を取り出します。
リソースは、キー(key)とクラス(class)の組合せの索引がつけられ ています。この関数は、 `instance.attribute'(instanceは、Emacsが起動され たときの名前です)の形式をキーに、`Emacs'をクラスとして使って検索し ます。
オプション引数componentとsubclassは、それぞれキーとクラスにつ け加えられます。これらは両方とも指定するか、両方とも指定しないかのどちら かでなければなりません。これらを指定したときにはキーは `instance.component.attribute'となり、クラスは `Emacs.class.subclass'となります。
See (emacs)Resources X section `X Resources' in The GNU Emacs Manual。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
この節では、Emacsが使っているXサーバーの能力や素性に関する情報を得るため
の関数について説明します。
これらの関数それぞれにはあなたが注目しているディスプレイを指定するように
なっています。display引数にはディスプレイの名前とフレーム(つまりそ
のフレームが表示されているディスプレイを使います)のどちらでも指定できま
す。display引数を省略、もしくはnil
を指定した場合は、選択さ
れたフレームのディスプレイを使うことになります。
この関数はそのディスプレイがいくつ画面を持っているかを返します。
この関数はそのディスプレイで動いているXサーバーのバージョン番号のリスト を返します。
この関数はそのXサーバーのソフトウェアを提供しているベンダーを返します。
この関数はその画面の高さをピクセル単位で返します。
この関数はその画面の高さをミリメートル単位で返します。
この関数はその画面の幅をピクセル単位で返します。
この関数はその画面の幅をミリメートル単位で返します。
この関数はその画面のバッキング・ストアの能力を返します。返り値は、
always
、when-mapped
、not-useful
です。
この関数はそのディスプレイがSaveUnder機能をサポートしている場合非
nil
を返します。
この関数はそのディスプレイがサポートしているプレーンの数を返します。
この関数はその画面のビジュアル・クラスを返します。返り値は次のシンボル、
static-gray
、gray-scale
、static-color
、
pseudo-color
、true-color
、direct-color
のいずれかで
す。
この関数はその画面が灰色の濃淡を表示できるときにt
を返します。
この関数はその画面がカラー画面のときにt
を返します。
この関数はその画面がサポートしているカラー・セルの数を返します。
[ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This document was generated by Yasutaka SHINDOH on September, 29 2006 using texi2html 1.76.