# Language servers

Source: https://athas.dev/docs/language-servers

Set up completions, diagnostics, symbols, and navigation with language integrations.

Syntax colors and language intelligence are separate. Tree-sitter provides
[syntax highlighting](https://athas.dev/docs/syntax-highlighting); a language server can provide completions,
diagnostics, hover information, definitions and symbols.

## Set up a language

1. Open the project root, including its build files and dependency manifests.
2. Open **Integrations**, find the language, and read its installation requirements.
3. Install or enable its language tooling and any required runtime.
4. Open a source file and wait for the language server to initialize.
5. Use **LSP: Show Status** in the command palette to inspect active workspaces and errors.

Different integrations provide different capabilities. Installing a grammar does not guarantee
that a language server, formatter or linter is available.

## Use language intelligence

- Trigger suggestions and parameter hints from the editor or command palette.
- Use hover information and definition/reference actions where supported by the server.
- Open [Outline](https://athas.dev/docs/outline) for file symbols.
- Open [Diagnostics](https://athas.dev/docs/diagnostics) for errors and available quick fixes.
- Use [Formatting](https://athas.dev/docs/formatting) when the language integration provides a formatter.

## Restart or stop servers

Run **Language Server: Restart All Servers** after changing the environment or fixing a failed
server installation. **Language Server: Stop All Servers** stops active servers.
For Java projects, **Java: Refresh Project** and **Java: Organize Imports** are also available.

## When intelligence is missing

Check the language selected for the file, the integration's installed/enabled state, its required
runtime and the project root. Install your project's dependencies using its normal package manager.
Then inspect **LSP: Show Status** and [the Athas log](https://athas.dev/docs/troubleshooting#collect-a-useful-report).

A server can be running without supporting every action. Report the language, integration,
server error and a small reproduction when asking for help.
