Subject: bug#57163: completing-read not allow cycling of the options by default

From: uzibalqa <[email-masked]>
Date: Sat, 13 Aug 2022 14:32:02 +0000

------- Original Message -------
On Saturday, August 13th, 2022 at 6:01 AM, Eli Zaretskii <[email-masked]> wrote:

> > Cc: [email-masked]
> > From: Michael Heerdegen [email-masked]
> > Date: Sat, 13 Aug 2022 06:52:54 +0200
> >
> > uzibalqa via "Bug reports for GNU Emacs, the Swiss army knife of text
> > editors" [email-masked] writes:
> >
> > > Why is it that things like completing-read not allow cycling of the
> > > options by default?
> >
> > You mean the completion candidates? M-<up> and M-<down> do that (by
> > default).
>
>
> As does repeatedly pressing TAB, right? Or maybe I don't understand
> what is meant by "cycling" in this context? An example of using
> completing-read and the lack of cycling would be appreciated.

Correct, TAB, M-<up>, M-<down> do not execute any functionality

Consider the following function.  Call the function with "M-x change-cursor".
TAB produces "[Complete, but not unique]"; whilst "M-down" and "M-up" result
in [M-down is undefined]  and [M-up is undefined].

(defun change-cursor (form)
  "Modify the cursor form."

  (interactive
   (list
    (let ( (cseq '("bar" "hbar" "hollow" "box")) )
      (completing-read " Cursor: " cseq nil t "box"))))

  (pcase form
    ("bar"
     (set-default 'cursor-type 'bar)
    ("hbar"
     (set-default 'cursor-type 'hbar)
    ("hollow"
     (set-default 'cursor-type 'hollow)
    ("box"
     (set-default 'cursor-type 'box))) )