The goal of this project is to develop a new language server for Julia, currently called "JETLS". JETLS aims to enhance developer productivity by providing advanced static analysis and seamless integration with the Julia runtime. By leveraging tooling technologies like JET.jl, JuliaSyntax.jl and JuliaLowering.jl, JETLS aims to offer enhanced language features such as type-sensitive diagnostics, macro-aware go-to definition and such.
This repository manages JETLS.jl, a Julia package that implements a language
server, and jetls-client,
a sample VSCode extension that serves as a language client for testing JETLS.
For end-user documentation including installation instructions, configuration options, and feature guides, please visit the user guide documentation.
This README focuses on development-related information such as the project roadmap, implementation status, and developer resources.
This is a summary of currently implemented features and features that will likely be implemented in the near future, for those who want to test this server. Please note that not only the progress of the list, but also the structure of the list itself is subject to change.
- Analysis
- Document synchronization
- Incremental analysis
- JuliaLowering integration
- Recursive analysis for dependencies
- Cross-server-process cache system
- Diagnostic
- Syntax errors
- Lowering errors
- Undefined bindings
- Unused bindings
- Potential
MethodError - Configuration support
- Completion
- Global symbol completion
- Local binding completion
- LaTeX/Emoji completion
- Method signature completion
- Property completion
- Signature Help
- Basic implementation
- Macro support
- Argument type based suggestion
- Definition
- Method defintion
- Global binding definition
- Local binding definition
- Type-aware method definition
- Hover
- Method documentation
- Global binding documentation
- Local binding location
- Type-aware method documentation
- Type of local binding on hover
- Formatting
- Runic integration
- JuliaFormatter integration
- Make formatting backend configurable
- Document Highlight
- Local binding
- Global binding
- Field name, dot-accessed bindings
- Rename
- Local binding
- Global binding
- Field name
- TestRunner.jl integration
- Code lens for running individual
@testsets - Code actions for running individual
@testsets - Code actions for running individual
@testcases - Inline test result diagnostics
- Code lens for running individual
- Configuration system
- Type stable config object implementation
- Support LSP configurations
- Documentation
- Schema support
- Parallel/concurrent message handling
- Work done progress support
- Message cancellation support
- Notebook support
- Release
- Publish a standalone VSCode language client extension
- Make installable as Pkg executable app
- Environment isolution
- Automatic server installation/update for
jetls-client - Integration into julia-vscode
The following documents contain specific items that should be referenced when developing JETLS:
- DEVELOPMENT.md: Developer notes
- AGENTS.md: Specific coding rules (recommended reading for human developers as well)
Meta-level discussions, research, and ideas related to the development of JETLS are compiled as Obsidian notes at https://publish.obsidian.md/jetls.
MIT License. See LICENSE.md for details.