Community
    • Login

    Notepad++ 6.8.8 released

    Scheduled Pinned Locked Moved Announcements
    35 Posts 19 Posters 103.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.
    • Claudia FrankC
      Claudia Frank
      last edited by

      Find/Replace is broken when using advanced regular expressions.
      For example: Assuming the following text in a document

      function "xsquare1"(x) result(y)
          real, intent(in) :: x
          real :: y
          t = x*x
          return
      end function
      
      function "xsquare2"() result(y)
          real, intent(in) :: x
          real :: y
          t = x*x
          return
      end function
      
      function "xsquare3"()
          real, intent(in) :: x
          real :: y
          t = x*x
          return
      end function
      
      subroutine "hello1"()
          print *, "Hello World!"
          return
      end subroutine hello
      
      subroutine "hello2"(x)
          print *, "Hello World!"
          return
      end subroutine hello
      

      and open the find dialog, press replace tab, choose regular expression and put following in find what

      ^.*(function|subroutine)\s+\K([\w]+)(?=\()
      

      If you press find, it will find all function/subroutine names. If you press Replace all it will replace all occurancess
      but if you want to replace one after the other it won’t replace anything.
      Screenshots are here and here.

      Another issue, which might be related is, that regex engine in function list behaves weird. Do they use the same
      regex version/engine? If so, here a screenshots which shows that some functions are not listed whereas
      they should. If I add an additional space, either at the end or inbetween the ( ) then they are displayed as
      seen here.

      If the regex engine used by function list code is different to the find/replace dialog may I ask if it is possible
      to keep them the same as it would allow to easily test the regular expressions before adding to functionlist.xml?

      Thank you
      Claudia

      1 Reply Last reply Reply Quote 0
      • donhoD
        donho
        last edited by

        @Claudia-Frank In my v6.8.8 ^.*(function|subroutine)\s+\K([\w]+)(?=\() find just nothing (with “find” or “find all in current document”).
        Could you download zipped package, and unzip it into a new folder, to make sure the behaviour?
        https://notepad-plus-plus.org/repository/6.x/6.8.8/npp.6.8.8.bin.minimalist.7z

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

          @donho, sorry for confusion, instead of posting the result after replace all
          I should have posted the source code before modification, which is this

          function xsquare2() result(y)
          	real, intent(in) :: x
          	real :: y
          	t = x*x
          	return
          end function
          
          function xsquare3()
          	real, intent(in) :: x
          	real :: y
          	t = x*x
          	return
          end function
          
          subroutine hello1()
          	print *, "Hello World!"
          	return
          end subroutine hello
          
          subroutine hello2(x)
          	print *, "Hello World!"
          	return
          end subroutine hello
          

          without the double quotes. They were added after pressing replace all.
          And, yes, I do still see the problem with the minimalistc zip I downloaded.

          So using the current code together with the regex

          ^.*(function|subroutine)\s+\K([\w]+)(?=\()
          

          results in the reported behaviour.

          Thank you
          Claudia

          1 Reply Last reply Reply Quote 0
          • donhoD
            donho
            last edited by

            @Claudia-Frank In oder to reproduce the bug, could you describe the occurrences expected to be found and replaced?

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

              @donho,
              by using replace dialog

              Find what:  ^.*(function|subroutine)\s+\K([\w]+)(?=\()
              Replace with: "\2"
              

              it is expected that each functionname (xsquare2, xsquare3, hello1, hello2) get found and
              replaced with surrounding double quotes when pressing the replace button.
              Which does work if pressing replace all.

              So, before replacing

              function xsquare2() result(y)
              

              and after

              function "xsquare2"() result(y)
              

              Cheers
              Claudia

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

                Hi, Don and Claudia,

                I noticed that fact, a long time ago. Just see my reply to the Claudia’s question :

                Do you think this is a bug or is it because of the complex regex?

                at the address below :

                https://notepad-plus-plus.org/community/topic/11021/find-and-replace-help/5


                I’ll try to do some tests, with the improved regex engine version of François-R Boyer ( on June 2013, based on Scintilla 2.2.7 ). I hope that this version will not have this issue !?

                Cheers,

                guy038

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

                  Hi, Don and Claudia,

                  Tests done ! Well, the behaviour of the François-R Boyer version works a bit better ! I mean :

                  • With the S/R ( SEARCH abc\Kdef and REPLACE 123 ), it behaves as our current N++ regex engine. So the issue still occurs :-((

                  • With the identical S/R ( SEARCH (?<=abc)def and REPLACE 123 ), it does change any occurrence of def, IF preceded by the string abc , with the string 123, each time you click on the Replace button. With our current version, it doesn’t :-(

                  Best Regards,

                  guy038

                  P.S. :

                  Or course, a click on the Replace All button, performs the replacement, correctly, with both versions !

                  1 Reply Last reply Reply Quote 1
                  • EnginfenerE
                    Enginfener
                    last edited by

                    Thank you ! Donho

                    1 Reply Last reply Reply Quote 1
                    • LoopbuilderL
                      Loopbuilder
                      last edited by

                      Hi.
                      I’ve found a critical bug.

                      If i have a text document with many lines
                      (20000 Lines or more and more than 8-9 char each Line for example)

                      and i want to clear some rows in clolumn mode
                      notepad crashes.

                      To reproduce the bug:
                      1.) Open Notepad or choose a new document
                      2.) Type 10 characters (for example: 1234567890)
                      3.) duplicate the Line more than 4000 times (example: 10000 LINES)
                      4.) press STRG-A to mark whole text
                      5.) press ALT-SHIFT and than 5 times Cursor right to mark the first 5 colums
                      6.) press DEL
                      -> Notepad crashes every time

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

                        Hello @Loopbuilder,

                        I did try it as you wrote, even with 100 000 lines and it didn’t crash.
                        So it must be specific to your setup.
                        Can you do the test without having pluings loaded? (-noPlugin switch)

                        Cheers
                        Claudia

                        1 Reply Last reply Reply Quote 0
                        • LoopbuilderL
                          Loopbuilder
                          last edited by

                          Hello Claudia.

                          It’s strange.

                          Since I once called notepad with the switch -noPlugin, the error is apparently disappeared.

                          I moved all the plugins folder in disabeld and the error has not occurred.
                          Then I pushed back plugin for plugin from the Disabled to the program directory without any error.
                          Even after the last plugin no longer a fault occurred.

                          Excuse me for asking.
                          Apparently there is a problem with the installation or the rights in the 64-bit operating system.

                          Thank you much for the help.

                          1 Reply Last reply Reply Quote 0
                          • Ганна ЧорнаГ
                            Ганна Чорна
                            last edited by

                            For quite a while I notice this problem when working with file Xml Notepad spoils code. It is rare, and treated if re-open the file. But sometimes lost much of the work and it is very pesters.
                            This problem has been in all versions ranging from about 5.x.x to 6.8.9. screenshot

                            Claudia FrankC 1 Reply Last reply Reply Quote 1
                            • Claudia FrankC
                              Claudia Frank @Ганна Чорна
                              last edited by

                              Hello @Ганна-Чорна,

                              do you use xml tools plugin? And do you use auto syntax check or auto validation?
                              From my experience, this doesn’t work very well if you have big xml files.

                              Cheers
                              Claudia

                              Did KokosD 1 Reply Last reply Reply Quote 0
                              • Did KokosD
                                Did Kokos @Claudia Frank
                                last edited by

                                Claudia Frank

                                @Claudia-Frank said:

                                Hello @Ганна-Чорна,

                                do you use xml tools plugin? And do you use auto syntax check or auto validation?
                                From my experience, this doesn’t work very well if you have big xml files.

                                I also sometimes happens similar problem. When copying, inserting, replacing the large amount of text (more than 40000 lines). So I perform these operations in other programs). Xml plug do not use. Here, perhaps, is certainly a problem in file size.

                                1 Reply Last reply Reply Quote 0
                                • Scott SumnerS
                                  Scott Sumner @guy038
                                  last edited by

                                  @guy038 , has the status on this changed since the date of your posting here…has the “Find All in Current Document” behavior become recordable in a macro, such that it works when the macro is run?

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

                                    Hi Scoot and All,

                                    Scott, sorry for this late reply !

                                    So, I’ve just did a test, again, with the last N++ version ( v6.9.2 ) with the simple following macro, which searches for the exact case of the article the, in all the opened files, of your current N++ session :

                                        <Macro name="Test" Ctrl="no" Alt="no" Shift="no" Key="0">
                                            <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
                                            <Action type="3" message="1601" wParam="0" lParam="0" sParam="the" />
                                            <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
                                            <Action type="3" message="1702" wParam="0" lParam="2" sParam="" />
                                            <Action type="3" message="1701" wParam="0" lParam="1636" sParam="" />
                                        </Macro>
                                    

                                    This macro is automatically inserted in the <Macros> node :

                                    • The first line, defines the name of the macro and its possible shortcut

                                    • The second line initializes the search process

                                    • The third line defines the string to search : the word the

                                    • The 4th line selects the search mode : the digit 0, in lParam, meaning normal search

                                    • The 5th line defines the search options : the digit 2 means Match case

                                    • The final 6th line defines the search type : the number 1636 stands for a search in all opened documents

                                    Refer to the link below, for further information :

                                    http://docs.notepad-plus-plus.org/index.php/Editing_Configuration_Files#Search_.2F_Replace_encoding

                                    Remark : The action of the flag value 512, when message = “1702”, is wrong ! The correct action is Search goes downwards :-))


                                    So, if you run this form of the macro Test, you get the right result : the Find result panel, with all the occurrences found in all the files opened

                                    Unfortunately, if you create a macro, in order to search in current document only, or if you change the number 1636 with the number 1641( flag value for search in current document ), in the shortcuts.xml file, with an OTHER editor than N++, when any instance of N++ is closed, the Find result panel does NOT opened, as it should, when running the macro :-(((

                                    This bug is still there ! As a work-around, if numerous files are opened, in your session, you may :

                                    • Close most of them, not concerned with the search

                                    • Perform the above macro, which searches on all opened files

                                    • Click, on the menu option File - Opened All Recent Files

                                    Best Regards

                                    guy038

                                    P.S. :

                                    Oh, I forget to tell you that my technical configuration is, simply, a Windows XP SP3 system, on a NEC Versa M350 laptop :-((

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