Pragtical v3.13.1 Release
Pragtical v3.13.1 is a bug-fix release that corrects a native tokenizer regression, makes workspace session handling reliable across project switches, fixes window state restoration after fullscreen, and refreshes stale document layouts after reloads. It also updates the bundled SDL3, SDL3_image, mbedTLS and plugins subprojects.
Native Tokenizer Fix
The native tokenizer skips regex rules whose starting characters cannot match the current position. That analysis could keep an incomplete character set after an optional prefix, causing valid matches to be skipped, such as numbers written without a sign.
The shortcut is now disabled when the analysis cannot determine every possible starting character, letting the regex engine handle the match instead. This restores correct highlighting for the affected language rules without giving up the optimization where it is still safe.
Thanks to Sebastian Hübner for reporting this issue.
Workspace Session Saving And Restoration
Switching projects could save an empty session before the restoration step ran, leaving extra session files behind and failing to restore the open tabs of the project being entered. Saving and stale restoration requests are now skipped during these transitions, so each project keeps the session it actually had.
Windows path and session-name casing is also handled consistently, which avoids overwriting another project's session or failing to find a saved one when the same path is spelled with different casing or separators.
Thanks to Vinfall for reporting this issue.
Window State Restoration After Fullscreen
Normal window geometry and the last windowed mode are now kept separate from transient fullscreen and minimized states. The native window mode is queried directly, so queued events can no longer overwrite the saved restore state after leaving fullscreen.
The live window is also preserved across a soft restart, and fullscreen events are followed to keep borderless decorations and hit testing in sync with the actual window state.
Stale Document Layouts After Reload
Reloading a document could leave parts of it blank because the view kept using
the old line count and layout even though the file had loaded completely. This
affected both the autoreload plugin and the doc:reload command.
The cached layout is now refreshed when a document is reloaded, including wrapping and folding in split views. Matching code blocks stay folded once the new fold scan finishes, so a reload no longer visually reshuffles the document.
Build Updates
The bundled subprojects were updated: SDL3 to v3.4.16, SDL3_image to v3.4.6, mbedTLS to v4.2.0, and the plugins repository to its latest commit, which adds new community plugins such as Ghostty terminal, indent rainbow, privacy glasses and freeze row.
Windows builds with newer MinGW headers were also fixed. Those headers expose
read and write declarations that conflict with SDL_net's socket helpers, so
NO_OLDNAMES is now defined when building SDL_net with MinGW, without
affecting other dependencies or compilers.
Downloads on GitHub.
Changes Log
Fixes
-
Fix native tokenizer start-character optimization (#620)
-
Fix workspace session saving and restoration (#618)
-
Fix window state restoration after fullscreen (#616)
-
Fix stale document layouts after reload (#613)
