GNU bug report logs -
#79330
misleading ring-convert-sequence-to-ring
Previous Next
Full log
View this message in rfc822 format
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.