Editor tooling
Run oroc language-server from a project with oro.toml to connect an installed language server to Oro's build model. Choose one language per process; an editor can launch multiple processes for the same project.
oroc language-server --language typescript .
Before you start: Node.js 22+, the selected language server on the editor's PATH, and the relevant target tools. Oro does not download language servers automatically. Stdout is reserved for LSP; build/preparation messages go to stderr. See the complete command options.
Choose a language#
| Language | Default backend | Model and limits |
|---|---|---|
| Kotlin | kotlin-language-server, fwcd adapter |
Android model; Java 21 for editor qualification, separate from Java 17 native Android builds |
| TypeScript / JavaScript / React | typescript-language-server --stdio |
Install TypeScript alongside the server; web editing does not require Gradle or an Android SDK |
| C / C++ / Objective-C / Objective-C++ | clangd |
Native target model; C-family language-server launch is unavailable on Windows in this release |
| Swift | sourcekit-lsp |
Swift 6.0+ / Xcode 16+ for compiler settings, rename, and formatting support |
| Custom language | Configured stdio executable | Backend owns project discovery unless a dedicated adapter exists |
Windows TypeScript editing, C++ model export, and runtime builds remain available despite the C-family language-server launch limit. A model being exportable does not prove that every backend can consume it.
Configure the backend#
Add only necessary overrides to oro.toml:
[language_server.typescript]
command = "typescript-language-server"
args = ["--stdio"]
[language_server.cpp]
command = "clangd"
args = ["--background-index"]
command names one executable, not a shell command. Relative executable paths resolve against the project root; args is an array passed literally and replaces the default arguments. A language-specific table overrides its family table. --server overrides the executable without discarding configured arguments. Custom stdio adapters own discovery and reject Oro's --prepare, --refresh, and --offline model controls.
Export and inspect models#
oroc tooling typescript .
oroc tooling doctor .
Use tooling kotlin, tooling cpp, tooling typescript, and tooling swift for target models. tooling doctor reports prerequisites and model freshness. Check each command's platform/architecture and preparation options before exporting a native target.
The directory containing oro.toml is the recommended workspace root; oro.ini is also recognized. Explicit project directories and --config override editor root discovery. Otherwise the wrapper uses initialize workspace roots and falls back to its working directory only when those roots are absent. Keep installed API/native inputs matched and refresh stale models after source or target changes.
Editor clients and process recovery#
The release includes a VS Code client under editors/vscode; follow its installation instructions. The language-server guide includes Coc configuration, supported combinations, model identity, preparation, and recovery details.
The wrapper owns backend startup, cancellation, and process lifecycle. Its preparation/startup timeout defaults to 300000 ms. Use --startup-timeout deliberately for a slow first preparation; do not route build logs into LSP stdout or assume a failed backend is ready because a model file exists. Release qualification tests backend lifecycle and cancellation, but does not imply every installed editor/server combination has been qualified.
Source repository · Edit this page · View Markdown