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.3k 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

      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
        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
          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
                                            • First post
                                              Last post
                                            The Community of users of the Notepad++ text editor.
                                            Powered by NodeBB | Contributors