Löschen Sie Dateien in den Papierkorb unter OS X.

8

Gibt es eine beste und zukunftssicherste Methode, um Emacs unter OS X so einzustellen, dass Dateien in den Papierkorb verschoben werden?

Ich habe die Anleitung hier ausprobiert :

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

aber sie funktionieren nicht:

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

Es fühlt sich auch falsch an, ein separates Programm installieren zu müssen, damit Emacs Dateien in den Papierkorb werfen kann. Außerdem werde ich mich nicht daran erinnern, das "Papierkorb" -Programm bei der nächsten Neuinstallation von OS X zu installieren.

Update: Ich habe dies zu meinen .emacs hinzugefügt und den Aufruf von entfernt trashund es scheint zu funktionieren. Ich frage mich, warum Emacs unter OSX standardmäßig den FreeDesktop- ~/.local/share/TrashSpeicherort verwendet.

(setq trash-directory "~/.Trash")
Harvey
quelle
Sie sollten hierfür einen Fehlerbericht einreichen.
Kindermädchen
hat einen Fehlerbericht gesendet.
Harvey
4
Vielleicht möchten Sie das osx-trashPaket auf MELPA github.com/lunaryorn/osx-trash.el
waymondo
//, Sogar ELPA vermasselt dies anscheinend: stackoverflow.com/questions/36187765/…
Nathan Basanese

Antworten:

6

Folgendes ist erforderlich:

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

Die Funktion move-file-to-trashhat drei Tests: (1) ob trash-directorydefiniert ist; (2) ob (fboundp 'system-move-file-to-trash); und (3) (t . . . das Allheilmittel , das verwendet wird ~/.local/share... Der zweite Test schlägt unter OSX 10.6.8 immer fehl, wenn er mit der Standardoption von erstellt wird --with-ns. Ich habe momentan keinen Zugriff auf andere Versionen von OSX.

Gesetzesliste
quelle
OS X verfolgt jedoch, woher die Datei stammt, wenn Sie den Handel vom Finder verwenden, und das tritt hier nicht auf. Beachten Sie also, dass dies keine vollständige Implementierung ist, aber oft gut genug
user151019
3

Die Funktion system-move-file-to-trashso zu definieren sollte ausreichen:

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

Wenn Sie nicht trashinstalliert haben, werden Sie von Emacs darüber informiert. Setzen Sie dann die Variable nicht, trash-directoryda trashdies für Sie erledigt wird.

Über das Müllverhalten von Emacs:

move-file-to-trash ist eine interaktive kompilierte Lisp-Funktion in 'files.el'.

(Datei in den Papierkorb verschieben DATEINAME)

Verschieben Sie die Datei (oder das Verzeichnis) mit dem Namen FILENAME in den Papierkorb. Wenn 'Löschen durch Verschieben in den Papierkorb' nicht Null ist, wird diese Funktion von 'Datei löschen' und 'Verzeichnis löschen' aufgerufen, anstatt Dateien sofort zu löschen.

Wenn die Funktion 'System-Move-File-to-Trash' definiert ist, rufen Sie sie mit FILENAME als Argument auf. Andernfalls verschieben Sie FILENAME in dieses Verzeichnis, wenn 'trash-directory' nicht null ist. Andernfalls löschen Sie FILENAME mithilfe der Konventionen von freedesktop.org, z. B. der Desktop-Umgebungen GNOME, KDE und XFCE. Emacs verschiebt Dateien nur in den "Hausmüll" und ignoriert die Mülleimer pro Volume.

Ich denke, (setq trash-directory "~/.Trash")es funktioniert nicht: Finder kann diese Dateien nicht wiederherstellen, da er (zumindest) nicht weiß, woher diese Dateien stammen.

Xuchunyang
quelle
3

Ich habe das osx-trash- Paket verwendet. Es funktioniert mit oder ohne das trashBefehlszeilenprogramm und lässt sich ordnungsgemäß in das macOS-Papierkorbverzeichnis integrieren.

Daniel Matz
quelle
Ohne das trashBefehlszeilenprogramm können Sie den Trash-Sound hören. Mit dem trashBefehlszeilenprogramm ist es schneller.
Raoul HATTERER