Community
    • Login

    How to add an new entry in the "FunctionList"?

    Scheduled Pinned Locked Moved Help wanted · · · – – – · · ·
    14 Posts 2 Posters 3.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.
    • PeterJonesP
      PeterJones @Magnus Berglund
      last edited by

      @Magnus-Berglund said in How to add an new entry in the "FunctionList"?:

      How can I upload a 7z file?

      You cannot upload 7z or other such files to the forum itself. In theory, you could upload them to a file-sharing site, but many (like me) have such sites blocked by I.T., so wouldn’t be able to grab the files to look at them.

      As I said, to give us the files, you would paste the contents in the post, and mark them up using the </> button. Really, if you just pasted the 8 lines of the TCL parser, that would give us enough to experiment with; once we were able to help you get that one working, you might be able to see what’s going wrong with the others…

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

        @Magnus-Berglund ,

        So, since you hadn’t posted, I did try to implement the TCL. It works for me.

        68cc1de9-747b-445b-845f-9ad546a99ea4-image.png

        However, there is the caveat: TCL is a built-in language, it just didn’t have the functionList bundled with Notepad++ (not all the built-in languages have functionList files, unfortunately). So you don’t actually need to add a UDL for TCL, and you don’t need to edit the overrideMap.xml, because TCL (language #29) by default maps to tcl.xml. You just need the functionList\tcl.xml to validly represent the procedure names.

        I took your regex and put them into tcl.xml, as seen below; I then re-loaded Notepad++, and opened ex.tcl file, with a simplified version of what was in your image, and it saw the two functions show up in the list.

        <?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="TCL"
        				id         ="tcl_procedure"
        				commentExpr="(#)"
        			>
        				<function
        					mainExpr="^[\t ]*((proc)[\s]+)[^\s]+"
        				>
        					<functionName>
        						<nameExpr expr="(proc)\s+[\x21-\x7E]+" />
        						<nameExpr expr="\s+[^\s]+" />
        					</functionName>
        				</function>
        			</parser>
        	</functionList>
        </NotepadPlus>
        
        1 Reply Last reply Reply Quote 0
        • Magnus BerglundM
          Magnus Berglund
          last edited by

          @PeterJones , Sorry I needed to go home but up’n running again :-)

          Here’s a tcl example.

          
          #=============================================================
          proc PB_CMD_force_G_feed { } {
          #=============================================================
          # Ds6803 2012-01-09
          
          MOM_force ONCE G_feed F
          
          } ;# End proc
          
          
          #=============================================================
          proc MOM_robot_prg {} {
          #=============================================================
          # Variables from this UDE are passes forward to PB_CMD_create_robot_tape.
          # Ds6803 2012-05-18
          
          
          } ;# End proc
          
          
          

          and here is a UDE example

          #---------------------------------------------------------------------------
          
          EVENT block_jump
          {
             UI_LABEL "VRX Block jump"
             CATEGORY MILL DRILL LATHE
          
             PARAM command_status
             {
                TYPE o
                DEFVAL "Active"
                OPTIONS "Active","Inactive","User Defined"
                UI_LABEL "Status"
             }
             PARAM ude_block_jump
             {
                TYPE s
                DEFVAL "#199=#4314"
                UI_LABEL "Read sequence number command"
             }
          }
          
          #---------------------------------------------------------------------------
          
          EVENT btd
          {
             UI_LABEL "VRX BTD"
             CATEGORY MILL DRILL LATHE
          
             PARAM command_status
             {
                TYPE o
                DEFVAL "Active"
                OPTIONS "Active","Inactive","User Defined"
                UI_LABEL "Status"
             }
             PARAM ude_btd_optional_skip
             {
                TYPE o
                DEFVAL "/3"
                OPTIONS "NONE","/1","/2","/3","/4","/5","/6","/7","/8","/9"
                UI_LABEL "Optional skip?"
             }
             PARAM ude_btd_prg
             {
                TYPE s
                TOGGLE On
                DEFVAL "M98 P9997"
                UI_LABEL "Sub program call"
             }
             PARAM ude_btd_tool_text
             {
                TYPE   s
                TOGGLE Off
                DEFVAL "BTD"
                UI_LABEL "Text"
             }
          }
          
          

          and finally the DEF example

            ADDRESS LF_SPEED
            {
                FORMAT      Rev
                FORCE       always
                LEADER      ""
                ZERO_FORMAT Zero_int
            }
          
            ADDRESS LF_ZABS
            {
                FORMAT      AbsCoord
                FORCE       always
                LEADER      ""
                ZERO_FORMAT Zero_real
            }
          
          
          ############ BLOCK TEMPLATE DECLARATIONS #############
            BLOCK_TEMPLATE absolute_mode
            {
                 G_cutcom[$mom_sys_cutcom_code(OFF)]
                 G_plane[$mom_sys_cutcom_plane_code(XY)]
                 G_adjust[$mom_sys_adjust_cancel_code]
                 G_feed[$mom_sys_feed_rate_mode_code($feed_mode)]
                 G_return[$mom_sys_cycle_ret_code(AUTO)]
                 G_motion[$mom_sys_rapid_code]
                 G_mode[$mom_sys_output_code(ABSOLUTE)]
            }
          
            BLOCK_TEMPLATE auxfun
            {
                 M[$mom_auxfun]
                 Text[$smc_auxfun_text]\opt
            }
          
            BLOCK_TEMPLATE circular_c
            {
                 G_motion[$mom_sys_linear_code]
                 G_mode[$mom_sys_output_code($mom_output_mode)]\opt
                 fifth_axis[$mom_out_angle_pos(1)]
                 F[$feed]
            }
          
          
          PeterJonesP 1 Reply Last reply Reply Quote 1
          • PeterJonesP
            PeterJones @Magnus Berglund
            last edited by

            @Magnus-Berglund ,

            All three work for me.
            798dfcb4-5b8c-4ae7-9fae-0738d010defe-image.png
            a1464e4a-3bbb-473d-b23b-d9a5e9842e4a-image.png
            23cfb8e6-4522-486e-9ecf-5e0f94295216-image.png

            ude.xml:

            <?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="UDE"
            				id         ="ude_procedure"
            				commentExpr="(#)"
            			>
            				<function
            					mainExpr="^[\t ]*((EVENT)[\s]+)[^\s]+"
            				>
            					<functionName>
            						<nameExpr expr="(EVENT)\s+[\x21-\x7E]+" />
            						<nameExpr expr="\s+[^\s]+" />
            					</functionName>
            				</function>
            			</parser>
            	</functionList>
            </NotepadPlus>
            

            def.xml:

            <?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="DEF"
            				id         ="def_procedure"
            				commentExpr="(#)"
            			>
            				<function
            					mainExpr="^[\t ]*((ADDRESS|BLOCK_TEMPLATE)[\s]+)[^\s]+"
            				>
            					<functionName>
            						<nameExpr expr="(ADDRESS|BLOCK_TEMPLATE)\s+[\x21-\x7E]+" />
            						<nameExpr expr="\s+[^\s]+" />
            					</functionName>
            				</function>
            			</parser>
            	</functionList>
            </NotepadPlus>
            

            my overrideMap.xml has two new entries, next to the other UDL entries:

            			<association id= "ude.xml"		userDefinedLangName="UDE"/>
            			<association id= "def.xml"		userDefinedLangName="DEF"/>
            

            For my UDL definitions, I do not have a TCL UserDefinedLanguage, because TCL is a builtin language. I have a minimal UDL definition for UDE (all that’s saved is the extension = ude) and a minimal definition for the DEF (all that’s saved is the extension def). If I open your example TCL, UDE, or DEF files, they open associated as builtin TCL, user defined UDE, or user-defined DEF, and the functionList recognizes their functions, as shown in the screenshots above.

            1 Reply Last reply Reply Quote 2
            • Magnus BerglundM
              Magnus Berglund
              last edited by

              @PeterJones
              I’ve removed my “portable installation”, installed from “npp.7.9.1.Installer.x64.exe”, started NP++, closed NP++ and then copied the edited (as above) “ude.xml”, “def.xml” and “overrideMap.xml” to “C:\Users\me\AppData\Roaming\Notepad++\functionList”. Started NP++ and open a tcl file(or a def or a cdl) but nothing show up in the Functionlist.

              ???

              I also uses a own “userDefineLang.xml”. Can this have impact on the FunctionList?

              pic1.jpg

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

                @Magnus-Berglund

                Since your UDL are called “NX UDE” and “NX DEF”, change the overrideMap to match.

                			<association id= "ude.xml"		userDefinedLangName="NX UDE"/>
                			<association id= "def.xml"		userDefinedLangName="NX DEF"/>
                
                1 Reply Last reply Reply Quote 1
                • Magnus BerglundM
                  Magnus Berglund
                  last edited by

                  @PeterJones
                  I tried but… :-(
                  below you see my files in the dir “C:\Users\me\AppData\Roaming\Notepad++\functionList”

                  def.xml

                  <?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="NX DEF"
                  				id         ="def_procedure"
                  				commentExpr="(#)"
                  			>
                  				<function
                  					mainExpr="^[\t ]*((ADDRESS|BLOCK_TEMPLATE)[\s]+)[^\s]+"
                  				>
                  					<functionName>
                  						<nameExpr expr="(ADDRESS|BLOCK_TEMPLATE)\s+[\x21-\x7E]+" />
                  						<nameExpr expr="\s+[^\s]+" />
                  					</functionName>
                  				</function>
                  			</parser>
                  	</functionList>
                  </NotepadPlus>
                  

                  ude.xml

                  <?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="NX UDE"
                  				id         ="ude_procedure"
                  				commentExpr="(#)"
                  			>
                  				<function
                  					mainExpr="^[\t ]*((EVENT)[\s]+)[^\s]+"
                  				>
                  					<functionName>
                  						<nameExpr expr="(EVENT)\s+[\x21-\x7E]+" />
                  						<nameExpr expr="\s+[^\s]+" />
                  					</functionName>
                  				</function>
                  			</parser>
                  	</functionList>
                  </NotepadPlus>
                  

                  and finally overrideMap.xml

                  <!-- ==================== User Defined Languages =============== -->
                  		<association id= "krl.xml"				userDefinedLangName="KRL"/>
                  		<association id= "sinumerik.xml"		userDefinedLangName="Sinumerik"/>
                  		<association id= "universe_basic.xml"	userDefinedLangName="UniVerse BASIC"/>
                  		<association id= "ude.xml"				userDefinedLangName="NX UDE"/>
                  		<association id= "def.xml"				userDefinedLangName="NX DEF"/>
                  <!-- ==================================================== -->
                  

                  I’ll close for tonight and the weekend and made more tries during next week.
                  If You come up any idea what my issue is, I appriciate your support.
                  Thanks and have a nice weekend!

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

                    @Magnus-Berglund said in How to add an new entry in the "FunctionList"?:

                    any idea what my issue is

                    Sorry, if I name my UDL “NX UDE”, assigned to the same .cdl extension your image showed, with the overrideMap and ude.xml as shown, it works for me. I cannot see what’s going wrong with yours.

                    Maybe this weekend, I’ll create a zipfile with the working Portable with the UDL and functionList , and put it temporarily on my website for you to download a working setup, and compare that to what you have. If I get that done, I’ll post a link

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

                      @Magnus-Berglund ,

                      here is a temporary link to a zipfile. This will unzip a portable Notepad++ v7.9.1-x64 which has an existing session with the example TCL, UDE, and DEF files open; the UDL is defined for NX UDE (.cdl) and NX DEF (.def). The functionList folder has files for tcl.xml, nx_ude.xml, nx_def.xml, and an updated overrideMap.xml which points to those file names.

                      For future readers: the download link may be invalid in the future; sorry.

                      When I use this portable, I see the following, showing that
                      4326c7d0-e4c0-4396-8eff-d628d296e8a4-image.png
                      04179fab-c3b1-48fc-b078-e546b4880107-image.png
                      8cd32354-3155-4bff-a804-50b90393fa3b-image.png

                      (PS: I do not claim that my UDL definitions for those languages are any good; I just made a quick-and-dirty UDL for them to prove that the UDL was properly recognized; your UDL definition for those files is most likely much better than mine.)

                      1 Reply Last reply Reply Quote 3
                      • Magnus BerglundM
                        Magnus Berglund
                        last edited by

                        @PeterJones
                        Hello Peter,
                        What a fantastic zipfile! :-)
                        It works even for me, jippy!

                        Thanks for the support!
                        Have a great Christmas together with your family

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