From 3478f2f3d6ccd8c9921b03870261b13d5b6c8ba2 Mon Sep 17 00:00:00 2001 From: Lars Ingebrigtsen Date: Mon, 28 Oct 2019 12:11:46 +0100 Subject: [PATCH] Make work in read-char-with-history * lisp/simple.el (read-char-with-history): Tweak to make / also traverse the history (bug#10477). --- lisp/simple.el | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/lisp/simple.el b/lisp/simple.el index 5502cd49aa4..184d4eccdb9 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -5197,10 +5197,10 @@ a character from history." (t (error "Invalid history: %s" history))) (while (not result) - (setq result (read-char prompt inherit-input-method seconds)) + (setq result (read-event prompt inherit-input-method seconds)) ;; Go back in history. (cond - ((eq result ?\M-p) + ((memq result '(?\M-p up)) (if (>= index (length (symbol-value histvar))) (progn (message "Beginning of history; no preceding item") @@ -5211,7 +5211,7 @@ a character from history." (elt (symbol-value histvar) (1- index))))) (setq result nil)) ;; Go forward in history. - ((eq result ?\M-n) + ((memq result '(?\M-n down)) (if (zerop index) (progn (message "End of history; no next item") @@ -5225,9 +5225,13 @@ a character from history." (setq result nil)) ;; The user hits RET to either select a history item or to ;; return RET. - ((eq result ?\r) - (unless (zerop index) - (setq result (elt (symbol-value histvar) (1- index))))))) + ((eq result 'return) + (if (zerop index) + (setq result ?\r) + (setq result (elt (symbol-value histvar) (1- index))))) + ;; The user has entered some non-character event. + ((not (characterp result)) + (user-error "Non-character input event")))) ;; Record the chosen key. (set histvar (cons result (symbol-value histvar))) result)) -- 2.39.5