Community
    • Login

    Search++: A work in progress

    Scheduled Pinned Locked Moved Notepad++ & Plugin Development
    64 Posts 7 Posters 3.4k 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.
    • Snabel42S
      Snabel42 @Coises
      last edited by

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

      Search++ version 0.5.2 addresses a number of issues:

      • Fix display of Settings: Mark style drop-down in dark mode. (@Snabel42: this should fix the problem you described here.)

      It does indeed, thank you!

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

        Hi,@coises and All,

        I’m exploring all the possibilities when you click on the ICU button and, really, you access a new regex world with a lot of new options, all related to UNICODE !

        In addition, you get some new regex syntaxes which are easier to interpret and allow an almost infinite number of ways to define an Unicode range of characters !

        For example, if we’re searching ,with the Match case option checked, in my Total_Chars.txt file :

        • The search [[\p{letter}][\p{number}]] is the UNION of the [\p{letter}] and the [\p{Number}] properties. Thus, it returns 145,672 matches OR 1,924 matches = 147,596 matches. It could simply be replaced by the Boost syntax [\p{letter}]|[\p{number}].

        • The search of [[:letter:]&&[\p{InArabic}]] is the INTERSECTION of the [:letter:] and the \[\p{InArabic}]] properties. Thus, it returns 153 matches which is the amount of letter characters in the main Arabic block. It could be replaced by the Boost syntax (?=[[:letter:]])\p{InArabic}. It returns 145,672 AND 256 = 153 letters within this main Arabic block.

        • The search of [[:letter:]--[a-z]] is the ASYMETRIC DIFFERENCE between the [[:letter:]] and [a-z] properties = 145,672 - 26 which returns 145,646 characters. It could be replaced by the Boost syntax (?![a-z])[[:letter:]] which also returns 145,646 chars.


        I’m still looking for all the ICU properties returning a valid value, against my Total_Chars.txt file ! Be patient some days as it remains about 600 properties not tested !!

        Best Regards,

        guy038

        BTW, @coises, what do you think of my idea regarding the two options, Replace (then find) and Replace (then wait) ?

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

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

          I’m still looking for all the ICU properties returning a valid value, against my Total_Chars.txt file ! Be patient some days as it remains about 600 properties not tested !!

          I would expect that they will all work. I have avoided tampering with the ICU search, so it can serve as a reference standard for the Regex search as far as Unicode properties.

          There are some Boost.Regex constructs that ICU does not support. The ones I know about right now are backtracking control (like (*SKIP)(*FAIL)); \K; and \l and \u as shorthand for [[:lower:]] and [[:upper:]]; there may be others. I don’t expect that I will attempt to modify the ICU syntax in any way.

          Offering ICU as a “first class” search (working on documents that aren’t UTF-8, being able to replace as well as find, being reasonably efficient for large documents, etc.) is probably possible, but it will take a lot of work. I’m not at all certain it is a task I will attempt.

          On the other hand, once the framework is in place and I feel comfortable taking Search++ out of pre-release status, I do hope to add more of the ICU properties to regular Regex.

          BTW, @coises, what do you think of my idea regarding the two options, Replace (then find) and Replace (then wait) ?

          I see your point that the Replace drop-down has become overwhelming with all the options, especially in Plain search.

          I’m now planning to add a toggle item (with a check mark) to the Tools menu; something like Jump to next match after Replace. I’m also planning to add keyboard shortcuts for (most or all of) the Tools menu items. That would make it reasonably easy to toggle between Replace (then find) and Replace (then wait) without complicating the menu so badly. (With the shortcut it would be more keyboard-friendly than the present arrangement.) The next version will include something like that, unless I encounter an unexpected obstacle or think of a better idea.

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

            Search++ version 0.5.3 is available:

            • Avoid a crash when searching in Marked Text in Open Documents or in Marked Text in Documents in this View and a document has no marked text.
            • Fix button menus overlapping the button when the button is near the bottom of the screen. This could cause inadvertent activation of the last menu option.
            • Make the Scintilla controls (Find box, Replace box and Results list) change colors when dark mode changes. Fix some visibility problems for caret and found text indicators in dark mode.
            • Make Show All on the Tools menu scroll current position or selection into view.
            • Add toggles Bookmark lines when marking text and Jump to next match after Replace to Tools menu.
            • Add keyboard shortcuts for most Tools menu items.
            • Condense the Replace button menu and coordinate with the new Jump to next match after Replace toggle.

            Note: The keyboard shortcut assignments on the Tools menu are new and might change in the next version in response to my own and others’ experiences, and/or to accommodate any additional menu entries.

            @Lachlanmax: Does the implementation of bookmarks in this version work for you? What changes, if any, would you suggest?

            @guy038: Do you think the way I’ve done Replace (with the Jump to next match after Replace toggle and the submenu for opposite jump behavior) works sensibly?

            All comments, critiques, suggestions and experiences are most welcome!

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

              Hello, @coises and All,

              Sorry to begin with some bugs :-((

              • The Bookmarks feature does not seem to work at all, even if I close and re-open N++ with the Bookmark lines when marking text option already checked in the Search++ > Tools dialog !

              • When focus on Search++, the two shortcuts Ctrl + Shift + Y or Ctrl + Shift + E ( which open a new dialog ) wrongly add the control char EN or ENQ to current text typed in the Find dialog. To this purpose, note that in Settings > Preferences... > Editiing 2 I personally did not check the Prevent control character (C0 only) typing into document option, in order to be able to include some of them in my texts or posts !

                • Note also that this bug happens ONLY IF you first use the shortcut. In case that you first open the Tools menu and choose the Copy Marked Text... or Settings... option directly, nothing is added in the Find dialog !

              Now, regarding the two ways to do a step-wise replacement :

              • I do like your new option, in the Tools menu, which TOGGLE the replacement type, on the fly, thanks to the Ctrl + J shortcut ( I noted the J for Junp )

              • But then, I suppose that the last line of the Replace dialog ( Do not jump to next match or Jump to next match ) and its sub-menu ( to adopt the opposite behavior ) are rather redondant and useless ? What is your feeling about it ?


              And, personally, I think that a new setting Force the 'Do not jump to next match' behavior during the X first replacements, with 0 < X < 9, would be interesting !

              Indeed :

              • When that new option would be checked :

                • If current behavior is Jump to next match it would force the Do not jump to next match for the X first replacements, then all subsequent replacements would follow the current behavior.

                • If current behavior is Do not jump to next match it would not change anything.

              • When that new option would not be checked :

                • If current behavior is Jump to next match, it would follow this behavior

                • If current behavior is Do not jump to next match, it would follow this behavior

              Best Regards,

              guy038

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

                Hi, @coises,

                @coises, very sorry about the supposed bug with the Bookmarks feature ! Finally, I understood that this bug happens ONLY IF you choose the ICU regex engine ! If you’re using the Plain or Regex options, everything woks as expected ;-)) Is there a limitation to use Bookmarks when the true ICU regex engine is active ?

                I even noticed that, like with the native Mark dialog, if you have, both, bookmarks and marked text in current document and that the Bookmark lines when marking text option, in Tools, is unchecked, a Remove marks and bookmarks from active document action does not clear the Bookmarks, as expected !

                BR

                guy038

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

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

                  • When focus on Search++, the two shortcuts Ctrl + Shift + Y or Ctrl + Shift + E ( which open a new dialog ) wrongly add the control char EN or ENQ to current text typed in the Find dialog.

                  Thank you for catching that! I see it here, too. I will figure out why (no doubt it’s related to the fact that those two combinations open a dialog) and fix it.

                  • But then, I suppose that the last line of the Replace dialog ( Do not jump to next match or Jump to next match ) and its sub-menu ( to adopt the opposite behavior ) are rather redondant and useless ? What is your feeling about it ?

                  I think it’s not useless because:

                  1. If you’re going to choose an option from the drop-down menu and you want opposite behavior, it’s easier to open one menu than two.

                  2. If you just click, rather than shift+click, the options on the sub-menu don’t change the Jump to next match after Replace setting, they just override it for that one command. So if you like to make a setting and keep it but only occasionally do it differently, you can do that and not have to remember to change the setting back again.

                  And, personally, I think that a new setting Force the 'Do not jump to next match' behavior during the X first replacements, with 0 < X < 9, would be interesting !

                  This sounds to me like it would be confusing to use. Your explanation is clear enough, I don’t mean that it is confusing. But using a counter that’s invisible to the user, the behavior of the same command just changes when it counts to a certain point? I can’t see it. Why would it be likely that people would want the same number of searches without automatic find every time, under all conditions?

                  If others also say they want this behavior, I won’t refuse to give it a try, but… I can’t say I’m fond of the idea.

                  I note and admit that convenient keyboard navigation of the button drop-down menu options is sorely needed, and as yet I have no good ideas for how to provide it.

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

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

                    @coises, very sorry about the supposed bug with the Bookmarks feature ! Finally, I understood that this bug happens ONLY IF you choose the ICU regex engine ! If you’re using the Plain or Regex options, everything woks as expected ;-)) Is there a limitation to use Bookmarks when the true ICU regex engine is active ?

                    Nothing to be sorry about — thank you for the observation, and for narrowing down to ICU. I see what’s wrong: it’s a coding error. I’ll fix it.

                    I even noticed that, like with the native Mark dialog, if you have, both, bookmarks and marked text in current document and that the Bookmark lines when marking text option, in Tools, is unchecked, a Remove marks and bookmarks from active document action does not clear the Bookmarks, as expected !

                    If you look closely, when Bookmark lines when marking text is checked, the menu item should say Remove marks and bookmarks from active document; when Bookmark lines when marking text is not checked, that menu item should say Remove marks from active document.

                    (I’m not sure why I didn’t make the same change to Remove marks from multiple documents…, since it also removes bookmarks as well if Bookmark lines is checked.)

                    It could be that this is a confusing way to do it. I intended to make the Bookmark lines setting so that when it’s checked, bookmarks and marks “go together” for Mark and Show commands and for Remove marks; but when it’s not checked, Search++ only affects marks and does nothing with bookmarks.

                    Except that Add selection to marked text doesn’t also add bookmarks regardless of whether Bookmark lines is checked.

                    This does need refinement. There is certainly some inconsistency. I do want to preserve the ability to manipulate marks without touching bookmarks at all; but which commands should affect bookmarks, and whether I need separate commands for some kinds of bookmark manipulation, remains an open question.

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

                      Hello, @coises an All,

                      Regarding the two behaviors of the Replace command :

                      • First, I suppose that a special mark/sign/icon in the Search++ title zone, to clearly identify the current behavior of the Replace action, would be welcome !

                      • Then, the user will choose its desired behavior, simply using the Ctrl + J shortcut.

                      • And forget my idea of a new setting ! In this specific case, the user will begin using the alternate Replace behavior first then, after some tries, he would toogle to the usual Replace behavior !


                      Now, do we need the additional sub-menu in order to occasionally use the opposite Replace behavior, without changing the default settings, as you expressed ?

                      To my mind, after using this opposite behavior ( so, of course, changing the default behavior ), the user would just have to hit the Ctrl + J shortcut again to restore the previous default !

                      In addition, I probably forget some edge cases and, anyway, it’s your plugin, not my baby !

                      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 two behaviors of the Replace command :

                        • First, I suppose that a special mark/sign/icon in the Search++ title zone, to clearly identify the current behavior of the Replace action, would be welcome !

                        It is indicated by the icon on the Replace button. Is there some reason that isn’t enough?

                        Now, do we need the additional sub-menu in order to occasionally use the opposite Replace behavior, without changing the default settings, as you expressed ?

                        I agree that the “opposite jump behavior” sub-menu isn’t strictly necessary, but I don’t think it does any harm, either. To my mind, the commands on that menu are still commands that “belong to” the Replace button. If anything, it’s the Jump to next match after Replace option on the Tools menu that strikes me as logically redundant; but I wanted something to which I could assign that Ctrl+J shortcut for easy switching.

                        If user experience indicates that the sub-menu creates more confusion than convenience, I’ll remove it.

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