]> git.eshelyaron.com Git - emacs.git/commitdiff
Support remote trash-directory
authorMichael Albinus <michael.albinus@gmx.de>
Tue, 23 Apr 2024 11:54:09 +0000 (13:54 +0200)
committerEshel Yaron <me@eshelyaron.com>
Tue, 23 Apr 2024 12:40:46 +0000 (14:40 +0200)
* doc/misc/tramp.texi (Frequently Asked Questions): Describe how
to manipulate trash-directory.
Explain tramp-inhibit-errors-if-setting-file-attributes-fail.

* lisp/files.el (move-file-to-trash): Use connection-local value
of `trash-directory'.  (Bug#70421)

(cherry picked from commit 956821672eb5306d4eeeae0dc07df4664cef230a)

doc/misc/tramp.texi
lisp/files.el

index 604d8c871b65493dc27900a4372841cdd8d2026d..febc266c249ff25c0bfadbebbc912675efe275ea 100644 (file)
@@ -5444,7 +5444,7 @@ HISTFILE=/dev/null
 Where are remote files trashed to?
 
 @vindex remote-file-name-inhibit-delete-by-moving-to-trash
-Emacs can trash file instead of deleting
+Emacs can trash files instead of deleting
 @ifinfo
 them, @ref{Misc File Ops, Trashing , , emacs}.
 @end ifinfo
@@ -5456,6 +5456,29 @@ option @code{remote-file-name-inhibit-delete-by-moving-to-trash} is
 non-@code{nil}, or it is a remote encrypted file (@pxref{Keeping files
 encrypted}), which are deleted anyway.
 
+@c Since Emacs 30.
+@vindex trash-directory
+If you want to trash a remote file into a remote trash directory, you
+could configure the user option @code{trash-directory} to a
+connection-local value.
+@ifinfo
+@xref{Connection Variables, , , emacs}.
+@end ifinfo
+
+@lisp
+@group
+(connection-local-set-profile-variables
+ 'remote-trash-directory
+ '((trash-directory . "/sudo::~/.local/share/Trash")))
+@end group
+
+@group
+(connection-local-set-profiles
+ `(:application tramp :protocol "sudo" :machine ,system-name)
+ 'remote-trash-directory)
+@end group
+@end lisp
+
 If Emacs is configured to use the XDG conventions for the trash
 directory, remote files cannot be restored with the respective tools,
 because those conventions don't specify remote paths.  Such files must
@@ -5882,6 +5905,17 @@ If these errors can be ignored, set user option
 non-@code{nil} value.  This transforms the error into a warning.
 
 
+@item
+How to ignore errors when changing file attributes?
+
+@vindex tramp-inhibit-errors-if-setting-file-attributes-fail
+Sometimes, for example while saving remote files, errors appear when
+changing file attributes like permissions, time stamps, or ownership.
+If these errors can be ignored, set user option
+@code{tramp-inhibit-errors-if-setting-file-attributes-fail} to a
+non-@code{nil} value.  This transforms the error into a warning.
+
+
 @item
 How to disable other packages from calling @value{tramp}?
 
index e80d2edc3fe7b89fa93d677059dbc7291c0bb583..97c686a14661e025fd1b05d25a8618eb825b6362 100644 (file)
@@ -8864,9 +8864,10 @@ Otherwise, trash FILENAME using the freedesktop.org conventions,
   ;; If `system-move-file-to-trash' is defined, use it.
   (cond ((fboundp 'system-move-file-to-trash)
         (system-move-file-to-trash filename))
-        (trash-directory
+        ((connection-local-value trash-directory)
         ;; If `trash-directory' is non-nil, move the file there.
-        (let* ((trash-dir   (expand-file-name trash-directory))
+        (let* ((trash-dir   (expand-file-name
+                              (connection-local-value trash-directory)))
                (fn          (directory-file-name (expand-file-name filename)))
                (new-fn      (concat (file-name-as-directory trash-dir)
                                     (file-name-nondirectory fn))))