Community
    • Login

    Function List for Simatic

    Scheduled Pinned Locked Moved Help wanted · · · – – – · · ·
    functionsfunctions listcustomize
    20 Posts 2 Posters 12.4k 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.
    • Burak TavukcuogluB
      Burak Tavukcuoglu
      last edited by Burak Tavukcuoglu

      In the programming language that I use (Siemens Sinumerik 840 d sl), functions are displayed like this: %_N_CH2_SAW_MPF. %underlineNunderline and then the function name. Now I would like to view all my functions in the function list at Notepad++. I added the following code into the functionlist.xml. But still, functions don’t come up. Maybe I am doing something wrong with the code. Comments are written simply with ’ ; '. For example: ; Damping move off. I would be glad if someone could help me. Thanks!

      <association langID="50" id="NC_function"/>
      <association id="NC_function" userDefinedLangName="NC_function" />
      <association id="NC_function" ext=".arc" />
      
                  <parser id="NC_function" displayName="NC_function" commentExpr="(;.*)?$">
                  <function
                      mainExpr="^([%_N_]*[_A-Za-z])\w*:"
                      displayMode="$functionName">
                      <functionName>
                          <nameExpr expr="\w+"/>
                      </functionName>
                  </function>
              </parser>
      
      1 Reply Last reply Reply Quote 0
      • MAPJe71M
        MAPJe71
        last edited by MAPJe71

        Could you supply an example file for test/verify?

        1 Reply Last reply Reply Quote 0
        • MAPJe71M
          MAPJe71
          last edited by MAPJe71

          FYI:

          1. LangID 50 is intended for COBOL;
          2. When using the userDefinedLangName association, make sure you have a UserDefinedLanguage (UDL) with exactly the same name i.e. there should be a NC_function entry in the Notepad++ Language menu.

          Could you try this parser …

              <association id="NC_function" userDefinedLangName="NC_function" />
              <association id="NC_function" ext=".arc" />
          
              <parser id="NC_function" displayName="NC_function" commentExpr="(?m-s:;.*?$)">
                  <function mainExpr="^%_N_\K[A-Za-z_]\w*:" >
                      <functionName>
                          <nameExpr expr="\w+"/>
                      </functionName>
                  </function>
              </parser>```
          1 Reply Last reply Reply Quote 0
          • Burak TavukcuogluB
            Burak Tavukcuoglu
            last edited by

            Of course! This is how a sub-function looks like with M17 marking the end of the function.

            %_N_WAITE_CH2_FREE_SPF
            ;$PATH=/_N_SPF_DIR
            HOLDON:
            G04 F0.1
            STOPRE
            IF Channel2 <> 0 GOTOB HOLDON
            STOPRE
            MSG()
            M17

            1 Reply Last reply Reply Quote 0
            • MAPJe71M
              MAPJe71
              last edited by

              Thanks!

              In your example the function name (%_N_WAITE_CH2_FREE_SPF) does not end with a colon but in your parser you end the main-expression with a colon (^([%_N_]*[_A-Za-z])\w*:).
              Which one is correct?
              Do you have a link to a Siemens document that describes the syntax of the numeric control language?

              1 Reply Last reply Reply Quote 0
              • Burak TavukcuogluB
                Burak Tavukcuoglu
                last edited by

                The code did not work. http://imgur.com/rQLGnfL Here you can see that userDefinedLangName is the same name as the entry in the language menu.
                Without the colon is the correct version.

                1 Reply Last reply Reply Quote 0
                • MAPJe71M
                  MAPJe71
                  last edited by

                  Here’s an update …

                      <association id="NC_function" userDefinedLangName="NC 840dsl" />
                      <association id="NC_function" ext=".arc" />
                  
                      <parser id="NC_function" displayName="NC 840dsl" commentExpr="(?m-s:;.*?$)">
                          <function mainExpr="^%_N_\K[A-Za-z_]\w*" />
                      </parser>
                  
                  1 Reply Last reply Reply Quote 0
                  • Burak TavukcuogluB
                    Burak Tavukcuoglu
                    last edited by

                    First of all, thanks a lot for your help and time MAPJe71
                    I found this document for the syntax. https://support.industry.siemens.com/cs/document/109248664/sinumerik-840d-sl-job-planning?dti=0&pnid=14599&lc=en-WW
                    To wrap it up, I wrote down the current state of the function list. It still doesnt work. :(

                                <association id="NC_function" userDefinedLangName="NC 840dsl" />
                    						<association id="NC_function" ext=".arc" />
                                    <parser id="NC_function" displayName="NC 840dsl" commentExpr="(?m-s:;.*?$)">
                        <function mainExpr="^%_N_\K[A-Za-z_]\w*" />
                    			<functionName>
                                <nameExpr expr="\w+"/>
                            </functionName>
                        </function>
                    </parser>
                    
                    1 Reply Last reply Reply Quote 0
                    • MAPJe71M
                      MAPJe71
                      last edited by

                      You didn’t correctly copy-paste the parser-node I posted.
                      Remove the …

                                  <functionName>
                                  <nameExpr expr="\w+"/>
                              </functionName>
                          </function>
                      

                      part or re-copy/paste so it looks like this …

                          <parser id="NC_function" displayName="NC 840dsl" commentExpr="(?m-s:;.*?$)">
                              <function mainExpr="^%_N_\K[A-Za-z_]\w*" />
                          </parser>
                      

                      Also check whether or not you edited the right functionList.xml file as there might be more than one on your system:

                      1. %ProgramFiles%\Notepad++\functionList.xml;
                      2. %ProgramFiles(x86)%\Notepad++\functionList.xml;
                      3. %AppData%\Notepad++\functionList.xml

                      Furthermore, make sure to restart Notepad++ after you edited and saved the XML-file.

                      1 Reply Last reply Reply Quote 0
                      • Burak TavukcuogluB
                        Burak Tavukcuoglu
                        last edited by Burak Tavukcuoglu

                        It did work!!
                        Thank you!!
                        Apperantly I modified the false file. Namely, %APPDATA%\notepad++\functionList.xml as in https://notepad-plus-plus.org/features/function-list.html, and not as you mentioned above: %ProgramFiles(x86)%\Notepad++\functionList.xml.
                        Thanks MAPJe71, you really helped me a lot.
                        My best regards!

                        1 Reply Last reply Reply Quote 0
                        • Burak TavukcuogluB
                          Burak Tavukcuoglu
                          last edited by

                          Hi!
                          I recently discovered a bug in the function list feature. (or something I overlooked)
                          The function list works great. But when I open certain files, functions are not being listed. However, when I copy the content of my code to a new window, functions are listed just as normal.
                          This does not happen with every file. With file names such as: SPF_DIR.arc and MPF_DIR.arc, it happens all the time. Are those file names not permitted in Notepad++?
                          Thanks!

                          1 Reply Last reply Reply Quote 0
                          • MAPJe71M
                            MAPJe71
                            last edited by

                            AFAIK there’s no restriction on file names other than the standard Windows restrictions.
                            Could you post the files and the Notepad++ Debug Info (you can find it in the ? menu) so I can try to reproduce the problem?

                            1 Reply Last reply Reply Quote 0
                            • Burak TavukcuogluB
                              Burak Tavukcuoglu
                              last edited by

                              https://www.dropbox.com/sh/53wxnnxioxmcj8p/AADzd9wMDWoCVTgVrZJdqqL-a?dl=0
                              In the shared folder, there is a file which I am trying to display the functions of it and the respective functionlist and the user defined language.
                              Due to the copywrite agreements, I can not post the complete code that is why I trimmed the code to the function names. I tried to view the functions, it didnt work.
                              Many thanks!

                              1 Reply Last reply Reply Quote 0
                              • MAPJe71M
                                MAPJe71
                                last edited by

                                Due to the copyright agreements, I can not post the complete code …

                                I understand and so far the trimmed down code helps, as it does not show any functions on my system either.
                                I’ll have a look.

                                1 Reply Last reply Reply Quote 0
                                • Burak TavukcuogluB
                                  Burak Tavukcuoglu
                                  last edited by

                                  Thank you for correcting me. I probably typed it really quick. :)
                                  I can confirm that the regex file you provided, really did the trick and the function view normally works. It fails to show the functions whenever I try to open a new file
                                  Once again thank you so much for your help!

                                  1 Reply Last reply Reply Quote 0
                                  • MAPJe71M
                                    MAPJe71
                                    last edited by MAPJe71

                                    You’re welcome!

                                    1. Incomplete parser;
                                    2. Known bug with comment following function header.

                                    ad.1. Adapt parser to:

                                    <parser id="NC_function" displayName="NC 840dsl" commentExpr="(?m-s:;.*?$)">
                                    	<function mainExpr="(?m)^%_N_\K[A-Za-z_]\w*" />
                                    </parser>
                                    

                                    ad.2. There have to be at least two characters between the function header and the comment.
                                    e.g. a line-break and a space

                                    %_N_CH1_BASIC_POS_SPF
                                     ;$PATH=/_N_SPF_DIR
                                    ;(c)2013 by Linsinger Maschinenbau Ges.m.b.H.
                                    

                                    or two line-breaks

                                    %_N_CH1_BASIC_POS_SPF
                                    
                                    ;$PATH=/_N_SPF_DIR
                                    ;(c)2013 by Linsinger Maschinenbau Ges.m.b.H.
                                    

                                    or two spaces

                                    %_N_CH1_BASIC_POS_SPF  ;$PATH=/_N_SPF_DIR
                                    ;(c)2013 by Linsinger Maschinenbau Ges.m.b.H.
                                    

                                    or a colon and a line-break

                                    %_N_CH1_BASIC_POS_SPF:
                                    ;$PATH=/_N_SPF_DIR
                                    ;(c)2013 by Linsinger Maschinenbau Ges.m.b.H.
                                    

                                    etc.

                                    1 Reply Last reply Reply Quote 0
                                    • Burak TavukcuogluB
                                      Burak Tavukcuoglu
                                      last edited by

                                      It is weird. Because it doesnt happen with other files even though the comment line is right below the function tag.
                                      Thanks for your time and help!

                                      1 Reply Last reply Reply Quote 0
                                      • MAPJe71M
                                        MAPJe71
                                        last edited by

                                        Had another look …
                                        ad.2. or make sure your line-breaks consist of a carriage-return and a line-feed (i.e. two characters).

                                        Your SPF_DIR - Kopie.arc uses line-feeds for line-breaks i.e. only one character between tag and comment.

                                        1 Reply Last reply Reply Quote 0
                                        • Burak TavukcuogluB
                                          Burak Tavukcuoglu
                                          last edited by

                                          Is it possible to add an exception into comments section?
                                          For example: everything is a comment except when $PATH comes right after ‘;’.

                                          1 Reply Last reply Reply Quote 0
                                          • MAPJe71M
                                            MAPJe71
                                            last edited by

                                            Yes that can work, in your case!
                                            Change commentExpr to "(?m-s:;(?!\$PATH).*?$)".

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