Community
    • Login

    Selecting Text With the Use of the Ctrl + Shift + Up/ Down Combination

    Scheduled Pinned Locked Moved Help wanted · · · – – – · · ·
    20 Posts 8 Posters 10.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.
    • Alan KilbornA
      Alan Kilborn @Neil Schipper
      last edited by

      @Neil-Schipper said in Selecting Text With the Use of the Ctrl + Shift + Up/ Down Combination:

      Paul’s point is that (old) Notepad.exe behaves differently…

      Ah, OK. I’m so used to people referring to N++ as “notepad” that I read what Paul wrote wrongly. I try to always write “notepad.exe” (like you did) when referring to Windows’ poor excuse for a text editor.

      1 Reply Last reply Reply Quote 2
      • Paul WormerP
        Paul Wormer @Neil Schipper
        last edited by

        @Neil-Schipper You summarized my point nicely and exactly.

        In addition I like to pose the question to Влад: how do you recognize a paragraph boundary, either in notepad.exe or in Npp? Is it twice a CRLF, or one CRLF followed by, say, 3 spaces? It is of course not <p> or </p> as in HTML, or \par as in LaTeX.

        1 Reply Last reply Reply Quote 0
        • PeterJonesP
          PeterJones @Влад Котенко
          last edited by PeterJones

          @Влад-Котенко said in Selecting Text With the Use of the Ctrl + Shift + Up/ Down Combination:

          The system’s default Notepad is also a text-editing program, and paragraphs can be selected in it with the use of the Ctrl + Shift + Up/Down combination

          Interestingly, in my Windows 10 notepad.exe at work, Ctrl+Shift+Up/Down and Ctrl+Up/Down do nothing. But when I was playing around last night at home on Windows 11, notepad.exe does respond to those combinations, similar to what you described… but not exactly. In that, what you called “start of paragraph” was always “start of current line”. If you have notepad.exe’s Word Wrap turned on, then one physical line (which wraps over multiple visible lines with Word Wrap on) would behave as you describe; but if I made a document of

          one example one example one example one example one example one example | one example one example one example one example
          
          two example two example two example two example two example two example two example | two example 
          
          three example will have a manual linebreak here
          and continues through the cursor | here
          

          … and put the caret at the | in two example, the Ctrl+Shift+Up would take you to the beginning of line starting with two. Similarly, if you put it in the | of cursor | here, it would take you to the beginning of and continues, not to the beginning of three example.

          So based on that, I think that “physical line that contains line wrap” is your definition of “paragraph”. So in Notepad++, running Shift+Home+Home (hold down shift, and hit Home twice) will select to the beginning of the current line from wherever you are in the wrapped line that you call a “paragraph”.

          PeterJonesP 1 Reply Last reply Reply Quote 0
          • PeterJonesP
            PeterJones @PeterJones
            last edited by PeterJones

            All,

            BTW, I hadn’t yet mentioned: I started a conversation with the Scintilla maintainers. (For those who don’t know, Scintilla is the name of the library that Notepad++ uses for handling things in the editor tab, including the moving the caret around and the Paragraph Up/Down commands and similar; so they are the ones who decide whether any behavior of the Paragraph Up/Down is a “bug” or not.)

            Scintilla’s definition of “Paragraph Up” is “move the caret up one physical line, then skip any blank lines, then keep going up while the current line is still non-empty”.

            This means, in my original picture

            … if you are on line 6, it will move back to line 5 and then stop, because line 4 is empty so it doesn’t move up to 4. But if you are anywhere on 3 (whether in the first visible line because of wrap or second visible line of wrap or whether wrap is off), it will go up one line first (to 2) then skip the blank line 2, and keep going up until it’s the top line of a group of non-empty lines (so goes up to the beginning of 1).

            The implication of the way the Scintilla library maintainer phrased his replies is that “Scintilla has been doing it this same way for years, and I’m not going to change it just because someone started complaining about it now.” So, unfortunately, the Scintilla library doesn’t look like it’s going to update that behavior. And since Notepad++ is not going to abandon Scintilla and “roll its own” for all the features that library implements, there is little-to-no chance that the paragraph-up behavior will change in Notepad++. Sorry.

            But like I said earlier, if all of your “paragraphs” are really one long line with word-wrap turned on, then you can use the select-to-beginning-of-line sequence instead of select-paragraph-up, and that will work as expected wherever you are in your paragraph.

            If your paragraphs are “mixed” (if you have multiple physical lines in one paragraph, but also have long lines wrapped), you can use the sequence of “select to beginning of line” first, then if it hasn’t selected to the top of what you consider the paragraph, use select-paragraph-up to get to the top of the multi-line paragraph. (So, from line 6’s |, the first would take you to the beginning of line 6, and the second would get you to the beginning of line 5.)

            PeterJonesP 1 Reply Last reply Reply Quote 2
            • Alan KilbornA
              Alan Kilborn
              last edited by Alan Kilborn

              So we can fix the “bad” Scintilla behavior with a little scripting. I think the following works to fix the “paragraph up extend” functionality. If anybody wants to try it, some instructions for setting up and running a script are HERE.

              # -*- coding: utf-8 -*-
              from __future__ import print_function
              
              # references:
              #  https://community.notepad-plus-plus.org/topic/23737
              #  https://sourceforge.net/p/scintilla/bugs/2363/
              
              from Npp import *
              import re
              
              #-------------------------------------------------------------------------------
              
              class T23737(object):
              
                  def __init__(self):
                      if editor.getSelections() > 1: return  # conditions not correct for running this script
                      sel_mode = editor.getSelectionMode()
                      rect_sel_mode = True if (sel_mode == SELECTIONMODE.RECTANGLE or sel_mode == SELECTIONMODE.THIN) else False
                      if rect_sel_mode: return  # conditions not correct for running this script
                      #self.para_up()
                      self.para_up_extend()
              
                  def para_up(self):
                      self.internal_para_up(False)
              
                  def para_up_extend(self):
                      self.internal_para_up(True)
              
                  def is_white_line(self, line_num):
                      return False if re.search(r'[^\t ]', editor.getLine(line_num).rstrip('\n\r')) else True
              
                  def internal_para_up(self, extend_sel):
                      curr_anchor, curr_pos = editor.getAnchor(), editor.getCurrentPos()
                      line_num = editor.lineFromPosition(curr_pos)
                      line_start_pos = editor.positionFromLine(line_num)
                      if curr_pos == line_start_pos or self.is_white_line(line_num):
                          line_num -= 1
                          while line_num >= 0 and self.is_white_line(line_num): line_num -= 1  # skip empty lines
                      while line_num >= 0 and not self.is_white_line(line_num): line_num -= 1  # skip non-empty lines
                      line_start_pos = editor.positionFromLine(line_num + 1)
                      editor.setSel(curr_anchor if extend_sel else line_start_pos, line_start_pos)  # arguments: anchor, caret
              
              #-------------------------------------------------------------------------------
              
              if __name__ == '__main__': T23737()
              

              Edit: minor tweaks to script after original post!

              Влад КотенкоВ 1 Reply Last reply Reply Quote 2
              • Alan KilbornA Alan Kilborn referenced this topic on
              • Влад КотенкоВ
                Влад Котенко @Alan Kilborn
                last edited by

                quotation: “The behavior of shift+ctrl+up seems to be locally defined (I presume that you are in country where cyrillic is the standard script). In my Western-European setting neither Notepad nor MS-Word jumps to the end of the paragraph. My Notepad doesn’t do anything when I hit shift+ctrl+up and MS-Word creates a stream block from the current caret position to the beginning of the paragraph.”
                The US version of Windows 11 is installed on my computer, and the primary keyboard language and layout are US English. I think that the Ctrl + Shift + Up/ Down shortcut functions in the same way in other versions. I did not know that it may function differently on some computers.
                quotation: “Have a good day:
                Triple click with the left mouse button also has that function.
                The idea of some keyboard shortcuts is to minimize the time it takes to get your hand to the mouse and then back to the keyboard.
                If it is to effectively avoid the use of the mouse for that single function, I haven’t said anything!.. :)
                I wish you success.”

                Yes, a triple click is a convenient way to make a selection quickly when one’s hand is currently on the mouse.
                But when the hands are on the keyboard, a shortcut is convenient.
                quotation: “In addition I like to pose the question to Влад: how do you recognize a paragraph boundary, either in notepad.exe or in Npp? Is it twice a CRLF, or one CRLF followed by, say, 3 spaces? It is of course not <p> or </p> as in HTML, or \par as in LaTeX.”
                I view a paragraph as a block of text which is preceded by a break at the beginning and followed by a break at the end. A paragraph occupies more than one line if the word wrap option is enabled. A break is made by pressing the Enter key.
                quotation: “So based on that, I think that “physical line that contains line wrap” is your definition of “paragraph”.”
                Yes, that is how I view paragraphs. The word wrap option is always enabled in my text-editing programs.
                quotation: “Scintilla’s definition of “Paragraph Up” is “move the caret up one physical line, then skip any blank lines, then keep going up while the current line is still non-empty”.
                …
                The implication of the way the Scintilla library maintainer phrased his replies is that “Scintilla has been doing it this same way for years, and I’m not going to change it just because someone started complaining about it now.” So, unfortunately, the Scintilla library doesn’t look like it’s going to update that behavior. And since Notepad++ is not going to abandon Scintilla and “roll its own” for all the features that library implements, there is little-to-no chance that the paragraph-up behavior will change in Notepad++. Sorry.”

                Thank you for the explanation. I will have to get accustomed to the different functioning of Notepad++.
                quotation: “So we can fix the “bad” Scintilla behavior with a little scripting. I think the following works to fix the “paragraph up extend” functionality. If anybody wants to try it, some instructions for setting up and running a script are HERE.”
                Thank you for writing the script. Since I have never added a piece of code, I will find out how to do this in order to use the script.

                1 Reply Last reply Reply Quote 0
                • PeterJonesP
                  PeterJones @PeterJones
                  last edited by

                  @PeterJones said in Selecting Text With the Use of the Ctrl + Shift + Up/ Down Combination:

                  I started a conversation with the Scintilla maintainers.
                  Scintilla’s definition of “Paragraph Up” [was] “move the caret up one physical line, then skip any blank lines, then keep going up while the current line is still non-empty”.

                  The good news is, they accepted it. Scintilla v5.3.2 uses the adjusted definition, so it won’t do the initial line-up under most circumstances: The new phrasing could be

                  Scintilla’s definition of “Paragraph Up” is “if the caret is at the start of the line then move the caret up one physical line, then no matter what skip any blank lines going up, then keep going up while the current line is still non-empty”.

                  Влад Котенко 2В Michael VincentM 2 Replies Last reply Reply Quote 2
                  • Влад Котенко 2В
                    Влад Котенко 2 @PeterJones
                    last edited by

                    @PeterJones said in Selecting Text With the Use of the Ctrl + Shift + Up/ Down Combination:

                    @PeterJones said in Selecting Text With the Use of the Ctrl + Shift + Up/ Down Combination:

                    I started a conversation with the Scintilla maintainers.
                    Scintilla’s definition of “Paragraph Up” [was] “move the caret up one physical line, then skip any blank lines, then keep going up while the current line is still non-empty”.

                    The good news is, they accepted it. Scintilla v5.3.2 uses the adjusted definition, so it won’t do the initial line-up under most circumstances: The new phrasing could be

                    Scintilla’s definition of “Paragraph Up” is “if the caret is at the start of the line then move the caret up one physical line, then no matter what skip any blank lines going up, then keep going up while the current line is still non-empty”.

                    Thank you for the update. I guess that it may take some time before any improvements in the functionality of the program are made.

                    1 Reply Last reply Reply Quote 0
                    • Michael VincentM
                      Michael Vincent @PeterJones
                      last edited by

                      @PeterJones said in Selecting Text With the Use of the Ctrl + Shift + Up/ Down Combination:

                      The good news is, they accepted it. Scintilla v5.3.2 uses the adjusted definition

                      The “better” news – Notepad++ may be upgrading soon again …

                      Cheers.

                      Michael VincentM 1 Reply Last reply Reply Quote 3
                      • Michael VincentM
                        Michael Vincent @Michael Vincent
                        last edited by

                        @Michael-Vincent said in Selecting Text With the Use of the Ctrl + Shift + Up/ Down Combination:

                        The “better” news – Notepad++ may be upgrading soon again …

                        @PeterJones
                        @Влад-Котенко-0

                        The “best” news - it will be in the next release. I downloaded the artifact and it seems to work as intended!

                        Cheers.

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