Language servers
Which LSPs the built-in editor uses for diagnostics, completions, and navigation.
- Topic
- Settings
- Available on
- Available onDesktop
- Reviewed
- August 15, 2026
On this page
The built-in editor uses Language Server Protocol (LSP) servers for diagnostics, autocomplete, hover docs, go-to-definition, rename, and code actions. Glueprint discovers a set of language servers automatically when you open a folder.
Auto-discovered LSPs
When you open a folder, Glueprint scans for language servers it knows about and registers any it finds. Open Settings > Language servers to see what’s registered.
Each row shows:
- The language it handles.
- The LSP binary’s path (where it was found).
- Its current state.
Languages supported today
Glueprint’s discovery registry currently covers:
- Rust
- TypeScript and JavaScript
- Python
- Go
- PHP
- C#
- Java
If the language you want isn’t in this list, the discovery registry doesn’t have a built-in rule for it yet. We’re adding more over time.
Java and jdtls
Java uses Eclipse JDT Language Server (jdtls). Install a JDK 21 or
newer first (Eclipse Temurin is a good default); Settings > Diagnostics
carries a Java JDK row that tells you what Glueprint found.
Glueprint can download the language server for you. When no jdtls is on
PATH, the Java row in Settings > Language servers shows an Install
button: it fetches a pinned, checksum-verified build of jdtls and the
java-debug plugin into Glueprint’s cache and the row flips to Ready. A jdtls you put on PATH yourself always takes
precedence over the managed install.
The first time you open a Java file in a project, jdtls imports the Gradle or Maven build, which can take a minute or more. The row reads Indexing while that runs; completion and navigation already work, with results filling in as the import finishes. Each project root gets its own jdtls workspace in Glueprint’s cache, removed when you remove the worktree.
The project root is the directory with settings.gradle(.kts); otherwise the
outermost pom.xml in a contiguous Maven parent/module tree; otherwise the
directory with build.gradle(.kts). Language features cover .java files
only; Kotlin files get syntax highlighting from the editor.
C# and csharp-ls
First install the .NET 10 SDK. Then install csharp-ls:
dotnet tool install --global csharp-ls
csharp-ls needs the .NET 10 SDK as its own runtime, independently of the
target framework of the code you are editing. csharp-ls 0.24.0 or newer is
recommended. Older builds send a configuration request during startup;
Glueprint answers it with defaults, so they load a solution too, but they
miss later fixes.
A solution file anywhere up the tree wins over a nearer project file. Rooting the server at a single project inside a multi-project solution gives you a server that starts and looks healthy but cannot resolve symbols outside that one project.
Language features cover .cs files only. Razor (.cshtml, .razor) and F#
get syntax highlighting from the editor, not language features.
Settings > Diagnostics carries a .NET SDK row showing whether the SDK is installed, its version, and whether it meets the .NET 10 floor csharp-ls needs.
Re-detect
If you’ve installed an LSP after launching Glueprint, click Re-detect at the top of Settings > Language servers to rescan.
State
Each server has a state badge:
- Running — responding.
- Indexing — started and answering requests, but still importing or indexing the workspace. Results can be partial until it reaches Running. Servers that import a build (jdtls) sit here for a while on a first open.
- Idle — registered, not currently handling requests.
- Starting — launching now.
- Missing — the binary couldn’t be found.
- Crashed — the process died and Glueprint is showing you the last error.
Related topics
- Editor preferences for what’s tunable on the editor side.
- Editor & IDE for the rest of the editor’s features.