[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#52003: Unexpected advising behavior due to recursive implementation
From: |
Mattias Engdegård |
Subject: |
bug#52003: Unexpected advising behavior due to recursive implementation |
Date: |
Sat, 20 Nov 2021 20:16:43 +0100 |
Thanks for the report, and yes, it's true that the way interactive use is
managed makes advice hacks more interesting. Do remember that you are always on
your own when using advice; Emacs cannot reasonably promise any compatibility
on that level.
That said, it would be straightforward to straighten out the control flow by
extracting the bulk of the code to a new (internal) function which is called
with or without `condition-case`. It would be slightly slower since it entails
an extra function call in the non-interactive case, and forward-sexp and its
ilk are workhorses in many language modes. It may not matter much, of course.
> I'm far from a lisp expert but my feeling is that the condition-case
> should only wrap the calls where things can actually go wrong.
Oh, but in this case they can. Noninteractive calls expect the scan-errors;
interactive use does not. It is also possible for a a forward-sexp-function to
raise scan-error.