summaryrefslogtreecommitdiff
path: root/test/hxdiff.zig
diff options
context:
space:
mode:
authorGabriel Schneider <[email protected]>2026-07-31 04:15:41 -0300
committerGabriel Schneider <[email protected]>2026-08-01 15:02:08 -0300
commiteefac04995ffad847a4098f16d2e82ccab16438b (patch)
tree1c8e1e2f6e0474c1ebd7e5cddd7c60f523d5ed51 /test/hxdiff.zig
parent32b4245962b75916be0ebe89225375430e03c36f (diff)
downloadpardes-eefac04995ffad847a4098f16d2e82ccab16438b.tar.gz
pardes-eefac04995ffad847a4098f16d2e82ccab16438b.zip
open files follow the disk, and undo is the merge strategy
An external update is pushed onto the undo stack exactly like an edit the user typed, so unsaved work is one `u` away and pardes never has to merge anything. That is the design, not an implementation detail: the whole feature is pushUndo() then setContent(). One inotify instance in the tty shell, blocking in readVec through std.Io on a concurrent task started beside the pty readers — after loop.start(), so the forkpty ordering is untouched. It watches the containing DIRECTORY, because an editor rewrites by rename-over and a watch on the file would follow the dead inode, and it listens for CLOSE_WRITE rather than MODIFY, which is one event per finished writer and most of the debounce for free. Our own Save does not reach the undo stack: each watch keeps a hash of the bytes last seen on disk and save_file restamps it. A hash rather than mtime and size because the reload has to read the file anyway. The core stays sans-IO — one watch effect out, one file_changed event in, and a shell that cannot watch simply never sends the event, which is what the gui and the web platform do. Linux only; fanotify is what the build system uses and is rejected in a comment: it exists for thousands of directories across mounts, and sixteen panes of inotify is a third of the code with no kernel floor. New golden filewatch: edit without saving, overwrite from a shell in another column, watch it reload, undo, get the unsaved edit back. None moved.
Diffstat (limited to 'test/hxdiff.zig')
0 files changed, 0 insertions, 0 deletions