Skip to content

[perf-T1] 消除 macOS 编辑器每键全文同步 #488

Description

@1lck

父任务

#467 macOS 交互帧预算:声明式 UI 热路径与可调节表面

依赖

不变量

连续输入时,编辑器不得在每个按键路径上执行 textView.string 的全文同步,也不得因为已经 dirty 的文档再次触发 Workbench 全树刷新。

范围

  • 重构 textDidChange 到文档模型/LSP/保存层之间的同步载荷。
  • 使用增量编辑描述、合帧缓冲或等价机制,保留撤销、保存、外部变更和冲突语义。
  • 保证 Cmd+S、自动保存和切换文档前会刷新最新编辑内容。
  • 为输入路径增加回归测试或源码门禁,禁止恢复全文同步。

明确不改

  • 不在本 PR 同时重写语法高亮。
  • 不在本 PR 修改 LSP 协议命令名或 C ABI。
  • 不通过关闭高亮、LSP 或 Git 装饰来获得假性能。

验收

  • 500 KiB 文件连续输入时,全文同步造成的 >50ms 主线程任务为 0。
  • 已 dirty 文档的按键不会调用 scheduleObjectWillChangeRelay
  • 文档保存、撤销、重做和外部修改冲突测试通过。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

macossomething related to macos strongly

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions