What completes at the caret
· 2 min read
The language server published diagnostics and nothing else. It now answers what completes at a caret, what is under it, and where that is defined, from the same list the reference is printed from.

What landed
- Completion.
physics2d::gives that module's 66 functions and 48 constants.node.body2d.gives what acts on that component, plus the six a handle always answers.this.gives the script'sexports()andpub fns. - Hover and signature help. A function's signature, and the line the reference prints for it.
- Go-to-definition.
⌘B. A projectpub fnopens its file at its line; engine API has no file, so it opens the Docs dock. - A Docs dock. The reference, module by module, read from the running engine rather than a file, so a plugin's own module is in it.
- Formatting.
balaur fmt ., with--checknaming what would change and exiting 1.⌥⇧Fin the editor. - Rename.
⌘⇧R, across the files a script'smoddeclarations reach, every match listed before anything is written. - A VS Code extension.
editors/codespawnsbalaur lsp, so it shows what the Script persona shows. Zed and Neovim get a recipe each.
Where the completions come from
- The engine's own record. 39 modules, 638 functions, 368 constants, as
declared. The same list
balaur apiprints and the reference is built from. - A lint keeps it complete. CI fails on a function with no doc line.
Rune's own server is not reusable
- Its completion is
pub(super). The one public entry owns its stdin loop, and the feature pulls in tokio, syntect, handlebars and rust-embed. - Two pieces came across.
Unit::debug_info()lists a unit's functions, andrune::fmtcosts nothing beyondalloc. - One needed the fork.
Context::iter_functionswaspub(crate); opening it up is what completes"".len().
Semantic tokens, inlay hints and code actions are not planned. The scripting manual has the full list.
