# Editors and language tooling

One ships project-aware integrations for VS Code and Zed. Both are thin clients
over `one lsp` and the same versioned lifecycle commands used by the CLI; an
editor never becomes another project model or source of semantic truth.

## Open the project, not an isolated file

Open the directory containing `one.one`, keep the verified `one` installation
on `PATH`, and let the editor discover the nearest explicit project boundary.
The language client starts:

```console
one lsp --workspace <project-root>
```

VS Code may set `one.cli.path` to the selected One executable. Its separate
`one.lsp.path` setting is only for a dedicated syntax-server fallback; leaving
it empty keeps project resolution, embedded implementation tooling, and exact
lock evidence available through the CLI-hosted server. Zed likewise launches
`one lsp` over standard input and output.

## Work from one exact snapshot

Completion, hover, diagnostics, formatting, semantic tokens, references, and
definition navigation are bound to the open source revision, nearest
`one.one`, selected root, and exact `one.lock`. They do not query a newer
registry or infer an implementation language from body text.

Go to definition follows authored names into their canonical owner contracts,
package exports, language rules, normalizers, implementation claims, generated
SDK source maps, plans, artifacts, grants, receipts, and evidence. Meaning that
has no literal project file opens as a read-only virtual document under
`.one/vfs/`; those documents are disposable projections, never editable source
of truth.

An implementation body receives language-specific highlighting and analysis
only after its exact `using` profile and locked tooling admission match the
current claim. Rust and TypeScript public boundaries compose with their native
language tooling instead of fabricating `.one` definitions for private code.

## Edit malformed source honestly

The lossless parser keeps incomplete or malformed bytes as the current authored
state. Intact local references may still navigate, but the editor never shows
an older valid normalized value as though it described newer invalid text.
Fix the reported source error, save, and let the exact project check refresh
the semantic projection.

Formatting applies only after strict envelope acceptance. It canonicalizes
System IDL presentation while preserving implementation-body bytes until that
body's selected profile formatter is separately admitted.

## Use structured projections safely

VS Code can reopen a supported item as a synchronized form, table, graph, or
combined view. An edit proposes a bounded patch against the exact source
revision, reparses every affected input, reruns the required owner checks, and
commits one ordinary undoable workspace edit only if the base revisions still
match. If current source cannot be represented faithfully, the projection
becomes read-only and the lossless source view remains available.

Lifecycle tasks, the One sidebar, MCP discovery, terminal TUI, and shell all
call the same public operations. A cached badge or editor output filename is
never lifecycle evidence; restore work from an exact `plan:` or `operation:`
reference with ordinary `one inspect`.

Next: [learn the `.one` source language](/one/authoring/source-language) or
[use the One TUI](/one/guides/one-tui).

