]> git.eshelyaron.com Git - emacs.git/commitdiff
New user option tramp-inhibit-errors-if-setting-file-attributes-fail
authorMichael Albinus <michael.albinus@gmx.de>
Fri, 19 Apr 2024 10:15:47 +0000 (12:15 +0200)
committerEshel Yaron <me@eshelyaron.com>
Sat, 20 Apr 2024 11:08:32 +0000 (14:08 +0300)
* doc/misc/tramp.texi (Frequently Asked Questions):
Explain tramp-inhibit-errors-if-setting-file-attributes-fail.

* lisp/net/tramp.el
(tramp-inhibit-errors-if-setting-file-attributes-fail): New defcustom.
(tramp-skeleton-set-file-modes-times-uid-gid): Use it.

(cherry picked from commit 52d3ee46dbc6fb0fbcfbb8e446fb385aef189893)

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

index 3df9eae9a90f344f1e7f14ef591ac6de95d32670..604d8c871b65493dc27900a4372841cdd8d2026d 100644 (file)
@@ -5871,6 +5871,17 @@ as above in your @file{~/.emacs}:
 @end lisp
 
 
+@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 6e74ec320b41d315c329487199d26b8b2548d627..988c9396f608f5423cad6f5550402caf2f16df71 100644 (file)
@@ -3525,6 +3525,11 @@ on the same host.  Otherwise, TARGET is quoted."
 
        ,@body)))
 
+(defcustom tramp-inhibit-errors-if-setting-file-attributes-fail nil
+  "Whether to warn only if `tramp-*-set-file-{modes,times,uid-gid}' fails."
+  :version "30.1"
+  :type 'boolean)
+
 (defmacro tramp-skeleton-set-file-modes-times-uid-gid
     (filename &rest body)
   "Skeleton for `tramp-*-set-file-{modes,times,uid-gid}'.
@@ -3540,7 +3545,11 @@ BODY is the backend specific code."
         ;; "file-writable-p".
         '("file-directory-p" "file-exists-p" "file-symlinkp" "file-truename")
        (tramp-flush-file-properties v localname))
-     ,@body))
+     (condition-case err
+        (progn ,@body)
+       (error (if tramp-inhibit-errors-if-setting-file-attributes-fail
+                 (display-warning 'tramp (error-message-string err))
+               (signal (car err) (cdr err)))))))
 
 (defmacro tramp-skeleton-write-region
   (start end filename append visit lockname mustbenew &rest body)