Subject: bug#59381: Should xref--marker-ring be per-window?

From: Ackerley Tng <[email-masked]>
Date: Sat, 19 Nov 2022 14:01:52 -0800

What if we copy the whole stackv from the old window whenever a new window
is opened?

On Sat, Nov 19, 2022, 11:53 AM Eli Zaretskii <[email-masked]> wrote:

> > Cc: [email-masked]
> > From: Juri Linkov <[email-masked]>
> > Date: Sat, 19 Nov 2022 20:53:46 +0200
> >
> > > While using xref (xref-find-definitions and xref-find-references, etc)
> > > in separate windows, I hit M-, to pop the marker stack expecting that
> > > each window should have a separate stack.
> > >
> > > However, it seems that the entire emacs instance shares a single
> > > xref--marker ring.
> > >
> > > Could we have separate xref--marker-rings per window, or some
> > > configuration option to enable that?
> >
> > Ideally, making an existing variable window-local should be as easy
> > as making it buffer-local, e.g.:
> >
> >   (make-variable-buffer-local 'xref--history)
> >   ->
> >   (make-variable-window-local 'xref--history)
> >
> > But we are not here so far.
>
> I don't think it's that simple.  Windows are much more ephemeral than
> buffers;
> for example, "C-x 2" followed by "C-x 1" or "C-x 0" deletes one of the
> windows.
> What do we want to happen with the "window-local" xref stack in that case?
>
> My guess is that the OP wanted to have control on when M-. pushes
> locations to
> the last used stack or begin a new stack.  Because only the user knows when
> M-. begins a new series of searches.  So I think it is better to offer a
> separate command for exercising just such control.
>