# Editor integration ## Live language server `avril lsp --typescript=PATH [--project=DIR]` provides unsaved source overlays, diagnostics, basic hover, definition navigation, and conservative completion through unmodified native TypeScript. It uses avril's real configuration, per-referrer resolution, package/declaration graph, cache, lock, vendor, and acquisition policy. Open local documents are graph roots; unsaved import changes and filesystem/config changes refresh the graph without generating snapshots. Editor refreshes never write lockfiles, tsconfigs, or application sources. The separate [`avril-lsp` crate](../lib/lsp/README.md) accepts immutable generations from the runtime project service. The [VS Code client](../editors/vscode/README.md) launches Rust directly. This remains an early implementation: generations are rebuilt rather than incrementally updated, and the crate documentation lists the remaining checking/discovery limitations. ## VS Code Install the extension from [`editors/vscode`](../editors/vscode/README.md), configure `avril.lsp.backend` and `avril.lsp.executable`, and trust the workspace. The client automatically starts when the first workspace folder is local and contains an `avril.conf` directly at its root; nested configurations do not trigger startup. Otherwise, use **avril: Start Language Server**. Keep VS Code's built-in TypeScript extension enabled: avril suppresses its competing results for the active folder while the server runs and restores them when it stops. Other workspace folders retain their own language features. Set `avril.lsp.autoStart` to `false` to opt out. No generated tsconfig, snapshot, project-local npm installation, or legacy manifest is required. Backend installation and the remaining feature limits are covered in the [LSP documentation](../lib/lsp/README.md). ## `avril.conf` highlighting The standalone extension includes `avril.conf` highlighting for comments, quoted strings, unquoted keys, and nested containers. Its source grammar lives in `editors/vscode/`. This does not make `avril.conf` JSON or executable JS; avril's custom parser remains authoritative.