Emacsからファイルを削除してゴミ箱にはいるなんて必要ないや、と思っていたらそのような案件が発生した。Emacsでdeleteして復活させたくなったのだ。
これはいかん。
というわけで下記のように設定した。
(setq delete-by-moving-to-trash t)
ところがMacでは次のメッセージをだしてうまくいかなかった。
あれ?
ls does not support --dired; see `dired-use-ls-dired' for more details.
どうやらCocoaEmacsではネイティブにはサポートされてないらしい。
emacswikiでやり方を見つけた。
(setq delete-by-moving-to-trash t) (defun system-move-file-to-trash (file) "Use \"trash\" to move FILE to the system trash. When using Homebrew, install it using \"brew install trash\"." (call-process (executable-find "trash") nil 0 nil file))
このやり方だとHomeBrewからtrashというコマンドをインストール必要がある。——「brew install trash」。
それにしても「system-move-file-to-trash」を定義するだけで行くのはどうしてだろう、と思ってelispをあさってみたら
6 matches for "system-move-file-to-trash" in buffer: files.el.gz 6796:This directory is only used when the function `system-move-file-to-trash' 6806:(declare-function system-move-file-to-trash "w32fns.c" (filename)) 6814:If the function `system-move-file-to-trash' is defined, call it 6841: ;; If `system-move-file-to-trash' is defined, use it. 6842: ((fboundp 'system-move-file-to-trash) 6843: (system-move-file-to-trash filename))
ということで、Windowsの場合はCで書かれた「system-move-file-to-trash」がバンドルされるらしい。