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 v0.41.0 发布
Jujutsu (jj) v0.41.0 已发布,这款实验性版本控制系统迎来了更新,旨在提升易用性和冲突处理能力。
jujutsu v0.42.0 发布
Jujutsu (jj) 版本控制系统发布了 v0.42.0。Jujutsu 是一款开源 VCS,以 Git 作为存储后端,同时提供更符合人体工程学的操作界面,其功能设计灵感来源于 Mercurial、Sapling 和 Darcs。
面向 LLM 的 Markdown 浏览器
作者介绍了 TextWeb,这是一个开源工具,它将网页渲染为 Markdown 格式供 LLM 处理,而非使用昂贵的大视觉模型,该工具支持命令行界面 (CLI) 和 MCP 服务器。
使用 jj 生成更好的分支名称
本文介绍了 jj 版本控制系统的一个模板别名,通过将提交描述转换为 slug 来生成更易读的分支名称,从而改善默认基于变更 ID 的命名方式的可用性。
Jujutsu 大规模合并:为了乐趣与收益
本技术指南介绍 Jujutsu(一款替代 Git 的版本控制系统)中的“megamerge”工作流,讲解如何利用章鱼式合并(octopus merges,即具有 3 个及以上父提交的提交)高效管理多个并发分支与开发上下文。