Function: tramp-add-hops
tramp-add-hops is a byte-compiled function defined in tramp.el.gz.
Signature
(tramp-add-hops VEC)
Documentation
Add ad-hoc proxy definitions to tramp-default-proxies-alist.
Source Code
;; Defined in /usr/src/emacs/lisp/net/tramp.el.gz
(defun tramp-add-hops (vec)
"Add ad-hoc proxy definitions to `tramp-default-proxies-alist'."
;; `tramp-default-proxies-alist' is bound to `tramp-cache-undefined'
;; in `tramp-handle-file-name-as-directory' and
;; `tramp-handle-file-name-directory' suppressing to add a hop.
(when-let* (((not (eq tramp-default-proxies-alist tramp-cache-undefined)))
(hops (tramp-file-name-hop vec))
(item vec))
(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))
(host-port (and (stringp host-port)
(rx bol (literal host-port) eol)))
(user-domain (tramp-file-name-user-domain item))
(user-domain (and (stringp user-domain)
(rx bol (literal user-domain) eol)))
(proxy (concat
tramp-prefix-format proxy tramp-postfix-host-format))
(entry
(list host-port user-domain (propertize proxy 'tramp-ad-hoc t))))
;; Remove superfluous entries.
(when tramp-show-ad-hoc-proxies
(dolist (entry1 tramp-default-proxies-alist)
(when (and (equal host-port (car entry1))
(equal user-domain (cadr entry1))
(not (equal proxy (caddr entry1))))
(tramp-message
vec 5 "Remove %S from `tramp-default-proxies-alist'" entry1)
(tramp-cleanup-connection
vec 'keep-debug 'keep-password 'keep-processes)
(setq tramp-default-proxies-alist
(delete entry1 tramp-default-proxies-alist)))))
;; 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)))))