TL;DR: I’m not seeing input-cell hovers / completions / etc for our fully-functioning (LSP-driven) custom-language IntelliSense impls, nor output-cell syntax-coloring with text/x-mylanguageid
, what setup boilerplate code am I missing?
So my VSCode extension based on vscode-languageclient
and a custom backing LSP has all the essentials functioning well in normal VSCode text editors: completions, hovers, document-symbols (and workspace symbols search), go-to-definition and list-references.
For our REPL UX, I’m doing a custom NotebookSerializer and NotebookController. Hooked up properly to the notebooks
contribution. They do work fine with regards to serializing and executing. BUT, where’s all that custom-language-extension UX goodness that I got working so perfectly well in the text-editor tabs?
1. No completions, hover, go2def etc
In these Notebooks, other than syntax highlighting (for inputs, not outputs), there’s none of all that well-working language-extension stuff that’s already working in normal text editors for our language. For the input cell: no completions, no hover, no go2def via ctrl+click or F12, nothing! Just syntax coloring.
2. No output-cell syntax coloring with text/x-mylanguage
With the cell output mime
d to text/x-gerbil
(the gerbil
language ID being properly registered), that output cell isn’t syntax-highlighted at all (right now, the output is returned to be the input-cell’s value so it’s easy to tell there’s no highlighting). But changing it in my NotebookController code to text/x-javascript
or text/x-clojure
(VSCode builtins) does syntax-color the output cell!
Here it is with text/x-gerbil
output-cell mime
, while the input cell has language ID gerbil
:
To avoid this fully-properly-registered custom language ID having second-class UX in Notebooks, when it’s first-class in the normal code text-editor tabs, what kind of setup boilerplate am I missing that’s evidently not mentioned in VSCode’s Notebooks extension guide?