• Login
Community
  • Login

Function list not working

Scheduled Pinned Locked Moved Help wanted · · · – – – · · ·
6 Posts 3 Posters 2.1k 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.
  • P
    p r
    last edited by Aug 26, 2021, 7:55 AM

    Hi,
    the function list is not working for me an I can’t understand why not. No error message, only empty function list.
    The local conf mode is ON.

    I have added this to the overrideMap.xml:

    <association id= "pml.xml" 				userDefinedLangName="PML"/>
    

    this is my pml.xml (in …/Notepad++/functionlist

    <?xml version="1.0" encoding="UTF-8" ?>
    <NotepadPlus>
        <functionList>
            <parsers>
    			<parser
    				displayName="PML"
    				id         ="pml_function"
    				commentExpr="(--$*)"
    			>
                    <function
                    mainExpr="^define method"
                    displayMode="$functionName$">
                    <functionName>
                        <nameExpr expr=".*"/>
                    </functionName>
    				</function>
                </parser>
            </parsers>
        </functionList>
    </NotepadPlus>
    

    After some tests I reduce the regex to simple expression to see something :-(
    Here is an example of my PML code( for AVEVA programming language)

    Here is an example of my pml code:

    define method .goto()
    	!Selection = !this.elements.Selection()
    	if !Selection.empty() then
    		!!alert.error('Noting selected!')
    		return
    	elseif !Selection.size() gt 1 then
    		!!alert.error('More then 1 Element selected. Goto is not possible')
    		return	
    	endif
    	!!CE = !Selection[1].dbref()
    	
    endmethod
    

    The method goto should be in the function list
    I hope someone can help me that I can see something in the function list, that I finalize the regex expr. Unfortunately I am not familiar with regex :-(, but I want to learn
    Greetings, Peter

    D 1 Reply Last reply Aug 26, 2021, 8:53 AM Reply Quote 1
    • D
      dinkumoil @p r
      last edited by Aug 26, 2021, 8:53 AM

      @p-r

      To get a working function list you also need to define a User Defined Language (UDL), i.e. a user defined lexer for syntax highlighting. Have a look at the Notepad++ manual to learn how to do that.

      1 Reply Last reply Reply Quote 2
      • P
        p r
        last edited by Aug 26, 2021, 8:57 AM

        Of course, I have forgotten, I have already. This PML.xml is in the …Notepad++\userDefineLangs and it works fine

        <NotepadPlus>
            <UserLang name="PML" ext="pmldat pmlfrm pmlfnc pmlobj pmlmac pml mac pmlcmd" udlVersion="2.1">
                <Settings>
                    <Global caseIgnored="no" allowFoldOfComments="no" foldCompact="no" forcePureLC="0" decimalSeparator="0" />
                    <Prefix Keywords1="yes" Keywords2="no" Keywords3="no" Keywords4="no" Keywords5="no" Keywords6="no" Keywords7="no" Keywords8="no" />
                </Settings>
                <KeywordLists>
        ...
        
        P 1 Reply Last reply Aug 26, 2021, 1:42 PM Reply Quote 1
        • P
          PeterJones @p r
          last edited by Aug 26, 2021, 1:42 PM

          @p-r ,

          You don’t say specifically which version of Notepad++ you have, but since you mention overrideMap.xml, then I assume you are using Notepad++ v7.9.2 or newer. If this is correct, then you are not using the right syntax in the .../Notepad++/functionList/pml.xml file: there shouldn’t be a <parsers>...</parsers> wrapper around the <parser...>...</parser>. See the official references in the Online User Manual:

          • https://npp-user-manual.org/docs/function-list/
          • https://npp-user-manual.org/docs/config-files/#function-list

          When I remove that extra tag from the XML and reload Notepad++, it works for me:
          8a25d200-198a-4ec4-996b-891e665fce29-image.png

          <?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>
          		<parser
          			displayName="PML"
          			id         ="pml_function"
          			commentExpr="(--$*)"
          		>
          			<function
          			mainExpr="^define method"
          			displayMode="$functionName$">
          			<functionName>
          				<nameExpr expr=".*"/>
          			</functionName>
          			</function>
          		</parser>
          	</functionList>
          </NotepadPlus>
          

          Well, it “works” in that it displays an entry for the one method defined in your example code. I don’t think you have the regex grabbing enough, so you’ll want to experiment with that. But this is enough to get you to the point where the functionList will display something

          P 1 Reply Last reply Aug 26, 2021, 2:06 PM Reply Quote 1
          • P
            PeterJones @PeterJones
            last edited by Aug 26, 2021, 2:06 PM

            Expanded examples:

            include “define method” in the FunctionList panel

            <?xml version="1.0" encoding="UTF-8" ?>
            <NotepadPlus>
            	<functionList>
            		<parser
            			displayName="PML"
            			id         ="pml_function"
            			commentExpr="(--$*)"
            		>
            			<function
            				mainExpr="(?x)                                              # Utilize inline comments (see `RegEx - Pattern Modifiers`)
            						define                                              # literal text
            						\s+                                                 # one or more spaces
            						method                                              # literal text
            						\s+                                                 # one or more spaces
            						[\.A-Za-z_]                                         # a dot or letter or underscore
            						[\.\w]*                                             # zero or more dot or word character (letter, underscore, number)
            					"
            			>
            				<functionName>
            					<nameExpr expr="(?x)                                              # Utilize inline comments (see `RegEx - Pattern Modifiers`)
            						define                                              # literal text
            						\s+                                                 # one or more spaces
            						method                                              # literal text
            						\s+                                                 # one or more spaces
            						[\.A-Za-z_]                                         # a dot or letter or underscore
            						[\.\w]*                                             # zero or more dot or word character (letter, underscore, number)
            					" />
            				</functionName>
            			</function>
            		</parser>
            	</functionList>
            </NotepadPlus>
            

            6e283220-a413-4466-8387-324812a9a451-image.png

            don’t include “define method” in the FunctionList panel

            <?xml version="1.0" encoding="UTF-8" ?>
            <NotepadPlus>
            	<functionList>
            		<parser
            			displayName="PML"
            			id         ="pml_function"
            			commentExpr="(--$*)"
            		>
            			<function
            				mainExpr="(?x)                                              # Utilize inline comments (see `RegEx - Pattern Modifiers`)
            						define                                              # literal text
            						\s+                                                 # one or more spaces
            						method                                              # literal text
            						\s+                                                 # one or more spaces
            						[\.A-Za-z_]                                         # a dot or letter or underscore
            						[\.\w]*                                             # zero or more dot or word character (letter, underscore, number)
            					"
            			>
            				<functionName>
            					<nameExpr expr="(?x)                                              # Utilize inline comments (see `RegEx - Pattern Modifiers`)
            						define                                              # literal text
            						\s+                                                 # one or more spaces
            						method                                              # literal text
            						\s+                                                 # one or more spaces
            						\K                                                  # RESEST MATCH: only pattern _after_ here will be in FunctionList
            						[\.A-Za-z_]                                         # a dot or letter or underscore
            						[\.\w]*                                             # zero or more dot or word character (letter, underscore, number)
            					" />
            				</functionName>
            			</function>
            		</parser>
            	</functionList>
            </NotepadPlus>
            

            6183a150-e908-4dea-964e-8a77c0dc1df0-image.png

            1 Reply Last reply Reply Quote 1
            • P
              p r
              last edited by Aug 26, 2021, 4:30 PM

              Thank you very much.
              Wonderfull.
              Yes, of course, the <parsers>…</parsers> was the problem… holy shit
              Nice weekend
              Greetings
              Peter Ritzmann

              1 Reply Last reply Reply Quote 0
              5 out of 6
              • First post
                5/6
                Last post
              The Community of users of the Notepad++ text editor.
              Powered by NodeBB | Contributors