24 KiB
Notepad3 TODO
Ideas / New Features (deliberated)
- Merge/Cleanup all old documentation (Build/Docs/*.txt, etc.) files
- PCRE2 backward search seems to be slow - ask Claude for analysis
Epics (high effort)
-
(Q3) SVG Toolbar Icons - Resolution-independent toolbar with dark/light mode
-
[/] (Q3) Autosave / Backup - ✅ PARTIALLY IMPLEMENTED
- Implemented:
- Settings dialog (
AutoSaveBackupSettingsDlg) with full UI - Timer-based periodic autosave (
AutoSaveStart/Stop/DoWork) - Options: Periodic save, Save on Suspend, Save on Shutdown
- Backup options: Enable backup, On AutoSave, Side-by-side
- Configurable interval (minimum 2 seconds)
- Settings dialog (
- Remaining:
- Recovery folder (
%APPDATA%\Notepad3\recovery\) not yet implemented - Versioned backups (
.bak_1,.bak_2) not yet implemented
- Recovery folder (
- Issues: #1665, #370, #512, #4331, #3652, #5399
- See research/autosave-backup.md
- Implemented:
-
(Q3) EditorConfig Integration - Apply
.editorconfigsettings on file open- Use editorconfig-core-c library
- Support: indent_style, indent_size, tab_width, end_of_line, charset
- See research/editorconfig-integration.md
-
(Q3) Windows Spell Checker - Spellcheck via Windows API
- Issue: #5157
-
(Q3) Scrollbar Marks - Highlights in scrollbar (search matches, bookmarks)
-
(Q3) Plugin System - Customizable / loadable plugin support
- Issue: #5071
- Architectural: extension API surface, lifetime, sandboxing
-
(Q3) Code Compress/Pretty - Minify/beautify code
High Priority
- Scintilla/Lexilla Update - ✅ Upgraded to 5.5.8/5.4.6 parity
- Applied incrementally to preserve NP3 patches (DPI, Oniguruma, DirectWrite)
- See scintilla/np3_patches/upstream_558/
- BUG: FileSave() nested call - ✅ Fixed in commit
658fb2f19- Issue: #5445
- Code:
Notepad3.c:4788- nestedFileSave()returns bool, passed as FileSaveFlags - Fix:
FileSave((FileWatching.FileWatchingMode <= FWM_DONT_CARE) ? FSF_SaveAlways : FSF_None);
- (Q2) BUG: Wrong working directory for new files - ✅ FIXED
- Issue: #5306
- Fix: Added else block in
Path_NormalizeEx()to use canonicalized path for non-existent files
- (Q2) BUG: Encoding detection issue - UTF-8 files detected as DOS-852
- Issue: #5310
- Affects German Windows 11, possibly other locales
- Improve UTF-8 detection for files without BOM
- (Q1) BUG: Print status message persistent - ✅ FIXED
- Issue: #5313
- Fix: Added
StatusSetText()call to clear status bar afterEditPrint()completes
- (Q1) BUG: /m command line uses last search mode - ✅ FIXED
- Issue: #5060
- Fix: When
/mis used without 'R' flag, explicitly clear SCFIND_REGEXP to force text mode
- (Q3) Replace GetOpenFileNameW with IFileOpenDialog - Modern file dialog API - ✅ IMPLEMENTED
- Issue: #5066
- Issue: #5080
- Fixes crash on Windows Server 2022 (STATUS_STACK_BUFFER_OVERRUN in ntdll.dll)
- See research/server2022-file-dialog-crash.md
- Test on Windows Server 2022 and higer - ⚠ Validation❗
- (Q1) BUG: Cannot save settings without folder - ✅ FIXED
- Issue: #5075
- Fix: Changed
CreateDirectoryWtoSHCreateDirectoryExWto create all intermediate directories
- (Q2) BUG: Replace dialog full-width caching - Second replace uses wrong character
- Issue: #4268
- CJK full-width replacement cached incorrectly
- (Q2) BUG: Initial window position not working - Position settings ignored - ✅ IMPLEMENTED
- Issue: #4725
- To be analyzed - works as designed ??? - ⚠ Validation ❗
- (Q2) BUG: Minipath options don't save - FullRowSelect/TrackSelect broken
- Issue: #4116
- (Q1) BUG: Monitoring log not saved - ✅ FIXED
- Issue: #5037
- Fix: Added
MonitoringLogto Settings struct with INI load/save in Config.cpp
- (Q3) BUG: LAN file freeze - Freezes when network host offline
- Issue: #5050
- (Q1) BUG: Find/Replace patterns not updating - Dropdown not refreshed immediately - ✅ FIXED
- Issue: #5134
- (Q3) BUG: Multiple file positions not saved - Only last file's bookmarks/caret preserved - ✅ FIXED
- Issue: #5151 - ✅ DELEGATED (using grepWin orig)
- (Q3) BUG: grepWinNP3 crash - Right-click search results crashes - ⚠ Validation❗
- Issue: #5158
- (Q2) BUG: PHP comment toggle - Ctrl+Q not working in Web Source Code - ✅ FIXED
- Issue: #5163
- [/] (Q2) CHR: Ctrl+LAlt+V is used by NP3 - AltGr+V works - Can't type
}@on non-US keyboards - ❌ WON'T CHANGE- Issue: #5220
- (Q1) BUG: Mouse scroll settings not updated - ✅ FIXED
- Issue: #5223
- Fix: Forward
WM_SETTINGCHANGEto Scintilla to refresh cached scroll parameters
- (Q2) BUG: File lock held too long on save - Blocks FileSystemWatcher - ✅ IMPLEMENTED
- Issue: #5301 - ⚠ Validation❗
- (Q2) BUG: Folder handle leak - Can't rename/delete folders with opened files - ✅ IMPLEMENTED
- Issue: #5342 - ⚠ Validation❗
- (Q1) BUG: Black line in Language menu - ✅ FIXED
- Issue: #5361
- Fix: Removed
WM_UAHNCPAINTMENUPOPUPfrom message interception - was using wrong window handle
- (Q1) BUG: Typing causes cursor to flash, disappear and reappear - Regression
- Issue: #4942
- (Q1) BUG: Holding Ctrl+S inserts DC3 characters - Save shortcut leaks into buffer when repeated
- Issue: #5178
- (Q1) BUG: Redo button stays active after redo stack exhausted
- Issue: #5149
- (Q1) BUG: Ctrl+Shift+D redo deletes penultimate line and merges with next
- Issue: #5150
- (Q1) BUG: "Only One Instance per File" doesn't always work
- (Q1) BUG: New Empty Window prompts to save when nothing to save
- Issue: #5164
- (Q1) BUG: New Empty Window button broken when AutoLoadMRUFile=true
- Issue: #5174
- (Q1) BUG: Close-with-unsaved system dialog disappears on second instance close
- Issue: #4945
- (Q1) BUG: Screen needs manual refresh after opening file with /g switch
- Issue: #5103
- (Q2) BUG: Filename starting with "- " opens blank file from CLI
- Issue: #5160
- (Q2) BUG: Selection (Sel) and Occurrences (Occ) status counts incorrect
- Issue: #5176
Medium Priority
- DirectWrite Font Variant Bug - ✅ Fixed with ResolveFontFace() patch
- Uses IDWriteGdiInterop to resolve font face → family + weight/style/stretch
- See scintilla/np3_patches/001_directwrite_font_resolution.md
- (Q2) Installer testing on various Windows versions
- AVX2 Build - ✅ Added x64_AVX2 to CI matrix
- Issue: #4240
- (Q2) Language file updates
- (Q1) Move Beta Page to rizonesoft.com - Host beta downloads on main site
- Issue: #1129
- (Q2) Improve Temp File Handling - Better UX for files from archives - ✅ FIXED
- Issue: #5343
- (Q1) Force Save Option - ✅ FIXED
- Issue: #5444
- Fix: Added
Settings.FixTrailingBlankscheck to early return inFileSave()
- (Q2) BUG: Korean IME composition box obscures the line of text being edited
- Issue: #2982
- (Q2) BUG: Mixed tiny menu / huge dialog icons across screens with different DPI
- Issue: #3150
- (Q2) BUG: AutoCompleteWordCharSet setting has no effect
- Issue: #4029
- (Q2) BUG: Column Wrap doesn't work on Chinese / CJK text
- Issue: #4940
- (Q2) BUG: Scrollbar can't reach bottom when processing very large files
- Issue: #5092
- (Q2) BUG: Accented vowels typed lowercase with Caps Lock on
- Issue: #5097
- (Q2) BUG: Ctrl+Drag&Drop disabled while multi-cursor active
- Issue: #5153
- (Q2) BUG: Taskbar window order changes after minimize
- Issue: #5159
- (Q2) BUG: Menu Bar accelerator keys unreliable in non-English locales
- Issue: #5169
- (Q2) BUG: Taskbar icon refuses to combine/group
- Issue: #5175
- (Q2) BUG: Regex
{min,max}quantifier not supported by current grammar- Issue: #5180
- (Q2) BUG: Color dialog RGB fields accept only 2 of 3 digits when typed
- Issue: #5185
GitHub Actions
- CI Workflow - ✅ Added MSVC builds (Win32/x64 Release)
- Runs on push/PR to master
- ARM64 Build - ✅ Added to CI matrix (Win32/x64/ARM64)
- (Q1) Clang-cl Build - Alternative compiler for better warnings
- (Q1) Debug Build - Catch debug-only assertions
- (Q1) PR Labeler - Auto-label PRs based on files changed
- (Q2) Automatic Releases - Create GitHub releases on tags with built artifacts
- (Q2) Changelog Generator - Auto-generate release notes from commits/PRs
- (Q2) CodeQL Analysis - Scans C++ code for security vulnerabilities
- (Q1) Dependency Review - Checks for vulnerable dependencies in PRs
- (Q2) MSVC Code Analysis - Microsoft's static analyzer (/analyze)
- (Q3) Nightly Releases - Automated nightly builds via GitHub Actions
- Issue: #5412
- Schedule: Daily at 2 AM UTC
- Package: Portable ZIP with exe, lng, docs, themes, ini files
- See research/nightly_releases.md
Low Priority
-
(Q1) Documentation updates
-
(Q2) Long Path Support - Support paths >260 characters (Win10+) - ✅ FIXED
- Issue: #3580 - ⚠ Validation ❗
-
(Q3) Additional Syntax Highlighting - New language lexers
- Haskell: #3035 - Lexilla
LexHaskell.cxx - Racket: #3035 - Could use Lisp/Scheme lexer
- OpenCL: #5374 - C-like with extra keywords
- Verilog HDL: #4108 - Lexilla
LexVerilog.cxx - JSON5: #5411 - ⚠ Validation ❗
- SourcePawn: #5430 - SourceMod scripting
- Groovy: #5093
- Swift, Zig, Scala, F#, WASM, Vim, OCaml, Smali, GraphViz, Rebol
- (Maybe) CSS in
<style>tags: #2061 - Embedded language complexity - BUG: CSS keywords: #4214 - Update CSS property list
- BUG: CSS syntax highlighting incorrect: #3572
- HTML: #3470 - Expand HTML lexer coverage / "full HTML support"
- Haskell: #3035 - Lexilla
-
(Q3) BATCH Code Folding - Fold
if/forblocks with parentheses -
(Q1) Markdown: Highlight Trailing Double Spaces - Show line break indicators
- Issue: #5312
-
(Q2) Custom Hyperlink Schemes - User-defined URL protocol recognition
- ed2k:// links: #5405
- Customizable via INI settings
-
(Q2) Smarter URL Recognition - Improve URL boundary detection - ✅ FIXED
- Issue: #5464
- Don't include trailing
'when URL is quoted
-
(Q3) Display Hidden Characters - Show invisible/control characters - ✅ IMPLEMENTED
-
(Q2) Trailing Whitespace Highlighting - Distinct style for trailing blanks
- Issue: #1913
-
(Q3) Enhanced Auto-Complete - Language-aware auto-complete triggers
-
(Q3) Auto-Pair Brackets - Auto-close
(),[],{},"",'' -
(Q3) Custom Keyboard Shortcuts - User-configurable shortcut keys
- Issue: #595
- Workaround: Use Microsoft PowerToys's Keyboard-Manager to redirect
Open Discussions
- (Q2) BUG: Highlight current line broken - Settings not respected (regression) - ✅ WON'T CHANGE
- Issue: #5270
- **This is a discussion, about limited line highlite rule language in schema definition **
- (Q3) QUE: Regex replace issue - Verify if still present - ✅ FIXED
- Issue: #3531
- Was no Bug but bad RegEx pattern design (expectation vs. what regex really does)
Text Processing
- (Q1) Strip Leading Blanks - Trim leading whitespace (NP3 only has trailing)
- (Q1) Right-Click Convert Case - Add case conversion to context menu - ✅ IMPLEMENTED
- Issue: #5403
- (Q2) LaTeX Input Method - LaTeX character insertion (
\alpha→ α) - (Q2) Base64 Encode/Decode - ✅ IMPLEMENTED via
IDM_EDIT_BASE64ENCODE/DECODE - (Q1) Insert Unicode Control Characters - LRM, RLM, ZWJ, ZWNJ, etc.
- (Q2) Number Base Conversion - Binary/Decimal/Octal/Hex - ✅ IMPLEMENTED
- Issue: #5059 - TinyExpr output in hex/binary - ⚠ Validation ❗
- (Q2) Character Map Conversions - Fullwidth↔Halfwidth, CJK transforms (
LCMapStringEx) - (Q1) Insert GUID - ✅ IMPLEMENTED via
IDM_EDIT_INSERT_GUID(Ctrl+Shift+.) - (Q1) Insert Shebang - Insert interpreter line
- (Q1) Insert Timestamps - ✅ IMPLEMENTED via
IDM_EDIT_INSERT_SHORTDATE/LONGDATE(Ctrl+F5, Shift+F5) andCMD_INSERT_TIMESTAMP - (Q2) Time/Date Expressions in TinyExpr - Support
time()/ date arithmetic in expression evaluator- Issue: #4760
- (Q1) Clarify "Remove Duplicate Lines" naming - Two submenu entries have different meanings, confusing UX
- Issue: #5154
Navigation
- (Q3) Navigate Backward/Forward - VS Code-like history navigation
- Remark: maybe description of change-history navigation is a start.
- (Q2) Brace Find Enhancement - Search backward for nearest brace when not at one - ✅ IMPLEMENTED
- Issue: #4863 - ⚠ Validation ❗
- (Q2) Go to Block Start/End - Jump to enclosing block
- Fixed by Bracket navigation, incl. Selection
- No solution for Python-like "Block by Indent" navigation
- (Q2) Go to Sibling Block - Navigate between sibling code blocks
- (Q2) Touchpad Horizontal Scroll - Direct touchpad left/right scrolling
- Issue: #3468
- (Q1) Toggle Focus Find/Main - Shortcut to switch focus
- Issue: #5395
View Options
- (Q2) Toggle Fullscreen - ✅ IMPLEMENTED via
SCR_FULL_SCREENmode - (Q3) Split View - View two parts of same document
- Issue: #2577
- (Q1) Show Unicode Control Characters - Toggle visibility
- (Q2) Line Selection Modes - VS style, Normal, Old VS
- (Q1) Disable Multiple Cursors Option - ✅ IMPLEMENTED via
IDM_SET_MULTIPLE_SELECTIONtoggle- Issue: #4033 - ✅ Resolved
- (Q1) Scroll Past Last Line Options - ✅ IMPLEMENTED via
Settings.ScrollPastEOF(simple on/off, not multiple options) - (Q2) Optimize Syntax Scheme Dialog - Show detected scheme at top of list
- Issue: #5302
- (Q1) Alphabetical Common Base Settings - Sort scheme settings alphabetically
- Issue: #4627
- (Q2) Find Dialog Position Persistence - ✅ IMPLEMENTED via
FindReplaceDlgPosX/Ysaved to INI- Issue: #3905 - ✅ Resolved
- (Q2) Configurable Font Priority/Fallback List - User-editable preferred Code/Text font chain
- Issue: #4611
- (Q2) Improve Selection & Convert Panel layout
- Issue: #5074
- (Q2) Separate Recent Files Menu - Split MRU out of File menu
- Issue: #5177
- (Q3) Discussion: Gray out menu items when no selection
- Issue: #4938
- (Q3) Keep current line visible after Word-Wrap toggle
- Issue: #4944
- (Q2) MiniPath: "Minimize on Close" option
- Issue: #4946
Copy/Clipboard
- (Q2) Copy as RTF - Rich text copy with syntax highlighting
- (Q2) Copy/Cut/Paste Binary - Binary data handling
- (Q1) Copy All - ✅ IMPLEMENTED via
IDM_EDIT_COPYALL(Alt+C) - (Q1) Copy Add - ✅ IMPLEMENTED via
IDM_EDIT_COPYADD(Ctrl+E) - (Q1) Copy Filename Options - ✅ IMPLEMENTED
IDM_EDIT_INSERT_FILENAME- Copy filename (Ctrl+F9)IDM_EDIT_INSERT_DIRNAME- Copy directoryIDM_EDIT_INSERT_PATHNAME- Copy full path
Additional Micro Features
- (Q1) Increment/Decrement Number - Modify number at cursor (Ctrl+Alt++/-)
- (Q2) Show Hex View - Display hex representation of selection
- (Q1) CSV Options Dialog - Configure CSV delimiter/qualifier
- CSV Rainbow Lexer (home-brew) has an auto-detect-delimiter
- (Q3) Large File Mode - Optimized mode for files >2GB
- (Q2) Online Search - ✅ IMPLEMENTED via
WebTemplate1/2(Google, Wikipedia) - (Q2) Open Path or Link - Open file path or URL under cursor
- Issue: #3926 - Support relative file:// paths
- (Q1) Open Containing Folder - Open the folder containing the current file in Explorer
- Reference: Notepad4 implements via
CMD_OPEN_CONTAINING_FOLDERandEditOpenSelection(OpenSelectionType_ContainingFolder)
- Reference: Notepad4 implements via
Windows Integration
- (Q3) Explorer Preview Handler - Preview text files in Explorer pane
- Issue: #5510
- COM DLL implementing
IPreviewHandlerinterface - Optional installer component