ほとんどのグラフィカルなデスクトップ環境で、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 can also optionally drag the region with the mouse into another
portion of this or another buffer. To enable that, customize the variable
mouse-drag-and-drop-region
to a non-nil
value. Normally, the
text is moved, i.e. cut and pasted, when the destination is the same
buffer as the origin; dropping the region on another buffer copies the text
instead. If the value of this variable names a modifier key, such as
‘shift’, ‘control’ or ‘alt’, then pressing that modifier key
when dropping the text will copy it instead of cutting it, even if you drop
on the same buffer as the one from which the text came.
ドラッグ元とドロップ先が異なるバッファーのときにもテキストをカットするためには、オプションmouse-drag-and-drop-region-cut-when-buffers-differ
を非nil
値にセットします。デフォルトでは、グラフィカルなディスプレイの選択されたテキストはツールチップ内に表示され、ドラッグ中にはマウスカーソルとともにポイントが移動します。このような動作を抑止するには、オプションmouse-drag-and-drop-region-show-tooltip
、および/またはmouse-drag-and-drop-region-show-cursor
にnil
をセットしてください。
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を参照してください。