]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix Bug#24947 (Tramp + ido)
authorMichael Albinus <michael.albinus@gmx.de>
Thu, 17 Nov 2016 11:38:58 +0000 (12:38 +0100)
committerMichael Albinus <michael.albinus@gmx.de>
Thu, 17 Nov 2016 11:38:58 +0000 (12:38 +0100)
* lisp/ido.el (ido-read-internal): Prevent eager Tramp connection.

* lisp/net/tramp.el (tramp-handle-file-name-case-insensitive-p):
Run remote tests only if a connection is established only.  (Bug#24947)

lisp/ido.el
lisp/net/tramp.el

index 0e74cbc7a2d452a38e9d336fe7667de0ccefa6a6..9df89c9fb61b47ab3058a59dfa3f8555a509c784 100644 (file)
@@ -1882,6 +1882,7 @@ If INITIAL is non-nil, it specifies the initial input string."
        ido-selected
        ido-final-text
        (done nil)
+       (non-essential t) ;; prevent eager Tramp connection
        (icomplete-mode nil) ;; prevent icomplete starting up
        ;; Exported dynamic variables:
        ido-cur-list
index b0391ec77145073a112ba7ed7acfc0e8bb4e69f4..e9697ff2e1edafd4f12cbfa3c52316198a6ad216 100644 (file)
@@ -2905,35 +2905,39 @@ User is always nil."
     (or ;; Maybe there is a default value.
      (tramp-get-method-parameter v 'tramp-case-insensitive)
 
-     ;; There isn't. So we must check.
-     (with-tramp-connection-property v "case-insensitive"
-       ;; The idea is to compare a file with lower case letters with
-       ;; the same file with upper case letters.
-       (let ((candidate (directory-file-name filename))
-            tmpfile)
-        ;; Check, whether we find an existing file with lower case
-        ;; letters.  This avoids us to create a temporary file.
-        (while (and (string-match "[a-z]" (file-remote-p candidate 'localname))
-                    (not (file-exists-p candidate)))
-          (setq candidate
-                (directory-file-name (file-name-directory candidate))))
-        ;; Nothing found, so we must use a temporary file for
-        ;; comparision.  `make-nearby-temp-file' is added to Emacs
-        ;; 26+ like `file-name-case-insensitive-p', so there is no
-        ;; compatibility problem calling it.
-        (unless (string-match "[a-z]" (file-remote-p candidate 'localname))
-          (setq tmpfile
-                (let ((default-directory (file-name-directory filename)))
-                  (tramp-compat-funcall 'make-nearby-temp-file "tramp."))
-                candidate tmpfile))
-        ;; Check for the existence of the same file with upper case letters.
-        (unwind-protect
-            (file-exists-p
-             (concat
-              (file-remote-p candidate)
-              (upcase (file-remote-p candidate 'localname))))
-          ;; Cleanup.
-          (when tmpfile (delete-file tmpfile))))))))
+     ;; There isn't. So we must check, in case there's a connection already.
+     (and (tramp-connectable-p filename)
+          (with-tramp-connection-property v "case-insensitive"
+            ;; The idea is to compare a file with lower case letters
+            ;; with the same file with upper case letters.
+            (let ((candidate (directory-file-name filename))
+                  tmpfile)
+              ;; Check, whether we find an existing file with lower case
+              ;; letters.  This avoids us to create a temporary file.
+              (while (and (string-match
+                           "[a-z]" (file-remote-p candidate 'localname))
+                          (not (file-exists-p candidate)))
+                (setq candidate
+                      (directory-file-name (file-name-directory candidate))))
+              ;; Nothing found, so we must use a temporary file for
+              ;; comparision.  `make-nearby-temp-file' is added to
+              ;; Emacs 26+ like `file-name-case-insensitive-p', so
+              ;; there is no compatibility problem calling it.
+              (unless
+                  (string-match "[a-z]" (file-remote-p candidate 'localname))
+                (setq tmpfile
+                      (let ((default-directory (file-name-directory filename)))
+                        (tramp-compat-funcall 'make-nearby-temp-file "tramp."))
+                      candidate tmpfile))
+              ;; Check for the existence of the same file with upper
+              ;; case letters.
+              (unwind-protect
+                  (file-exists-p
+                   (concat
+                    (file-remote-p candidate)
+                    (upcase (file-remote-p candidate 'localname))))
+                ;; Cleanup.
+                (when tmpfile (delete-file tmpfile)))))))))
 
 (defun tramp-handle-file-name-completion
   (filename directory &optional predicate)