Docs Reference
Language servers
Install the language servers easl uses for hover, definitions, references and outlines, and tell it where to find one.
All docs pages
Code tiles answer hover, Go to Definition (⌃⌘J), Find References (⌃⌘R) and Outline (⌃⌘O) from a language server. easl runs its own servers: one per language and project, started when a code tile first needs it, stopped after 5 minutes without requests, at most 4 at once.
Without a server, navigation still works from text search: Go to Definition takes the lines that declare the name, Find References lists the word matches, and Outline lists declarations from the syntax tree. The panel says it’s text search, and where easl looked for a server.
Install
Install the servers for the languages you use:
| Language | Server | Install |
|---|---|---|
| Swift | sourcekit-lsp | Comes with Xcode or the Command Line Tools |
| Python | pyright | npm install -g pyright |
| TypeScript, JavaScript | typescript-language-server | npm install -g typescript-language-server typescript@5 |
| Go | gopls | go install golang.org/x/tools/gopls@latest |
| Rust | rust-analyzer | rustup component add rust-analyzer |
typescript-language-server needs typescript@5: TypeScript 7 has no tsserver.
How easl finds a server
Apps started from the Dock get a minimal PATH, so easl looks through your login shell, in this order:
- The path in
EASL_LSP_<LANGUAGE>, if set:EASL_LSP_SWIFT,EASL_LSP_PYTHON,EASL_LSP_TYPESCRIPT,EASL_LSP_GO,EASL_LSP_RUST. - The command on your login shell’s PATH.
- nvim’s mason (
~/.local/share/nvim/mason/bin), and~/go/binfor gopls. rustup which rust-analyzer, for rust-analyzer.
A server anywhere else (Zed’s, a custom build) needs the variable, for example in ~/.zprofile:
export EASL_LSP_RUST=/path/to/rust-analyzer
easl looks again 30 seconds after a miss, so a server you install while easl runs is picked up without a restart.
Projects
A server’s project root is the nearest project marker above the file (Package.swift, pyproject.toml, tsconfig.json or package.json, go.mod, Cargo.toml, …), never above the board’s folder.
Swift: easl runs sourcekit-lsp with background indexing off, so opening a code tile never starts a swift build in your repository. Definitions and references come from the index your own builds write; an empty answer says so.