Functionlist no longer working on .vb files
-
Since several days the functionlist panel is empty for vb files on Notepad++ 7.9.1. For other files its still working as usual.
I checked the functionlist folder and there is no vb.xml file available.
How to get it work again on vb files?best regards
Diedrich -
-
@Ekopalypse
Thanks for the answer.
But its still not working.
I copied the 43 lines of vb-3.0.FL.xml to an empty file, renamed it to vb.xml and copied the file to the functionlist folder, where the other xml files are located.
What did I wrong?best regards
Diedrich -
Can you try this one?
<?xml version="1.0" encoding="UTF-8" ?> <NotepadPlus> <functionList> <associationMap> <association langID="18" id="vb_function" /> <!-- L_VB --> </associationMap> <!-- [vb_function] --> <parser id="vb_function" displayName="Visual Basic (.NET|Script|for Applications)" commentExpr="(?m:((?<=').*?$)|((?i:REM)([\t ].*?)?$))"> <classRange mainExpr="(?s:(?<SCOPE>(?i:CLASS|TYPE)).*?(?i:END[\t ]\k<SCOPE>))" displayMode="node" > <className> <nameExpr expr="(?i:CLASS|TYPE)[\t ]+(?:[A-Za-z_][\w]*\b)(?:.*?[\r\n])" /> <nameExpr expr="[\t ]+(?:[A-Za-z_][\w]*\b)" /> <nameExpr expr="[A-Za-z_][\w]*" /> </className> <function mainExpr="(?m:^[\t ]*(?i:(?:(?:PRIVATE|PROTECTED|PUBLIC)[\t ]+)?(?:STATIC[\t ]+)?(?:SUB|FUNCTION|PROPERTY)).*?(?:\(|$))" > <functionName> <funcNameExpr expr="(?i:(?:(?:PRIVATE|PROTECTED|PUBLIC)[\t ]+)?(?:STATIC[\t ]+)?(?:SUB|FUNCTION|PROPERTY)).*?(?:\(|$)"/> <funcNameExpr expr="(?i:(?:SUB|FUNCTION|PROPERTY)).*?(?:\(|$)"/> <funcNameExpr expr="[A-Za-z_][\w]*(?=[\t ]*\()"/> </functionName> </function> </classRange> <function mainExpr="^[\t ]*(?i:(?:(?:PRIVATE|PROTECTED|PUBLIC)[\t ]+)?(?:STATIC[\t ]+)?(?:SUB|FUNCTION|PROPERTY))[\t ].*?[A-Za-z_][\w]*(?:[\t ]*\(|$)" displayMode="$functionName"> <functionName> <nameExpr expr="(?i:(?:(?:PRIVATE|PROTECTED|PUBLIC)[\t ]+)?(?:STATIC[\t ]+)?(?:SUB|FUNCTION|PROPERTY))[\t ].*?[A-Za-z_][\w]*(?:[\t ]*\(|$)"/> <nameExpr expr="(?i:(?:SUB|FUNCTION|PROPERTY))[\t ].*?[A-Za-z_][\w]*(?:[\t ]*\(|$)"/> <nameExpr expr="[A-Za-z_][\w]*(?=[\t ]*\()"/> </functionName> </function> </parser> <!-- [] --> </functionList> </NotepadPlus>
-
@Diedrich-Hesmer said in Functionlist no longer working on .vb files:
What did I wrong?
Did you remember to exit all copies of Notepad++ and restart Notepad++ after putting that file in the right location? Because Notepad++ won’t re-read the configuration files until you restart.
Are you sure it got saved as
vb.xml
and notvb.xml.txt
? -
It looks like the parser
s
tag was removed. I’m currently trying
to find out when this happened. -
Seems this has been introduce with version 7.9.1.
-
Correct, the new syntax doesn’t include the
<parsers>
tag wrapped around the<parser>
tag anymore.The file you posted works:
Hmm, looks like the documentation for Function List and especially function list section of config files could use slight improvement to make it more clear that you don’t need the
<parsers>...</parsers>
with v7.9.1 and newer. -
The new solution seems not cover lexer plugins.
I was trying to use<association id= "v.xml" langID= "86"/>
or
<association id= "v.xml" userDefinedLangName="VLang"/>
But both failed. Technically lexer plugins do get an unique ID
assigned but this varies depending how much lexer plugins you are using.
So … any ideas?
I assume I have to open an issue. -
Did you remember to also update the
overrideMap.xml
? For default builtin lexers, the overrideMap defaults to a reasonable value (shown in comments); but for any others (like UDL and presumably lexer plugins), you have to update the overrideMap. -
I use this file and it works:
<?xml version="1.0" encoding="UTF-8" ?> <!-- ==========================================================================\ | | To learn how to make your own language parser, please check the following | link: | https://npp-user-manual.org/docs/function-list/ | \=========================================================================== --> <NotepadPlus> <functionList> <!-- ================================================== [ VB/VBS/VBA ] --> <parser displayName="Visual Basic (.NET|Script|for Applications)" id ="vb_function" commentExpr="(?m:((?<=').*?$|((?i:REM)([\t ].*?)?$))" > <classRange mainExpr="(?s:(?<SCOPE>(?i:CLASS|TYPE)).*?(?i:END[\t ]\k<SCOPE>))" displayMode="node" > <className> <nameExpr expr="(?i:CLASS|TYPE)[\t ]+(?:[A-Za-z_][\w]*\b)(?:.*?[\r\n])" /> <nameExpr expr="[\t ]+(?:[A-Za-z_][\w]*\b)" /> <nameExpr expr="[A-Za-z_][\w]*" /> </className> <function mainExpr="(?m:^[\t ]*(?i:(?:(?:PUBLIC|PRIVATE|PROTECTED|FRIEND|PROTECTED FRIEND)[\t ]+)?(?:(?:STATIC|SHARED|SHADOWS|OVERRIDABLE|OVERRIDES|READONLY|WRITEONLY)[\t ]+)?(?:SUB|FUNCTION|PROPERTY)).*?(?:\(|$))" > <functionName> <funcNameExpr expr="(?i:(?:(?:PUBLIC|PRIVATE|PROTECTED|FRIEND|PROTECTED FRIEND)[\t ]+)?(?:STATIC[\t ]+)?(?:SUB|FUNCTION|PROPERTY)).*?(?:\(|$)"/> <funcNameExpr expr="(?i:(?:SUB|FUNCTION|PROPERTY)).*?(?:\(|$)"/> <funcNameExpr expr="(?i:(?:GET|LET|SET)[\t ]+)?[A-Za-z_][\w]*(?=[\t ]*(?:\(|$))"/> </functionName> </function> </classRange> <function mainExpr="^[\t ]*(?i:(?:(?:PUBLIC|PRIVATE|PROTECTED|FRIEND|PROTECTED FRIEND)[\t ]+)?(?:(?:STATIC|(?:DECLARE(?:[\t ]+(ANSI|UNICODE|AUTO))?))[\t ]+)?(?:SUB|FUNCTION|PROPERTY)).*?(?:\(|$)" displayMode="$functionName" > <functionName> <nameExpr expr="(?i:(?:(?:PUBLIC|PRIVATE|PROTECTED|FRIEND|PROTECTED FRIEND)[\t ]+)?(?:(?:STATIC|(?:DECLARE(?:[\t ]+(?:ANSI|UNICODE|AUTO))?))[\t ]+)?(?:SUB|FUNCTION|PROPERTY)).*?(?:\(|$)"/> <nameExpr expr="(?i:(?:SUB|FUNCTION|PROPERTY)).*?(?:\(|$)"/> <nameExpr expr="(?i:(?:GET|LET|SET)[\t ]+)?[A-Za-z_][\w]*(?i:[\t ]+(LIB|ALIAS)[\t ]+[\w"\.]+)*(?=[\t ]*(?:\(|$))"/> </functionName> </function> </parser> </functionList> </NotepadPlus>
-
Sorry, I should have clarified that these changes were made in overrideMap.xml.
-
These overrideMap customizations work for me
<!-- ==================== Peter's Customizations ============================ --> <association id= "my_perl.xml" langID= "21" /> <association id= "udl_markdown.xml" userDefinedLangName="Markdown"/> <association id= "udl_cadence.xml" userDefinedLangName="Cadence"/> <!-- ======================================================================== -->
The first overrides where the default perl (#21) file is named. The other two are for UDL maps.
So what you showed does look like the syntax you should use. Maybe a bug in the implementation that doesn’t allow for plugin-based lexers to work with functionList?
-
@PeterJones said in Functionlist no longer working on .vb files:
Maybe a bug in the implementation that doesn’t allow for plugin-based lexers to work with functionList?
I am currently assuming this is the case, but am struggling to really understand the code. Will have to check this further.
-
Issue, perhaps better called question, 9519 opened.
-
@Ekopalypse
I’m back to normal. Thanks for your help, this copy did it.best regards
Diedrich