Next: ドラッグアンドドロップ, Previous: ウィンドウシステムによる選択, Up: フレーム [Contents][Index]
たとえばあなたがウェブブラウザで“Copy
Image(イメージをコピー)”を選択したとすると、そのイメージはクリップボードに配置されて、Emacsはgui-get-selection
を通じてそのイメージにアクセスすることができます。ただし一般的にはイメージデータを任意のバッファーに挿入してもあまり役には立ちません。デフォルトのままでは実際のところ大したことはできないのです。
そのためにEmacsでは、これらの“複雑”な選択にたいしてモードがハンドラーを登録できるようになっています。
typesはMIMEメディアタイプのシンボルやそれらにマッチするregexp、またはシンボルとregexpのリスト。たとえば:
(yank-media-handler 'text/html #'my-html-handler) (yank-media-handler "image/.*" #'my-image-handler)
モードは必要な数のハンドラーを登録できる。
関数handlerはメディアタイプシンボルMIMEとデータ(文字列)という2つのパラメーターで呼び出される。このハンドラーはそのオブジェクトのバッファーへの挿入や保存、あるいはそれが何であれそのモードにとって適切な処理を行うこと。
yank-media
コマンドはカレントバッファーで登録されたハンドラーを照会するとともに、クリップボード上の利用可能なメディアタイプと比較を行い、(もしあれば)マッチした選択をそのハンドラーに渡します。マッチする選択が複数あれば、まずユーザーに問い合わせを行います。
クリップボード/プライマリー選択を調べるためにyank-media-types
コマンドを使うことができます。これはカレントで利用可能なメディアタイプすべてをリストします。これは実際に利用可能なデータは何なのかを確認できるので、ハンドラーの作成時に便利でしょう。一部のアプリケーションは、驚くほど多くの異なるデータタイプをクリップボードに配置します。