Subject: RE: bug#13336: [External] : Re: bug#13336: `next-frame' should not choose the *Backtrace* frame while debugging

From: Drew Adams <[email-masked]>
Date: Tue, 24 Aug 2021 15:49:45 +0000

>  >> Try giving the *Backtrace* frame a non-nil 'no-other-frame' parameter.
>  >
>  > Thanks for that info.  Should I be doing that, or
>  > should that happen automatically?
> 
> It does not happen automatically so you should be doing that.
> 
>  > What Emacs
>  > releases does that work in (in what releases is
>  > that frame parameter available and effective)?
> 
> It was added with Emacs 26.1.

Thanks.  I tried it, but it doesn't seem to work.

I did this:

(when (if (fboundp 'display-graphic-p)
          (display-graphic-p)
        window-system)
  (defconst special-display-regexps '("[ ]?[*][^*]+[*]"))
  (when (> emacs-major-version 25)
    (defun backtrace-no-other-frame (frame)
      (when (equal (frame-parameter frame 'name)
                   "*Backtrace*")
        (set-frame-parameter frame 'no-other-frame t)))
    (add-hook 'after-make-frame-functions
              'backtrace-no-other-frame)))

Debugging a bit shows that frame parameter `name' for
the *Backtrace* frame is indeed "*Backtrace*", but
parameter `no-other-frame' is nil (doesn't get set to
`t').  What's more, it looks like (?) function
`backtrace-no-other-frame' doesn't even get invoked.

What should I be doing instead?  I don't explicitly
create frame *Backtrace* myself.  I presumably need
to somehow have its `no-other-frame' frame parameter
set to `t' whenever it's created.
___

Beyond finding a solution for myself: I guess you too
consider that this should not be fixed generally, i.e.,
that frame *Backtrace* should be allowed to be another
frame's `next-frame'.  If so, I'm curious as to why.