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)))))