Highlighting with self created words in "langs.xml" does not work
-
@PeterJones
Can confirm now, that for me the PythonScript solution fully works. I added 1963 constant and 103 language construct keywords and special vars to SubStylesForLexer. py with different colors and all lowercase. The 1270 function keywords still are in the NPP definitions (langs.xml and stylers.xml). >Thanks a lot for your great job!<So I will uninstall the EAL plugin now and stay with substyles.
@Alan-Kilborn
No, I do not have a “need native solution” comfort zone. My only argument to have a NPP solution was performance. Nothing else. I never had and have a problem with script setups or similar. -
@Manfred-Drechsel said in Highlighting with self created words in "langs.xml" does not work:
for me the PythonScript solution fully works.
Glad to hear it. (For future readers of this discussion, I have updated the downloadable script to make the ATSTARTUP more obvious (it’s now in the comments near the top of the script, not just in the instructions-FAQ)
My only argument to have a NPP solution was performance. I never had and have a problem with script setups or similar
If you haven’t had performance problems with other scripts, you likely won’t with this one, either.
The only time the script comes into play is when you change from one document to another (the
on_bufferactivated
) – and that’s a brief number of commands that shouldn’t take a noticeable amount of time. (There might technically be a difference, but with how few commands it is, it would be on the order of a tiny fraction of a second of difference.)Once the
on_bufferactivated
has been run, Scintilla will do the actual lexing and syntax highlighting using the code compiled into Notepad++, whether theon_bufferactivated
stuff was run from a script or from native Notepad++, so the syntax highlighting will not have any performance difference. -
@PeterJones said in Highlighting with self created words in "langs.xml" does not work:
If you haven’t had performance problems with other scripts, you likely won’t with this one, either.
My comment was wrong and misleading. For whatever reason, I had the regex way of EnhanceAnyLexer in my mind. Using substyles is native, as you already explained earlier. Sorry for the confusion…
-
I’m sure you already know that this is possible:
I added the option to set my PHP constant words to bold:
editor.styleSetBold(subStyle, self._style[parentStyle][idx]['bold'])
self._style[SCE_HPHP_WORD].append(dict(fg=(0,0,204), bg=(255,255,255), bold=True, keywords="..."))
More options available here or here (search for STYLESETBOLD or STYLESETITALIC or STYLESETUNDERLINE …)
-
FYI: The developer accepted my PR, which means it will be native Notepad++ (showing up in Style Configurator) at the next release.
-
Yes, I followed the other discussions. Great job!
-
which means it will be native Notepad++ (showing up in Style Configurator) at the next release
It can be seen in v8.7 RC Announcement item 13.
The PHP keyword list has also been split from the original single huge list into a couple of huge lists instead.
My recommendation, if you are trying out v8.7 (whether it’s the release candidate, orthe final v8.7 in a few weeks, or if you are reading this later and updating from something before v8.7 to anything at or after v8.7) and want to be able to see the new styles in Style Configurator:
- If you just download the Portable version of v8.7, you can try it out without affecting your installed copy, and you will be
- If you install v8.7 overtop an older copy (upgrade or otherwise just run the installer), it will not update your
stylers.xml
, other themes, andlangs.xml
, so you will not see the new styles in the style configurator right away. Instead, follow one of the following sequences:- If you don’t have the PythonScript plugin and don’t want to use it, then you can manually compare the new
<installed directory>\stylers.model.xml
to your%AppData%\Notepad++\stylers.xml
or theme file, and bring in the new stuff from the .model. into your active file, and restart. (This is mentioned in the User Manual here.) - If you have the PythonScript plugin, or are willing to install it, then I highly recommend following the instructions in “Config Files Need Updating, Too” (I suggest with PythonScript 3, but it will work with the PluginsAdmin-version of PythonScript 2 also)
- If you don’t have the PythonScript plugin and don’t want to use it, then you can manually compare the new
—
For those who are frequent users of PythonScript, I recommend the following customization after running my script on v8.7: open
stylers.xml
(or your active theme’s XML), go to the “Python” section, and replace the rows for “User Keywords 1-5” (styleID 128-132,substyle1-5
) with something similar to what’s in this gist. (Sorry, it’s too big to fit in a post in the forum: there are a lot of keywords)After restarting Notepad++, then the Style Configurator will call the “user keyword 1-5” styles as “PythonScript xxxx”, and the user-defined list will be pre-populated with PythonScript’s built-in objects,
editor
-object methods,notepad
-object methods, enum classes and enum elements. You might not like my choice of colors (I am not a graphic designer, after all), but it’s split up in such a way that you could make them all the same color if you want (if you don’t want to mentally distinguish those categories), or you could make the colors wildly different, if my subtle differences in color from the standard Python KEYWORD style isn’t distinct enough for you.original v8.7 Python styling: with PythonScript keyword lists: -
Just installed a clean version of NPP V8.7 after i read your comments here ;-)
Tomorrow, I will insert all the keywords from my PHP V8.4.0beta5 into the style definitions and restore my colors.Only a minor issue which I’ve seen is the width of the style selection list control. It should be wider to see the full text of the styles. See attachment. Guess I directly should file an issue for NPP?
The NPP SubStyle functionality looks really great now and again, many thanks and I appreciate your efforts very much :-)
-
@Manfred-Drechsel said in Highlighting with self created words in "langs.xml" does not work:
Only a minor issue which I’ve seen is the width of the style selection list control. It should be wider to see the full text of the styles. See attachment. Guess I directly should file an issue for NPP?
It’s always been that way (see for example, the “INSTRUCTION WORD” on ActionScript, or the “Indent guideline style” in Global Styles, both of which have gone beyond the width for multiple versions of N++).
If you want that aspect of the GUI changed, you would need to put in a feature request in N++'s GitHub repo. I would suggest asking for either resizable, or wider-by-default, or at least having a hover (or having a hover plus resizable/wider).
I am highly doubtful that the Developer would implement be wider-by-default; there’s slightly more chance that he’d make it user-resizable; I would say the best-chance for implementation is using the full Style name as the hover text for each entry, which is why I suggested it, but no guarantees it would be implemented.