00:00:00 - Intro
00:00:52 - Getting set up
00:05:52 - Starting from Scratch
00:12:40 - The initialize method
00:19:38 - Processing messages in batches
00:24:18 - Responding to initialize
00:30:43 - Implementing completion
00:42:45 - Document Synchronization
00:56:24 - Smarter completion
01:07:02 - Testing against Neovim
01:08:23 - Outro / Next Steps
In this video, we'll start building our own language server in TypeScript by following the Language Server Protocol. We'll build the core functionality of initialization, text completion, and document synchronization. Beginners welcome!
Final code: https://github.com/semanticart/lsp-from-scratch
- Spec: https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/
- Minimum Viable VS Code Language Server Extension: https://github.com/semanticart/minimum-viable-vscode-language-server-extension
- Neovim LSP setup: https://gist.github.com/semanticart/1de8b5ed7752bb0e7d74a7d4a8fe23f4
- VSCode Language Server npm library: https://www.npmjs.com/package/vscode-languageserver