* net/tramp.el (tramp-file-name-handler): Catch 'non-essential.
* net/ange-ftp.el (ange-ftp-gwp-start, ange-ftp-start-process):
* net/tramp-sh.el (tramp-maybe-open-connection):
Throw if `non-essential' is non-nil.
+2012-06-17 Michael Albinus <michael.albinus@gmx.de>
+
+ * minibuffer.el (read-file-name-default): Bind `non-essential' to `t'.
+
+ * net/tramp.el (tramp-file-name-handler): Catch 'non-essential.
+
+ * net/ange-ftp.el (ange-ftp-gwp-start, ange-ftp-start-process):
+ * net/tramp-sh.el (tramp-maybe-open-connection):
+ Throw if `non-essential' is non-nil.
+
2012-06-17 Martin Rudalics <rudalics@gmx.at>
* window.el (special-display-p): Signal an error if BUFFER-NAME
(if (consp default-filename)
(mapcar 'abbreviate-file-name default-filename)
(abbreviate-file-name default-filename))))
- (let ((insdef (cond
+ (let ((non-essential t)
+ (insdef (cond
((and insert-default-directory (stringp dir))
(if initial
(cons (minibuffer--double-dollars (concat dir initial))
(defun ange-ftp-gwp-start (host user name args)
"Login to the gateway machine and fire up an FTP process."
+ ;; If `non-essential' is non-nil, don't reopen a new connection. It
+ ;; will be catched in Tramp.
+ (when non-essential
+ (throw 'non-essential 'non-essential))
(let (;; It would be nice to make process-connection-type nil,
;; but that doesn't work: ftp never responds.
;; Can anyone find a fix for that?
"Spawn a new FTP process ready to connect to machine HOST and give it NAME.
If HOST is only FTP-able through a gateway machine then spawn a shell
on the gateway machine to do the FTP instead."
+ ;; If `non-essential' is non-nil, don't reopen a new connection. It
+ ;; will be catched in Tramp.
+ (when non-essential
+ (throw 'non-essential 'non-essential))
(let* ((use-gateway (ange-ftp-use-gateway-p host))
(use-smart-ftp (and (not ange-ftp-gateway-host)
(ange-ftp-use-smart-gateway-p host)))
;; We call `tramp-get-buffer' in order to get a debug
;; buffer for messages from the beginning.
(tramp-get-buffer vec)
+
+ ;; If `non-essential' is non-nil, don't reopen a new connection.
+ (when non-essential
+ (throw 'non-essential 'non-essential))
+
(tramp-with-progress-reporter
vec 3
(if (zerop (length (tramp-file-name-user vec)))
(let ((default-directory
(tramp-compat-temporary-file-directory)))
(load (cadr sf) 'noerror 'nomessage)))
+ ;; If `non-essential' is non-nil, Tramp shall
+ ;; not open a new connection.
;; If Tramp detects that it shouldn't continue
- ;; to work, it throws the `suppress' event. We
- ;; try the default handler then.
+ ;; to work, it throws the `suppress' event.
;; This could happen for example, when Tramp
;; tries to open the same connection twice in a
;; short time frame.
+ ;; In both cases, we try the default handler then.
(setq result
- (catch 'suppress (apply foreign operation args)))
- (if (eq result 'suppress)
- (let (tramp-message-show-message)
- (tramp-message
- v 1 "Suppress received in operation %s"
- (append (list operation) args))
- (tramp-cleanup v)
- (tramp-run-real-handler operation args))
- result))
+ (catch 'non-essential
+ (catch 'suppress
+ (apply foreign operation args))))
+ (cond
+ ((eq result 'non-essential)
+ (tramp-message
+ v 5 "Non-essential received in operation %s"
+ (append (list operation) args))
+ (tramp-run-real-handler operation args))
+ ((eq result 'suppress)
+ (let (tramp-message-show-message)
+ (tramp-message
+ v 1 "Suppress received in operation %s"
+ (append (list operation) args))
+ (tramp-cleanup v)
+ (tramp-run-real-handler operation args)))
+ (t result)))
;; Trace that somebody has interrupted the operation.
((debug quit)