From: Michael Albinus Date: Fri, 19 Apr 2024 10:15:47 +0000 (+0200) Subject: New user option tramp-inhibit-errors-if-setting-file-attributes-fail X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=93ca9279eff3551c7781036a51137fcb8ca2bb6c;p=emacs.git New user option tramp-inhibit-errors-if-setting-file-attributes-fail * 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) --- diff --git a/doc/misc/tramp.texi b/doc/misc/tramp.texi index 3df9eae9a90..604d8c871b6 100644 --- a/doc/misc/tramp.texi +++ b/doc/misc/tramp.texi @@ -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}? diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el index 6e74ec320b4..988c9396f60 100644 --- a/lisp/net/tramp.el +++ b/lisp/net/tramp.el @@ -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)