Parsec is a lightweight, fast, and minimal Language Server Protocol (LSP) implementation for the Julia programming language, written in Rust. It focuses on providing essential editor features with near-instant startup time, without relying on Julia's runtime or heavy compiler infrastructure.
- Fast: Written in Rust, designed for instant startup.
- Minimal: Focused on essential LSP features without heavy semantics.
- Hackable: Easy to extend and customize for personal workflows.
- Self-contained: No Julia runtime dependency.
- Set up
tower-lspserver with basic request handlers. - Implement
initializeandshutdownrequests. - Add support for
textDocument/didOpenanddidChange.
- Integrate
tree-sitter-juliafor incremental parsing. - Provide syntax diagnostics and error reporting.
- Support
textDocument/documentSymbol.
- Build a per-file symbol index.
- Support cross-file symbol lookup.
- Implement
workspace/symbolfuzzily.
- Implement simple completion.
- Add basic
go to definitionusing lexical scope heuristics. - Provide hover information with docstring extraction.
- Add rename support (best-effort, index-based).
- Implement simple formatter integration.
- Consider embedding Julia via
jlrsfor optional deeper features.
Work in progress — Parsec is in the early stages of development.
Expect frequent changes and experimental APIs.