JJ LSP Follow Up

matklad Tools

Summary

The author describes how the upcoming LSP 3.18 Text Document Content Request feature enables a less hacky implementation of Magit-style UX for jj (Jujutsu VCS) by providing virtual documents.

<header> <h1>JJ LSP Follow Up</h1> <time class="meta" datetime="2026-03-05">Mar 5, 2026</time> </header> <p>In <a href="https://matklad.github.io/2024/12/13/majjit-lsp.html"><em>Majjit LSP</em></a>, I described an idea of implementing <a href="https://magit.vc">Magit</a> style UX for <a href="https://www.jj-vcs.dev">jj</a> once and for all, leveraging LSP protocol. I’ve learned today that the upcoming 3.18 version of LSP has a feature to make this massively less 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 can now provide virtual documents, which aren’t actually materialized on disk. So this:</p> <figure> <img alt="" src="https://github.com/user-attachments/assets/f65cedf9-5fa8-4506-b8bb-2e55e1ee1913" width="856" height="620"> </figure> <p>can now be such a virtual document, where highlighting is provided by semantic tokens, things like “check out this commit” are code actions, and “goto definition” jumps from the diff in the virtual file to a real file in the working tree.</p> <p>Exciting!</p>
Original Article
View Cached Full Text

Cached at: 05/16/26, 03:33 AM

# JJ LSP Follow Up Source: [https://matklad.github.io/2026/03/05/jj-lsp-followup.html](https://matklad.github.io/2026/03/05/jj-lsp-followup.html) Mar 5, 2026In[*Majjit LSP*](https://matklad.github.io/2024/12/13/majjit-lsp.html), I described an idea of implementing[Magit](https://magit.vc/)style UX for[jj](https://www.jj-vcs.dev/)once and for all, leveraging LSP protocol\. I’ve learned today that the upcoming 3\.18 version of LSP has a feature to make this massively less hacky:[*Text Document Content Request*](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.18/specification/#workspace_textDocumentContent) LSP can now provide virtual documents, which aren’t actually materialized on disk\. So this: ![](https://github.com/user-attachments/assets/f65cedf9-5fa8-4506-b8bb-2e55e1ee1913)can now be such a virtual document, where highlighting is provided by semantic tokens, things like “check out this commit” are code actions, and “goto definition” jumps from the diff in the virtual file to a real file in the working tree\. Exciting\!

Similar Articles

jj v0.41.0 is out

Lobsters Hottest

Jujutsu (jj) v0.41.0 is released, introducing updates to the experimental version control system designed for improved usability and conflict handling.

jujutsu v0.42.0 released

Lobsters Hottest

Jujutsu (jj) version control system has released v0.42.0. Jujutsu is an open-source VCS that uses Git as a storage backend while providing a more ergonomic interface with features inspired by Mercurial, Sapling, and Darcs.

Markdown browser for LLMs

Reddit r/LocalLLaMA

The author introduces TextWeb, an open-source tool that renders web pages as markdown for LLMs instead of using expensive vision models, featuring CLI and MCP server support.

Better generated branch names with jj

Lobsters Hottest

The article presents a template alias for the jj version control system to generate more readable branch names by slugifying commit descriptions, improving usability over the default change ID-based names.

Jujutsu megamerges for fun and profit

Lobsters Hottest

A technical guide explaining the 'megamerge' workflow in Jujutsu, a version control system alternative to Git, which leverages octopus merges (commits with 3+ parents) to manage multiple concurrent branches and development contexts efficiently.