Community
    • Login

    Functionlist no longer working on .vb files

    Scheduled Pinned Locked Moved Help wanted · · · – – – · · ·
    16 Posts 4 Posters 865 Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • PeterJonesP
      PeterJones @Diedrich Hesmer
      last edited by

      @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 not vb.xml.txt?

      EkopalypseE 1 Reply Last reply Reply Quote 0
      • EkopalypseE
        Ekopalypse @PeterJones
        last edited by

        @PeterJones

        It looks like the parsers tag was removed. I’m currently trying
        to find out when this happened.

        PeterJonesP 1 Reply Last reply Reply Quote 0
        • EkopalypseE
          Ekopalypse
          last edited by

          Seems this has been introduce with version 7.9.1.

          1 Reply Last reply Reply Quote 1
          • PeterJonesP
            PeterJones @Ekopalypse
            last edited by

            @Ekopalypse ,

            Correct, the new syntax doesn’t include the <parsers> tag wrapped around the <parser> tag anymore.

            The file you posted works:
            30c5c1aa-bec1-4459-80fb-0f39c6bc9fca-image.png

            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.

            1 Reply Last reply Reply Quote 1
            • EkopalypseE
              Ekopalypse
              last edited by Ekopalypse

              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.

              PeterJonesP 1 Reply Last reply Reply Quote 0
              • PeterJonesP
                PeterJones @Ekopalypse
                last edited by

                @Ekopalypse ,

                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.

                EkopalypseE 1 Reply Last reply Reply Quote 1
                • dinkumoilD
                  dinkumoil @Diedrich Hesmer
                  last edited by

                  @Diedrich-Hesmer

                  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:((?&lt;=&apos;).*?$|((?i:REM)([\t ].*?)?$))"
                  		>
                  			<classRange
                  				mainExpr="(?s:(?&lt;SCOPE&gt;(?i:CLASS|TYPE)).*?(?i:END[\t ]\k&lt;SCOPE&gt;))"
                  				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&quot;\.]+)*(?=[\t ]*(?:\(|$))"/>
                  				</functionName>
                  			</function>
                  		</parser>
                  	</functionList>
                  </NotepadPlus>
                  
                  1 Reply Last reply Reply Quote 2
                  • EkopalypseE
                    Ekopalypse @PeterJones
                    last edited by

                    @PeterJones

                    Sorry, I should have clarified that these changes were made in overrideMap.xml.

                    PeterJonesP 1 Reply Last reply Reply Quote 2
                    • PeterJonesP
                      PeterJones @Ekopalypse
                      last edited by

                      @Ekopalypse ,

                      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?

                      EkopalypseE 1 Reply Last reply Reply Quote 1
                      • EkopalypseE
                        Ekopalypse @PeterJones
                        last edited by

                        @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.

                        1 Reply Last reply Reply Quote 1
                        • EkopalypseE
                          Ekopalypse
                          last edited by

                          Issue, perhaps better called question, 9519 opened.

                          1 Reply Last reply Reply Quote 1
                          • Diedrich HesmerD
                            Diedrich Hesmer @Ekopalypse
                            last edited by

                            @Ekopalypse
                            I’m back to normal. Thanks for your help, this copy did it.

                            best regards
                            Diedrich

                            1 Reply Last reply Reply Quote 2
                            • First post
                              Last post
                            The Community of users of the Notepad++ text editor.
                            Powered by NodeBB | Contributors