* 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.
This commit is contained in:
parent
ddfbf826bc
commit
298551496f
5 changed files with 46 additions and 12 deletions
|
@ -1,3 +1,13 @@
|
|||
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
|
||||
|
|
|
@ -2335,7 +2335,8 @@ See `read-file-name' for the meaning of the arguments."
|
|||
(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))
|
||||
|
|
|
@ -1774,6 +1774,10 @@ good, skip, fatal, or unknown."
|
|||
|
||||
(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?
|
||||
|
@ -1905,6 +1909,10 @@ been queued with no result. CONT will still be called, however."
|
|||
"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)))
|
||||
|
|
|
@ -4292,6 +4292,11 @@ connection if a previous connection has died for some reason."
|
|||
;; 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)))
|
||||
|
|
|
@ -1928,22 +1928,32 @@ Falls back to normal file name handler if no Tramp file name handler exists."
|
|||
(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)
|
||||
|
|
Loading…
Add table
Reference in a new issue