Next: , Previous: , Up: フレームとグラフィカルなディスプレイ   [Contents][Index]


22.14 ドラッグアンドドロップ

ほとんどのグラフィカルなデスクトップ環境で、Emacsはドラッグアンドドロップ(drag and drop)操作にたいする、基本的なサポートを提供します。たとえばEmacsのフレームにテキストをドロップすると、ドロップされた箇所にテキストを挿入し、ファイルをドロップすると、Emacsフレームはそのファイルをvisitします。特別なケースとしては、Diredバッファーにファイルをドロップすることにより、バッファーに表示されているディレクトリーにファイルを移動またはコピーします(アプリケーションの慣例に基づきます)。

ファイルをドロップすると、通常はドロップされたウィンドウでファイルをvisitします。そのような場合に、新しいウィンドウでファイルをvisitしたいときは、変数dnd-open-file-other-windowをカスタマイズします。

現在のところ、XDNDおよびMotif drag and drop protocolsと、古いKDE 1.x protocolがサポートされています。

Emacsのウィンドウにテキストをドラッグしている際に、スクロールやドロップされたテキストが挿入される場所を判断するのが難しい場合があるでしょう。オプションdnd-indicate-insertion-pointを非nil値にセットすれば、ドラッグ中にマウスがウィンドウ内を移動する際にドロップされるテキストが挿入される位置にポイント移動がするようにできます。またdnd-scroll-marginを整数値にセットすれば、ドラッグ中にウィンドウの上端または下端の指定した行数部分にマウスが移動するとウィンドウがスクロールするようにできます。

Emacsはオプションで、テキストのリージョンを他のバッファーの他の部分へドラッグする操作もサポートします。これを有効にするには、変数mouse-drag-and-drop-regionを非nil値にカスタマイズしてください。通常そのテキストは、ドロップ先が元のリージョンと同じなら移動(カットアンドペースト)され、他のバッファーならそのリージョンがコピーされます。この変数の値が‘shift’、‘control’、‘alt’のような修飾キー名の場合、その修飾キーを押しながらテキストをドロップすると、ドロップ先がドラッグ元と同じバッファーでも、テキストはカットされずにコピーされます。

ドラッグ元とドロップ先が異なるバッファーのときにもテキストをカットするためには、オプションmouse-drag-and-drop-region-cut-when-buffers-differを非nil値にセットします。デフォルトでは、グラフィカルなディスプレイの選択されたテキストはツールチップ内に表示され、ドラッグ中にはマウスカーソルとともにポイントが移動します。このような動作を抑止するには、オプションmouse-drag-and-drop-region-show-tooltip、および/またはmouse-drag-and-drop-region-show-cursornilをセットしてください。

Emacsから他のプログラムにテキストをドラッグできるようにするには、オプションmouse-drag-and-drop-region-cross-programに非nil値をセットしてください。

Xウィンドウシステムでは、Emacsによるファイルの保存を期待してファイルをEmacsにドロップできるプログラムがいくつかあります。通常だとEmacsはファイルを保存する名前の入力を求めた後にそのファイルをオープンしますが、変数x-dnd-direct-save-functionを変更することによってこの挙動を変えることができます。Drag and Drop in The Emacs Lisp Reference Manualを参照してください。