pub struct BootstrapState {
pub mode_stack: ModeStack,
pub windows: WindowLayout,
pub pending_keys: KeySequence,
pub extensions: ExtensionMap,
}Expand description
Bootstrap state for creating a new session with initial per-client data.
This struct provides the initial per-client state needed when initializing
a session or adding the first client. It contains fields that will become
part of EditingState in the server layer.
§Usage
// Create session with bootstrap state for tests
let (session, bootstrap) = Session::bootstrap(ClientId::new(1), home_mode);
// Use bootstrap fields for per-client state
let mode_stack = bootstrap.mode_stack;
let windows = bootstrap.windows;§Architecture (#488)
This type exists to provide a clean separation between:
- Session: Shared infrastructure only (
SessionShared) BootstrapState: Initial per-client state (mode, windows, extensions)
At runtime, per-client state lives in EditingState in the server layer.
Fields§
§mode_stack: ModeStackInitial mode stack with home mode at the bottom.
windows: WindowLayoutInitial window layout (empty by default).
pending_keys: KeySequenceInitial pending keys (empty by default).
extensions: ExtensionMapInitial extensions map (empty by default).
Implementations§
Source§impl BootstrapState
impl BootstrapState
Sourcepub fn new(home_mode: ModeId) -> Self
pub fn new(home_mode: ModeId) -> Self
Create bootstrap state with the given home mode.
The home mode becomes the bottom of the mode stack. Windows, pending keys, and extensions start empty.
Sourcepub fn with_buffer(home_mode: ModeId, buffer_id: BufferId) -> Self
pub fn with_buffer(home_mode: ModeId, buffer_id: BufferId) -> Self
Create bootstrap state with a window for the given buffer.
This is useful when the session already has an active buffer and the new client should have a window showing that buffer.