feat: add Deno language server support

Add a Deno language server backed by the Deno CLI's built-in `deno lsp`,
serving TypeScript/JavaScript in Deno projects. Unlike the plain
typescript-language-server it understands Deno module resolution
(npm:/jsr:/https: imports) and the `Deno.*` global namespace.

It is experimental and must be selected explicitly via
`language_servers: [deno]`; it overlaps the TypeScript server on file
extensions, so it is not auto-detected. Requires the `deno` CLI on PATH.

Tests run in CI: the `deno` marker joins the other-langs batch, which now
installs Deno via denoland/setup-deno. Off-CI and wherever the CLI is
absent they skip through the central conftest guard, following the existing
pattern for toolchain-gated language servers. Hover is covered explicitly,
including hover on a `Deno.*` global, which is the capability this server
adds over the TypeScript one.
This commit is contained in:
shiersa committed 2026-08-06 23:21:42 +08:00
1 parent c7af2c09ef
commit 7a870878b8
13 files changed
+328 -14

No files matched your search

@@ -164,6 +164,12 @@ Some languages require additional installations or setup steps, as noted.
* **TOML**
(experimental; uses Taplo 0.10.0, taken from PATH if present, otherwise downloaded automatically)
* **TypeScript**
* **Deno**
(experimental; requires the `deno` CLI on PATH — it bundles the language server used here;
serves Deno TypeScript/JavaScript and understands `npm:` / `jsr:` / `https:` imports and the `Deno.*`
globals, which the plain TypeScript language server does not; overlaps `typescript` on file extensions,
so it is not auto-detected and must be set as the language explicitly — do not also enable `typescript`
for the same files)
* **Vue**
(3.x with TypeScript; requires Node.js v18+ and npm; supports .vue Single File Components with monorepo detection)
* **YAML**