Expand description
Server-initiated workspace/configuration plumbing
(Phase 4.1 follow-up; BC.8b reshape).
When a language server sends workspace/configuration (most
commonly during its post-initialize startup to pull
per-server settings) the client must reply with one value
per requested item:
{"items": [
{"section": "rust-analyzer.cargo.features", "scopeUri": null},
{"section": "rust-analyzer.checkOnSave", "scopeUri": null}
]}Pre-this-module the actor responded with [null, null] for
every request – spec-compliant but functionally useless.
With the §5.12 typed-options registry shipped + the TOML
loader from 4.2.g.5 (3a/3) caching the merged user + project
tree, the App can now look up each section against the
cached tree and surface the user’s actual config.
BC.8b (2026-06-24): reshaped onto the generic inbound primitive.
The bespoke ConfigurationBus (an mpsc sender with no wake, drained by a
host Editor::drain_inbound_configuration_requests method) is gone. The
supervisor now holds an InboundBus<InboundConfigurationRequest>
([lattice_mode::inbound]) whose send wakes the editor so a
server-initiated request is answered off-keystroke, and whose per-tick drain
runs the mode-owned make_handler below. The handler is a pure read:
it walks each requested section in the shared lsp.* config tree and
resolves the request’s oneshot — it emits no [Effect]. This is the cleanest
of the four LSP inbound buses (no &mut Editor work), so it sets the BC.8
reshape pattern for show-document / apply-edit / show-message-request.
Structs§
- Inbound
Configuration Request - One server-initiated
workspace/configurationrequest, ferried from the LSP actor to the editor’s per-tick drain. Carries the requested section paths verbatim; the handler walks each in the shared TOML tree and writes the per-section values back via the embedded oneshot in the same order.
Functions§
- make_
handler - BC.8b: the mode-owned handler for server-initiated
workspace/configuration, registered viaboot.inbound::<…>().
Type Aliases§
- Configuration
Bus - The bus the supervisor fans out to each actor — the generic inbound
primitive specialised to the configuration payload.
sendwakes the editor; the per-tick drain runsmake_handler. (Was the bespokeConfigurationBusbefore BC.8b.)