1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-12-22 15:24:46 -05:00
denoland-deno/cli/lsp
Ben Noordhuis 2828690fc7
fix(lsp): fix deadlocks, use one big mutex (#9271)
The LSP code had numerous places where competing threads could take out
out locks in different orders, making it very prone to deadlocks.
This commit sidesteps the entire issue by switching to a single lock.

The above is a little white lie: the Sources struct still uses a mutex
internally to avoid having to boil the ocean (because being honest about
what it does involves changing all its methods to `&mut self` but that
ripples out extensively...) I'll save that one for another day.
2021-01-26 10:55:04 +01:00
..
analysis.rs chore: update copyright to 2021 (#9092) 2021-01-11 18:13:41 +01:00
capabilities.rs feat(lsp): Add textDocument/implementation (#9071) 2021-01-13 08:53:27 +11:00
config.rs chore: update copyright to 2021 (#9092) 2021-01-11 18:13:41 +01:00
diagnostics.rs fix(lsp): fix deadlocks, use one big mutex (#9271) 2021-01-26 10:55:04 +01:00
documents.rs fix(lsp): handle mbc documents properly (#9151) 2021-01-22 21:03:16 +11:00
language_server.rs fix(lsp): fix deadlocks, use one big mutex (#9271) 2021-01-26 10:55:04 +01:00
mod.rs fix(lsp): handle mbc documents properly (#9151) 2021-01-22 21:03:16 +11:00
README.md refactor: rewrite lsp to be async (#8727) 2020-12-21 08:44:26 -05:00
sources.rs fix(lsp): fix deadlocks, use one big mutex (#9271) 2021-01-26 10:55:04 +01:00
text.rs fix(lsp): handle mbc documents properly (#9151) 2021-01-22 21:03:16 +11:00
tsc.rs fix(lsp): fix deadlocks, use one big mutex (#9271) 2021-01-26 10:55:04 +01:00
utils.rs chore: update copyright to 2021 (#9092) 2021-01-11 18:13:41 +01:00

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.