Next: , Previous: , Up: Mac OS / GNUstep   [Contents][Index]


F.3 macOSおよびGNUstepでのウィンドウシステムイベント

Nextstepアプリケーションは、Xでは同等なものがない、特別なイベントを受け取ります。これらは、対応するキーストロークのシーケンスとしてではなく、特別に定義されたキーイベントとして送られます。Emacsでは、これらのキーイベントを、通常のキーストロークのように、関数にバインドできます。以下はこのようなイベントのリストです。

ns-open-file

このイベントは、他のNextstepアプリケーションがEmacsにファイルを開くよう要求したときに発生します。これの典型的な理由としては、ユーザーがFinderアプリケーションでファイルをダブルクリックしたときなどです。デフォルトでは、Emacsはこのイベントにたいして、新しいフレームを開いて、そのフレームでファイルをvisitして応答します(ns-find-file)。例外として、選択されたバッファーが*scratch*バッファーの場合、Emacsは選択されたフレームでファイルをvisitします。

Emacsがns-open-fileイベントにたいしてどのように応答するかは、ns-pop-up-framesを変更することにより、変えることができます。デフォルト値は‘fresh’で、これは上で説明したとおりの動作を行ないます。値tは、ファイルを常に新しいフレームでvisitすることを意味します。値nilは、ファイルを常に選択されたフレームでvisitすることを意味します。

ns-open-temp-file

このイベントは、他のアプリケーションがEmacsに一時ファイルを開くように要求したとき発生します。デフォルトでは、単にns-open-fileイベントを生成することにより処理され、結果は上で説明したとおりになります。

ns-open-file-line

ProjectBuilderやgdbのようないくつかのアプリケーションは、特定のファイルだけではなく、そのファイルの特定の行、または一連の行を要求します。Emacsはそのファイルをvisitして要求された行をハイライトすることにより、これを処理します(ns-open-file-select-line)。

ns-drag-n-drop

このイベントは、ユーザーが他のアプリケーションから、Emacsフレームにファイルをドラッグしたとき発生します。デフォルトの動作は、マウスの下にあるウィンドウでファイルをオープンするか、マウスの下にあるウィンドウのポイント位置にテキストを挿入します。

送信オブジェクトをEmacsが処理する方法を送信アプリケーションが判断する能力にはいくつかの制限がありますが、ユーザーは1つ以上の修飾キーを押し続けることによりデフォルトの挙動をオーバーライドできます。

control

テキストとしてカレントバッファーに挿入します。オブジェクトがファイルならファイル名を挿入します。

alt/option

オブジェクトがファイルかURLであるかのようにオープンを試みます。

super/command

そのタイプにたいするデフォルトのアクションを行います。これはアプリケーションがデフォルトの挙動をオーバーライドしている場合に有用かもしれません。

上記にリストした修飾キーはmacOSが定義したもので、ユーザーによるEmacs内での修飾の変更は影響を受けません。

ns-change-font

このイベントは、ユーザーがNextstep font panel(これはCmd-tで開くことができます)でフォントを選択したとき発生します。デフォルトの動作は、選択されたフレームのフォントを変更します(ns-respond-to-changefont)。選択されたフォントの名前とサイズは、変数ns-input-fontns-input-fontsizeに格納されます。

ns-power-off

このイベントは、ユーザーがEmacsを実行中にログアウトしたとき、またはアプリケーションメニューから“Quit Emacs”を選択したとき発生します。デフォルトの動作は、ファイルをvisitしているすべてのバッファーを保存します。

Emacsはユーザーに、‘ns-service-’で始まりサービス名で終わるコマンドを通じて、Nextstepサービスを使用することも可能にします。M-x ns-service-TABとタイプして、これらのコマンドをリストを見ることができます。これらの関数は、マークされたテキストを処理(結果でそれを置き換える)したり、文字列を引数として結果を文字列で返します。Lisp関数ns-perform-serviceを使用して、任意の文字列を任意のサービスに渡して、結果を受けとることもできます。新たに利用可能になったサービスにアクセスするには、Emacsの再起動が必要なことに注意してください。