thanks kobarity, with your patch, I confirm that : - I can open gef.py and scroll - I get the correct font-lock-string-face in the f-string after a "#" in the format On Wed, Dec 11, 2024 at 3:24 PM kobarity wrote: > rehan malak wrote: > > Deleting all the "#" in the f-string of the gef.py file removes the > problem on my side. > > sed -i -e 's/#0{align/0{align/g' gef.py > > sed -i -e 's/#0{width/0{width/g' gef.py > > sed -i -e 's/#07x}/07x}/g' gef.py > > sed -i -e 's/#06x}/06x}/g' gef.py > > sed -i -e 's/#04x}/04x}/g' gef.py > > sed -i -e 's/#4x}/4x}/g' gef.py > > sed -i -e 's/#8x}/8x}/g' gef.py > > sed -i -e 's/#10x}/10x}/g' gef.py > > sed -i -e 's/#x}/x}/g' gef.py > > > > Your smaller example Eli also contains a f-string with the "#". > > > > This python f-string format specifier is described here: > > > https://docs.python.org/3/library/string.html#format-specification-mini-language > > > > Is this format specifier supported from the beginning ? > > > > For example : > > > > value = 0xab > > print(f"{value:x} is a value") > > > > => color syntax : is a value has the color defined by > font-lock-string-face > > > > while > > > > value = 0xab > > print(f"{value:#x} is a value") > > > > => color are messed up... is has color defined by font-lock-keyword-face > and a value has color defined by default face > > 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. > > 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. >