Problems with unsupported Isabelle/PIDE editors

Makarius makarius at sketis.net
Mon Mar 9 16:52:42 CET 2026


On 09/03/2026 16:17, Andreas Kurz wrote:
> On 2026-03-09 13:46, Makarius wrote:
>>> While I know Neovim falls outside the officially supported environments, 
>>> this bug affects the LSP servers JSON serialization under certain 
>>> configurations, so it would be great if this could be addressed.
>>
>> Can you point to the relevant Neovim sources, presumably also by Thomas Lindae?
> 
> So the Neovim plugin that I use is this one: https://github.com/Treeniks/ 
> isabelle-lsp.nvim
> The initialization of the server or rather the definition of the command is 
> done here: https://github.com/Treeniks/isabelle-lsp.nvim/blob/master/lua/ 
> utils.lua#L9
> ofcourse with the option `vscode_html_output=false` set to false, then 
> rendering the content directly with the decorations in the terminal.

I've looked through this briefly. Thomas Lindae boldly claims "This plugin 
requires changeset aa77be3e8329 or later of Isabelle to work." as if there 
would be a global principle of monotonicity on the changeset history, without 
any precautions to actually get there.

I will not give a lecture on proper software design and maintenance. Instead, 
I have now produced this change:

changeset:   84196:f9bed2fc64c8
tag:         tip
user:        wenzelm
date:        Mon Mar 09 16:40:21 2026 +0100
files:       src/Tools/VSCode/src/lsp.scala 
src/Tools/VSCode/src/vscode_resources.scala
description:
recover json_entries from b2857541a531: required for unproven Neovim 
experiments, see also isabelle.vscode.Pretty_Text_Panel with 
vscode_html_output=false;
renamed "json" to "notification", to emphasize its semantics;


That does not mean that the Neovim experiment will still work for the next 
Isabelle release, it can easily break again the way it has been done. Someone 
who cares about it needs to actively support its case within the specified 
time window: https://sketis.net/2025/plan-for-isabelle2026-october-2026


 > If you plan to create a general LSP that works for editors outside of VSCode
 > then a JSON protocol would be prefered.

We don't plan that, because LSP, despite its popularity, needs to be counted 
as a failure. It covers too few aspects of what is really required. And the 
JSON wrapping for the protocol messages is a performance bottle-neck.

Whenever we redo Isabelle/VSCode seriously, there will be a more direct, 
non-JSON protocol.


	Makarius



More information about the isabelle-dev mailing list