How to add an new entry in the "FunctionList"?
-
@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… -
So, since you hadn’t posted, I did try to implement the TCL. It works for me.
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 thefunctionList\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 openedex.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>
-
@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] }
-
All three work for me.
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 extensiondef
). 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. -
@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?
-
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"/>
-
@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! -
@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
-
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
). ThefunctionList
folder has files fortcl.xml
,nx_ude.xml
,nx_def.xml
, and an updatedoverrideMap.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
(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.)
-
@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