Community
    • Login

    Search++: A work in progress

    Scheduled Pinned Locked Moved Notepad++ & Plugin Development
    79 Posts 7 Posters 5.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.
    • guy038G
      guy038
      last edited by guy038

      Hello, @coises and All,

      I almost finished to study all the ICU syntax mainly focused on Unicode properties and, so far, all the results seem coherent ;-))


      However, I noticed something strange about the property Numeric_Value

      To this purpose, refer to https://www.unicode.org/Public/UCD/latest/ucd/extracted/DerivedNumericValues.txt

      For any number which has a finite number of decimal places, like 0.1875 or 0.4, located after the equal sign, in the \p{Numeric_Value=....} syntax, the returned result is always correct. For example, \p{Numeric_Value=0.25} or \p{nv=0.25} returns 14 matches, as you may verify in the Unicode file

      However, for any number which has an infinite number of decimal places, like 0.333333333333 or 0.142857142857, located after the equal sign, in the \p{Numeric_Value=....} syntax, the returned result is always 0 instead of an integer > 0

      In addition, the special value \p{Numeric_Value=NaN} should return 323,567, against my Total_chars.txt file, instead of the value 0 !


      Is there any chance that you truncated the decimal part in Search ++ or something like that ?

      Best Regards,

      guy038

      CoisesC 1 Reply Last reply Reply Quote 0
      • CoisesC
        Coises @guy038
        last edited by Coises

        @guy038 said in Search++: A work in progress:

        Is there any chance that you truncated the decimal part in Search ++ or something like that ?

        No. I did not mess with the ICU search at all; the string entered in the Find box is exactly what ICU’s regular expression engine gets.

        I see that \p{nv=0.3333333333333333} (or any greater number of 3s) returns six matches. Likewise, \p{nv=0.66666666666666667} returns seven matches, but fewer 6s returns none.

        Since the ICU4C function u_getNumericValue(UChar32 c) returns a double, I would guess that matching is dependent on the precise quirks of double-precision floating point format.

        In addition, the special value \p{Numeric_Value=NaN} should return 323,567, against my Total_chars.txt file, instead of the value 0 !

        There might not be anything you can enter that will be translated as Not-a-Number. I note that \p{Numeric_Type=None} does return 323,567 matches.

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

          Hello, @coises and All,

          Ah… OK. Thank you very much for your insight ! So, it seems that :

          • When all digits, after the decimal dot, are identical, you need to put, at least, 16 digits

          • When digits, after the decimal dot, may be different, you need to put, at least, 17 digits

          Thus, this list of all these rational numbers :

              1/12     \p{Numeric_Value=0.08333333333333333}    or    \p{nv=0.08333333333333333}    =     1
              1/9      \p{Numeric_Value=0.1111111111111111}     or    \p{nv=0.1111111111111111}     =     1
              1/7      \p{Numeric_Value=0.14285714285714285}    or    \p{nv=0.14285714285714285}    =     1
              1/6      \p{Numeric_Value=0.16666666666666666}    or    \p{nv=0.16666666666666666}    =     4
              1/3      \p{Numeric_Value=0.3333333333333333}     or    \p{nv=0.3333333333333333}     =     6
              5/12     \p{Numeric_Value=0.41666666666666666}    or    \p{nv=0.41666666666666666}    =     1
              7/12     \p{Numeric_Value=0.58333333333333333}    or    \p{nv=0.58333333333333333}    =     1
              2/3      \p{Numeric_Value=0.6666666666666666}     or    \p{nv=0.6666666666666666}     =     7
              5/6      \p{Numeric_Value=0.83333333333333333}    or    \p{nv=0.83333333333333333}    =     3
              11/12    \p{Numeric_Value=0.91666666666666666}    or    \p{nv=0.91666666666666666}    =     1
          

          Now, I didn’t even notice that the \p{Numeric_Type=None} does give that expected number, which added to all the other values, returns the total amount of characters of the Total_Chars.txt file which is 325 590 !

          BR

          guy038

          1 Reply Last reply Reply Quote 0
          • CoisesC
            Coises
            last edited by

            Search++ version 0.5.4 is available:

            • Fix bookmarks and Show command not working with ICU search engine.
            • Fix unwanted control character inserted when focus is in the Find or Replace box and a keyboard shortcut is used to activate a Tools menu command that opens a dialog.
            • Use a custom font for button symbols. (Those are the symbols that change when you shift+click one of the drop-down menus to change the button click command, to remind you at a glance what the current command extent and scope are.) Hopefully these are easier to read on different systems. Feedback is encouraged if the button symbols are hard to read or do not look right. This is a first attempt. Changes will probably follow in subsequent releases.

            @guy038:

            This should fix bookmarks (and also the Show command) not working with ICU, and the unexpected insertion of control characters when using Ctrl+Shift+E and Ctrl+Shift+Y.

            The big change here (what took me so long) is using a custom font for the symbols on the buttons. How to make that work was… not obvious. Let me know if they are easier to read—and if they are enough easier to read. There is a tough space constraint on those buttons, but I really want to avoid making them any larger if at all possible. This was my first time trying to make a font of any sort. I’m sure the designs of those symbols can be refined a bit (or a lot).

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

              Hello, @coises, @Lachlanmax and All,

              Waoou ! This new 0.54 version of Search++ is almost perfect ! I do hope that @Lachlanmax will have the same feeling than me, regarding the Dark Mode displaying, that I don’t use personally !

              • The Bookmarks and Show commands, in ICU mode, work correctly.

              • The possible insertion of control chars, within the Find and Replace has gone away !

              • The symbols, written on the different buttons, are much more intuitive and easily allow us to control what we’re doing. I particularly like the Open Documents scope and Documents in this view scope symbols !

              • As implemented in the previous version, when focus is on Search++, a Ctrl + J action toggles from Jump to next match to Do not jump to next match. But now, it’s really more obvious to get the difference between the two symbols when looking at right of the Replace button !


              One remark :

              • For the Selection scope, the symbol does not really look like a true letter S, unlike the Marked Text scope, which clearly displays the symbol M !

              Refer the snapshot, below, with the Whole document scope on left of Find button, the Selection symbol on left of the Count button and the Marked Text symbol on left of the Find all button :

              d69cc2ad-57d1-4653-b810-e800fdda577a-Capture d'écran 2026-04-18 115133.png

              The Selection scope seems less easy to identify , at first sight, isn’t it ?

              May be, could you choose, for example, the 1F142 Unicode character which is the SQUARED LATIN CAPITAL LETTER S :   🅂  and, in the same way, the 1F13C character which is the he SQUARED LATIN CAPITAL LETTER M :   🄼  ?

              To this purpose, refer to https://www.unicode.org/charts/PDF/U1F100.pdf


              Now, a very simple bug to fix :

              When the ICU is selected, if you try to do a simple Replace operation, Search++ displays the expected message Command not implemented and, of course, no replacement occurs.

              Oddly, if you click on the Replace All button, the plugin displays the message Replaced xx matches in ... where xx represents the number of matches detected in current document ! But, luckily, no global replacement is performed, as well. I suppose that the identical message Command not implemented should be triggered, isn’t it ?

              BTW, if the replacement process was allowed, in ICU mode, it seems that it would allow more than 9 back-references but would not accept any conditional replacement !

              I also noted that the recursion feature is not allowed with the ICU regex engine !

              Best Regards

              guy038

              P.S. :

              • I tried to double-click on the font file Search++-Private-Symbols.otf and I was able to recognize all the symbols used by your plugin !

              • In this version, in addition to the Search++-Private-Symbols.otf file, you also added a Search++.pdb file, which is quite large, indeed ! What is it used for ?

              CoisesC 1 Reply Last reply Reply Quote 1
              • CoisesC
                Coises @guy038
                last edited by

                @guy038 said in Search++: A work in progress:

                • The symbols, written on the different buttons, are much more intuitive and easily allow us to control what we’re doing. I particularly like the Open Documents scope and Documents in this view scope symbols !

                • As implemented in the previous version, when focus is on Search++, a Ctrl + J action toggles from Jump to next match to Do not jump to next match. But now, it’s really more obvious to get the difference between the two symbols when looking at right of the Replace button !

                Good! I was hoping these symbols would be more consistently easy to read across different systems. Thank you for confirming that it looks better on yours.

                • For the Selection scope, the symbol does not really look like a true letter S, unlike the Marked Text scope, which clearly displays the symbol M !

                I see your point. I’m not happy with using letters instead of graphic representations, but so far I have not been successful at inventing “pictures” of selected and marked text that render well as characters in a font. I will keep trying and, failing anything better, at least make a more identifiable “S” for selection.

                Now, a very simple bug to fix :

                When the ICU is selected, if you try to do a simple Replace operation, Search++ displays the expected message Command not implemented and, of course, no replacement occurs.

                Oddly, if you click on the Replace All button, the plugin displays the message Replaced xx matches in ... where xx represents the number of matches detected in current document ! But, luckily, no global replacement is performed, as well. I suppose that the identical message Command not implemented should be triggered, isn’t it ?

                Yes, it should show “Command not implemented.” I’ll fix that.

                • In this version, in addition to the Search++-Private-Symbols.otf file, you also added a Search++.pdb file, which is quite large, indeed ! What is it used for ?

                Visual Studio uses *.pdb files to support debugging. I included it in the x64 zip file by mistake. I’ve replaced the Search++‍-0.5.4-x64.zip artifact in the release with one that doesn’t contain that file. Thank you for catching that.

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

                  Hi, @coises and All,

                  Ah…, many thanks, in avance, for resolving bugs and trying to take into account my suggestions !

                  Regarding the Search++.pdb file, I can, of course, try to re-download the x64 archive. But can I, without any problem, simply delete this present file in my Search++ folder ?

                  BR

                  guy038

                  CoisesC 1 Reply Last reply Reply Quote 0
                  • CoisesC
                    Coises @guy038
                    last edited by

                    @guy038 said in Search++: A work in progress:

                    Regarding the Search++.pdb file, I can, of course, try to re-download the x64 archive. But can I, without any problem, simply delete this present file in the Search++ folder ?

                    Yes.

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

                      Hello, @coises and All,

                      Sorry to disturb you again, but would it be possible to, either :

                      • Increase the width of the caret

                      OR

                      • Allow, like in native N++, the modification of its width, in your Settings dialog

                      Personally, I use the value 3 in Caret Settings in Notepad++ and yours seems really tiny. So, it rather difficult to notice the caret location at first sight, in the Find dialog !

                      I must admit that I probably get used to this maximum value for the caret and that, now, any smaller size bothers me a bit !

                      Best Regards,

                      guy038

                      CoisesC 1 Reply Last reply Reply Quote 1
                      • CoisesC
                        Coises @guy038
                        last edited by

                        @guy038 said in Search++: A work in progress:

                        Sorry to disturb you again, but would it be possible to, either :

                        • Increase the width of the caret

                        OR

                        • Allow, like in native N++, the modification of its width, in your Settings dialog

                        I will add that to the list of things I copy from the the active document window when I initialize my Scintilla controls, and look for other similar settings (like the blink rate) that I missed. Not everything is simple to copy, but those are.

                        Thank you for pointing that out.

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