Skip to main content

Module configuration

Module configuration 

Source
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§

InboundConfigurationRequest
One server-initiated workspace/configuration request, 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 via boot.inbound::<…>().

Type Aliases§

ConfigurationBus
The bus the supervisor fans out to each actor — the generic inbound primitive specialised to the configuration payload. send wakes the editor; the per-tick drain runs make_handler. (Was the bespoke ConfigurationBus before BC.8b.)