Subject: bug#36496: [PATCH] Describe the rx notation in the lisp manual

From: Drew Adams <[email-masked]>
Date: Mon, 8 Jul 2019 17:19:32 -0700 (PDT)

>   > Do you mean they'd accept a quoted `rx' form (list)?
>   > What would a use case be - as opposed to accepting
>   > the result of macro-expanding such a form?  Assuming
>   > there's good use case, maybe so.
> 
> Quoting is a little more brief than writing (rx ...).

Sorry, but I don't really understand.  I know little
about `rx'.

>   > [But there may be some functions that already have a
>   > (different) interpretation of a list value for the
>   > same arg that could alternatively be a regexp string.
>   > (So maybe not "all" such functions.)]
> 
> Are there any?  If so, it would be desirable to change them.

I was responding to this from you:

  WHat would people think of making all the functions that want a regexp
  accept an rx input equivalently?  If the arg is not a string, treat it
  as rx format.  Compilation could convert a constant non-string, for
  such args, to a regexp string.

I see now that you said "an rx input", so presumably
not just a list as arg but a list with car `rx'.  I
was thinking you meant just a list.  I'd bet there
are some functions that accept an arg that can be a
(nonempty) list or a string, and maybe even a regexp
string.  If there are then some minor adjustment
could be called for; that's all.

>   > Even assuming such a use case, should the compiler
>   > assume that _every_ such list arg should be compiled
>   > to a regexp string?
> 
> Why not?  Is there any case in which it would be better
> to translate the rx to a regexp at run time?

I think I misunderstood you, and might still.
Still, there's a difference between passing
(quote SOME-MACRO-SEXP) as arg and passing
SOME-MACRO-SEXP.  We have `quote' for a reason.

If you want macro-expansion at compile time
why wouldn't you just pass (rx...) as the arg,
instead of (quote (rx...))?

But you know all this better than I, so no doubt
I'm just missing your point - in which case feel
free to ignore.

>   > > The only problem is, which key would it be?
> 
>   > Some non-repeatable key.  Some key that can't be
>   > used (by default) to edit minibuffer text.  Maybe
>   > something like `C-x x'?
> 
> Is there any reasonable one-character key?

There are lots of 1-char keys that are not defined
in a minibuffer keymap by default.  And perhaps
even some that are defined there by default but
that aren't useful for reading a regexp (so could
be co-opted when reading regexp input, if needed).

As just one example, `M-R' is not defined (`M-r'
is).  `M-R' is `move-to-window-line-top-bottom',
which isn't so useful in a minibuffer window.

(It is a repeatable key, BTW, and its global
binding is a repeatable command.  But that command
isn't very useful in the minibuffer.)