• Login
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.
  • B
    Burak Tavukcuoglu
    last edited by Burak Tavukcuoglu Oct 14, 2016, 8:01 AM Oct 14, 2016, 7:59 AM

    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
    • M
      MAPJe71
      last edited by MAPJe71 Oct 14, 2016, 3:32 PM Oct 14, 2016, 3:31 PM

      Could you supply an example file for test/verify?

      1 Reply Last reply Reply Quote 0
      • M
        MAPJe71
        last edited by MAPJe71 Oct 14, 2016, 3:51 PM Oct 14, 2016, 3:49 PM

        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
        • B
          Burak Tavukcuoglu
          last edited by Oct 14, 2016, 6:48 PM

          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
          • M
            MAPJe71
            last edited by Oct 14, 2016, 7:35 PM

            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
            • B
              Burak Tavukcuoglu
              last edited by Oct 14, 2016, 7:40 PM

              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
              • M
                MAPJe71
                last edited by Oct 14, 2016, 7:45 PM

                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
                • B
                  Burak Tavukcuoglu
                  last edited by Oct 14, 2016, 9:40 PM

                  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
                  • M
                    MAPJe71
                    last edited by Oct 14, 2016, 10:44 PM

                    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
                    • B
                      Burak Tavukcuoglu
                      last edited by Burak Tavukcuoglu Oct 16, 2016, 7:52 PM Oct 16, 2016, 7:51 PM

                      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
                      • B
                        Burak Tavukcuoglu
                        last edited by Nov 11, 2016, 10:54 AM

                        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
                        • M
                          MAPJe71
                          last edited by Nov 11, 2016, 3:21 PM

                          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
                          • B
                            Burak Tavukcuoglu
                            last edited by Nov 11, 2016, 9:46 PM

                            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
                            • M
                              MAPJe71
                              last edited by Nov 11, 2016, 9:55 PM

                              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
                              • B
                                Burak Tavukcuoglu
                                last edited by Nov 11, 2016, 10:27 PM

                                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
                                • M
                                  MAPJe71
                                  last edited by MAPJe71 Nov 11, 2016, 10:36 PM Nov 11, 2016, 10:35 PM

                                  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
                                  • B
                                    Burak Tavukcuoglu
                                    last edited by Nov 11, 2016, 10:51 PM

                                    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
                                    • M
                                      MAPJe71
                                      last edited by Nov 11, 2016, 11:08 PM

                                      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
                                      • B
                                        Burak Tavukcuoglu
                                        last edited by Nov 12, 2016, 1:12 PM

                                        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
                                        • M
                                          MAPJe71
                                          last edited by Nov 13, 2016, 2:33 AM

                                          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