Community
    • Login

    [v.7.8.6] Vertical Edge Settings no longer works with Split Lines (Ctrl-I)

    Scheduled Pinned Locked Moved Help wanted · · · – – – · · ·
    30 Posts 8 Posters 10.2k Views 1 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.
    • Matthew AuM Offline
      Matthew Au
      last edited by

      I use Vertical Edge Setting to set the col width to be 80. Then using Ctrl-I I can split long lines. This is a very useful feature.

      But this feature is broken in v.7.8.6.

      Was it a feature drop or bug?

      Michael VincentM dinkumoilD 2 Replies Last reply Reply Quote 0
      • Michael VincentM Online
        Michael Vincent @Matthew Au
        last edited by

        @Matthew-Au

        I believe it is an unintended consequence of the feature add of multiedge support : Preferences => Editing => Vertical Edge Settings.

        Vertical edge is now implemented always as SCI_MULTIEDGEADDLINE(), not as SCI_SETEDGEMODE() / SCI_SETEDGECOLUMN() as previously done. I understood that putting only 1 value in the text box should do the latter, but I have only 80 in that box (for a single vertical edge at column 80) and after N++ is launched, I use NppExec to query the edge mode and get back:

        SCI_SENDMSG SCI_GETEDGEMODE
        ================ READY ================
        ECHO $(MSG_RESULT)
        3
        

        Which you can see is Multiedge mode.

        I believe this is a “regression” bug where a new feature broke an existing operation. If I manually set to line mode at column 80:

        SCI_SENDMSG SCI_SETEDGEMODE EDGE_LINE
        ================ READY ================
        SCI_SENDMSG SCI_SETEDGECOLUMN 80
        

        Edit => Line Operations => Split Lines

        now works for me with long lines over 80 columns.

        Cheers.

        1 Reply Last reply Reply Quote 3
        • Matthew AuM Offline
          Matthew Au
          last edited by

          Thanks for reply. Can this issue be workaround via GUI? And shall I raise this as an issue in N++ Github?

          EkopalypseE Alan KilbornA Michael VincentM 3 Replies Last reply Reply Quote 1
          • EkopalypseE Offline
            Ekopalypse @Matthew Au
            last edited by Ekopalypse

            @Matthew-Au said in [v.7.8.6] Vertical Edge Settings no longer works with Split Lines (Ctrl-I):

            Can this issue be workaround via GUI?

            It seems choosing background mode is working, more or less, like you want.

            If this would be set to EDGE_LINE I assume it would cover previous and current feature set.

            1 Reply Last reply Reply Quote 1
            • Alan KilbornA Offline
              Alan Kilborn @Matthew Au
              last edited by

              @Matthew-Au said in [v.7.8.6] Vertical Edge Settings no longer works with Split Lines (Ctrl-I):

              And shall I raise this as an issue in N++ Github?

              I would say YES to this.

              1 Reply Last reply Reply Quote 1
              • Michael VincentM Online
                Michael Vincent @Matthew Au
                last edited by

                @Matthew-Au said in [v.7.8.6] Vertical Edge Settings no longer works with Split Lines (Ctrl-I):

                And shall I raise this as an issue in N++ Github

                Yes please. And reference / link this discussion please.

                @Matthew-Au said in [v.7.8.6] Vertical Edge Settings no longer works with Split Lines (Ctrl-I):

                Can this issue be workaround via GUI?

                I didn’t notice this because I use NppExec to run a startup script (as soon as N++ launches) and among other things, it force sets Edge Line mode and column 80. I added it after this new release that changed the way vertical edge was done. I hadn’t noticed your issue since I was always forcing Edge Line mode.

                Cheers.

                1 Reply Last reply Reply Quote 1
                • Matthew AuM Offline
                  Matthew Au
                  last edited by

                  @Ekopalypse Thanks, the “background mode” does the job (for now).

                  @Alan-Kilborn I’ve submitted a bug report here.

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

                    Hello, @matthew-au, @michael-Vincent, @ekopalypse and All,

                    I fully understand the problem ! In order to get the Split Lines feature to work, here is my work-around :

                    • Open the Settings > Preferences... > Editing > Vertical Edge Settings option

                    • If the window contains several column numbers, delete all these numbers

                    • Now, type in an unique column number where you want the lines to be splitted

                    • Tick the Background mode option ( IMPORTANT )

                    • If preferred, you can untick this option, immediately !

                    • Now the Ctrl + I feature should be fucntional, as soon as a selection have been made, whatever the Background or Line mode is chosen ;-))

                    • If you want, you may rewrite all your previous column numbers

                    • But, beware that any subsequent Ctrl + I operation will refer to the unique number noticed while ticking the Background mode option !!

                    Here is my debug info :

                    Notepad++ v7.8.6   (32-bit)
                    Build time : Apr 18 2020 - 22:32:17
                    Path : D:\@@\786\notepad++.exe
                    Admin mode : OFF
                    Local Conf mode : ON
                    OS Name : Microsoft Windows XP (32-bit) 
                    OS Build : 2600.0
                    Plugins : Explorer.dll mimeTools.dll NppConverter.dll NppExport.dll 
                    

                    Best Regards

                    guy038

                    Alan KilbornA EkopalypseE 2 Replies Last reply Reply Quote 2
                    • Alan KilbornA Offline
                      Alan Kilborn @guy038
                      last edited by

                      @guy038 said in [v.7.8.6] Vertical Edge Settings no longer works with Split Lines (Ctrl-I):

                      beware that any subsequent Ctrl + I operation will refer to the unique number noticed while ticking the Background mode option !!

                      Hidden feature!! :-)

                      1 Reply Last reply Reply Quote 0
                      • EkopalypseE Offline
                        Ekopalypse @guy038
                        last edited by

                        @guy038 but works only as long as you don’t restart npp, correct?

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

                          Hi, @matthew-au, @michael-Vincent, @ekopalypse, @alan-kilborn and All,

                          @ekopalypse, Ah yes ! As soon as I restarted Notepad++, it simply showed the two edge lines that I had previously set ( 30 and 60 )

                          However, remember that, by default, if no vertical setting or several vertical settings are set, then the CTRL + I feature splits lines, roughly, to the windows text width !

                          Cheers,

                          guy038

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

                            Hello, @matthew-au, @michael-Vincent, @ekopalypse, @alan-kilborn and All,

                            The last N++ v7.8.6 version now supports the new Vertical Multi-Edge lines feature. Unfortunately, as a consequence, this definitively breaks the native Split Lines feature ( Ctrl + I )

                            A work-around has been found but needs to choose one column number only and tick once on the Background mode option ! But this prevent you from easily using multiple vertical lines, which is a pity :-(

                            So, I imagined a regex S/R, that exactly simulates the N++ Split Lines feature ;-))

                            Just one constraint : If your text contains some tabulation chars, you must run, first, the Edit > BLank Operations > TAB to Space option, in order to change any tab character with the appropriate number of space chars. Indeed, the regex S/R assumes that each character displayed takes the place of exactly one character. !

                            The generic regex S/R, for any splitting column C is :

                            SEARCH (?-s)^(?=.{C})(.{1,C-3}\x20|.{C-1})\K

                            REPLACE \r\n    ( or \n if Unix files )

                            So, let’s suppose that you want to split text, at column C = 80. In that case, the regex S/R must be changed as below :

                            • SEARCH (?-s)^(?=.{80})(.{1,77}\x20|.{79})\K

                            • REPLACE \r\n    ( or \n if Unix files )

                            • Tick the Wrap around option

                            • Select the Regular expression search mode

                            • CLick on Replace All button, exclusively ( Do not use the Replace button ! )


                            After numerous tests, I verified that the split texts are strictly identical :

                            • Whatever the Split Lines option ( Ctrl + I ) or the Regex S/R is used

                            • Whatever the In selection option is set or not, in the Replace dialog

                            • Whatever the Line or Background mode is used, in Settings > Preferences... > Editing > Vertical Edge Settings

                            • Whatever the View > Word wrap option is set or not

                            • Whatever the View > Show Symbol > Show All Characters option is set or not

                            • Whatever the current font used is a MonoSpace or a Proportional font, in the Style Configurator...

                            In case of a proportional font, do not trust the visual vertical edge line, but rely on the real column, indicated in Settings > Preferences... > Editing > Vertical Edge Settings ! BTW, the Line mode is generally recommended for monospace fonts and the Background mode should be preferred for proportional fonts !


                            As a test, we’ll simply use the License.txt file and split its contents at column 80 :

                            • First of all, make sure that the single number 80 is shown in Settings > Preferences... > Editing > Vertical Edge Settings

                            • Copy the License.txt file in two new tabs ( new 1 and new 2 )

                            • In the new 1 file :

                              • Ctrl + A

                              • Ctrl + I ( Split Lines option )

                            • In the new 2 file :

                              • Open the Replace dialog ( Ctrl + H )

                                • SEARCH (?-s)^(?=.{80})(.{1,77}\x20|.{79})\K

                                • REPLACE \r\n    ( or \n if Unix files )

                                • Tick the Wrap around option

                                • Select the Regular expression search mode

                                • Click on Replace All button, exclusively ( Do not use the Replace button ! )

                            • Now, compare the two tabs with, for instance, the Compare plugin or with an external compare tool => The two tabs should be strictly identical ;-))

                            Remark : Of course, this regex S/R supposed that the splitting vertical line was at position 80. So, adapt the generic regex, above, according to the real column needed !

                            Best Regards,

                            guy038

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

                              Seems to be relevant to this current discussion: https://github.com/notepad-plus-plus/notepad-plus-plus/issues/7814

                              1 Reply Last reply Reply Quote 2
                              • Alan KilbornA Offline
                                Alan Kilborn @guy038
                                last edited by

                                @guy038

                                Any reason for the capturing group usage?:

                                0389f62c-6ef5-4e32-b7c0-646a2b3ef5ff-image.png

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

                                  Hi, @alan-kilborn and All,

                                  You’re perfectly right about it : No need of a capturing group for that purpose ! So, the generic search regex can be changed as below :

                                  SEARCH (?-s)^(?=.{C})(?:.{1,C-3}\x20|.{C-1})\K

                                  And the corresponding search regex for C = 80 is :

                                  SEARCH (?-s)^(?=.{80})(?:.{1,77}\x20|.{79})\K

                                  Indeed, although the maximum of characters, caught in group 1, not exceeds, either, C-2 or C-1 chars, the fact of using a non-capturing group should speed up the replacement process, in case of huge files !

                                  Cheers,

                                  guy038

                                  1 Reply Last reply Reply Quote 2
                                  • Patrick SheppardP Offline
                                    Patrick Sheppard
                                    last edited by

                                    Not sure this is worth a new thread … I used the following NppExec / Scintilla script to set the vertical edge column to the current column (super useful in my usage). It is now broken. Any recommendations for how to fix is appreciated. I did try what I thought was the obvious update and it didn’t work…

                                    ::NPXEdgeColumSetToCurrent
                                    NPP_CONSOLE ?
                                    SCI_SENDMSG SCI_SETEDGECOLUMN $(CURRENT_COLUMN)

                                    Michael VincentM 1 Reply Last reply Reply Quote 1
                                    • Michael VincentM Online
                                      Michael Vincent @Patrick Sheppard
                                      last edited by

                                      @Patrick-Sheppard said in [v.7.8.6] Vertical Edge Settings no longer works with Split Lines (Ctrl-I):

                                      It is now broken

                                      What version of Notepad++ - please post your debug info (menu ? => Debug Info…). I’ll assume you’re using the new 7.8.6 version as that is an easy fix. As of N++ 7.8.6, the vertical edge mode changed to multiedge by default so you can add multiple edges. You can try:

                                      SCI_SENDMSG SCI_GETEDGEMODE
                                      ================ READY ================
                                      ECHO $(MSG_RESULT)
                                      1
                                      

                                      to verify. I’m assuming you’ll get back “3” as in EDGE_MULTILINE. You can modify your script to be:

                                      ::NPXEdgeColumSetToCurrent
                                      NPP_CONSOLE ?
                                      SCI_SENDMSG SCI_SETEDGEMODE EDGE_LINE
                                      SCI_SENDMSG SCI_SETEDGECOLUMN $(CURRENT_COLUMN)
                                      

                                      Cheers.

                                      1 Reply Last reply Reply Quote 4
                                      • Patrick SheppardP Offline
                                        Patrick Sheppard
                                        last edited by

                                        Thanks, Michael.

                                        I had downgraded to 7.8.5 because of this issue and was reluctant to jump back up, but I just did and your modification works a charm.

                                        Appreciated.

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

                                          Hello, @matthew-au, @i-neuw, @michael-Vincent, @ekopalypse, @alan-kilborn, @peterjones, @terry-r and All,

                                          I revisited my previous posts of that discussion about the new Vertical Multi-Edge lines feature !

                                          First, when I said :

                                          A work-around has been found but needs to choose one column number only and tick once on the Background mode option !

                                          I want to insist that the fact of ticking on the Background mode option, then unticking it, is needed to update the sole edge boundary value, displayed ! Even with the last 7.9.0 N++ version, this step is necessary !


                                          Now, I did some additional tests, on, both, the final version of my regex and the native Split Lines N++ feature ( Ctrl + I ), using the license.txt file !

                                          • Using my regex S/R method, to split the lines, we get the same result :

                                            • Whatever the Line or Background mode is used, in Settings > Preferences... > Editing > Vertical Edge Settings

                                            • Whatever the View > Word wrap option is set or not

                                            • Whatever the View > Show Symbol > Show All Characters option is set or not

                                            • Whatever the current font used is a MonoSpaced or a Proportional font, in the Style Configurator...

                                          provided that you previously ran the Edit > BLank Operations > TAB to Space option if your file contains some TAB characters !


                                          • Using the native Edit > Line Operations > Split Lines feature, we get the same result

                                            • Whatever the Line or Background mode is used, in Settings > Preferences... > Editing > Vertical Edge Settings

                                            • Whatever the View > Word wrap option is set or not


                                          But, unlike what I said in my first post, the results of the Ctrl + I feature are totally different depending on whether :

                                          • The View > Show Symbol > Show All Characters option is set or not

                                          • The current font used is a Monospaced or a Proportional font, in the Style Configurator...


                                          So, regarding my previous argumentation, my regex method and the native Split Lines N++ feature give the same results ONLY IF :

                                          • A monospaced font is currently used

                                          • The EOL symbol ( CRLF ) is not displayed

                                          • The column number is superior to a minimum of about 15 for normal text. When I say “normal”, I refer, for instance, to the license.txt text, from line 28 GNU GENERAL PUBLIC LICENSE Version 2, June 1991 till the end of file !

                                          Note also that, with these hypotheses, the splitting operation of a selection of lines with, both, the regex S/R and the native Split Lines feature gives the same text contents !


                                          IMPORTANT : My regex S/R is built in order to exactly replace the native Split Lines N++ feature, with the hypotheses above. But, of course, you may decide to not follow this rule and use, instead, a more simple search regex as, for instance :

                                          SEARCH (?-s)^.{75,}?\K\x20+

                                          REPLACE \r\n

                                          which would split lines, roughly, after 80 characters

                                          Best Regards,

                                          guy038

                                          1 Reply Last reply Reply Quote 2
                                          • Michael AldenM Offline
                                            Michael Alden
                                            last edited by Michael Alden

                                            Posting this in case it’s useful to anyone else. I worked around this issue using this plugin: dail8859/LuaScript: Notepad++ plugin for Lua scripting capabilities. Specifically, I added this code to my Lua startup script.

                                            -- Lua function for Scintilla colors
                                            local function RGB(red, green, blue)
                                                return red | green << 8 | blue << 16
                                            end
                                            
                                            -- Teal color value same as default used in Notepad++
                                            local COLOR_TEAL = RGB(128, 255, 255)
                                            
                                            -- Set line mode to EDGE_Line at 80 characters with teal color
                                            npp.SendEditor(SCI_SETEDGEMODE, EDGE_LINE)
                                            npp.SendEditor(SCI_SETEDGECOLUMN, 80)
                                            npp.SendEditor(SCI_SETEDGECOLOUR, COLOR_TEAL)
                                            

                                            So, every time Notepad++ starts it resets the column marker. This has the same affect as if one were to toggle the “Background mode” setting.

                                            Alan KilbornA 1 Reply Last reply Reply Quote 2

                                            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