Subject: Re: bug#11808: IDO fails with tramp /ftp:

From: Michael Albinus <[email-masked]>
Date: Thu, 28 Jun 2012 16:46:51 +0200

Vitalie Spinu <[email-masked]> writes:

> Hi, 

Hi,

> How to reproduce:
>
> M-x ido-mode
>
> C-x f /ftp:[email-masked]:
>
> This doesn't happen with emacs 23. It also works fine without IDO on
> emacs 24.
>
> Any ideas?

Does the following patch helps?

--8<---------------cut here---------------start------------->8---
*** /usr/local/src/emacs/lisp/net/ange-ftp.el.~108784~   2012-06-28 16:41:24.871729482 +0200
--- /usr/local/src/emacs/lisp/net/ange-ftp.el          2012-06-28 16:40:38.101623909 +0200
***************
*** 3969,3978 ****
       (string-match "\\`[a-zA-Z]:[/\\]\\'" dir))
        (string-equal "/" dir)))
  
  (defun ange-ftp-file-name-all-completions (file dir)
    (let ((ange-ftp-this-dir (expand-file-name dir)))
      (if (ange-ftp-ftp-name ange-ftp-this-dir)
!     (progn
        (ange-ftp-barf-if-not-directory ange-ftp-this-dir)
          (setq ange-ftp-this-dir
                (ange-ftp-real-file-name-as-directory ange-ftp-this-dir))
--- 3969,3983 ----
       (string-match "\\`[a-zA-Z]:[/\\]\\'" dir))
        (string-equal "/" dir)))
  
+ (defmacro ange-ftp-ignore-errors-if-non-essential (&rest body)
+   `(if non-essential
+        (ignore-errors ,@body)
+      (progn ,@body)))
+ 
  (defun ange-ftp-file-name-all-completions (file dir)
    (let ((ange-ftp-this-dir (expand-file-name dir)))
      (if (ange-ftp-ftp-name ange-ftp-this-dir)
!     (ange-ftp-ignore-errors-if-non-essential
        (ange-ftp-barf-if-not-directory ange-ftp-this-dir)
          (setq ange-ftp-this-dir
                (ange-ftp-real-file-name-as-directory ange-ftp-this-dir))
--8<---------------cut here---------------end--------------->8---

> Vitalie.

Best regards, Michael.