Subject: Re: bug#27844: 26.0.50; Dired w/ eshell-ls doesn't support wildcards in file name

From: Eli Zaretskii <[email-masked]>
Date: Tue, 01 Aug 2017 16:40:02 +0300

> From: Tino Calancha <[email-masked]>
> Cc: [email-masked]
> Date: Tue, 01 Aug 2017 12:00:39 +0900
> 
> Eli Zaretskii <[email-masked]> writes:
> 
> >> From: Tino Calancha <[email-masked]>
> >> Date: Thu, 27 Jul 2017 18:23:08 +0900
> >> 
> >> `eshell-extended-glob' returns a list of matches on success, otherwise
> >> it returns FILE;  if no match i think we should signal an error.
> >
> > Whether this should be an error or just FILE is a matter of personal
> > preferences, I think.  Some shells behave this way, others the other
> > way.  So either we should leave your original patch as it was, or
> > introduce a defcustom to produce an error if the user so wants.
> Indeed such defcustom already does exist: eshell-error-if-no-glob
> (default to nil).
> You can see at the end of `eshell-extended-glob':
> (if eshell-error-if-no-glob
> 	    (error "No matches found: %s" glob)
> 	  glob)

I'm confused: I wasn't commenting on what eshell-extended-glob does, I
was commenting about your code:

  +                     (let ((matches (eshell-extended-glob file)))
  +                       (if (consp matches)
  +                           (mapcar #'file-relative-name matches)
  +                         (user-error (format "%s: No files matching wildcard" file))))
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

If eshell-extended-glob already signals an error when it's TRT, why do
you need to signal an error if Eshell doesn't?  What am I missing?

Thanks.