From bcbb83a92d3a65f0c724a043836a8c60aa09f57c Mon Sep 17 00:00:00 2001 From: Michael Albinus Date: Thu, 10 Apr 2014 09:17:40 +0200 Subject: [PATCH] * net/tramp.el (tramp-file-name-handler) (tramp-completion-file-name-handler): Avoid recursive loading. * net/tramp-sh.el (tramp-make-copy-program-file-name): Quote result also locally. --- lisp/ChangeLog | 8 ++++++++ lisp/net/tramp-sh.el | 7 ++++--- lisp/net/tramp.el | 16 ++++++++++++++-- 3 files changed, 26 insertions(+), 5 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 09d5ff427bb..f37a67e5836 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,11 @@ +2014-04-10 Michael Albinus + + * net/tramp.el (tramp-file-name-handler) + (tramp-completion-file-name-handler): Avoid recursive loading. + + * net/tramp-sh.el (tramp-make-copy-program-file-name): + Quote result also locally. + 2014-04-09 Dmitry Gutov * progmodes/ruby-mode.el (ruby-font-lock-keywords): Highlight more diff --git a/lisp/net/tramp-sh.el b/lisp/net/tramp-sh.el index 22ea7714743..8ff29a8b426 100644 --- a/lisp/net/tramp-sh.el +++ b/lisp/net/tramp-sh.el @@ -4836,9 +4836,10 @@ Return ATTR." (host (tramp-file-name-real-host vec)) (localname (tramp-shell-quote-argument (tramp-file-name-localname vec)))) - (if (not (zerop (length user))) - (format "%s@%s:%s" user host localname) - (format "%s:%s" host localname)))) + (shell-quote-argument + (if (not (zerop (length user))) + (format "%s@%s:%s" user host localname) + (format "%s:%s" host localname))))) (defun tramp-method-out-of-band-p (vec size) "Return t if this is an out-of-band method, nil otherwise." diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el index 20948181414..51cc13fed7c 100644 --- a/lisp/net/tramp.el +++ b/lisp/net/tramp.el @@ -2106,7 +2106,16 @@ ARGS are the arguments OPERATION has been called with." Falls back to normal file name handler if no Tramp file name handler exists." (if tramp-mode (save-match-data - (let* ((filename + (let* ((default-directory + ;; Some packages set the default directory to a + ;; remote path, before tramp.el has been loaded. + ;; This results in recursive loading. Therefore, we + ;; set `default-directory' to a local path. `args' + ;; could also be remote when loading tramp.el, but + ;; that would be such perverse we don't care about. + (if load-in-progress + temporary-file-directory default-directory)) + (filename (tramp-replace-environment-variables (apply 'tramp-file-name-for-operation operation args))) (completion (tramp-completion-mode-p)) @@ -2218,8 +2227,11 @@ preventing reentrant calls of Tramp.") "Invoke Tramp file name completion handler. Falls back to normal file name handler if no Tramp file name handler exists." ;; We bind `directory-sep-char' here for XEmacs on Windows, which - ;; would otherwise use backslash. + ;; would otherwise use backslash. For `default-directory', see + ;; comment in `tramp-file-name-handler'. (let ((directory-sep-char ?/) + (default-directory + (if load-in-progress temporary-file-directory default-directory)) (fn (assoc operation tramp-completion-file-name-handler-alist))) (if (and ;; When `tramp-mode' is not enabled, we don't do anything. -- 2.39.2