Community
    • Login

    Search++: A work in progress

    Scheduled Pinned Locked Moved Notepad++ & Plugin Development
    48 Posts 7 Posters 2.2k 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.
    • CoisesC
      Coises
      last edited by

      Search++ v0.5 includes various changes:

      It is now possible to Count, Find All, Mark or Replace in Open Documents or in Documents in this View.

      When the search dialog is narrow (typical if the docking dialog is used and docked to the left or right), the status message can overflow the available space. I added ellipsis to the message and a balloon tip on hover to show the whole message when it overflows.

      I changed the default (“smart”) Mark commands so that they don’t search only within marked text when some text is marked. That search is possible (Mark in Marked text is on the Mark submenu), but it’s probably not what someone usually means to do.

      I tried to make the command button drop-down menus make a little more sense. They’re probably still confusing. I updated the description in the help; hopefully if someone really wants to understand what it all means, I’ve made it possible.

      Experiences, problem reports, suggestions and trauma dumps are still welcome and very much appreciated.

      Still not done:

      • @guy038’s disappointment with the Find field not being filled from the document selection in as many situations as he expects remains to be addressed.

      • I haven’t looked at @Lachlanmax’s request to include bookmarking lines yet. Using marked text in multiple documents was also mentioned; the changes in 0.5 possibly address that to some extent, but only for open documents, since I haven’t added any searching of files on disk yet. I’m not sure how I could/would apply the idea of searching in marked text to documents that aren’t open in Notepad++.

      • When accumulating a lot of search results (tens or hundreds of thousands of hits), the search completes and then everything hangs while the results window is filled. It can be confusing and disconcerting.

      • The drop-down menus for the command buttons drop up when the button is near the bottom of the screen. That’s OK, except that the menu then covers the place you just clicked to open it, and if you happen to move the mouse just a pixel before you release the button, it selects the bottom item in the menu.

      • I still haven’t fixed the search results window for dark mode.

      • I still don’t have a convenient method of keyboard access to the command button drop-down menus. (I can and probably will assign some shortcuts to them, but they still won’t be discoverable to anyone who doesn’t read about them in the help.)

      • As @guy038 noted, the icons added to the command buttons when you shift+click to set a different primary action for the button are difficult to make out. The reason for that is that I’m using Unicode symbol characters; eventually I need to replace them with proper icons or owner-drawn buttons.

      • I still haven’t implemented find in files. I’m not sure yet how I will manage the user interface: I don’t want to make the main dialog bigger (I want to keep it practical for docking use).

      • I hope to add the ability to save searches for future use, but I haven’t done that yet.

      • Searching in Open Documents or in Documents in this View loses multiple selections that aren’t a rectangular selection. That’s because Notepad++ loses them when switching tabs, and I think the only safe and robust way for a plugin to access open documents is to temporarily activate them. There might be other things that are lost, too; I need to identify them and save/restore them. (Hidden lines are lost, but that’s for a different reason.)

      • Hidden lines as Search++ uses them don’t work together properly with hidden lines the way Notepad++ uses them. It is not clear to me yet what is possible there; I hate to give up the Show command, as it is a handy way to get the effect of a search results list but right in place, where you can edit what you see.

      • While there is a search progress dialog, it doesn’t always show up when it should. The biggest problem is long searches that don’t find anything. (Those are usually regular expression searches, at their worst resulting in the infamous “too complex” message.) It will be a tricky problem to solve, because the Boost.Regex engine doesn’t have any sort of callback for long operations: once I start a search, my code doesn’t get control again until it either finds something or fails to find anything. I suspect there will be no effective way to solve that without modifying Boost.Regex code.

      Snabel42S 1 Reply Last reply Reply Quote 3
      • Snabel42S
        Snabel42 @Coises
        last edited by Snabel42

        @Coises I was though to mention this for 0.4, but FYI it remains in 0.5.
        I’ve highlighted tha the “Mark Style” drop down appears to be populated with non-english characters, even though the remaining UI is english. When clicking the dropdown to show values, this value does not exist in the revealed list of choices

        93536946-7e7c-42c7-b990-3ecd72819674-image.png

        50642f8f-33dc-4c37-83a9-f20560dc29be-image.png

        Notepad++ v8.9.3 (64-bit)
        Build time: Mar 20 2026 - 00:44:25
        Scintilla/Lexilla included: 5.6.0/5.4.7
        Boost Regex included: 1_90
        pugixml included: 1.15
        nlohmann JSON included: 3.12.0
        Path: C:\Program Files\Notepad++\notepad++.exe
        Command Line:
        Admin mode: OFF
        Local Conf mode: OFF
        Cloud Config: OFF
        WinGUp: present
        disableNppAutoUpdate.xml: absent
        Periodic Backup: ON
        Placeholders: ON
        Scintilla Rendering Mode: SC_TECHNOLOGY_DIRECTWRITE (1)
        Multi-instance Mode: monoInst
        asNotepad: OFF
        File Status Auto-Detection: cdEnabledNew (for current file/tab only)
        Dark Mode: ON
        Display Info:
        primary monitor: 2560x1440, scaling 100%
        visible monitors count: 2
        installed Display Class adapters:
        0000: Description - NVIDIA GeForce RTX 3080
        0000: DriverVersion - 32.0.15.9186
        OS Name: Windows 11 Home (64-bit)
        OS Version: 25H2
        OS Build: 26200.8037
        Current ANSI codepage: 1252
        Plugins:
        CollectionInterface (1.3)
        ColumnsPlusPlus (1.3.1)
        ComparePlus (2.2)
        CSVLint (0.4.7)
        CsvQuery (1.2.9)
        FWDataViz (2.6.7)
        HTMLTag (1.5.6)
        HugeFiles (0.4.1)
        JsonTools (8.5)
        mimeTools (3.1)
        MultiReplace (5.0.0.35)
        NppConverter (4.7)
        NppExport (0.4)
        NppXmlTreeviewPlugin (2)
        PythonScript (2.1)
        Search++ (0.5)
        XMLTools (3.1.1.13)

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

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

          I’ve highlighted tha the “Mark Style” drop down appears to be populated with non-english characters, even though the remaining UI is english. When clicking the dropdown to show values, this value does not exist in the revealed list of choices

          Thank you for the report and the screenshots. I couldn’t reproduce it until I changed to dark mode (to match your screenshot).

          The control functions perfectly well in light mode and is completely messed up in dark mode.

          I will investigate to see if I can find a cause and/or a workaround.

          I have the same control in the Search dialog in Columns++, but I never added the Notepad++ message to support dark mode to anything in Columns++. The control works there, regardless of whether Notepad++ is in light or dark mode, so it seems specifically to be connected with the dialog being in dark mode.

          1 Reply Last reply Reply Quote 2
          • L
            Lachlanmax @Coises
            last edited by

            Hi @coises,

            first, I have to say I was a bit shocked when you mentioned the Mark commands under the Find All dropdown, because this is exactly what I wanted and somehow I completely did not see it when I needed it. Maybe I was simply too tired at that moment :)

            So for the marking itself, yes, this already covers what I had in mind.

            The main thing I was thinking about is really the bookmark workflow.

            I take it the essential option here is to set a bookmark on every line that contains a match when using a Mark command. Is that it?

            Yes, exactly, this is exactly what I mean.

            For me this is most useful when working in larger logs or config files, where I want to quickly jump only between relevant lines after marking.

            About whether this should be a setting or per-search option, I would personally prefer it per search.

            Sometimes I only want visual marking to better understand the pattern and refine the next search. Other times I want the bookmarks as a temporary navigation layer through the file. Because this changes from task to task, a permanent “set and forget” setting feels a bit too static to me.

            For clearing, I still think independent control makes most sense.

            There are cases where the visual marks become noisy and I want to remove only them, but still keep the bookmarks for navigation. In other cases I want both gone. So separate control gives the most flexibility.

            About the null matches question, I am honestly not fully sure what you mean there, so I would not want to guess wrong.

            For the Find in Files / open documents topic, my earlier point was maybe not explained well.

            Yes, exactly this is what I meant, sorry that I was not clear enough before.

            When you later add the ability to search files on disk and all open documents, I think this workflow will become even stronger. I will happily wait for the full version, because this already looks very promising.

            And thanks again for your really great work on this plugin. It already feels like something with a lot of potential.

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

              Hello, @coises,

              You said :

              When the search dialog is narrow (typical if the docking dialog is used and docked to the left or right), the status message can overflow the available space. I added ellipsis to the message and a balloon tip on hover to show the whole message when it overflows.

              Could you share a screenshot that illustrates this behavior as I have not been able, so far, to see any ellipsis char and any ballon tip !


              Now, is this a bug or I did not understand the logic ?

              Let’s suppose this text in a new tab :

              This is a test
              This is a test
              This is a test
              
              This is a test
              This is a test
              This is a test
              
              • Move to this new tab

              • Put the caret on the 4th empty line, without selecting anything else ( IMPORTANT )

              • Run Plugins> Search++ > Search...

              • Select the Plain button

              • SEARCH is

              • Check the Match case option ONLY

              • Click on the ▼ mark of the Find All button

              • Choose the Select > Select Before in Whole Document or the Select Before option

              => No message and no matches ??

              I was rather expecting the message Selected 6 matches before current position

              • Replace the caret on the 4th empty line , without selecting anything else ( IMPORTANT )

              • Click on the ▼ sign of the Find All button

              • Choose the Select > Select After in Whole Document or the Select After option

              => Any is string is matched in entire document

              => Message : Selected 12 matches after selection ??

              I was rather expecting the message Selected 6 matches after current position

              Finally :

              • Replace the caret on the 4th empty line , without selecting anything else ( IMPORTANT )

              • Click on the ▼ sign of the Find All button

              • Choose the Select > Select in Whole Document option

              => Any is string is matched in entire document

              => Message : Selected 12 matches

              This time, the results are coherent !


              Now, @coises, to my mind, it would be interesting to change the layout, below :

              Find ▼    Count ▼    Find All ▼
              
              □ Match Case    □ Whole word only
              

              By this one :

              Find ▼    Count ▼    Find All ▼
              
              Select ▼    Mark ▼    Show ▼
              
              □ Match Case    □ Whole word only
              

              In addition, this would give some more default values available for the Select, Mark and Show options ! What are your thoughts on this ?


              A nice thing regarding the Search Mark feature is that you can use the native N++ Mark feature to perform additional actions :

              • You may clear all marked text with the Clear all marks button. Of course, you can simply use the Tools > Unmark All Text of Search++

              • You can use the Copy Marked Text of the Mark dialog. But, while trying to get a Search++ equivalent behavior, I suspected an other bug :((

              Let’s use this text in a new tab

                  This program is free software: you can redistribute it and/or modify
                  it under the terms of the GNU General Public License as published by
                  the Free Software Foundation, either version 3 of the License, or
                  (at your option) any later version.
              
              • Move to this new tab

              • Run Plugins> Search++ > Search...

              • Select the Regex button

              • SEARCH ^.+

              • Click on the ▼ sign of the Find All button

              • Choose the Select > Select in Whole Document option

              => The 4 lines are selected

              Then, in order to mimic the Copy Marked Text button, you just have to do a Ctrl + C action. So OK, so far !

              • Now, click anywhere to cancel the selection

              • Select this ABCDE string

              • Copy in the clipboard with a Ctrl + C action

              • Move to the new tab

              • Run Plugins> Search++ > Search...

              • Select the Regex button

              • SEARCH ^.+

              • Click on the ▼ sign of the Find All button

              • Choose the Mark > Mark in Whole Document option

              => The 4 lines are marked

              -Then use the Tools > Marked text → Selections option

              => The 4 lines are ALSO selected

              • Run a Ctrl + C action to put this selection in the clipboard

              • Then, run a Ctrl + V action => The clipboard wrongly contains the string ABCDE

              So, despite of the Tools > Marked text → Selections action, nothing can be copied !?


              Regarding the marked strings, you probably know that you can go through all of them with the Ctrl + 0 and Ctrl + Shift + 0 shocrtcuts on main keyboard ( Refer to the Search > Jump Up > Find Mark Style and Search > Jump Down > Find Mark Style options )

              And indeed, a Ctrl + 0 action moves to the next marked text, whatever that the mark operation was due to Notepad++ or Search++

              Unfortunately, a Ctrl + Shift+ 0 action does not move to the previous marked text :-(( Could you confirm, @coises ?

              However, note that commands Ctrl + 1 to Ctrl + 5 and Ctrl+ Shift + 1 to Ctrl + Shift + 5, to navigate between marked strings, work as expected if you change the Marked Style in Settings accordingly.


              Last thing :

              In the Tools menu, I noticed that the Unmark All Text button ONLY clears hhe marked text which is presently defined in the Settings dialog

              So, you could, either :

              • Add a color to identify which marked text will be cleared

              • Simply clears any marked text whatever its style

              • Change the single option :

              □ Unmark all text
              

              in the two options :

              □ Unmark present styled text
              
              □ Unmark all styled text
              

              Best Regards,

              guy038

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

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

                Could you share a screenshot that illustrates this behavior as I have not been able, so far, to see any ellipsis char and any ballon tip !

                4d6cdd85-1d61-4009-a037-36a6c9b4ce3f-image.png

                Now, is this a bug or I did not understand the logic ?
                […]
                => No message and no matches ??

                That is a bug. It should work the same as Mark Before and Mark After. Thank you for catching and reporting it. I’ll fix it.

                Now, @coises, to my mind, it would be interesting to change the layout, below :
                […]
                In addition, this would give some more default values available for the Select, Mark and Show options ! What are your thoughts on this ?

                I’m concerned about increasing the minimum size of the dialog and about making it too busy/cluttered. I won’t say I won’t consider it, but… I’m hesitant. It could be an option to add extra buttons, I suppose — the plugin already manages three layouts (horizontal, vertical and wide, the latter being for docking at the top or bottom), I suppose it could manage six (each existing layout in either 5-command-button or 8-command-button form). I’m not saying never… but not now.

                -Then use the Tools > Marked text → Selections option

                => The 4 lines are ALSO selected

                • Run a Ctrl + C action to put this selection in the clipboard

                • Then, run a Ctrl + V action => The clipboard wrongly contains the string ABCDE

                After clicking on a button in a dialog, keyboard focus is on the button. (That’s standard Windows behavior, which I have not attempted to change in this case.) Your Ctrl+C went to the button. You needed to return focus to the document (e.g., Ctrl+N) before you could copy the selection.

                I admit this focus thing is an annoyance, but I think it would get even more confusing if I overrode Windows standard behavior in a dozen special cases by putting the focus where I think the user will want it next. (I did it with Select commands, but I’m not even sure that’s a good idea. How many exceptions to normal Windows behavior should I expect users to remember? At what point does keeping track of all the exceptions become more difficult than just keeping track of the focus?)

                Unfortunately, a Ctrl + Shift+ 0 action does not move to the previous marked text :-(( Could you confirm, @coises ?

                I can confirm, and I also see that the same thing happens with text marked using the Mark tab of the built-in search dialog. Search | Jump Up | Find Mark Style does work, but the Ctrl+Shift+0 shortcut does not.

                If I change the shortcut to Ctrl+Shift+M, it works. Further testing suggests that Ctrl+Shift+0 does not work as a shortcut when assigned to any command. I haven’t yet checked to see if this is a known issue, or whether it persists without any plugins.

                In the Tools menu, I noticed that the Unmark All Text button ONLY clears hhe marked text which is presently defined in the Settings dialog

                So, you could, either :

                • Add a color to identify which marked text will be cleared

                • Simply clears any marked text whatever its style

                • Change the single option :

                I see your point. The wording suggests that it will remove all marks of any kind, not just the mark style Search++ is using.

                Notepad++ treats Find Mark Style differently than the other styles; Search | Clear Styles | Clear all Styles clears styles 1-5, but not the Find Mark Style. (The only way I know to clear that in native Notepad++ is in the Mark dialog.) So there isn’t true Clear All Styles already. (Beyond that, I might add a custom style, like Columns++ uses; I haven’t decided yet if that would be advantageous — having something that doesn’t overlap with anything Notepad++ uses — or just an unnecessary complication.)

                I’m pretty sure I will want to stay with the notion that the normal way to use Search++ will be to pick a mark style and stick with it, so any time Search++ refers to a “mark” it means “a mark in the style selected in the settings dialog.” So I don’t really want to introduce any options that break that model by affecting styles other than the one selected.

                1 Reply Last reply Reply Quote 0
                • Alan KilbornA
                  Alan Kilborn
                  last edited by Alan Kilborn

                  In regards to:

                  Further testing suggests that Ctrl+Shift+0 does not work as a shortcut when assigned to any command. I haven’t yet checked to see if this is a known issue

                  Maybe see this:
                  https://community.notepad-plus-plus.org/post/90173
                  or some of the other postings about Ctrl+Shift+0 in that topic.

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

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

                    In regards to:

                    Further testing suggests that Ctrl+Shift+0 does not work as a shortcut when assigned to any command. I haven’t yet checked to see if this is a known issue

                    Maybe see this:
                    https://community.notepad-plus-plus.org/post/90173
                    or some of the other postings about Ctrl+Shift+0 in that topic.

                    Thank you, Alan. Good that someone still has memory cells working. (@guy038 and I were both in that discussion, and it seems neither of us remembered.)

                    Similar to what it sounds like happened to Guy in that thread, I attempted to reset all shortcuts for keyboard languages to None even though they already were all None, except for the last one, which had Ctrl+Space associated with something to do with IME and Chinese (probably came about when I was testing Columns++ search in double byte character sets). I changed it to None (repeatedly), but it changed itself back as soon as I OK’d the change.

                    None-the-less, even though no visible setting has changed, now Ctrl+Shift+0 works. No rhyme or reason to this corner of Windows, it seems. :-(

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

                      Hi, @alan-kilborn, @coises and All,

                      Many thanks @alan-kilborn, for solving the Ctrl + Shift + 0 not working at all ;-)) I completely forgot this old post. Like @coises, I confirm that your memory cells are working perfectly !

                      So, certainly, on my Windows 10 laptop, with your precious advice, I was able to solve this bug, in October 2023. But, it happens that I migrated my laptop to Windows 11, at the end of October 2025. And I supposed that this migration reset a lot of parameters, whose this one !

                      Thank you again for helping us find the right post !

                      Best Regards,

                      guy038

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

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

                        -Then use the Tools > Marked text → Selections option

                        => The 4 lines are ALSO selected

                        Run a Ctrl + C action to put this selection in the clipboard
                        
                        Then, run a Ctrl + V action => The clipboard wrongly contains the string ABCDE
                        

                        So, despite of the Tools > Marked text → Selections action, nothing can be copied !?

                        I wrote:

                        After clicking on a button in a dialog, keyboard focus is on the button. (That’s standard Windows behavior, which I have not attempted to change in this case.) Your Ctrl+C went to the button. You needed to return focus to the document (e.g., Ctrl+N) before you could copy the selection.

                        That is true, but there is also a flaw in Marked text → Selections that causes an extra, empty selection to be included at the beginning, which could cause unexpected results when pasting.

                        A new version will be coming, but probably not until sometime tomorrow. Thank you for all your feedback.

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

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

                          • Choose the Select > Select Before in Whole Document or the Select Before option

                          => No message and no matches ??

                          […]

                          -Then use the Tools > Marked text → Selections option

                          => The 4 lines are ALSO selected

                          • Run a Ctrl + C action to put this selection in the clipboard

                          Version 0.5.1 fixes the Before/After bug and adds some new commands to the Tools button menu; Copy Marked Text should avoid the need to make a selection from marked text just to copy it.

                          There are a few other small changes that hopefully are improvements.

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

                            Hello @alan-kilborn, @Coises and All,

                            Yesterday, I was pretty sure the bug had been fixed. Unfortunately, today, perhaps because I needed to re-start my laptop for other reasons, the bug is still here !

                            • Of course, I re-ran the @alan-kilborn’s solution but without success

                            • I tried to delete then re-assign the Ctrl + Shift + 0 shortcut to the Previous style of Find Mark style command within N++ => Not better

                            • I turned my laptop off and then back on but no chance, either

                            • I also visit the two sites, below, to get some tools to deternine which process could own the Ctrl + Shift + 0 shortcut => No result

                            https://www.nirsoft.net/utils/hot_keys_list.html

                            https://github.com/ITachiLab/hotkey-detective

                            Note that once Hotkeydetective.exe has been launched with administator rights, it is said to press the stolen key in order that the software shows you a path to the guilty process. However, hitting the Ctrl + Shift + 0 shortcut does not show any line, personally !


                            Finally, I had the idea of simply changing the Ctrl * Shift + 0 shortcut to Ctrl * Shift + 6. And… bingo, this change worked nicely !

                            Thus, doing the same thing for the Ctrl + 0 shortcut seems a possible solution to this problem !

                            BR

                            guy038

                            P.S. :

                            After using this work-around, I tried to assign the Ctrl + Shift + 0 shortcut to a command without shortcut, like the View > Summary... command. But it does not show the Summarize dialog :-((

                            In contrast, the shortcut Ctrl + 0, which is no longer used, displays the control character 0, as I did not check the Settings > Preferences... > Editing2 > Prevent control character (C0 code) typing into document option. Thus no need of the Control Panel feature in order to type the NUL character anymore !

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

                              Hello, @coises,

                              First, thanks for the Select Before/After fix ! Now, the new Copy Marked Text options, with the separator choice, are really practical and straightforward

                              Regarding the Tools > Select Marked Text option ( formely Marked text → Selections ), we need to do a Ctrl + N action, to replace focus on current document first, before doing a Ctrl + C action


                              Regarding the Enhance clearing behavior, I suppose that you mean :

                              • If current document already contains some selections, based on a previous search

                              OR

                              • If current document already contains some marked text, based on a previous search

                              OR

                              • If current document already contains some invisible lines and some visible lines, based on a previous search

                              => The appearance of current document does not changed if present search does not find any match ( => previous selections are kept, previous marks are kept and no other lines are hidden )

                              Of course, this makes sense !


                              This still one point that’s a bit unclear to me : what is the fundamental difference between all these options, when compared in pairs :

                              Find                         vs        Find in Whole Document
                              Find Backward                vs        Find Backward in Whole Document
                              
                              
                              Count                        vs        Count in Whole Document
                              Count Before                 vs        Count Before in Whole Document
                              Count After                  vs        Count After in Whole Document
                              
                              
                              Find All Before              vs        Find All Before in Whole Document
                              Find All After               vs        Find All After in Whole Document
                              
                              Select Before                vs        Select Before in Whole Document
                              Select After                 vs        Select After in Whole Document
                              
                              Mark Before                  vs        Mark Before in Whole Document
                              Mark After                   vs        Mark After in Whole Document
                              
                              Show Before                  vs        Show Before in Whole Document
                              Show After                   vs        Show After in Whole Document
                              
                              
                              Replace and Find             vs        Replace And Find in Whole Document
                              Replace and Find Backward    vs        Replace and Find Backward in Whole Document
                              
                              Find or Replace              vs        Find or Replace in Whole Document
                              Find Backward or Replace     vs        Find Backward or Replace in Whole Document
                              
                              
                              Replace All                  vs        Replace All in Whole Document
                              Replace All Before           vs        Replace All Before in Whole Document
                              Replace All Aftrt            vs        Replace All After in Whole Document
                              

                              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:

                                This still one point that’s a bit unclear to me : what is the fundamental difference between all these options, when compared in pairs :

                                The principle (see the last bullet point under help for search scopes) is that commands which don’t specify a scope search in marked text if there is any; otherwise, in the current selection if it is not empty; otherwise, in the whole document. That’s subject to the Settings: if you unchecked both Automatically search within selections and Automatically search within marked text, then all the pairs of commands you listed would be identical; and there are the limits on when selections are considered “large enough” to trigger search within selection. (A selection that is the immediate result of a stepwise search never causes the same search to search within that selection no matter how large it is.)

                                There are two special cases, and a third questionable feature, also involved:

                                1. There are no Before or After commands with in Selection scope. (My logic is that something can’t be both in the selection and before or after it.) So search commands that include Before or After can only be in Marked Text or in Whole Document.

                                2. Mark commands that don’t specify a scope don’t automatically scope to in Marked Text even if Automatically search within marked text is enabled. What happens is that unless you’ve checked Always unmark all text before Mark command, default Mark commands add to existing marks. I know this is a different behavior from selections, but I think because selections are so volatile, and marks are not, it is natural to use them in different ways. Should this exception be an option in Settings? I’m inclined to add it as a default-checked sub-option of Automatically search within marked text.

                                3. Search commands that specify in Selection or in Marked Text search the whole document if there is no (non-empty) selection or marked text. I’m questioning the sense of that now. I’m thinking that if the user specifies “in selection” or ”in marked text,” and there is none, the search should fail with a message like “No marked text to search” rather than silently discarding the specified scope.

                                Thoughts about that logic, especially point 3 (which I am inclined to change in the next release) are welcome and encouraged.


                                I have tried to keep as much “symmetry” as I could, to make it all more comprehensible. I think it is possible that I have created some nonsense in practice.

                                Points 1 and 3 together mean that Before and After commands without a scope are either the same as Before/After in Marked Text if Automatically search within marked text is checked, or the same as Before/After in Whole Document if it isn’t. However, as I wrote, I’m questioning point 3; without that, when the relevant setting is checked, there would be a difference (the commands that don’t specify a scope would switch between in Marked Text and in Whole Document depending on whether there was any marked text in the document, whereas neither command that specified one scope would switch to the other).

                                So… looking at the full list you gave, group by group, assuming default settings… this is what is supposed to happen (full testing of every possible case has not been done):

                                Find                         vs        Find in Whole Document
                                Find Backward                vs        Find Backward in Whole Document
                                

                                The two on the left will find the next match in marked text following or preceding the current position or selection if any text is marked; otherwise they will find the first or last match in the selected text if “enough” text is selected; otherwise they will find the next match following or preceding the current position or selection in the whole document. Those on the right will always find the next match following or preceding the current position or selection in the whole document regardless of whether any text is marked or selected.

                                Count                        vs        Count in Whole Document
                                

                                Count will count only matches in marked text if any text is marked; otherwise it will count only matches in selected text if “enough” text is selected; otherwise it will count all matches in the whole document. Count in Whole Document will always count all matches in the whole document regardless of whether any text is marked or selected.

                                Count Before                 vs        Count Before in Whole Document
                                Count After                  vs        Count After in Whole Document
                                

                                The two on the left will count only matches in marked text that are before or after the current position or selection if any text is marked; otherwise they will count matches before or after the current position or selection in the whole document. Those on the right will always count matches before or after the current position or selection in the whole document regardless of whether any text is marked.

                                Find All Before              vs        Find All Before in Whole Document
                                Find All After               vs        Find All After in Whole Document
                                

                                The two on the left will list only matches in marked text that are before or after the current position or selection if any text is marked; otherwise they will list all matches before or after the current position or selection in the whole document. Those on the right will always list all matches before or after the current position or selection in the whole document regardless of whether any text is marked.

                                Select Before                vs        Select Before in Whole Document
                                Select After                 vs        Select After in Whole Document
                                

                                The two on the left will select only matches in marked text that are before or after the current position or selection if any text is marked; otherwise they will select all matches before or after the current position or selection in the whole document. Those on the right will always select all matches before or after the current position or selection in the whole document regardless of whether any text is marked.

                                Mark Before                  vs        Mark Before in Whole Document
                                Mark After                   vs        Mark After in Whole Document
                                

                                I’ll double-check my logic later, but I think these are identical, since (1 above) Before/After can’t be in selection, and (2 above) Mark doesn’t automatically scope to marked text. It’s unclear to me which ones to remove, since either choice breaks the symmetry and could be confusing to users, but having two commands that do the same thing is also confusing.

                                Show Before                  vs        Show Before in Whole Document
                                Show After                   vs        Show After in Whole Document
                                

                                I grant that this would be a strange use of Show. In the circumstance where there are hidden lines both before and after the current position or selection, and there is some marked text in document, the ones on the left would search only marked text before or after the current position or selection for lines to unhide, while the ones on the right would search all text.

                                Replace and Find             vs        Replace And Find in Whole Document
                                Replace and Find Backward    vs        Replace and Find Backward in Whole Document
                                
                                Find or Replace              vs        Find or Replace in Whole Document
                                Find Backward or Replace     vs        Find Backward or Replace in Whole Document
                                
                                Replace All                  vs        Replace All in Whole Document
                                Replace All Before           vs        Replace All Before in Whole Document
                                Replace All After            vs        Replace All After in Whole Document
                                

                                These are like their Find and Find All counterparts. The ones on the left work like “in Marked Text” if any text is marked; otherwise, like “in Selection” if “enough” text is selected; otherwise like “in Whole Document” (like the ones on the right).

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

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

                                  This still one point that’s a bit unclear to me : what is the fundamental difference between all these options, when compared in pairs :

                                  […]

                                  Count Before                 vs        Count Before in Whole Document
                                  Count After                  vs        Count After in Whole Document
                                  
                                  Find All Before              vs        Find All Before in Whole Document
                                  Find All After               vs        Find All After in Whole Document
                                  
                                  Select Before                vs        Select Before in Whole Document
                                  Select After                 vs        Select After in Whole Document
                                  
                                  Mark Before                  vs        Mark Before in Whole Document
                                  Mark After                   vs        Mark After in Whole Document
                                  
                                  Show Before                  vs        Show Before in Whole Document
                                  Show After                   vs        Show After in Whole Document
                                  

                                  […]

                                  Replace All Before           vs        Replace All Before in Whole Document
                                  Replace All Aftrt            vs        Replace All After in Whole Document
                                  

                                  Now that I think about it some more, it seems like I could simplify this by removing all the Before and After search commands that don’t include a scope (in Selection, in Marked Text or in Whole Document). I don’t think anyone is going to want to make a before or after command the one-click action for a button; and otherwise, once you have to select from a menu anyway, why not select what you mean instead of selecting something that’s going to infer what you want?

                                  Thanks again, Guy, for looking at this so carefully and pointing out the confusing and redundant parts.

                                  If no one thinks it’s a bad idea, I’ll probably remove the unscoped Before and After searches in the next release.

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

                                    Hi, @coises and All,

                                    @coises, I read carefully your last two posts and many thanks for all your explanations !

                                    Regarding your point #3 :

                                    You said :

                                    I’m questioning the sense of that now. I’m thinking that if the user specifies “in selection” or ”in marked text,” and there is none, the search should fail with a message like “No marked text to search”

                                    Indeed, it quite disturbing for example that, when no selection and no marked text exists, the Count in selection or Count in Marked Text options still return all the matches of current document ! Give it a try, searching for the insensitive word fix within the last change.log file ( You should get 32 matches ! )

                                    So I support your idea that, in this specific case, the search should fail with the message No marked text to search or No selection to search

                                    • Regarding your point #1 :

                                    I totally understand your logic. This make sense !

                                    • Regarding your point #2

                                    You began with :

                                    Mark commands that don’t specify a scope …

                                    Are we agree that you’re speaking about the Mark Before and Mark after options ONLY ? Presently, as you said, these two commands, not restricted to a scope, search throughout all file contents.

                                    Now, as expressed in your very last post, I do support your idea to avoid any command, containing Before or After, that do not include a scope ( in Selection, in marked Text and in Whole Document ). Thus, that should solve automatically this problem ;-))


                                    One question :

                                    • Let’s suppose the v8.9.3 change.log in a tab

                                    • Now, enter the regex (?si) 1.+?(?=^\R) in the Search dialog

                                    • Click on the ▼, after the defeautl Find All option

                                    • Run the Mark > Mark in Whole Document option

                                    => Message : Marked 4 matches

                                    • Now, with the (?si) 1.+?(?=^\R) regex still present in the Find dialog

                                    • Run the Mark > Mark in Marked Text option

                                    => We get the message No matches found in marked text. Is this coherent, @coises ?. To my mind, I was expecting the message 4 matches in marked text !

                                    Of course, I know that, normally, I should have changed the search, in between ! For example :

                                    • Write the (?i)fix regex, in the Find dialog

                                    • Run again the Mark > Mark in Marked Text option

                                    => The fix word, whatever its case, is now marked, from all the previous marked regions, ONLY !

                                    You’ll note that the fix string within all the lines beginning with Notepad++, which were not concerned by the previous search, are not marked, as expected !


                                    • Regarding the Remove marks from all open documents and Remove marks from documents in this view options, in the Tools dialog :

                                    Could you move them to an other place of the Tools dialog, in order to not be close to the Remove marks from active document option, that we’ll probably use more often ?

                                    OR :

                                    Could you add a confirmation dialog for these two specific options ?

                                    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:

                                      • Regarding your point #2

                                      You began with :

                                      Mark commands that don’t specify a scope …

                                      Are we agree that you’re speaking about the Mark Before and Mark after options ONLY ? Presently, as you said, these two commands, not restricted to a scope, search throughout all file contents.

                                      It applies to the plain Mark command, too. If there is a non-empty selection (that’s “large enough” per Settings), Mark will perform Mark in Selection (not possible for Mark Before and Mark After). But none of the three will perform Mark […] in Marked Text; that has to be selected explicitly. The same isn’t true for Select; if there is an existing selection (large enough), Select will perform Select in selection. What I was thinking is that perhaps this difference between Mark and Select should be “explained” by having an additional setting for each action, enabled only when Automatically search within {selections | marked text} is checked, that controls whether the matching command is an exception (that is, Select doesn’t perform Selection in Selection, or Mark doesn’t perform Mark in Marked Text). The current behavior would have the “except Select” box unchecked and the “except Mark” box checked.

                                      It comes down to: What do you want to do when you say Select and there’s already a selection, or you say Mark and there’s already marked text? Do you replace the existing selection or marks? add to them? or search within them?

                                      And when I put it that way… I have to think this through some more. From a user’s perspective, the Settings I have are too difficult to figure out. I’m having trouble getting a clear picture of what settings make sense with what other settings and I wrote the damn thing. :-(

                                      Now, as expressed in your very last post, I do support your idea to avoid any command, containing Before or After, that do not include a scope ( in Selection, in marked Text and in Whole Document ). Thus, that should solve automatically this problem ;-))

                                      It would get rid of some of the problem, but not all of it. Where I’m stuck is that I really want there to be “adaptive” commands (the plain Count, Find All, etc.) that recognize when the user would want to search in a selection or in marked text, so they can be the one-click action on a button. Alas, there’s that fundamental design flaw in all computers thus far produced: the RUM (“read user’s mind”) instruction was never implemented. It could be that making an appropriate guess is hopeless. But I really don’t want an oversized, cluttered interface with a matrix of 20 buttons, and I really don’t want users to have to select operations they use often or repeatedly from button menus. So, at least for a while, I’m going to keep trying.

                                      I appreciate your feedback on these issues very much. Anything you, or anyone, can tell me about what works smoothly and what is difficult to use or doesn’t work as expected is helpful.

                                      • Now, enter the regex (?si) 1.+?(?=^\R) in the Search dialog

                                      • Click on the ▼, after the defeautl Find All option

                                      • Run the Mark > Mark in Whole Document option

                                      => Message : Marked 4 matches

                                      • Now, with the (?si) 1.+?(?=^\R) regex still present in the Find dialog

                                      • Run the Mark > Mark in Marked Text option

                                      => We get the message No matches found in marked text. Is this coherent, @coises ?. To my mind, I was expecting the message 4 matches in marked text !

                                      I did document this, but it’s easily missed:

                                      For a regular expression search, each run of marked text is searched independently; the search in any span of marked text cannot “see” outside that span. This affects the behavior of assertions (including word boundaries, lookaheads and lookbehinds, ^ and $).

                                      The search in Columns++ has the same limitation. I couldn’t figure out a practical way to make it work other than this way.

                                      Regarding the Remove marks from all open documents and Remove marks from documents in this view options, in the Tools dialog :

                                      Could you move them to an other place of the Tools dialog, in order to not be close to the Remove marks from active document option, that we’ll probably use more often ?

                                      OR :

                                      Could you add a confirmation dialog for these two specific options ?

                                      I will work out something so they won’t be easily clicked by accident.

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