A VSCode client extension for JETLS.
JETLS is a new language server for Julia. 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 diagnostic, macro-aware go-to definition and such.
Note
JETLS.jl is not integrated with the julia-vscode extension yet.
To use JETLS from VSCode, install this jetls-client extension.
While we generally recommend disabling julia-vscode when using jetls-client,
this is not required; you can use both julia-vscode and jetls-client
in the same VSCode session.
However, since the LSP features provided by JETLS.jl differ in both type and quality
from those provided by julia-vscode's language server backend
(LanguageServer.jl),
you may encounter confusing situations where, for example, completion candidates
are provided from different backends.
- VSCode v1.96.0 or higher
- Julia v1.12.2 or later: Note that JETLS does not support Julia 1.12.1 or earlier, nor Julia 1.13+/nightly.
Warning
The jetls-client extension does not bundle JETLS.jl itself. You need to
install the jetls executable separately before using the extension.
- Install the
jetlsexecutable app, which is the main entry point for running JETLS:This will install thejulia -e 'using Pkg; Pkg.Apps.add(; url="https://github.com/aviatesk/JETLS.jl", rev="release")'jetlsexecutable to~/.julia/bin/. - Make sure
~/.julia/binis available on thePATHenvironment so thejetlsexecutable is accessible. You can verify the installation by running:If this displays the help message, the installation was successful andjetls --help
~/.julia/binis properly added to yourPATH. - Install
jetls-client:- Open VSCode
- Go to Extensions (Invoke the
View: Show Extensionscommand) - Search for
"JETLS Client" - Click
Install
- Open any Julia file
The extension will automatically use the jetls executable from your PATH.
Note
To update JETLS to the latest version, re-run the installation command:
julia -e 'using Pkg; Pkg.Apps.add(; url="https://github.com/aviatesk/JETLS.jl", rev="release")'To pin a specific version instead, use the release tag rev="YYYY-MM-DD":
julia -e 'using Pkg; Pkg.Apps.add(; url="https://github.com/aviatesk/JETLS.jl", rev="2025-11-25")'Most users do not need any further configuration beyond the installation steps above. The following settings are available for advanced use cases.
Configure the JETLS executable through the jetls-client.executable setting:
- Object form
{"path": string, "threads": string}: Customize the executable path or thread setting (default:{"path": "jetls", "threads": "auto"}) - Array form
string[]: Use a local JETLS checkout for development, e.g, (["julia", "--startup-file=no", "--history-file=no", "--project=/path/to/JETLS", "-m", "JETLS", "serve"])
The extension automatically selects the most appropriate communication channel based on your environment:
- Local development:
pipe- Complete isolation fromstdin/stdout, fastest for local communication - Remote SSH/WSL:
pipe- Works transparently across remote connections - Dev Containers:
stdio- Maximum compatibility for containerized environments
For most users, this automatic selection provides optimal performance and reliability without requiring manual configuration.
You can override the automatic selection using "jetls-client.communicationChannel": string:
"auto"(default): Automatic selection as described above"pipe": Uses Unix domain socket/named pipe"socket": Uses TCP socket (configure port with"jetls-client.socketPort": number, default0for auto-assign)"stdio": Uses standard input/output
For detailed information about each communication channel and when to use them, see the Communication channels documentation.
Static options that are sent to JETLS during startup can be configured through
VSCode's settings.json file using the "jetls-client.initializationOptions"
section.
These settings require a server restart to take effect.
For detailed initialization options and examples, see the Initialization options documentation.
JETLS behavior (diagnostics, formatting, etc.) can be configured through VSCode's
settings.json file using the jetls-client.settings section.
For detailed configuration options and examples, see the Configuration documentation.
.vscode/settings.json
{
"jetls-client.settings": {
"full_analysis": {
"debounce": 2.0
},
// Use JuliaFormatter instead of Runic
"formatter": "JuliaFormatter",
"diagnostic": {
"patterns": [
// Suppress toplevel/inference warnings in test folder
{
"pattern": "(toplevel|inference)/.*",
"match_by": "code",
"match_type": "regex",
"severity": "off",
"path": "test/**/*.jl"
}
]
},
"testrunner": {
"executable": "/path/to/custom/testrunner"
}
}
}MIT License. See LICENSE.md for details.
{ "jetls-client.initializationOptions": { "n_analysis_workers": 2 } }