Eliminar archivos a la Papelera en OS X

8

¿Existe un método mejor y más a prueba de futuro para configurar emacs en OS X para eliminar archivos a la papelera?

Intenté las instrucciones aquí :

(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))

pero no funcionan:

Trashing...
(wrong-type-argument stringp nil)

Además, se siente mal tener que instalar un programa separado para que Emacs pueda eliminar los archivos. Además, no recordaré instalar el programa "basura" la próxima vez que realice una instalación limpia de OS X.

Actualización: agregué esto a mis .emacs y eliminé la llamada trashy parece que funciona. Me pregunto por qué Emacs en OSX usa de manera predeterminada la ~/.local/share/Trashubicación de FreeDesktop .

(setq trash-directory "~/.Trash")
Harvey
fuente
Debe presentar un informe de error para esto.
niñera
envió un informe de error.
Harvey
44
Es posible que desee pagar el osx-trashpaquete en MELPA github.com/lunaryorn/osx-trash.el
waymondo
//, incluso ELPA está arruinando esto, aparentemente: stackoverflow.com/questions/36187765/…
Nathan Basanese el

Respuestas:

6

Se requiere lo siguiente:

(setq delete-by-moving-to-trash t)
(setq trash-directory "~/.Trash")

La función move-file-to-trashtiene tres pruebas: (1) si trash-directoryestá definida; (2) si (fboundp 'system-move-file-to-trash); y, (3) (t . . . el conjunto que usa ~/.local/share... La segunda prueba siempre falla en OSX 10.6.8 cuando se construye con la opción estándar de --with-ns. Por el momento no tengo acceso a otras versiones de OSX.

lista de leyes
fuente
Sin embargo OS X todas las pistas donde vino el archivo si utiliza el comercio desde el buscador y que no se produce aquí - por lo tenga en cuenta que esto no es una implementación completa, pero a menudo lo suficientemente bueno
user151019
3

Definir la función system-move-file-to-trashde esta manera debería ser suficiente:

(defun system-move-file-to-trash (file)
  (call-process "trash" nil nil nil file))

Si no lo ha trashinstalado, Emacs le dirá. entonces, no establezca la variable trash-directoryya trashque lo hace por usted.

Sobre el comportamiento de basura de Emacs:

move-file-to-trash es una función Lisp compilada interactiva en 'files.el'.

(mover-archivo-a-papelera FILENAME)

Mueva el archivo (o directorio) llamado FILENAME a la papelera. Cuando 'delete-by-moving-to-trash' no es nulo, esta función se llama por 'delete-file' y 'delete-directory' en lugar de eliminar archivos directamente.

Si la función 'system-move-file-to-trash' está definida, llámala con FILENAME como argumento. De lo contrario, si 'directorio de basura' no es nulo, mueva FILENAME a ese directorio. De lo contrario, elimine FILENAME utilizando las convenciones de freedesktop.org, como los entornos de escritorio GNOME, KDE y XFCE. Emacs solo mueve archivos a "basura doméstica", ignorando los botes de basura por volumen.

Supongo (setq trash-directory "~/.Trash")que no funciona: Finder no podrá recuperar estos archivos ya que (al menos) no sabe de dónde provienen estos archivos.

xuchunyang
fuente
3

He estado usando el paquete osx-trash . Funciona con o sin la trashutilidad de línea de comandos, y se integra correctamente con el directorio de la Papelera de macOS.

Daniel Matz
fuente
Sin la trashutilidad de línea de comandos puede escuchar el sonido de la papelera. Con la trashutilidad de línea de comandos es más rápido.
Raoul HATTERER