]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix regression when saving tramp-default-proxies-alist
authorMichael Albinus <michael.albinus@gmx.de>
Mon, 29 May 2023 09:37:33 +0000 (11:37 +0200)
committerMichael Albinus <michael.albinus@gmx.de>
Mon, 29 May 2023 09:37:33 +0000 (11:37 +0200)
* lisp/net/tramp.el (tramp-add-hops): Suppress `signal-hook-function'.
Save `tramp-default-proxies-alist' only when changed.

lisp/net/tramp.el

index ecc950adfde76eebe21a8b9e0b70d823b7fae20b..8c26f533bb8f50194935effc8367aca80c1eb48a 100644 (file)
@@ -4851,25 +4851,29 @@ Do not set it manually, it is used buffer-local in `tramp-get-lock-pid'.")
   "Add ad-hoc proxy definitions to `tramp-default-proxies-alist'."
   (when-let ((hops (tramp-file-name-hop vec))
             (item vec))
-    (dolist (proxy (reverse (split-string hops tramp-postfix-hop-regexp 'omit)))
-      (let* ((host-port (tramp-file-name-host-port item))
-            (user-domain (tramp-file-name-user-domain item))
-            (proxy (concat
-                    tramp-prefix-format proxy tramp-postfix-host-format))
-            (entry
-             (list (and (stringp host-port)
-                        (rx bol (literal host-port) eol))
-                   (and (stringp user-domain)
-                        (rx bol (literal user-domain) eol))
-                   (propertize proxy 'tramp-ad-hoc t))))
-       (tramp-message vec 5 "Add %S to `tramp-default-proxies-alist'" entry)
-       ;; Add the hop.
-       (add-to-list 'tramp-default-proxies-alist entry)
-       (setq item (tramp-dissect-file-name proxy))))
-    ;; Save the new value.
-    (when tramp-save-ad-hoc-proxies
-      (customize-save-variable
-       'tramp-default-proxies-alist tramp-default-proxies-alist))))
+    (let (signal-hook-function changed)
+      (dolist
+         (proxy (reverse (split-string hops tramp-postfix-hop-regexp 'omit)))
+       (let* ((host-port (tramp-file-name-host-port item))
+              (user-domain (tramp-file-name-user-domain item))
+              (proxy (concat
+                      tramp-prefix-format proxy tramp-postfix-host-format))
+              (entry
+               (list (and (stringp host-port)
+                          (rx bol (literal host-port) eol))
+                     (and (stringp user-domain)
+                          (rx bol (literal user-domain) eol))
+                     (propertize proxy 'tramp-ad-hoc t))))
+         ;; Add the hop.
+         (unless (member entry tramp-default-proxies-alist)
+           (tramp-message vec 5 "Add %S to `tramp-default-proxies-alist'" entry)
+           (add-to-list 'tramp-default-proxies-alist entry)
+           (setq changed t))
+         (setq item (tramp-dissect-file-name proxy))))
+      ;; Save the new value.
+      (when (and tramp-save-ad-hoc-proxies changed)
+       (customize-save-variable
+        'tramp-default-proxies-alist tramp-default-proxies-alist)))))
 
 (defun tramp-compute-multi-hops (vec)
   "Expands VEC according to `tramp-default-proxies-alist'."