• Login
Community
  • Login

[Feature/Help Request] Add more items to function list for Windows batch files

Scheduled Pinned Locked Moved Help wanted · · · – – – · · ·
3 Posts 3 Posters 2.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.
  • B
    bege10
    last edited by Oct 9, 2016, 4:36 PM

    Hi,
    currently the function list shows only labels (:name) for batch files. I additionally need these items:

    • call
    • start
    • goto

    My request is to have these items added to functionlist.xml.
    Can someone help my with the code to do so myself in the meantime?
    Thank you very much.

    1 Reply Last reply Reply Quote 0
    • M
      MAPJe71
      last edited by Oct 9, 2016, 6:50 PM

      I strongly advise against showing more then just functions/sub-routines (i.e. labels in batch files) in the FunctionList tree but considering the following …

      CALL [drive:][path]filename [batch-parameters]
      CALL :label arguments
      
      START ["title"] [start-arguments] [command/program] [parameters]
      
      GOTO [:]label
      

      … what parts of the commands would you like to show up in the tree?

      1 Reply Last reply Reply Quote 0
      • G
        guy038
        last edited by guy038 Oct 9, 2016, 8:48 PM Oct 9, 2016, 8:41 PM

        Hello bege10,

        To fully distinguish the different GOTO, CALL and START commands, of your batch file, I suppose that you need all the contents of the line, starting with these commands :-)

        If so, here is, below, a batch parser, which should work nice !!

        • Open your active functionList.xml file

        • Change the present batch_label id parser contents by the parser, below :

          <parser id=“batch_label” displayName=“BAT Label” commentExpr=“^[\t ](::|REM).?$”>
          <function
          mainExpr=“^[\t ]*\K.+?$”
          displayMode=“$functionName”>
          <functionName>
          <nameExpr expr=“(call |goto |start |(?<=:)).+?$”/>
          </functionName>
          </function>
          </parser>

        Notes :

        • The commentExpr string is, either, the word REM or the symbol ::, preceded by possible leading space/tabulation characters and followed by any range, even null, or characters

        • Then, the mainExpr string, from which the different entities, to display in the FunctionList window, will be extracted, is any, non-null, range of characters, which follows possible leading space/tabulation characters ( and different from comment ranges ! )

        • Finally, the expr string is, either :

          • The word call, goto or start, followed by a space and any non null range of characters
          • Any non null range of characters, following a colon ( : )

        IMPORTANT :

        The functionList regex engine does NOT act as the Notepad++ one. By default, it considers that the dot meta-character ( . ) match, absolutely, any character ( standard or EOL ones )

        But, as the Notepad++ regex engine does, it considers that the ^ and $ assertions stand for the beginning and the end of any line

        So, when you want to match, from any location, all the remaining characters of a line, TWO syntaxes are possible :

        .+?$ which matches any non-null range of any character, ( standard or EOL ones ), till the nearest EOL location, due to the lazy quantifier +?

        OR

        (?-s).+ which matches any non-null range of standard characters only, due to the in-line modifier (?-s)

        Of course, if the range of characters may be a zero-length string, prefer the syntax .*?$ OR (?-s).*

        Best Regards,

        guy038

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