diff --git a/Readme.md b/Readme.md index add4bbb32..f91c527e9 100644 --- a/Readme.md +++ b/Readme.md @@ -1,613 +1,157 @@ # Notepad3 -Notepad3 is free and open source. Your support helps keep development active. +**A fast, lightweight, Scintilla-based text editor for Windows** -[![Sponsor](https://img.shields.io/github/sponsors/rizonesoft?style=flat-square&logo=github)](https://github.com/sponsors/rizonesoft) -[![Donate](https://img.shields.io/badge/Donate-PayPal-blue.svg?style=flat-square&logo=paypal)](https://www.paypal.com/donate/?hosted_button_id=7UGGCSDUZJPFE) [![License](https://img.shields.io/badge/License-BSD%203--Clause-blue.svg?style=flat-square)](https://opensource.org/licenses/BSD-3-Clause) - -### Build Status -Continuous integration ensures code quality across compilers and platforms. - -[![AppVeyor](https://img.shields.io/appveyor/ci/rizonesoft/notepad3/master.svg?style=flat-square&label=AppVeyor)](https://ci.appveyor.com/project/rizonesoft/notepad3/branch/master) [![CI](https://img.shields.io/github/actions/workflow/status/rizonesoft/Notepad3/build.yml?style=flat-square&label=CI)](https://github.com/rizonesoft/Notepad3/actions/workflows/build.yml) -[![Latest Release](https://img.shields.io/github/v/release/rizonesoft/Notepad3?style=flat-square&label=Release&color=0e7490)](https://rizonesoft.com/downloads/notepad3/) +[![AppVeyor](https://img.shields.io/appveyor/ci/rizonesoft/notepad3/master.svg?style=flat-square&label=AppVeyor)](https://ci.appveyor.com/project/rizonesoft/notepad3/branch/master) +[![Release](https://img.shields.io/github/v/release/rizonesoft/Notepad3?style=flat-square&label=Release&color=0e7490)](https://rizonesoft.com/downloads/notepad3/) [![Nightly](https://img.shields.io/github/v/release/rizonesoft/Notepad3?include_prereleases&style=flat-square&label=Nightly&color=6e40c9)](https://github.com/rizonesoft/Notepad3/releases) -### Tech Stack -Built with modern C++ on the powerful Scintilla editing component. +[Website](https://rizonesoft.com/downloads/notepad3/) · [Downloads](https://github.com/rizonesoft/Notepad3/releases) · [Documentation](https://rizonesoft.com/documents/notepad3/) · [Changelog](https://rizonesoft.com/downloads/notepad3/update) · [Sponsor](https://github.com/sponsors/rizonesoft) -[![Windows](https://img.shields.io/badge/Platform-Windows-0078D6?style=flat-square&logo=windows)](https://rizonesoft.com/downloads/notepad3/) -[![C++](https://img.shields.io/badge/Language-C%2B%2B-00599C?style=flat-square&logo=cplusplus)](https://github.com/rizonesoft/Notepad3) -[![Scintilla](https://img.shields.io/badge/Editor-Scintilla-4B8BBE?style=flat-square)](https://www.scintilla.org/) -[![Architecture](https://img.shields.io/badge/Arch-x86%20%7C%20x64%20%7C%20x64--AVX2%20%7C%20ARM64-informational?style=flat-square)](https://rizonesoft.com/downloads/notepad3/) +--- -Notepad3 is a fast and light-weight Scintilla-based text editor with syntax highlighting. It has a small memory footprint, but is powerful enough to handle most programming jobs. [Download Notepad3 here](https://rizonesoft.com/downloads/notepad3). +Notepad3 is a free, open-source text editor with syntax highlighting for Windows. Built on the [Scintilla](https://www.scintilla.org/) editing component and [Lexilla](https://www.scintilla.org/Lexilla.html) lexer library, it has a small memory footprint while being powerful enough for professional programming and everyday text editing. -> *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.* +> Notepad3 is based on code from Florian Balmer's [Notepad2](https://www.flos-freeware.ch/notepad2.html) and XhmikosR's [Notepad2-mod](https://xhmikosr.github.io/notepad2-mod/). MiniPath is based on Florian Balmer's metapath. -## Important links! -* Download page - https://rizonesoft.com/downloads/notepad3 -* Latest changelog (release notes) - https://rizonesoft.com/downloads/notepad3/update -* Full changelog (all versions/builds) - [Notepad3 - Full Changelog](https://raw.githubusercontent.com/rizonesoft/Notepad3/master/Build/Changes.txt) -* Documentation - https://rizonesoft.com/documents/notepad3 + -## Rizonesoft Support +## Features -* **[GET IN TOUCH](https://rizonesoft.com/contact-us)** -* **Premium Support** - On Rizonesoft, support is free and we will assist you the best we can. Please be patient when contacting us; there are mainly volunteers working on Rizonesoft projects, and time is a precious commodity. +### Editing +- **Code folding** with toggle-all support +- **Bookmarks** for quick navigation within files +- **Word auto-completion** with configurable fill-up characters +- **Mark all occurrences** of a selected word with occurrence count display +- **Find and Replace** with [Oniguruma](https://github.com/kkos/oniguruma) regular expression engine +- **Undo/Redo** that preserves selection state +- **Visual Studio–style** copy/paste of the current line (when nothing is selected) +- **Virtual space** rectangular selection (Alt+Drag) +- **Accelerated word navigation** with configurable delimiters +- **Insert GUIDs** directly into your document -## Changes compared to Flo's official [Notepad2](https://www.flos-freeware.ch/notepad2.html) (made in [Notepad2-mod](https://xhmikosr.github.io/notepad2-mod/)): +### Syntax Highlighting +Over 55 languages supported, including: -* Code folding -* Support for bookmarks -* Option to mark all occurrences of a word -* Updated Scintilla component -* Word auto-completion -* Syntax highlighting support for AutoHotkey (AHK), AutoIt3, AviSynth, Bash, CMake, CoffeeScript, - Inno Setup, LaTeX, Lua, Markdown, NSIS, Ruby, Tcl, YAML and VHDL scripts. -* Improved support for NFO ANSI art -* Other various minor changes and tweaks +> ANSI Art, Apache Config, Assembly, AutoHotkey, AutoIt3, AviSynth, Awk, Batch, C/C++, C#, CMake, CoffeeScript, CSS, CSV, D, Dart, Diff, F77/Fortran, Go, HTML/XML, Java, JavaScript, JSON, Julia, Kotlin, KiXtart, LaTeX, Lua, Makefiles, Markdown, MATLAB, Nim, NSIS, Pascal, Perl, PHP, PowerShell, Python, R/S-Plus, Registry, Resource Script, Ruby, Rust, Shell Script, SQL, SystemVerilog, Tcl, TOML, VBScript, VHDL, Verilog, Visual Basic, YAML, and more. -## Changes compared to the Notepad2-mod fork: +### File Handling +- **AES-256 Rijndael** encryption/decryption (in-app and command-line batch tool) +- **Encoding detection** powered by [uchardet](https://www.freedesktop.org/wiki/Software/uchardet/) +- **File change monitoring** with configurable check intervals +- **Emacs file variables** support (encoding, mode, tab-width, etc.) +- **File history** that preserves caret position and encoding +- **Portable design** — runs from USB drives with relative path storage -* Additional syntax highlighting support for Awk, D, golang, MATLAB -* Regular Expression search engine ([Oniguruma](https://github.com/kkos/oniguruma)) -* New toolbar icons based on Yusuke Kamiyaman's Fugue Icons (purchased by [Rizonesoft](https://rizonesoft.com)) -* Hyperlink hotspot highlighting (single-click Open in Browser (Ctrl) / Load in Editor (Alt) -* Syntax highlighting support for D Source Script, Go Source Script, JSON, Makefiles, MATLAB, Nim Source Code, Power Shell Script, Resource Script, Shell Script -* New program icon and other small cosmetic changes -* In-App support for AES-256 Rijndael encryption/decryption of files (incl. external command line tool for batch processing) -* Virtual space rectangular selection box (Alt-key down) -* High-DPI awareness, including high definition toolbar icons -* Undo/Redo preserves selection -* File history preserves caret position (optional) and remembers encoding of file -* Accelerated word navigation -* Preserve caret position of items in file history -* Count occurrences of a marked selection or word -* Count and mark occurrences of matching search/find expression -* Visual Studio style copy/paste current line (no selection) -* Insert GUIDs -* Dropped support for Windows XP -* Other various minor changes, tweaks, and bugfixes +### Search +- **grepWinNP3** — integrated search-in-files tool with regex support (**Ctrl+Shift+F**) +- **Hyperlink hotspot highlighting** — Ctrl+Click to open in browser, Alt+Click to load in editor -## Supported Operating Systems: +### User Interface +- **High-DPI aware** with high-definition toolbar icons +- **Dark mode** support with customizable colors +- **Customizable status bar** with 16 configurable fields (line, column, encoding, TinyExpr evaluation, Unicode code point, and more) +- **Customizable toolbar labels** — display function names next to icons +- **Zoom** from 10% to 1000% (Ctrl+Scroll or toolbar buttons) +- **Transparent window mode** with configurable opacity -* Windows 7, 8, 8.1, 10, and 11 (both 32-bit and 64-bit) +### Localization +27 language translations: -
+> Afrikaans, Belarusian, Chinese (Simplified & Traditional), Dutch, English (US & UK), Finnish, French, German, Greek, Hindi, Hungarian, Indonesian, Italian, Japanese, Korean, Polish, Portuguese (Brazil & Portugal), Russian, Slovak, Spanish (Spain & Latin America), Swedish, Turkish, Vietnamese -# References +### Companion Tools +- **[MiniPath](minipath/)** — fast file browser plugin (Ctrl+M) +- **[grepWinNP3](grepWinNP3/)** — powerful search-and-replace across files -Seen on Nsane Forums: [Notepad3 is an advanced text editor...](https://www.nsaneforums.com/topic/382910-guidereview-notepad3-is-an-advanced-text-editor-that-supports-many-programming-languages/), a review of **Notepad3** posted by the moderator [Karston](https://www.nsaneforums.com/profile/12756-karlston/) at [nsane.forums](https://www.nsaneforums.com/). +## System Requirements -**Notepad3's review**: **[Notepad3 is an advanced text editor that supports many programming languages](https://www.ghacks.net/2020/08/11/notepad3-is-an-advanced-text-editor-that-supports-many-programming-languages/)**. +- **OS:** Windows 8.1, 10, or 11 +- **Architectures:** x86 (Win32), x64, x64 with AVX2, ARM64 -
+## Download & Install -# **Notepad3 Settings (Notepad3.ini)** +| Channel | Link | +|---------|------| +| **Stable Release** | [rizonesoft.com/downloads/notepad3](https://rizonesoft.com/downloads/notepad3/) | +| **GitHub Releases** | [github.com/rizonesoft/Notepad3/releases](https://github.com/rizonesoft/Notepad3/releases) | +| **Nightly Builds** | [Pre-releases on GitHub](https://github.com/rizonesoft/Notepad3/releases) | +Notepad3 is fully **portable** — no installation required. Extract the archive and run `Notepad3.exe`. Settings are stored in `Notepad3.ini` alongside the executable. See [Replacing Windows Notepad](https://rizonesoft.com/documents/notepad3/) for system-wide integration. -## **`[Notepad3]`** +## Building from Source -This section can be used to redirect to a settings file which will be used by Notepad3. -If a non-elevated user is not allowed to write to the program directory of Notepad3.exe, -the side-by-side Notepad3.ini can point to a place where the user is allowed to write their settings, -for example: +Notepad3 is built with **Visual Studio 2022** (toolset v143) targeting the Windows SDK. -`Notepad3.ini=%APPDATA%\Rizonesoft\Notepad3\Notepad3.ini` +```powershell +# Restore NuGet packages (required once) +nuget restore Notepad3.sln -or a to have user-specific settings: +# Build a specific platform +Build\Build_x64.cmd Release -`Notepad3.ini=%WINDIR%\Notepad3-%USERNAME%.ini` +# Build all platforms (Win32, x64, x64_AVX2, ARM64) +Build\BuildAll.cmd Release - -## **`[Settings]`** - -These settings are read and written by Notepad3’s user interface. -For example, all Menu ? Settings will go here. - -#### `SettingsVersion=5` - -#### `Favorites=%APPDATA%\Rizonesoft\Notepad3\Favorites\` - - -## **`[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. - -#### `PreferredLanguageLocaleName=en-US` - -The default value for the already supported languages is defined by the: “OS language setting”. -- The fallback is: “en-US”. - -##### Available languages: - -``` -English/United States (en-US) (internal default) -Afrikaans/South Africa (af-ZA) -Belarusian/Belarus (be-BY) -German/Germany (de-DE) -Greek/Greece (el-GR) -English/United Kingdom (en-GB) -Spanish/Spain (es-ES) -French/France (fr-FR) -Hindi/India (hi-IN) -Hungarian/Hungary (hu-HU) -Indonesian/Indonesia (id-ID) -Italian/Italy (it-IT) -Japanese/Japan (ja-JP) -Korean/Korea (ko-KR) -Dutch/Netherlands (nl-NL) -Polish/Poland (pl-PL) -Portuguese/Brazil (pt-BR) -Portuguese/Portugal (pt-PT) -Russian/Russia (ru/RU) -Slovak/Slovakia (sk-SK) -Swedish/Sweden (sv-SE) -Turkish/Turkey (tr-TR) -Vietnamese/Vietnam (vi-VN) -Chinese Simplified/China (zh-CN) -Chinese Traditional/Taiwan (zh-TW) +# Or use MSBuild directly +msbuild Notepad3.sln /m /p:Configuration=Release /p:Platform=x64 ``` -#### `IMEInteraction=0` +Run `Version.ps1` before building to generate version headers from templates in `Versions\`. -#### `DateTimeFormat=` +## Configuration -- (-> (Locale dependent short format) +Notepad3 uses a portable INI file for all settings. Press **Ctrl+F7** to open it directly in the editor. -#### `DateTimeLongFormat=` +- **UI settings** (`[Settings]`) — managed through Menu → Settings +- **Advanced settings** (`[Settings2]`) — edit manually; most require a restart +- **Status bar** (`[Statusbar Settings]`) — customize field layout, order, and width +- **Toolbar labels** (`[Toolbar Labels]`) — show function names next to icons -- (-> (Locale dependent long format) +📖 **Full configuration reference:** [doc/Configuration.md](doc/Configuration.md) -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++ Run-time -Library used by Notepad3). +## Contributing -#### `TimeStampRegEx=` +Contributions are welcome! Here's how to help: -- (-> \$Date:[^\$]+\$) (Find-Pattern to Update Stamps) +1. **Report bugs** — [Open an issue](https://github.com/rizonesoft/Notepad3/issues) with steps to reproduce +2. **Submit pull requests** — Fork the repo, create a feature branch, and submit a PR against `master` +3. **Translate** — Add or improve translations in the `language\` directory +4. **Spread the word** — Star the repo and share with others -#### `TimeStampFormat=` +For support, visit [rizonesoft.com/contact-us](https://rizonesoft.com/contact-us). -- (-> \\$Date:[^\\$]+\\$ | $Date: %Y/%m/%d %H:%M:%S $ -- (-> $Date: %s $) (Print format should fit to TimeStampRegEx) +## Credits -This parameter is used as a regex pattern to match time-stamps which will be updated to -current date-time by `Shift+F5`, e.g. `$Date: 2018/04/26 00:52:39 $` +Notepad3 builds upon the work of: -- Default `DateTime` formats are: - 1. SHORT: `[Settings2] DateTimeFormat=` (empty) - Notepad3's language locale short '