Every path that takes the disk text as saved goes through adopt_disk, which sets the tab's mark and the view's baseline together; the merge branch no longer repeats it by hand. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
4 lines
1.3 KiB
Markdown
4 lines
1.3 KiB
Markdown
FAIL
|
||
|
||
apps/ely-mark/src/compare.rs:123 — 合并采用只把 `tab.mark` 改成磁盘文字的散列,没有同步 `MarkView.saved`;`view.adopt` 也不更新这个基线,`MarkView::modified` 仍与最初载入的文字比较。具体场景:打开 `base\n`,本地改成 `ours\n`,外部改成 `theirs\n`;比较时冲突选磁盘侧,再按“使用合并结果”。文字回报落定后,内存与磁盘都是 `theirs\n`,历史也等于新的 `tab.mark`,视图却仍报告 modified,`request_close` 在自动保存前仍弹保存询问,M-03 未完整修复(PRD FILE-02、§14.4)。Windows 与 WSL 的提取状态探针使用实际 `mark`、`modified` 和本行赋值,均得到“text equals disk: true; history equals tab mark: true; view modified: true”,同步视图基线后断言通过;这是状态探针,未运行 macOS 窗口测试。证据保留在 `C:/Users/zhang/Documents/M03-windows-probe.log` 与 WSL `~/M03-linux-probe.log`,探针目录已删除。相关 Cargo 测试在 WSL 通过;Windows 除已归属 W-02 的尾随空格路径用例外通过。修复方向:合并采用时同时把视图的保存基线设为磁盘文字,再把合并结果作为可撤销编辑采用;补测合并恰等于磁盘时无需保存、合并不同于磁盘时仍需保存及关闭询问。
|