summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Albinus <michael.albinus@gmx.de>2014-04-10 09:17:40 +0200
committerMichael Albinus <michael.albinus@gmx.de>2014-04-10 09:17:40 +0200
commitbcbb83a92d3a65f0c724a043836a8c60aa09f57c (patch)
treee6e47b431dda28dd118337a3f794d3a851fb2151
parent0cccc183d7530d342e7970f4544cdf70e3327cb6 (diff)
downloademacs-bcbb83a92d3a65f0c724a043836a8c60aa09f57c.tar.gz
* 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.
-rw-r--r--lisp/ChangeLog8
-rw-r--r--lisp/net/tramp-sh.el7
-rw-r--r--lisp/net/tramp.el16
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 <michael.albinus@gmx.de>
+
+ * 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 <dgutov@yandex.ru>
* 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.