DSH 学习 · 语言服务

谁先占了一个扩展名,查询就归谁——与注册顺序无关。

每个语言服务器 Provider 原子地预留一组文件扩展名:校验和冲突检查全部通过才生效,失败时零残留。查询按文件的最终扩展名路由到唯一的服务器;缝只暴露 goToDefinition、findReferences、goToImplementation、hover 四个操作,没有 JSON-RPC 逃生门。

先押一个注:typescript-lsp 已预留 .ts,deno-lsp 也想预留 .ts——会发生什么?

当前选择写在地址栏 #state= 后面:刷新不丢。
分叉形态
路由到
注册失败
暴露的操作
独立校验

扩展名 → Provider 的唯一映射

预留 × 路由

左边是当前预留表(一个扩展名至多一行),右边是这次查询的落点。失败的注册不会在表里留下任何残行。

规则逐条重算

路由校验

独立校验自己重算原子性、路由结果与操作白名单;它不读渲染层的任何中间量。

    哪些结论可以带走

    能证明什么

      不能证明什么