mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-15 10:30:25 -08:00
Allow scrolling while querying multiple choice
* lisp/subr.el (read-multiple-choice): Allow scrolling the buffer while querying (bug#22827).
This commit is contained in:
parent
2d5b20f68c
commit
cede502627
1 changed files with 27 additions and 1 deletions
28
lisp/subr.el
28
lisp/subr.el
|
|
@ -2244,6 +2244,14 @@ might be shortened), and the third, optional entry is a longer
|
|||
explanation that will be displayed in a help buffer if the user
|
||||
requests more help.
|
||||
|
||||
This function translates user input into responses by consulting
|
||||
the bindings in `query-replace-map'; see the documentation of
|
||||
that variable for more information. In this case, the useful
|
||||
bindings are `recenter', `scroll-up', and `scroll-down'. If the
|
||||
user enters `recenter', `scroll-up', or `scroll-down' responses,
|
||||
perform the requested window recentering or scrolling and ask
|
||||
again.
|
||||
|
||||
The return value is the matching entry from the CHOICES list.
|
||||
|
||||
Usage example:
|
||||
|
|
@ -2314,9 +2322,27 @@ Usage example:
|
|||
(let ((cursor-in-echo-area t))
|
||||
(read-char))
|
||||
(error nil))))
|
||||
(setq answer (lookup-key query-replace-map (vector tchar) t))
|
||||
(setq tchar
|
||||
(cond
|
||||
((eq answer 'recenter)
|
||||
(recenter) t)
|
||||
((eq answer 'scroll-up)
|
||||
(ignore-errors (scroll-up-command)) t)
|
||||
((eq answer 'scroll-down)
|
||||
(ignore-errors (scroll-down-command)) t)
|
||||
((eq answer 'scroll-other-window)
|
||||
(ignore-errors (scroll-other-window)) t)
|
||||
((eq answer 'scroll-other-window-down)
|
||||
(ignore-errors (scroll-other-window-down)) t)
|
||||
(t tchar)))
|
||||
(when (eq tchar t)
|
||||
(setq wrong-char nil
|
||||
tchar nil))
|
||||
;; The user has entered an invalid choice, so display the
|
||||
;; help messages.
|
||||
(when (not (assq tchar choices))
|
||||
(when (and (not (eq tchar nil))
|
||||
(not (assq tchar choices)))
|
||||
(setq wrong-char (not (memq tchar '(?? ?\C-h)))
|
||||
tchar nil)
|
||||
(when wrong-char
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue