GNU bug report logs - #79330
misleading ring-convert-sequence-to-ring

Previous Next

Package: emacs;

Reported by: Liu Hui <liuhui1610 <at> gmail.com>

Date: Thu, 28 Aug 2025 10:48:02 UTC

Severity: normal

Full log


Message #11 received at 79330 <at> debbugs.gnu.org (full text, mbox):

From: Liu Hui <liuhui1610 <at> gmail.com>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 79330 <at> debbugs.gnu.org
Subject: Re: bug#79330: misleading ring-convert-sequence-to-ring
Date: Fri, 29 Aug 2025 11:35:11 +0800
On Thu, Aug 28, 2025 at 6:59 PM Eli Zaretskii <eliz <at> gnu.org> wrote:
>
> --text follows this line-
> > From: Liu Hui <liuhui1610 <at> gmail.com>
> > Date: Thu, 28 Aug 2025 18:47:00 +0800
> >
> > The docstring of ring-convert-sequence-to-ring says it "convert
> > sequence SEQ to a ring", but it actually ignores any item equal to the
> > first item, which is not mentioned:
> >
> > ELISP> (ring-convert-sequence-to-ring '(a a a))
> > (2 1 . [nil nil a])
> >
> > ELISP> (ring-convert-sequence-to-ring '(a b c a b c))
> > (1 5 . [nil c b c b a])
> >
> > I think either the function or the docstring need to be fixed.
>
> To decide whether we can fix the code would need to look at the
> existing users of this function (not only in our tree), since it works
> like it works for the last 18 years.

I have checked the only one usage (i.e. eshell-index-value) in emacs
and many other examples in github. I think all users don't expect to
ignore an item that is equal to the first item. For example:

1. emacs -Q
2. (setq eshell-history-file-name nil)
3. M-x eshell
4. type the following commands separately in eshell buffer

echo 1
echo 2
echo 1
echo 2
echo $eshell-history-ring[-4..]

There should be four items in the last output, but actually three
items due to ring-convert-sequence-to-ring.


In other cases, the SEQ usually contains different items, so it works
in these years.




This bug report was last modified 3 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.