pub struct StateChanges {Show 23 fields
pub mode_changed: bool,
pub cursor_moved: bool,
pub selection_changed: bool,
pub buffer_modified: bool,
pub modified_buffers: Vec<BufferId>,
pub modified_buffer_edits: Vec<(BufferId, Modification)>,
pub affected_buffers: Vec<BufferId>,
pub buffers_created: Vec<BufferId>,
pub buffers_deleted: Vec<BufferId>,
pub buffers_renamed: Vec<(BufferId, String)>,
pub window_changed: bool,
pub windows_created: Vec<WindowId>,
pub windows_closed: Vec<WindowId>,
pub focus_changed: bool,
pub option_changed: bool,
pub options_changed: Vec<OptionChange>,
pub scroll_changed: bool,
pub scrolled_windows: Vec<WindowId>,
pub presence_changed: bool,
pub presence_updates: Vec<usize>,
pub extension_changed: bool,
pub extensions_updated: Vec<String>,
pub should_quit: bool,
}Expand description
Tracks what changed during an operation.
Runner uses this to know what notifications to send to clients.
All changes are accumulated internally and taken at the end of
an operation via ChangeTracker::take_changes.
The multiple boolean flags are intentional - each tracks a distinct notification type that clients may need to receive.
Fields§
§mode_changed: boolWhether the mode changed.
cursor_moved: boolWhether the cursor moved.
selection_changed: boolWhether the selection changed.
buffer_modified: boolWhether any buffer content was modified.
modified_buffers: Vec<BufferId>Buffers whose content was modified.
modified_buffer_edits: Vec<(BufferId, Modification)>Edit details for modified buffers (for incremental syntax parsing, #655).
Parallel to modified_buffers. Contains (BufferId, Modification) pairs
for edits that have structured edit info. Empty when edits come from paths
that don’t provide Modification (e.g., undo/redo).
affected_buffers: Vec<BufferId>All buffers affected (for cursor, selection, etc.).
buffers_created: Vec<BufferId>Buffers that were created.
buffers_deleted: Vec<BufferId>Buffers that were deleted.
buffers_renamed: Vec<(BufferId, String)>Buffers that were renamed: (id, new_name).
window_changed: boolWhether window layout changed.
windows_created: Vec<WindowId>Windows that were created.
windows_closed: Vec<WindowId>Windows that were closed.
focus_changed: boolWhether window focus changed.
option_changed: boolWhether any option changed.
options_changed: Vec<OptionChange>Options that changed.
Each entry contains name, value, and optional window_id.
scroll_changed: boolWhether scroll position changed in any window.
scrolled_windows: Vec<WindowId>Windows whose scroll position changed.
presence_changed: boolWhether presence state changed (for cursor sync scenarios).
presence_updates: Vec<usize>Client IDs whose presence changed.
extension_changed: boolWhether any extension state changed (activation/deactivation).
extensions_updated: Vec<String>Extension kinds that changed (e.g., ["cmdline"]).
should_quit: boolWhether a quit was requested during this operation.
Set when a command pushes RuntimeSignal::Quit. Not included in
has_changes() — quit is a lifecycle signal, not a state change
that triggers notifications.
Implementations§
Source§impl StateChanges
impl StateChanges
Sourcepub const fn has_changes(&self) -> bool
pub const fn has_changes(&self) -> bool
Check if any changes occurred.
Sourcepub const fn record_mode_change(&mut self)
pub const fn record_mode_change(&mut self)
Record that the mode changed.
Sourcepub fn record_cursor_move(&mut self, buffer: BufferId)
pub fn record_cursor_move(&mut self, buffer: BufferId)
Record that the cursor moved in a buffer.
Sourcepub fn record_buffer_modified(&mut self, buffer: BufferId)
pub fn record_buffer_modified(&mut self, buffer: BufferId)
Record that buffer content was modified.
Sourcepub fn record_buffer_modified_with_edit(
&mut self,
buffer: BufferId,
modification: Modification,
)
pub fn record_buffer_modified_with_edit( &mut self, buffer: BufferId, modification: Modification, )
Record buffer modification with structured edit info (#655).
Like record_buffer_modified but also stores the Modification data
for incremental syntax parsing. The server layer uses this to call
driver.update() instead of driver.parse().
Sourcepub fn record_buffer_created(&mut self, buffer: BufferId)
pub fn record_buffer_created(&mut self, buffer: BufferId)
Record that a buffer was created.
Sourcepub fn record_buffer_deleted(&mut self, buffer: BufferId)
pub fn record_buffer_deleted(&mut self, buffer: BufferId)
Record that a buffer was deleted.
Sourcepub fn record_buffer_renamed(&mut self, buffer: BufferId, new_name: String)
pub fn record_buffer_renamed(&mut self, buffer: BufferId, new_name: String)
Record that a buffer was renamed.
Sourcepub fn record_window_created(&mut self, window: WindowId)
pub fn record_window_created(&mut self, window: WindowId)
Record that a window was created.
Sourcepub fn record_window_closed(&mut self, window: WindowId)
pub fn record_window_closed(&mut self, window: WindowId)
Record that a window was closed.
Sourcepub const fn record_focus_change(&mut self)
pub const fn record_focus_change(&mut self)
Record that window focus changed.
Sourcepub fn record_selection_change(&mut self, buffer: BufferId)
pub fn record_selection_change(&mut self, buffer: BufferId)
Record that selection changed in a buffer.
Sourcepub fn record_option_change(&mut self, change: OptionChange)
pub fn record_option_change(&mut self, change: OptionChange)
Record that an option changed.
Sourcepub fn record_global_option_change(
&mut self,
name: impl Into<String>,
value: OptionValue,
)
pub fn record_global_option_change( &mut self, name: impl Into<String>, value: OptionValue, )
Record a global option change.
Sourcepub fn record_window_option_change(
&mut self,
name: impl Into<String>,
value: OptionValue,
window_id: WindowId,
)
pub fn record_window_option_change( &mut self, name: impl Into<String>, value: OptionValue, window_id: WindowId, )
Record a window-scoped option change.
Sourcepub fn record_scroll_change(&mut self, window: WindowId)
pub fn record_scroll_change(&mut self, window: WindowId)
Record that scroll position changed in a window.
Sourcepub fn record_presence_change(&mut self, client_id: usize)
pub fn record_presence_change(&mut self, client_id: usize)
Record that presence state changed for a client (Phase 14).
Used for future cursor sync scenarios where cursor movement might trigger presence updates.
Sourcepub fn record_extension_change(&mut self, kind: String)
pub fn record_extension_change(&mut self, kind: String)
Record that an extension’s state changed (#514).
Called when a bridge’s is_active() changes (activation/deactivation).
Sourcepub const fn record_quit_requested(&mut self)
pub const fn record_quit_requested(&mut self)
Record that a quit was requested (#547).
Called when a command pushes RuntimeSignal::Quit. The runner
uses this to signal the client to disconnect.
Trait Implementations§
Source§impl Clone for StateChanges
impl Clone for StateChanges
Source§fn clone(&self) -> StateChanges
fn clone(&self) -> StateChanges
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more