Subject: bug#53897: 28.0.91; regression: rcirc overwrites completion-cycle-threshold

From: Philip Kaludercic <[email-masked]>
Date: Mon, 14 Feb 2022 18:15:42 +0000

Daniel Mendler <[email-masked]> writes:

>> 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.

Hmm, ok, I get your point.  My rationale is that rcirc-complete (bound
to TAB) used to cycle, and that it was that behaviour that was supposed
to be preserved.

> 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 agree.

>> 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)))

Or, this could be added as rcirc-complete, binding TAB back to this new
command and documenting that if you want to complete using the default
CAPF, you should rebind it to completion-at-point?

> Thanks!

-- 
	Philip Kaludercic