Skip to main content

make_handler

Function make_handler 

Source
pub fn make_handler(
    logger: LspLogger,
) -> impl FnMut(InboundShowDocument) -> Vec<Effect> + Send + 'static
Expand description

BC.8c: the mode-owned handler for server-initiated window/showDocument, registered via boot.inbound::<…>().

Maps each request to zero-or-one host-applied open [Effect] and resolves its oneshot (optimistic-ack):

  • external → [Effect::OpenExternalUri], success: true (the host arm spawns the OS handler; the spawn result can’t be awaited here, so the ack is optimistic). The trail is recorded on the per-instance ring.
  • non-file:// without external → log + success: false, no effect.
  • file:// → [Effect::OpenBufferAtColumn] (column = Some iff a selection was given), success: true.
  • malformed file:// → log + success: false, no effect.

logger is captured so the reject / external-trail logs route to the correct (server_id, workspace) ring (mode-owned: the LSP logger + the instance key both live in lattice-lsp).