]> git.eshelyaron.com Git - emacs.git/commitdiff
* net/tramp.el (tramp-file-name-handler)
authorMichael Albinus <michael.albinus@gmx.de>
Thu, 10 Apr 2014 07:17:40 +0000 (09:17 +0200)
committerMichael Albinus <michael.albinus@gmx.de>
Thu, 10 Apr 2014 07:17:40 +0000 (09:17 +0200)
(tramp-completion-file-name-handler): Avoid recursive loading.

* net/tramp-sh.el (tramp-make-copy-program-file-name):
Quote result also locally.

lisp/ChangeLog
lisp/net/tramp-sh.el
lisp/net/tramp.el

index 09d5ff427bbcdd465f529d2ff85717ea6bdfad31..f37a67e583649658ca50c5186421f05ecdfbba78 100644 (file)
@@ -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
index 22ea77147438f6ad12f6daa872454e7f700d0bc3..8ff29a8b426c783dc9c5f73dc6c0aa4092313665 100644 (file)
@@ -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."
index 20948181414db2c24d66317efeba89496115c126..51cc13fed7cc75f12e2e1a3b0998f8c71a8ea03f 100644 (file)
@@ -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.