Developing a Language Plugin: LSP versus the Joy of Learning
summary
Built Luau support by combining IntelliJ’s LSP API with hand‑rolled features, getting 100 lines of code to boot a language server and basic completion and another 500 lines for auto‑download and platform binaries. Hits include an LSP id type mismatch that breaks diagnostics, missing features like rename unsupported (plus selection ranges, code vision, document symbols) that require 150+ lines to implement client‑side or fixing the server, so start with LSP but expect engineering and debugging.
AI-written summary · about
chapters (22)
- 0:00Language plugin development intro
- 1:12New languages still created?
- 2:58IDE support vs LSP
- 4:23How LSP works
- 5:04LSP plugin in IntelliJ
- 7:29LSP server distribution challenges
- 9:56Debugging LSP quirks
- 13:07Diagnostics: push vs pull
- 16:21Fixing LSP compatibility
- 18:28LSP features and config
- 21:20Unsupported LSP in IntelliJ
- 23:27Missing features manually
- 25:34LSP performance and indexing
- 27:21LSP pros and cons
- 28:24Building language plugins advice
- 32:22Q&A: IDE features in LSP
- 34:13Q&A: Lightweight editors vs IDEs
- 34:56Q&A: IDE native in LSP
- 37:01Q&A: Disable LSP interference
- 37:43Q&A: LSP file awareness
- 39:09Summary: LSP vs learning joy
- 42:42Final Q&A and closing
related talks
36mExperiences Building a Language Server Protocol Plugin
35mLanguage Server for Apache Camel: Java/Eclipse plugin developer perspective
31mGraal-LSP: A Language Server Implementation with Polyglot Support for the GraalVM
44mThe Language Server Protocol Why The Hype
30mImproving the development experience with language servers
40mIntegrating IDEs with Dotty the experimental Scala compiler
29mIntegrating Language Engineering into the Software Development Process
47mBattle of the Titans: LSP vs PSI (VS Code vs IntelliJ)
