Community
    • Login

    Search++: A work in progress

    Scheduled Pinned Locked Moved Notepad++ & Plugin Development
    13 Posts 4 Posters 358 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.
    • Alan KilbornA
      Alan Kilborn @Coises
      last edited by

      @Coises said:

      bias towards designing toolboxes for power users over leading casual users by the hand

      I consider this a good thing. :-)

      I’m sure some people are going to take one look at the UI and go… WTF?

      Like this?
      https://github.com/notepad-plus-plus/notepad-plus-plus/issues/9627
      :-)

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

        @Alan-Kilborn said in Search++: A work in progress:

        Like this?
        https://github.com/notepad-plus-plus/notepad-plus-plus/issues/9627
        :-)

        Now my head hurts.

        Perhaps I should have included screenshots. Docked (default):

        a7382038-3c86-479f-a157-4192337c89f3-image.png

        Horizontal (non-docking):

        8f0da994-3187-41a1-a59f-3030a9242978-image.png

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

          Hello, @coises and All,

          I’m presently testing your new Search++ plugin : really awesome ;-))

          I’ll share my first impressions with you in a few hours. Many thanks for this new valuable plugin !

          Best Regards,

          guy038

          1 Reply Last reply Reply Quote 1
          • Michael VincentM
            Michael Vincent @Coises
            last edited by Michael Vincent

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

            I present Search++ as a work in progress:

            At first I thought you were resurrecting the old SearchPlus plugin. Ironically, you had to “search” online for it since it wasn’t included in Plugin Manager (Manager, not Admin at the time).

            In any case, your ++ version seems to have way more capabilities already and it’s just “a work in progress”.

            Cheers.

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

              Hi, @coises and All,

              First impressions :

              • Regarding the menus : in order to harmonize all the sub-menus :

              I suppose that the Find sub-menus could be expressed as below :

              Find Forward                         or  Find                  
              Find Forward in Selection            or  Find in Selection     
              Find Forward in Marked Text          or  Find in Marked Text   
              Find Forward in Whole Document       or  Find in Whole Document
              ----------------------------------------------------------------
              Find Backward
              Find Backward in Selection
              Find Backward in Marked Text
              Find Backward in Whole Document
              

              Similarly, the Replace dialog could be expressed as below :

              Replace and Find Forward                     or  Replace and Find                   
              Replace and Find Forward in Selection        or  Replace and Find in Selection
              Replace and Find Forward in Marked Text      or  Replace and Find in Marked Text
              Replace and Find Forward in Whole Document   or  Replace and Find in Whole Document
              --------------------------------------------------------------------------------------
              Replace and Find Backward
              Replace and Find Backward in Selection
              Replace and Find Backward in Marked Text
              Replace and Find Backward in Whole Document
              -------------------------------------------------------
              Find or Replace Forward                      or  Find or Replace                   
              Find or Replace Forward in Selection         or  Find or Replace in Selection
              Find or Replace Forward in Marked Text       or  Find or Replace in Marked Text
              Find or Replace Forward in Whole Document    or  Find or Replace in Whole Document
              --------------------------------------------------------------------------------------
              Find or Replace Backward
              Find or Replace Backward in Selection
              Find or Replace Backward in Marked Text
              Find or Replace Backward in Whole Document
              

              Finally, I think that the Count and Replace All menus should adopt the same presentation as the Find All / Mark / Select / Show sub-menus, i.e. :

              Count All
              Count Before
              Count After
              --------------------------------
              Count All in Selection
              --------------------------------
              Count All in Marked Text
              Count Before in MArked Text
              Count After in Marked Text
              --------------------------------
              Count All in Whole Document
              Count BeFore in Whole Document
              Count After in Whole Document
              

              And

              Replace All
              Replace All Before
              Replace All After
              ----------------------------------------
              Replace All in Selection
              ----------------------------------------
              Replace All in Marked Text
              Replace All Before in MArked Text
              Replace All After in Marked Text
              ----------------------------------------
              Replace All in Whole Document
              Replace All Before in Whole Document
              Replace All After in Whole Document
              

              • Regarding the Search++ results panel :

              I’m a bit annoyed to not be able to clear this panel at any time and that I need to close and re-open a N++ session to that purpose ! Personally, an option in the Tools menu, to clear the Search++ Results panel would be great !


              • Regarding the search direction :

              I do appreciate to temporarily reverse the search direction, with native N++ search, by hitting or releasing the Shift key ! Would it be possible to add this functionality to Search++ plugin ?


              • Regarding the button’s labels :

              • First, I would say that the possibility to change the default value of a button by hitting the Shift key while clicking on a specific sub-menu, is very interesting !

              After testing all the cases, I noticed that :

              • The Backward direction is noted with the ← arrow, in the Find and Replace sub-menus

              • The Forward direction is noted with the → arrow, in the Find and Replace sub-menus

              • The Before indication is noted with the ↑ arrow, in the Count, Find All / Mark / Select / Show and Replace All sub-menus

              • The After indication is noted with the ↓ arrow, in the Count, Find All / Mark / Select / Show and Replace All sub-menus

              • The All/Everywhere indication is noted with the ↕ arrow, in the Count, Find All / Mark / Select / Show and Replace All sub-menus

              However, the indications for Selection, Marked text and Whole document, at beginning of buttons, are rather difficult to visualize : May be, a different and distinctive shape and/or color would be welcome ! I put the 3 cases in a single picture and they look as below :

              400912e6-5887-4161-8170-929b31cf0b74-Capture d'écran 2026-03-27 215714.png

              • The Find button is preceded by the Whole Document mark

              • The Count button is preceded by the Marked Text mark

              • The Find All button is preceded by the Selection mark


              I’ve begun to study the purpose of each sub-menu ( not so obvious ! ) and I’ll probably ask you about some weird behaviours in a next post

              Best Regards,

              guy038

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

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

                I’ve begun to study the purpose of each sub-menu ( not so obvious ! )

                This section of the help might help.

                I think it indeed might be a little more confusing than it needs to be, but I haven’t found the magic formula to simplify it yet.

                I omitted “All” from the commands other than Find All and Replace All because they can’t be step-wise… you can’t Count the next match. So in a logical sense, I’m thinking that “Find” and ”Find All” are two different things (not that “Find All” is “Find” with “All” added as a modifier). But it is potentially confusing.

                Backward and Before sound awfully similar, as do Forward and After… but Backward and Forward are for single step searches while Before and After are for multiple-result searches. It is not as intuitive as I wish it were.

                You are right, clear is missing from the results list and it should be there. I’ll probably put it on the right-click menu for the search results, with something as a keyboard shortcut. To go with that, unless there’s some reason it doesn’t work as I would hope, I’ll probably want to enable Undo/Redo so that if you inadvertently clear the results, you can recover them.

                (Oh, I should mention that there is a version 0.2 that fixes a couple reported issues and a couple more I found while fixing those.)

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

                  I said in Search++: A work in progress:

                  I omitted “All” from the commands other than Find All and Replace All because they can’t be step-wise… you can’t Count the next match. So in a logical sense, I’m thinking that “Find” and ”Find All” are two different things (not that “Find All” is “Find” with “All” added as a modifier). But it is potentially confusing.

                  @guy038 and anyone else reading:

                  Would it be more clear, less clear or equally impenetrable if I changed “Find All” to “List”?

                  When you think of it, “Find All” is not the result of doing “Find” multiple times. It’s an entirely different operation: listing matches in the results window. On the other hand, it’s the phrase that’s familiar.

                  The other verbs on that button are all single words not used anywhere else — Mark, Select and Show — so “List” would have a certain symmetry.

                  I’m sort of talking myself into changing it, but I wonder if others think that would just add to the mystery?


                  “Replace All” at least really is the result of doing the same thing as “Replace,” but as many times as possible, so that’s at least consistent.

                  Should there be an option to add a list of replacements done by “Replace All” to the search results list? If so, should that be a button alternative (that’s what I would think) or a setting?


                  I hate the “Replace and Find” vs “Find or Replace” naming, but I have not been able to think of a clear and concise way to express what each does. (If it is not obvious to anyone reading, they are the comparable to Notepad++ Replace with “Replace: Don’t move to the following occurrence” unchecked or checked.) Both do a Find unless a Find was already done just before. (In a similar way, though not internally quite the same, as Columns++, and differently from Notepad++, this is checked by monitoring whether the selection is changed, not by repeating the Find. That’s what makes it possible for \K to work in stepwise Find/Replace.)

                  So they are really “Find if you didn’t just find, otherwise replace and then find” and “find if you didn’t just find, otherwise replace (and stay put so I can see what just happened).”

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

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

                    I do appreciate to temporarily reverse the search direction, with native N++ search, by hitting or releasing the Shift key ! Would it be possible to add this functionality to Search++ plugin ?

                    Yes, that makes sense for the step-wise Find and Replace buttons in the plain text search. I don’t think there’s any reason I can’t make it work.

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

                      Hello @coises and All,

                      Regarding the bug of Search++_01, I did verify that all is fixes in Search++_02 and I also verified that it’s OK with the Columns++ plugin !


                      Regarding changing the Find All name :

                      Of course, I suppose that you could change the Find All label by the List label. However note that the Find All in Current Document option, the Find All in All Opened Documents option and the Find All option of N++ search begin all with the string Find All. Thus, I think the change would rather disturb some people !


                      Regarding the inclusion of the results of the Replace All option in the search++ results :

                      To my mind, this extra work does not seem necessary, at first ! On the other hand, you always have the possibility to re-do a Find All search, using the previous replace expression. However, if this functionnallity seems important to you, just go ahead !


                      Regarding hding all lines of a file :

                      • Let’s hide all the contents of a file 1, with the option in the Tools panel

                      • Switch to an other file 2

                      • Switch back to file 1

                      All the lines of file 1 are visible again : I suppose that this behaviour is the one that you expect, don’t you ?


                      • Regarding the Mark functionnality :

                      • Let’s mark some text with the native N++ Mark dialog with the Bookmark line option checked

                      • If you use the Unmark All Text option of the Tools panel, it correctly clear all the marks. However, it does not clear the associated bookmarks !

                      I think of two possible solutions :

                      • Clear all the bookmarks, as well

                      • Add a new Clear bookmarks option


                      Now, let suppose this text :

                       1  foo
                       2  bar
                       3  foo
                       4  bar
                       5  foo
                       6  bar
                       7  foo
                       8  bar
                       9  bar
                      10  foo
                      11  bar
                      12  bar
                      13  foo
                      

                      I first did a selection from line 4 bar to line 9 bar

                      • With the word foo in the search dialog, I first run a Mark in Selection option

                      • Now, if I use the Find in Marked Text option, I do get the first word foo of the selection ( Line 5 foo )

                      • Clicking again on the Find in Marked Text option, I do get the second word foo of the selection ( Line 7 foo )

                      • Clicking a third time on the Find in Marked Text option, I correctly get the message No matches found (Find again to search all marked text)

                      • Clicking a fourth time on the Find in Marked Text option, it does match again the first word foo of the Marked Text region ( Line 5 foo )

                      That correspond to what you say in the Help documenation :

                      Marked Text: If there is any marked text, ONLY marked text will be searched;


                      Now, let’s use the new text below :

                       1          foo
                       2          bar
                       3          foo
                       4          bar
                       5          foo
                       6          bar
                       7          foo
                       8          bar
                       9          bar
                      10          foo
                      11          bar
                      12          bar
                      13          foo
                      
                      • I first do a stream selection from line 4 bar to line 9 bar. Note that this selection does contain more than 80 characters and 3 lines ! ( 102 chars / 6 lines ) and then should be considered as a true selection !

                      • Now, if I use the Find in Selection option, I do get the first word foo of the selection ( Line 5 ... foo )

                      • Clicking again on the Find in Selection option, I do get the second word foo of the selection ( Line 7 ... foo )

                      • Clicking a third time on the Find in Selection option, it matches the word foo, outside the selection ( Line 10 ... foo )

                      ( I was expecting the message No matches found (Find again to search in selection)

                      • Clicking a fourth time on the Find in Selection option, it matches the word foo, outside the selection ( Line 13 ... foo )

                      ( I was expecting, again, a match of the first word foo of the selection ( Line 5 ... foo ) ) !

                      Indeed, you say in the Help documenation :

                      If there is a non-empty selection — single, rectangular or multiple — the search will be confined to the selected text.

                      May be, @coises,I just did not exactly understand the Selection concept ?

                      Best Regards,

                      guy038

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

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

                        • Let’s hide all the contents of a file 1, with the option in the Tools panel

                        • Switch to an other file 2

                        • Switch back to file 1

                        All the lines of file 1 are visible again : I suppose that this behaviour is the one that you expect, don’t you ?

                        @guy038, thank you so much for all your thoughts and your tests. They are an immense help.

                        I see there is a potential problem here, without a simple solution. It looks like Notepad++ saves and restores hidden lines, but it tracks them when it hides them or shows them, so it is unaware of any changes in state made by a plugin. It not only doesn’t restore lines hidden in Search++, if you hide lines in Notepad++ and then find them in Search++, they wind up hidden again when you switch tabs away and back.

                        Ugh. This could be really messy. :-(

                        • Let’s mark some text with the native N++ Mark dialog with the Bookmark line option checked

                        • If you use the Unmark All Text option of the Tools panel, it correctly clear all the marks. However, it does not clear the associated bookmarks !

                        I think of two possible solutions :

                        • Clear all the bookmarks, as well

                        • Add a new Clear bookmarks option

                        Unless it doesn’t work for some reason (I haven’t tried it yet), I think Notepad++’s own Search | Bookmark | Clear all bookmarks can handle that.

                        May be, @coises,I just did not exactly understand the Selection concept ?

                        It sounds like I need to clarify what happens a little more in the help. Short answer: the first Find selects the text it found, which wipes out the original selection; it’s not possible to search within a selection that doesn’t exist, so subsequent searches revert to searching the whole document.

                        This traces back to some discussion about search in early Columns++. The purpose of having a search function there was to make it possible to search and replace in column selections, which Notepad++ search will not do. @Alan-Kilborn observed some unexpected behavior and suggested using what Scintilla calls an indicator. (Notepad++ calls it marked text or a style… both style and mark mean something different from indicator in Scintilla, so keeping the words straight is an ongoing challenge.)

                        The fundamental operation of Find (step-wise) is to select what was found. You can’t have a selection within a selection; the original selection is lost when you do the first Find. My original attempt at solving this in Columns++ — by “memorizing” the original selection and using it for subsequent finds — did not work well. After Alan’s suggestion, I switched to “Search in Indicated Region” and set a marked region from the column selection. Eventually I wound up with some features for controlling the indicated region incorporated into the search dialog, and some complicated rules (described here under the heading “Other controls in the Search dialog”) to make it so that users can almost forget about the indicator, even though every search in Columns++ must happen within an indicated region.

                        One of my goals in Search++ was/is to get rid of the imposition of an “indicated region” (now just called “marked text”) on users who aren’t thinking in those terms.

                        The rough equivalent to Selection -> Region | Auto set in Columns++ (which is checked by default) is Settings | Convert selections to marked text before beginning a stepwise search in Search++ (which is not, at present, checked by default).

                        Given my experience with Columns++, I don’t plan to attempt to restrict search to a “memorized” selection that no longer exists. Either you convert the selection to marked text, let Search++ convert it for you, or only the first step-wise Find will be confined to the original selection.

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