=======================================================================
=                                                                     =
=                                                                     =
=   Notepad3 - light-weight Scintilla-based text editor for Windows   =
=                                                                     =
=                                          (c) Rizonesoft 2008-2021   =
=                                            https://rizonesoft.com   =
=                                                                     =
=                          forked from Notepad2-mod                   =
=                          maintained by XhmikosR                     =
=                          https://xhmikosr.github.io/notepad2-mod    =
=                          based on:                                  =
=                                                   Notepad2 4.2.25   =
=                                      (c) Florian Balmer 2004-2011   =
=                                      https://www.flos-freeware.ch   =
=                                                                     =
=                                                                     =
=======================================================================

Notepad3 is based on code from Florian Balmer's Notepad2 and 
XhmikosR's Notepad2-mod. MiniPath is based on code from 
Florian Balmer's metapath.
  
Changes in Notepad3 compared to original Notepad2

  + Notepad3:
    - Restore selection on undo/redo operations
    - Text file encryption/decryption support
    - Improved RegExp search n' replace engine (multiline support)
    - Syntax highlighting support for MATLAB
    - New program icon and other small cosmetic changes
    - New toolbar icons based on Yusuke Kamiyaman's Fugue Icons
      Purchased by Rizonesoft
    - Countinuously updated Scintilla component
    - Other various minor changes and tweaks
      . Accelerated word navigation 
      . Scitilla's Direct Write support
      . improved encoding and codepage handling 
      . Insert GUID
      
  + Notepad2-mod:
    - Code folding
    - Support for bookmarks
    - Option to mark all occurrences of a word
    - Updated Scintilla component
    - Word auto-completion
    - Syntax highlighting support for AutoHotkey, AutoIt3, AviSynth, 
      Bash, CMake, CoffeeScript, Inno Setup, LaTeX, Lua, Markdown, NSIS,
      Ruby, Tcl, YAML and VHDL scripts
    - Improved support for NFO ANSI art
    - Support for replacing Windows Notepad using a clean, unintrusive 
      registry-based method


Changes in MiniPath compared to metapath

  - Project upgraded to Visual C++ 2017
  - 64-bit version
  - New toolbar icons based on Yusuke Kamiyaman's Fugue Icons
    Purchased by Rizonesoft
  - Installation bundled with Notepad3
  - Minor cosmetic changes
  
Supported Operating Systems

   Windows 7, 8, 8.1, 10 both 32-bit and 64-bit

Contributors:

  - Florian Balmer            https://www.flos-freeware.ch
  - XhmikosR                  https://xhmikosr.github.io/notepad2-mod
  - Kai Liu                   https://code.kliu.org/misc/notepad2
  - RL Vision                 https://www.rlvision.com/notepad2/about.php
  - Aleksandar Lekov
  - Bruno Barbieri
  - RaiKoHoff                 https://github.com/RaiKoHoff


More information:
* Binaries:                   https://www.rizonesoft.com/downloads/notepad3
* Source code:                https://github.com/rizonesoft/Notepad3
*                             https://github.com/XhmikosR/notepad2-mod
* Official Notepad2 website:  https://www.flos-freeware.ch/notepad2.html
* Code folding usage guide:   https://github.com/XhmikosR/notepad2-mod/wiki/Code-Folding-Usage
* Kai Liu's website:          https://code.kliu.org/misc/notepad2
* Bookmark Edition website:   https://www.rlvision.com/notepad2/about.asp


Changed keyboard shortcuts compared to Notepad2:

Ctrl+C (no selection)   Copy current line.
Ctrl+X (no selection)   Cut current line.
Ctrl+Shift+.            Copy GUID to Clipboard.
Ctrl+0                  Reset zoom.
Ctrl+NK_*               Toggle transparency

F2                      Go to next bookmark.
Shift+F2                Go to privious bookmark.
Ctrl+F2                 Set/Reset bookmark.
Alt+F2                  Clear all.

Ctrl+Alt+F              Toggle all folds.

Ctrl+Alt+F2             Expand selection to next match.
Ctrl+Alt+Shift+F2       Expand selection to previous match.
Ctrl+Shift+Enter        New line with toggled auto indent option.


Changed command Line Switches compared to Notepad2:

    /v    Print specified document and leave 
    /vd   Print specified document, but open Print dialog before


=======================================================================
How to reset the Notepad3 notification messages?
=======================================================================

To bring back the notification messages suppressed with the 
"Don't display this message again" option, load the ini-file (Ctrl+F7) 
and delete all the values from the [Suppressed Messages] section.

To block the "Don't display this message again" option for an 
individual notification, set the value of the corresponding ini-option to  -1. 
For example, MsgNotFound=-1 ensures the "Text not found" notification message 
will always be displayed (non suppressable by check-box).


=======================================================================
What about the [Settings2] section of the .ini-file?
=======================================================================

You may have noticed that the Notepad3 ini-file has a configuration section
named [Settings2]. This section offers some advanced Notepad3 program settings,
and can only be edited manually. Press Ctrl+F7 to open the Notepad3 ini-file. 
Most changes only take effect upon restarting Notepad3.

New (Notepad3) in [Settings2]

SciDirectWriteTech=    -1,0,1,2,3       - Scintilla's Direct Write Technology
SciFontQuality=        0,1,2,3          - default,none,standard,cleartype 
                                          (if not defined by 'smoothing:xxx' in Style Schema)
SciDirectWriteTech
SciFontQuality
Specifies Scintilla's internal rendering technology and font quality.
  SciDirectWriteTech (default is 1):
    0: SC_TECHNOLOGY_DEFAULT
    1: SC_TECHNOLOGY_DIRECTWRITE
    2: SC_TECHNOLOGY_DIRECTWRITERETAIN
    3: SC_TECHNOLOGY_DIRECTWRITEDC
  SciFontQuality (default is 3):
    0: SC_EFF_QUALITY_DEFAULT
    1: SC_EFF_QUALITY_NON_ANTIALIASED
    2: SC_EFF_QUALITY_ANTIALIASED
    3: SC_EFF_QUALITY_LCD_OPTIMIZED

MarkOccurrencesMaxCount
The maximum number of counts for marking occurences, if this option is active.
The default is 2000.

UseOldStyleBraceMatching
Switch back to (not recommended) old style brace matching.
The default is 0.


Notepad2 already existing settings:
-----------------------------------

StickyWindowPosition
ReuseWindow
SingleFileInstance
These items are managed by Notepad3.

MultiFileArg
Control if Notepad3 should allow multiple files on the command line (set to 1). 
The default behaviour is to accept only a single file, without quoted spaces, 
like Windows Notepad (set to 0). 
The command line switches + and - can be used to override this setting on the fly, 
and the /z switch has the same effect as the - switch.

OffsetNewWindows
Determines whether positions of new windows (opened though Alt+N or Alt+0) 
should be offset relative to the active Notepad3 window (1). 
The new default setting for Notepad3 5.0 is to use the same window position 
as the currently active Notepad3 window (0).

RelativeFileMRU
Set to 0 to disable recent files on the same drive or network share as Notepad3.exe 
being saved with relative pathnames. The default is 1 (enabled).

PortableMyDocs
If set to 1, recent files and other path settings referring to the 
My Documents directory tree are stored relative to My Documents. 
This enhances USB stick portability between Windows XP and more recent versions of Windows,
 which are using different locations for My Documents. 
 This setting has no effect if Notepad3.exe itself is located inside 
 My Documents (or a subdirectory thereof). 
 The default is 1 (enabled) if RelativeFileMRU is enabled, and 0 (disabled) otherwise.

DefaultExtension
Specify the default extension for saved files (omit the leading dot, just like txt or html).
The default extension is 'txt', 
and a value of (none) needs to specified if no default extension is preferred. 
To save a file without extension (regardless of the default extension setting), 
put the filename in double quotes.

DefaultDirectory
Specify the default directory for the open and save dialogs, used if no file is opened. 
Pathnames can be relative to the Notepad3 program directory.

FileDlgFilters
Specify filters for the open and save dialogs 
(Example: Text Files|*.txt;*.wtx;*.log;*.asc;*.doc;*.diz;*.nfo|All Files|*.*).

FileCheckInverval
The interval (in milliseconds) to check for external modification 
of the currently opened file. Defaults to 2000 ms.

AutoReloadTimeout
The timeout (in milliseconds) to wait before automatically reloading modified files. 
The default value of 2000 ms usually prevents read/write conflicts.

FileLoadWarningMB
The size limit, in megabytes, to display a warning message for large files. 
A value of 0 disables the warning.

OpacityLevel
Opacity level (in %) of the Notepad3 window in transparent mode.

NoFadeHidden
Set to 1 to disable fading of hidden objects in file lists (such as Favorites, etc.).

ToolbarLook
Determines the look of disabled toolbar buttons. 0 means system default 
(dark-grey and somewhat grainy on Windows Vista and Windows 7; not available on Windows 2000), 
1 means colored and faded (the default from Notepad3 4.2.25 on Windows XP and above), 
and 2 means Windows XP-style light-grey (the default from Notepad3 4.2.25 on Windows 2000; 
looks better than the system default on Windows Vista and Windows 7).

SimpleIndentGuides
Set to 1 to prevent indentation guides from jumping across empty lines.

NoHTMLGuess
Set to 1 to disable simple HTML/XML detection for files without extensions.

NoCGIGuess
Set to 1 to disable simple language detection for cgi and fcgi files.

NoFileVariables
Set to 1 to disable file variable parsing. Encoding tag parsing can be disabled 
in the File, Encoding, Default dialog box.

filebrowser.exe
Specify the path of an external program that is launched 
when pressing the Browse toolbar button. Defaults to metapath.exe, 
which is my file browser plugin (found in the Project Archive). 
You can specify additional command line switches, 
and the file currently opened in Notepad3 will be appended 
as the last command line parameter.
To have the current file selected in Windows Explorer 
when pressing the browse toolbar button, set this entry to "explorer.exe /e,/select,%1".
Note: Due to special treatment of quotes by the Win32 ini-file APIs, 
pathnames with spaces need to be quadruple-quoted (""path to/file.exe""), 
but only double-quoted if there's additional command line arguments ("path to/file.exe" /arg).

DateTimeShort
DateTimeLong
Specify the short/long date and time formats. 
This is the format parameter passed to the strftime() function. 
Note that the locale will be set to English 
(because of the English Visual C++ Runtime Library used by Notepad3).

TimeStamp
Regular expression used to update timestamps.

WebTemplate1
WebTemplate2
Undocumented. Dangerous. ☺

ShellAppUserModelID
ShellUseSystemMRU
Control system MRU, taskbar and jump list behaviour. 
See Replacing Windows Notepad for detailed explanations.


=======================================================================
=                                                                     =
=                                                                     =
=                     Notepad3's  Encryption / Decryption feature     =
=                                                                     =
=                                 Prototype enduser documentation     =
=                              taken from NotepadCrypt (Dave Dyer)    =
=                                                                     =
=  https://www.andromeda.com/people/ddyer/notepad/NotepadCrypt.html   =
=                                                                     =
=                                                                     =
=======================================================================

NotepadCrypt is a simple text editor which can optionally encrypt the
text files it edits. NotepadCrypt was designed to fill a requirement to
encrypt configuration files which had to be edited by humans but read by
programs, without the hazard that would obviously exist if editing
required the human editor to make a temporary unencrypted file. I needed
an editor which could read and write an encrypted file, for which the
encrypted format was documented and assessable to C and Perl programs.
To my surprise, none existed. 

NotepadCrypt was constructed using open source software, including a low
level implementation of AES encryption and Sha256 hashing; and Notepad2
a really nice open source replacement for Notepad. None of this software
had to be changed in any substantial way, but the file format and key
management had to be designed and implemented to stitch it all together.
The requirement that a program be able to read the encrypted file led to
a design which included a master key, which I think is extremely useful
to anyone using NotepadCrypt to encrypt their own confidential files. 

Source code:

Sha256 hashing implementation (used to convert passphrases to encryption
keys) based on an implementation by Christoper Devine. This file is
available from many sources on the web. AES encryption, for which there
are many open source implementations. Notepad2 editor, which also
requires the Scintilla editing widget. NotepadCrypt version 4.2.25 Full
Sources: This zip includes the as-modified source code for all of the
above, VC.net projects for NotepadCrypt and a simple command line tool
which uses the same file format. There are a couple of "extras" - a test
program that uses tcsh and a java program that can read NotepadCrypt's
file format. Unless you are a programmer, you're probably better off
getting the binary only distribution for NotepadCrypt and Notepad3CL 

Technical Details For NotepadCrypt  

Overall Design: Sha256 hash is used to convert an ascii pass phrase to a
256 bit encryption key. Pseudorandom data is used as an initialization
vector for AES-256 encryption. Optionally, a the encryption key (NOT the
passphrase) is encrypted using a second master key, and included in the
file header. This master key can be used as an emergency data recovery
key, or as a second key to be used by programs to read encrypted files.
 
Overall File Format:  
Consists of a preamble, the encrypted data, and some padding at the end.

Encrypted files start with an 8 byte preamble, the first 4 bytes are a
"magic number" to identify the file type (currently 0x04030201) and a 4
byte sub-file type, (currently either 0x00000001 or 0x00000002 if the
file has a master key).

The next 16 bytes of the preamble are the initialization vector for the
AES engine, to be used with the file key. Each file gets a unique 16
bytes of pseudo random noise.

Next, for master keyed files, is a 16 byte IV for the master key,
followed by a 32 byte block containing the file key, encrypted with the
master key, using the master key IV and CBC block chaining.
 
Next, is the actual file data, encrypted using the file key and the IV,
and CBC block chaining.

Finally, are 1-16 bytes of padding to round out the last AES block. Note
that there are never 0 bytes of padding.

Passphrase Management: 256 bit encryption keys are generated from the
ascii passphrase by passing the passphrase through a SHA256 hash. The
passphrase itself is never stored anywhere except in the dynamic memory
of the encrypting program.

Key management over file generations: If the file is opened using a file
passphrase, the passphrase is retained and used as the default for the
passphrase dialog. If the file is opened using a master passphrase, the
recovered file key is used as the default encryption for new files. This
allows an editor who does not know the file passphrase to propogate a
file key he could not create. If the file contains a master key, and
neither the file or master passphrase is changed, then the retained,
master-encrypted file key is copied into the next file generation (It is
still valid). This allows an editor who knows only the file passphrase
to propogate a master key he could not create.

=======================================================================
=                                                                     =
=          Notepad3 encryption - prototype enduser documentation      =
=                                                                     =
=======================================================================

If you open a file which was encrypted by this program, you'll be
prompted to supply a passphrase. This passphrase becomes
the default to be used when saving files. The passphrase is not the
actual encryption key, but is used to generate a 256 bit
encryption key called the file key.

Master Keys

An Encrypted file can optionally contain a copy of its own file key,
encrypted with a master key, derived from a master
passphrase. This allows anyone who knows the master passphrase to decode
any file encrypted with any file key which uses this
master key structure. As long as the file passphrase is not changed, the
master key can be propogated to new versions of the
file without typing the master phrase again.

 
Why use a master key?

#1) Data recovery. It is not generally a good idea to use the same
passphrase for all files, or to continue using the same passphrase
forever. The principle hazard is that if even one key is revealed, every
encrypted file you have ever created can also be read. Consequently,
different keys should be used for different files, and over time, those
keys should change. Since the keys change, they are subject to being
lost or forgotton, resulting in lost data - it's still there, but no one
can decode it. If you use a master key, and you have misplaced the file
key, you can still recover your data. Since master key is not routinely
used to decrypt the file, and never needs to be shared with anyone, is
is much less likely to be compromised, so it is reasonable for a good
master key to be used for a very long time in a lot of different files.
 
Recommendation: Use a master passphrase that will be very hard for
anyone to guess and very hard for you to forget. For example: 
   "My Favorite movie is Gone with the Wind" 
   "When it rains in New York, even Chicago is a better place to be"
Never tell anyone what it is or write it down. It's an EMERGENCY measure
to prevent catastrophic data loss, so treat it that way. Never use it to
read or open any encrypted file except for testing, or if you have
really lost the file passphrase.

#2) Trapdoor access. Sometimes it is desirable to allow a second party
to decode the file without knowing the encryption passphrase - a good
example is where an automated program is intended to read an encrypted
file that is prepared by a human. The program has to have the passphrase
or the key embedded in it somewhere. It's possible for a dedicated
attacker to find it, but it's much more likely that the source of
compromise will be clumsy humans. Allowing the program to use the master
key and humans to use the ordinary file keys will allow the routine-use
keys to be changed as often as necesary, while still letting the program
read the files without being told the new key. 


Technical Details:
(https://www.real-me.net/ddyer/notepad/NotepadCrypt-technotes.html)

Passphrase Management:
256 bit encryption keys are geneated from ascii passphrases by
passing the passphrase through a SHA256 hash. Passphrases are never
Stored anywhere except in the dynamic memory of the encrypting program.

Key management over file generations: If the file is opened
using a file passphrase, the passphrase is retained and used
as the default for the passphrase dialog.

If the file is opened using a master passphrase, the recovered
file key is used as the default encryption for new files.  This
allows an editor who does not know the file passphrase to propogate
a file key he could not create.

If the file contains a master key, and neither the file or master
passphrase is changed, then the retained, master-encrypted  file
key is copied into the next file generation.  (It is still valid).
This allows an editor who knows only the file passphrase to propogate
a master key he could not create.

Encrypted files start with an 8 byte preable, the first 4 bytes are
a "magic number" to identify the file type (currently 0x04030201)
and a 4 byte subfile type, (currently either 0x00000001 or 0x00000002)

The next 16 bytes are the initialization vector for the AES engine,
to be used with the file key. Each file gets a unique 16 bytes of
pseudorandom noise.

Next, for master keyed files, is a 16 byte IV for the master key,
followed by a 32 byte block containing the file key, encrypted
with the master key, using the master key IV and CBC block chaining.

Next, is the actual file data, encrypted using the file key and the IV,
and CBC block chaining.

Finally, are 1-16 bytes of padding to round out the AES block.  
Note that there are never 0 bytes of padding.


A Word about pass phrases and overall security.

While this encryption scheme uses high quality AES encryption and quite
long 256 bit keys, that is almost irrelevant to the overall security of
the system. It's like having a very expensive lock on your front door.
Thieves won't go to great lengths to pick your lock; they will simply
break a window instead. The weak link in this encryption scheme is YOU
and your selection of pass phrases. If your encrypted files are
compromised, the most likely, by far, method is the simplest; (1) they
ask, you tell. or (2) they find the scrap of paper where you wrote the
passphrase or (3) some key logger watches you type the passphrase. The
only other likely method is a dictionary-type attack using a program to
try lots of possible passphrases. Any short, word-like passphrase CAN be
compromised using a few days of computer time.
 
Finally, consider the suitablility of this encryption scheme for your 
purpose.

 If your goal is to prevent your wife from reading your girlfriend's 
 phone number in your address book: definitely.

 If your goal is to prevent disclosure of sensitive data if your laptop
 is stolen: most likely.

 If your goal is to prevent fishing by the IRS, should they ever become
 curious about you: don't count on it.
 They'll throw you in jail until you tell them the password, or install
 a key logger and wait for you to tell them voluntarily.

 If your goal is to keep secrets people who are definitely out to get
 you, and are willing to shove bamboo splints under you fingernails
 until you talk: don't even think about it.



=======================================================================
=                                                                     =
=                                                                     =
=   Notepad2 - light-weight Scintilla-based text editor for Windows   =
=                                                                     =
=                                                                     =
=                                                   Notepad2 4.2.25   =
=                                      (c) Florian Balmer 2004-2011   =
=                                      https://www.flos-freeware.ch   =
=                                                                     =
=                                                                     =
=======================================================================


Description

  Notepad2 is a light-weight, free and open source Notepad-like text
  editor with syntax highlighting for a few commonly used languages.
  It's based on the Scintilla source code editing component and works
  on NT-based versions of Windows.


Features

  - Syntax highlighting: HTML, XML, PHP, ASP (JS, VBS), CSS,
    JavaScript, VBScript, C/C++, C#, Resource Script, Makefiles, Java,
    Visual Basic, Pascal, Assembly, SQL, Perl, Python, Configuration
    Files, Apache Config Files, PowerShell, Batch Files, Diff Files
  - Drag & drop text editing inside and outside Notepad2
  - Basic regular expression search and replace
  - Useful word, line and block editing shortcuts
  - Rectangular selection (Alt+Mouse)
  - Brace matching, auto indent, long line marker, zoom functions
  - Support for Unicode, UTF-8, Unix and Mac text files
  - Open shell links
  - Mostly adjustable

Installation and Uninstallation

  Just put a copy of Notepad2.exe and Notepad2.ini to any directory on
  your computer. To uninstall Notepad2, simply delete these two files.
  Notepad2 does not create any registry entries on your computer.

The Notepad2 Source Code

  This package contains the full source code of Notepad2 4.2.25 for
  Windows. Project files for Visual C++ 7.0 are included. Chances are
  that Notepad2 can be rebuilt with other development tools, including
  the free Visual C++ Express Edition, but I haven't tested this.


Rebuilding from the Source Code

  Notepad2 4.2.25 is based on Scintilla 2.24 [1].

  [1] https://www.scintilla.org

  To be able to rebuild Notepad2, the source code of the Scintilla
  editing component has to be unzipped to the "scintilla" subdirectory
  of the Notepad2 source code directory.

  Many of the Scintilla lexing modules are not used by Notepad2. Run
  LinkLex.js to adapt the list (in "scintilla/src/Catalogue.cxx") and
  make linking work properly.


Creating a Compact Executable Program File

  Linking to the system CRT slightly improves disk footprint, memory
  usage and startup because the pages for the system CRT are already
  loaded and shared in memory. To achieve this, the release version of
  Notepad2.exe is built using the Windows Driver Kit (WDK) 7.1.0 tools,
  available as a free download from Microsoft. The appropriate build
  scripts can be found in the "wdkbuild" subdirectory. Set %WDKBASEDIR%
  to the directory of the WDK tools on your system.


How to add or modify Syntax Schemes

  The Scintilla documentation has an overview of syntax highlighting,
  and how to write your own lexing module, in case the language you
  would like to add is not currently supported by Scintilla.

  Add your own lexer data structs to the global pLexArray (Styles.c),
  then adjust NUMLEXERS (Styles.h) to the new total number of syntax
  schemes. Include the "scintilla/lexers/Lex*.cxx" file required for
  your language into your project. Ensure the new module is initialized
  (in "scintilla/src/Catalogue.cxx"), either by manually uncommenting
  the corresponding LINK_LEXER() macro call, or by updating and
  re-running LinkLex.js.


Keyboard Shortcuts for Notepad2

  File

    Ctrl+N                New file.
    Ctrl+F4               Close file, identical with Ctrl+N.
    Ctrl+O                Open file.
    F5                    Reload file.
    F8                    Recode file.
    Ctrl+Shift+F          Recode file as default encoding.
    Ctrl+Shift+A          Recode file as system default ANSI.
    Ctrl+Shift+O          Recode file as system default OEM.
    Shift+F8              Recode 7-bit ASCII file as UTF-8.
    Alt+F8                Reload file without file variable parsing.
    Ctrl+S                Save file.
    F6                    Save file as.
    Ctrl+F6               Save file copy.
    Ctrl+P                Print file.
    Alt+H                 Open recent file.

  Tools

    Alt+N                 Open document in new window.
    Alt+0                 Open new empty window.
    Ctrl+M                Run metapath file browser plugin.
    Ctrl+L                Launch document.
    Alt+L                 Open with.
    Ctrl+R                Run command.

  Favorites

    Alt+I                 Open favorites.
    Alt+K                 Add to favorites.
    Alt+F9                Manage favorites.

  Edit

    Ctrl+Z                Undo.
    Ctrl+Shift+Z          Redo.
    Alt+Backspace         Undo.
    Ctrl+Y                Redo.
    Ctrl+Shift+Y          Undo.
    Ctrl+X                Cut.
    Shift+Del             Cut.
    Ctrl+C                Copy.
    Alt+C                 Copy all.
    Ctrl+E                Copy add.
    Ctrl+V                Paste.
    Shift+Ins             Paste.
    Ctrl+K                Swap.
    Del                   Clear.
    Ctrl+A                Select all.
    Alt+Shift+Arrows      Rectangular selection.
    Ctrl+Enter            New line with toggled auto indent option.
    Ctrl+PgUp/PgDn        Goto previous/next block.
    Ctrl+Shift+PgUp/PgDn  Select to previous/next block.

  Char, Word

    Ctrl+Space            Select word (or line).
    Ctrl+Backspace        Delete word before/left.
    Ctrl+Del              Delete word after/right.
    Ctrl+Tab              Insert tabulator.

  Lines

    Ctrl+Shift+Space      Select line.
    Ctrl+Shift+Up         Move line (block) up.
    Ctrl+Shift+Down       Move line (block) down.
    Ctrl+D                Duplicate line.
    Ctrl+Shift+X          Cut line.
    Ctrl+Shift+C          Copy line.
    Ctrl+Shift+D          Delete line.
    Ctrl+Shift+Backspace  Delete line left.
    Ctrl+Shift+Del        Delete line right.
    Ctrl+Shift+W          Column wrap.
    Ctrl+I                Split lines.
    Ctrl+J                Join lines.
    Ctrl+Shift+J          Join paragraphs.

  Block

    Tab                   Indent selected block.
    Shift+Tab             Unindent selected block.
    Alt+Q                 Enclose selection.
    Alt+D                 Duplicate selection.
    Alt+B                 Pad with spaces.
    Alt+Z                 Strip first character.
    Alt+U                 Strip last character.
    Alt+W                 Strip trailing blanks.
    Alt+P                 Compress whitespace.
    Alt+Y                 Merge blank lines.
    Alt+R                 Remove blank lines.
    Alt+M                 Modify lines.
    Alt+J                 Align lines.
    Alt+O                 Sort lines.

  Convert

    Ctrl+Shift+U          Make uppercase.
    Ctrl+U                Make lowercase.
    Ctrl+Alt+U            Invert case.
    Ctrl+Alt+I            Title case.
    Ctrl+Alt+O            Sentence case.
    Ctrl+Shift+S          Convert tabs to spaces.
    Ctrl+Shift+T          Convert spaces to tabs.
    Ctrl+Alt+S            Convert indenting tabs to spaces.
    Ctrl+Alt+T            Convert indenting spaces to tabs.

  Insert

    Alt+X                 HTML/XML tag.
    Ctrl+F8               Encoding identifier.
    Ctrl+F5               Time/date (short form).
    Ctrl+Shift+F5         Time/date (long form).
    Ctrl+F9               Filename.
    Ctrl+Shift+F9         Path and filename.

  Special

    Ctrl+Q                Block comment (toggle).
    Ctrl+Shift+Q          Stream comment.
    Ctrl+Shift+E          URL Encode.
    Ctrl+Shift+R          URL Decode.
    Ctrl+Alt+E            Escape C Special Chars.
    Ctrl+Alt+R            Unescape C Special Chars.
    Ctrl+Alt+X            Convert character to hex code.
    Ctrl+Alt+C            Convert hex code to character.
    Ctrl+B                Find matching brace.
    Ctrl+Shift+B          Select to matching brace.
    F2                    Expand selection to next match.
    Shift+F2              Expand selection to previous match.
    Ctrl+1                Enclose within ''.
    Ctrl+2                Enclose within "".
    Ctrl+3                Enclose within ().
    Ctrl+4                Enclose within [].
    Ctrl+5                Enclose within {}.
    Ctrl+6                Enclose within ``.
    Shift+F5              Update timestamps.
    Ctrl+Alt++            Increase number.
    Ctrl+Alt+-            Decrease number.
    Ctrl+,                Jump to selection start.
    Ctrl+.                Jump to selection end.

  Find, Replace

    Ctrl+F                Find.
    Alt+F3                Save find text.
    F3                    Find next.
    Shift+F3              Find previous.
    Ctrl+F3               Find next word or selection.
    Ctrl+Shift+F3         Find previous word or selection.
    Ctrl+H                Replace.
    F4                    Replace next.
    Ctrl+G                Jump to line.

  Syntax scheme, Font

    F12                   Select syntax scheme.
    Shift+F12             Select 2nd default syntax scheme.
    Ctrl+F12              Customize syntax schemes.
    Alt+F12               Select default font.
    F11                   Select default text syntax scheme.
    Ctrl+F11              Select web source code syntax scheme.
    Shift+F11             Select XML document syntax scheme.

  View

    Ctrl+W                Toggle word wrap.
    Ctrl+Shift+L          Show long line marker.
    Ctrl+Shift+G          Show indentation guides.
    Ctrl+Shift+N          Show line numbers.
    Ctrl+Shift+M          Show selection margin.
    Ctrl+Shift+7          Show wrap symbols.
    Ctrl+Shift+8          Show whitespace.
    Ctrl+Shift+9          Show line endings.
    Ctrl+Shift+V          Toggle visual brace matching.
    Ctrl+Shift+I          Highlight current line.

  Zoom

    Ctrl++                Zoom in.
    Ctrl+-                Zoom out.
    Ctrl+                Reset zoom.

  Settings

    Ctrl+T                Tab settings.
    Alt++                 Increase limit for long lines.
    Alt+-                 Decrease limit for long lines.
    Ctrl+Shift+H          Toggle auto close HTML/XML.
    Alt+T                 Always on top.
    Ctrl+0                Transparent mode.
    Alt+F5                File change notification settings.
    Ctrl+9                Display text excerpt in title.
    F7                    Save settings now.
    Ctrl+F7               Jump to ini-file.

  Misc.

    Shift+F9              Copy pathname to clipboard.
    Ctrl+Shift+K          Copy window position to clipboard.
    Ctrl+Shift+P          Move window to default position.
    Esc                   Optionally minimize or exit Notepad2.
    Shift+Esc             Save file and exit Notepad2.
    F1                    Display version info.


Regular Expression Syntax

  Note: the Scintilla source code editing component supports only a
  basic subset of regular expression syntax, and searches are limited
  to single lines.

  .      Matches any character.

  (...)  This marks a region for tagging a match.

  \n     Where n is 1 through 9 refers to the first through ninth
         tagged region when replacing. For example, if the search
         string was Fred([1-9])XXX and the replace string was Sam\1YYY,
         when applied to Fred2XXX this would generate Sam2YYY.

  \<     This matches the start of a word.

  \>     This matches the end of a word.

  \x     This allows you to use a character x that would otherwise
         have a special meaning. For example, \[ would be interpreted
         as [ and not as the start of a character set.

  [...]  This indicates a set of characters, for example, [abc] means
         any of the characters a, b or c. You can also use ranges, for
         example [a-z] for any lower case character.

  [^...] The complement of the characters in the set. For example,
         [^A-Za-z] means any character except an alphabetic character.

  ^      This matches the start of a line (unless used inside a set,
         see above).

  $      This matches the end of a line.

  ?      This matches 0 or 1 times. For example, a?b matches ab and b.

  *      This matches 0 or more times. For example, Sa*m matches Sm,
         Sam, Saam, Saaam and so on.

  +      This matches 1 or more times. For example, Sa+m matches Sam,
         Saam, Saaam and so on.

  *?     Causes * and + to behave non-greedy. For example, <.+> matches
  +?     all HTML tags on a line, whereas <.+?> matches only one tag.

  \d     Any decimal digit.
  \D     Any character that is not a decimal digit.

  \s     Any whitespace character.
  \S     Any character that is not a whitespace character.

  \w     Any "word" character.
  \W     Any "non-word" character.

  \xHH   Character with hex code HH.

  -----> Examples (don't use quotes)
         - Quote lines: find "^" replace with "> "
         - Unquote lines: find "^> " replace with ""
         - Remove line numbers: find "^[0-9]+" replace with ""
         - Convert tabs to double spaces: find "\t" replace with "  "
         - Remove NULL bytes: find "\x00" replace with ""


Command Line Switches

  Notepad2.exe [encoding] [line-ending-mode] [/e id] [/g ln[,col]]
               [/m[-][r|b] text] [/l|/l0] [/q] [/s ext] [/d] [/h] [/x]
               [/c] [/b] [/n|/ns] [/r|/rs]
               [/p x,y,cx,cy[,max]|/p0|/ps|/p[f|l|t|r|b|m]]
               [/t title] [/i] [/o|/o0] [/f ini|/f0] [/u] [/z ...] [/?]
               [+|-] [file] ...

    file  File to open, can be a relative pathname, or a shell link.
          Must be the last argument, no quoted spaces by default.
    +     Accept multiple file arguments (with quoted spaces).
    -     Accept single file argument (without quoted spaces).
    ...   Desired file encoding (can be one of /ansi, /unicode,
          /unicodebe, /utf8 or /utf8sig).
    ...   Desired line ending mode (either /crlf, /lf, or /cr).
    /e    Specify file source encoding.
    /g    Jump to specified position, /g -1 means end of file.
    /m    Match specified text (/m- last, /mr regex, /mb backslash).
    /l    Auto-reload modified files; /l0 disable change notification.
    /q    Force creation of new files without prompt.
    /s    Select syntax scheme associated with specified extension.
    /d    Select default text scheme.
    /h    Select Web Source Code scheme.
    /x    Select XML Document scheme.
    /c    Open a new Notepad2 window and paste the clipboard contents.
    /b    Open a new Notepad2 paste board to collect clipboard entries.
    /n    Always open a new Notepad2 window (/ns single file instance).
    /r    Reuse Notepad2 window (/rs single file instance).
    /p    Set window position to x,y with size cx,cy, optional max set
          to nonzero to zoom; /p0 system, /ps internal defaults;
          /p(f)ull,(l)eft,(t)op,(r)ight,(b)ottom,(m)argin.
    /t    Set window title.
    /i    Start as tray icon.
    /o    Keep window on top; /o0 do not keep window on top.
    /f    Specify ini-file; /f0 use no ini-file (don't save settings).
    /u    Launch with elevated privileges.
    /v    Print specified document to default printer and quit.
    /z    Skip next (usable for registry-based Notepad replacement).
    /?    Display a brief summary about command line parameters.



Source Code

  Notepad2 is based on the Scintilla source code editing component:
  https://www.scintilla.org

  The full Notepad2 source code can be found at:
  https://www.flos-freeware.ch


More Information and Resources

  For more information on Notepad2 features, how to replace Windows
  Notepad, and answers to the most frequently asked questions (FAQ),
  please visit the Notepad2 website:
  https://www.flos-freeware.ch


Feature Requests

  Thank you very much for the overwhelming feedback about Notepad2!
  Feature requests are always welcome, but please keep in mind that
  Notepad2 has been designed as a compact Notepad replacement.


Credits and Special Thanks

  Here I would like to say "THANK YOU" to the developers of the great
  Scintilla source code editing component [1], which is the core of
  Notepad2. Without Scintilla, the rich features found in Notepad2
  wouldn't have been possible!

  [1] https://www.scintilla.org

  Many thanks to everybody for sending me bug reports and useful hints.
  A special thank goes to Roland Weigelt [2] for his helpful thoughts
  and comments about Notepad2 features and usability in early develop-
  ment stages. I'd also like to express my thanks to Timo Kunze [3],
  Kai Liu [4], Moritz Kroll, Seunghun Thomas Lee [5] and Shawn
  Brenneman for sending detailed bug reports and ready-to-use patches.

  [2] https://www.roland-weigelt.de
  [3] https://www.TimoSoft-Software.de
  [4] https://code.kliu.org/misc/notepad2
  [5] mailto:stlee42@gmail.com


Copyright

  Notepad2 is FREE SOFTWARE and may be used and distributed freely.
  Please do not charge any distribution or download fees for this
  program, except for the cost of the distribution medium. The use of
  this software is AT YOUR OWN RISK. See License.txt for full details.

  If you have comments or questions, please drop me a note:
  florian.balmer@gmail.com

  (c) Florian Balmer 2004-2011

###
