emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master 6653bb4: Fix Bug#24947 (Tramp + ido)


From: Michael Albinus
Subject: [Emacs-diffs] master 6653bb4: Fix Bug#24947 (Tramp + ido)
Date: Thu, 17 Nov 2016 11:39:06 +0000 (UTC)

branch: master
commit 6653bb45d3697c9372cc77773c49f52399740b51
Author: Michael Albinus <address@hidden>
Commit: Michael Albinus <address@hidden>

    Fix Bug#24947 (Tramp + ido)
    
    * 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       |    1 +
 lisp/net/tramp.el |   62 ++++++++++++++++++++++++++++-------------------------
 2 files changed, 34 insertions(+), 29 deletions(-)

diff --git a/lisp/ido.el b/lisp/ido.el
index 0e74cbc..9df89c9 100644
--- a/lisp/ido.el
+++ b/lisp/ido.el
@@ -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
diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el
index b0391ec..e9697ff 100644
--- a/lisp/net/tramp.el
+++ b/lisp/net/tramp.el
@@ -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)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]