be10db10fd
The mutex was used to hide the fact that the Sources object mutates
itself when it's queried. Be honest about that and mark everything that
directly or indirectly mutates it as `mut`.
This is a follow-up to commit
|
||
---|---|---|
.. | ||
analysis.rs | ||
capabilities.rs | ||
config.rs | ||
diagnostics.rs | ||
documents.rs | ||
language_server.rs | ||
mod.rs | ||
performance.rs | ||
README.md | ||
sources.rs | ||
text.rs | ||
tsc.rs | ||
utils.rs |
Deno Language Server
The Deno Language Server provides a server implementation of the
Language Server Protocol
which is specifically tailored to provide a Deno view of code. It is
integrated into the command line and can be started via the lsp
sub-command.
⚠️ The Language Server is highly experimental and far from feature complete. This document gives an overview of the structure of the language server.
Structure
When the language server is started, a LanguageServer
instance is created
which holds all of the state of the language server. It also defines all of the
methods that the client calls via the Language Server RPC protocol.
Custom requests
The LSP currently supports the following custom requests. A client should implement these in order to have a fully functioning client that integrates well with Deno:
deno/cache
- This command will instruct Deno to attempt to cache a module and all of its dependencies. It expects an argument of{ textDocument: TextDocumentIdentifier }
to be passed.deno/performance
- Requests the return of the timing averages for the internal instrumentation of Deno.deno/virtualTextDocument
- Requests a virtual text document from the LSP, which is a read only document that can be displayed in the client. This allows clients to access documents in the Deno cache, like remote modules and TypeScript library files built into Deno. It also supports a special URL ofdeno:/status.md
which provides a markdown formatted text document that contains details about the status of the LSP for display to a user.