summaryrefslogtreecommitdiff
path: root/lisp/simple.el
diff options
context:
space:
mode:
authorLars Ingebrigtsen <larsi@gnus.org>2019-10-28 12:11:46 +0100
committerLars Ingebrigtsen <larsi@gnus.org>2019-10-28 12:12:00 +0100
commit3478f2f3d6ccd8c9921b03870261b13d5b6c8ba2 (patch)
tree8f55a79e8953b1822f549d8ad8c486404be076b1 /lisp/simple.el
parent098873b4f25922cd79850e0a985d30ba4c0f780a (diff)
downloademacs-3478f2f3d6ccd8c9921b03870261b13d5b6c8ba2.tar.gz
Make <up> work in read-char-with-history
* lisp/simple.el (read-char-with-history): Tweak to make <up>/<down> also traverse the history (bug#10477).
Diffstat (limited to 'lisp/simple.el')
-rw-r--r--lisp/simple.el16
1 files 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))