Community
    • Login

    Hide comment

    Scheduled Pinned Locked Moved Help wanted · · · – – – · · ·
    7 Posts 3 Posters 5.3k 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.
    • Marcel LindigM
      Marcel Lindig
      last edited by

      I need to hide the comments, because I want to numbering only the code lines.
      Or if somebody have an idea to numbering all the program lines only, please answer me.

      It look like this:

      ;comment
      ;comment
      ;comment
      N10 G1 X300
      N20 G1 X0
      ;comment
      ;comment
      N30 G0 Z200
      N40 G1X400
      …

      Claudia FrankC 1 Reply Last reply Reply Quote 0
      • Claudia FrankC
        Claudia Frank @Marcel Lindig
        last edited by

        @Marcel-Lindig

        if semicolon is only once in every line and only within the comment line than
        you can search for semicolon and count it, abstract from total number of lines and
        you should get the number of code lines.

        Cheers
        Claudia

        1 Reply Last reply Reply Quote 0
        • guy038G
          guy038
          last edited by guy038

          Hello, @marcel-lindig,

          Even more simple ! From your post, I supposed that, in your language, your comment lines, begin with a semicolon symbol. Now :

          • Open the Find dialog ( Ctrl + F )

          • Type ^[^;\r\n], in the Find what: box

          • Choose the Regular expression search mode ( IMPORTANT )

          • Click on the Count button

          => You, automatically, get the number of NO-comment lines. ( I supposed that complete blank lines are considered as comment lines ! )

          Et voilà !!


          Now, if the Python script is installed , in your N++ configuration, you may use, on the other hand, the Claudia’s script, from the link, below :

          https://notepad-plus-plus.org/community/topic/13754/replace-1-lines/12

          • Add the comment line ;^[^;\r\n], anywhere in your file

          • Select the part ^[^;\r\n], without the leading semicolon

          • Run the Claudia’s script

          => You, automatically, get, the number of NO-comment lines, again :-D

          Best Regards,

          guy038

          1 Reply Last reply Reply Quote 0
          • Marcel LindigM
            Marcel Lindig
            last edited by

            hm you don´t understand me correctly.

            First I wrote this:

            ;comment
            ;comment
            ;comment
            G1 X300
            G1 X0
            ;comment
            ;comment
            G0 Z200
            G1X400

            then I want automatically this:

            ;comment
            ;comment
            ;comment
            N10 G1 X300
            N20 G1 X0
            ;comment
            ;comment
            N30 G0 Z200
            N40 G1X400

            Claudia FrankC 1 Reply Last reply Reply Quote 0
            • Claudia FrankC
              Claudia Frank @Marcel Lindig
              last edited by

              @Marcel-Lindig

              if you are williing to install python script plugin,
              these script may do what you want

              new_cnc_code = ''
              counter = 10
              
              def add_text(content, line, total):
                  global new_cnc_code
                  global counter
                  if content.startswith(';'):
                      new_cnc_code += content
                  else:
                      new_cnc_code += 'N{0} {1}'.format(counter, content)
                      counter += 10
              
              editor.forEachLine(add_text) # loop through existing text
              editor.beginUndoAction() # set an undo start point
              editor.clearAll() # delete the complete content
              editor.appendText(new_cnc_code) # add the newly created code
              editor.endUndoAction()  # set an undo end point
              

              In case anything goes wrong you should be able to revert everything by pressing undo button.
              Don’t know your python knowledge - if something is unclear, let us know.

              Cheers
              Claudia

              Marcel LindigM 1 Reply Last reply Reply Quote 0
              • guy038G
                guy038
                last edited by guy038

                Hello, @marcel-lindig,

                Of course, the Clauda’s Python script is, certainly, the more simple method to achieve it. But, if you don’t want to use any plugin, here is a procedure, using native N++ commands, only. However, this method will need some steps for the user to do !!

                It, mainly, uses :

                • Automatic column numbering, with the Column Editor

                • Search / Replace actions, with the Replace dialog

                • Ascending Lexical Sort


                So, let’s start with the original text, below :

                ;comment 1
                ;comment 2
                ;comment 3
                G1 X300
                G1 X0
                ;comment 4
                ;comment 5
                G0 Z200
                G1X400
                ;comment 6
                G2Y100
                G3 H500
                G2 K200
                ;comment 7
                ;comment 8
                G0 F50
                ;comment 9
                G3 F100
                ;comment 10
                G1M100
                G1P10
                G2 V700
                G5 D1000
                
                • Place the caret to the very beginning of your file, column 1, Line 1 ( Ctrl + Origin )

                • Then, move with the vertical scroll bar, on the right, exclusively, to the last line, column 1

                • Use the Alt + Maj + Left click shortcut to get a zero-length rectangular selection, at column 1

                • Hit, twice, on the space key, to add 2 space characters

                • Hit, once, on the Left Arrow key, to move back, line 1, column 2

                • Select the option Edit > Column Editor… ( Alt + C )

                  • Select the option Number to Insert

                  • Type 1 in the two fields Initial number and Increase by

                  • Check the Leading zeros box

                  • If necessary, select the Dec radio button

                  • Click on the OK button

                  • Delete, possibly, the last non-significant number

                You should have the modified text, below :

                 01 ;comment 1
                 02 ;comment 2
                 03 ;comment 3
                 04 G1 X300
                 05 G1 X0
                 06 ;comment 4
                 07 ;comment 5
                 08 G0 Z200
                 09 G1X400
                 10 ;comment 6
                 11 G2Y100
                 12 G3 H500
                 13 G2 K200
                 14 ;comment 7
                 15 ;comment 8
                 16 G0 F50
                 17 ;comment 9
                 18 G3 F100
                 19 ;comment 10
                 20 G1M100
                 21 G1P10
                 22 G2 V700
                 23 G5 D1000
                

                • Add TWO complete blank lines, at the end of file, WITHOUT leading spaces

                • Move back, to the very beginning of the file ( Ctrl + Origin )

                • Open the Replace dialog ( Ctrl + H )

                  • SEARCH (?-s)((?:^ \d+ [^;].+\R)++)(?s)(.+)

                  • REPLACE \2\1

                  • UN-check the Wrap around option

                  • Select the Regular expression search mode

                  • Click on the Replace All button, SEVERAL times, till the message Replace All: 0 occurrences were replaced occurs

                Now, your text is changed into the one below :

                 01 ;comment 1
                 02 ;comment 2
                 03 ;comment 3
                 06 ;comment 4
                 07 ;comment 5
                 10 ;comment 6
                 14 ;comment 7
                 15 ;comment 8
                 17 ;comment 9
                 19 ;comment 10
                
                
                 04 G1 X300
                 05 G1 X0
                 08 G0 Z200
                 09 G1X400
                 11 G2Y100
                 12 G3 H500
                 13 G2 K200
                 16 G0 F50
                 18 G3 F100
                 20 G1M100
                 21 G1P10
                 22 G2 V700
                 23 G5 D1000
                

                • Move to the first NO-comment line, column 1

                • Locate the caret, right after the digits and the space character, located after

                • Select, again, the option Edit > Column Editor… ( Alt + C )

                  • Select the option Number to Insert

                  • Type, this time, 10 in the two fields Initial number and Increase by

                  • Use the same options as above, and click on the OK button

                  • Delete, possibly, the last non-significant number

                • Move, again, to the first NO-comment line, at column 1

                • Then, open the Replace dialog ( Ctrl + H )

                  • SEARCH ^( \d+ )(\d+)

                  • REPLACE \1N\2\x20

                  • Use the same options as above and click, ONCE, on the Replace All button

                After the numbering and S/R actions, you should get the text :

                 01 ;comment 1
                 02 ;comment 2
                 03 ;comment 3
                 06 ;comment 4
                 07 ;comment 5
                 10 ;comment 6
                 14 ;comment 7
                 15 ;comment 8
                 17 ;comment 9
                 19 ;comment 10
                
                
                 04 N010 G1 X300
                 05 N020 G1 X0
                 08 N030 G0 Z200
                 09 N040 G1X400
                 11 N050 G2Y100
                 12 N060 G3 H500
                 13 N070 G2 K200
                 16 N080 G0 F50
                 18 N090 G3 F100
                 20 N100 G1M100
                 21 N110 G1P10
                 22 N120 G2 V700
                 23 N130 G5 D1000
                

                • Now, move back at the first line of your file, column 1 ( Ctrl + Origin )

                • Perform a sort, with the menu option Edit > Line Operations > Sort Lines Lexicographically Ascending

                • Move, once more, at the very beginning of your file ( Ctrl + Origin )

                • Delete, if necessary, the pure blank lines, at beginning of the file

                • Finally, open the Replace dialog ( Ctrl + H )

                  • SEARCH ^\x20\d+\x20

                  • REPLACE Leave EMPTY

                  • Use the same options as above and click, ONCE, on the Replace All button

                Et voilà ! You should obtain the expected text, below :

                ;comment 1
                ;comment 2
                ;comment 3
                N010 G1 X300
                N020 G1 X0
                ;comment 4
                ;comment 5
                N030 G0 Z200
                N040 G1X400
                ;comment 6
                N050 G2Y100
                N060 G3 H500
                N070 G2 K200
                ;comment 7
                ;comment 8
                N080 G0 F50
                ;comment 9
                N090 G3 F100
                ;comment 10
                N100 G1M100
                N110 G1P10
                N120 G2 V700
                N130 G5 D1000
                

                BTW, from my first S/R above, here is the general way to separate file contents, in TWO parts, according to a criterion ( or more ! ) , with the INITIAL order KEPT. The generic regex is :

                SEARCH (?-s)((?:^Regex.*\R)++)(?s)(.+)

                REPLACE \2\1

                For instance, let’s suppose that you want to separate a text in two parts, each of them keeping the initial order, with the simple condition : a digit, at column 7. Thus, the regex, to include into the generic one, is the regex .{6}\d , giving the final S/R :

                SEARCH (?-s)((?:^.{6}\d.*\R)++)(?s)(.+)

                REPLACE \2\1

                After the replacement :

                • The first part will contain all the lines, which do NOT have a digit, at column 7

                • The second part will contain all the lines, which DO have a digit, at column 7


                So, from the example text, with a line break, after the last line, below :

                Val : 7 this is a
                Val : 3 simple text
                Val : A THIS IS A
                Val : 4 which should
                Val : Z SIMPLE TEXT
                Val : L WHICH SHOULD
                Val : 9 be readable
                Val : F BE READABLE
                Val : C AFTER THE
                Val : 0 after the
                Val : 4 search/replacement
                Val : X SEARCH/REPLACEMENT
                

                After SEVERAL clicks on the Replace All button, till the message Replace All: 0 occurrences were replaced occurs, you should get the modified text, below :

                Val : A THIS IS A
                Val : Z SIMPLE TEXT
                Val : L WHICH SHOULD
                Val : F BE READABLE
                Val : C AFTER THE
                Val : X SEARCH/REPLACEMENT
                Val : 7 this is a
                Val : 3 simple text
                Val : 4 which should
                Val : 9 be readable
                Val : 0 after the
                Val : 4 search/replacement
                

                Important :

                In the generic search regex, (?-s)((?:^Regex.*\R)++)(?s)(.+), just note that I use a possessive quantifier, which does NOT allow any backtracking phase.

                So, when, after some permutations, it remains, only, lines with a digit at column 7, at the end of file, the regex, after catching all these lines, cannot match, , with the second part (?s)(.+), any additional character and fails immediately ! So, the S/R process ends, as expected, with the normal message Replace All: O occurrences were replaced

                If you would use the regex (?-s)((?:^.{6}\d.*\R)+)(?s)(.+), with, instead, a greedy quantifier, the S/R process would NEVER end !

                Best regards,

                guy038

                1 Reply Last reply Reply Quote 0
                • Marcel LindigM
                  Marcel Lindig @Claudia Frank
                  last edited by

                  Thanks a lot.
                  It works fine.
                  I will modify it for some other functions.

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