Subject: bug#26650: 26.0.50; Protect *Backtrace* from accidental killing

From: Michael Heerdegen <[email-masked]>
Date: Wed, 26 Apr 2017 12:49:11 +0200

Eli Zaretskii <[email-masked]> writes:

> > From: [email-masked]
> > Date: Tue, 25 Apr 2017 08:50:00 -0400
> > Cc: [email-masked]
> > 
> > diff --git a/lisp/emacs-lisp/debug.el b/lisp/emacs-lisp/debug.el
> > index 94b683dcb9..0aef94f1d2 100644
> > --- a/lisp/emacs-lisp/debug.el
> > +++ b/lisp/emacs-lisp/debug.el
> > @@ -753,6 +753,8 @@ debugger-mode
> >  \\{debugger-mode-map}"
> >    (setq truncate-lines t)
> >    (set-syntax-table emacs-lisp-mode-syntax-table)
> > +  (add-hook 'kill-buffer-hook
> > +            (lambda () (if (> (recursion-depth) 0) (top-level))) nil t)
>
> This will throw to top-level when _any_ buffer is killed, as long as
> we are in recursive-edit, no?  Is that a good idea?  Shouldn't this
> hook do that only for *Backtrace*?

Did you notice that the lambda is added to the buffer-local binding of
the hook?  If you did, I don't understand why this would happen.  If you
didn't, maybe a line break should be added after the lambda expression?

Michael.