diff --git a/src/Notepad3.c b/src/Notepad3.c index 34127e952..f70db7d6d 100644 --- a/src/Notepad3.c +++ b/src/Notepad3.c @@ -1757,6 +1757,9 @@ static void SetFindReplaceData() if (g_flagMatchText) { // cmd line if (g_flagMatchText & 4) { s_FindReplaceData.fuFlags = (SCFIND_REGEXP | SCFIND_POSIX); + } else { + // /m without R flag: force text mode (clear regex flags) - fixes #5060 + s_FindReplaceData.fuFlags &= ~(SCFIND_REGEXP | SCFIND_POSIX); } if (g_flagMatchText & 8) { s_FindReplaceData.fuFlags |= SCFIND_MATCHCASE; diff --git a/todo/TODO.md b/todo/TODO.md index d01dbb10f..afab670ba 100644 --- a/todo/TODO.md +++ b/todo/TODO.md @@ -9,58 +9,59 @@ - Issue: [#5445](https://github.com/rizonesoft/Notepad3/issues/5445) - Code: `Notepad3.c:4788` - nested `FileSave()` returns bool, passed as FileSaveFlags - Fix: `FileSave((FileWatching.FileWatchingMode <= FWM_DONT_CARE) ? FSF_SaveAlways : FSF_None);` -- [ ] **BUG: Wrong working directory for new files** - Files created in Program Files instead of CWD +- [ ] **(Q2) BUG: Wrong working directory for new files** - Files created in Program Files instead of CWD - Issue: [#5306](https://github.com/rizonesoft/Notepad3/issues/5306) - NP3 changes CWD to exe directory during init - Fix: Resolve relative paths against original CWD before directory change -- [ ] **BUG: Encoding detection issue** - UTF-8 files detected as DOS-852 +- [ ] **(Q2) BUG: Encoding detection issue** - UTF-8 files detected as DOS-852 - Issue: [#5310](https://github.com/rizonesoft/Notepad3/issues/5310) - Affects German Windows 11, possibly other locales - Improve UTF-8 detection for files without BOM -- [ ] **BUG: Print status message persistent** - "Printing page x..." stays after print +- [ ] **(Q1) BUG: Print status message persistent** - "Printing page x..." stays after print - Issue: [#5313](https://github.com/rizonesoft/Notepad3/issues/5313) - Fix: Clear status bar after print completes -- [ ] **BUG: /m command line uses last search mode** - Should default to text mode +- [x] **(Q1) BUG: /m command line uses last search mode** - ✅ FIXED - Issue: [#5060](https://github.com/rizonesoft/Notepad3/issues/5060) -- [ ] **BUG: Crash on Windows Server 2022** - File Open/SaveAs crashes + - Fix: When `/m` is used without 'R' flag, explicitly clear SCFIND_REGEXP to force text mode +- [ ] **(Q3) BUG: Crash on Windows Server 2022** - File Open/SaveAs crashes - Issue: [#5066](https://github.com/rizonesoft/Notepad3/issues/5066), [#5080](https://github.com/rizonesoft/Notepad3/issues/5080) - Crash in ntdll.dll - needs investigation -- [ ] **BUG: Cannot save settings without folder** - Settings folder must exist +- [ ] **(Q1) BUG: Cannot save settings without folder** - Settings folder must exist - Issue: [#5075](https://github.com/rizonesoft/Notepad3/issues/5075) - Fix: Create settings folder if it doesn't exist -- [ ] **BUG: Replace dialog full-width caching** - Second replace uses wrong character +- [ ] **(Q2) BUG: Replace dialog full-width caching** - Second replace uses wrong character - Issue: [#4268](https://github.com/rizonesoft/Notepad3/issues/4268) - CJK full-width replacement cached incorrectly -- [ ] **BUG: Initial window position not working** - Position settings ignored +- [ ] **(Q2) BUG: Initial window position not working** - Position settings ignored - Issue: [#4725](https://github.com/rizonesoft/Notepad3/issues/4725) -- [ ] **BUG: Regex replace issue** - Verify if still present +- [ ] **(Q3) BUG: Regex replace issue** - Verify if still present - Issue: [#3531](https://github.com/rizonesoft/Notepad3/issues/3531) - Old bug from v5.21 - needs verification -- [ ] **BUG: Minipath options don't save** - FullRowSelect/TrackSelect broken +- [ ] **(Q2) BUG: Minipath options don't save** - FullRowSelect/TrackSelect broken - Issue: [#4116](https://github.com/rizonesoft/Notepad3/issues/4116) -- [ ] **BUG: Monitoring log not saved** - Setting not persisted +- [ ] **(Q1) BUG: Monitoring log not saved** - Setting not persisted - Issue: [#5037](https://github.com/rizonesoft/Notepad3/issues/5037) -- [ ] **BUG: LAN file freeze** - Freezes when network host offline +- [ ] **(Q3) BUG: LAN file freeze** - Freezes when network host offline - Issue: [#5050](https://github.com/rizonesoft/Notepad3/issues/5050) -- [ ] **BUG: Find/Replace patterns not updating** - Dropdown not refreshed immediately +- [ ] **(Q1) BUG: Find/Replace patterns not updating** - Dropdown not refreshed immediately - Issue: [#5134](https://github.com/rizonesoft/Notepad3/issues/5134) -- [ ] **BUG: Multiple file positions not saved** - Only last file's bookmarks/caret preserved +- [ ] **(Q3) BUG: Multiple file positions not saved** - Only last file's bookmarks/caret preserved - Issue: [#5151](https://github.com/rizonesoft/Notepad3/issues/5151) -- [ ] **BUG: grepWinNP3 crash** - Right-click search results crashes +- [ ] **(Q3) BUG: grepWinNP3 crash** - Right-click search results crashes - Issue: [#5158](https://github.com/rizonesoft/Notepad3/issues/5158) -- [ ] **BUG: PHP comment toggle** - Ctrl+Q not working in Web Source Code +- [ ] **(Q2) BUG: PHP comment toggle** - Ctrl+Q not working in Web Source Code - Issue: [#5163](https://github.com/rizonesoft/Notepad3/issues/5163) -- [ ] **BUG: AltGr shortcut conflict** - Can't type `}` `@` on non-US keyboards +- [ ] **(Q2) BUG: AltGr shortcut conflict** - Can't type `}` `@` on non-US keyboards - Issue: [#5220](https://github.com/rizonesoft/Notepad3/issues/5220) -- [ ] **BUG: Mouse scroll settings not updated** - Needs restart to apply +- [ ] **(Q1) BUG: Mouse scroll settings not updated** - Needs restart to apply - Issue: [#5223](https://github.com/rizonesoft/Notepad3/issues/5223) -- [ ] **BUG: Highlight current line broken** - Settings not respected (regression) +- [ ] **(Q2) BUG: Highlight current line broken** - Settings not respected (regression) - Issue: [#5270](https://github.com/rizonesoft/Notepad3/issues/5270) -- [ ] **BUG: File lock held too long on save** - Blocks FileSystemWatcher +- [ ] **(Q2) BUG: File lock held too long on save** - Blocks FileSystemWatcher - Issue: [#5301](https://github.com/rizonesoft/Notepad3/issues/5301) -- [ ] **BUG: Folder handle leak** - Can't rename/delete folders with opened files +- [ ] **(Q2) BUG: Folder handle leak** - Can't rename/delete folders with opened files - Issue: [#5342](https://github.com/rizonesoft/Notepad3/issues/5342) -- [ ] **BUG: Black line in Language menu** - Visual glitch in submenu +- [ ] **(Q1) BUG: Black line in Language menu** - Visual glitch in submenu - Issue: [#5361](https://github.com/rizonesoft/Notepad3/issues/5361) ## Medium Priority @@ -68,31 +69,37 @@ - [x] **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](../scintilla/np3_patches/001_directwrite_font_resolution.md) -- [ ] **SVG Toolbar Icons** - Resolution-independent toolbar with dark/light mode +- [ ] **(Q3) SVG Toolbar Icons** - Resolution-independent toolbar with dark/light mode - Auto-adapts to any DPI (100%-300%) - Dark/light mode color switching - Keep classic bitmap as fallback (ToolBarTheme 0/1) - Issues: [#5471](https://github.com/rizonesoft/Notepad3/issues/5471), [#5090](https://github.com/rizonesoft/Notepad3/issues/5090), [#4631](https://github.com/rizonesoft/Notepad3/issues/4631) (DPI scaling), [#5316](https://github.com/rizonesoft/Notepad3/issues/5316) (dark mode readability), [#5390](https://github.com/rizonesoft/Notepad3/issues/5390) (encrypted dialog) - See [research/svg-toolbar.md](research/svg-toolbar.md) -- [ ] **EditorConfig Integration** - Apply `.editorconfig` settings on file open +- [ ] **(Q3) EditorConfig Integration** - Apply `.editorconfig` settings on file open - Use [editorconfig-core-c](https://github.com/editorconfig/editorconfig-core-c) library - Support: indent_style, indent_size, tab_width, end_of_line, charset - See [research/editorconfig-integration.md](research/editorconfig-integration.md) -- [ ] **Autosave / Backup** - Periodic autosave and backup on save - - Timer-based recovery to `%APPDATA%\Notepad3\recovery\` - - Optional versioned backups: `.bak`, `.bak_1`, `.bak_2`, ... - - **AutoSave Settings Dialog** - Built-in autosave configuration UI +- [/] **(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) + - **Remaining**: + - Recovery folder (`%APPDATA%\Notepad3\recovery\`) not yet implemented + - Versioned backups (`.bak_1`, `.bak_2`) not yet implemented - Issues: [#1665](https://github.com/rizonesoft/Notepad3/issues/1665), [#370](https://github.com/rizonesoft/Notepad3/issues/370), [#512](https://github.com/rizonesoft/Notepad3/issues/512), [#4331](https://github.com/rizonesoft/Notepad3/issues/4331), [#3652](https://github.com/rizonesoft/Notepad3/issues/3652), [#5399](https://github.com/rizonesoft/Notepad3/issues/5399) - See [research/autosave-backup.md](research/autosave-backup.md) -- [ ] Installer testing on various Windows versions +- [ ] (Q2) Installer testing on various Windows versions - [x] **AVX2 Build** - ✅ Added x64_AVX2 to CI matrix - Issue: [#4240](https://github.com/rizonesoft/Notepad3/issues/4240) -- [ ] Language file updates -- [ ] **Move Beta Page to rizonesoft.com** - Host beta downloads on main site +- [ ] (Q2) Language file updates +- [ ] **(Q1) Move Beta Page to rizonesoft.com** - Host beta downloads on main site - Issue: [#1129](https://github.com/rizonesoft/Notepad3/issues/1129) -- [ ] **Improve Temp File Handling** - Better UX for files from archives +- [ ] **(Q2) Improve Temp File Handling** - Better UX for files from archives - Issue: [#5343](https://github.com/rizonesoft/Notepad3/issues/5343) -- [ ] **Force Save Option** - Allow saving unmodified files for strip trailing blanks +- [ ] **(Q1) Force Save Option** - Allow saving unmodified files for strip trailing blanks - Issue: [#5444](https://github.com/rizonesoft/Notepad3/issues/5444) - Code: `Notepad3.c:12042` - `bSaveNeeded` check skips save on unmodified files - Fix: Check strip-blanks setting before early return at line 12044 @@ -102,15 +109,15 @@ - [x] **CI Workflow** - ✅ Added MSVC builds (Win32/x64 Release) - Runs on push/PR to master alongside AppVeyor - [x] **ARM64 Build** - ✅ Added to CI matrix (Win32/x64/ARM64) -- [ ] **Clang-cl Build** - Alternative compiler for better warnings -- [ ] **Debug Build** - Catch debug-only assertions -- [ ] **PR Labeler** - Auto-label PRs based on files changed -- [ ] **Automatic Releases** - Create GitHub releases on tags with built artifacts -- [ ] **Changelog Generator** - Auto-generate release notes from commits/PRs -- [ ] **CodeQL Analysis** - Scans C++ code for security vulnerabilities -- [ ] **Dependency Review** - Checks for vulnerable dependencies in PRs -- [ ] **MSVC Code Analysis** - Microsoft's static analyzer (/analyze) -- [ ] **Nightly Releases** - Automated nightly builds via GitHub Actions +- [ ] **(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](https://github.com/rizonesoft/Notepad3/issues/5412) - Schedule: Daily at 2 AM UTC - Package: Portable ZIP with exe, lng, docs, themes, ini files @@ -118,10 +125,10 @@ ## Low Priority -- [ ] Documentation updates -- [ ] **Long Path Support** - Support paths >260 characters (Win10+) +- [ ] (Q1) Documentation updates +- [ ] **(Q2) Long Path Support** - Support paths >260 characters (Win10+) - Issue: [#3580](https://github.com/rizonesoft/Notepad3/issues/3580) -- [ ] **Additional Syntax Highlighting** - New language lexers +- [ ] **(Q3) Additional Syntax Highlighting** - New language lexers - Haskell: [#3035](https://github.com/rizonesoft/Notepad3/issues/3035) - Lexilla `LexHaskell.cxx` - Racket: [#3035](https://github.com/rizonesoft/Notepad3/issues/3035) - Could use Lisp/Scheme lexer - OpenCL: [#5374](https://github.com/rizonesoft/Notepad3/issues/5374) - C-like with extra keywords @@ -132,104 +139,113 @@ - Swift, Zig, Scala, F#, WASM, Vim, OCaml, Smali, GraphViz, Rebol - (Maybe) CSS in `