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 4.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.
    • Matthew AuM
      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
        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
          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
            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
              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
                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
                  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
                    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
                      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
                        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
                          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
                            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
                              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
                                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
                                  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
                                    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
                                      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
                                        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
                                        • Alan KilbornA
                                          Alan Kilborn @Michael Alden
                                          last edited by

                                          @Michael-Alden

                                          Thanks for your contribution.
                                          It is a Lua variation on @Michael-Vincent 's original NppExec solution.
                                          There hasn’t been a Pythonscript implementation, so I’ll add that now:

                                          editor.setEdgeMode(1)
                                          editor.setEdgeColumn(80)
                                          
                                          Michael VincentM 1 Reply Last reply Reply Quote 2
                                          • Michael VincentM
                                            Michael Vincent @Alan Kilborn
                                            last edited by Michael Vincent

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

                                            Pythonscript implementation

                                            And of course “PerlScript”:

                                                editor->setEdgeMode( $SC_EDGEMODE{EDGE_LINE} );
                                                editor->setEdgeColumn(80);
                                            

                                            Cheers.

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