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)
This commit is contained in:
parent
cf897a70b7
commit
6653bb45d3
2 changed files with 34 additions and 29 deletions
|
@ -1882,6 +1882,7 @@ If INITIAL is non-nil, it specifies the initial input string."
|
||||||
ido-selected
|
ido-selected
|
||||||
ido-final-text
|
ido-final-text
|
||||||
(done nil)
|
(done nil)
|
||||||
|
(non-essential t) ;; prevent eager Tramp connection
|
||||||
(icomplete-mode nil) ;; prevent icomplete starting up
|
(icomplete-mode nil) ;; prevent icomplete starting up
|
||||||
;; Exported dynamic variables:
|
;; Exported dynamic variables:
|
||||||
ido-cur-list
|
ido-cur-list
|
||||||
|
|
|
@ -2905,35 +2905,39 @@ User is always nil."
|
||||||
(or ;; Maybe there is a default value.
|
(or ;; Maybe there is a default value.
|
||||||
(tramp-get-method-parameter v 'tramp-case-insensitive)
|
(tramp-get-method-parameter v 'tramp-case-insensitive)
|
||||||
|
|
||||||
;; There isn't. So we must check.
|
;; 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"
|
(with-tramp-connection-property v "case-insensitive"
|
||||||
;; The idea is to compare a file with lower case letters with
|
;; The idea is to compare a file with lower case letters
|
||||||
;; the same file with upper case letters.
|
;; with the same file with upper case letters.
|
||||||
(let ((candidate (directory-file-name filename))
|
(let ((candidate (directory-file-name filename))
|
||||||
tmpfile)
|
tmpfile)
|
||||||
;; Check, whether we find an existing file with lower case
|
;; Check, whether we find an existing file with lower case
|
||||||
;; letters. This avoids us to create a temporary file.
|
;; letters. This avoids us to create a temporary file.
|
||||||
(while (and (string-match "[a-z]" (file-remote-p candidate 'localname))
|
(while (and (string-match
|
||||||
|
"[a-z]" (file-remote-p candidate 'localname))
|
||||||
(not (file-exists-p candidate)))
|
(not (file-exists-p candidate)))
|
||||||
(setq candidate
|
(setq candidate
|
||||||
(directory-file-name (file-name-directory candidate))))
|
(directory-file-name (file-name-directory candidate))))
|
||||||
;; Nothing found, so we must use a temporary file for
|
;; Nothing found, so we must use a temporary file for
|
||||||
;; comparision. `make-nearby-temp-file' is added to Emacs
|
;; comparision. `make-nearby-temp-file' is added to
|
||||||
;; 26+ like `file-name-case-insensitive-p', so there is no
|
;; Emacs 26+ like `file-name-case-insensitive-p', so
|
||||||
;; compatibility problem calling it.
|
;; there is no compatibility problem calling it.
|
||||||
(unless (string-match "[a-z]" (file-remote-p candidate 'localname))
|
(unless
|
||||||
|
(string-match "[a-z]" (file-remote-p candidate 'localname))
|
||||||
(setq tmpfile
|
(setq tmpfile
|
||||||
(let ((default-directory (file-name-directory filename)))
|
(let ((default-directory (file-name-directory filename)))
|
||||||
(tramp-compat-funcall 'make-nearby-temp-file "tramp."))
|
(tramp-compat-funcall 'make-nearby-temp-file "tramp."))
|
||||||
candidate tmpfile))
|
candidate tmpfile))
|
||||||
;; Check for the existence of the same file with upper case letters.
|
;; Check for the existence of the same file with upper
|
||||||
|
;; case letters.
|
||||||
(unwind-protect
|
(unwind-protect
|
||||||
(file-exists-p
|
(file-exists-p
|
||||||
(concat
|
(concat
|
||||||
(file-remote-p candidate)
|
(file-remote-p candidate)
|
||||||
(upcase (file-remote-p candidate 'localname))))
|
(upcase (file-remote-p candidate 'localname))))
|
||||||
;; Cleanup.
|
;; Cleanup.
|
||||||
(when tmpfile (delete-file tmpfile))))))))
|
(when tmpfile (delete-file tmpfile)))))))))
|
||||||
|
|
||||||
(defun tramp-handle-file-name-completion
|
(defun tramp-handle-file-name-completion
|
||||||
(filename directory &optional predicate)
|
(filename directory &optional predicate)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue