Python 3 f-strings not colourizing correctly
-
Python 3 f-strings aren’t colourizing correctly on my version of Notepad++
I have v7.8.5 on Win10
This issue was corrected in patch 5698 around May 2019
https://github.com/notepad-plus-plus/notepad-plus-plus/issues/5698
But I’m still have f-strings showing with the wrong syntax colouring. I have changed the colours from the default.
I’m also unsure if there’s supposed to be an entry specifically for f-strings in the configurator (there isn’t on mine).

I’ve had a look in the stylers.model.xml file, and it looks how I thought it should (same as https://github.com/notepad-plus-plus/notepad-plus-plus/blob/master/PowerEditor/src/stylers.model.xml)
<LexerType name="python" desc="Python" ext=""> <WordsStyle name="DEFAULT" styleID="0" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" /> <WordsStyle name="COMMENTLINE" styleID="1" fgColor="008000" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" /> <WordsStyle name="NUMBER" styleID="2" fgColor="FF0000" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" /> <WordsStyle name="STRING" styleID="3" fgColor="808080" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" /> <WordsStyle name="CHARACTER" styleID="4" fgColor="808080" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" /> <WordsStyle name="KEYWORDS" styleID="5" fgColor="0000FF" bgColor="FFFFFF" fontName="" fontStyle="1" fontSize="" keywordClass="instre1" /> <WordsStyle name="BUILTINS" styleID="14" fgColor="880088" bgColor="FFFFFF" fontName="" fontStyle="1" fontSize="" keywordClass="instre2" /> <WordsStyle name="TRIPLE" styleID="6" fgColor="FF8000" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" /> <WordsStyle name="TRIPLEDOUBLE" styleID="7" fgColor="FF8000" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" /> <WordsStyle name="CLASSNAME" styleID="8" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="1" fontSize="" /> <WordsStyle name="DEFNAME" styleID="9" fgColor="FF00FF" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" /> <WordsStyle name="OPERATOR" styleID="10" fgColor="000080" bgColor="FFFFFF" fontName="" fontStyle="1" fontSize="" /> <WordsStyle name="IDENTIFIER" styleID="11" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" /> <WordsStyle name="COMMENTBLOCK" styleID="12" fgColor="008000" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" /> <WordsStyle name="DECORATOR" styleID="15" fgColor="FF8000" bgColor="FFFFFF" fontName="" fontStyle="2" fontSize="" /> <WordsStyle name="F STRING" styleID="16" fgColor="808080" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" /> <WordsStyle name="F CHARACTER" styleID="17" fgColor="808080" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" /> <WordsStyle name="F TRIPLE" styleID="18" fgColor="FF8000" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" /> <WordsStyle name="F TRIPLEDOUBLE" styleID="19" fgColor="FF8000" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" /> </LexerType>Any one have any ideas? Is this a regression bug from May last year?
Thanks for your help and ideas.
Peter -
It seems to work for me in 7.8.5:

Not sure, but maybe it is an upgrade issue – if you customize something, when upgrading Notepad++ doesn’t want to blow away that customization…so you don’t get any enhancements for something like this? Again, not sure as I only use portable versions of Notepad++ and update them very manually and carefully when I change versions.
-
@Alan-Kilborn said in Python 3 f-strings not colourizing correctly:
if you customize something, when upgrading Notepad++ doesn’t want to blow away that customization…so you don’t get any enhancements for something like this?
I’m quite sure that’s what’s happening.
@Peter-L ,
The quick fix for python-highlighting only would be to edit your localstylers.xmland add the four f-string lines to the python lexer config:<WordsStyle name="F STRING" styleID="16" fgColor="808080" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" /> <WordsStyle name="F CHARACTER" styleID="17" fgColor="808080" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" /> <WordsStyle name="F TRIPLE" styleID="18" fgColor="FF8000" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" /> <WordsStyle name="F TRIPLEDOUBLE" styleID="19" fgColor="FF8000" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" />then save the file and exit Notepad++ and re-run Notepad++.
A more complete solution across every lexer language would be to open
<installdir>\stylers.model.xmlin one pane and%appdata%\notepad++\stylers.xmlin the other, do a diff (Compare Plugin or similar) and bring over any new lines from thestylers.model.xmlinto your localstylers.xml– you don’t need to change the color or font settings on existing ones, in case you’ve customized those; just bring over the missing WordsStyle entries for each language (and bring over any missing languages, too).I know that can seem like a pain to have to do when notepad++ updates, but as Alan mentioned,
[Notepad++ upgrade] doesn’t want to blow away that customization
Unfortunately, trying to automate that diff procedure, and being able to determine what’s a user-customization and what’s just a change in the available settings is a rather difficult programming challenge, and more than most premade installer/upgrader executables are able to handle.
----
Oh, and @Peter-L , I wanted to say, thanks for providing a well-researched problem statement; it was obvious with your links to the issues page, the screenshots, and the xml excerpt, that you put a lot of thought into asking your question – that’s a refreshing change of pace to some of the questions and demands we see here, so thank you.
-
Yes! That’s it. All working perfectly now.
Yes, you’re quite correct, I have customised the settings (quite a bit), so that’s what’s happening.
I’ll be aware of that for future issues.
It may well be simpler for me to keep a track of my customisations, then uninstall and reinstall Notepad++ for a new upgrade, along the lines of what @Alan-Kilborn does with his portable version.
And thank you @PeterJones for your kind comments.