Skip to content

feat: add Deno language server support - #1778

Open
shiersa wants to merge 1 commit into
oraios:mainfrom
shiersa:feat/deno-language-server
Open

feat: add Deno language server support#1778
shiersa wants to merge 1 commit into
oraios:mainfrom
shiersa:feat/deno-language-server

Conversation

@shiersa

@shiersa shiersa commented Jul 29, 2026

Copy link
Copy Markdown

Summary

Adds 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 (.ts/.tsx/.js/.jsx/…), so it is not auto-detected. Requires the deno CLI on PATH (it bundles the language server).

This is a fresh implementation against the current DependencyProvider architecture, following .serena/memories/adding_new_language_support_guide.md. (There is an older, stalled PR #1048 from before that refactor; this does not build on it and deliberately avoids the auto-detect / replace-TypeScript behaviour that overlapping extensions can't disambiguate.)

Changes

  • src/solidlsp/language_servers/deno_language_server.py — the language server (deno lsp, single-path dependency provider, TS-family language ids)
  • src/solidlsp/ls_config.pyDENO enum, file-extension matcher, factory wiring, experimental flag
  • test/solidlsp/deno/test_deno_basic.py + test/resources/repos/deno/test_repo/ — tests + a minimal Deno repo
  • pyproject.tomldeno pytest marker
  • README.md, docs/01-about/020_programming-languages.md, CHANGELOG.md — docs

Testing

Verified locally against deno 2.9.0: deno lsp returns document symbols and resolves cross-file go-to-definition and find-references on the test repo.

CI note: the deno-marked test job needs deno installed (e.g. denoland/setup-deno) — happy to add that here or as a follow-up.

Checklist

  • This PR follows the guidelines in CONTRIBUTING.md regarding the scope of PRs (isolated addition of a new language server).
  • For changes that add features, I have added an entry to CHANGELOG.md.

@shiersa
shiersa force-pushed the feat/deno-language-server branch 2 times, most recently from 1af6e49 to d4b8bee Compare July 29, 2026 07:01
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.
@shiersa
shiersa force-pushed the feat/deno-language-server branch from d4b8bee to 1b9dc2d Compare July 29, 2026 18:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant