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

From: Drew Adams <[email-masked]>
Date: Wed, 25 Aug 2021 20:23:44 +0000

>  >> What would you have to "duplicate" here?
>  > "the parameters of `special-display-regexps'".
>  >
>  > I want the *Backtrace* frame to look and act like
>  > frames for other buffers whose names also match
>  > that regexp.
> 
> Why can't you add the `no-other-frame' parameter to that common list for
> the *Backtrace* buffer alone?

Dunno what you mean.  (But it sounds like duplicating
the common list, and adding something to the copy.)

>  >> Using `after-make-frame-functions' requires a
>  >> certain knowledge of Elisp.
>  >
>  > Meaning what - what "certain knowledge"?  I guess
>  > you're suggesting that I lack it, so it would be
>  > good to know what it is.
> 
> I lack it and that's why I neither use nor recommend using
> `after-make-frame-functions'.

Well, if you lack it then certainly I do too.

Why doesn't its doc give users a heads-up in this
(unspecified) regard, if it requires special
knowledge or handling?

>  > I define the frame parameters separately, with a
>  > user option, `1on1-special-display-frame-alist'
>  > (which others besides myself use).  The setting of
>  > just `special-display-regexps' is in my init file,
>  > for myself alone.
>  >
>  > Put differently, I separate the appearance of
>  > special-display frames from a criterion (in this
>  > case buffer-name-matching-regexp) for which buffers
>  > get special-display frames.
>  >
>  > That's also the purpose, presumably, of option
>  > `special-display-frame-alist' (which option
>  > `1on1-special-display-frame-alist' augments).
> 
> And you cannot augment that alist by additional elements for specific
> buffers?

Dunno what you mean.  It's just like
`special-display-frame-alist' - an alist of frame
parameters.  It applies to all special-display
buffers.

>  >>   > I see.  How would I do that?  I don't control how or
>  >>   > when the frame gets created.
>  >>
>  >> Which means that you have to deal with a situation handled by
>  >> `special-display-regexps' once and `display-buffer-alist' now.
>  >
>  > Sorry, I don't know what you're referring to.
>  > Could you be specific?
> 
> These options have been provided to control the display of buffers where
> the user does not "control how or when the frame gets created".

`display-buffer-alist' terrifies me. ;-)

>  >> Because using `after-make-frame-functions' requires
>  >> a certain knowledge of Elisp.
>  >
>  > See above.
>  >
>  > Is there some specific caveat about using this hook,
>  > which is not in the Elisp manual?  Nothing particular
>  > is said in the manual about the hook.
>  >
>  > What special Elisp knowledge is required?  Why the
>  > vague formulation (repeated) of "a certain knowledge"?
>  > It's not clear to me what you're suggesting.
> 
> If you understand how frame names, explicit names and titles are set up,
> you know much more than I do.

I certainly don't know more than you.  And I don't
think I've given the impression that I think I do.
Certainly haven't meant that.

> But in that case you should not have made
> the wrong assumption about the name of the *Backtrace*
> frame at the time `after-make-frame-functions' is run.

Yes, that was my bad.  Even without knowing that
that was the problem I should have thought to try
code such as what you suggested.

> So what I am suggesting is that since we both
> don't know all too much about this subject, it
> might be better for us to avoid using
> `after-make-frame-functions' in code we write.

Maybe so, and thanks for the warning.  So far, I
have something that seems to work, and I'm not
sure what an alternative way to handle it would
be.  I don't mean to take your time in trying to
do that, but I do appreciate your advice.