Subject: Re: bug#14806: 24.3.50; Enabling read-file-name-completion-ignore-case breaks url-handler-mode

From: Stephen Berman <[email-masked]>
Date: Thu, 11 Jul 2013 00:20:56 +0200

On Wed, 10 Jul 2013 16:41:39 -0400 Glenn Morris <[email-masked]> wrote:

> Stephen Berman wrote:
>
>> 0. emacs -Q
>> 1. M-: (setq read-file-name-completion-ignore-case t)  (or customize it,
>>    or use set-variable)
>> 2. M-x url-handler-mode
>> 3. C-x C-f http://www.gnu.org RET
>> => error "Unimplemented"
>
> RET actually runs minibuffer-complete-and-exit, when
> completion-ignore-case is non-nil it tries to complete the input,
> completion is (obviously) not implemented for URLs.
> Dunno what to do about that.

To prevent the problem I reported, we could either change

(defun url-file-name-completion (url directory &optional predicate)
  (error "Unimplemented"))

to

(defun url-file-name-completion (url directory &optional predicate)
  (ignore))

or replace

(put 'file-name-completion 'url-file-handlers 'url-file-name-completion)

by

(put 'file-name-completion 'url-file-handlers 'ignore)

url-handlers.el already does the latter for "operations that we do not
support yet (DAV!!!)".  If the user tries to complete with TAB,
url-file-name-all-completions errors with "Unimplemented".  If we use
'ignore here too, then trying to complete gives "[No match]".  But as
long as the URL is valid and real, the page gets downloaded, so this
certainly seems better than the current state.  Is there some other
reason not to do this?

Steve Berman