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

From: Eli Zaretskii <[email-masked]>
Date: Sat, 19 Nov 2022 21:53:26 +0200

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