Subject: Re: bug#74738: 31.0.50; Freezes in Python-mode on some Python file when searching or scrolling

From: Stefan Monnier <[email-masked]>
Date: Fri, 13 Dec 2024 18:35:20 -0500

> The mechanism of the hang is still unclear, but I found the cause of
> the font-lock malfunction: when using `up-list' to find the
> corresponding closing brace for an opening brace in an f-string, if
> the format specifier contains "#", the rest of the string is
> considered a comment and the search fails.  Therefore, it can be
> worked around by temporarily binding `parse-sexp-ignore-comments' to
> nil, as in the attached patch.

Maybe a cleaner solution would be to locally use a different
syntax-table (where # doesn't start a comment), but I'm not sure it's
worth the trouble.  So I installed your patch into `master`, thank you.

Maybe we should also temporarily setup a narrowing so `up-list` can't
look past `send`.

BTW, beside removing the `font-lock-string-face` from the `face`
property, `python--font-lock-f-strings` should probably also add
a special face for the ":<FMT>" thingies found (optionally) at the end.

> Hangs on gef.py can also be avoided with this patch, but it assumes
> that the braces are properly closed.  If you remove the closing braces
> of expressions containing "#", it will eventually hang.

Hmm...

        Stefan