Hi Stefan,
I am not a good judge for this. Can you please commit the fix that feels the most right?
> Stefan should be able to comment more on why that changes the behavior of
> the prompt staying vs disappearing.
Good question. `read-key' uses `read-key-sequence' internally, and this
function has always left the prompt on display.
Maybe read-key should be changed to behave more like read-event (and
read-char), since it's typically used in the same kinds of situations.
IOW, we should probably install one of the two patches below.
Stefan
diff --git a/lisp/subr.el b/lisp/subr.el
index 7478595..cd1b945 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -2116,6 +2116,10 @@ some sort of escape sequence, the ambiguity is resolved via `read-key-delay'."
(aref keys 1)
key)))
(cancel-timer timer)
+ ;; For some reason, `read-key(-sequence)' leaves the prompt in the echo
+ ;; area, whereas `read-event' seems to empty it just before returning
+ ;; (bug#22714). So, let's mimick the behavior of `read-event'.
+ (message nil)
(use-global-map old-global-map))))
(defun read-char (&optional prompt) ;; (inherit-input-method seconds)
diff --git a/lisp/register.el b/lisp/register.el
index faed49a..5fab2b0 100644
--- a/lisp/register.el
+++ b/lisp/register.el
@@ -164,6 +164,13 @@ display such a window regardless."
help-chars)
(unless (get-buffer-window buffer)
(register-preview buffer 'show-empty)))
+ ;; FIXME: For some reason, `read-key(-sequence)' leaves the prompt in
+ ;; the echo area, contrary to `read-event' which seems to empty it
+ ;; just before returning (bug#22714).
+ ;; Not sure what's the best fix: maybe read-key should be changed to
+ ;; behave like read-event. But in the mean time, the hack below
+ ;; should work.
+ (message nil)
(if (characterp last-input-event) last-input-event
(error "Non-character input-event")))
(and (timerp timer) (cancel-timer timer))