Snapshot document search state before dispatching highlight workers and
retain the searched document for the duration of each job.
Publish results through MainThreadLifetime and reject results when the
editor has changed document or search parameters. Remove the obsolete
worker counter and destructor wait used for editor lifetime management.
Use atomic cancellation flags in TextDocument::findAll() and protect
active-search map inspection during destruction.
Add regression coverage for concurrent cancellation, stale highlight
results, rapid backtick searches after a large multiline paste, and
editor destruction during active search.
Refs SpartanJ/ecode#956.
- Share immutable built-in document commands, editor command tables, default keybindings, and syntax color scheme storage across editor instances. Preserve mutations through copy-on-write storage and explicit command-removal tracking.
- Use ShortcutMap consistently with unordered lookup while retaining deterministic ordering where serialization or conflict resolution depends on it. Cache ambiguous syntax-extension checks and invalidate the cache when language definitions change.
- Prepare Git commit-detail diffs and sub-line changes on worker threads with cancellation and stale-request protection. Release raw patch memory before UI construction and add regression coverage for prepared and cancelled diffs.
- Add Diff Changed support and enable collapsible file headers for Diff HEAD, Diff Staged, and Diff Changes.
- Update translations, compatibility call sites, tests, and the efsw dependency.
- Lazily compute document line hashes, avoid redundant multiline insertion
walks, and defer longest-line measurement for large or exceptionally long
text changes.
- Cache default code editor keybindings, reserve common command storage, and
create UIDiffView image viewers only when an image diff requires them.
- Keep cached screen positions coherent when descendants are queried before
dirty ancestors, and add regression coverage for ancestor movement.
- Relocate font-rendering golden images into the unit-test asset directory
and resolve image fixtures independently of the current working directory.
- Fix spurious status entries for files moved between directories. Preserve the suffix after Git's abbreviated brace notation when parsing renamed paths from numstat output. This prevents directory moves such as `bin/{ => unit_tests}/assets/...` from producing truncated synthetic untracked entries like `unit_tests`. Add regression coverage for staged files moved into a different directory.
- Git Plugin now remembers between sessions the uncommited commit message.
by overwriting an occupied default shortcut, which treated user bindings like mod+d=duplicate-line-or-selection as stale
because that command is not in the default keybinding table. Now it only adds a default when the default shortcut is actually
free.
Added a regression test in src/tests/unit_tests/uicodeeditor_tests.cpp:108 covering the reported case: mod+d reassigned, then
an extra mod+e=show-markdown-preview binding exists. This was reported in SpartanJ/ecode#914.
• Implemented the splitter-level focus state cache, it will remember closed documents cursor state when reopened and it will restore cursor state per-code editor and not per-document (SpartanJ/ecode#893).