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.
    • Magnus BerglundM
      Magnus Berglund @PeterJones
      last edited by

      @PeterJones Thanks for the support!
      How can I upload a 7z file?
      (i’m new in this forum… ;-) )
      //magnus

      PeterJonesP 2 Replies 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"?:

        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