Community
    • Login

    Feature request: Modify Lines dialog for adding prefix/suffix to lines

    Scheduled Pinned Locked Moved General Discussion
    6 Posts 2 Posters 2.8k 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.
    • SuperCPUS
      SuperCPU
      last edited by SuperCPU

      I am using Notepad2 too and I find the Modify Lines dialogue very useful since I’m using it a lot.
      “Edit -> Block -> Modify Lines…”

      You can use it to quickly add a prefix or suffix (or both) to the selected lines. Very useful stuff indeed.

      I would like to place a feature request to implement this, if not in the main Notepad++ program, then in a plugin.

      Scott SumnerS 1 Reply Last reply Reply Quote 0
      • SuperCPUS
        SuperCPU
        last edited by

        Here’s a screenshot with this dialog:
        http://oi65.tinypic.com/33asdht.jpg
        OR
        http://es.tinypic.com/r/33asdht/9

        1 Reply Last reply Reply Quote 0
        • Scott SumnerS
          Scott Sumner @SuperCPU
          last edited by Scott Sumner

          So in Notepad++ there are at least a couple of ways to prefix a block of lines:

          #1

          • get a column caret (a zero-width rectangular selection) in column 1 (some ways to do it: Alt+Shift+arrows, Alt+Lclick+drag with mouse, there are others…)

          • type the text you want…it is added at the start of every line

          #2

          • do a regular expression replacement for ^ with the text you want to prefix every line with

          There are also a few ways to add a suffix, one is native and one uses a plugin:

          #1

          • do a regular expression replacement for $ with the text you want to suffix every line with

          #2

          • get a column caret (a zero-width rectangular selection) in column 1 and, using the Better Multiselection plugin press the End key – you will now have a caret at the end of each line and you can go ahead and type or paste your desired text

          Anyway, here’s how to do a proper Feature Request: https://notepad-plus-plus.org/community/topic/15741/faq-desk-feature-request

          1 Reply Last reply Reply Quote 3
          • SuperCPUS
            SuperCPU
            last edited by

            Thanks for your reply.
            Indeed, it is possible to add suffix/suffix in other ways.
            But it’s simply much faster to just push a hotkey (Alt+M in this case) and do introduce the values for the prefix and the suffix. It’s increasing the productivity a lot.

            Thanks for pointing to the right direction for filling feature requests.
            But maybe I’ll post my suggestions here first and only after that in the issues-sf sub-forum.

            Scott SumnerS 1 Reply Last reply Reply Quote 0
            • Scott SumnerS
              Scott Sumner @SuperCPU
              last edited by

              @SuperCPU

              I forgot to mention a #3 for both prefixing / suffixing: You could script this behavior with one of the scripting plugins.

              I wish you Good Luck with your feature request.

              1 Reply Last reply Reply Quote 2
              • Scott SumnerS
                Scott Sumner
                last edited by Scott Sumner

                Here’s an example of a scripting-based solution, with Pythonscript.

                When you run the script, it walks you through your choices to get the job done:

                Step A:
                Imgur

                Step B:
                Imgur

                Step C:
                Imgur

                Here’s the short script, which I call PrefixOrSuffixLines.py:

                def POSL__main():
                
                    title = 'MODIFY LINES - Prefix or Suffix'
                
                    result = notepad.messageBox(
                        'PREFIX {} lines (the alternative being to SUFFIX ) ?'.format('all' if editor.getSelectionEmpty() else 'selected'),
                        title,
                        MESSAGEBOXFLAGS.YESNOCANCEL
                        )
                    if result == MESSAGEBOXFLAGS.RESULTYES:
                        prefix_or_suffix = 'pre'
                    elif result == MESSAGEBOXFLAGS.RESULTNO:
                        prefix_or_suffix = 'suf'
                    else:
                        return
                
                    result = notepad.messageBox(
                        'Apply {}fixing to EMPTY lines ?'.format(prefix_or_suffix),
                        title,
                        MESSAGEBOXFLAGS.YESNOCANCEL
                        )
                    if result == MESSAGEBOXFLAGS.RESULTYES:
                        do_empty_lines = True
                    elif result == MESSAGEBOXFLAGS.RESULTNO:
                        do_empty_lines = False
                    else:
                        return
                
                    user_text = notepad.prompt(
                        'TEXT to {}fix all {}lines with:'.format(prefix_or_suffix, '' if do_empty_lines else 'non-empty '),
                        title,
                        ''  # have input box start out empty
                        )
                    if user_text == None: return
                
                    editor.rereplace(r'(?-s)^(.' + ('*' if do_empty_lines else '+') + ')',
                        lambda m: (user_text + m.group(1)) if prefix_or_suffix == 'pre' else (m.group(1) + user_text),
                        0,
                        editor.positionFromLine(editor.getUserLineSelection()[0]),
                        editor.positionFromLine(editor.getUserLineSelection()[1])
                        )
                
                POSL__main()
                
                1 Reply Last reply Reply Quote 2
                • First post
                  Last post
                The Community of users of the Notepad++ text editor.
                Powered by NodeBB | Contributors