Subject: Re: bug#6299: In read-file-name: (args-out-of-range "c:" 0 3)

From: Lennart Borgman <[email-masked]>
Date: Sun, 30 May 2010 19:39:42 +0200

On Sun, May 30, 2010 at 4:05 PM, Stefan Monnier
<[email-masked]> wrote:
>
> You're missing that "delegate to completion-file-name-table" means

No, but I saw in the patch that you understood what I mean. Excuse my
bad explanation, I was just convinced that you should see it.

>> BTW the doc string for action in completing read etc should be fixed.
>
> I don't know what you mean here.

I meant the argument ACTION to some function, but what exactly was I reading??

Note that my current checkout is from 2010-05-22. Here are some doc
strings which makes me confused:

(defun completion-table-with-predicate (table pred1 strict string pred2 action)
  "Make a completion table equivalent to TABLE but filtered through PRED1.
PRED1 is a function of one argument which returns non-nil if and only if the
argument is an element of TABLE which should be considered for completion.
STRING, PRED2, and ACTION are the usual arguments to completion tables,
as described in `try-completion', `all-completions', and `test-completion'.
If STRICT is t, the predicate always applies; if nil it only applies if
it does not reduce the set of possible completions to nothing.
Note: TABLE needs to be a proper completion table which obeys predicates."

There is no ACTION arg to try-completion etc.

(defun complete-with-action (action table string pred)
  "Perform completion ACTION.
STRING is the string to complete.
TABLE is the completion table, which should not be a function.
PRED is a completion predicate.
ACTION can be one of nil, t or `lambda'."

It looks like ACTION is tested against n and t but not against lambda.
And I think it can have other values, since the code seems to expect
something like '(boundaries ...) ...