Subject: bug#56548: 29.0.50; read-expression-map conflict with read-from-minibuffer and default-value

From: Phil Sainty <[email-masked]>
Date: Thu, 14 Jul 2022 15:36:56 +1200

I have the following code, where the t is the READ argument,
and the DEFAULT-VALUE of "nil" means that if the user enters
no value, we read and return nil.

(read-from-minibuffer "Context expression: "
                       nil read-expression-map t
                       'read-expression-history "nil")

That worked in Emacs 27, but in Emacs 28+ we now get a temporary
message "[End of file during parsing]" alongside the prompt, and
`read-from-minibuffer' continues waiting for input, ignoring the
default value.

https://debbugs.gnu.org/cgi/bugreport.cgi?bug=42893 is the
direct cause, as `read-expression-map' now binds RET to
`read--expression-try-read' which doesn't like the empty string.

I can stop using `read-expression-map' here; but as the purpose
of the code is to read an expression, and surely there may be
other code out there like mine, I wondered if there was a better
solution.

-Phil

In GNU Emacs 29.0.50 (build 2, x86_64-pc-linux-gnu, X toolkit, cairo 
version 1.15.10, Xaw scroll bars)
  of 2022-06-08 built on phil-lp
Repository revision: 22d3f0e95a5602b2bde763cff185f5b4fed6e53e
Repository branch: master