Subject: Re: 28.0.91; regression: rcirc overwrites completion-cycle-threshold

From: Daniel Mendler <[email-masked]>
Date: Wed, 9 Feb 2022 15:18:45 +0100

> The change that introduced this was that the custom cycling
> implementation was replaced with one based on completion-at-point
> (0b367ec), mainly to simplify the code.  The reason
> `completion-cycle-threshold' is set is to preserve the appearance of the
> previous behaviour, as a complete reversion to completion-at-point
> seemed like too much of a change.

I agree with your change to remove rcirc-complete. I greatly appreciate
the simplicity of rcirc and it is good that you try to make it even
simpler! But rcirc-completion-at-point was already present as Capf on
Emacs 27 and there `completion-at-point` didn't lead to cycling. I would
not introduce a user configuration, it is easy enough to set
completion-cycle-threshold in a hook.

Furthermore there is the alternative to use completion-category-defaults
to specify the threshold per completion category. You could add the
override there. But personally I would  avoid doing that. I usually
prefer if packages avoid intrusive and opinionated settings and instead
try to ensure consistency across Emacs.

> I could imagine introducing a user option to decide what you want to
> use.  My inclination would be to set it to "cycle by default", but it
> doesn't need that way.  Perhaps we could test non-cycling (regular capf)
> for a while, and see if there are any complaints or other feedback?

Yes, I would go with normal Capf behavior, which is the usual behavior
across all of Emacs. If a user wants to restore rcirc-complete, it seems
easy enough to add this to a user configuration?

(defun rcirc-complete ()
  (interactive)
  (let ((completion-cycle-threshold t))
    (completion-at-point)))

Thanks!