Community
    • Login

    Column mode smart selection shortcut

    Scheduled Pinned Locked Moved General Discussion
    11 Posts 7 Posters 5.5k Views 2 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.
    • Alan KilbornA Offline
      Alan Kilborn @notdodgeball
      last edited by Alan Kilborn

      @notdodgeball said in Column mode smart selection shortcut:

      so I don’t have to press Alt+Shift that many times

      Well, there’s this that may help:

      dd2a3038-6b1d-49e2-bf82-e5c0f73338af-image.png

      User manual ref..

      1 Reply Last reply Reply Quote 3
      • notdodgeballN Offline
        notdodgeball
        last edited by

        Ok, my first python script:

        if editor.getSelectionEmpty():
        
          currentLine = editor.lineFromPosition(editor.getCurrentPos())
          currentLineLength = editor.lineLength(currentLine)
          currentLineStart = editor.positionFromLine(currentLine)
          
          currentPos = editor.getCurrentPos()
          currentHorizontalPos = currentPos - currentLineStart
          currentChar = editor.getTextRange(currentPos, currentPos + 1)
        
          for x in range(1, 69):
            previousLineStart = editor.positionFromLine(currentLine-x)
            previousLinelength = editor.lineLength(currentLine-x)
            
            if editor.lineLength(currentLine-x) < currentHorizontalPos:
              break
            
            previousLineSamePosition = previousLineStart + currentHorizontalPos
            previousChar = editor.getTextRange(previousLineSamePosition, previousLineSamePosition + 1)
        
            if currentChar != previousChar:
              break
            else:
              editor.addSelection(previousLineSamePosition,previousLineSamePosition)
        

        There is better ways to do it, I assume, but it worked so far. Please tell me if there is something outstandingly bad.

        Alan KilbornA Mark OlsonM 2 Replies Last reply Reply Quote 0
        • Alan KilbornA Offline
          Alan Kilborn @notdodgeball
          last edited by Alan Kilborn

          @notdodgeball said in Column mode smart selection shortcut:

          if there is something outstandingly bad

          Probably this is a leading candidate:

          69

          1 Reply Last reply Reply Quote 1
          • Mark OlsonM Offline
            Mark Olson @notdodgeball
            last edited by

            @notdodgeball
            To expand on why @Alan-Kilborn said the number 69 is “oustandingly bad”:

            It’s (usually) bad practice to include “magic numbers” like 69 in your code with no explanation as to why you chose that number. Better to declare a global constant (preferably with an explanatory comment) like so, and then reference it later on in the code:

            # I'm using a proprietary file format where every file has 69 lines
            MY_MAGIC_NUMBER = 69
            ...
            ...
            for x in range(1, MY_MAGIC_NUMBER):
            

            That may reduce your confusion weeks later when you stumble across this script and wonder what the hell it’s supposed to do.

            1 Reply Last reply Reply Quote 0
            • notdodgeballN Offline
              notdodgeball
              last edited by

              Yeah, I know, I thought putting it as 69 would make it clear but yes, you are right.

              Regardless, I was putting it into use and it’s actually worse than that. When the file has tabs, getCurrentPos() it does not line up as the position varies depending on the tabulation. How do circumvent it? I assume getColumn() might help looking at the docs. Hum…

              EkopalypseE 1 Reply Last reply Reply Quote 0
              • notdodgeballN Offline
                notdodgeball
                last edited by

                if editor.getSelectionEmpty():
                  
                  currentLine = editor.lineFromPosition(editor.getCurrentPos())
                  currentLineLength = editor.lineLength(currentLine)
                  currentPos = editor.getCurrentPos()
                  currentCol = editor.getColumn(currentPos)
                  currentLineStart = editor.positionFromLine(currentLine)
                  
                  currentHorizontalPos = currentPos - currentLineStart
                  currentRChar = editor.getTextRange(currentPos, currentPos + 1)
                  currentLChar = editor.getTextRange(currentPos, currentPos - 1)
                  
                  count = 0
                  while True:
                    
                    count += 1
                    previousLine = currentLine-count
                    previousLineStart = editor.positionFromLine(previousLine)
                    previousLineLength = editor.lineLength(previousLine)
                    previousPos = editor.findColumn(previousLine,currentCol)
                    previousCol = editor.getColumn(previousPos)
                    
                    previousRChar = editor.getTextRange(previousPos, previousPos + 1)
                    previousLChar = editor.getTextRange(previousPos, previousPos - 1)
                    
                    if currentRChar != previousRChar or currentLChar != previousLChar or previousCol != currentCol:
                      break
                    
                    editor.addSelection(previousPos,previousPos)
                
                
                1 Reply Last reply Reply Quote 0
                • EkopalypseE Offline
                  Ekopalypse @notdodgeball
                  last edited by

                  @notdodgeball said in Column mode smart selection shortcut:

                  I thought putting it as 69 would make it clear but yes

                  Shouldn’t that be 42 instead? ;-)

                  pbarneyP 1 Reply Last reply Reply Quote 4
                  • pbarneyP Offline
                    pbarney @Ekopalypse
                    last edited by

                    @Ekopalypse said in Column mode smart selection shortcut:

                    Shouldn’t that be 42 instead?

                    That just selects everything. And by “everything,” I mean everything: life, the universe, etc.

                    chdikie hensleyC 1 Reply Last reply Reply Quote 3
                    • chdikie hensleyC Offline
                      chdikie hensley @pbarney
                      last edited by

                      This post is deleted!
                      PeterJonesP 1 Reply Last reply Reply Quote 0
                      • PeterJonesP Offline
                        PeterJones @chdikie hensley
                        last edited by

                        This post is deleted!
                        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