• Login
Community
  • Login

Hide comments mode

Scheduled Pinned Locked Moved General Discussion
11 Posts 5 Posters 4.6k 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.
  • А
    Александр Хренников
    last edited by Jan 5, 2019, 12:34 AM

    Hello, does NPP have a hotkey to hide all comments and empty lines? It could be very useful. For example,

    #################################################
    # Sample OpenVPN 2.0 config file for            #
    # multi-client server.                          #
    #                                               #
    # This file is for the server side              #
    # of a many-clients <-> one-server              #
    # OpenVPN configuration.                        #
    #                                               #
    # OpenVPN also supports                         #
    # single-machine <-> single-machine             #
    # configurations (See the Examples page         #
    # on the web site for more info).               #
    #                                               #
    # This config should work on Windows            #
    # or Linux/BSD systems.  Remember on            #
    # Windows to quote pathnames and use            #
    # double backslashes, e.g.:                     #
    # "C:\\Program Files\\OpenVPN\\config\\foo.key" #
    #                                               #
    # Comments are preceded with '#' or ';'         #
    #################################################
    
    # Which local IP address should OpenVPN
    # listen on? (optional)
    ;local a.b.c.d
    
    # Which TCP/UDP port should OpenVPN listen on?
    # If you want to run multiple OpenVPN instances
    # on the same machine, use a different port
    # number for each one.  You will need to
    # open up this port on your firewall.
    port 1194
    
    # TCP or UDP server?
    ;proto tcp
    proto udp
    
    # "dev tun" will create a routed IP tunnel,
    # "dev tap" will create an ethernet tunnel.
    # Use "dev tap0" if you are ethernet bridging
    # and have precreated a tap0 virtual interface
    # and bridged it with your ethernet interface.
    # If you want to control access policies
    # over the VPN, you must create firewall
    # rules for the the TUN/TAP interface.
    # On non-Windows systems, you can give
    # an explicit unit number, such as tun0.
    # On Windows, use "dev-node" for this.
    # On most systems, the VPN will not function
    # unless you partially or fully disable
    # the firewall for the TUN/TAP interface.
    ;dev tap
    dev tun
    
    # Windows needs the TAP-Win32 adapter name
    # from the Network Connections panel if you
    # have more than one.  On XP SP2 or higher,
    # you may need to selectively disable the
    # Windows firewall for the TAP adapter.
    # Non-Windows systems usually don't need this.
    ;dev-node MyTap
    
    # SSL/TLS root certificate (ca), certificate
    # (cert), and private key (key).  Each client
    # and the server must have their own cert and
    # key file.  The server and all clients will
    # use the same ca file.
    #
    # See the "easy-rsa" directory for a series
    # of scripts for generating RSA certificates
    # and private keys.  Remember to use
    # a unique Common Name for the server
    # and each of the client certificates.
    #
    # Any X509 key management system can be used.
    # OpenVPN can also use a PKCS #12 formatted key file
    # (see "pkcs12" directive in man page).
    ca ca.crt
    cert server.crt
    key server.key  # This file should be kept secret
    
    # Diffie hellman parameters.
    # Generate your own with:
    #   openssl dhparam -out dh2048.pem 2048
    dh dh2048.pem
    
    # Network topology
    # Should be subnet (addressing via IP)
    # unless Windows clients v2.0.9 and lower have to
    # be supported (then net30, i.e. a /30 per client)
    # Defaults to net30 (not recommended)
    ;topology subnet
    
    # Configure server mode and supply a VPN subnet
    # for OpenVPN to draw client addresses from.
    # The server will take 10.8.0.1 for itself,
    # the rest will be made available to clients.
    # Each client will be able to reach the server
    # on 10.8.0.1. Comment this line out if you are
    # ethernet bridging. See the man page for more info.
    server 10.8.0.0 255.255.255.0
    
    # Maintain a record of client <-> virtual IP address
    # associations in this file.  If OpenVPN goes down or
    # is restarted, reconnecting clients can be assigned
    # the same virtual IP address from the pool that was
    # previously assigned.
    ifconfig-pool-persist ipp.txt
    
    # Configure server mode for ethernet bridging.
    # You must first use your OS's bridging capability
    # to bridge the TAP interface with the ethernet
    # NIC interface.  Then you must manually set the
    # IP/netmask on the bridge interface, here we
    # assume 10.8.0.4/255.255.255.0.  Finally we
    # must set aside an IP range in this subnet
    # (start=10.8.0.50 end=10.8.0.100) to allocate
    # to connecting clients.  Leave this line commented
    # out unless you are ethernet bridging.
    ;server-bridge 10.8.0.4 255.255.255.0 10.8.0.50 10.8.0.100
    
    # Configure server mode for ethernet bridging
    # using a DHCP-proxy, where clients talk
    # to the OpenVPN server-side DHCP server
    # to receive their IP address allocation
    # and DNS server addresses.  You must first use
    # your OS's bridging capability to bridge the TAP
    # interface with the ethernet NIC interface.
    # Note: this mode only works on clients (such as
    # Windows), where the client-side TAP adapter is
    # bound to a DHCP client.
    ;server-bridge
    
    # Push routes to the client to allow it
    # to reach other private subnets behind
    # the server.  Remember that these
    # private subnets will also need
    # to know to route the OpenVPN client
    # address pool (10.8.0.0/255.255.255.0)
    # back to the OpenVPN server.
    ;push "route 192.168.10.0 255.255.255.0"
    ;push "route 192.168.20.0 255.255.255.0"
    
    # To assign specific IP addresses to specific
    # clients or if a connecting client has a private
    # subnet behind it that should also have VPN access,
    # use the subdirectory "ccd" for client-specific
    # configuration files (see man page for more info).
    
    # EXAMPLE: Suppose the client
    # having the certificate common name "Thelonious"
    # also has a small subnet behind his connecting
    # machine, such as 192.168.40.128/255.255.255.248.
    # First, uncomment out these lines:
    ;client-config-dir ccd
    ;route 192.168.40.128 255.255.255.248
    # Then create a file ccd/Thelonious with this line:
    #   iroute 192.168.40.128 255.255.255.248
    # This will allow Thelonious' private subnet to
    # access the VPN.  This example will only work
    # if you are routing, not bridging, i.e. you are
    # using "dev tun" and "server" directives.
    
    # EXAMPLE: Suppose you want to give
    # Thelonious a fixed VPN IP address of 10.9.0.1.
    # First uncomment out these lines:
    ;client-config-dir ccd
    ;route 10.9.0.0 255.255.255.252
    # Then add this line to ccd/Thelonious:
    #   ifconfig-push 10.9.0.1 10.9.0.2
    
    # Suppose that you want to enable different
    # firewall access policies for different groups
    # of clients.  There are two methods:
    # (1) Run multiple OpenVPN daemons, one for each
    #     group, and firewall the TUN/TAP interface
    #     for each group/daemon appropriately.
    # (2) (Advanced) Create a script to dynamically
    #     modify the firewall in response to access
    #     from different clients.  See man
    #     page for more info on learn-address script.
    ;learn-address ./script
    
    # If enabled, this directive will configure
    # all clients to redirect their default
    # network gateway through the VPN, causing
    # all IP traffic such as web browsing and
    # and DNS lookups to go through the VPN
    # (The OpenVPN server machine may need to NAT
    # or bridge the TUN/TAP interface to the internet
    # in order for this to work properly).
    ;push "redirect-gateway def1 bypass-dhcp"
    
    # Certain Windows-specific network settings
    # can be pushed to clients, such as DNS
    # or WINS server addresses.  CAVEAT:
    # http://openvpn.net/faq.html#dhcpcaveats
    # The addresses below refer to the public
    # DNS servers provided by opendns.com.
    ;push "dhcp-option DNS 208.67.222.222"
    ;push "dhcp-option DNS 208.67.220.220"
    
    # Uncomment this directive to allow different
    # clients to be able to "see" each other.
    # By default, clients will only see the server.
    # To force clients to only see the server, you
    # will also need to appropriately firewall the
    # server's TUN/TAP interface.
    ;client-to-client
    
    # Uncomment this directive if multiple clients
    # might connect with the same certificate/key
    # files or common names.  This is recommended
    # only for testing purposes.  For production use,
    # each client should have its own certificate/key
    # pair.
    #
    # IF YOU HAVE NOT GENERATED INDIVIDUAL
    # CERTIFICATE/KEY PAIRS FOR EACH CLIENT,
    # EACH HAVING ITS OWN UNIQUE "COMMON NAME",
    # UNCOMMENT THIS LINE OUT.
    ;duplicate-cn
    
    # The keepalive directive causes ping-like
    # messages to be sent back and forth over
    # the link so that each side knows when
    # the other side has gone down.
    # Ping every 10 seconds, assume that remote
    # peer is down if no ping received during
    # a 120 second time period.
    keepalive 10 120
    
    # For extra security beyond that provided
    # by SSL/TLS, create an "HMAC firewall"
    # to help block DoS attacks and UDP port flooding.
    #
    # Generate with:
    #   openvpn --genkey --secret ta.key
    #
    # The server and each client must have
    # a copy of this key.
    # The second parameter should be '0'
    # on the server and '1' on the clients.
    ;tls-auth ta.key 0 # This file is secret
    
    # Select a cryptographic cipher.
    # This config item must be copied to
    # the client config file as well.
    # Note that 2.4 client/server will automatically
    # negotiate AES-256-GCM in TLS mode.
    # See also the ncp-cipher option in the manpage
    cipher AES-256-CBC
    
    # Enable compression on the VPN link and push the
    # option to the client (2.4+ only, for earlier
    # versions see below)
    ;compress lz4-v2
    ;push "compress lz4-v2"
    
    # For compression compatible with older clients use comp-lzo
    # If you enable it here, you must also
    # enable it in the client config file.
    ;comp-lzo
    
    # The maximum number of concurrently connected
    # clients we want to allow.
    ;max-clients 100
    
    # It's a good idea to reduce the OpenVPN
    # daemon's privileges after initialization.
    #
    # You can uncomment this out on
    # non-Windows systems.
    ;user nobody
    ;group nobody
    
    # The persist options will try to avoid
    # accessing certain resources on restart
    # that may no longer be accessible because
    # of the privilege downgrade.
    persist-key
    persist-tun
    
    # Output a short status file showing
    # current connections, truncated
    # and rewritten every minute.
    status openvpn-status.log
    
    # By default, log messages will go to the syslog (or
    # on Windows, if running as a service, they will go to
    # the "\Program Files\OpenVPN\log" directory).
    # Use log or log-append to override this default.
    # "log" will truncate the log file on OpenVPN startup,
    # while "log-append" will append to it.  Use one
    # or the other (but not both).
    ;log         openvpn.log
    ;log-append  openvpn.log
    
    # Set the appropriate level of log
    # file verbosity.
    #
    # 0 is silent, except for fatal errors
    # 4 is reasonable for general usage
    # 5 and 6 can help to debug connection problems
    # 9 is extremely verbose
    verb 3
    
    # Silence repeating messages.  At most 20
    # sequential messages of the same message
    # category will be output to the log.
    ;mute 20
    
    # Notify the client that when the server restarts so it
    # can automatically reconnect.
    explicit-exit-notify 1
    

    will change to

    port 1194
    proto udp
    dev tun
    ca ca.crt
    cert server.crt
    key server.key  # This file should be kept secret
    dh dh2048.pem
    server 10.8.0.0 255.255.255.0
    ifconfig-pool-persist ipp.txt
    keepalive 10 120
    cipher AES-256-CBC
    persist-key
    persist-tun
    status openvpn-status.log
    verb 3
    explicit-exit-notify 1
    

    which is much better readable.

    Alan KilbornA 1 Reply Last reply Jan 5, 2019, 2:10 AM Reply Quote 0
    • PeterJonesP
      PeterJones
      last edited by Jan 5, 2019, 12:59 AM

      That feature doesn’t exist natively, as far as I know.

      You can add a feature request, per the instructions in the FAQ – make sure you search the existing issues, to make sure you aren’t duplicating an existing request.

      There might be a workaround, using PythonScript or similar automation tool, but I cannot immediately see how to easily do that. If you’d like a workaround like that, speak up, and maybe someone here will find the time to ponder that.

      1 Reply Last reply Reply Quote 0
      • Alan KilbornA
        Alan Kilborn @Александр Хренников
        last edited by Jan 5, 2019, 2:10 AM

        @Александр-Хренников

        Notepad++/Scintilla has a hide/unhide lines feature, but it doesn’t work very well (has inconsistencies). @Claudia-Frank was working on a Pythonscript-based replacement a while ago, but she seems to have departed us for greener pastures. :)

        Still, @PeterJones is on the right track–something could be done to make this a reality. Note that as you’ve defined it, it would only work for full line comments, not partial line comments.

        1 Reply Last reply Reply Quote 0
        • guy038G
          guy038
          last edited by guy038 Jan 5, 2019, 1:21 PM Jan 5, 2019, 1:16 PM

          Hello, @александр-хренников, @peterjones, @alan-kilborn and All,

          I’m thinking of two possible work-arounds :

          First solution :

          You could create a simple Python or Lua script which pastes your code in a new tab, then executes, in the new tab’s text, the regex search/replacement, below :

          SEARCH (?-s)^(\h*[#;].*|\h*)\R

          REPLACE Leave EMPTY

          which just gives your expected text :

          port 1194
          proto udp
          dev tun
          ca ca.crt
          cert server.crt
          key server.key  # This file should be kept secret
          dh dh2048.pem
          server 10.8.0.0 255.255.255.0
          ifconfig-pool-persist ipp.txt
          keepalive 10 120
          cipher AES-256-CBC
          persist-key
          persist-tun
          status openvpn-status.log
          verb 3
          explicit-exit-notify 1
          

          Obviously, no code modification could be done, in the new tab ,only visualization !


          Second solution :

          • Run the regex search/replacement, below, in your real code file :

          SEARCH (?-s)^(\h*[#;].*|\h*)\R

          REPLACE Leave EMPTY

          • In this condensed code, bookmark some parts of your code, that you’re interesting in, for later modifications

          • Performs a Ctrl+Z operation to restore the original contents of your code

          • From beginning of file, press the F2 or Shift + F2 shortcuts to navigate throughout these bookmarks ( which are kept ! ) and modify your code just as you want to ;-))

          Best Regards,

          guy038

          Eko palypseE 1 Reply Last reply Jan 5, 2019, 1:43 PM Reply Quote 2
          • Eko palypseE
            Eko palypse @guy038
            last edited by Jan 5, 2019, 1:43 PM

            @guy038 said:

            (?-s)^(\h*[#;].|\h)\R

            if you could find a regex which results in a block instead of returning each line then
            we could use something like editor.research and editor.hideLines to make this work.
            What do you think?

            1 Reply Last reply Reply Quote 0
            • Eko palypseE
              Eko palypse
              last edited by Jan 5, 2019, 1:54 PM

              the reason for asking matching a block is because this

              def hideLine(match):
                  line = editor.lineFromPosition(match.span()[0])
                  editor.hideLines(line,line)
                  
              editor.research(r'(?-s)^(\h*[#;].*|\h*)\R', hideLine)
              

              does work but is somehow slow.

              1 Reply Last reply Reply Quote 1
              • guy038G
                guy038
                last edited by guy038 Jan 5, 2019, 3:20 PM Jan 5, 2019, 3:16 PM

                Hi, @александр-хренников, @peterjones, @alan-kilborn, @eko-palypse and All,

                Ah, OK, I understand ! I should have found it, directly :-(

                So, my second attempt would be :

                SEARCH (?-s)(^\h*(?:[#;].*|)\R)(?1)*

                REPLACE Leave EMPTY

                This new formulation decrease, drastically, the number of replacements ;-)) From 301 to 13, in our example !


                REMARK : Do note the difference between :

                • (?1) which is a routine call to the referenced group 1 itself ( ^\h*(?:[#;].*|)\R )

                • \1 which is a back-reference to the present value of group 1

                For instance :

                • The regex (\d\d\d)(?1)* would match any range of digits, which is a multiple of 3, where as :

                • The regex (\d\d\d)\1* would just match any range of 3 digits, possibly repeated

                Just test these two regexes, against text below :

                123123123          # 123, repeated 3 times
                123456789          # digits from 1 to 9
                123456456          # 123, followed with 456, twice
                123123123123123    # 123, repeated 5 times
                12345601234567890  # '123456' + '1234567890' ( 17 digits )
                

                As you can see, the regex (\d\d\d)(?1)* is strictly equivalent to the regex (\d\d\d)(\d\d\d)*


                I’ve, even, found out a shorter regex, for our problem :

                SEARCH (?-s)^\h*(?:[#;].*|)\R(?0)*

                REPLACE Leave EMPTY

                Where the (?0) syntax is a call routine to the entire regex. But, in that case, from my quick explanations, in the remark section, I don’t exactly understand WHY that regex does work too !!

                Indeed :

                • The regex (?-s)(^\h*(?:[#;].*|)\R)(?1)* is equivalent to the regex (?-s)(^\h*(?:[#;].*|)\R)(^\h*(?:[#;].*|)\R)* Right !

                • So the regex (?-s)^\h*(?:[#;].*|)\R(?0)* should be equivalent to the regex (?-s)^\h*(?:[#;].*|)\R(?-s)^\h*(?:[#;].*|)\R(?0)**, which has, again, a (?0)* syntax, leading to a second development, and so on… ??

                Anyway, it works fine ;-))

                BR,

                guy038

                1 Reply Last reply Reply Quote 3
                • Eko palypseE
                  Eko palypse
                  last edited by Eko palypse Jan 5, 2019, 3:38 PM Jan 5, 2019, 3:37 PM

                  brilliant, and a script like

                  regex = r'(?-s)(^\h*(?:[#;].*|)\R)(?1)*'
                  
                  def hideLine(match):
                      start, end = match.span()
                      _start = editor.lineFromPosition(start)
                      if _start == 0:
                          _start = 1
                      _end = editor.lineFromPosition(end) - 1
                      editor.hideLines(_start,_end)
                      
                  editor.research(regex, hideLine)
                  

                  could hide the lines.
                  Note, scintilla prevents hiding the first line.

                  Alan KilbornA 1 Reply Last reply Jan 10, 2019, 2:29 PM Reply Quote 3
                  • Alan KilbornA
                    Alan Kilborn @Eko palypse
                    last edited by Jan 10, 2019, 2:29 PM

                    @Eko-palypse

                    Anybody else notice that if you hide lines in this manner, then switch the tab you are editing in N++, then switch back, the lines are no longer hidden??

                    Eko palypseE 1 Reply Last reply Jan 11, 2019, 2:50 PM Reply Quote 2
                    • Eko palypseE
                      Eko palypse @Alan Kilborn
                      last edited by Jan 11, 2019, 2:50 PM

                      @Alan-Kilborn

                      yes, theory - looks like npp is explicitly unfolding code if it can find its own fold marker
                      when activating a buffer. Haven’t checked source code yet. If this is the case, then by
                      either using npps fold marker or buffer activated callback to rehide the lines might solve
                      the issue.

                      1 Reply Last reply Reply Quote 0
                      • Alan KilbornA
                        Alan Kilborn
                        last edited by Dec 19, 2022, 2:33 AM

                        There’s a possible solution for this thread’s topic, HERE.

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