JJ LSP 后续
摘要
作者描述了即将推出的 LSP 3.18 Text Document Content Request 功能如何通过提供虚拟文档,为 jj (Jujutsu VCS) 实现不那么 hacky 的 Magit 风格用户体验。
<header>
<h1>JJ LSP 后续</h1>
<time class="meta" datetime="2026-03-05">2026 年 3 月 5 日</time>
</header>
<p>在 <a href="https://matklad.github.io/2024/12/13/majjit-lsp.html"><em>Majjit LSP</em></a> 中,我描述了一个想法:利用 LSP 协议,一劳永逸地为 <a href="https://www.jj-vcs.dev">jj</a> 实现 <a href="https://magit.vc">Magit</a> 风格的用户体验。今天我了解到,即将推出的 LSP 3.18 版本包含一项功能,可以大大降低这种实现的 hacky 程度:<a href="https://microsoft.github.io/language-server-protocol/specifications/lsp/3.18/specification/#workspace_textDocumentContent" class="display"><em>Text Document Content Request</em></a></p>
<p>LSP 现在可以提供虚拟文档,这些文档实际上并未在磁盘上物化。因此:</p>
<figure>
<img alt="" src="https://github.com/user-attachments/assets/f65cedf9-5fa8-4506-b8bb-2e55e1ee1913" width="856" height="620">
</figure>
<p>现在可以是一个虚拟文档,其中高亮由语义令牌提供,诸如“签出此提交”之类的操作是代码动作,而“转到定义”则从虚拟文件中的 diff 跳转到工作树中的真实文件。</p>
<p>令人兴奋!</p>
查看缓存全文
缓存时间: 2026/05/16 03:33
# JJ LSP 后续
来源:https://matklad.github.io/2026/03/05/jj-lsp-followup.html
2026年3月5日
在《Majjit LSP》(https://matklad.github.io/2024/12/13/majjit-lsp.html)一文中,我描述了一个想法:利用 LSP 协议,一劳永逸地为 jj(https://www.jj-vcs.dev/)实现 Magit(https://magit.vc/)风格的用户体验。我今日得知,即将发布的 LSP 3.18 版本中有一个功能,可极大降低其 hackiness 程度:*文本文档内容请求*(https://microsoft.github.io/language-server-protocol/specifications/lsp/3.18/specification/#workspace_textDocumentContent)
现在,LSP 可提供虚拟文档,这些文档实际上并未在磁盘上物化。于是此:
如今可以成为这样一份虚拟文档,其中高亮由语义令牌提供,“检出此提交”等操作是代码动作,“转到定义”则从虚拟文件中的差异跳转到工作树中的实际文件。
令人兴奋!
相似文章
与 JJ 的对话
作者分享了使用 jj 版本控制工具与 Git 一起改进 PR 清理工作流程的经验,突出了其历史编辑和撤销等功能,同时指出了一些可用性问题。
jj v0.41.0 发布
Jujutsu (jj) v0.41.0 已发布,这款实验性版本控制系统迎来了更新,旨在提升易用性和冲突处理能力。
jj v0.43.0 发布
Jujutsu v0.43.0,一个与 Git 兼容的版本控制系统,旨在易用性和强大的历史重写功能,现已发布更新。
jujutsu v0.42.0 发布
Jujutsu (jj) 版本控制系统发布了 v0.42.0。Jujutsu 是一款开源 VCS,以 Git 作为存储后端,同时提供更符合人体工程学的操作界面,其功能设计灵感来源于 Mercurial、Sapling 和 Darcs。
Jujutsu 如何重新思考 Git 的工作副本和冲突模型
Jujutsu (jj) 是一个新的版本控制系统,它重新思考了 Git 的工作副本和冲突模型,在保持完全 Git 兼容性的同时,提供了更一致的工作流程。