Color modification of style 15 of the "OScript" language via the "Style Configurator", not taken in account, on next N++ start
- 
 Hi, All, Out of curiosity, I recently searched the differences between the configuration files, of my last N++ release ( v7.8.3) :- 
lang.model.xmlandlangs.xml
- 
Stylers.model.xmlandstylers.xml
 And it happened that the lang.model.xmlandlangs.xmlfiles were identical but theStylers.model.xmlandstylers.xmlfiles were quite different !
 To be sure, I extracted a fresh 7.8.3N++ release, from thenpp.7.8.3.bin.ziparchive, in any folder and did the following test :- 
I started Notepad++ 
- 
I chose the Settings > Style configurator...option
- 
In order to see the Save & Closebutton active, I ticked and, immediately, unticked theEnable global fontoption
- 
I then clicked on the Save & Closebutton ( Normally, no change should have occurred ! )
- 
I closed Notepad++ 
- 
I compared the Stylers.model.xmlandstylers.xmlfiles, with an external tool and, again, the same lot of differences appeared
 
 Back to my usual Notepad++ configuration, I realized that Notepad ++ make some syntax adjustments, the first time you’re using the Style Configurator` - 
It changes any tabulation to 4space chars
- 
It adds a space after the last ", right before/>, ending a line
- 
It rewrites any hexadecimal number, of the fgColorandbgColorattributes, in uppercase
- 
It adds a fontStyle="0"attribute, before/>ending a line, if that line does not contain this attribute
 
 In other words, if you run these 4regex S/R, below, against thestylers.model.xmland save the modifications,
 any subsequent comparison, between this newstylers.model.xmland your presentstylers.xmlfile, should show only the style changes you have chosen, personally !SEARCH \t REPLACE \x20\x20\x20\x20 3 occurrences SEARCH "/>$ REPLACE "\x20/> 7 occurrences SEARCH (?-i)(f|b)gColor="\K[[:xdigit:]]+" REPLACE \U$0 2,423 occurrences SEARCH (?-i)^(?!.+fontStyle=").+\K(?=\x20/>) REPLACE \x20fontStyle="0" 25 occurrencesAnd, indeed, I found two personal changes : - 
I changed the default Courier Newglobal font
- 
I changed the foreground inactive tabs color from GreytoBlack
 
 However a third difference remained, related to the OScriptlanguage :<LexerType name="oscript" desc="OScript" ext=""> <WordsStyle name="DEFAULT TEXT STYLE" styleID="0" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" /> <WordsStyle name="SINGLE-LINE COMMENT" styleID="1" fgColor="007F00" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" /> ... ... ... <WordsStyle name="LABEL TO JUMP TO WITH THE GOTO STATEMENT" styleID="13" fgColor="FF00FF" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" /> <WordsStyle name="KEYWORDS" styleID="14" fgColor="00007F" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" keywordClass="type2" /> <WordsStyle name="KEYWORDS" styleID="15" fgColor="0000FF" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" keywordClass="type3" /> <WordsStyle name="STATIC BUILT-IN OBJECT" styleID="16" fgColor="007F7F" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" keywordClass="type4" /> ... ... </LexerType>In stylers.model.xml, we have the line :<WordsStyle name="KEYWORDS" styleID="15" fgColor="0000FF" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" keywordClass="type3" />And in stylers.xml, we have the line :<WordsStyle name="KEYWORDS" styleID="15" fgColor="00007F" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" keywordClass="type3" />Even, if I tried, via the Style Configurator, to put, again, the pure blue color0000FFfor the foreground ofKEYWORDSof classtype3, the color remains00007F, after restarting Notepad++ !?The only work-around is : - 
Close any Notepad++ instance 
- 
Find out the location of your active stylers.xmlfile
- 
With Microsoft Notepad, or any editor different from N++, write the value 0000FFor any desired value, as the foreground color forstyle ID="15"of theOScriptlanguage and save the modifications
- 
Re-start Notepad++ 
 However, note that any other styling modification, from within the Style Configurator, will give again the00007Fwrong value, on N++ start !I verified that this bug still happens with the last v7.8.4release !
 So, guys, could you do a quick test and verify my assumptions ! If I’m right, I’ll create a new issue, although I don’t need at all the OScriptlanguage, presently ;-))Best Regards, guy038 
- 
- 
 @guy038 said in Color modification of style 15 of the "OScript" language via the "Style Configurator", not taken in account, on next N++ start: So, guys, could you do a quick test and verify my assumptions ! If I’m right Very nearly. When I replicated your procedure exactly, I got the same results: after editing something else in style configurator – even if I immediately undo it (like toggling and untoggling a checkbox in the GLOBALS style) – then hitting save, when i look at the stylers.xml, styleID=“15” has changed back tofgColor="00007F".However, I noticed that both 14 and 15 were called KEYWORDS, and #14 has the value 00007F. If I change styleID=“14” to something different as well, then follow the same sequence, styleID=“15” changes to match whatever value styleID=“14” uses. I think, because they are both calledname="KEYWORDS", the data from the #14 is overwriting the data for the #15 after it’s gone through XML->internal-data-structure->XML round-trip.If I change to <WordsStyle name="KEYWORDS" styleID="14" fgColor="987654" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" keywordClass="type2" /> <WordsStyle name="KEYWORDS2" styleID="15" fgColor="1234AB" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" keywordClass="type3" />so that they have separate names and different fgColor, then go through the same sequence, #15 keeps its independent value. I really think the bug is caused by both #14 and #15 having the same nameattribute value.
- 
 Hi, @PeterJones and All, Ah… Many thanks for your clever deduction. The fact that this language has two identical attributes should have tipped me off ! So, the simple and obvious solution is to give two different names to these two attributes : for instance, Keywords1andKeywords2
 Now, after scanning the stylers.model.xml, I realized that2other languages also contain identical attributes :BaanCandtxt2tags:<LexerType name="baanc" desc="BaanC" ext=""> <WordsStyle name="DEFAULT" styleID="32" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" /> .... <WordsStyle name="DEFAULT" styleID="8" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" /> .... </LexerType> <LexerType name="txt2tags" desc="txt2tags" ext=""> .... <WordsStyle name="LIST" styleID="13" fgColor="E300EE" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" /> <WordsStyle name="LIST" styleID="14" fgColor="E300EE" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" /> .... </LexerType>And I did verify that, if I chose : - 
The name attributes DEFAULT1andDEFAULT2for theBaanClanguage
- 
The name attributes LIST1andLIST2for thetxt2tagslanguage
 The foreground and background colors of these four attributes can be modified independently and are kept, after a N++ restart ;-)) So, I’m about to create a GitHub issue, although a simple differentiation is possible by modifying the stylers.xmlfile !Done ! See : https://github.com/notepad-plus-plus/notepad-plus-plus/issues/7965 Best Regards, guy038 
- 
- 
 Since I had downloaded SciTE yesterday, and noticed that it has a .properties file for each of the lexer languages, I decided to go look at how Scintilla’s configuration named/labeled those entries, to see if it gave a hint as to the purpose: baan.properties# Default style.baan.32=$(font.baan.monospace) # Identifiers style.baan.8=$(font.baan.monospace)txt2tags.properties# list style.txt2tags.13=fore:#E300EE # list style.txt2tags.14=fore:#E300EE(so txt2tags does duplicate the “name” (comment) for those two IDs) oscript.properties# Type available in the language, in kernel or code modules. # See the property keywords4 above. style.oscript.14=fore:#00007F # Global function in the language, in kernel or code modules. # See the property keywords5 above. style.oscript.15=fore:#0000FFMaybe I could get more hints by looking at source code for the lexers… but I think this is enough effort on this for now. :-) So, I would say - baanc #32 = DEFAULT
 baanc #8 =IDENTIFIERS
- txt2tags #13 = LIST
 txt2tags #14 =LIST2- this naming convention has precedent: #19 and #20 are already CODEandCODE2
 
- this naming convention has precedent: #19 and #20 are already 
- oscript #14 = TYPE
 oscript #15 =GLOBAL FUNCTION
 
- baanc #32 = 
- 
 Names can be, afaik, whatever one wants as long as there are unique and 
 the ids match the ones from the SciLexer.h header file.
- 
 @Ekopalypse said in Color modification of style 15 of the "OScript" language via the "Style Configurator", not taken in account, on next N++ start: Names can be, afaik, whatever one wants as long as there are unique and 
 the ids match the ones from the SciLexer.h header file.I believe you are correct. However, they should be meaningful – and the best default value (to me) would be what Scintilla calls them internally. And the worst default would be a value that collides with another and causes the values for one to be applied to the other. :-) 
- 
 @PeterJones said in Color modification of style 15 of the "OScript" language via the "Style Configurator", not taken in account, on next N++ start: However, they should be meaningful Yep - that’s for sure :) 

