Community
    • Login

    Search++: A work in progress

    Scheduled Pinned Locked Moved Notepad++ & Plugin Development
    159 Posts 9 Posters 49.7k Views 3 Watching
    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 Offline
      Coises @guy038
      last edited by

      @guy038 said:

      Regarding the features under consideration :

      You said :

      1. Context in search results: that is, showing one or more lines before or after the line(s) containing a match.
      • This would be optional and configurable, but a tricky question is whether it is sufficient to configure it before the search or whether you should be able to request context — either for a specific match or for all matches — directly in the search results window, after the search.

      Personally, I suppose that asking for 1 to 5 lines before / after the context, once the search ended, should be sufficient !

      Making sure we understand each other precisely is important here.

      Implementing context is not quite as simple as it sounds, but for Find All commands that create a search results list, it is much trickier if the context can be requested after the search is complete, rather than specified before the search is performed.

      I do understand that it would be handy to look at search results and then say, “Oh, I need some context. Expand this to show me two lines before and three lines after each match.” It’s a lot more complicated to implement that than to have the user specify context requirements beforehand (e.g., a setting that says, “When I search, show me two lines before and three lines after each match”) and include those lines in the search results.

      I’m not saying it’s impossible; just enough more complicated that it’s worth understanding how badly it’s wanted or needed before trying to do it.

      If I implement requesting context after the search, should it be for an individual match (“show me two lines before and three lines after this match”), for all matches, or are both options needed?

      You said

      It seems like it would make sense for this to be available for Show actions, too.

      Yes it would. I agree with your opinion !

      The next release will include something vaguely like this: the ability to “expand” visible blocks (such as those resulting from Show) by showing one additional line before and after each. This can be repeated to show more lines as desired. It doesn’t give find-grained control, but it keeps things relatively simple, and it may prove to be good enough.

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

        Hello, @coises and All,

        As for the two points you mentioned in your last post, I now realize that I should have given them more thought : in fact, it is, of course, much easier to agree — before conducting the search — on the number of context lines to add on either side of the lines containing the occurrence(s).

        Thus, forget my initial proposition. I suppose that the context lines feature should be decided before the search ! Anyway, do as you like :

        • If you think you’ll be able to manage an AFTER search context lines feature easily enough, without leading to other problems, just go ahead !

        • If you think the BEFORE search solution would be safer and more simple, just prefer it !

        As for the number of context lines needed, a general amount of N lines, both before and after, with 1 to 5 max should be enough !


        Now, I’d like to add a general point :

        Do not worry too much about what I personally think. Other users may have different opinions. After all, the Search++ plugin is your brainchild, and you should plan its structure and improvements however you see fit !

        Personally, I prefer programs with a few well-implemented features to programs with a plethora of poorly managed features !

        Best Regards,

        guy038

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

          Hello, @coises,

          Regarding my post, I admit that the concept of a word is rather difficult to grasp. On that note, this is developed in the Martin Haspelmath’s article, published in June 2010, which highlights this point :

          Follow this link https://zenodo.org/records/225844 to see the PDF file or use https://zenodo.org/records/225844/files/WordSegmentaionFL.pdf to download it !

          Here are a few excerpts of his publication : :

          At end of section 5, it is said : … On such a view, the claim that all languages have words (Radford et al. 1999: 145) would be interpretable only in the weaker sense that “all languages have a unit which falls between the minimal sign and the phrase” …

          And : … The basic problem remains the same: The units are defined in a language-specific way and cannot be equated across languages, and there is no reason to give special status to a unit called “word”'. …

          At beginning of section, 7 : … Linguists have “no good basis for identifying words across languages” …

          And in the conclusion, section 10 : … I conclude, from the arguments presented in this article, that there is “no definition of word” that can be applied to any language and that would yield consistent results that are in accord with our writing habits.

          Thus, let’s accept that our different regex engines give us an approximate count of the Words characters set !


          Note that, on the contrary, the definition of Non-space characters is quite strict, since the Space characters set, that delimit them, consist of only 25 Unicode characters !

          BR

          guy038

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

            This post is deleted!
            1 Reply Last reply Reply Quote 0
            • guy038G Offline
              guy038
              last edited by guy038

              Hello, @coises and All,

              Presently, I think we can summarize how your plugin works, using the table, below, on its left part :

                  •=========================•=======================•============================================•       •===============•==============================
                  |         Actions         |        Scopes         |                Extents                     |       |   Actions     |    Default configuration
                  •=========================•=======================•============================================•       •===============•==============================
                  |                         |                       |                                            |       |               |
                  |  Count                  |  In Selection         |                 N/A                        |       |  Find         |
                  |  ¯¯¯¯¯                  |                       |                                            |       |               |
                  |                         •-----------------------•--------------------------------------------•       •---------------•------------------------------
                  |                         |                       |                                            |       |               |
                  |  Find All               |                       |  Before Caret                              |       |  Count        |
                  |  ¯¯¯¯¯¯¯¯               |                       |                                            |       |               |
                  |                         |  In Marked Test       |  After Caret                               |       •---------------•------------------------------
                  |                         |                       |                                            |       |               |
                  |  Mark                   |                       |  Everywhere                                |       |  Find All     |
                  |                         |                       |                                            |       |               |
                  |                         |  In Whole Document    |  In All Opened Documents                   |       •---------------•------------------------------
                  |                         |                       |                                            |       |               |
                  |  Replace All            |                       |  In All Opened Documents of Current View   |       |  Select       |
                  |  ¯¯¯¯¯¯¯¯¯¯¯            |                       |                                            |       |               |
                  •-------------------------•-----------------------•--------------------------------------------•       •---------------•------------------------------
                  |                         |                       |                                            |       |               |
                  |                         |  In Selection         |                 N/A                        |       |  Mark         |
                  |                         |                       |                                            |       |               |
                  |  Select                 •-----------------------•--------------------------------------------•       •---------------•------------------------------
                  |                         |                       |                                            |       |               |
                  |                         |  In Marked Text       |  Before Caret                              |       |  Show         |
                  |                         |                       |                                            |       |               |
                  |                         |                       |  After Caret                               |       •---------------•------------------------------
                  |  Show                   |                       |                                            |       |               |
                  |                         |  In Whole Document    |  Everywhere                                |       |  Replace      |
                  |                         |                       |                                            |       |               |
                  •-------------------------•-----------------------•--------------------------------------------•       •---------------•------------------------------
                  |                         |                       |                                            |       |               |
                  |  Find                   |  In Selection         |                                            |       |  Replace All  |
                  |  ¯¯¯¯                   |                       |  Backward  ( if Plain text )               |       |               |
                  |                         |  In Marked Text       |                                            |       •===============•==============================
                  |                         |                       |                                            |
                  |  Replace                |  In Whole Document    |  Forward                                   |
                  |  ¯¯¯¯¯¯¯                |                       |                                            |
                  •=========================•=======================•============================================•
              

              The underlined actions are those which have a button, by default

              Personally, your concept of a default scope bothers me a little, because it’s hard for me to know, in advance, which actions will be automatically selected by the plugin !


              So, I was thinking about a radically different layout :

              • You entirely suppress the default scope functionality. However, I suppose this will affect the Selection section in the settings !

              • You does not show any symbol on all the buttons, nor use any drop-down list

              • You just show six one-letter buttons and two one-letter button for the replace actions, as below :

                  |F|  |C|  |A|  |S|  |M|  |H|    :    Find    Count    find All    Select    Mark    sHow
              
                  |R|  |A|                             Replace    replace All
              
              • All these simple-design buttons would open a common dialog box, in which the selected action — one of the eight possible options — would be already selected by default. This dialogue could be based on the table shown above !

              • Then, you’ll just have to check your present scope and extent choices for the chosen action

              • Optionally a message, summarizing everything that has just been selected, could be displayed

              • Then, this new dialog would end with three buttons :

                • A Define button to attribute a default configuration ( scope and extent ) for the chosen action, without any execution.

                • A Run button to start the chosen action, without any default configuration to apply to

                • And, of course, a Cancel button, or an hit on the ESC key, to dismiss the chosen action

              IMPORTANT :

              As we must distinguish a default configuration ( the set of the 3 elements : action, scope and extent ) from the execution of a simple action with ramdom scope and extent, the Define button, introduced above, must record that default configuration, within this dialog.

              So, when clicking on the Define button, the default configuration, to write in this new dialog, would be :

              For the Count, Find All, Mark and Replace All actions, one of these 11 messages

              Count / Find All / Mark / Replace All in Selection
              Count / Find All / Mark / Replace All in Marked text
              Count / Find All / Mark / Replace All Before in Marked text
              Count / Find All / Mark / Replace All After in Marked text
              Count / Find All / Mark / Replace All in Marked Text in Open Documents
              Count / Find All / Mark / Replace All in Marked Text in Documents in this View
              Count / Find All / Mark / Replace All in Whole Document
              Count / Find All / Mark / Replace All Before in Whole Document
              Count / Find All / Mark / Replace All After in Whole Document
              Count / Find All / Mark / Replace All in Open Documents
              Count / Find All / Mark / Replace All in Documents in this View
              

              For the Select and Show actions, one of these 7 messages :

              Select / Show  in Selection
              Select / Show  in Marked text
              Select / Show  Before in Marked text
              Select / Show  After in Marked text
              Select / Show  in Whole Document
              Select / Show  Before in Whole Document
              Select / Show  After in Whole Document
              

              For the Find and Replace actions, one of these 6 messages :

              Find / Replace Forward in Selection
              Find / Replace Forward in Marked Text
              Find / Replace Forward in Whole Document
              Find / Replace Backward in Selection
              Find / Replace Backward in Marked Text
              Find / Replace Backward in Whole Document
              

              Notes :

              • Of course, you could, in one go, click first on the Define button, then click on the Run button

              • A simple click on any of these eight buttons, would allow to quickly verify their default configurations, as long as you press the Cancel button, right after !


              In other words, no more drop-down menus ! Instead, a new configuration dialog to confirm the default scope and extent values of the chosen action AND / OR the execution of the chosen action, with the present options checked in the scope and extent sections

              There are surely some drawbacks to my proposal ! Anyway, what’s your feeling about this radical change ?

              Best Regards,

              guy038

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

                @guy038 said:

                Personally, your concept of a default scope bothers me a little, because it’s hard for me to know, in advance, which actions will be automatically selected by the plugin !

                (It occurs to me that perhaps I should call it “adaptive” rather than “default” scope. Within the program code I called it “Smart,” but by the time I got the help and UI together I decided that word sounded too pretentious.)

                The uncertainty about what action a button will perform bothers me, too. I’m still trying to think of a way to mitigate that. I think the idea of an adaptive scope is useful, but I don’t like that you can’t confirm what actual command a button with adaptive (default) scope will perform at a glance, before clicking it.

                • You just show six one-letter buttons and two one-letter button for the replace actions, as below :
                    |F|  |C|  |A|  |S|  |M|  |H|    :    Find    Count    find All    Select    Mark    sHow
                
                    |R|  |A|                             Replace    replace All
                
                • All these simple-design buttons would open a common dialog box, in which the selected action — one of the eight possible options — would be already selected by default. This dialogue could be based on the table shown above !

                • Then, you’ll just have to check your present scope and extent choices for the chosen action

                • Optionally a message, summarizing everything that has just been selected, could be displayed

                • Then, this new dialog would end with three buttons :

                  • A Define button to attribute a default configuration ( scope and extent ) for the chosen action, without any execution.

                  • A Run button to start the chosen action, without any default configuration to apply to

                  • And, of course, a Cancel button, or an hit on the ESC key, to dismiss the chosen action

                In other words, no more drop-down menus ! Instead, a new configuration dialog to confirm the default scope and extent values of the chosen action AND / OR the execution of the chosen action, with the present options checked in the scope and extent sections

                There are surely some drawbacks to my proposal ! Anyway, what’s your feeling about this radical change ?

                At first I thought you meant every single action would require clicking a button, looking at a dialog to verify the options are what you want, then clicking a button in the dialog to actually do the action. What is now Find, Find, Find would become F, dialog opens, check defaults (change them if wrong and Define), Run, F, dialog opens, Run, F, dialog opens, Run. That would be way too much interruption of flow for a user doing simple things.

                • Of course, you could, in one go, click first on the Define button, then click on the Run button

                Since this implies that Define does not close the dialog, perhaps you also intend that Run does not close the dialog. That would allow for repetitive actions, at the expense of having this dialog (in addition to the main Search++ dialog) on the screen while doing them, and having to click another button to close it after the last or only action.

                I’m sorry, but it sounds to me as if it would be very clumsy to use. Dialogs are even more of an interruption than menus. It would also defeat the purpose of a docking dialog if another dialog has to be raised to actually do anything… unless it is also docking…

                In my opinion, the main buttons must do something that’s usually useful with a single click. To what degree that should be “adaptive” (e.g., in selection when there is a “large enough” selection) is debatable: adaptation increases the chance that you can do what you want with a single click, but also increases the chance that what a single click does won’t be what you expected.

                I think six buttons under the find box would be too busy, making it harder for the user to immediately identify and click the desired button. A busy layout doesn’t bother me as much with something like the Settings dialog (which, I admit, is horrible) that you don’t open often, but for something that’s meant to be used frequently, maybe even kept open in a docking panel, visual simplicity is important.

                For what it’s worth, you can get some aspects of your idea now. Just use Shift+click on each drop-down menu to choose a command that does not use default scope as the command for the button. Click the button when you want to Run what you already have set. If you want to Run a different command, select it from the drop-down. If you want to Define and Run a different command, Shift+click it in the drop-down. (There is no equivalent to Define without Run.)

                Additionally, in the Settings dialog you can uncheck Default commands automatically search within selections. and Default commands automatically search within marked text. to disable the adaptive mechanism, so that default scope is always Whole Document and even if you select a plain command (Find, Count, etc.) Search++ will never infer anything other than Whole Document.

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

                  Hello, @coises,

                  Preamble :

                  What prompted me to suggest another solution is that you seemed really frustrated with how your plugin works, since you said, among other things :

                  What bothers me is that before you click the button, it’s not obvious what the current default scope will be

                  and also :

                  I don’t like any of my ideas. (For that matter, I don’t like my scope and extent icons, either. The arrows are OK, but as for the rest, I tried everything I could come up with and I still think they’re obscure, confusing, ugly and hard to read.)

                  Even though I’ve been using Notepad++ for at least 15 years, I’m just a former retired technician with some knowledge of Unix and Microsoft QBasic. So, if I took the liberty of suggesting another solution, it was solely because of your own dissatisfaction !

                  Otherwise, I wouldn’t have written this post, since you’re surely better equipped to figure out how to improve your Search++ plugin !


                  That said, I’ll try to address some of your points. You said :

                  Dialogs are even more of an interruption than menus. It would also defeat the purpose of a docking dialog

                  Now that I think about it, I actually agree with you ! And, indeed, I forgot to consider the Docking dialog !

                  Now, regarding the mandatory buttons in this new dialog, we could, of course, add a Define and Run button.

                  Then, any of the four buttons Define, Run, Define and Run and Cancel would close that new dialog and run the chosen action if you have clicked on the Run or on the Define and Run button


                  Anyway, as you said, menus seem preferable. However, I still think that a layout with the six buttons Find, Count, Find All, Select, Mark and Show could be easier to use ( Personally, I’m ready to test a forked version, if you think it’s worth it )

                  This would simplify the number of menus :

                  • The Find, Count, and Replace All menus would stay unchanged

                  • I would suppress the last Do not jump to next match option, in the Replace menu as well as its sub-menu. To my mind, it’s rather a global way of searching which can be previously chosen in the Tools dialog with the Jump to next match after Replace option ( Ctrl + J )

                  Thus, a click on the Replace button would just show this menu :

                  -------------------------------------------
                  Replace
                  Replace backward
                  -------------------------------------------
                  Replace in Selection
                  Replace in Marked Text
                  Replace in Whole Document
                  -------------------------------------------
                  Replace Backward in Selection
                  Replace Backward in Marked Text
                  Replace Backward in Whole Documen
                  -------------------------------------------
                  
                  • A click on the new Find All button would only show this menu :
                  -------------------------------------------
                  Find All
                  Find All in Open Documents
                  Find All in Documents in this View
                  -------------------------------------------
                  Find All in Selection
                  -------------------------------------------
                  Find All in Marked Text
                  Find All Before in Marked Text
                  Find All After in Marked Text
                  Find All in Marked Text in Open Documents
                  Find All in Marked Text in this View
                  -------------------------------------------
                  Find All in Whole Document
                  Find All Before in Whole Document
                  Find All After in Whole Document
                  -------------------------------------------
                  
                  • A click on the Mark button would show this menu :
                  -------------------------------------------
                  Mark
                  Mark in Open Documents
                  Mark in Documents in this View
                  -------------------------------------------
                  Mark in Selection
                  -------------------------------------------
                  Mark in Marked Text
                  Mark Before in Marked Text
                  Mark After in Marked Text
                  Mark in Marked Text in Open Documents
                  Mark in Marked Text in this View
                  -------------------------------------------
                  Mark in Whole Document
                  Mark Before in Whole Document
                  Mark After in Whole Document
                  -------------------------------------------
                  
                  • A click on the Select button would show this menu :
                  -------------------------------------------
                  Select
                  -------------------------------------------
                  Select in Selection
                  -------------------------------------------
                  Select in Marked text
                  Select Before in Marked text
                  Select After in Marked text
                  -------------------------------------------
                  Select in Whole Document
                  Select Before in Whole Document
                  Select After in Whole Document
                  -------------------------------------------
                  
                  • A click on the Show button would show this menu :
                  -------------------------------------------
                  Show
                  -------------------------------------------
                  Show in Selection
                  -------------------------------------------
                  Show in Marked Text
                  Show Before in Marked Text
                  Show After in Marked Text
                  -------------------------------------------
                  Show in Whole Document
                  Show Before in Whole Document
                  Show After in Whole Document
                  -------------------------------------------
                  

                  You said, at the end of your post :

                  Additionally, in the Settings dialog you can uncheck Default commands automatically search within selections. and Default commands automatically search within marked text. to disable the adaptive mechanism, so that default scope is always Whole Document and even if you select a plain command (Find, Count, etc.) Search++ will never infer anything other than Whole Document.

                  But, even though I unckecked, both, the Default commands automatically search within selections and the Default commands automatically search within marked text options and valid the new settings with the OK button, after selected some text containing ONLY one occurrence of the search, the Count in Selection still give 1 match only and not the totality of the matches of the current file

                  Then, using the Add Selection to Marked Text option to mark all the selection raange ( Ctrl + M ), again, the Count in Marked Text returns 1 match, instead of the totality of the matches. Is this expected or a bug as the scope should be Whole Document ?

                  Best Regards,

                  guy038

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

                    Search++ version 0.7 is available:

                    • Use different styles for Mark and Show. This helps keep Mark and Show cleanly separated, and it makes Always hide all lines and remove Show style from text before Show command behave more as one would expect with the default scope Show command, without introducing an inconsistency with the way other default scope commands behave.

                    • Add several commands to the Tools menu, including support for the new Show style and more ability to manipulate Marked text. Some shortcuts have changed: most underlined menu characters and associated shortcut keys now match.

                    • Expand visible on the Tools menu gives a rudimentary ability to show context for matches when using the Show command. Each expand visible action adds a line to the beginning and end of each visible block of text.

                    • Add Find, Replace and Show tools to the main plugin menu. These commands are not very useful from the menu itself, but adding them makes it possible to set Notepad++ keyboard shortcuts for them.

                    • Correct a fault in Show All Lines from the Tools menu that caused unexpected scrolling behavior. Improve the logic for vertical positioning when using Show All Lines.

                    Comments, criticisms, bug reports and questions as to what the hell I could have been thinking are, as always, most welcome.


                    The biggest change in this release is making Show more useful. Since Show no longer “marks” text but uses a different style to highlight matches, I expect the two concepts to interfere less. Show now uses a second indicator (matched to the color of the selected show style) so that it can, with some limitations, show zero length matches.

                    Previously, the setting Always hide all lines and remove Show style from text before Show command did what it was designed to do, but the design wasn’t very good, because leftover marks from a previous Show still affected the scope of a subsequent default Show command. Separating the mark and show styles fixes that, so the setting now causes Show commands to clear the results of any previous show, as one would expect.

                    Another thing that inhibited the use of Show was that you had to use both Remove marks from active document and Show all lines from the Tools menu to clear the results of a Show, and Show all lines had an annoying bug that screwed up vertical positioning after you used it. That bug is fixed, and a new command, Clear show (show all and clear style), resets the effect of Show all at once.

                    I expanded the Tools menu with several new commands; how useful they all are can only be discovered from experience.

                    The new Expand visible command on the Tools menu works with Show to make it possible to see a list of matches with some context: each time you click Expand visible (or use the Ctrl+P shortcut) each block of visible text is expanded to include the line before it and the line after it.

                    The addition of Find and Replace on the main plugin menu makes it possible to set shortcuts for the stepwise search commands. If you don’t typically use Alt+F and Alt+R to access the File and Run menus in Notepad++, you might try assigning those as shortcuts for Search++ Find and Replace and checking Settings | Focus the document after stepwise Find or Replace commands. The result is that you can use Alt+F or Alt+R to begin a search, have keyboard focus go immediately to the document, then continue to use the same key combinations to move through matches in the document. (This is somewhat like the behavior of F3 in Notepad++.)

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

                      @guy038 said:

                      But, even though I unckecked, both, the Default commands automatically search within selections and the Default commands automatically search within marked text options and valid the new settings with the OK button, after selected some text containing ONLY one occurrence of the search, the Count in Selection still give 1 match only and not the totality of the matches of the current file

                      Then, using the Add Selection to Marked Text option to mark all the selection raange ( Ctrl + M ), again, the Count in Marked Text returns 1 match, instead of the totality of the matches. Is this expected or a bug as the scope should be Whole Document ?

                      The Default commands automatically… settings only affect commands with default scope. What happens when you uncheck one or both of those settings is that the commands with default scope:
                      Find
                      Find Backward
                      Count
                      Find All
                      Select
                      Mark
                      Show
                      Replace
                      Replace Backward
                      Replace All
                      pay no attention to whether there is a selection (if …within selections is unchecked) and/or marked text (if …within marked text is unchecked), and just search the whole document.

                      Commands that specify a scope, like Count in Selection or Count in Marked Text, still do what their name says they do.

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

                        @guy038 said:

                        What prompted me to suggest another solution is that you seemed really frustrated with how your plugin works,

                        I do appreciate your suggestions, even if I don’t immediately adopt them as written. Anything you can tell me that sheds light on your experience with the interface and how it seems like it should work can help me find new solutions.

                        Anyway, as you said, menus seem preferable. However, I still think that a layout with the six buttons Find, Count, Find All, Select, Mark and Show could be easier to use ( Personally, I’m ready to test a forked version, if you think it’s worth it )

                        This would simplify the number of menus :

                        I can see how splitting the Find All button into four buttons (one each for Find All, Select, Mark and Show) would make the interface simpler, in that it would get rid of the need for sub-menus on those buttons. (And as you’ve pointed out, the [Do not] Jump to next match sub-menu on Replace isn’t really needed.) I’m not convinced yet, but it’s not out of the question, either.

                        My “default scope” (or “adaptive scope”) notion is a kind of extension of Notepad++’s Settings | Preferences | Searching | Minimum Size for Auto-Checking “In selection”. Since the docking version of the Search++ dialog might rarely if ever be closed and reopened during a session (I leave it open all the time), just choosing the setting when the dialog opens wouldn’t be much help: I wanted something that adapts to changing conditions, but that the user can still override when necessary. And I wanted it to handle selections and marked text similarly. It’s meant to make it so that usually you can just click a button and have it do what you would want it to do.

                        1 Reply Last reply Reply Quote 0

                        Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                        Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                        With your input, this post could be even better 💗

                        Register Login
                        • First post
                          Last post
                        The Community of users of the Notepad++ text editor.
                        Powered by NodeBB | Contributors