Optimize bulk editor setup, deferred UI resources and Git plugin fixes

- 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.
This commit is contained in:
Martín Lucas Golini
2026-08-30 01:05:24 -03:00
parent caba2d4462
commit 3afcb3f2d2
17 changed files with 439 additions and 89 deletions
@@ -87,6 +87,8 @@ class GitPlugin : public PluginBase {
void registerSettings( SettingsPage& page ) override;
void onSaveState( IniFile* state ) override;
void onFileSystemEvent( const FileEvent& ev, const FileInfo& file ) override;
FileSystemListenerOptions getFileSystemListenerOptions() const override;