emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Redisplay hook error backtraces


From: Alan Mackenzie
Subject: Re: Redisplay hook error backtraces
Date: Thu, 14 Jul 2022 16:07:33 +0000

Hello, Eli.

On Thu, Jul 14, 2022 at 16:59:57 +0300, Eli Zaretskii wrote:
> > Date: Thu, 14 Jul 2022 13:42:18 +0000
> > Cc: larsi@gnus.org, monnier@iro.umontreal.ca, emacs-devel@gnu.org
> > From: Alan Mackenzie <acm@muc.de>

> > > > > You want to distinguish errors inside condition-case?

> > > > More, distinguish the different condition-cases in which errors
> > > > might occur.

> > > What else is exposed to Lisp?

> > I don't understand this question.

> There's just one condition-case available to Lisp code, AFAICT, so why
> isn't it enough to distinguish condition-case from any other callers of
> internal_condition_case* ?

I think I understand what you're saying, now.  That a condition-case
called from Lisp will not use any of the internal_condition_case*
functions.  So we could just assume that if i_c_case* triggers, it must be
one of the hooks we're interested in that called it.

I don't think that's right.  It might well be that Lisp code calls a C
primitive function that itself uses an internal_condition_case.  In this
scenario, we would not want to generate a backtrace for that nested
internal_condition_case.

[ .... ]

> > > > OK, I have an idea.  I restore the variable redisplay_lisping
> > > > back into the code (I took it out last night), binding it to true
> > > > (or Qt?) at every place in xdisp.c where redisplay calls a Lisp
> > > > hook.

> > > These all go through a single function, so there's just one place to
> > > do that.

> > I disagree.  There are seven places, for the seven different Lisp hooks
> > currently called from redisplay.

> Aren't they all go through safe_call?

They do, yes, but so do other things that we don't want to engage the
backtrace mechanism for.

> Which seven places are you talking about?

1. handle_fontified_prop;
2. set_message;
3. clear_message;
4. prepare_menu_bars (near the top);
5. update_menu_bar (line ~54);
6. run_window_scroll_functions;
7. redisplay_window (line ~415).

-- 
Alan Mackenzie (Nuremberg, Germany).



reply via email to

[Prev in Thread] Current Thread [Next in Thread]