Next: , Previous: , Up: EmacsとmacOS / 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のフォントパネル(Cmd-tでオープンできる)でフォントを選択した際に発生します。デフォルトでは選択されたフレームのフォントを調整します(ns-respond-to-changefont)。選択されたフォントの名前とサイズは、それぞれ変数ns-input-fontns-input-fontsizen格納されます。

ns-power-off

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

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