ほとんどのグラフィカルなデスクトップ環境において、Emacsはドラッグ&ドロップ操作を基本的にサポートしています。例えば、テキストをEmacsフレーム上にドロップすると、その位置にテキストが挿入されます。ファイルをEmacsフレーム上にドロップすると、そのファイルが開きます。特殊なケースとして、ファイルをDiredバッファ上にドロップすると、そのファイルが(元のアプリケーションの慣習に従って)当該バッファに表示されているディレクトリへ移動またはコピーされます。
ファイルをドロップすると、通常はドロップしたウィンドウでそのファイルが開きます。このような場合に、新しいウィンドウでファイルを開きたい場合は、変数
dnd-open-file-other-window をカスタマイズしてください。
現在、XDNDおよびMotifのドラッグ&ドロッププロトコル、ならびに旧KDE 1.xプロトコルがサポートされています。
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-cursor を nil に設定してください。
Emacsから他のプログラムへテキストをドラッグするには、オプション mouse-drag-and-drop-region-cross-program に nil 以外の値を設定してください。
Xウィンドウシステムでは、一部のプログラムがEmacs上にファイルをドロップし、Emacsに保存させることを期待する場合があります。通常、Emacsはファイルの保存先となるファイル名の入力を求め、その後ファイルを開きますが、この動作は変数
x-dnd-direct-save-function を変更することで変更可能です。The Emacs Lisp Reference Manual の Drag
and Drop を参照してください。